var message;
var fieldtofocus;
var passed;
var repeatflag = false;

//  ******************   NEW winery  ***************
// Check for completed New winery
function isApplReady()  {
	if (repeatflag == true)  {
		passed = false;
	}
	passed = true;  
	fieldtofocus = ""   ;
	message ="Please review the following required fields: \n";
	
	/*  not used in New Application
	if (document.application.PreferredCustID_pc.value != "")  {
		var element = document.application.PreferredCustID_pc;
		var result = isPCCard(element);
		if (result)  {
			passed = false;
			if (fieldtofocus == "")  {fieldtofocus = document.application.PreferredCustID_pc};
		}
	}
	*/
	 //person is subscribing 
	if (document.winery.subscribe[0].checked == true) { 
	
	if (document.winery.FirstName.value == "") {
		message += "- - First Name \n"; 
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.FirstName};
	}
	else {
		var element = document.winery.FirstName;
		var result = isAllLetters(element);
		if (result)  {
			message += "- - First Name must only contain letters, \n     and no spaces before, after or within name. \n";
			passed = false;
			if (fieldtofocus == "")  {fieldtofocus = document.winery.FirstName};
		}
	}
	
	if (document.winery.CustName.value.length < 2)  {
		message += "- - Last Name less than 2 characters \n"; 
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.CustName};
	}
	else {
		var element = document.winery.CustName;
		var result = isAllLetters(element);
		if (result)  {
			message += "- - Last Name must only contain letters \n     and no spaces before, after or within name \n     Please omit any apostrophies in name. \n";
			passed = false;
			if (fieldtofocus == "")  {fieldtofocus = document.winery.CustName};
		}
	}
					
    if (document.winery.Addr1.value == "") {
    	message += "- - Address \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.Addr1};
    }
	
    if (document.winery.City.value == "") {
    	message += "- - City \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.City};
	}
		
	if (document.winery.PostalCode.value.length < 5) {
    	message += "- - Zip needs at least 5 characters \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.PostalCode};
	}
	/*
	//  if a newsletter is selected but the email address is empty.
	if (document.winery.WineNews_pc[0].checked == true || document.winery.PYONews_pc[0].checked == true)  {
		if (document.winery.Email.value == "")  {
		message += "- - Enter an Email address to receive Email newsletters \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.Email};
		}
	}
	*/
	if (document.winery.Email.value == "")  {
		message += "- - Email Address \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.Email};
	}
	else {
		var element = document.winery.Email;
		var result = isEmail(element);
		if (result)  {
			passed = false;
			if (fieldtofocus == "")  {fieldtofocus = document.winery.PostalCode};
		}
	}
	
	/*   revised 07/13/2004   	
	var element = document.winery.Phone;
	var result = isPhone(element);
	if (result)  {
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.Phone};
	}
	*/
	
	if (document.winery.Phone1.value == "")  {
		message += "- - Phone area code is missing \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.Phone1};
	}
	
	if (document.winery.Phone2.value == "")  {
		message += "- - Phone prefix is missing \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.Phone2};
	}
	
	if (document.winery.Phone3.value == "")  {
		message += "- - Phone number is missing \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.Phone3};
	}
	
	var element = document.winery.Birthday1;
	if (element.value == "")  {
		message += "- - Day of Birth \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.Birthday1};
	}
	else  {
		var result = isBirthDay(element);	
		if (result) {
			passed = false;
			if (fieldtofocus == "")  {fieldtofocus = document.winery.Birthday1};
		}
	}
	
	var element = document.winery.Birthday2;
	if (element.value == "")  {
		message += "- - Month of Birth \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.Birthday2};
	}
	else  {
		var result = isBirthDay(element);	
		if (result) {
			passed = false;
			if (fieldtofocus == "")  {fieldtofocus = document.winery.Birthday2};
		}
	}
	
	var element = document.winery.Birthday3;
	if (element.value == "")  {
		message += "- - Year of Birth \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.Birthday3};
	}
	else  {
		var result = isBirthDay(element);	
		if (result) {
			passed = false;
			if (fieldtofocus == "")  {fieldtofocus = document.winery.Birthday3};
		}
	}
	
	if (document.winery.Birthday1.value == "" || document.winery.Birthday2.value == "" || document.winery.Birthday3.value == "") {
		message += "* * Birthdate required to comply with not marketing to minors \n";
	}
	
	var skipGender = false;
	if (document.winery.Gender_pc[0].checked == false && document.winery.Gender_pc[1].checked == false) {
    	message += "- - Select a gender \n";
		passed = false;
		// skipGender = true;
	}
		
	/* To prevent multiple clicks and record creation, force a flag
	to be true. It will only be reset upon the page being reloaded.
	Thus, it will hold off multiple clicks until the handler page is processed.  */
	if (passed == true)  {
		if (repeatflag == false) {
			document.winery.submit();
			repeatflag = true;
		}
	}
		//alert(repeatflag);	
	if (passed == false)  {
		alert(message);
		fieldtofocus.focus();
		// if (skipGender == false)  {;
		//	fieldtofocus.focus();
		// }
	}
	}	


	 //person is unsubscribing 
	if (document.winery.subscribe[1].checked == true) { 
	
	if (document.winery.Email.value == "")  {
		message += "- - Email Address \n";
		passed = false;
		if (fieldtofocus == "")  {fieldtofocus = document.winery.Email};
	}
	else {
		var element = document.winery.Email;
		var result = isEmail(element);
		if (result)  {
			passed = false;
			if (fieldtofocus == "")  {fieldtofocus = document.winery.PostalCode};
		}
	}
	
		/* To prevent multiple clicks and record creation, force a flag
	to be true. It will only be reset upon the page being reloaded.
	Thus, it will hold off multiple clicks until the handler page is processed.  */
	if (passed == true)  {
		if (repeatflag == false) {
			document.winery.submit();
			repeatflag = true;
		}
	}
		//alert(repeatflag);	
	if (passed == false)  {
		alert(message);
		fieldtofocus.focus();
		// if (skipGender == false)  {;
		//	fieldtofocus.focus();
		// }
	}
	}
}


//************  SUB FUNCTION MODULES  ********************

//  Check for correct format in Birthday entry
function isBirthDay(element)  {
	var oneChar, valString, charA, lastFour;
	var inputStr = element.value;
		//alert("Birthday: " + inputStr);
	valString = "0123456789/";
		// Check for all the correct characters
	for (var i = 0;  i < inputStr.length;  i++)  {
    	oneChar = inputStr.charAt(i);
		
		charA = valString.indexOf(oneChar);
			//alert("charA = " + oneChar + ", " + charA);
      	if (charA == -1)  {
			message += "- - Date of birth should only have numbers \n";
			return true;
		}
	}

		// Check for last four digits
	lastFour = inputStr.substring(inputStr.length-4, inputStr.length+1);
		//alert("lastFour = " + lastFour);
	charA = lastFour.indexOf("/");
	if (charA == -1)  {
		return false;
	}
	else {
		message += "- - Date of birth 'year' not correctly formatted \n";
		return true;
	}
	
	return false
}	


// Do some validation on the Email side of things
function isEmail(element)  {
	var inputStr = element.value;
	if (inputStr.length < 9)  {
		message += "- - Email should be at least 9 characters \n";
		return true;
	}	
	var charA = inputStr.indexOf("@");
	if (charA == -1)  {
		message += "- - Email did not find the @ character \n";
		return true;
	}
	if (charA < 2 )  {
		message += "- - Email expected at least 2 characters before the @ character \n";
		return true;
	}
	var charP = inputStr.lastIndexOf(".");
	if (charP == -1)  {
		message += "- - Email expected to find the . character \n";
		return true;
	}
	if (charP < charA + 3)  {
		message += "- - Email should have at least 2 characters between the @ and . characters \n";
		return true;
	}
	if (charP > inputStr.length - 3)  {
		message += "- - Email should have at least 2 characters after the . character \n";
		return true;
	
	}
	
	
	return false;
}

// Checks to see if the phone is somewhat correct
function isPhone(element)  {
	var oneChar;
	var inputStr = element.value;
		//alert ("phonelength: " + inputStr.length);
	if (inputStr.length < 12)  {
		message += "- - Phone should have 10 digits and two dashes \n";
		return true;	
	}
	if (inputStr.charAt(3) != "-" || inputStr.charAt(7) != "-")  {
		message += "- - Phone number not formatted correctly \n";
		return true;
	}
	for (var i = 0; i < inputStr.length; i++)  {
		oneChar = inputStr.charAt(i);
		if (oneChar < "0" || oneChar > "9") {
			if (oneChar != "(" && oneChar != ")" && oneChar != " " && oneChar != "-")  {
				message += "- - Phone should have proper characters \n";
				return true;
			}
		}
	}
	return false;
}

// Checks to see if the text string is only numbers
function isNumber(element)  {
	var oneChar;
	var inputStr = element.value;
	for (var i = 0; i < inputStr.length; i++)  {
		oneChar = inputStr.charAt(i);
		if (oneChar < "0" || oneChar > "9") {
			return true;
		}
	}
	return false;
}

// Checks to see if the text string is only letters
function isAllLetters(element)  {
	var oneChar, valString, charA, letterOk;
	var inputStr = element.value;
	valString = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-";
	for (var i = 0;  i < inputStr.length;  i++)  {
    	oneChar = inputStr.charAt(i);
		
		letterOk = false
    	for (var j = 0;  j < valString.length;  j++)  {
			charA = valString.indexOf(oneChar);
      		if (charA != -1)  {
        		letterOk = true;
				break;
			}
  		}
			//alert(oneChar + "  " + letterOk);
		if (letterOk == false)  {
			return true;
		}
	}
	return false
}