function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} // Ends the "getSelectedRadio" function

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
} // Ends the "getSelectedRadioValue" function

function getSelectedRadioId(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].id;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.id;
      }
   }
} // Ends the "getSelectedRadioValue" function

function getSelectedCheckbox(buttonGroup) {
   // Go through all the check boxes. return an array of all the ones
   // that are selected (their position numbers). if no boxes were checked,
   // returned array will be empty (length will be zero)
   var retArr = new Array();
   var lastElement = 0;
   if (buttonGroup[0]) { // if the button group is an array (one check box is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            retArr.length = lastElement;
            retArr[lastElement] = i;
            lastElement++;
         }
      }
   } else { // There is only one check box (it's not an array)
      if (buttonGroup.checked) { // if the one check box is checked
         retArr.length = lastElement;
         retArr[lastElement] = 0; // return zero as the only array value
      }
   }
   return retArr;
} // Ends the "getSelectedCheckbox" function

function getSelectedCheckboxValue(buttonGroup) {
   // return an array of values selected in the check box group. if no boxes
   // were checked, returned array will be empty (length will be zero)
   var retArr = new Array(); // set up empty array for the return values
   var selectedItems = getSelectedCheckbox(buttonGroup);
   if (selectedItems.length != 0) { // if there was something selected
      retArr.length = selectedItems.length;
      for (var i=0; i<selectedItems.length; i++) {
         if (buttonGroup[selectedItems[i]]) { // Make sure it's an array
            retArr[i] = buttonGroup[selectedItems[i]].value;
         } else { // It's not an array (there's just one check box and it's selected)
            retArr[i] = buttonGroup.value;// return that value
         }
      }
   }
   return retArr;
} // Ends the "getSelectedCheckBoxValue" function


function FSfncCheckString(FormField,AllowBlank,MaxLength) {
	// MaxLength is optional, when not provided the string is only checked for being blank.
	// Implement by adding onSubmit handler to FORM or onBlur handler to INPUT or TEXTAREA element, eg. onBlur="FSfncCheckString(this,false,10)".
	if ((AllowBlank==false) && (FormField.value=="")) {alert(FormField.title + " cannot be blank"); FormField.focus(); return false}
	if ((MaxLength!="") && (FormField.value.length>MaxLength)) {alert(FormField.title + " must be no more than " + MaxLength + " characters long"); FormField.focus(); return false}
	return true;
	}

function FSfncCheckNumber(FormField,AllowBlank,PositiveOnly,IntegerOnly) {
	// AllowBlank, PositiveOnly, and IntegerOnly are optional
	// Implement by adding onSubmit handler to FORM or onBlur handler to INPUT element, eg. onBlur="FSfncCheckNumber(this,false,true,true)".
	if (isNaN(FormField.value)) {alert(FormField.title + " :  must be a number"); FormField.focus(); return false}
	if ((AllowBlank==false) && (FormField.value=="")) {alert(FormField.title + " cannot be blank"); FormField.focus(); return false}
	if ((PositiveOnly) && (FormField.value<0)) {alert(FormField.title + " cannot be negative"); FormField.focus(); return false}
	if ((IntegerOnly) && (FormField.value.indexOf(".")>-1)) {alert(FormField.title + " cannot contain a decimal point"); FormField.focus(); return false}
	return true;
	}

function FSfncCheckTime(FormField) {
	// Check time is supplied in valid 24 hour clock (hh:mm) format.
	// Implement by adding onSubmit handler to FORM or onBlur handler to INPUT element, eg. onBlur="FSfncCheckTime(this)".
	if (FormField.value.indexOf(":")==-1) {alert(FormField.title + " is not a valid time"); FormField.focus(); return false}
	var ArrayTime = FormField.value.split(":");
	if ((ArrayTime.length!=2) || (isNaN(ArrayTime[0])) || (ArrayTime[0]=="") || (isNaN(ArrayTime[1])) || (ArrayTime[1]=="")) {alert(FormField.title + " is not a valid time"); FormField.focus(); return false}
	if ((parseInt(ArrayTime[0],10)<0) || (parseInt(ArrayTime[0],10)>23) || (parseInt(ArrayTime[1],10)<0) || (parseInt(ArrayTime[1],10)>59)) {alert(FormField.title + " is not a valid time"); FormField.focus(); return false}
	return true;
	}

function FSfncCheckDateFormat(FormField,FormatMode) {
	// Check date supplied is valid. FormatMode is optional, when not supplied it defaults to 1 (1=dd/mm/yyyy, 0=mm/dd/yyyy).
	// Implement by adding onSubmit handler to FORM or onBlur handler to INPUT element, eg. onBlur="FSfncCheckDateFormat(this,0)".
	if (FormatMode!=0) {FormatMode=1}
	if (FormField.value.indexOf("/")==-1) {alert(FormField.title + " is not a valid date"); FormField.focus(); return false}
	var ArrayDate = FormField.value.split("/");
	if ((ArrayDate.length!=3) || (isNaN(ArrayDate[0])) || (ArrayDate[0]=="") || (isNaN(ArrayDate[1])) || (ArrayDate[1]=="") || (isNaN(ArrayDate[2])) || (ArrayDate[2]=="")) {alert(FormField.title + " is not a valid date"); FormField.focus(); return false}
	var daysInMonth = new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);
	if ((parseInt(ArrayDate[1 - FormatMode],10)<1) || (parseInt(ArrayDate[1 - FormatMode],10)>daysInMonth[parseInt(ArrayDate[0 + FormatMode],10)])) {alert(FormField.title + " is not a valid date"); FormField.focus(); return false}
	if ((parseInt(ArrayDate[0 + FormatMode],10)==2) && (parseInt(ArrayDate[1 - FormatMode],10)>FSfncDaysInFebruary(parseInt(ArrayDate[2],10)))) {alert(FormField.title + " is not a valid date"); FormField.focus(); return false}
	if ((parseInt(ArrayDate[0 + FormatMode],10)<1) || (parseInt(ArrayDate[0 + FormatMode],10)>12)) {alert(FormField.title + " is not a valid date"); FormField.focus(); return false}
	return true;
	}

function FSfncDaysInFebruary(year) {return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 )}

function FSfncPopUp(NextPage,width,height,resizable,scrollbars,status) {
	// resizable,scrollbars, and status are optional, when not provided these default to no.
	// Implement by adding onClick handler to any element, eg. onClick="FSfncPopUp('PopupContent.htm',200,100,'yes','yes','yes')".
	if (resizable=="") {resizable="no"}
	if (scrollbars=="") {scrollbars="no"}
	if (status=="") {status="no"}
	x=self.screenLeft + 10;
	y=self.screenTop + 10;
	if (navigator.appVersion.indexOf("AOL")>0) {winName="A" + (Math.round(Math.random() * 1000))} else {winName="FSpopUpWindow"}
	FSpopUp=window.open(NextPage,winName,'toolbar=no,width=' + width + ',height=' + height + ',left=' + x + ',screenX=' + x + ',top=' + y + ',screenY=' + y + ',status=' + status + ',scrollbars=' + scrollbars + ',resizable=' + resizable + ',menubar=no,directories=no');
	}

function FSfncReadCookie(key) {
	// Implement by calling the function with the name of the cookie required, eg. FSfncReadCookie('MyCookieName'), the cookie value will be returned.
	var cookie_string='' + document.cookie;
	var cookie_array=cookie_string.split('; ');
	for (var i=0; i<cookie_array.length; i++) {
		var single_cookie=cookie_array[i].split('=');
		if (single_cookie.length!=2) {continue}
		if (key==unescape(single_cookie[0])) {return unescape(single_cookie[1])}
		}
	return 'None';
	}

function FSfncSetCookie(name,value,expires,path,domain,secure) {
	// expires,path,domain,secure are optional, if supplied the expires must be a JavaScript date object, path and domain are strings, and secure is true/false.
	// Implement by calling the function, eg. FSfncSetCookie('MyCookieName','MyCookieValue').
	document.cookie=name + '=' + escape(value) + ((expires == null) ? '' : ('; expires=' + expires.toGMTString())) + ((path == null) ? '' : ('; path=' + path)) + ((domain == null) ? '' : ('; domain=' + domain)) + ((secure == true) ? '; secure' : '');
	}

function validateEmail(obj) {
		var str = obj.value;
		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1){
		   alert("Invalid E-mail Address");
		   obj.focus();
		   return false;
		}
		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail Address");
		   obj.focus();
		   return false;
		}
		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail Address");
			obj.focus();
		    return false;
		}
		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail Address");
			obj.focus();
		    return false;
		 }
		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail Address");
			obj.focus();
		    return false;
		 }
		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail Address");
			obj.focus();
		    return false;
		 }
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail Address");
			obj.focus();
		    return false;
		 }
 		 return true;
	}

function addZero(varDate) {
	if (varDate < 10) {
		varDate = "0" + varDate;
	}
	return varDate;
}

function dayBox(varSelected) {
	if (varSelected == null) {
		dateObj = new Date();
		varDate = dateObj.getDate();
		//varDate = 0
	} else {
		varDate = eval(varSelected)
	}
	document.write('<option value=""></option>');
	for(var i=1;i<=31;i++) {
		varValue = addZero(i);
		document.write('<option value="'+varValue+'" '+(i==varDate?'selected':'')+'>'+varValue+'</option>');
	}
}

function monthBox(varSelected) {
	if (varSelected == null) {
		dateObj = new Date();
		varDate = dateObj.getMonth()+1;
		//varDate = 0
	} else {
		varDate = eval(varSelected)
	}
	document.write('<option value=""></option>');
	for(var i=1;i<=12;i++) {
		varValue = addZero(i);
		document.write('<option value="'+varValue+'" '+(i==varDate?'selected':'')+'>'+varValue+'</option>');
	}
}

function yearBox(varSelected) {
	dateObj = new Date()
	if (varSelected == null) {
		varDate = dateObj.getYear();
	} else {
		varDate = eval(varSelected)
	}
	dateStart = dateObj.getYear() - 5;
	dateFinish = dateObj.getYear() + 5;
	document.write('<option value=""></option>');
	for(var i=dateStart;i<=dateFinish;i++) {
		varValue = i;
		document.write('<option value="'+varValue+'" '+(i==varDate?'selected':'')+'>'+varValue+'</option>');
	}
}

function yearBoxBirth(varSelected) {
	dateObj = new Date()
	varYear = dateObj.getYear()
	if (varSelected == null) {
		//varDate = varYear
		varDate = 0;
	} else {
		varDate = eval(varSelected);
	}
	varDateStart = varYear - 60;
	document.write('<option value=""></option>');
	for(var i=varDateStart;i<=varYear;i++) {
		varValue = i;
		document.write('<option value="'+varValue+'" '+(i==varDate?'selected':'')+'>'+varValue);
	}
}

function yearBoxDefaultNow(varSelected) {
	dateObj = new Date()
	varYear = dateObj.getYear()
	if (varSelected == null) {
		varDate = varYear
		//varDate = 0;
	} else {
		varDate = eval(varSelected);
	}
	varDateStart = varYear - 80;
	document.write('<option value=""></option>');
	for(var i=varDateStart;i<=varYear;i++) {
		varValue = i;
		document.write('<option value="'+varValue+'" '+(i==varDate?'selected':'')+'>'+varValue);
	}
}

function calculateAge(objYear,objShow) {
	if (objYear.value != ""){
		dateObj = new Date()
		varDate = dateObj.getYear();
		objShow.value =  varDate - objYear.value;
	} else {
		objShow.value =  0;
	}
}

// ### (xx) xx xxx-xxxx #### XXX-XXX-XXXX
function checkPhone(theField) 
{
   if (theField.length == 12 && theField.substring(3,4) == "-" && theField.substring(7,8) == "-") {
      return true;
   } else {
      alert("Invalid phone number format!")
      return false;
   }
}