/* general functions */

function makeWindow(strUrl, strChrome) { var objWindow = window.open(strUrl, "", strChrome); }
function makeKiosk(strURL) { makeWindow(strURL, 'width=780,height=540,x=0,y=0,top=0,left=0,scrollbars=yes'); }
function makeSmallKiosk(strURL) { makeWindow(strURL, 'width=500,height=360,x=0,y=0,top=0,left=0,scrollbars=yes'); }

function addToSightings(lg_id, blnComment)
	{
	var addList = document.getElementById("addList");
	var seenDay = document.getElementById("seenDay");
	var seenMonth = document.getElementById("seenMonth");
	var seenYear = document.getElementById("seenYear");
	var addComment = document.getElementById("addComment");
	if (addList.selectedIndex >= 0)
		{
		if (blnComment) { addComment.value = prompt("Please enter a comment for this sighting.\nClicking Cancel adds the sighting with no comment.", ""); }
		document.getElementById("addButton").value = "Wait...";
		var sp_id = addList.options[addList.selectedIndex].value;
		var sg_dateseen = seenYear.options[seenYear.selectedIndex].value + seenMonth.options[seenMonth.selectedIndex].value + seenDay.options[seenDay.selectedIndex].value;
		location.href = "actions/action.birdleague.addsighting.php?lg_id=" + lg_id + "&sp_id=" + sp_id + "&sg_comments=" + escape(addComment.value) + "&sg_dateseen=" + sg_dateseen;
		}
	}

function removeFromSightings(lg_id)
	{
	var removeList = document.getElementById("removeList");
	if (removeList.selectedIndex >= 0)
		{
		document.getElementById("removeButton").value = "Wait...";
		var sp_id = removeList.options[removeList.selectedIndex].value;
		location.href = "actions/action.birdleague.removesighting.php?lg_id=" + lg_id + "&sp_id=" + sp_id;
		}
	}

function newsPanelCheckRemaining(intMaxChars)
	{
	intChars = document.getElementById('pan_content').value.length;
	document.getElementById('fldRemaining').value = intMaxChars - intChars;
	if (intChars > intMaxChars)
		{
		document.getElementById('pan_content').value = document.getElementById('pan_content').value.substr(0, intMaxChars);
		intChars = document.getElementById('pan_content').value.length;
		document.getElementById('fldRemaining').value = intMaxChars - intChars;
		}
	}

function asc(String) { return String.charCodeAt(0); }
function chr(AsciiNum) { return String.fromCharCode(AsciiNum) }

function newsPanelPreviewPopup()
	{
	strEncodedContent = document.getElementById("pan_content").value;
	strEncodedContent = escape(strEncodedContent);
	makeSmallKiosk('popups/preview.newspanel.php?pan_savedate=' + document.getElementById("pan_savedate").value + '&pan_content=' + strEncodedContent);
	}

/* validation for public forms */

function checkSubmitEnquiryForm(form)
	{
	form.enq_name.value = cDenyChars(form.enq_name.value, '"<>', false);
	form.enq_email.value = cAllowChars(form.enq_email.value, 'abcdefghijklmnopqrstuvwxyz0123456789-_.@', false);
	form.enq_tel.value = cAllowChars(form.enq_tel.value, "0123456789 -.()[]ext+", false);
	form.enq_address.value = cDenyChars(form.enq_address.value, '"<>', false);
	form.enq_message.value = cDenyChars(form.enq_message.value, '"<>', false);
	if (form.enq_captchagiven) { form.enq_captchagiven.value = cDenyChars(form.enq_captchagiven.value, '"<>', false); }
	if (form.enq_name.value.length < 1) { alert("You must enter your name."); return false }
	if (!cEmailCheck(form.enq_email.value)) { alert("You must enter a valid email address."); return false }
	if (form.enq_message.value.length < 1) { alert("You must enter a message for us."); return false }
	if (form.enq_captchagiven) { if (form.enq_captchagiven.value.length < 1) { alert("You must enter the text in the image."); return false } }
	return true
	}

function checkSubmitFeedbackForm(form)
	{
	form.fbk_name.value = cDenyChars(form.fbk_name.value, '"<>', false);
	form.fbk_email.value = cAllowChars(form.fbk_email.value, 'abcdefghijklmnopqrstuvwxyz0123456789-_.@', false);
	form.fbk_score.value = cAllowChars(form.fbk_score.value, "12345", false);
	form.fbk_message.value = cDenyChars(form.fbk_message.value, '"<>', false);
	if (form.fbk_captchagiven) { form.fbk_captchagiven.value = cDenyChars(form.fbk_captchagiven.value, '"<>', false); }
	if (form.fbk_name.value.length < 1) { alert("You must enter your name."); return false }
	if (!cEmailCheck(form.fbk_email.value)) { alert("You must enter a valid email address."); return false }
	if (form.fbk_score.value.length < 1) { alert("You must enter a score."); return false }
	if (form.fbk_message.value.length < 1) { alert("You must enter some comments, however brief."); return false }
	if (form.fbk_captchagiven) { if (form.fbk_captchagiven.value.length < 1) { alert("You must enter the text in the image."); return false } }
	return true
	}

/* validation for member forms */

function checkSubmitSightingForm(form)
	{
	form.stg_name.value = cDenyChars(form.stg_name.value, '"<>', false);
	form.stg_email.value = cAllowChars(form.stg_email.value, 'abcdefghijklmnopqrstuvwxyz0123456789-_.@', false);
	form.stg_tel.value = cAllowChars(form.stg_tel.value, "0123456789 -.()[]ext", false);
	stg_county = form.stg_county.options[form.stg_county.selectedIndex].value;
	form.stg_place.value = cDenyChars(form.stg_place.value, '"<>', false);
	form.stg_gridref.value = cDenyChars(form.stg_gridref.value, '"<>', false);
	form.stg_directions.value = cDenyChars(form.stg_directions.value, '"<>', false);
	form.stg_time.value = cAllowChars(form.stg_time.value, "0123456789:.,", false);
	stg_time_ampm = form.stg_time_ampm.options[form.stg_time_ampm.selectedIndex].value;
	stg_species = form.stg_species.options[form.stg_species.selectedIndex].value;
	form.stg_count.value = cAllowChars(form.stg_count.value, "0123456789", false);
	form.stg_comments.value = cDenyChars(form.stg_comments.value, '"<>', false);
	if (form.stg_captchagiven) { form.stg_captchagiven.value = cDenyChars(form.stg_captchagiven.value, '"<>', false); }
	if (form.stg_name.value.length < 1) { alert("You must enter your name."); return false }
	if (!cEmailCheck(form.stg_email.value)) { alert("You must enter a valid email address."); return false }
	if (stg_county.length < 1) { alert("You must select a county."); return false }
	if (form.stg_place.value.length < 1) { alert("You must enter a place name."); return false }
	if (form.stg_time.value.length < 1) { alert("You must enter the time of the sighting."); return false }
	if (stg_time_ampm.length < 1) { alert("You must select AM or PM."); return false }
	if (stg_species.length < 1) { alert("You must select a species."); return false }
	if (form.stg_captchagiven) { if (form.stg_captchagiven.value.length < 1) { alert("You must enter the text in the image."); return false } }
	return true
	}

function checkRepairBookingForm(form)
	{
	form.usr_firstname.value = cDenyChars(form.usr_firstname.value, '"<>', false);
	form.usr_lastname.value = cDenyChars(form.usr_lastname.value, '"<>', false);
	form.usr_address1.value = cDenyChars(form.usr_address1.value, '"<>', false);
	form.usr_address2.value = cDenyChars(form.usr_address2.value, '"<>', false);
	form.usr_address3.value = cDenyChars(form.usr_address3.value, '"<>', false);
	form.usr_address4.value = cDenyChars(form.usr_address4.value, '"<>', false);
	form.usr_address5.value = cDenyChars(form.usr_address5.value, '"<>', false);
	form.usr_tel.value = cAllowChars(form.usr_tel.value, '0123456789 -.()[]ext+', false);
	form.rpr_manufacturer.value = cDenyChars(form.rpr_manufacturer.value, '"<>', false);
	form.rpr_model.value = cDenyChars(form.rpr_model.value, '"<>', false);
	form.rpr_serial.value = cDenyChars(form.rpr_serial.value, '"<>', false);
	form.rpr_description.value = cDenyChars(form.rpr_description.value, '"<>', false);
	form.rpr_comments.value = cDenyChars(form.rpr_comments.value, '"<>', false);
	if (form.usr_firstname.value.length < 1) { alert("You must enter your first name."); return false }
	if (form.usr_lastname.value.length < 1) { alert("You must enter your last name."); return false }
	if (form.usr_address1.value.length < 2) { alert("You must enter your address."); return false }
	if (form.usr_address3.value.length < 2) { alert("You must enter your town or city."); return false }
	if (form.usr_address5.value.length < 6) { alert("You must enter your postcode."); return false }
	if (form.usr_tel.value.length < 6) { alert("You must enter a contact telephone number."); return false }
	if (form.rpr_manufacturer.value.length < 1) { alert("You must enter the manufacturer name."); return false }
	if (form.rpr_model.value.length < 1) { alert("You must enter the model name or number."); return false }
	if (form.rpr_serial.value.length < 1) { alert("You must enter the serial number."); return false }
	if (form.rpr_description.value.length < 1) { alert("You must enter a description of the fault."); return false }
	return true
	}

function checkBirdLeagueConnectForm(form)
	{
	form.us_username.value = cDenyChars(form.us_username.value, '"<>', false);
	form.us_password.value = cDenyChars(form.us_password.value, '"<>', false);
	if (form.us_username.value.length < 1) { alert("You must enter your Bird League username."); return false }
	if (form.us_password.value.length < 1) { alert("You must enter your Bird League password."); return false }
	return true
	}

function checkBirdLeagueProfileForm(form)
	{
	form.us_name.value = cDenyChars(form.us_name.value, '"<>', false);
	if (form.us_name.value.length < 1) { alert("You must enter a display name."); return false }
	return true
	}

/* validation for admin forms */

function checkAdminRightsEditForm(form)
	{
	form.rgt_name.value = cDenyChars(form.rgt_name.value, '"<>', false);
	form.rgt_comments.value = cDenyChars(form.rgt_comments.value, '"<>', false);
	if (form.rgt_name.value.length < 1) { alert("You must enter a name."); return false }
	return true
	}

function checkAdminProfilesEditForm(form)
	{
	form.pfl_name.value = cDenyChars(form.pfl_name.value, '"<>', false);
	form.pfl_comments.value = cDenyChars(form.pfl_comments.value, '"<>', false);
	if (form.pfl_name.value.length < 1) { alert("You must enter a name."); return false }
	return true
	}

function checkAdminProfilesAddRightForm(form)
	{
	if (form.rgt_id.value.length < 1) { alert("You must select a right."); return false }
	return true
	}

function checkAdminPagesEditForm(form)
	{
	form.pag_menutext.value = cDenyChars(form.pag_menutext.value, '"<>', false);
	form.pag_url.value = cDenyChars(form.pag_url.value, '"<>', false);
	form.pag_browsertitle.value = cDenyChars(form.pag_browsertitle.value, '"<>', false);
	form.pag_comments.value = cDenyChars(form.pag_comments.value, '"<>', false);
	if (form.pag_url.value.length < 1) { alert("You must enter a URL."); return false }
	return true
	}

function checkAdminUsersEditForm(form)
	{
	form.usr_username.value = cDenyChars(form.usr_username.value, '"<>', false);
	form.usr_password.value = cDenyChars(form.usr_password.value, '"<>', false);
	form.usr_email.value = cAllowChars(form.usr_email.value, 'abcdefghijklmnopqrstuvwxyz0123456789-_.@', false);
	form.usr_title.value = cDenyChars(form.usr_title.value, '"<>', false);
	form.usr_firstname.value = cDenyChars(form.usr_firstname.value, '"<>', false);
	form.usr_lastname.value = cDenyChars(form.usr_lastname.value, '"<>', false);
	form.usr_address1.value = cDenyChars(form.usr_address1.value, '"<>', false);
	form.usr_address2.value = cDenyChars(form.usr_address2.value, '"<>', false);
	form.usr_address3.value = cDenyChars(form.usr_address3.value, '"<>', false);
	form.usr_address4.value = cDenyChars(form.usr_address4.value, '"<>', false);
	form.usr_address5.value = cDenyChars(form.usr_address5.value, '"<>', false);
	form.usr_tel.value = cAllowChars(form.usr_tel.value, "0123456789 -.()[]ext+", false);
	form.usr_msn.value = cAllowChars(form.usr_msn.value, 'abcdefghijklmnopqrstuvwxyz0123456789-_.@', false);
	form.usr_skype.value = cDenyChars(form.usr_skype.value, '"<>', false);
	form.usr_commments.value = cDenyChars(form.usr_commments.value, '"<>', false);
	if (form.usr_username.value.length < 1) { alert("You must enter a username."); return false }
	if (form.usr_password.value.length < 1) { alert("You must enter a password."); return false }
	if (!cEmailCheck(form.usr_email.value)) { alert("You must enter a valid email address."); return false }
	return true
	}

function checkAdminAdvertPlacementsEditForm(form)
	{
	return true
	}

function checkAdminRepairsReviewForm(form)
	{
	form.rpr_reference.value = cDenyChars(form.rpr_reference.value, '"<>', false);
	form.rpr_admincommentsprivate.value = cDenyChars(form.rpr_admincommentsprivate.value, '"<>', false);
	form.rpr_admincommentspublic.value = cDenyChars(form.rpr_admincommentspublic.value, '"<>', false);
	return true
	}

function checkAdminRepairsEditForm(form)
	{
	form.usr_firstname.value = cDenyChars(form.usr_firstname.value, '"<>', false);
	form.usr_lastname.value = cDenyChars(form.usr_lastname.value, '"<>', false);
	form.usr_address1.value = cDenyChars(form.usr_address1.value, '"<>', false);
	form.usr_address2.value = cDenyChars(form.usr_address2.value, '"<>', false);
	form.usr_address3.value = cDenyChars(form.usr_address3.value, '"<>', false);
	form.usr_address4.value = cDenyChars(form.usr_address4.value, '"<>', false);
	form.usr_address5.value = cDenyChars(form.usr_address5.value, '"<>', false);
	form.usr_tel.value = cAllowChars(form.usr_tel.value, "0123456789 -.()[]ext+", false);
	form.rpr_manufacturer.value = cDenyChars(form.rpr_manufacturer.value, '"<>', false);
	form.rpr_model.value = cDenyChars(form.rpr_model.value, '"<>', false);
	form.rpr_serial.value = cDenyChars(form.rpr_serial.value, '"<>', false);
	form.rpr_description.value = cDenyChars(form.rpr_description.value, '"<>', false);
	form.rpr_comments.value = cDenyChars(form.rpr_comments.value, '"<>', false);
	form.rpr_reference.value = cDenyChars(form.rpr_reference.value, '"<>', false);
	form.rpr_admincommentsprivate.value = cDenyChars(form.rpr_admincommentsprivate.value, '"<>', false);
	form.rpr_admincommentspublic.value = cDenyChars(form.rpr_admincommentspublic.value, '"<>', false);
	return true
	}
