/*******************************************************************************
*  Your e Solutions Ltd : 02 June 2005
*******************************************************************************/

/* Bookmark */
var bookmarkurl="http://www.vshops.co.uk/";
var bookmarktitle="Online Shopping Mall - vShops";

function bookmark()
{
	if ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4))
	{
		window.external.AddFavorite(bookmarkurl,bookmarktitle);
	}
	else
	{
		var URL='bookmark.html';
		var day = new Date();
		var id = day.getTime();
		eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=300,height=200');");
	}
}

/* Validation */

function validate(f)
{
	if (f.name == 'SendNote')
	{
		if (isFilled(f.SendersEmail) == false)
		{
			alert("Your Email Address field cannot be blank.");
			f.SendersEmail.focus();
			return false;
		}
		if ((isFilled(f.SendersEmail) == true) && (isValidEmail(f.SendersEmail.value) == false))
		{
			alert("Invalid email address!");
			f.SendersEmail.select();
			return false;
  		}
		if (isFilled(f.SendersName) == false)
		{
			alert("Your Name field cannot be blank.");
			f.SendersName.focus();
			return false;
		}
		if (isFilled(f.Subject) == false)
		{
			alert("Subject field cannot be blank.");
			f.Subject.focus();
			return false;
		}
		if (f.Subject.value.length > 100)
		{
			alert("Subject field must not be greater than 100 characters.");
			f.Subject.focus();
			return false;
		}
		if (isFilled(f.Message) == false)
		{
			alert("Message field cannot be blank.");
			f.Message.focus();
			return false;
		}
		if (f.Message.value.length > 1000)
		{
			alert("Your message must not be greater than 1000 characters.");
			f.Message.focus();
			return false;
		}
	}
	if (f.name == 'EmailAFriend')
	{
		if (isFilled(f.ToFirstName) == false)
		{
			alert("First Name field cannot be blank.");
			f.ToFirstName.focus();
			return false;
		}
		if (isFilled(f.ToLastName) == false)
		{
			alert("Last Name field cannot be blank.");
			f.ToLastName.focus();
			return false;
		}
		if (isFilled(f.ToEmailAddress) == false)
		{
			alert("Email Address field cannot be blank.");
			f.ToEmailAddress.focus();
			return false;
		}	
		if ((isFilled(f.ToEmailAddress) == true) && (isValidEmail(f.ToEmailAddress.value) == false))
		{
			alert("Invalid email address!");
			f.ToEmailAddress.select();
			return false;
  		}
		if (f.Message.value.length > 1000)
		{
			alert("Your message must not be greater than 1000 characters.");
			f.Message.focus();
			return false;
		}
		if (isFilled(f.FromFirstName) == false)
		{
			alert("First Name field cannot be blank.");
			f.FromFirstName.focus();
			return false;
		}
		if (isFilled(f.FromLastName) == false)
		{
			alert("Last Name field cannot be blank.");
			f.FromLastName.focus();
			return false;
		}
		if (isFilled(f.FromEmailAddress) == false)
		{
			alert("Email Address field cannot be blank.");
			f.FromEmailAddress.focus();
			return false;
		}	
		if ((isFilled(f.FromEmailAddress) == true) && (isValidEmail(f.FromEmailAddress.value) == false))
		{
			alert("Invalid email address!");
			f.FromEmailAddress.select();
			return false;
  		}
	}
	else if (f.name == 'LostPassword')
	{
		if ((isFilled(f.Username) == false) && (isFilled(f.Email) == false))
		{
			alert("Please enter your username or your email address.");
			f.Username.focus();
			return false;
		}
		if ((isFilled(f.Username) == true) && (isValidUsername(f.Username.value, 6, 12) == false))
		{
			alert("Invalid username. It must be between 6 to 12 chars long and\nit must not contain any spaces or punctuation characters.");
			f.Username.focus();
			return false;
		}
		if ((isFilled(f.Email) == true) && (isValidEmail(f.Email.value) == false))
		{
			alert("Invalid email address!");
			f.Email.select();
			return false;
  		}
	}
	else if (f.name == 'ChangePassword')
	{
		if (isFilled(f.CurrentPwd) == false)
		{
			alert("Current Password field cannot be blank");
			f.CurrentPwd.focus();
			return false;
		}
		if (isValidPwd(f.CurrentPwd.value, 8, 12) == false)
		{
			alert("Invalid password. It must be between 8 to 12 chars long and\nit must not contain any spaces or punctuation characters.");
			f.CurrentPwd.focus();
			return false;
		}
		if (isFilled(f.NewPwd) == false)
		{
			alert("New Password field cannot be blank");
			f.NewPwd.focus();
			return false;
		}
		if (isValidPwd(f.NewPwd.value, 8, 12) == false)
		{
			alert("Invalid password. It must be between 8 to 12 chars long and\nit must not contain any spaces or punctuation characters.");
			f.NewPwd.focus();
			return false;
		}
		if (f.NewPwd.value != f.ConfirmPwd.value)
		{
			alert("New and Confirm Passwords do not match!")
			f.ConfirmPwd.focus();
			return false;
		}
		if (f.NewPwd.value == f.CurrentPwd.value)
		{
			alert("New Password is the same as your Current Password!")
			f.NewPwd.focus();
			return false;
		}
	}
	else if ((f.name == 'MemberLogin') || (f.name == 'NewMemberLogin') || (f.name =='LoginRequired'))
	{
		if (isFilled(f.Un) == false)
		{
			alert("Username field cannot be blank");
			f.Un.focus();
			return false;
		}
		if (isValidUsername(f.Un.value, 6, 12) == false)
		{
			alert("Invalid username. It must be between 6 to 12 chars long and\nit must not contain any spaces or punctuation characters.");
			f.Un.focus();
			return false;
		}
		if (isFilled(f.Pwd) == false)
		{
			alert("Password field cannot be blank");
			f.Pwd.focus();
			return false;
		}
		if (isValidPwd(f.Pwd.value, 8, 12) == false)
		{
			alert("Invalid password. It must be between 8 to 12 chars long and\nit must not contain any spaces or punctuation characters.");
			f.Pwd.focus();
			return false;
		}
		if (f.Un.value == f.Pwd.value)
		{
			alert("Your password is the same as your username!")
			f.Un.focus();
			return false;
		}
	}
	else if ((f.name == 'NewMemberRegistration') || (f.name == 'MemberUpdateDetails'))
	{
		if (f.name != 'MemberUpdateDetails')
		{
			if (isFilled(f.Username) == false)
			{
				alert("Username field cannot be blank.");
				f.Username.focus();
				return false;
			}
			if (isValidUsername(f.Username.value, 6, 12) == false)
			{
				alert("Username must be between 6 to 12 chars long. It also\nmust not contain any spaces or punctuation characters.");
				f.Username.select();
				return false;
			}
			if (isFilled(f.Password) == false)
			{
				alert("Password field cannot be blank.");
				f.Password.focus();
				return false;
			}
			if (isValidPwd(f.Password.value, 8, 12) == false)
			{
				alert("A password must be the combination of letters and digits, at least 8 characters long.\nIt must not contain any spaces or punctuation characters.");
				f.Password.select();
				return false;
			}
			if (isFilled(f.ConfirmPassword) == false)
			{
				alert("Confirm Password field cannot be blank.");
				f.ConfirmPassword.focus();
				return false;
			}
			if (isValidPwd(f.ConfirmPassword.value, 8, 12) == false)
			{
				alert("A password must be the combination of letters and digits, at least 8 characters long.\nIt must not contain any spaces or punctuation characters.");
				f.ConfirmPassword.select();
				return false;
			}
			if (f.Password.value != f.ConfirmPassword.value)
			{
				alert("Your passwords don't match. Please re-confirm your Password.")
				f.Password.focus();
				return false;
			}
			if (f.Username.value == f.Password.value)
			{
				alert("Your password must be different from your username.")
				f.Username.focus();
				return false;
			}
		}
		if (isFilled(f.Email) == false)
		{
			alert("Email field cannot be blank.");
			f.Email.focus();
			return false;
		}
		if ((isFilled(f.Email) == true) && (isValidEmail(f.Email.value) == false))
		{
			alert("Invalid email address!");
			f.Email.select();
			return false;
  		}
		var index = f.Title.selectedIndex;
		var title = f.Title.options[index];
		if (isFilled(title) == false)
		{
			alert("Please choose a title from the drop-down list.");
			f.Title.focus();
			return false;
		}
		if (isFilled(f.FirstName) == false)
		{
			alert("First Name field cannot be blank");
			f.FirstName.focus();
			return false;
		}
		if (isFilled(f.LastName) == false)
		{
			alert("Last Name field cannot be blank");
			f.LastName.focus();
			return false;
		}
		if (isFilled(f.BusinessName) == false)
		{
			alert("Business Name field cannot be blank");
			f.BusinessName.focus();
			return false;
		}
		if (isFilled(f.StreetAddress1) == false)
		{
			alert("Street Address field cannot be blank.");
			f.StreetAddress1.focus();
			return false;
		}
		if (isFilled(f.Town) == false)
		{
			alert("Town field cannot be blank.");
			f.Town.focus();
			return false;
		}
		if (isFilled(f.County) == false)
		{
			alert("County/State/Province field cannot be blank.");
			f.County.focus();
			return false;
		}
		if (isFilled(f.PostalCode) == false)
		{
			alert("Postcode/Zip code field cannot be blank.");
			f.PostalCode.focus();
			return false;
		}
		var index = f.Country.selectedIndex;
		var country = f.Country.options[index];
		if (isFilled(country) == false)
		{
			alert("Please choose a country from the drop-down list.");
			f.Country.focus();
			return false;
		}
		if (isFilled(f.Telephone) == false)
		{
			alert("Telephone field cannot be blank.");
			f.Telephone.focus();
			return false;
		}
		if ((isFilled(f.Telephone) == true) && (isValidTelFaxNum(f.Telephone.value) == false))
		{
			alert("Invalid Telephone number!");
			f.Telephone.select();
			return false;
		}
		if ((isFilled(f.MobilePhone) == true) && (isValidTelFaxNum(f.MobilePhone.value) == false))
		{
			alert("Invalid Mobile Phone number!");
			f.MobilePhone.select();
			return false;
		}
		if ((isFilled(f.Fax) == true) && (isValidTelFaxNum(f.Fax.value) == false))
		{
			alert("Invalid Fax number!");
			f.Fax.select();
			return false;
		}
	}
	else if (f.name == 'NewUsername')
	{
		if (isFilled(f.Username) == false)
		{
			alert("Username field cannot be blank");
			f.Username.focus();
			return false;
		}
		if (isValidUsername(f.Username.value, 6, 12) == false)
		{
			alert("Invalid username. It must be between 6 to 12 chars long and\nit must not contain any spaces or punctuation characters.");
			f.Username.focus();
			return false;
		}
	}
	else if (f.name == 'AddNewShopStep1')
	{
		var index = f.Dept_Id.selectedIndex;
		var deptId = f.Dept_Id.options[index];
		if (isFilled(deptId) == false)
		{
			alert("Please choose a department from the drop-down list.");
			f.Dept_Id.focus();
			return false;
		}
	}
	else if (f.name == 'AddNewShopStep2')
	{
		if (isFilled(f.VShopName) == false)
		{
			alert("vShop Name field cannot be blank");
			f.VShopName.focus();
			return false;
		}
		if (isFilled(f.Title) == false)
		{
			alert("Title Tag field cannot be blank");
			f.Title.focus();
			return false;
		}
		if (isFilled(f.Description) == false)
		{
			alert("Description Tag field cannot be blank");
			f.Description.focus();
			return false;
		}
		if (isFilled(f.Keywords) == false)
		{
			alert("Keywords Tag field cannot be blank");
			f.Keywords.focus();
			return false;
		}
	}
	else if (f.name == 'AddNewShopStep3')
	{
		if (isFilled(f.Content) == false)
		{
			alert("Homepage field cannot be blank");
			f.Content.focus();
			return false;
		}
	}
	else if (f.name == 'AddNewShopStep4')
	{
		if (isFilled(f.Content) == false)
		{
			alert("About Us field cannot be blank");
			f.Content.focus();
			return false;
		}
	}
	else if (f.name == 'AddNewShopStep5')
	{
		if (isFilled(f.BusinessName) == false)
		{
			alert("Business Name field cannot be blank");
			f.BusinessName.focus();
			return false;
		}
		if (isFilled(f.StreetAddress1) == false)
		{
			alert("Street Address field cannot be blank.");
			f.StreetAddress1.focus();
			return false;
		}
		if (isFilled(f.Town) == false)
		{
			alert("Town field cannot be blank.");
			f.Town.focus();
			return false;
		}
		if (isFilled(f.PostalCode) == false)
		{
			alert("Postcode/Zip code field cannot be blank.");
			f.PostalCode.focus();
			return false;
		}
		if (isFilled(f.Telephone) == false)
		{
			alert("Telephone field cannot be blank.");
			f.Telephone.focus();
			return false;
		}
		if ((isFilled(f.Telephone) == true) && (isValidTelFaxNum(f.Telephone.value) == false))
		{
			alert("Invalid Telephone number!");
			f.Telephone.select();
			return false;
		}
		if ((isFilled(f.MobilePhone) == true) && (isValidTelFaxNum(f.MobilePhone.value) == false))
		{
			alert("Invalid Mobile Phone number!");
			f.MobilePhone.select();
			return false;
		}
		if ((isFilled(f.Fax) == true) && (isValidTelFaxNum(f.Fax.value) == false))
		{
			alert("Invalid Fax number!");
			f.Fax.select();
			return false;
		}
	}
	else if (f.name == "EditShop")
	{
		if (isFilled(f.HomeTitle) == false)
		{
			alert("Homepage Title Tag field cannot be blank");
			f.HomeTitle.focus();
			return false;
		}
		if (isFilled(f.HomeDescription) == false)
		{
			alert("Homepage Description Tag field cannot be blank");
			f.HomeDescription.focus();
			return false;
		}
		if (isFilled(f.HomeKeywords) == false)
		{
			alert("Homepage Keywords Tag field cannot be blank");
			f.HomeKeywords.focus();
			return false;
		}
		if (isFilled(f.HomeContent) == false)
		{
			alert("Homepage content field cannot be blank");
			f.HomeContent.focus();
			return false;
		}
		if (isFilled(f.AboutUsContent) == false)
		{
			alert("About Us content field cannot be blank");
			f.AboutUsContent.focus();
			return false;
		}
		if (isFilled(f.ContactUsContent) == false)
		{
			alert("Contact Us content field cannot be blank");
			f.ContactUsContent.focus();
			return false;
		}
	}
	return true;
}

// Determine whether a form field contains a value
function isFilled(elm) {
	if (elm.value == "" || elm.value == null) {
		return false;
	} else {
		return true;
	}
}

// Validate email address
function isValidEmail(email) {
	invalidChars = " /:,;";
	for (i=0; i<invalidChars.length; i++) {	// does it contain any invalid characters?
		badChar = invalidChars.charAt(i);
		if (email.indexOf(badChar,0) > -1) {
			return false;
		}
	}
	atPos = email.indexOf("@",1)	// there must be one "@" symbol
	if (atPos == -1) {
		return false;
	}
	if (email.indexOf("@",atPos+1) != -1) {	// and only one "@" symbol
		return false;
	}
	periodPos = email.indexOf(".",atPos)
	if (periodPos == -1) {	// and at least one "." after the "@"
		return false;
	}
	if (periodPos+3 > email.length)	{	// must be at least 2 characters after the "."
		return false;
	}
	return true;
}

// Validate telephone/fax number
function isValidTelFaxNum(TelFaxNum)
{
	var pattern = /^(\+\d{1,3} ?)?(\(\d{1,5}\)|\d{1,5}) ?\d{3} ?\d{0,7}( ?(x|xtn|ext|extn|extension)?\.? ?\d{1,5})?$/i
	var isValid = pattern.test(TelFaxNum);
	return isValid;
}

// Validate username
function isValidUsername(Username, lowerNum, upperNum)
{
	var minNumOfChars = lowerNum;
	var maxNumOfChars = upperNum;
	var pattern = new RegExp("^[a-zA-Z0-9]{" + minNumOfChars + "," + maxNumOfChars + "}$"); // Alphanumeric, between lowerNum - upperNum chars in length
	var isMatch = pattern.test(Username);
	if (isMatch == true)
	{
		return true;
	}
	return false;
}

// Validate password
function isValidPwd(Pwd, lowerNum, upperNum)
{
	var minNumOfChars = lowerNum;
	var maxNumOfChars = upperNum;
	var pattern1 = new RegExp("^[a-zA-Z0-9]{" + minNumOfChars + "," + maxNumOfChars + "}$"); // Alphanumeric, between lowerNum - upperNum chars in length
	var isMatch1 = pattern1.test(Pwd);
	if (isMatch1 == true)
	{
		// Must contain at least one digit
		var pattern2 = new RegExp("\\d+");
		var isMatch2 = pattern2.test(Pwd);
		if (isMatch2 == true)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	return false;
}

function isValidURL(URL)
{
	var pattern = /^(http:\/\/www.|www.)[-a-zA-Z0-9]{2,63}\.([a-zA-Z]{2,4}|[a-zA-Z]{2,4}\.[a-zA-Z]{2,4})$/i;
	var isMatch = pattern.test(URL);
	if (isMatch == true)
	{
		return true;
	}
	return false;
}
