function removeElement(a, s) { 
	for( i=0; i < a.length; i++){
		if( s == a[i] ) 
			a.splice(i, 1);
	} 
};

var PARAMS = new Array(PARAM_DATA, PARAM_STAT, PARAM_YEAR, PARAM_SITE, PARAM_SUBSITE, PARAM_RACE, PARAM_SEX, PARAM_AGE /*, PARAM_STAGE*/);

var missingParams = '';
var first = '';
var isTooManySeries = false;
var maxNumSeries = null;


function validateCheckboxes(){
	
	var seriesVar = document.SelectionForm.series.value;
	var elemName = seriesVar + '[]' ;
	chkBoxes = document.getElementsByName(elemName);

	var haveSelection = false;
	var totSelected = 0;
	for (i = 0; i < chkBoxes.length; i++){		
		if (chkBoxes[i].checked && chkBoxes[i].disabled == false){
			totSelected++ ;
		}
	}
	
	var statisticVal = document.SelectionForm.elements[PARAM_STAT].value;
	var elemOutputTypes = document.SelectionForm.elements['output'];
	var outputType = null;
	for (i=0; i<elemOutputTypes.length; i++){
		if (elemOutputTypes[i].checked)
			outputType = elemOutputTypes[i].value;
	}
	
	maxNumSeries = (statisticVal == STATISTIC_AA_RATE_95 && outputType==OUTPUT_TABLE) ? 4 : MAX_SERIES_VALUES;
		
	
	if (totSelected == 0){
		missingParams += first + PARAM_LABELS[seriesVar];
		return false;
	} else if (totSelected > maxNumSeries){
		isTooManySeries = true;		
		return false;
	}
	return true;
}


function validateListboxes(){
	
	missingParams = '';
	first = ''
	
	// step 1:  remove the series variable from param list
	var seriesVar = document.SelectionForm.series.value;
	
	var aParams = PARAMS.slice();

	var aSeriesVars = seriesVar.split(MULTIPLE_COMPOUND_PARAM_DELIM);
	for (i in aSeriesVars){
		seriesVar = aSeriesVars[i];
		removeElement(aParams, seriesVar);
		
		if (seriesVar == PARAM_SITE)
			removeElement(aParams, PARAM_SUBSITE);  // also remove subsite
	}
	
	
	// step 2: see if any parameters are missing
	for (i in aParams){
		paramVal = document.SelectionForm.elements[aParams[i]].value;
		if (paramVal == ''){
			missingParams += first + PARAM_LABELS[aParams[i]];
			first = ', ';
		}
	}
	
	if (missingParams != ''){
		return false;
	}
	
	return true;
}


function validate(){
	
	var seriesVar = document.SelectionForm.series.value;
	
	var listboxesValid = validateListboxes();
	var chkboxesValid =  validateCheckboxes();

	formValid = listboxesValid && chkboxesValid;
	
	if (!formValid) {
		
		if (missingParams != '')
			alert ("Please make your selection for the following: " + missingParams);
		
		if (!chkboxesValid && isTooManySeries){
			var message = 'There are too many ' + PARAM_LABELS[seriesVar] + ' values selected. ';
			message += 'Please reduce the number of selected values to ' + maxNumSeries + ' or less.';
			alert(message);
		}
			
	} else {
		return true;
	}
	
	return false;
}






