/******************************************************************************
 * Javascript for the lead form pages
 *****************************************************************************/
var lead_form = {};

/******************************************************************************
 * methods
 *****************************************************************************/


lead_form.validateLeadForm = function() {
	try {
		var bIsValid = true;
		
		// validate all required fields	
		if (!lead_form.validateLeadFormEmailAddress()) 			bIsValid = false;
		if (!lead_form.validateTelephone($("#lf_telephone_1"))) bIsValid = false;
		if (!lead_form.validateTelephone($("#lf_telephone_2"))) bIsValid = false;
		if (!lead_form.validateComments()) 						bIsValid = false;
		if (!lead_form.validateRegion())						bIsValid = false;
		if (!lead_form.validatePostalCode()) 					bIsValid = false;
		if (!lead_form.validateDesiredInvestment()) 			bIsValid = false;
		if (!lead_form.validateDesiredLocation()) 				bIsValid = false;
		if (!lead_form.validateDiscoveryDay()) 					bIsValid = false;
		
		// validate any required fields	
		if (!lead_form.checkRequiredFields()) 					bIsValid = false;
	
		return bIsValid;
	} catch (e) {
		publishException(e);
	}		
}

// validate their phone number
lead_form.validateTelephone = function(elInput) {
	try {
		
		var iTelephoneValidation = isValidTelephoneFormat($(elInput).val(),$("#lf_country").val());

		var bValid = true;
		if (iTelephoneValidation == 0 && $(elInput).parent().hasClass("required")) {
			lead_form.displayErrorMessage($(elInput).parent(), LEAD_FORM_ERROR_REQUIRED_TELEPHONE, true)
			bValid = false;
		} else if (iTelephoneValidation == 1) {				
			lead_form.displayErrorMessage($(elInput).parent(), LEAD_FORM_ERROR_INVALID_TELEPHONE, true)
			bValid = false;
		} else {
			lead_form.removeErrorMessages($(elInput).parent());
			bValid = true;
		}		
		return bValid;		
	} catch (e) {
		publishException(e);
	}	
}

lead_form.validateDesiredInvestment = function() {
	try {
		// grab the element we are validating
		var elInput = $("#lf_investment_range_id");
		
		// remove the invalid class
		$(elInput).parent().removeClass("invalid");
			
		// check it if required
		if (!lead_form.checkRequiredField($(elInput).parent())) return false;
		
		// check the validation.
		var iValueId 				= $("#lf_investment_range_id").val();
			
		// grab the required amount from a hidden field in the form
		var iRequiredInvestmentId	= $("#lf_minimum_investment_id").val();
		
		// check the required investment
		if (parseInt(iValueId) < parseInt(iRequiredInvestmentId)) {
			var sMessage = $(".required_message",$(elInput).parent()).eq(0).val();
			lead_form.displayErrorMessage($(elInput).parent(), sMessage, true)
			
			if (_gaq) {
				_gaq.push(['_trackEvent', 'Lead Form', 'Failed Validation: Investment', 'Profile']);
			}			
			return false;
		} else {
			lead_form.removeErrorMessages($(elInput).parent());
			return true;
		}			
	} catch (e) {
		publishException(e);
	}	
}

lead_form.validateDesiredLocation = function() {
	try {
		// grab the element we are validating
		var elInput = $("#lf_desired_location_id");
		
		// remove the invalid class
		$(elInput).parent().removeClass("invalid");
			
		// check it if required
		if (!lead_form.checkRequiredField($(elInput).parent())) return false;
		
		// check the validation.
		var iValueId 				= $("#lf_desired_location_id").val();	
		
		// check the required investment
		if (iValueId == "0") {
			lead_form.displayErrorMessage($(elInput).parent(), LEAD_FORM_ERROR_INVALID_DESIRED_LOCATION, true)
			return false;
		} else {
			lead_form.removeErrorMessages($(elInput).parent());
			return true;
		}			
	} catch (e) {
		publishException(e);
	}	
}

lead_form.validateLeadFormEmailAddress = function() {
	try {
		// grab the element we are validating
		var elInput = $("#lf_email_address");
		
		// remove the invalid class
		$(elInput).parent().removeClass("invalid");
		
		// check it if required
		if (!lead_form.checkRequiredField($(elInput).parent())) return false;
		
		// conduct the validation
		if (isValidEmail($(elInput).val().trim()) == false) {
			lead_form.displayErrorMessage($(elInput).parent(), LEAD_FORM_ERROR_INVALID_EMAIL_ADDRESS, true)
			return false;
		}
		return true;
	} catch (e) {
		publishException(e);
	}	
}

lead_form.validatePostalCode = function() {
	try {
		// grab the element we are validating
		var elInput = $("#lf_postal_code");
		
		// remove the invalid class
		$(elInput).parent().removeClass("invalid");
		
		// check it if required
		if (!lead_form.checkRequiredField($(elInput).parent())) return false;
		
		var sCountryId = "";
		if ($("#lf_postal_code").val() != null) {
			sCountryId = $("#lf_postal_code").val().trim();
		}
		
		var postCodeValidation = isValidPostCodeFormat($("#lf_postal_code").val().trim(), sCountryId);
		if (postCodeValidation == 0) {
			lead_form.displayErrorMessage($(elInput).parent(), LEAD_FORM_ERROR_REQUIRED_POSTAL_CODE, true);
			return false;	
		} else if (postCodeValidation == 1) {
			lead_form.displayErrorMessage($(elInput).parent(), LEAD_FORM_ERROR_INVALID_POSTAL_CODE, true);
			return false;	
		} else {
			lead_form.removeErrorMessages($(elInput).parent());
			return true;	
		}
	} catch (e) {
		publishException(e);
	}	
}

lead_form.validateRegion = function() {
	try {
		// us
		if ($("#lf_country").val() == "221") {
			var elInput = $("#lf_region_select");
		
			// set the label to say "State"
			$("p.label", $(elInput).parent()).html('State <span class="required_indicator">*</span>');
		
			// grab from select list
			var sRegion = $(elInput).val().trim();

			// it is required
			if (sRegion == "") {
				lead_form.displayErrorMessage($(elInput).parent(), "State is required.", true);
				return false;				
			} else {
				lead_form.removeErrorMessages($(elInput).parent());
				return true;	
			}
		
		// canada
		} else if ($("#lf_country").val() == "37") {
			var elInput = $("#lf_region_select");
		
			// set the label to say "Province/Territory"
			$("p.label", $(elInput).parent()).html('Province/Territory <span class="required_indicator">*</span>');
			
			// grab from select list
			var sRegion = $(elInput).val().trim();

			// it is required
			if (sRegion == "") {
				lead_form.displayErrorMessage($(elInput).parent(), "Province/Territory is required.", true);
				return false;				
			} else {
				lead_form.removeErrorMessages($(elInput).parent());
				return true;	
			}
			
		// spain
		} else if ($("#lf_country").val() == "194") {
			var elInput = $("#lf_region_select");
		
			// set the label to say "Province/Territory"
			$("p.label", $(elInput).parent()).html('Provincia<span class="required_indicator">*</span>');
			
			// grab from select list
			var sRegion = $(elInput).val().trim();

			// it is required
			if (sRegion == "") {
				lead_form.displayErrorMessage($(elInput).parent(), "Por favor indicar la Provincia.", true);
				return false;				
			} else {
				lead_form.removeErrorMessages($(elInput).parent());
				return true;	
			}	
			
		// mexico
		} else if ($("#lf_country").val() == "136") {
			var elInput = $("#lf_region_select");
		
			// set the label to say "Province/Territory"
			$("p.label", $(elInput).parent()).html('Provincia<span class="required_indicator">*</span>');
			
			// grab from select list
			var sRegion = $(elInput).val().trim();

			// it is required
			if (sRegion == "") {
				lead_form.displayErrorMessage($(elInput).parent(), "Por favor indicar la Provincia.", true);
				return false;				
			} else {
				lead_form.removeErrorMessages($(elInput).parent());
				return true;	
			}		
			
		// Ireland
		} else if ($("#lf_country").val() == "101") {
			var elInput = $("#lf_region_select");
		
			// set the label to say "County"
			$("p.label", $(elInput).parent()).html('County<span class="required_indicator">*</span>');
			
			// grab from select list
			var sRegion = $(elInput).val().trim();

			// it is required
			if (sRegion == "") {
				lead_form.displayErrorMessage($(elInput).parent(), "County is required.", true);
				return false;				
			} else {
				lead_form.removeErrorMessages($(elInput).parent());
				return true;	
			}	
		
		 // South Africa
		} else if ($("#lf_country").val() == "193") {
			var elInput = $("#lf_region_select");
			// set the label to say "Province"
			$("p.label", $(elInput).parent()).html(LEAD_FORM_REGION_ES_PROVINCE+' <span class="required_indicator">*</span>');
			
			// grab from select list
			var sRegion = $(elInput).val().trim();

			// it is required
			if (sRegion == "") {
				lead_form.displayErrorMessage($(elInput).parent(), LEAD_FORM_REGION_ES_PROVINCE+" is required.", true);
				return false;				
			} else {
				lead_form.removeErrorMessages($(elInput).parent());
				return true;	
			}				
		} else {
			lead_form.removeErrorMessages($(elInput).parent());
			return true;	
		}			
	} catch (e) {
		publishException(e);
	}	
}

lead_form.validateComments = function() {
	try {
		// grab the element we are validating
		var elInput = $("#lf_comments");
		
		// remove the invalid class
		$(elInput).parent().removeClass("invalid");
		
		// check it if required
		if (!lead_form.checkRequiredField($(elInput).parent())) return false;
		
		// conduct the validation
		if ($(elInput).val().trim().length > 4000) {
			lead_form.displayErrorMessage($(elInput).parent(), LEAD_FORM_ERROR_COMMENT_TOO_LARGE, true)
			return false;
		} else {
			lead_form.removeErrorMessages($(elInput).parent());
			return true;
		}
	} catch (e) {
		publishException(e);
	}	
}

lead_form.validateDiscoveryDay = function() {
	try {
		// grab the element we are validating
		var elInput = $("#lf_discovery_day_preference");
		
		// if the profile doesn't have discovery days, return
		if($(elInput).length == 0) return true;

		// remove the invalid class
		$(elInput).parent().removeClass("invalid");
		
		// check if it is required
		if (!lead_form.checkRequiredField($(elInput).parent())) return false;

	} catch (e) {
		publishException(e);
	}	
}

lead_form.checkRequiredFields = function() {
	try {
		var bIsValid 	= true;
		
		$("#frm_lead").find(".lead_form_field.required").each(function () {
			
			if (!($(this).hasClass("invalid"))) {
				if (!lead_form.checkRequiredField(this)) bIsValid = false;
			}
			
			// remove any previous bound handlers
			$(this).unbind("blur");
			
			// rebind the handlers
			$("input", $(this)).blur(lead_form.validateLeadForm);
			$("select", $(this)).blur(lead_form.validateLeadForm);
			$("textarea", $(this)).blur(lead_form.validateLeadForm);

		});
		
		return bIsValid;
	} catch (e) {
		publishException(e);
	}
}


lead_form.checkRequiredField = function(elFieldContainer) {
	try {
		if (!($(elFieldContainer).hasClass("required"))) return true;

		var bIsValid 	= true;
		var sValue 		= "";
			
		if ($("input[type=radio]",elFieldContainer).length > 0) {
			// we want to make sure one of them is checked
			bIsValid = ($('input[type=radio]:checked',elFieldContainer).length > 0) ? true : false;
		}
		if ($("input:checkbox",elFieldContainer).length > 0) {		
			// we want to make sure one of them is checked
			bIsValid = ($('input[type=checkbox]:checked',elFieldContainer).length > 0) ? true : false;						
		}
		
		// validate text areas
		$("textarea",elFieldContainer).each(function () {
			if (bIsValid && $(this).hasClass("optional") == false) {
				bIsValid = ($(this).val().trim() == "") ? false : true;	
			}
		});
		
		// validate select boxes
		$("select",elFieldContainer).each(function () {
			if (bIsValid && $(this).hasClass("optional") == false) {
				bIsValid = ($("select",elFieldContainer).eq(0).val().trim() == "") ? false : true;
			}
		});
		// just grab the value
		$("input[type=text]",elFieldContainer).each(function () {
			if (bIsValid && $(this).hasClass("optional") == false) {
				bIsValid = ($(this).val().trim() == "") ? false : true;	
			}
		});			
		
		// if it is missing, add a message
		if (!bIsValid) {
			// grab the required field message (a hidden field)
			var sMessage = $(".required_message",elFieldContainer).eq(0).val();
			lead_form.displayErrorMessage($(elFieldContainer),sMessage, false);
		} else {
			lead_form.removeErrorMessages($(elFieldContainer));
		}

		return bIsValid;
	} catch (e) {
		// publishException(e);
	}
}

lead_form.removeErrorMessages = function(elFieldContainer) {
	try {
		$(".error_message",elFieldContainer).remove();
		$(elFieldContainer).removeClass("invalid"); 
	} catch (e) {
		publishException(e);
	}
}

lead_form.displayErrorMessage = function(elContainer, sMessage, bMarkInvalid) {
	try {
		$(".error_message",elContainer).remove();
		var elMessage = $('<div class="error_message">' + sMessage + '</div>');
		// $(elMessage).css("left",$(elMessage).offset().left + 450);
		if (bMarkInvalid) $(elContainer).addClass("invalid"); 
		$(elContainer).prepend(elMessage);
	} catch (e) {
		publishException(e);
	}
}

lead_form.formatPostCodeField = function(iCountryId) {
	try {	
		if (lead_form.isPostCodeRequired(iCountryId)) {
			$("#lf_postal_code").parent().addClass("required");			
		} else {
			$("#lf_postal_code").parent().removeClass("required");		
		}
	} catch (e) {
		publishException(e);
	}
}

/**
 * get the post code format for a given country
 *  + currently US & Territories, Canada, UK
 */
lead_form.getPostCodeFormat = function (iCountryId) {
	try {
		switch (iCountryId) {
			case "85":
			case "132":
			case "132":
			case "137":
			case "280":
			case "221":
				return "12345 or 12345-1234";
				break;		
			case "37":
				return "A1B C2D";
				break;
			case "220":
			case "300":
			case "303":
			case "301":
			case "302":
				return "12A 3BC";
				break;
			default:
				return "";
				break;
		}
	} catch (e) {
		publishException(e);
	}	
}

/**
 * determine if the lead form zip code is requried -- based on country
 *  + currently US & Territories, Canada, UK
 */
lead_form.isPostCodeRequired = function (iCountryId) {
	try {
		switch (iCountryId) {
			case "85":
			case "132":
			case "132":
			case "137":
			case "280":
			case "221":
				return true;
				break;		
			case "37":
				return true;
				break;
			case "220":
			case "300":
			case "303":
			case "301":
			case "302":
				return true;
				break;
			case "76":
			case "14":
			case "200":
				return true;
				break;	
			default:
				return false;
				break;
		}
	} catch (e) {
		publishException(e);
	}	
}

lead_form.formatRegionField = function(bSubmitted) {
	try {
	
		var sLabel = "";
	
		// if there isn't already a text version, add it
		if ($("#lf_region").length == 0) {
			// add a text box
			var elTextbox = $('<input type="text" id="lf_region" name="lf_region" class="optional" />');
			$("#lf_region_select").after($(elTextbox));	
		}
		switch ($("#lf_country").val()) {
			case "221":

				// get the value of the textbox
				var sState = $("#lf_region").val();
			
				if ($("#lf_region_select").hasClass("us")) {
					$("#lf_region").hide();
					$("#lf_region_select").val(sState);
					$("#lf_region_select").show();
					$("#lf_region").parent().addClass("required");
					return;
				}
			
				// us - display states
				var aStates = new Array("Alabama",
							"Alaska",
							"Arizona",
							"Arkansas",
							"California",
							"Colorado",
							"Connecticut",
							"Delaware",
							"District of Columbia",
							"Florida",
							"Georgia",
							"Hawaii",
							"Idaho",
							"Illinois",
							"Indiana",
							"Iowa",
							"Kansas",
							"Kentucky",
							"Louisiana",
							"Maine",
							"Maryland",
							"Massachusetts",
							"Michigan",
							"Minnesota",
							"Mississippi",
							"Missouri",
							"Montana",
							"Nebraska",
							"Nevada",
							"New Hampshire",
							"New Jersey",
							"New Mexico",
							"New York",
							"North Carolina",
							"North Dakota",
							"Ohio",
							"Oklahoma",
							"Oregon",
							"Pennsylvania",
							"Rhode Island",
							"South Carolina",
							"South Dakota",
							"Tennessee",
							"Texas",
							"Utah",
							"Vermont",
							"Virginia",
							"Washington",
							"West Virginia",
							"Wisconsin",
							"Wyoming");
				
				// create a select list
				var elSelect = $('<select id="lf_region_select" name="lf_region_select" class="us optional"></select>');
					
				// add in the states
				$(elSelect).append('<option value="">-- Select --</option>');			
				for(i=0;i<aStates.length;i++) {
					$(elSelect).append('<option value="' + aStates[i] + '">' + aStates[i] + '</option>');
				}
				
				// append this select list and display it	
				$("#lf_region_select").remove();		
				$("#lf_region").after($(elSelect));			
				$("#lf_region").hide();
				
				// try and select the state
				var sSelectValue = readCookie("lf_region_select");
				if (sSelectValue != "" && sSelectValue != null) {
					$("#lf_region_select").val(sSelectValue);
				} else if (sState != "") {
					$("#lf_region_select").val(sState);
				} 

				// remove the required message
				if (bSubmitted) $("#lf_region_select").blur(lead_form.validateRegion);
				$("#lf_region_select").show();	
				$("#lf_region").parent().addClass("required");
					
				sLabel = LEAD_FORM_REGION_US_STATE;
				break;
			case "37":
		
				// get the value of the textbox
				var sState = $("#lf_region").val();
				
				if ($("#lf_region_select").hasClass("ca")) {
					$("#lf_region").hide();
					$("#lf_region_select").val(sState);
					$("#lf_region_select").show();
					return;
				}
			
				// ca - display provinces
				var aProvinces = new Array("Alberta",
					"British Columbia",
					"Manitoba",
					"New Brunswick",
					"Newfoundland",
					"Northwest Territories",
					"Nova Scotia",
					"Nunavut",
					"Ontario",
					"Prince Edward Island",
					"Quebec",
					"Saskatchewan",
					"Yukon Territory");
					
				// create a select list
				var elSelect = $('<select id="lf_region_select" name="lf_region_select" class="ca optional"></select>');
					
				// add in the states
				$(elSelect).append('<option value="">-- Select --</option>');
				for(i=0;i<aProvinces.length;i++) {
					$(elSelect).append('<option value="' + aProvinces[i] + '">' + aProvinces[i] + '</option>');
				}
				
				// append this select list and display it	
				$("#lf_region_select").remove();
				$("#lf_region").after($(elSelect));			
				$("#lf_region").hide();
				
				$("#lf_region_select").val(sState);
				
				// remvoe the required message
				$("#lf_region_select").blur(lead_form.validateRegion);
				$("#lf_region_select").show();
				$("#lf_region").parent().addClass("required");
				
				sLabel = LEAD_FORM_REGION_CA_PROVINCE_TERRITORY;
				break;
			case "136":
			
				// get the value of the textbox
				var sMexicanRegion = $("#lf_region").val();
				
				if ($("#lf_region_select").hasClass("mx")) {
					$("#lf_region").hide();
					$("#lf_region_select").val(sMexicanRegion);
					$("#lf_region_select").show();
					return;
				}
			
				// mx - display provinces
				var aProvinces = new Array("Aguascalientes",
									"Baja California",
									"Baja California Sur",
									"Campeche",
									"Chiapas",
									"Chihuahua",
									"Coahuila",
									"Colima",
									"Federal District",
									"Durango",
									"Guanajuato",
									"Guerrero",
									"Hidalgo",
									"Jalisco",
									"Mexico State",
									"Michoac\341n",
									"Morelos",
									"Nayarit",
									"Nuevo Le\363n",
									"Oaxaca",
									"Puebla",
									"Quer\351taro",
									"Quintana Roo",
									"San Luis Potos\355",
									"Sinaloa",
									"Sonora",
									"Tabasco",
									"Tamaulipas",
									"Tlaxcala",
									"Veracruz",
									"Yucat\341n", 
									"Zacatecas"
									);
					
				// create a select list
				var elSelect = $('<select id="lf_region_select" name="lf_region_select" class="mx"></select>');
					
				// add in the states
				$(elSelect).append('<option value="">-- Select --</option>');
				for(i=0;i<aProvinces.length;i++) {
					$(elSelect).append('<option value="' + aProvinces[i] + '">' + aProvinces[i] + '</option>');
				}
				
				// append this select list and display it	
				$("#lf_region_select").remove();
				$("#lf_region").after($(elSelect));			
				$("#lf_region").hide();
				
				$("#lf_region_select").val(sMexicanRegion);
				
				// remvoe the required message
				$("#lf_region_select").blur(lead_form.validateRegion);
				$("#lf_region_select").show();
				$("#lf_region").parent().addClass("required");
				
				sLabel = LEAD_FORM_REGION_MX_PROVINCE;
				break;
			case "194":
				// get the value of the textbox
				var sState = $("#lf_region").val();
				
				if ($("#lf_region_select").hasClass("es")) {
					$("#lf_region").hide();
					$("#lf_region_select").val(sState);
					$("#lf_region_select").show();
					return;
				}
			
				// es - display provinces
				var aProvinces = new Array("\301lava",
				    "Albacete",
				    "Alicante",
				    "Almer\355a",
				    "Asturias",
				    "\301vila",
				    "Badajoz",
				    "Barcelona",
				    "Burgos",
				    "C\341ceres",
				    "C\341diz",
				    "Cantabria",
				    "Castell\363n",
				    "Ceuta",
				    "Ciudad Real",
				    "C\363rdoba",
				    "Cuenca",
				    "Gerona",
				    "Granada",
				    "Guadalajara",
				    "Guip\372zcoa",
				    "Huelva",
				    "Huesca",
				    "Islas Baleares",
				    "Ja\351n",
				    "La Coru\361a",
				    "La Rioja",
				    "Las Palmas",
				    "Le\363n",
				    "L\351rida",
				    "Lugo",
				    "Madrid",
				    "M\341laga",
				    "Melilla",
				    "Murcia",
				    "Navarra",
				    "Orense",
				    "Palencia",
				    "Pontevedra",
				    "Salamanca",
				    "Santa Cruz de Tenerife",
				    "Segovia",
				    "Sevilla",
				    "Soria",
				    "Tarragona",
				    "Teruel",
				    "Toledo",
				    "Valencia",
				    "Valladolid",
				    "Vizcaya",
				    "Zamora",
				    "Zaragoza");
					
				// create a select list
				var elSelect = $('<select id="lf_region_select" name="lf_region_select" class="es optional"></select>');
					
				// add in the states
				$(elSelect).append('<option value="">-- Select --</option>');
				for(i=0;i<aProvinces.length;i++) {
					$(elSelect).append('<option value="' + aProvinces[i] + '">' + aProvinces[i] + '</option>');
				}
				
				// append this select list and display it	
				$("#lf_region_select").remove();
				$("#lf_region").after($(elSelect));			
				$("#lf_region").hide();
				
				$("#lf_region_select").val(sState);
				
				// remvoe the required message
				$("#lf_region_select").blur(lead_form.validateRegion);
				$("#lf_region_select").show();
				$("#lf_region").parent().addClass("required");
				
				sLabel = LEAD_FORM_REGION_ES_PROVINCE;
				break;
			case "101":
				// get the value of the textbox
				var sState = $("#lf_region").val();
				
				if ($("#lf_region_select").hasClass("ie")) {
					$("#lf_region").hide();
					$("#lf_region_select").val(sState);
					$("#lf_region_select").show();
					return;
				}
			
				// es - display provinces
				var aCounties = new Array("Antrim",
									"Armagh",
									"Carlow",
									"Cavan",
									"Clare",
									"Cork",
									"Donegal",
									"Down",
									"Dublin",
									"Fermanagh",
									"Galway",
									"Kerry",
									"Kildare",
									"Kilkenny",
									"Laois",
									"Leitrim",
									"Limerick",
									"Londonderry",
									"Longford",
									"Louth",
									"Mayo",
									"Meath",
									"Monaghan",
									"Offaly",
									"Roscommon",
									"Sligo",
									"Tipperary",
									"Tyrone",
									"Waterford",
									"Westmeath",
									"Wexford",
									"Wicklow");
					
				// create a select list
				var elSelect = $('<select id="lf_region_select" name="lf_region_select" class="ie optional"></select>');
					
				// add in the states
				$(elSelect).append('<option value="">-- Select --</option>');
				for(i=0;i<aCounties.length;i++) {
					$(elSelect).append('<option value="' + aCounties[i] + '">' + aCounties[i] + '</option>');
				}
				
				// append this select list and display it	
				$("#lf_region_select").remove();
				$("#lf_region").after($(elSelect));
				$("#lf_region").hide();
				
				$("#lf_region_select").val(aCounties);
				
				// remvoe the required message
				$("#lf_region_select").blur(lead_form.validateRegion);
				$("#lf_region_select").show();
				$("#lf_region").parent().addClass("required");
				
				$("#lf_region_select option[value='']").attr("selected", "selected");
				sLabel = LEAD_FORM_REGION_IR_COUNTY;
				break;
			case "193":
				// get the value of the textbox
				var sState = $("#lf_region").val();
				if ($("#lf_region_select").hasClass("za")) {
					$("#lf_region").hide();
					$("#lf_region_select").val(sState);
					$("#lf_region_select").show();
					$("#lf_region").parent().addClass("required");
					return;
				}
			
				// za - display provinces
				var aCounties = new Array(	"Eastern Cape",
											"Western Cape",
											"Northern Cape",
											"Free State",
											"Gauteng",
											"KwaZulu-Natal",
											"Limpopo",
											"Mpumalanga",
											"North West" );
					
				// create a select list
				var elSelect = $('<select id="lf_region_select" name="lf_region_select" class="za optional"></select>');
					
				// add in the states
				$(elSelect).append('<option value="">-- Select --</option>');
				for(i=0;i<aCounties.length;i++) {
					$(elSelect).append('<option value="' + aCounties[i] + '">' + aCounties[i] + '</option>');
				}
				
				// append this select list and display it	
				$("#lf_region_select").remove();
				$("#lf_region").after($(elSelect));
				$("#lf_region").hide();
				
				$("#lf_region_select").val(aCounties);
				
				// remvoe the required message
				
				if (bSubmitted) {
					$("#lf_region_select").blur(lead_form.validateRegion);
				}
				$("#lf_region_select").show();
				$("#lf_region").parent().addClass("required");
				
				$("#lf_region_select option[value='']").attr("selected", "selected");
				sLabel = LEAD_FORM_REGION_ES_PROVINCE;
				break;
			default:
				// remove the required message
				$("#lf_region_select").hide();			
				$("#lf_region").show();
				$("#lf_region").parent().removeClass("required");
				sLabel = LEAD_FORM_REGION_OTHER;
				break;
		}
		
		// assign the label
		if ($("#lf_region_select")) {
			$("p",$("#lf_region_select").parent()).html(sLabel + '<span class="required_indicator">*</span>');
		} else {
			$("p",$("#lf_region").parent()).html(sLabel + '<span class="required_indicator">*</span>');
		}
	} catch (e) {
		publishException(e);
	}	
}

// lead_form.handleCountryChange
lead_form.handleCountryChange = function() {
	try {
		// get the country value
		var iCountryId = $("#lf_country").val();
		lead_form.formatRegionField(false);
		lead_form.formatPostCodeField(iCountryId);
	} catch (e) {
		publishException(e);
	}	
}

// work on these -- currently not effecive
lead_form.handleSelectMouseover = function() {
	try {
		if ($.browser.msie) {
			$(this).data("origWidth", $(this).css("width")).css("width", "auto");
		}
	} catch (e) {
		publishException(e);
	} 
}

lead_form.handleSelectMouseout = function () {
	try {
		if ($.browser.msie) {
			$(this).css("width", $(this).data("origWidth"));
		}
	} catch (e) {
		publishException(e);
	} 	
}

lead_form.handleCheckDiscoveryDays = function(iCountryId) {
	try {
		var n = $("#lf_is_discovery_day_lead:checked").length;
		if (n == 1) {
			$("#lf_discovery_day_preference").parent().addClass("required");			
			$("p",$("#lf_discovery_day_preference").parent()).append('<span class="required_indicator">*</span>');
		} else if (n == 0) {
			$("#lf_discovery_day_preference").parent().removeClass("required");
			lead_form.removeErrorMessages($("#lf_discovery_day_preference").parent());
			$("#lf_discovery_day_preference").parent().find('span.required_indicator').remove();
		}
	} catch (e) {
		publishException(e);
	}
}
