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()
	} else {
		varDate = eval(varSelected)
	}
	for(var i=1;i<=31;i++) {
		varValue = addZero(i);
		document.write('<option value="'+varValue+'" '+(i==varDate?'selected':'')+'>'+varValue);
	}
}

function monthBox(varSelected) {
	if (varSelected == null) {
		dateObj = new Date()
		varDate = dateObj.getMonth()+1
	} else {
		varDate = eval(varSelected)
	}
	for(var i=1;i<=12;i++) {
		varValue = addZero(i);
		document.write('<option value="'+varValue+'" '+(i==varDate?'selected':'')+'>'+varValue);
	}
}

function yearBox(varSelected) {
	if (varSelected == null) {
		dateObj = new Date()
		varDate = dateObj.getYear()
	} else {
		varDate = eval(varSelected)
	}
	for(var i=1980;i<=2030;i++) {
		varValue = i;
		document.write('<option value="'+varValue+'" '+(i==varDate?'selected':'')+'>'+varValue);
	}
}

function yearBoxBirth(varSelected) {
	dateObj = new Date()
	varYear = dateObj.getYear()
	if (varSelected == null) {
		varDate = varYear
	} else {
		varDate = eval(varSelected)
	}
	varDateStart = varYear - 80;
	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;
	}
}

function checkImage(varData) {
	var src = varData;
	if (src.length > 0)	{
		var ending = src.substr(src.length -4);
		ending = ending.toLowerCase();
		switch (ending) {
			case '.jpg': case '.gif': case '.png': case '.bmp':
				return true;
				break;
			default:
				alert('The file is not correct! \n\n Please upload file type (.jpg, .gif, .png, .bmp) only');
				return false;
				break;
		}
	} else { 
		return true;
	}
}

function checkDocument(varData) {
	var src = varData;
	if (src.length > 0)	{
		var ending = src.substr(src.length -4);
		ending = ending.toLowerCase();
		switch (ending) {
			case '.doc': case '.pdf': case '.txt':
				return true;
				break;
			default:
				alert('The file is not correct! \n\n Please upload file type (.doc, .pdf, .txt) only');
				return false;
				break;
		}
	} else { 
		return true;
	}
}