function cmSure(strPrompt)
	{
	if (strPrompt.length < 1) { strPrompt = "Are you sure?" }
	return confirm(strPrompt)
	}


function cmReallySure() { return confirm("Are you REALLY sure?") }




function allowChars(strValue, strChars, blnCaseSense)
	{
	strResult = "";
	if (blnCaseSense)
		{
		for (var i = 0; i < strValue.length; i++)
			{
			strChar = strValue.substr(i, 1);
			if (strChars.indexOf(strChar) > -1)
				{
				strResult += strChar;
				}
			}
		}
	else
		{
		strChars = strChars.toUpperCase();
		for (var i = 0; i < strValue.length; i++)
			{
			strChar = strValue.substr(i, 1);
			if (strChars.indexOf(strChar.toUpperCase()) > -1)
				{
				strResult += strChar;
				}
			}
		}
	return strResult;
	}


function denyChars(strValue, strChars, blnCaseSense)
	{
	strResult = "";
	if (blnCaseSense)
		{
		for (var i = 0; i < strValue.length; i++)
			{
			strChar = strValue.substr(i, 1);
			if (strChars.indexOf(strChar) == -1)
				{
				strResult += strChar;
				}
			}
		}
	else
		{
		strChars = strChars.toUpperCase();
		for (var i = 0; i < strValue.length; i++)
			{
			strChar = strValue.substr(i, 1);
			if (strChars.indexOf(strChar.toUpperCase()) == -1)
				{
				strResult += strChar;
				}
			}
		}
	return strResult;
	}


function cmEmailCheck(emailStr)
	{
	var emailPat=/^(.+)@(.+)$/											// check user@domain pattern
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"					// check banned special chars
	var validChars="\[^\\s" + specialChars + "\]"						// check banned normal chars
	var quotedUser="(\"[^\"]*\")"										// check if username quoted
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/	// check ip format
	var atom=validChars + '+'											// series of non special chars
	var word="(" + atom + "|" + quotedUser + ")"						// a word
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")			// structure of username
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")			// structure of domain
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) { return false }
	var user=matchArray[1];
	var domain=matchArray[2];
	if (user.match(userPat)==null) { return false }
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null)
		{
		for (var i=1;i<=4;i++)
			{
			if (IPArray[i]>255) { return false }
			}
		return true
		}
	var domainArray=domain.match(domainPat);
	if (domainArray==null) { return false }
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4)
		{
		return false
		}
	if (len<2) { return false }
	return true;
	}


function checkUserEntryForm(form)
	{
	form.en_birds.value = allowChars(form.en_birds.value, "0123456789", false);
	form.en_comments.value = denyChars(form.en_comments.value, "<>\"", false);
	if (form.en_birds.value.length < 1)
		{
		alert("You must enter a number for the total species seen.");
		return false
		}
	if (form.en_comments.value.length > 250)
		{
		alert("Your comments must be limited to 250 characters.");
		return false
		}
	return true
	}


function checkUserProfileForm(form)
	{
	form.us_username.value = allowChars(form.us_username.value, "abcdefghijklmnopqrstuvwxyz0123456789 &", false);
	form.us_password.value = allowChars(form.us_password.value, "abcdefghijklmnopqrstuvwxyz0123456789", false);
	form.us_location.value = denyChars(form.us_location.value, "<>\"", false);
	form.us_email.value = allowChars(form.us_email.value, "abcdefghijklmnopqrstuvwxyz0123456789-.@_", false);
	form.us_companyemail.value = allowChars(form.us_companyemail.value, "abcdefghijklmnopqrstuvwxyz0123456789-.@_", false);
	form.us_name.value = denyChars(form.us_name.value, "<>\"", false);
	form.us_address1.value = denyChars(form.us_address1.value, "<>\"", false);
	form.us_address2.value = denyChars(form.us_address2.value, "<>\"", false);
	form.us_address3.value = denyChars(form.us_address3.value, "<>\"", false);
	form.us_address4.value = denyChars(form.us_address4.value, "<>\"", false);
	form.us_address5.value = denyChars(form.us_address5.value, "<>\"", false);
	form.us_biography.value = denyChars(form.us_biography.value, "<>\"", false);
	if (form.us_username.value.length < 3)
		{
		alert("You must enter a username of at least 3 characters."); 
		return false
		}
	if (form.us_password.value.length < 4)
		{
		alert("You must enter a password of at least 4 characters."); 
		return false
		}
	if (!cmEmailCheck(form.us_email.value))
		{
		alert("You must enter a valid email address.");
		return false
		}
	if (form.us_location.value.length < 2)
		{
		alert("You must enter a general location."); 
		return false
		}
	if (form.us_name.value.length < 2)
		{
		alert("You must enter your name."); 
		return false
		}
	return true
	}


function getScreenWidth() { return screen.availWidth }


function getScreenHeight() { return screen.availHeight }


function makeWindow(strUrl, strChrome)
	{
	var objWindow = window.open(strUrl, "", strChrome);
	if (navigator.appVersion.charAt(0) == "2" && navigator.appName == "Netscape")
		{
		objWindow = window.open(strUrl, "", strChrome)
		}
	}


function biogWindow(intID)
	{
	var intW = 400;
	var intH = 250;
	var intX = (getScreenWidth() / 2) - (intW / 2);
	var intY = (getScreenHeight() / 2) - (intH / 2);
	var strChrome = "top="+intY+",left="+intX+",x="+intX+",y="+intY+",width="+intW+",height="+intH+",scrollbars=no";
	//alert(strChrome);
	makeWindow("info.asp?u=" + intID, strChrome);
	return false
	}

