var error_message;

function handleOptOut(optIn){
	var optOut = document.getElementById('opt-out');
	optOut.checked = !optIn.checked;
	return 1;
}

function limitSize(txtarea, maxSize){
	if(txtarea.value.length > maxSize){
		txtarea.value = txtarea.value.substring(0, maxSize-1);
	}
}

function nextPart(this_part, next_part) {
	if (checkPart(this_part)) {
		showPart(next_part);
	}
}

var validation_messages;

function checkPart(part) {
	var valid = true;
	var partDiv = document.getElementById('part' + part);

	error_message = '';

	var inputElements = partDiv.getElementsByTagName('input');
	for (var i = 0; i < inputElements.length; ++i) {
		if (!checkElement(partDiv, inputElements[i])) {
			valid = false;
		}
	}
	var selectElements = partDiv.getElementsByTagName('select');
	for (var i = 0; i < selectElements.length; ++i) {
		if (!checkElement(partDiv, selectElements[i])) {
			valid = false;
		}
	}

	var selectElements = partDiv.getElementsByTagName('select');
	for (var i = 0; i < selectElements.length; ++i) {
		if (!checkElement(partDiv, selectElements[i])) {
			valid = false;
		}
	}

	var error_div = document.getElementById('part' + part + '-message');
	if (error_message != null && error_message.length > 0) {
		error_message += "<br/>";
		error_div.innerHTML = error_message;
	}
	else {
		error_div.innerHTML = '';
	}

	return valid;
}

function checkElement(partDiv, element) {
	var valid = true;
	var name = element.name;
	var element_label;
	var min_val;
	var max_val;
	var match_field_label;

	if (name in form_elements) {
		element.className = '';
		if (form_elements[name].required && element.value.length == 0) {
			if (form_elements[name].dependent_on != null && form_elements[name].dependent_value != null) {
				var selectElements = partDiv.getElementsByTagName('select');
				for (var i = 0; i < selectElements.length; ++i) {
					if (form_elements[name].dependent_on == selectElements[i].name) {
						if (form_elements[name].dependent_value == selectElements[i].value) {
							element.className='missing';
							error_message += error_msg['required'] + "<br/>";
							valid = false;
						}
					}
				}
			}
			else {
				element.className = 'missing';
				error_message += error_msg['required'] + "<br/>";
				valid = false;
			}
		}

		if (form_elements[name].type == 'email' && !checkEmailElement(element)) {
			element.className = 'invalid_email';
			error_message += error_msg['email'] + "<br/>";
			valid = false;
		}
		if (form_elements[name].match) {
			var second_element = element.form[form_elements[name].match];
			if (element.value != second_element.value) {
				element.className = 'no_match';
				error_message += error_msg['match'] + "<br/>";
				match_field_label = getFieldLabel(second_element.name);
				valid = false;
			}
		}
		if (form_elements[name].type == 'number' && element.value.length > 0) {
			var pattern = /^\d*$/;
			if (!pattern.test(element.value)) {
				element.className = 'missing';
				error_message += error_msg['number'] + "<br/>";
				valid = false;
			}
			else {
				if (form_elements[name].min_val != null && element.value < form_elements[name].min_val) {
					element.className = 'missing';
					error_message += error_msg['min_val'] + "<br/>";
					min_val = form_elements[name].min_val;
					valid = false;
				}
				if (form_elements[name].max_val != null && element.value > form_elements[name].max_val) {
					element.className = 'missing';
					error_message += error_msg['max_val'] + "<br/>";
					max_val = form_elements[name].max_val;
					valid = false;
				}
			}
		}
	}

	if (valid == false) {
		var field_label = getFieldLabel(name);
		error_message = error_message.replace(/\#field1\#/g, field_label);
		error_message = error_message.replace(/\#field2\#/g, match_field_label);
		error_message = error_message.replace(/\#min_val\#/g, min_val);
		error_message = error_message.replace(/\#max_val\#/g, max_val);
	}

	return valid;
}

function checkEmailElement(element) {
	if (element.value.length == 0) return true;
	var at  = element.value.indexOf('@');
	if (at == -1) return false;
	var dot = element.value.indexOf('.', at);
	if (dot == -1) return false;
	return true;
}

// toggle parts
function showPart (part){
	for (var i = 1; i <= maxPartNo; i++){
		var partDiv = document.getElementById('part' + i);
		partDiv.style.display = part == i ? '' : 'none';
        if (document.getElementById('part' + i + '-text')) {
    		var partDivText = document.getElementById('part' + i + '-text');
	    	partDivText.style.display = part == i ? '' : 'none';
        }
	}
}

// get document path from full URL
function getDocumentPath (){
	var url = document.location.href;
	var path = url.split('/');
	    path.shift();path.shift();path.shift(); // remove protocol//domain/
	var page = path.join('/').split('.');
	    page.pop();                             // strip off extension
	return page.join('.');
}

// submit form after verification
function submitCheck(part){
	if(checkPart(part)){
		return true;
	}
	return false;
}

function showJSrequiredContent() {
	// show next button if JS is available
	for (var i = 2; i <= maxPartNo; i++){
		var nextInput = document.getElementById('next' + i);
		var backInput = document.getElementById('back' + i);
   		nextInput.style.display = "";
   		backInput.style.display = "";
	}

	// switch opt out with opt in
	var optInTr  = document.getElementById('opt_in_tr');
	var optOutTr = document.getElementById('opt_out_tr');
    if (optInTr) {
    	optInTr.style.display  = "";
    }
    if (optOutTr) {
    	optOutTr.style.display = "none";
    }
}

function setCountryValue(CountryName, CountryID) {
    var Country = document.WebToLeadForm[CountryName].value;
    var CountryIdObj = document.WebToLeadForm[CountryID];
    if (Country == 'US') {
        CountryIdObj.value = '1';
    } else if (Country == 'CA') {
        CountryIdObj.value = '2';
    } else {
        CountryIdObj.value = '1';
    }
}

function refreshStates(CountryName, StateName, ZipName, State) {
	var Country  = document.WebToLeadForm[CountryName].value;
	var StateObj = document.WebToLeadForm[StateName];
	var ZipObj   = document.WebToLeadForm[ZipName];
	if ( Country == 'US' ) {
		ZipObj.maxLength = 5;
		if(ZipObj.value.length > 5){
			ZipObj.value = '';
		}
	} else {
		ZipObj.maxLength = 7;
	}
	
    var states = [];	
	states[states.length]=['AL','Alabama','US'];
	states[states.length]=['AK','Alaska','US'];
	states[states.length]=['AZ','Arizona','US'];
	states[states.length]=['AR','Arkansas','US'];
	states[states.length]=['CA','California','US'];
	states[states.length]=['CO','Colorado','US'];
	states[states.length]=['CT','Connecticut','US'];
	states[states.length]=['DC','D.C.','US'];
	states[states.length]=['DE','Delaware','US'];
	states[states.length]=['FL','Florida','US'];
	states[states.length]=['GA','Georgia','US'];
	states[states.length]=['HI','Hawaii','US'];
	states[states.length]=['ID','Idaho','US'];
	states[states.length]=['IL','Illinois','US'];
	states[states.length]=['IN','Indiana','US'];
	states[states.length]=['IA','Iowa','US'];
	states[states.length]=['KS','Kansas','US'];
	states[states.length]=['KY','Kentucky','US'];
	states[states.length]=['LA','Louisiana','US'];
	states[states.length]=['ME','Maine','US'];
	states[states.length]=['MD','Maryland','US'];
	states[states.length]=['MA','Massachusetts','US'];
	states[states.length]=['MI','Michigan','US'];
	states[states.length]=['MN','Minnesota','US'];
	states[states.length]=['MS','Mississippi','US'];
	states[states.length]=['MO','Missouri','US'];
	states[states.length]=['MT','Montana','US'];
	states[states.length]=['NE','Nebraska','US'];
	states[states.length]=['NV','Nevada','US'];
	states[states.length]=['NH','NewHampshire','US'];
	states[states.length]=['NJ','NewJersey','US'];
	states[states.length]=['NM','NewMexico','US'];
	states[states.length]=['NY','NewYork','US'];
	states[states.length]=['NC','NorthCarolina','US'];
	states[states.length]=['ND','NorthDakota','US'];
	states[states.length]=['OH','Ohio','US'];
	states[states.length]=['OK','Oklahoma','US'];
	states[states.length]=['OR','Oregon','US'];
	states[states.length]=['PA','Pennsylvania','US'];
	states[states.length]=['RI','RhodeIsland','US'];
	states[states.length]=['SC','SouthCarolina','US'];
	states[states.length]=['SD','SouthDakota','US'];
	states[states.length]=['TN','Tennessee','US'];
	states[states.length]=['TX','Texas','US'];
	states[states.length]=['UT','Utah','US'];
	states[states.length]=['VT','Vermont','US'];
	states[states.length]=['VA','Virginia','US'];
	states[states.length]=['WA','Washington','US'];
	states[states.length]=['WV','WestVirginia','US'];
	states[states.length]=['WI','Wisconsin','US'];
	states[states.length]=['WY','Wyoming','US'];
	states[states.length]=['AB','Alberta','CA'];
	states[states.length]=['BC','BritishColumbia','CA'];
	states[states.length]=['MB','Manitoba','CA'];
	states[states.length]=['NB','NewBrunswick','CA'];
	states[states.length]=['NF','Newfoundland','CA'];
	states[states.length]=['NT','NorthwestTerritories','CA'];
	states[states.length]=['NS','NovaScotia','CA'];
	states[states.length]=['NU','Nunavut','CA'];
	states[states.length]=['ON','Ontario','CA'];
	states[states.length]=['PE','PrinceEdwardIsland','CA'];
	states[states.length]=['QC','Quebec','CA'];
	states[states.length]=['SK','Saskatchewan','CA'];
	states[states.length]=['YT','YukonTerritory','CA'];

	StateObj.innerHTML = "";
	var emptyOption = document.createElement('option');
	StateObj.appendChild(emptyOption);
	if ( Country ) {
		for (var i=0; i<states.length; i++) {
			if ( Country == states[i][2] ) {
				var opt = document.createElement('option');
				opt.innerHTML = states[i][1];
				opt.value = states[i][0];
				if ( State == opt.value )
					opt.selected = true;
				StateObj.appendChild(opt);
			}
		}
	} else {
		emptyOption.innerHTML = "Select a Country";
		emptyOption.value = "";
	}
	return;
}

function showHideOptions(selectObj) {
	for (val in show_hide_options) {
		if (selectObj.value == val) {
			document.getElementById(show_hide_options[val]).style.display = '';
		}
		else {
			document.getElementById(show_hide_options[val]).style.display = 'none';
		}
	}

	return true;
}

function getFieldLabel(name) {
	var field_label = document.getElementById(name + '_label');
    if (field_label) {
        label = field_label.innerHTML;
    }
    else {
        label = name;
    }
	return label;
}

