String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };

// Variable to temporarily store the submit button value. This is necessary so that
// we can restore the submit button value correctly if any errors occur during PCI tokenization
var submitButtonValue = "";
var submitButton;
var radio = false;

// Error callback function for PCI tokenization. This gets called by PCI tokenization whenever the
// user submits an invalid credit card number
DisplayTokenError = function() {
	errorField=document.getElementById('wcgJSODError');
	errorField.style.display = 'block';

	// Reset the submit button
	submitButton.disabled = '';
	submitButton.value = submitButtonValue;
	submitButton = "";
}

// return true if the browser is IE version 6 or earlier.
// a bug in IE shows the version number as 4 in versions 4, 5, and 6
var isObsoleteIe = false;
var browser=navigator.appName;
var b_version=navigator.appVersion;
var scriptVersion=parseFloat(b_version);
	
if(scriptVersion <= 4 && browser == 'Microsoft Internet Explorer') {
	
	if (b_version.split('MSIE')) {
		var IEversion= 0;
		IEversion = parseFloat(b_version.split('MSIE')[1]);
		if (IEversion < 7) {
			isObsoleteIe = true;
		}
	}	
} 
	

$(function(){
	for(var j=0; j<document.forms.length;j++){
	if((window.document.domain.match("quicken") == "quicken") && (window.document.URL.match("confirm_payment_info") != "confirm_payment_info") && (window.document.URL.match("account") != "account")){
	if(document.forms[j].name == 'checkout_form'){
	var radioObj = document.forms[j].elements['wcgUserType'];
	if(radioObj){
		var radioLength = radioObj.length;
		for(var i = 0; i < radioLength; i++) {
			if(radioObj[i].checked) {
			radio = true;
			}
	}
	}
	}
	}
	}
	
	

	// Check all required INPUT fields and set the field type and state attributes
	var inputFieldsArray = $(":input:not(:hidden)");
	for(var i=0; i<inputFieldsArray.size(); i++){

		if ($(inputFieldsArray[i]).attr("class") != null) {
			var hintTrue = $(inputFieldsArray[i]).attr("class").split(' ').slice(-1);
		}

		if (hintTrue == 'wcgHintTrue') {
			$(inputFieldsArray[i]).attr("hint", "true");
		}

		if ($(inputFieldsArray[i]).attr("id") == "sameAsBillingCheck"){
			$(inputFieldsArray[i]).attr("wcgOptionalBlockId", "wcgShippingAddress");
		}	

		if ($(inputFieldsArray[i]).attr("id") == "accountInfo"){
			$(inputFieldsArray[i]).attr("wcgOptionalBlockId", "wcgAccountInfo");
		}
		
		if ($(inputFieldsArray[i]).attr("id") == "accountInfoChkBox"){
			$(inputFieldsArray[i]).attr("ttdOptionalBlockId", "wcgAccountInfo");
		}
		//if ($(inputFieldsArray[i]).attr("id") == "accountInfoRadioBox"){
		//	$(inputFieldsArray[i]).attr("ttdOptionalBlockId", "wcgAccountInfo");
		//}

		var trClass = $(inputFieldsArray[i]).parents("tr:first").attr("class");

		if (trClass == "wcgRequired") {
				if ($(inputFieldsArray[i]).attr("class") != 'wcgFieldNotRequired')
				 {
				$(inputFieldsArray[i]).attr("wcgFieldType", "required");
				if ($(inputFieldsArray[i]).attr("value") == null) 
				{
						$(inputFieldsArray[i]).attr("wcgFieldState", "empty");
				}
				else {
					if ($(inputFieldsArray[i]).attr("value").trim().length == 0) 
					{
						$(inputFieldsArray[i]).attr("wcgFieldState", "empty");
					}
					else {
						$(inputFieldsArray[i]).attr("wcgFieldState", "notEmpty");
					}
				}
				if((window.document.domain.match("quicken") == "quicken")){
				if(!radio){
				$(inputFieldsArray[i]).attr("wcgFieldState", "empty");
				}
				else{
				$(inputFieldsArray[i]).attr("wcgFieldState", "notEmpty");
				}
				}
			}
			else {
				$(inputFieldsArray[i]).attr("wcgFieldType", "notRequired");
				$(inputFieldsArray[i]).attr("wcgFieldState", "unknown");
			}
		}
		else {
			$(inputFieldsArray[i]).attr("wcgFieldType", "notRequired");
			$(inputFieldsArray[i]).attr("wcgFieldState", "unknown");
		}
	}

	// JBoss: Add custom attributes to span tags after the DOM has loaded
	var spansArray = $("span");
	for(var i=0; i<spansArray.size(); i++){

		if ($(spansArray[i]).attr("id") == "sameAsBillingSpan"){
			$(spansArray[i]).attr("wcgOptionalBlockId", "wcgShippingAddress");
		}

		if ($(spansArray[i]).attr("id") == "saveMyInfoSpan"){
			$(spansArray[i]).attr("wcgOptionalBlockId", "wcgAccountInfo");
		}
	}

	// Verify if wcgOptionalBlock exists
	// If exists, set the field type and state attributes for the input fields within the block
	var optionalBlockCheckboxArray = $(":checkbox");
	for(var oBlock=0; oBlock < optionalBlockCheckboxArray.size(); oBlock++){
		if ($(optionalBlockCheckboxArray[oBlock]).attr("class") == "wcgOptionalBlock"){
			var optionalBlockId = $(optionalBlockCheckboxArray[oBlock]).attr("wcgOptionalBlockId");
			var optionalInputFields = $("div#" + optionalBlockId + " :input:not(:hidden)");
			for(var j=0; j<optionalInputFields.size(); j++){
				if ($(optionalInputFields[j]).parents("tr:first").attr("class") == "wcgRequired"){
					$(optionalInputFields[j]).attr("wcgFieldState", "hidden");
				}else{
					$(optionalInputFields[j]).attr("wcgFieldState", "unknown");
				}
			}
		}
	}
	
	$(".wcgFormContainer").css("display", "none");

	$("#firstwcgFormContainer").slideDown(1500);

	$(".wcgSectionTitle").hover
	(
		function(){
			$(this).addClass("wcgSectionTitleHover");
		},
		function(){
			$(this).removeClass("wcgSectionTitleHover");
		}
	);

	$(".wcgLinkBox").hover
	(
		function(){
			$(this).addClass("wcgLinkBoxHover");
		},
		function(){
			$(this).removeClass("wcgLinkBoxHover");
		}
	);

	// Hover for the submit button
	$(".wcgButton").hover
	(
		function(){
			$(this).addClass("wcgHover");
		},
		function(){
			$(this).removeClass("wcgHover");
		}
	);

	$(".wcgButtonMedium").hover
	(
		function(){
			$(this).addClass("wcgHoverMedium");
		},
		function(){
			$(this).removeClass("wcgHoverMedium");
		}
	);

	$(":input").focus
	(
		function(){
			if (!isObsoleteIe) {
				$(this).parents("tr:first").removeClass("wcgErrorRow");
			}
		}
	);

	// Credit card validation
	$("#wcgCcType").change
	(
		function() {
			var ccField = $("#WcgCc");
			var ccNumber = "";
			if (ccField) {
				if ($(ccField).attr("value")) {
					ccNumber = $(ccField).attr("value").trim();
				}
				}
			ccNumber=ccNumber.replace(/[^X\d]/g, "");
			if (ccNumber.length != 0){
				$(ccField).trigger("blur");
			}
		}
	);
	
	$("#acctName").focus
	(
			function() {
				$(this).parents("tr:first").removeClass("wcgErrorRow");
			}
	);
	
	$("#acctNum").focus
	(
			function() {
				$(this).parents("tr:first").removeClass("wcgErrorRow");
			}
	);
	
	$("#confAcctNum").focus
	(
			function() {
				$(this).parents("tr:first").removeClass("wcgErrorRow");
			}
	);
	
	$("#routingNum").focus
	(
			function() {
				$(this).parents("tr:first").removeClass("wcgErrorRow");
			}
	);
	
	$("#bankName").focus
	(
			function() {
				$("#BankNameRow").removeClass("wcgErrorRow");
			}
	);
	


	$("#WcgCc").blur
	(
		function() {

			if ($(this).attr("value") != null) {
				var ccNumber = $(this).attr("value").trim();
				ccNumber=ccNumber.replace(/[^X\d]/g, "");
			}
			else {
				var ccNumber = ""; // IE
			}

			var ccTypeField = $("#wcgCcType");
			var ccType = $(ccTypeField).attr("value");

			var filter = /^X+(\d{4})$/;
			if (!filter.test(ccNumber)) {
				if(creditCardValidation(ccNumber, ccType)) {
					if (ccType == "American Express") {
						ccNumber=ccNumber.replace(/([X\d]{4})([X\d]{6})([X\d]{5})/, "$1 $2 $3");
					} else {
						ccNumber=ccNumber.replace(/([X\d]{4})([X\d]{4})([X\d]{4})([X\d]{4})/, "$1 $2 $3 $4");
					}
					$(ccTypeField).parents("tr:first").removeClass("wcgErrorRow");
					$(this).parents("tr:first").removeClass("wcgErrorRow");
					$(".wcgButtonMediumCCNJquery").attr("disabled","");

					$(this).attr("value", ccNumber);
				}
				else {
					$(ccTypeField).parents("tr:first").addClass("wcgErrorRow");
					$(this).parents("tr:first").addClass("wcgErrorRow");
					$(".wcgButtonMediumCCNJquery").attr("disabled","disabled");
				}
			}
			else {
				var last4DigitsField = $("#wcgLast4Digits");
				var last4Digits = $(last4DigitsField).attr("value");
				var enteredLast4Digits = ccNumber.substring(ccNumber.length - 4);

				if(enteredLast4Digits != last4Digits) {
					$(ccTypeField).parents("tr:first").addClass("wcgErrorRow");
					$(this).parents("tr:first").addClass("wcgErrorRow");
					$(".wcgButtonMediumCCNJquery").attr("disabled","disabled");
				}
				else if((ccNumber.length == 13) || (ccNumber.length == 15) || (ccNumber.length == 16)) {
					ccNumber=ccNumber.replace(/([X\d]{4})([X\d]{4})([X\d]{4})([X\d]{4})/, "$1 $2 $3 $4");
					$(ccTypeField).parents("tr:first").removeClass("wcgErrorRow");
					$(this).parents("tr:first").removeClass("wcgErrorRow");
					$(".wcgButtonMediumCCNJquery").attr("disabled","");

					$(this).attr("value", ccNumber);
				}
				else if(ccNumber.length != 0) {
					$(ccTypeField).parents("tr:first").addClass("wcgErrorRow");
					$(this).parents("tr:first").addClass("wcgErrorRow");
					$(".wcgButtonMediumCCNJquery").attr("disabled","disabled");
				}
			}
		}
	);
	/* Changes for Work Request # 304 starts here
	    * Issue:Creating an account/ Updating and account  accepts In-Valid Email ID liketest@@intuit.com
	    * Solution: changes made to handle more than 1' @' symbol and accept only valid email ids. Junit test case updated below
	    * 
	    * 
	    */
$("#wcgEmailId").blur
(
	function(){
	var x = this.value.trim();
	var filter = /^([a-zA-Z0-9_\.\-\'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(x) || x == "") // Passed or empty
	{
		$(this).parents("tr").removeClass("wcgErrorRow");
	}
	else // Failed
	{
		$(this).attr("value", x);
		$(this).parents("tr").addClass("wcgErrorRow");
	}
	
	}
);
	/*change ends here */
	$("#wcgPhoneNumber").blur
	(
		function() {
			if ($(this).attr("value") == null) { // IE
				$(this).parents("tr:first").addClass("wcgErrorRow");
			}
			else {
				var countrySelect=document.getElementById("countrySelect");
				var selectCountry;
				var CANADA = 'ca';
				var USA = 'us';
				

				if(countrySelect){
					for (var i=0; i<countrySelect.options.length; i++) {
						if (countrySelect.options[i].selected==true) {
							selectCountry = countrySelect.options[i].value;
							break;
						}
					}
				}else{
					selectCountry='us'; 
				}
				
				var phone = $(this).attr("value").trim();
				phone=phone.replace(/[^\d]/g, "");
				if(selectCountry == CANADA || selectCountry == USA) {
					if(phone.length == 10){
						phone=phone.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3");
						$(this).parents("tr:first").removeClass("wcgErrorRow");
					}else{
						$(this).parents("tr:first").addClass("wcgErrorRow");
					}
					$(this).attr("value", phone);
				}
				else {
					if(phone.length > 15){
						$(this).parents("tr:first").addClass("wcgErrorRow");
					}
				}
			}
		}
	);

	$("#qbaPhoneNumber").blur
	(
		function() {
			if ($(this).attr("value") == null) { // IE
				$(this).parents("tr:first").addClass("wcgErrorRow");
			}
			var phone = $(this).attr("value").trim();
			var fieldType = $(this).attr("wcgfieldtype").trim();
			phone=phone.replace(/[^\d]/g, "");
			if(phone.length == 10){
				phone=phone.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3");
				$(this).parents("tr:first").removeClass("wcgErrorRow");
			}else if(fieldType == "wcgRequired"){
				$(this).parents("tr:first").addClass("wcgErrorRow");
			}

			$(this).attr("value", phone);
		}

	);

	// E-mail validation
	$("input[uitype='email']").blur
	(
		function() {
			var x = this.value.trim();
			var filter = /^([a-zA-Z0-9_\.\-\'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if (filter.test(x) || x == "") // Passed or empty
			{
				$(this).parents("tr").removeClass("wcgErrorRow");
			}
			else // Failed
			{
				$(this).attr("value", x);
				$(this).parents("tr").addClass("wcgErrorRow");
			}
		}
	);

	$("span[wcgOptionalBlockId]").click
	(
		function(){
			var optionalBlockId = $(this).attr("wcgOptionalBlockId");
			var optionalBlockChkbox = $("input[wcgOptionalBlockId='"+optionalBlockId+"']");
			$(optionalBlockChkbox).trigger("click");
		}
	);

	$(":checkbox").click
	(
		function(){
			if ($(this).attr("class") == "wcgOptionalBlock"){
				var toggleDisplayBlock = "";
				var optionalBlockId = $(this).attr("wcgOptionalBlockId");
				var optionalBlockDiv = $("div#" + optionalBlockId);
				var optionalBlockDisplayStatus = $(optionalBlockDiv).css("display");
				var optionalInputFields = $("div#" + optionalBlockId + " :input:not(:hidden)");
				for(var i=0; i<optionalInputFields.size(); i++){
					if ($(optionalInputFields[i]).parents("tr:first").attr("class")!= null){
						if ($(optionalInputFields[i]).parents("tr:first").attr("class").match("wcgRequired") == "wcgRequired"){
							if(optionalBlockDisplayStatus == "none"){
								toggleDisplayBlock = "block";
								if($(optionalInputFields[i]).attr("value") != null)
								 {
									if($(optionalInputFields[i]).attr("value").trim().length == 0)
                                    {
										$(optionalInputFields[i]).attr("wcgFieldState", "empty");
									}
									else
									{
										$(optionalInputFields[i]).attr("wcgFieldState", "notEmpty");
									}
								}
							}else{
								toggleDisplayBlock = "none";
								$(optionalInputFields[i]).attr("wcgFieldState", "hidden");
								$(optionalInputFields[i]).parents("tr:first").removeClass("wcgErrorRow");
							}
						}
					}
				}
	    		$(optionalBlockDiv).css("display", toggleDisplayBlock);
			}
		}
	);	
	
	// Check if field is required
	// This should be set at the end of input field processing pipeline
	$(":input").blur
	(
		function(){
			if (!isObsoleteIe) {
				if ($(this).attr("wcgFieldType") == "required"){
					if($(this).attr("value") == null){ // IE
						$(this).attr("wcgFieldState", "empty");
						$(this).parents("tr:first").addClass("wcgErrorRow");
					}
					else if($(this).attr("value").trim().length == 0){
						$(this).attr("wcgFieldState", "empty");
						$(this).parents("tr:first").addClass("wcgErrorRow");
					}else if($(this).attr("value").trim().length != 0){
						
						// Rajesh Kolla
						if($(this).attr("name") != 'CCNumber'){
							$(this).parents("tr:first").removeClass("wcgErrorRow");							
						}
						$(this).attr("wcgFieldState", "notEmpty");
					}
				}else{
					$(this).attr("wcgFieldState", "unknown");
				}
			}
		}
	);
	
	$("#wcgQknUser").blur(
		function(){
		var radioObj = null;
		if(document.forms['checkout_form'].elements['wcgUserType'] != 'undefined'){
		radioObj = document.forms['checkout_form'].elements['wcgUserType'];
		}
		var radioLength = radioObj.length;
		for(var i = 0; i < radioLength; i++) {
			if(radioObj[i].checked) {
			radio = true;
			}
		}
		if(!radio){
			$("#wcgUserTypeLabel").attr("wcgFieldState", "empty");
			$("#wcgUserTypeLabel").parents("tr:first").addClass("wcgErrorRow");
		}
		else{
			$("#wcgUserTypeLabel").attr("wcgFieldState", "notEmpty");
		}
		}
	);

	$("#wcgQknUser1").blur(
		function(){
		var radioObj = null;
		if(document.forms['checkout_form'].elements['wcgUserType'] != 'undefined'){
		radioObj = document.forms['checkout_form'].elements['wcgUserType'];
		}
		var radioLength = radioObj.length;
		for(var i = 0; i < radioLength; i++) {
			if(radioObj[i].checked) {
			radio = true;
			}
		}
		if(!radio){
			$("#wcgUserTypeLabel").attr("wcgFieldState", "empty");
			$("#wcgUserTypeLabel").parents("tr:first").addClass("wcgErrorRow");
		}
		else{
			$("#wcgUserTypeLabel").attr("wcgFieldState", "notEmpty");
		}
		}
	);
	
	$("select").blur
	(
		function(){
			if ($(this).attr("wcgFieldType") == "required"){

				if ($(this).attr("value") == null){ // IE
					var value = "";
				}
				else {
					var value = $(this).attr("value").trim();
				}

				// Default values are 00 and 0000 resp which should be flagged as empty
				if($(this).attr("id") == 'WcgExpMonth' || $(this).attr("id") == 'WcgExpYear'){
					if(value.length != 0 && value.replace(/0/g, "").length == 0)
					{
						value = "";
					}
				}
				if(value.length == 0){
					$(this).attr("wcgFieldState", "empty");
					$(this).parents("tr:first").addClass("wcgErrorRow");
				}else if(value.length != 0){
					$(this).attr("wcgFieldState", "notEmpty");
				}
			}else{
				$(this).attr("wcgFieldState", "unknown");
			}
		}
	);

	// Check for required Fields
	//Work request 304 changes made to the if loop to handle Quicken Account pages also
	$(".wcgButtonMediumJquery, .buttonWide").click
	(
		function()
		{
			
			for(var j=0; j <document.forms.length;j++){
				
				if((window.document.domain.match("quicken") == "quicken") && (window.document.URL.match("confirm_payment_info") != "confirm_payment_info")&& (window.document.URL.match("account") != "account")){
						if(document.forms[j].name == 'checkout_form'){
							var radioObj = null;
							if(document.forms['checkout_form'].elements['wcgUserType'] != 'undefined'){
								radioObj = document.forms['checkout_form'].elements['wcgUserType'];
							}
							var radioLength = radioObj.length;
							for(var i = 0; i < radioLength; i++) {
								if(radioObj[i].checked) {
									radio = true;
								}
							}
						}
				}
			}
/* Changes for work order # 304 starts here
 * To handle empty/null values in Quicken Account page and throw a JS validation message
 *  Validation works only for Quicken Accounts page. 
 * Else part works for quickbooks and turbotax and other quicken pages
 * 
 */
			if((window.document.domain.match("quicken") == "quicken") && (window.document.URL.match("account") == "account")&& (window.document.URL.match("confirm_payment_info") != "confirm_payment_info"))
			{
				
				var inputFieldsArray = $(":input:not(:hidden)");
				
				var requiredButEmptyCount = 0;
				  for(var i = 0; i < inputFieldsArray.size(); i++)
					{
				 	   var trClass = $(inputFieldsArray[i]).parents("tr:first").attr("class");
					 
		              
					     if (($(inputFieldsArray[i]).attr("value") == undefined)||($(inputFieldsArray[i]).attr("value") == null)||($(inputFieldsArray[i]).attr("value").trim().length == 0) )
					     
					      {
					
						  if (($(inputFieldsArray[i]).attr("name")!= undefined) ||($(inputFieldsArray[i]).attr("name")!= null))
						  {
						

							if (trClass == "wcgRequired wcgErrorRow")
							{
								if ($(inputFieldsArray[i]).attr("class") != 'wcgFieldNotRequired')
									{							
										$(inputFieldsArray[i]).attr("wcgFieldType", "required");
										$(inputFieldsArray[i]).attr("wcgFieldState", "empty");
										$(inputFieldsArray[i]).parents("tr:first").addClass("wcgErrorRow");
										requiredButEmptyCount++;
									}
								else
									{					
										$(inputFieldsArray[i]).attr("wcgFieldState", "notEmpty");
									}
							}
							else
							{
								$(inputFieldsArray[i]).attr("wcgFieldType", "notRequired");
								$(inputFieldsArray[i]).attr("wcgFieldState", "unknown");
							}	 			
						  }
						  else
						  {
							$(inputFieldsArray[i]).attr("wcgFieldType", "notRequired");
						 	$(inputFieldsArray[i]).attr("wcgFieldState", "unknown");
						  }			      
					     }
					}				 
			}
   /*Changes end here */			
	else{
		 
	
		var requiredButEmpty = $(":input[wcgFieldState='empty']");

			var requiredButEmptyCount = 0;
			var i = 0;
			for(i=0; i<requiredButEmpty.size(); i++){

				if ($(requiredButEmpty[i]).attr("value") != null ) {
					if ($(requiredButEmpty[i]).attr("value").trim().length == 0 ) {
						$(requiredButEmpty[i]).parents("tr:first").addClass("wcgErrorRow");
						requiredButEmptyCount++;		
					}
					else {
						$(requiredButEmpty[i]).parents("tr:first").removeClass("wcgErrorRow");				
					}
				}
			}
			if((window.document.domain.match("quicken") == "quicken") && (window.document.URL.match("checkout") == "checkout")){
			if(!radio){
			$("#wcgUserTypeLabel").parents("tr:first").addClass("wcgErrorRow");
			$(this).attr("wcgFieldState", "empty");
			requiredButEmptyCount++;
			}else{
			$(this).attr("wcgFieldState", "notEmpty");
			}
			}
	}
			if (requiredButEmptyCount > 0)
			{
				
				$(".wcgError2").fadeIn(1500);

				if (requiredButEmptyCount < 2)
				{
					$(".wcgError2 span").html(requiredButEmptyCount + ' field. It has been highlighted below.');
				}
				else
				{
					$(".wcgError2 span").html(requiredButEmptyCount + ' fields. They have been highlighted below.');
				}

				window.scrollTo(0, 0);
				return false;
			}

			else
			{
				this.disabled = 'true';
				this.value = 'Please wait';
				var jqForm = $(this).parents("form");
				jqForm[0].submit();
				return true;
			}


		}
	);

	// Check for required Fields 	
	$(".wcgButtonMediumCCNJquery").click
	(
		function()
		{
			
			var requiredButEmpty = $(":input[wcgFieldState='empty']");	
			var requiredButEmptyCount = 0;
			for(var i=0; i<requiredButEmpty.size(); i++) {
				if ($(requiredButEmpty[i]).attr("value") != null) {
					if ($(requiredButEmpty[i]).attr("value").trim().length == 0 ) {
						$(requiredButEmpty[i]).parents("tr:first").addClass("wcgErrorRow");
						requiredButEmptyCount++;
					}
					else {
						$(requiredButEmpty[i]).parents("tr:first").removeClass("wcgErrorRow");
					}
				}
			}

			
			/* EFT validations added | 12-17-08 | damon_collins@intuit.com */
		     
		     
		     if (document.getElementById("eftTable") && document.getElementById("eftTable").style.visibility == "visible") {
		     
		     	//Account number must only contain digits
		     	var acct = $("#acctNum").attr("value").trim();
				var checkNuma = "0123456789";
				var allValida = true;
				var allNuma = "";
				var validationSuccess = true;
				
				for (ia = 0;  ia < acct.length;  ia++)
				{
					ch = acct.charAt(ia);
					for (ja = 0;  ja < checkNuma.length;  ja++)
						if (ch == checkNuma.charAt(ja))
							break;
						if (ja == checkNuma.length)
					{
						allValida = false;
						break;
					}
					
					if (ch != ",")
						allNuma += ch;
				}
				
				if (!allValida)
				{
					$("#acctNumRow").addClass("wcgErrorRow");
					document.getElementById("acctErr").innerHTML="Account number must only contain digits.";
					return (false);
				}
		     	
		     	
				//Routing number must be at least 9 digits
				var eftRouting = $("#routingNum").attr("value").trim();
				
				if (eftRouting.length <= 8) {
					$("#eftRtNum").addClass("wcgErrorRow");
					document.getElementById("rtErr").innerHTML="Routing number must be 9 digits.";
					return false;
				}
				
				//Routing number must only contain digits
				var checkNum = "0123456789";
				var allValid = true;
				var allNum = "";
				
				for (ia = 0;  ia < eftRouting.length;  ia++)
				{
					ch = eftRouting.charAt(ia);
					for (ja = 0;  ja < checkNum.length;  ja++)
						if (ch == checkNum.charAt(ja))
							break;
						if (ja == checkNum.length)
					{
						allValid = false;
						break;
					}
					
					if (ch != ",")
						allNum += ch;
				}
					
				if (!allValid)
				{
					$("#eftRtNum").addClass("wcgErrorRow");
					document.getElementById("rtErr").innerHTML="Routing number must only contain digits.";
					return (false);
				}
				
				//Routing number Weight = Multiple of 10
				var nb = 0;
				for (ib = 0; ib < eftRouting.length; ib += 3) {
				  nb += parseInt(eftRouting.charAt(ib),     10) * 3
				    +  parseInt(eftRouting.charAt(ib + 1), 10) * 7
				    +  parseInt(eftRouting.charAt(ib + 2), 10);
				}
				
				if (nb == 0 || nb % 10 != 0) {
					$("#eftRtNum").addClass("wcgErrorRow");
					document.getElementById("rtErr").innerHTML="Routing number is invalid.";
					return false;
				}
				
				//Account number = retype account number check
				var acct = $("#acctNum").attr("value");
				var cAcct = $("#confAcctNum").attr("value");
				
				if (acct != cAcct) {
					$("#acctNumRow").addClass("wcgErrorRow");
					$("#cAcctNumRow").addClass("wcgErrorRow");
					document.getElementById("acctErr").innerHTML="Account number does not match verification field.";
					return false;
				}
				
				var acctName = $("#acctName").attr("value").trim();
				if (acctName.length <= 0){
					$("#AcctNameRow").addClass("wcgErrorRow");
					document.getElementById("accNameErr").innerHTML="Account Name cannot be empty.";
					return (false);
				}
				
				if (acctName.length > 50){
					$("#AcctNameRow").addClass("wcgErrorRow");
					document.getElementById("accNameErr").innerHTML="Account Name cannot be greater than 50 chars.";
					return (false);
				}
				
				var baName = $("#bankName").attr("value").trim();
				if (baName.length <= 0){
					$("#BankNameRow").addClass("wcgErrorRow");
					document.getElementById("bankErr").innerHTML="Bank Name cannot be empty.";
					return (false);
				}
				
				if (baName.length > 50){
					$("#BankNameRow").addClass("wcgErrorRow");
					document.getElementById("bankErr").innerHTML="Bank Name cannot be greater than 50 chars.";
					return (false);
				}
				
				if (requiredButEmptyCount > 0) {
					$(".wcgError2").fadeIn(1500);
	
					if (requiredButEmptyCount < 2) {
						$(".wcgError2 span").html(requiredButEmptyCount + ' field. It has been highlighted below.');
					}
					else {
						$(".wcgError2 span").html(requiredButEmptyCount + ' fields. They have been highlighted below.');
					}
	
					window.scrollTo(0, 0);
					return false;
				}
				else if(checkFailed) {
					this.disabled = '';
					return false;
				}
				
				else
				{
				
					submitButtonValue = this.value;
					submitButton = this;
	
					this.disabled = 'true';
					this.value = 'Please wait';
					
					var jqForm = $(this).parents("form");
					jqForm[0].submit();
					return true;
						
				}
			}
			else
			{
			
			// Empty check for Exp Month and Year
			var expMonthField = $("#WcgExpMonth");
			var expYearField = $("#WcgExpYear");

			if((expMonthField.is("select") && expMonthField.attr("value").trim().replace(/0/g, "").length == 0) ||
				(expYearField.is("select") && expYearField.attr("value").trim().replace(/0/g, "").length == 0))
			{
				expMonthField.parents("tr:first").addClass("wcgErrorRow");
				requiredButEmptyCount++;
			}

			var checkFailed=false;
			// Run the credit card validation again before submitting
			var ccField = $("#WcgCc");
			var ccNumber = $(ccField).attr("value").trim();
			ccNumber=ccNumber.replace(/[^X\d]/g, "");

			var ccTypeField = $("#wcgCcType");
			var ccType = $(ccTypeField).attr("value");

			var filter = /^X+(\d{4})$/;
			if (!filter.test(ccNumber)) {
				if(!creditCardValidation(ccNumber, ccType)) {
					checkFailed=true;
				}
			}
			else {
				var last4DigitsField = $("#wcgLast4Digits");
				var last4Digits = $(last4DigitsField).attr("value");
				var enteredLast4Digits = ccNumber.substring(ccNumber.length - 4);

				if(enteredLast4Digits != last4Digits) {
					checkFailed=true;
				}
			}

			if (requiredButEmptyCount > 0) {
				$(".wcgError2").fadeIn(1500);

				if (requiredButEmptyCount < 2) {
					$(".wcgError2 span").html(requiredButEmptyCount + ' field. It has been highlighted below.');
				}
				else {
					$(".wcgError2 span").html(requiredButEmptyCount + ' fields. They have been highlighted below.');
				}

				window.scrollTo(0, 0);
				return false;
			}
			else if(checkFailed) {
				this.disabled = '';
				return false;
			}
			else
			{
				var creditCardField = $("#WcgCc");
				var creditCardNumber = $(creditCardField).attr("value").trim();
				creditCardNumber=creditCardNumber.replace(/^\s+|\s+$|\s+/g, "");
				$(creditCardField).attr("value", creditCardNumber);

				var cardFilter = /^X+(\d{4})$/;
				if (cardFilter.test(creditCardNumber)) {
					var estoreActionURLField = $("#wcgEstoreActionUrl");
					var estoreActionURL = $(estoreActionURLField).attr("value");

					var jqForm = $(this).parents("form");
					$(jqForm).attr("action", estoreActionURL);
				}

				submitButtonValue = this.value;
				submitButton = this;

				this.disabled = 'true';
				this.value = 'Please wait';

				EstoreTokenizer.setCCField("WcgCc");
				EstoreTokenizer.setAppContingencyField("ESTORE_APP_CONTINGENCY");
				EstoreTokenizer.setJSODEnabledField("ESTORE_JSOD_ENABLED");
				EstoreTokenizer.setJSODErrorCodeField("ESTORE_JSOD_ERROR_CODE");
				EstoreTokenizer.setJSODErrorDescriptionField("ESTORE_JSOD_ERROR_DESCRIPTION");
				EstoreTokenizer.setJSODRetryField("ESTORE_JSOD_NUM_ATTEMPT");
				EstoreTokenizer.setJSODTimeField("ESTORE_JSOD_TKN_TIME");
				EstoreTokenizer.setJSODSuccessField("ESTORE_JSOD_SUCCESS");
				EstoreTokenizer.setErrorDisplayCB(DisplayTokenError);
				EstoreTokenizer.TokenizeCC(creditCardNumber);

				return false;
			}
		}
		}
	);
	
	// TTD related functions
$("#ttdContinueButton").click
	(
		function()
		{
			var requiredButEmpty = $(":input[wcgFieldState='empty']");	
			var requiredButEmptyCount = 0;
			for(var i=0; i<requiredButEmpty.size(); i++) {
				if ($(requiredButEmpty[i]).attr("value") != null) {
					if ($(requiredButEmpty[i]).attr("value").trim().length == 0 ) {
						$(requiredButEmpty[i]).parents("tr:first").addClass("wcgErrorRow");
						requiredButEmptyCount++;
					}
					else {
						$(requiredButEmpty[i]).parents("tr:first").removeClass("wcgErrorRow");
					}
				}
			}	
			
			if (requiredButEmptyCount > 0)
			{
				$(".wcgError2").fadeIn(1500);

				if (requiredButEmptyCount < 2)
				{
					$(".wcgError2 span").html(requiredButEmptyCount + ' field.  It has been highlighted below');
				}
				else
				{					
					$(".wcgError2 span").html(requiredButEmptyCount + ' fields.  They have been highlighted below');				
				}
				
				var wcgLoginBox=document.getElementById('loginBox');
				if(wcgLoginBox != null  && wcgLoginBox.style.display != null )
					{
					  var imageType = wcgLoginBox.getAttribute('imageType');
					  if(imageType != null)
					  {
					    if(imageType.value = '1')
					     {
					       wcgLoginBox.style.backgroundImage='url(/ttd_payment/images/signInBack2.gif)';
					       wcgLoginBox.setAttribute('imageType',"2");
					     }
					  }
					  else
					  {
					  	wcgLoginBox.setAttribute('imageType',"2");
					  }
					}					

				window.scrollTo(0, 0);
				return false;
			}else{
				this.disabled = 'true';
				var jqForm = $(this).parents("form");
				jqForm[0].submit();
				return true;				
			}

		}
	);
	
	// FSG related functions
$("#fsgContinueButton").click
	(
		function()
		{
			var requiredButEmpty = $(":input[wcgFieldState='empty']");	
			var requiredButEmptyCount = 0;
			for(var i=0; i<requiredButEmpty.size(); i++) {
				if ($(requiredButEmpty[i]).attr("value") != null) {
					if ($(requiredButEmpty[i]).attr("value").trim().length == 0 ) {
						$(requiredButEmpty[i]).parents("tr:first").addClass("wcgErrorRow");
						requiredButEmptyCount++;
					}
					else {
						$(requiredButEmpty[i]).parents("tr:first").removeClass("wcgErrorRow");
					}
				}
			}	
			
			if (requiredButEmptyCount > 0)
			{
				$(".wcgError2").fadeIn(1500);				

				if (requiredButEmptyCount < 2)
				{
					$(".wcgError2 span").html(requiredButEmptyCount + ' field.  It has been highlighted below');
				}
				else
				{					
					$(".wcgError2 span").html(requiredButEmptyCount + ' fields.  They have been highlighted below');
				}							
				window.scrollTo(0, 0);
				return false;
			}else{
				this.disabled = 'true';
				var jqForm = $(this).parents("form");
				jqForm[0].submit();
				return true;				
			}

		}
	);


	// Added for ProAdvisor Account
	$(".wcgSectionTitle").click(function(){
		$(this).removeClass();
		$(this).addClass("wcgSectionTitle");
		if($(this).next().css("display") == 'none') {
			$(this).addClass("wcgSectionTitleOpen");
			$(this).next().slideDown(1000);

		}
		else {
			$(this).next().slideUp(1000);
		}
	});

	$(".tab").click(function(){
			$(this).removeClass();
			$(this).addClass("tab");
			$(this).addClass("tabSelected");

		if($(this).attr("id") == "services") {
			$("#products").removeClass();
			$("#products").addClass("tab");
			$("#productsTable").css("display", "none");
			$("#servicesTable").css("display", "block");
		}
		else {
			$("#services").removeClass();
			$("#services").addClass("tab");

			$("#servicesTable").css("display", "none");
			$("#productsTable").css("display", "block");
		}
	});

	$(".tabHor").hover(function(){ if($(this).css("color") != "rgb(51, 51, 51)") { $(this).css("color", "#e98717");$(this).css("cursor", "pointer");} },function(){ if($(this).css("color") != "rgb(51, 51, 51)") {$(this).css("color", "#4378a7") }});

	$(".tabHor").click(function(){
			$(this).removeClass();
			$(this).addClass("tabHor");
			$(this).addClass("tabHorSelected");

		if($(this).attr("id") == "servicesHor") {
			$("#productsHor").removeClass();
			$("#productsHor").addClass("tabHor");
			$("#productsTableHor").css("display", "none");
			$("#servicesTableHor").css("display", "block");
		}
		else {
			$("#servicesHor").removeClass();
			$("#servicesHor").addClass("tabHor");
			$("#servicesTableHor").css("display", "none");
			$("#productsTableHor").css("display", "block");
		}
	});

	$(".nextButton").hover(function(){$(this).addClass("nextButtonHover"); },function(){ $(this).removeClass("nextButtonHover"); });
	// nextButton
	$(".nextButton").click(function(){
		$(this).parent().parent().prev().click();
		if($(this).parent().parent().next().next().next().css("display") != "block") {
			$(this).parent().parent().next().next().click();
		}
	});

	$("#expandColapseAll").click(function(){
		if($(this).html() == "+ Expand All") {
			$(".wcgFormContainer").slideDown(1000);
			$(this).html("- Collapse All");
		}
		else {
			$(".wcgFormContainer").slideUp(1000);
			$(this).html("+ Expand All");
		}
	});

	$("#expandColapseAll").hover(function() {
		$(this).css("text-decoration", "underline");
	}, function() {
		$(this).css("text-decoration", "none");
	});
	
	$(".gotoQOLButtonLong").hover
	(
		function()
		{
			$(this).addClass("gotoQOLButtonLongRollOver");
		},
		function()
		{
			$(this).removeClass("gotoQOLButtonLongRollOver");
		}
	);	
	
});

// Credit card validation
function creditCardValidation(ccNumber, ccType)
{
	var firstNumber = ccNumber.substring(0,1);
	var firstTwoNumbers = ccNumber.substring(0,2);
	var firstFourNumbers = ccNumber.substring(0,4);

	// Credit card length and type check
	if (ccType == "American Express") {
		if(ccNumber.length == 15) {
			if (firstTwoNumbers == 34 || firstTwoNumbers == 37) {
				if (creditCardModCheck(ccNumber)) {
					return true;
				} else {
					return false;
				}
			} else {
				return false;
			}
		} else if(ccNumber.length != 0) {
			return false;
		}
	}
	else if (ccType == "Visa") {
		if((ccNumber.length == 13) || (ccNumber.length == 16)) {
			if (firstNumber == 4) {
				if (creditCardModCheck(ccNumber)) {
					return true;
				}else {
					return false;
				}
			}else {
				return false;
			}
		}else if(ccNumber.length != 0){
			return false;
		}
	}
	else if (ccType == "MasterCard") {
		if(ccNumber.length == 16){
			if (firstTwoNumbers > 50 && firstTwoNumbers < 56) {
				if (creditCardModCheck(ccNumber)) {
					return true;
				}else {
					return false;
				}
			}else {
				return false;
			}
		}else if(ccNumber.length != 0) {
			return false;
		}
	}
	else if (ccType == "Discover") {
		if(ccNumber.length == 16){
			if (firstFourNumbers == 6011) {
				if (creditCardModCheck(ccNumber)) {
					return true;
				}else {
					return false;
				}
			}else {
				return false;
			}
		}else if(ccNumber.length != 0) {
			return false;
		}
	}
}

function findCreditCardType(ccNumber){
	var ccType = "";
	if(ccNumber == undefined) return ccType;
	
	var firstNumber = ccNumber.substring(0,1);
	var firstTwoNumbers = ccNumber.substring(0,2);
	var firstFourNumbers = ccNumber.substring(0,4);
	if(ccNumber.length == 15) {
	   if (firstTwoNumbers == 34 || firstTwoNumbers == 37) ccType = "American Express";
	}else if((ccNumber.length == 13) || (ccNumber.length == 16)) {
	   if (firstNumber == 4) ccType = "Visa";
	   else if (firstTwoNumbers > 50 && firstTwoNumbers < 56) ccType = "MasterCard";
	   else if (firstFourNumbers == 6011) ccType = "Discover";
	}
	return ccType;
}	

// Credit card mod check
function creditCardModCheck(number)
{
	var total = 0;
	var flag = 0;
	for (var i=(number.length - 1);i>=0; i--) {
		if (flag == 1) {
			var digits = number.charAt(i) * 2;
			if (digits > 9) digits -= 9;
			total += digits;
			flag = 0;
		} else {
			total = total + parseInt(number.charAt(i));
			flag = 1;
		}
	}
	if ((total%10) == 0) {
		return true;
	} else {
		return false;
	}
}


