function doNothing() { }

// used by shopping and registration modules (sometimes)
function popupWindow(pageName) 
{
    tmpWindow = window.open(pageName, 'itemEditor', 'scrollbars=yes,toolbar=no,status=no, menubar=no,directories=no,location=no,resizable=no,width=500,height=480,top=100,left=200');
    tmpWindow.parentFrame = 'qwerty';
    tmpWindow.focus();	
}

function initArray(requirements) {
        var length = requirements.length;
        var betterArray = new Array(length);
        
        for (var i = 0; i < length; i++) {
        	if (typeof requirements[i] == 'object') {
        		betterArray[requirements[i][0][0]] = requirements[i];
        	} else {
                betterArray[requirements[i]] = true;
        	}
        }
        return betterArray;
}

function validateField(curField, i) {
	var curValid = true;
    elName = curField.name;
    
	//alert('checking ' + elName + (typeof betterArray[elName]));
	curValue = curField.value;	        
	fieldType = curField.type;
	curFm = curField.form;
	var elNameOrig = elName;
        if (elName.indexOf('[]') != -1) elName = elName.substr(0, elName.length - 2);
        if ((betterArray[elName] != null) || (i == -1)) {
				switch (fieldType) {
					case 'text':
					case 'textarea':
					case 'password':
					case 'file':
						if (curValue == '') {
							curValid = false; 
							focusField = curField;					
						}
						break;
					case 'select-one':
					case 'select-multiple':
						if (curField.selectedIndex != -1 && curField.options[curField.selectedIndex].value != '') {
							curValid = true;
						} else {
							curValid = false;
							focusField = curField;
						}
						break;
					case 'radio':
					case 'checkbox':
						numSelected = 0;
						curValid = false;
						sameField = true;
						while(sameField) {				
							if (curFm.elements[i].checked) {
								numSelected++;
								curValid = true;
							}
							if(curFm.elements[i+1].name.indexOf(elNameOrig) != -1) {
								sameField = true;
								i++;
							} else {
								sameField = false;
								if(!numSelected){
									focusField = 'unsupportedType';
								}
							}										
						}
						fieldPos = i;
						break;
				}
        	}	
       return curValid;
}

var focusField;
var fieldPos;
var betterArray;

function validateForm(requirements, curFm) {
	betterArray = initArray(requirements);
	var isValid = true;
	var alertMessage = false;
    for (fieldPos = 0; fieldPos < curFm.elements.length; fieldPos ++) {
    	theField = curFm.elements[fieldPos];
    	theName = theField.name;
		isValid = validateField(theField, fieldPos);
		
    	if (!isValid && (typeof betterArray[theName] == 'object')) {
    		for (var j in betterArray[theName]) {
    			altName = betterArray[theName][j][0];
    			altEl = curFm.elements[altName];
    			if (theField.type != 'checkbox') isValid = validateField(altEl, -1);
    			if (isValid) break;
    		}
    		if (!isValid) {
    			alertMessage = 'Please fill in ';
    			fieldLabels = new Array();
    			var firstTerm = true;
    			for (var j in betterArray[theName]) {
    				if (firstTerm) {
    					alertMessage += ' either ';
    					firstTerm = false;
    				} else {
    					alertMessage += ' or ';	
    				}
	    			altName = betterArray[theName][j][1];
	    			alertMessage += altName;
    			}
    			focusField = 'unsupportedType';
    		}	
    	}
        if (!isValid) {
			if(focusField == 'unsupportedType'){
				if (!alertMessage) alertMessage = 'You have left out a required piece of information.';		
			} else {
				alertMessage = 'You have left out a required piece of information. Your cursor will now move to the required field. Please fill it in and submit the form again.';
				focusField.focus();
			}
			window.alert(alertMessage);
			return false;
		}
    }		
			
	return true;
}

//avoid errors in case these are called outside of the tools area
if (typeof writeHelpFrame == 'undefined') {
	function writeHelpFrame(one, two, three) {}
}

if (typeof restoreHelp == 'undefined') {
	function restoreHelp() {}
}
