function verticallyCenterElement(elementid) {
	var elem = document.getElementById(elementid);
	elem.style.top = window.getScrollTop() + (window.getHeight() / 15) + "px";
	//elem.style.top = window.getScrollTop() + ((window..clientHeight - elem.offsetHeight) / 2) + "px";
}

function togglePhotoUploadForm(elementpakket, elementchange, pakketidnummer, change) {
	
	document.getElementById(elementpakket).value = pakketidnummer;
	document.getElementById(elementchange).value = change;
	
	var formDiv = document.getElementById("photoupload");
	if(formDiv.style.visibility != "visible") {
		verticallyCenterElement("photoupload");
		formDiv.style.visibility = "visible";
	}
	else
		formDiv.style.visibility = "hidden";
}

function submitPhotoUploadForm() {
	//var form = document.getElementById("photouploadform");
	var form = document.forms["photouploadform"];
form.submit();
	
}

function toggleTellAFriendForm(photoid) {
	// Update photoid first
	var form = document.forms["tellafriendform"];
	form.photoid.value = photoid;
	// Toggle visibility
	var formDiv = document.getElementById("tellafriend");
	if(formDiv.style.visibility != "visible") {
		verticallyCenterElement("tellafriend");
		formDiv.style.visibility = "visible";
	}
	else
		formDiv.style.visibility = "hidden";
}

function submitTellAFriendForm() {
	// Get the form
	var form = document.forms["tellafriendform"];
	// Read field values and trim whitespace from both ends.
	var namefrom  = form.namefrom .value.trim();
	var emailfrom = form.emailfrom.value.trim();
	var nameto    = form.nameto   .value.trim();
	var emailto   = form.emailto  .value.trim();
	var message   = form.message  .value.trim();
	
	// Check field validity
	var errorMsg = "";
	errorMsg += checkLengthAndContent(namefrom , "Naam afzender" , 3,  40);
	errorMsg += checkEmailAddress    (emailfrom, "E-mailadres afzender");
	errorMsg += checkLengthAndContent(nameto   , "Naam ontvanger", 3,  40);
	errorMsg += checkEmailAddress    (emailto  , "E-mailadres ontvanger");
	errorMsg += checkLengthAndContent(message  , "Bericht"       , 3, 500);
	
	if(errorMsg != "")
		alert("Er is iets mis met de ingevoerde gegevens:" + errorMsg);
	else {
		// Put trimmed values back into the form
		form.namefrom .value = namefrom;
		form.emailfrom.value = emailfrom;
		form.nameto   .value = nameto;
		form.emailto  .value = emailto;
		form.message  .value = message;
		// Submit form
		form.submit();
	}
}

/** Check length of a string; return error message if invalid, or an empty string otherwise. */
function checkValueLength(value, fieldname, min, max) {
	var errorMsg = "";
	if(value.length < min)
		errorMsg += "\n\n  -  " 
		         + fieldname + " te kort: deze waarde moet minimaal "
		         + min + " tekens lang zijn.";
	else if(value.length > max)
		errorMsg += "\n\n  -  " 
		         + fieldname + " te kort: deze waarde titel mag maximaal "
		         + max + " tekens lang zijn.";
	return errorMsg;
}

/** Check email address; return error message if invalid, or an empty string otherwise. */
function checkEmailAddress(value, fieldname) {
	var errorMsg = "";
	var emailRegExp = new RegExp(/^([a-z&0-9]+)([._-]([a-z&0-9]+))*[@]([a-z0-9]+)([._-]([a-z0-9]+))*[.]([a-z0-9]){2}([a-zA-Z0-9_]+)?$/);
	if(!value.match(emailRegExp))
		errorMsg = "\n\n  -  " + fieldname + " is geen geldig email-adres.";
	return errorMsg;
}

/** Check text content for presence of at least one alphabet character; return error message if none is found, or an empty string otherwise. */
function checkTextContent(value, fieldname) {
	var errorMsg = "";
	var textRegExp = new RegExp(/^.*[a-zA-Z].*$/m);
	if(!value.match(textRegExp))
		errorMsg = "\n\n  -  " + fieldname + " bevat te weinig tekst.";
	return errorMsg;
}

/** Check some text value: first check for value length, then check for alphabetic content. */
function checkLengthAndContent(value, fieldname, min, max) {
	var errorMsg = "";
	errorMsg = checkValueLength(value, fieldname, min, max);
	if(errorMsg == "")
		errorMsg = checkTextContent(value, fieldname);
	return errorMsg;
}