
		function SetAmount(element)
		{
			var SLDBA = document.getElementsByName("SLDBA")[0];
			var LODBRS = document.getElementsByName("LODBRS_value")[0];
			var TOTAL = document.getElementsByName("membership_dues")[0];

			var elements = document.getElementsByName(element.name)
			var racer, onetime, voting, associate, lodbrs;

			for (ndx = 0; ndx < elements.length; ndx++)
			{
				switch (elements[ndx].id.toLowerCase())
				{
					case "racer":
						racer = elements[ndx];
						break;
					case "one-time":
						onetime = elements[ndx];
						break;
					case "voting":
						voting = elements[ndx];
						break;
					case "associate":
						associate = elements[ndx];
						break;
					case "lodbrs":
						lodbrs = elements[ndx];
						break;
					
				}
			}

			SLDBA.value = (racer.checked ? parseFloat(racer.title.right(racer.title.length - 1)) : 0.00) + (onetime.checked ? parseFloat(onetime.title.right(onetime.title.length - 1)) : 0.00) + (voting.checked ? parseFloat(voting.title.right(voting.title.length - 1)) : 0.00) + (associate.checked ? parseFloat(associate.title.right(associate.title.length - 1)) : 0.00);
			LODBRS.value = (lodbrs.checked ? parseFloat(lodbrs.title.right(lodbrs.title.length - 1)) : 0.00);
			TOTAL.value = isValue(SLDBA.value) + isValue(LODBRS.value) + ".00"
		}

		function SetChecks(element)
		{
			var elements = document.getElementsByName(element.name);
			var ndx;
			var racer, onetime, voting, associate;

			for (ndx = 0; ndx < elements.length; ndx++)
			{
				switch (elements[ndx].id.toLowerCase())
				{
					case "racer":
						racer = elements[ndx];
						break;
					case "one-time":
						onetime = elements[ndx];
						break;
					case "voting":
						voting = elements[ndx];
						break;
					case "associate":
						associate = elements[ndx];
						break;
					case "lodbrs":
						lodbrs = elements[ndx];
						break;
				}
			}

			if (element.checked)
			{
				if (element.id.toLowerCase() == "lodbrs")
				{
					racer.checked = true;
				}
				else if (element.id.toLowerCase() == "racer")
				{
					onetime.checked = false;
					associate.checked = false;
				}
				else if (element.id.toLowerCase() == "one-time")
				{
					racer.checked = false;
					voting.checked = false;
					associate.checked = false;
					lodbrs.checked = false;
				}
				else if (element.id.toLowerCase() == "voting")
				{
					onetime.checked = false;
					associate.checked = false;
				}
				else if (element.id.toLowerCase() == "associate")
				{
					racer.checked = false;
					voting.checked = false;
					onetime.checked = false;
					lodbrs.checked = false;
				}
			}
			else
			{
				if (!lodbrs.checked)
				{
					racer.checked = false;
				}
				else if (!racer.checked)
				{
					lodbrs.checked = false
				}
			}
		}

		function isValue(v)
		{
			if (isNaN(v))
				return 0;
			else
				return parseFloat(v,10);
		}
		function FixYear(element)
		{
			var yr = isValue(element.value.trim());

			if (yr > 40)
				yr += 1900;
			else
				yr += 2000;

			return yr.toString();
		}

		function SaveMember(element, fieldType)
		{
			var url = "/fn/SaveMemberInfo.asp?"
			var memberid = "mid=" + Convert2HexString(encstr) + "&"
			var at = "at=" + element.name + "&"
			var newValue;
			if (fieldType != undefined)
			{
				if (fieldType.toLowerCase() == "radio" || fieldType.toLowerCase() == "checkbox")
				{
					if (element.checked)
						newValue = "nv=" + Convert2HexString(element.value) + "&"
					else
						newValue = ""
				}
				else if (fieldType.toLowerCase() == "select")
				{
					newValue = "nv=" + Convert2HexString(element[element.selectedIndex].value) + "&"
				}
			}
			else
				newValue = "nv=" + Convert2HexString(element.value) + "&"

			if (newValue.length > 0)
			{
				url += memberid + at + newValue;
				Fire(url);
			}
		}
		function Fire(url)
		{
			var oRequest = getXMLHttpRequest();
			var sURL = "http://"+self.location.hostname+url
			var obj

			oRequest.open("GET", sURL, false); // false = wait, true = dont wait
			oRequest.setRequestHeader("User-Agent", navigator.userAgent);
			oRequest.send(null);
		
			if (oRequest.status == 200)
			{
				return oRequest.responseText
			}
			else
			{
				return oRequest.responseText
			}
		}
		function getXMLHttpRequest() 
		{
			var obj;

				if (window.XMLHttpRequest)
				obj = new window.XMLHttpRequest;
				else
			{
				try
				{
					obj = new ActiveXObject("MSXML2.XMLHTTP.2.0");
				}
				catch(ex)
				{
					obj = null;
				}
				}
			if (obj == null)
				alert("Your browser is not supported.\n\nThis form has been tested with and supports:\nInternet Explorer 7.x\nInternet Explorer 8.x\nMozilla FireFox 3.5\nApple Safari 3.x\nGoogle Chrome\n\nIf you are already using one of these browsers, please verify that you have javascript enabled.");

			return obj;

		}
		function Convert2HexString(tweet)
		{
			var ndx = 0, asciiValue, outstr = "", hx
			for (ndx = 0; ndx < tweet.length; ndx++)
			{
				asciiValue = tweet.charCodeAt(ndx)
				hx = d2h(asciiValue)
				hx = digits(hx, 2)
				outstr = outstr + "%" + hx
			}
			return outstr
		}

		function digits(v, n)
		{
			while (v.length < n)
			{
				v = "0" + v
			}
			return v
		}
		String.prototype.ltrim = function(){return this.replace(/^\s+/,"");}
		String.prototype.rtrim = function(){return this.replace(/\s+$/,"");}
		String.prototype.trim = function(){var str = this.ltrim();return str.rtrim();}
		String.prototype.right = function(n){return this.substring(this.length - n, this.length)}
		String.prototype.left = function(n) { return this.substring(0, n); }
		function pageHeight(){return  window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ?  document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;}
		function pageWidth() {return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ?       document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;} 
		function d2h(d) {return d.toString(16);}
		function h2d(h) {return parseInt(h,16);} 

		function toggleDebug(btn)
		{
			var debug = document.getElementById("debug")
			if (btn.value == "OPEN")
			{
				debug.style.visibility = "visible"
				btn.value = "CLOSE"
			}
			else
			{
				debug.style.visibility = "hidden"
				btn.value = "OPEN"
			}
		}

		function ValidateForm(frm)
		{
			var msg = "";
			var errCount = 0;
			var mm, dd, yyyy;

			var elements = document.getElementsByTagName("INPUT")
			for (var ndx = 0; ndx < elements.length; ndx++)
			{
				if ((elements[ndx])["type"] != "button")
					elements[ndx].style.background = "transparent"
			}

			if (frm.fname.value.trim().length == 0)
				errCount += SetError(frm.fname);

			if (frm.lname.value.trim().length == 0)
				errCount += SetError(frm.lname);

			if (frm.home_phone.value.trim().length == 0)
				errCount += SetError(frm.home_phone);

			if (frm.work_phone.value.trim().length == 0)
				errCount += SetError(frm.work_phone);

			if (frm.cell_phone.value.trim().length == 0)
				errCount += SetError(frm.cell_phone);
			
			if (frm.address.value.trim().length == 0)
				errCount += SetError(frm.address);

			if (frm.city.value.trim().length == 0)
				errCount += SetError(frm.city);

			if (frm.state.selectedIndex < 0)
				errCount += SetError(frm.state);

			if (frm.zip.value.trim().length == 0)
				errCount += SetError(frm.zip);

			if (frm.email.value.trim().length == 0)
				errCount += SetError(frm.email);

// dob validity checks
			if (!DateTest(frm.dob_mm, frm.dob_dd, frm.dob_yyyy))
			{
				errCount += SetError(frm.dob_mm)
				SetError(frm.dob_dd)
				SetError(frm.dob_yyyy)
				frm.dob_mm.value = "XX"
				frm.dob_dd.value = "XX"
				frm.dob_yyyy.value = "XXXX"
			}
			else
			{
				frm.dob.value = frm.dob_yyyy.value + '-' + frm.dob_mm.value + '-' + frm.dob_dd.value
			}

			if (CountChecks(frm.membership_type) == 0)
			{
				errCount += SetError(frm.membership_type)
			}
			else
			{
				var membership_type = GetCheckedElement(frm.membership_type)
				if (membership_type != undefined)
				{
					if (membership_type.id.toLowerCase() == "racer")
					{
						if (frm.boat_number.value.trim().length == 0)
							errCount += SetError(frm.boat_number);
						
						if (frm.boat_class.value.trim().length == 0)
							errCount += SetError(frm.boat_class);

						if (frm.boat_name.value.trim().length == 0)
							errCount += SetError(frm.boat_name);
						
						if (CountChecks(frm.drivers_license) == 0)
							errCount += SetError(frm.drivers_license);

						if (GetCheckedElement(frm.drivers_license).value.toLowerCase() == "yes" && CountChecks(frm.license_issued_by) == 0)
							errCount += SetError(frm.license_issued_by);
						
						if (CountChecks(frm.hull_type) == 0)
							errCount += SetError(frm.hull_type);

						if (frm.hull_mfg.value.trim().length == 0)
							errCount += SetError(frm.hull_mfg);

			// exp_date validity checks
						if (GetCheckedElement(frm.drivers_license).value.toLowerCase() == "yes" && !DateTest(frm.exp_date_mm, frm.exp_date_dd, frm.exp_date_yyyy))
						{
							errCount += SetError(frm.exp_date_mm)
							SetError(frm.exp_date_dd)
							SetError(frm.exp_date_yyyy)
							frm.exp_date_mm.value = "XX"
							frm.exp_date_dd.value = "XX"
							frm.exp_date_yyyy.value = "XXXX"
						}
						else
						{
							if (GetCheckedElement(frm.drivers_license).value.toLowerCase() == "yes")
								frm.exp_date.value = frm.exp_date_yyyy.value + '-' + frm.exp_date_mm.value + '-' + frm.exp_date_dd.value
							else
								frm.exp_date.value = "";
						}

						if (CountChecks(frm.category) == 0)
							errCount += SetError(frm.category);

						if (CountChecks(frm.in_boat_capsule) == 0)
							SetCheckedElement(frm.in_boat_capsule, "no");

						if (GetCheckedElement(frm.in_boat_capsule).value.toLowerCase() == "yes" && CountChecks(frm.capsule_certified) == 0)
							errCount += SetError(frm.capsule_certified);

						if (GetCheckedElement(frm.in_boat_capsule).value.toLowerCase() == "yes" && frm.capsule_mfg.value.trim().length == 0)
						{
							errCount += SetError(frm.capsule_certified);
							SetError(frm.capsule_mfg)
						}

						if (GetCheckedElement(frm.in_boat_capsule).value.toLowerCase() == "yes" && frm.breathing_system.value.trim().length == 0)
							errCount += SetError(frm.breathing_system)

						var p = CountChecks(frm.pool_oriented)
						if (GetCheckedElement(frm.in_boat_capsule).value.toLowerCase() == "yes" && CountChecks(frm.pool_oriented) == 0)
							errCount += SetError(frm.pool_oriented)

						else if (GetCheckedElement(frm.in_boat_capsule).value.toLowerCase() == "yes" && GetCheckedElement(frm.pool_oriented).value.toLowerCase() == "yes")
						{
							// pool_date validity checks
							if (!DateTest(frm.pool_date_mm, frm.pool_date_dd, frm.pool_date_yyyy))
							{
								errCount += SetError(frm.pool_date_mm)
								SetError(frm.pool_date_dd)
								SetError(frm.pool_date_yyyy)
								frm.pool_date_mm.value = "XX"
								frm.pool_date_dd.value = "XX"
								frm.pool_date_yyyy.value = "XXXX"
							}
							else
							{
								frm.pool_date.value = frm.pool_date_yyyy.value + '-' + frm.pool_date_mm.value + '-' + frm.pool_date_dd.value
							}
						}

					}
				}
			}

			if (errCount != 0)
				alert("Highlighted fields are required.")
			else
				frm.submit();
		}
		function isLeap(yy)
		{
			if (Math.floor(yy / 4) * 4 == yy)
			{
				if (Math.floor(yy / 100) * 100 == yy && Math.floor(yy / 400) * 400 == yy)
					return true;
				else
					return false;
			}
			else
				return false;
		}
		function DateTest(mmObj, ddObj, yyObj)
		{
			var mm = parseInt(mmObj.value.trim(), 10);
			var dd = parseInt(ddObj.value.trim(), 10);
			var yy = parseInt(yyObj.value.trim(), 10);
			var dayCount = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
			var today = new Date();

			if (isNaN(mm) || isNaN(dd) || isNaN(yy))
				return false;
			
			if (mm == 2 && dd == 29 && !isLeap(yy))
				return false;
			
			if (dd > dayCount[mm-1])
				return false;

			if (yy < 1900)
				return false;

			return true;
		}
		function SetError(field)
		{
			var fieldtype = field["type"];
			switch (field["type"])
			{
				case "radio":
				case "checkbox":
					for (ndx = 0; ndx < field.length; ndx++)
						field[ndx].style.background = "#FFD0D0";
					break;

				case "text":
					field.style.background = "#FFC0C0";
					break;

				default:
					if (field[1])
					{
						for (ndx = 0; ndx < field.length; ndx++)
							field[ndx].style.background = "#FFD0D0";
					}
					break;
					
			};
			return 1;
		}
	function CountChecks(element)
	{
		var cnt = 0;
		for (var ndx = 0; ndx < element.length; ndx++)
		{
			if (element[ndx].checked)
				cnt++;
		}
		return cnt;
	}

	function CheckField(element)
	{
		var parent;
		var ndx;

		switch (element["type"])
		{
			case "text":
				if (element.value.trim().length != 0)
				{
					ClearHighlight(element);
					element.value = element.value.trim()
				}
				break;
			case "select-one":
				if (element.selectedIndex > 0)
					ClearHighlight(element)
				break;
			case "checkbox":
				if (element.checked)
				{
					parent = document.getElementsByName(element.name)
					ClearHighlight(parent)
				}
		}
	}
	function GetCheckedElement(elements)
	{
		var ndx, item;
		for (ndx = 0; ndx < elements.length; ndx++)
			if (elements[ndx].checked)
				return elements[ndx];
		return undefined;
	}
	function SetCheckedElement(elements, value)
	{
		var ndx, result = false;
		for (ndx = 0; ndx < elements.length; ndx++)
		{
			if ((elements[ndx].value).toLowerCase() == value.toLowerCase())
			{
				elements[ndx].checked = true;
				result = true;
			}
		}
		return result;
		
	}

