var catRequired = false;	//Flag determines if a category is required to submit the form (set in setCategoryFields())
var sub_catRequired = false;		//Flag determines if a sub-category is 
									//required to submit the form (set in setCategoryFields())
var sectorValue = "";

function validateSubscribeForm(){
        
	theForm = document.forms["subscribe"];
	//msg = "";
	//focusField = "";

	setCategoryFields(theForm);		//Categories have a very specific implementation, so each

	var reqFields = new Array();
	reqFields[0] = new ReqField(theForm.firstName, "text", new Array("First name is required"), new Array("== \"\""));
	reqFields[1] = new ReqField(theForm.lastName, "text", new Array("Last name is required"), new Array("== \"\""));
	reqFields[2] = new ReqField(theForm.address1, "text", new Array("Address is required"), new Array("== \"\""));
	reqFields[3] = new ReqField(theForm.city, "text", new Array("City is required"), new Array("== \"\""));
	reqFields[4] = new ReqField(theForm.state, "text", new Array("State is required"), new Array("== \"\""));
	reqFields[5] = new ReqField(theForm.zip, "text", new Array("Zip is required"), new Array("== \"\""));
	reqFields[6] = new ReqField(theForm.email, "email", new Array("Email is required and must be a valid email address"), new Array("== \"\""));
	reqFields[7] = new ReqField(theForm.sector, "other", new Array("Sector is required"), new Array("\"" + sectorValue + "\"" + "== \"\""));
	reqFields[8] = new ReqField(theForm.category, "text", new Array("Category is required"), new Array("== \"\" && " + catRequired));
	reqFields[9] = new ReqField(theForm.sub_category, "text", new Array("Sub-category is required"), new Array("== \"\" && " + sub_catRequired));
	
	theForm.subs_userAgent.value = window.navigator.userAgent;
	theForm.subs_platform.value = window.navigator.platform;
//	theForm.subs_platform.value = window.navigator.oscpu;
	theForm.subs_screen.value = window.screen.width + "x" + window.screen.height
	if (validateForm(theForm, reqFields)){
			theForm.submit();
	}

	//return validateForm(theForm, reqFields);
}
//str.toUpperCase();

/*
*	Categories have a very specific implementation, so each
*	option is checked manually to see which is selected
*	the result of this function is to set the hidden fields for category and sub_category in theForm
*/
function setCategoryFields(theForm){
	var category = "";
	var sub_category = "";
	var SEPARATOR = ";";
	
	//Public sector
	if (theForm.sector[0].checked){	
		sectorValue = theForm.sector[0].value;
		
		//Check which Category was selected
		for (i=0; i<theForm.category0.length; i++){
			if (theForm.category0[i].checked){
				category = theForm.category0[i].value;
				break;
			}
		}
		
		//Check which sub-category was selected
		for (i=0; i<theForm.sub_category0.length; i++){
			if (theForm.sub_category0[i].checked){
				sub_category = theForm.sub_category0[i].value;
				break;
			}
		}
		catRequired = true;
		sub_catRequired = true;

	}
	
	//Not for profit
	if (theForm.sector[1].checked){	
		sectorValue = theForm.sector[1].value;
		
		//Check which Category was selected
		for (i=0; i<theForm.category1.length; i++){
			if (theForm.category1[i].checked){
				category = theForm.category1[i].value;
				break;
			}
		}
		
		//Tere aren't sub-categories for Not for profit
		
		catRequired = true;
		sub_catRequired = false;
	}

	//Private sector (the most complex of the sectors)
	if (theForm.sector[2].checked){	
		sectorValue = theForm.sector[2].value;
		
		//Check which Category was selected
		for (i=0; i<theForm.category2.length; i++){
			if (theForm.category2[i].checked){
				category = theForm.category2[i].value;
				//Get the sub-category... watch for categories without a sub-category
				if (i<4){	//Only check for sub-category for the first 4 options
					subCatObj = eval("theForm.sub_category2" + i);
					for (m=0; m < subCatObj.length; m++){
						if (subCatObj[m].checked){
							sub_category += (sub_category == "") ? "" : ";";
							sub_category += subCatObj[m].value;
						}
					}
					sub_catRequired = true;
				} else {
					sub_catRequired = false;
				}
				break;
			}
		}
		catRequired = true;

	}
	

	//Note: Retired/Interested party does not have categories 
	//nor sub-categories so these fields will be empty
	//when this option is selected
	if (theForm.sector[3].checked){	
		sectorValue = theForm.sector[2].value;
		catRequired = false;
		sub_catRequired = false;
		
	}
	
	//Set theForm's hidden fields for category and sub-category
	theForm.category.value = category;
	theForm.sub_category.value = sub_category;
	
}