function JS_trimLeft(s) {
	var whitespaces = " \t\n\r";
	var n;
	for(n = 0; n < s.length; n++) { 
		if (whitespaces.indexOf(s.charAt(n)) == -1) 
			return (n > 0) ? s.substring(n, s.length) : s; 
	}
	return("");
}
function JS_trimRight(s){
	var whitespaces = " \t\n\r";
	var n;
	for(n = s.length - 1; n  > -1; n--) { 
		if (whitespaces.indexOf(s.charAt(n)) == -1) 
			return (n < (s.length - 1)) ? s.substring(0, n+1) : s; 
	}
	return("");
}
function JS_trim(s) {
	return ((s == null) ? "" : JS_trimRight(JS_trimLeft(s))); 
}
function JS_isBlank(field, strBodyHeader) {
	var strTrimmed = JS_trim(field.value);
	if (strTrimmed.length > 0)
		return false;
	alert("\"" + strBodyHeader + "\" is a required field. Please type in a value.");
	field.focus();
	return true;
}
function JS_isBadURL(field, strBodyHeader) {
	var strTrimmed = JS_trim(field.value);
	if (strTrimmed.length == 0 || 
	    strTrimmed.substring(0,7) == 'http://' || 
	    strTrimmed.substring(0,6) == 'ftp://' || 
	    strTrimmed.substring(0,7) == 'mailto:' || 
	    strTrimmed.substring(0,8) == 'https://')
		return false;
	alert("\"" + strBodyHeader + "\" is an invalid url. Please remedy.");
	field.focus();
	return true;
}
function JS_isNumber(field, strBodyHeader) {
	var strVal = JS_trim(field.value);
	if (strVal.length == 0 || strVal.length > 999)
		return false;
	var x = 0;
	var i;
	for (i = 0; i < strVal.length; i++) { 
		if (strVal.charAt(i) > '0' && strVal.charAt(i) < '9')
			x++;
	}
	if (strVal.length > x) {
		alert("Invalid value for field \""+ strBodyHeader + "\". Please type in a valid integer.");
		field.focus();
		return false;
	} else {
		return true;
	}
}
function JS_isEmail(field, strBodyHeader) {
	var strMsg = ""; 
	var chAt  = '@'; 
	var chDot = '.'; 
	var strEmailAddr = JS_trim(field.value);
	if (strEmailAddr.length == 0)
		return true;
	if (strEmailAddr.indexOf(" ") == -1) {
		var iFirstAtPos = strEmailAddr.indexOf(chAt);
		var iLastAtPos = strEmailAddr.lastIndexOf(chAt);
		if (iFirstAtPos > 0 && iFirstAtPos < (strEmailAddr.length - 1) &&iFirstAtPos == iLastAtPos) {
			// look for '.' there must be at least one char between '@' and '.'
			var iDotPos = strEmailAddr.indexOf(chDot, iFirstAtPos + 1);
			if (iDotPos > (iFirstAtPos + 1) && iDotPos < (strEmailAddr.length -1))
				return true;
		}
	}
	alert("Invalid email address. Please type in a valid email address for field \"" + strBodyHeader + "\"");
	field.focus();
	return false;
}
function JS_makeParent(rid) { 
	document.Com.ParentRid.value = rid;
}
function validateNews() {
	var field = document.News.Author; 
	if (JS_isBlank(field, "Name")) return false;
	
	field = document.News.AuthorEmail; 
	if (JS_isBlank(field, "Email Address")) return false;
	if (!JS_isEmail(field, "Email Address")) return false;
	
	field = document.News.AuthorURL;
	if (JS_isBadURL(field, "URL")) return false;

	field = document.News.Heading;
	if (JS_isBlank(field, "Title")) return false;
	    
	field = document.News.Content;
	if (JS_isBlank(field, "Story")) return false;

//	field = document.News.Links;
//	if (JS_isBadURL(field, "Related Links")) return false;

	return true;
}
function validatePreview() {
	var field = document.Preview.Heading; 
	if (JS_isBlank(field, "Title")) return false;

	field = document.Preview.Summary;
	if (JS_isBlank(field, "Summary")) return false;
	
	field = document.Preview.Content;
	if (JS_isBlank(field, "Story")) return false;

	return true;
}
function validateComment() {
	var field;
	if (document.Com.anon && !document.Com.anon.checked) {

		field = document.Com.Author; 
		if (JS_isBlank(field, "Name")) return false;
		
		field = document.Com.AuthorEmail; 
		if (JS_isBlank(field, "Email Address")) return false;
		if (!JS_isEmail(field, "Email Address")) return false;
        	
		field = document.Com.AuthorURL;
		if (JS_isBadURL(field, "URL")) return false;

	}
	field = document.Com.Content;
	if (JS_isBlank(field, "Comment")) return false;

	if (document.Com.save &&
	    document.Com.save.checked &&
	    document.Com.anon.checked) {
		alert('You may not save Anonymous information.');
		return false;
	}

	return true;
}
function validateContact() {
	var field = document.Contact.Author; 
	if (JS_isBlank(field, "Name")) return false;
	
	field = document.Contact.AuthorEmail; 
	if (JS_isBlank(field, "Email Address")) return false;
	if (!JS_isEmail(field, "Email Address")) return false;
	
	field = document.Contact.Subject;
	if (JS_isBlank(field, "Subject")) return false;

	field = document.Contact.Message;
	if (JS_isBlank(field, "Message")) return false;

	return true;
}
function validateBlocks() {
	var field = document.Blocks.Heading; 
	if (JS_isBlank(field, "Heading")) return false;

	if (document.Blocks.Type[0].checked) {
		field = document.Blocks.Content; 
		if (JS_isBlank(field, "Content")) return false;
	}

	if (document.Blocks.Type[1].checked) {
		field = document.Blocks.RDF; 
		if (JS_isBlank(field, "RDF")) return false;
		if (JS_isBadURL(field, "RDF")) return false;
	}

	if (document.Blocks.Type[2].checked) {
		field = document.Blocks.URL;
		if (JS_isBlank(field, "URL")) return false;
	}
	return true;
}
function validatePages() {
	var field = document.Pages.Title; 
	if (JS_isBlank(field, "Title")) return false;

	field = document.Pages.Heading; 
	if (JS_isBlank(field, "Heading")) return false;

	if (document.Pages.Type[0].checked) {
		field = document.Pages.Content; 
		if (JS_isBlank(field, "Content")) return false;
	}

	if (document.Pages.Type[2].checked) {
		field = document.Pages.URL; 
		if (JS_isBlank(field, "URL")) return false;
	}

	return true;
}
function validateFriend() {
	var field = document.Friend.Author;
	if (JS_isBlank(field, "Name")) return false;

	field = document.Friend.AuthorEmail;
	if (JS_isBlank(field, "Your Email Address")) return false;
	if (!JS_isEmail(field, "Your Email Address")) return false;

	field = document.Friend.MailTo;
	if (JS_isBlank(field, "Friend's Name")) return false;

	field = document.Friend.MailToEmail;
	if (JS_isBlank(field, "Friend's Email")) return false;
	if (!JS_isEmail(field, "Friend's Email")) return false;

	return true;
}
function validateUser() {
	var field = document.User.Username;
	if (JS_isBlank(field, "Username")) return false;

	field = document.User.Password;
	if (JS_isBlank(field, "Password")) return false;
	var pw = field.value;

	field = document.User.Password2;
	if (JS_isBlank(field, "Password2")) return false;
	var pw2 = field.value;

	if (pw != pw2) {
		alert('Passwords do not match!');
		return false;
	}

	field = document.User.EmailAddress;
	if (JS_isBlank(field, "Email Address")) return false;
	if (!JS_isEmail(field, "Email Address")) return false;

	return true;
}
function getconfirm() {
	return confirm("Kill this item and any associated records?");
}
function JS_swapLayout(form) {
	var idx = form.name.selectedIndex;
	form.Layout.value = form.name.options[idx].value;
	return 1;
}
function JS_swapTopic(form) {
	var idx = form.name.selectedIndex;
	form.Topic.value = form.name.options[idx].value;
	return 1;
}
