YAHOO.util.Event.onDOMReady(init);

function init() {
	YAHOO.util.Event.addListener('info_source', 'change', checkInfoSource);
	YAHOO.util.Event.addListener("okSubmit", "click", checkForm);
	// deal with "other" check box
	toggleSegOtherSpan();
	toggleMktOtherSpan();
	checkInfoSource(null);
}

function getFormValue(id) {
	var i, theForm;
	var el = document.getElementById(id);
	var iType = el.tagName;
	if (iType == "INPUT")
		iType = el.getAttribute('type');
	iType = iType.toLowerCase();
	switch (iType) {
		case "radio":
			theForm = el.form;
			var grp = eval('theForm.' + id);
			for (i = 0; i < grp.length; i++) {
				if (grp[i].checked)
					return grp[i].value;
			}
			return '';
			break;
		case "select":
			if (el.selectedIndex == -1)
				return '';
			return el.options[el.selectedIndex].value;
			break;
		default:
			return el.value;
	}
}

function toggleSegOtherSpan() {
	if (document.getElementById('segOther').checked)
		document.getElementById('segOtherSpan').style.display = "inline";
	else
		document.getElementById('segOtherSpan').style.display = "none";
}

function toggleMktOtherSpan() {
	if (document.getElementById('mktOther').checked)
		document.getElementById('mktOtherSpan').style.display = "inline";
	else
		document.getElementById('mktOtherSpan').style.display = "none";
}

function checkInfoSource(e) {
	var div = document.getElementById('info_source');
	if (div.options[div.selectedIndex].value.indexOf('Sales Representative') != -1) {
		document.getElementById('distSalesDiv').style.display = "block";
	} else {
		document.getElementById('distSalesDiv').style.display = "none";
	}
}

function checkForm() {
	var reqf = [ "name", "firstname", "lastname", 'email', 'email2',
				 "phone", "address1", "city",
				 "province", "zip", "revenue",
				 "info_source", "micro_url",
				 "capya" ];
	var reqs = [ 'Company Name', 'First Name', 'Last Name', 'E-Mail Address', 'E-Mail Address', 
				 'Phone Number', 'Address', 'City',
				 'State', 'Zip Code', 'Total Annual Sales $',
				 'Information Source', 'Company Website',
				 'Verification Code' ];
	var fd;
	for (var i = 0; i < reqf.length; i++) {
		fd = document.getElementById(reqf[i]);
		if (getFormValue(reqf[i]).length == 0) {
			alert('Please fill in ' + reqs[i] + '.');
			fd.focus();
			return;
		}
	}
	var f = document.resform;
	// check for disti sales rep (if necessary)
	if (document.getElementById('distSalesDiv').style.display == "none") {
		f.ref_disti_sales.value = '';
	} else {
		if (f.ref_disti_sales.value.length == 0) {
			alert('Please fill in Sales Rep Name.');
			f.ref_disti_sales.focus();
			return;
		}
	}
	// at least 1 segment needs to be checked
	var checks = f.elements['segments[]'];
	var checked = false;
	for (i = 0; i < checks.length; i++) {
		if (checks[i].checked) {
			checked = true;
			break;
		}
	}
	if (!checked) {
		checks = document.getElementById('segOther');
		if (checks.checked && document.getElementById('segOtherText').value.length > 0) {
			checked = true;
		}
	}
	if (!checked) {
		alert("Please choose one segment at least.");
		return;
	}
	// at least 1 vertical markets needs to be checked
	checks = checks = f.elements['verticals[]'];
	checked = false;
	for (i = 0; i < checks.length; i++) {
		if (checks[i].checked) {
			checked = true;
			break;
		}
	}
	if (!checked) {
		checks = document.getElementById('mktOther');
		if (checks.checked && document.getElementById('mktOtherText').value.length > 0) {
			checked = true;
		}
	}
	if (!checked) {
		alert("Please choose one vertical market at least.");
		return;
	}
	if (!checkEmailAddr(f.email.value)) {
		alert("Email address is invalid, please re-enter the correct email address.");
		f.email.focus();
		return;
	}
	// check the two email addresses are identical
	if (f.email.value != f.email2.value) {
		alert("The email addresses you entered twice are not identical, please re-check your " +
			  "email address.");
		f.email.focus();
		return;
	}
	// check the ZIP code (US only)
	var zip = getFormValue('zip');
	if (zip.length != 5 || !isInteger(zip)) {
		alert("The ZIP code you entered is invalid, please re-enter the ZIP code.");
		f.zip.focus();
		return;
	}
	f.submit();
	
}