function isEmailWellFormed(email) {
	
	invalidChars=" <>[]{}/:,';!";
	
	
	for (i=0; i<invalidChars.length; i++) {
		if (email.indexOf((invalidChars.charAt(i)),0)>-1) {
			return(0);
		}
	}

	
	atPos=email.indexOf("@",0);
	if ((atPos<=0) || (email.indexOf("@",atPos+1)>-1)) {
		return(0);
	}

	
	
	domainParts = (email.substring(atPos+1,email.length)).split(".");
	domainPartsCount = domainParts.length;
	
	
	if (domainPartsCount<2) {
		return(0);
	}

	
	for (i=0;i<domainPartsCount;i++) {
		if (domainParts[i].length==0) {
			return(0);
		}
	}

	
	if (domainParts[domainPartsCount-1].length<2) {
		return(0);
	}

	
	return (1);
}

function FilterName(name) {
	str = name.replace(/!/gi, "");
	str = Trim(str);
	return str;
}

function LTrim(str)  {
      for (var i=0; str.charAt(i)==" "; i++);
      return str.substring(i,str.length);
}

function RTrim(str) {
      for (var i=str.length-1; str.charAt(i)==" "; i--);
      return str.substring(0,i+1);
}

function Trim(str) {
	  return LTrim(RTrim(str));
}
//-->

var ie4 = false; 
if(document.all) {
	ie4 = true;
}
function getObject(id) {
	if (ie4) {
		return document.all[id];
	} else {
		return document.getElementById(id);
	}
}

function ReplaceChars(text) {
	cleanString = "";
	for (i=0; i<text.length; i++) {
		myChar = text.charAt(i);
		if (myChar == "{" || myChar == "}" || myChar == "<" || myChar == ">" || myChar == "[" || myChar == "]" || myChar == "-" || myChar == '"') {
			cleanString = cleanString + "";
		} else {
			cleanString = cleanString + myChar;
		}
	}
	return cleanString;
}

function replaceSingleApost(text) {
	cleanString = "";
	for (i=0; i<text.length; i++) {
		myChar = text.charAt(i);
		if (myChar == "'") {
			cleanString = cleanString + "&#39";
		} else {
			cleanString = cleanString + myChar;
		}
	}
	return cleanString;
}
		

function validate_billing() {
	
	if (filterNonAlpha(document.MainForm.first_name) == '' || filterNonAlpha(document.MainForm.first_name) == 'first') {
		alert('Please specify your first name.');
		document.MainForm.first_name.focus();
		return;
	} else if (filterNonAlpha(document.MainForm.first_name) == 'family' || filterNonAlpha(document.MainForm.first_name) == 'Family') {
		alert('Please specify a first name.  "Family" is not an acceptable parameter.');
		document.MainForm.first_name.focus();
		return;
	} else {
		document.MainForm.first_name.value = ReplaceChars(document.MainForm.first_name.value);
	}
	
	if (filterNonAlpha(document.MainForm.last_name) == '' || filterNonAlpha(document.MainForm.last_name) == 'last') {
		alert('Please specify your last name.');
		document.MainForm.last_name.focus();
		return;
	} else if (filterNonAlpha(document.MainForm.last_name) == 'family' || filterNonAlpha(document.MainForm.last_name) == 'Family') {
		alert('Please specify a last6 name.  "Family" is not an acceptable parameter.');
		document.MainForm.first_name.focus();
		return;
	}else {
		document.MainForm.last_name.value = ReplaceChars(document.MainForm.last_name.value);
	}
	
	document.MainForm.address.value = ReplaceChars(document.MainForm.address.value);
	
	if (filterNonAlpha(document.MainForm.address) == '') {
		alert('Please specify your address.');
		document.MainForm.address.focus();
		return;
	} else if (filterNonAlpha(document.MainForm.address) == '') {
		document.MainForm.address.value = ReplaceChars(document.MainForm.address.value);
	}
	if (document.MainForm.city.value == '' || filterNonAlpha(document.MainForm.city) == '') {
		alert('Please specify the city.');
		document.MainForm.city.focus();
		return;
	} else {
		document.MainForm.city.value = ReplaceChars(document.MainForm.city.value);
	}
	if (document.MainForm.state.value == '') {
		alert('Please specify the state.');
		document.MainForm.state.focus();
		return;
	} 
	
	if (filterNonNumeric(document.MainForm.zip) == '' && filterNonAlpha(document.MainForm.zip) == '') {
		alert('Please specify your zip code.');
		document.MainForm.zip.value = "";
		document.MainForm.zip.focus();
		return;
	} 
	
	if (filterNonNumeric(document.MainForm.country) == '' && filterNonAlpha(document.MainForm.country) == '') {
		alert('Please specify your country.');
		document.MainForm.country.value = "";
		document.MainForm.country.focus();
		return;
	} 
	
	if (document.MainForm.phone.value != '') {	
		var compressedPPhone = filterNonNumeric(document.MainForm.phone);
		if(compressedPPhone.length != 10) {
			alert("Home phone number should be 10 digits.");
			document.MainForm.phone.focus();
			return;
		} else {
			document.MainForm.phone.value = ReplaceChars(document.MainForm.phone.value);
		}
	} else {
		alert("Please enter your home phone number.");
		document.MainForm.phone.focus();
		return;
	}
	if (document.MainForm.email.value == "") {
		alert("Please specify your email address.");
		document.MainForm.email.focus();
		return;
	} else {
		if (isEmailWellFormed(document.MainForm.email.value)) {
			document.MainForm.email.value = ReplaceChars(document.MainForm.email.value);
		} else {
			alert('email is malformed');
			document.MainForm.email.focus();
			return;
		}
	}
	for(var j=0; j < document.MainForm.elements.length; j++) {
		document.MainForm.elements[j].value = replaceSingleApost(document.MainForm.elements[j].value);
	}
	
	document.MainForm.submit();
}
	

function validate_cc() {
	
	
	if (document.MainForm.cc.value != '') {	
		document.MainForm.cc.value = filterNonNumeric(document.MainForm.cc);
		document.MainForm.cc.value = ReplaceChars(document.MainForm.cc.value);
	} else {
		alert("Please enter your credit card number.");
		document.MainForm.cc.focus();
		return;
	}
	if(document.MainForm.type.value == "") {
		alert("Please select a card type.");
		document.MainForm.type.focus();
		return;
	}
	if(document.MainForm.ExpMonth.value == "" ||  document.MainForm.ExpMonth.value == "Month") {
		alert("Please select an expiration month.");
		document.MainForm.ExpMonth.focus();
		return;
	}
	
	if(document.MainForm.ExpYear.value == "" || document.MainForm.ExpYear.value == "Year") {
		alert("Please select an expiration year.");
		document.MainForm.ExpYear.focus();
		return;
	}
	/*
if (document.MainForm.security_code.value != '') {	
		var security_code = filterNonNumeric(document.MainForm.security_code);
		document.MainForm.security_code.value = filterNonNumeric(document.MainForm.security_code);
		if(security_code.length == 3 || security_code.length == 4) {
			document.MainForm.security_code.value = ReplaceChars(document.MainForm.security_code.value);
		} else {
			alert("Your security code should be either 3 or 4 digits.");
			document.MainForm.security_code.focus();
			return;
		}
	} else {
		alert("Please enter your security code.");
		document.MainForm.security_code.focus();
		return;
	}
*/
	
	document.MainForm.submit();
}
function OpenStoryPopup(StoryUrl)
{
	
		humanInter = window.open( 'http://lds.org/'+StoryUrl, '', 'width=640,height=390,scrollbars,menubar,top=0,left=0,resizable');
	}

function filterAlpha(e, in_obj) {
	var charCode = (document.layers) ? e.which : e.keyCode;
	if (charCode != 9) {
		regExp = /[^0123456789(--).,# ]/g;
		in_obj.value = in_obj.value.replace(regExp, "");
	}
}

function filterNonNumeric(field) {
	var result = new String();
	var numbers = "0123456789";
	var chars = field.value.split("");  //create array
	for (i = 0; i < chars.length; i++) {
		if (numbers.indexOf(chars[i]) != -1) {
			result += chars[i];
		}
	}
	return result;
}

function filterNonAlpha(field) {
	var result = new String();
	var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var chars = field.value.split("");  //create array
	for (i = 0; i < chars.length; i++) {
		if (letters.indexOf(chars[i]) != -1) {
			result += chars[i];
		}
	}
	return result;
}

function trackCount(commentBox,countFieldName,maxChars) {
	var countField = eval("document.MainForm."+countFieldName);
	var diff = maxChars - commentBox.value.length;
		// Need to check & enforce limit here also in case user pastes data
	if (diff < 0) {
		commentBox.value = commentBox.value.substring(0,maxChars);
		diff = maxChars - commentBox.value.length;
	}
	countField.value = diff;
}

function limitText(commentBox,maxChars) {
	var result = true;
	if (commentBox.value.length >= maxChars) {
		result = false;
 		}
	if (window.event) {
		window.event.returnValue = result;
		return result;
	}	
}