// code to validate all forms on the website

// auto-tabs phone fields
var phoneFieldLength = 3;
function tabNext(object, event, textLength, nextField)
{
	if (event == "down")
		phoneFieldLength = object.value.length;
	else if (event == "up")
	{
		if (object.value.length != phoneFieldLength)
		{
			phoneFieldLength = object.value.length;
			
			if (phoneFieldLength == textLength)
				nextField.focus();
		}
	}
}


function trim(textField, inputString)
{
	// removes leading and trailing spaces from the input string. also removes
	// consecutive spaces and replaces it with one space. If something besides
	// a string is passed in (null, custom object, etc.) then return the input.
	if (typeof inputString != "string")
		return inputString;
	
	var retValue = inputString;
	var ch = retValue.substring(0, 1);

	while (ch == " ")
	{
		// check for spaces at the beginning of the string
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}
	
	ch = retValue.substring(retValue.length - 1, retValue.length);
	
	while (ch == " ")
	{
		// check for spaces at the end of the string
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}
	
	while (retValue.indexOf("  ") != -1)
	{
		// note that there are two spaces in the string - look for multiple spaces within the string
		retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
	}

	textField.value = retValue;
}


function isValidEmail(email)
{
    var regularExpression = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

	if (!regularExpression.test(email))
	{
		alert("Please verify that the email address is correct.");
		return false;
	}
	return true;
}


function toUpperCase(textField, inputString)
{
	retValue = inputString.toUpperCase();

	textField.value = retValue;
}


function validate(form)
{
	// validation for contact ABC form
	if (form.name == "contactABC")
	{
		if (form.title.value == "-1")
		{
			alert("Please select title.");
			form.title.focus();
			return false;
		}

		if ((form.firstName.value == null) || (form.firstName.value == ""))
		{
			alert("Please enter first name.");
			form.firstName.focus();
			return false;
		}

		if ((form.lastName.value == null) || (form.lastName.value == ""))
		{
			alert("Please enter last name.");
			form.lastName.focus();
			return false;
		}

		if ((form.email.value == null) || (form.email.value == ""))
		{
			alert("Please enter email address.");
			form.email.focus();
			return false;
		}
		else
		{
			if (isValidEmail(form.email.value) == false)
			{
				form.email.select();
				return false;
			}
		}

		if ((form.phoneAreaCode.value == null) || (form.phoneAreaCode.value == ""))
		{
			alert("Please enter area code of telephone number.");
			form.phoneAreaCode.focus();
			return false;
		}

		if ((form.phonePrefix.value == null) || (form.phonePrefix.value == ""))
		{
			alert("Please enter prefix of telephone number.");
			form.phonePrefix.focus();
			return false;
		}

		if ((form.phoneSuffix.value == null) || (form.phoneSuffix.value == ""))
		{
			alert("Please enter suffix of telephone number.");
			form.phoneSuffix.focus();
			return false;
		}

		if (form.country.value == "-1")
		{
			alert("Please select country.");
			form.country.focus();
			return false;
		}

		if ((form.messageBody.value == null) || (form.messageBody.value == ""))
		{
			alert("Please enter your message.");
			form.messageBody.focus();
			return false;
		}
	}
	
	// validation for website feedback form
	if (form.name == "webFeedback")
	{
		if ((form.customerName.value == null) || (form.customerName.value == ""))
		{
			alert("Please enter name.");
			form.customerName.focus();
			return false;
		}

		if ((form.email.value == null) || (form.email.value == ""))
		{
			alert("Please enter email address.");
			form.email.focus();
			return false;
		}
		else
		{
			if (isValidEmail(form.email.value) == false)
			{
				form.email.select();
				return false;
			}
		}

		if (form.country.value == "-1")
		{
			alert("Please select country.");
			form.country.focus();
			return false;
		}

		var typeOfMsgChecked = -1;
		for (i = 0; i < form.typeOfMsg.length; i++)
		{
			if (form.typeOfMsg[i].checked)
				typeOfMsgChecked = i;
		}
		if (typeOfMsgChecked == -1)
		{
			alert("Please select type of message.");
//			form.typeOfMsg[0].focus();
			return false;
		}

		if ((form.messageBody.value == null) || (form.messageBody.value == ""))
		{
			alert("Please enter your message.");
			form.messageBody.focus();
			return false;
		}
	}

	// validation for ftp upload form
	if (form.name == "ftpUpload")
	{
		// customer information section
		if (form.title.value == "-1")
		{
			alert("Please select title.");
			form.title.focus();
			return false;
		}

		if ((form.firstName.value == null) || (form.firstName.value == ""))
		{
			alert("Please enter first name.");
			form.firstName.focus();
			return false;
		}

		if ((form.lastName.value == null) || (form.lastName.value == ""))
		{
			alert("Please enter last name.");
			form.lastName.focus();
			return false;
		}

		if ((form.email.value == null) || (form.email.value == ""))
		{
			alert("Please enter email address.");
			form.email.focus();
			return false;
		}
		else
		{
			if (isValidEmail(form.email.value) == false)
			{
				form.email.select();
				return false;
			}
		}

		if ((form.phoneAreaCode.value == null) || (form.phoneAreaCode.value == ""))
		{
			alert("Please enter area code of telephone number.");
			form.phoneAreaCode.focus();
			return false;
		}

		if ((form.phonePrefix.value == null) || (form.phonePrefix.value == ""))
		{
			alert("Please enter prefix of telephone number.");
			form.phonePrefix.focus();
			return false;
		}

		if ((form.phoneSuffix.value == null) || (form.phoneSuffix.value == ""))
		{
			alert("Please enter suffix of telephone number.");
			form.phoneSuffix.focus();
			return false;
		}

		if ((form.street.value == null) || (form.street.value == ""))
		{
			alert("Please enter street address.");
			form.street.focus();
			return false;
		}

		if ((form.city.value == null) || (form.city.value == ""))
		{
			alert("Please enter city.");
			form.city.focus();
			return false;
		}

		if ((form.province.value == "-1") || (form.province.value == "-2"))
		{
			alert("Please select province/state.");
			form.province.focus();
			return false;
		}

		if ((form.postal.value == null) || (form.postal.value == ""))
		{
			alert("Please enter postal/zip code.");
			form.postal.focus();
			return false;
		}

		if (form.country.value == "-1")
		{
			alert("Please select country.");
			form.country.focus();
			return false;
		}

		// order information section
		if (form.service.value == "-1")
		{
			alert("Please select service.");
			form.service.focus();
			return false;
		}

		if (form.service.value == "Print Service")
		{
			if (form.product.value == "-1")
			{
				alert("Please select product.");
				form.product.focus();
				return false;
			}
			
			if (form.oneOrMultiple.value == "-1")
			{
				alert("Please select single file/multiple files.");
				form.oneOrMultiple.focus();
				return false;
			}

			if (form.oneOrMultiple.value == "Single File")
			{
				if ((form.fileName.value == null) || (form.fileName.value == ""))
				{
					alert("Please enter file name.");
					form.fileName.focus();
					return false;
				}

				if (form.fileExtension.value == "-1")
				{
					alert("Please select file extension.");
					form.fileExtension.focus();
					return false;
				}
			}
			else if (form.oneOrMultiple.value == "Multiple Files")
			{
				if ((form.folderArchiveName.value == null) || (form.folderArchiveName.value == ""))
				{
					alert("Please enter folder/archive name.");
					form.folderArchiveName.focus();
					return false;
				}

				if (form.archiveExtension.value == "-1")
				{
					alert("Please select archive extension.");
					form.archiveExtension.focus();
					return false;
				}

				if ((form.numFiles.value == null) || (form.numFiles.value == ""))
				{
					alert("Please enter number of files.");
					form.numFiles.focus();
					return false;
				}
			}

			if (form.printSize.value == "-1")
			{
				alert("Please select print size.");
				form.printSize.focus();
				return false;
			}

			if ((form.quantity.value == null) || (form.quantity.value == ""))
			{
				alert("Please enter quantity.");
				form.quantity.focus();
				return false;
			}
		}
		else if (form.service.value == "Slide Service")
		{
			if (form.product.value == "-1")
			{
				alert("Please select product.");
				form.product.focus();
				return false;
			}
			
			if (form.oneOrMultiple.value == "-1")
			{
				alert("Please select single file/multiple files.");
				form.oneOrMultiple.focus();
				return false;
			}

			if (form.oneOrMultiple.value == "Single File")
			{
				if ((form.fileName.value == null) || (form.fileName.value == ""))
				{
					alert("Please enter file name.");
					form.fileName.focus();
					return false;
				}

				if (form.fileExtension.value == "-1")
				{
					alert("Please select file extension.");
					form.fileExtension.focus();
					return false;
				}
			}
			else if (form.oneOrMultiple.value == "Multiple Files")
			{
				if ((form.folderArchiveName.value == null) || (form.folderArchiveName.value == ""))
				{
					alert("Please enter folder/archive name.");
					form.folderArchiveName.focus();
					return false;
				}

				if (form.archiveExtension.value == "-1")
				{
					alert("Please select archive extension.");
					form.archiveExtension.focus();
					return false;
				}

				if ((form.numFiles.value == null) || (form.numFiles.value == ""))
				{
					alert("Please enter number of files.");
					form.numFiles.focus();
					return false;
				}
			}
		}
	}

	// validation for greeting card form
	if (form.name == "greetingcardsorderform")
	{
		// customer information section
		if (form.title.value == "-1")
		{
			alert("Please select title.");
			form.title.focus();
			return false;
		}

		if ((form.firstName.value == null) || (form.firstName.value == ""))
		{
			alert("Please enter first name.");
			form.firstName.focus();
			return false;
		}

		if ((form.lastName.value == null) || (form.lastName.value == ""))
		{
			alert("Please enter last name.");
			form.lastName.focus();
			return false;
		}

		if ((form.email.value == null) || (form.email.value == ""))
		{
			alert("Please enter email address.");
			form.email.focus();
			return false;
		}
		else
		{
			if (isValidEmail(form.email.value) == false)
			{
				form.email.select();
				return false;
			}
		}

		if ((form.phoneAreaCode.value == null) || (form.phoneAreaCode.value == ""))
		{
			alert("Please enter area code of telephone number.");
			form.phoneAreaCode.focus();
			return false;
		}

		if ((form.phonePrefix.value == null) || (form.phonePrefix.value == ""))
		{
			alert("Please enter prefix of telephone number.");
			form.phonePrefix.focus();
			return false;
		}

		if ((form.phoneSuffix.value == null) || (form.phoneSuffix.value == ""))
		{
			alert("Please enter suffix of telephone number.");
			form.phoneSuffix.focus();
			return false;
		}

		if ((form.street.value == null) || (form.street.value == ""))
		{
			alert("Please enter street address.");
			form.street.focus();
			return false;
		}

		if ((form.city.value == null) || (form.city.value == ""))
		{
			alert("Please enter city.");
			form.city.focus();
			return false;
		}

		if ((form.province.value == "-1") || (form.province.value == "-2"))
		{
			alert("Please select province/state.");
			form.province.focus();
			return false;
		}

		if ((form.postal.value == null) || (form.postal.value == ""))
		{
			alert("Please enter postal/zip code.");
			form.postal.focus();
			return false;
		}

		if (form.country.value == "-1")
		{
			alert("Please select country.");
			form.country.focus();
			return false;
		}

		// order information section
		if ((form.fileName.value == null) || (form.fileName.value == ""))
		{
			alert("Please enter file name.");
			form.fileName.focus();
			return false;
		}

		if (form.fileExtension.value == "-1")
		{
			alert("Please select file extension.");
			form.fileExtension.focus();
			return false;
		}

		if ((form.quantity.value == null) || (form.quantity.value == ""))
		{
			alert("Please enter quantity.");
			form.quantity.focus();
			return false;
		}
	}

	// validation for newsletter subscription form
	if (form.name == "subscribeNews")
	{
		if ((form.email.value == null) || (form.email.value == ""))
		{
			alert("Please enter email address.");
			form.email.focus();
			return false;
		}
		else
		{
			if (isValidEmail(form.email.value) == false)
			{
				form.email.select();
				return false;
			}
		}
	}

	// validation for survey form
	if (form.name == "survey")
	{
		if (form.title.value == "-1")
		{
			alert("Please select title.");
			form.title.focus();
			return false;
		}

		if ((form.firstName.value == null) || (form.firstName.value == ""))
		{
			alert("Please enter first name.");
			form.firstName.focus();
			return false;
		}

		if ((form.lastName.value == null) || (form.lastName.value == ""))
		{
			alert("Please enter last name.");
			form.lastName.focus();
			return false;
		}

		if ((form.email.value == null) || (form.email.value == ""))
		{
			alert("Please enter email address.");
			form.email.focus();
			return false;
		}
		else
		{
			if (isValidEmail(form.email.value) == false)
			{
				form.email.select();
				return false;
			}
		}

		if ((form.phoneAreaCode.value == null) || (form.phoneAreaCode.value == ""))
		{
			alert("Please enter area code of telephone number.");
			form.phoneAreaCode.focus();
			return false;
		}

		if ((form.phonePrefix.value == null) || (form.phonePrefix.value == ""))
		{
			alert("Please enter prefix of telephone number.");
			form.phonePrefix.focus();
			return false;
		}

		if ((form.phoneSuffix.value == null) || (form.phoneSuffix.value == ""))
		{
			alert("Please enter suffix of telephone number.");
			form.phoneSuffix.focus();
			return false;
		}

		var workflowChecked = -1;
		for (i = 0; i < form.workflow.length; i++)
		{
			if (form.workflow[i].checked)
				workflowChecked = i;
		}
		if (workflowChecked == -1)
		{
			alert("Please select your workflow.");
//			form.typeOfMsg[0].focus();
			return false;
		}
	}
}


function restrictInput(keyEvent, allowedChar)
{
	var inputKey;

	// checks for IE 4.0 or later
	if (document.all)
		inputKey = String.fromCharCode(keyEvent.keyCode);
	// checks for NS 6 or later
	else if (document.getElementById)
		inputKey = String.fromCharCode(keyEvent.which);
	// checks for NS 4
	else if (document.layers)
		inputKey = String.fromCharCode(keyEvent.which);

	// sets both input and allowed to lower cases such that comparisons
	// can be made
	inputKey = inputKey.toLowerCase();
	allowedChar = allowedChar.toLowerCase();

	if (allowedChar.indexOf(inputKey) != -1)
		return true;

	if ((inputKey == null) || (inputKey == 8) || (inputKey == 9) || (inputKey == 13) || (inputKey == 27))
		return true;

	return false;
}


function popup(imgurl)
{
	myImage = new Image();
	imgURL = imgurl;
	myImage.src = imgURL;
	imgWidth = myImage.width + 20;
	imgHeight = myImage.height + 27;
	x = (screen.height/2) - (imgHeight/2);
	y = (screen.width/2) - (imgWidth/2);
	if (myImage.complete)
	   window.open(imgurl,'ImageWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,copyhistory=no,scrollbars=no,width=' + imgWidth + ',height=' + imgHeight + ',top=' + x + ',left=' + y);
	else
		setTimeout('popup(myImage.src)', 100);
}

function popupPage(pageurl, windowwidth, windowheight)
{
	pageURL = pageurl;
	windowWidth = windowwidth;
	windowHeight = windowheight
	x = (screen.height/2) - (windowWidth/2);
	y = (screen.width/2) - (windowHeight/2);
	
	window.open(pageURL, 'Popup', 'toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,copyhistory=no,scrollbars=no,width=' + windowWidth + ',height=' + windowHeight + ',top=' + x + ',left=' + y);
}
