function getElementsByClass (tagName, className, windowRef) {

	if (!windowRef)
		windowRef = window;

	var i;
	var elmlist = new Array();
	var all;

	if (windowRef.document.getElementsByTagName) {
		all = windowRef.document.getElementsByTagName(tagName);
	} else if (windowRef.document.all) {
		all = windowRef.document.all;
	} else {
		all = new Array();
	}

	for (i = 0; i < all.length; i++) {
		// if (all[i].className == className && all[i].tagName == tagName)
		if ( (all[i].className.search(className) > -1) && all[i].tagName == tagName) {
			elmlist[elmlist.length] = all[i];
		}
	}

	return elmlist;
}

if (document.layers) {
	nav4FindLayer = function (doc, id) {
		var i;
		var subdoc;
		var obj;

		for (i = 0; i < doc.layers.length; ++i) {
			if (doc.layers[i].id && id == doc.layers[i].id)
				return doc.layers[i];

			subdoc = doc.layers[i].document;
			obj		 = nav4FindLayer(subdoc, id);
			if (obj != null)
				return obj;
		}
		return null;
	}

	xbGetElementById = function (id, windowRef) {
		if (!windowRef)
			windowRef = window;

		return nav4FindLayer(windowRef.document, id);
	};

} else if (document.all) {

	xbGetElementById = function (id, windowRef) {
		if (!windowRef) 
			windowRef = window;

		var elm = windowRef.document.all[id];
		if (!elm) {
			elm = null;
		}
		return elm;
	};

} else if (document.getElementById) {

	xbGetElementById = function (id, windowRef) {
		if (!windowRef) 
			windowRef = window;

		return windowRef.document.getElementById(id);
	};

} else {

	xbGetElementById = function (id, windowRef) {
		return null;
	};
}

function toggleMoreInfo(field, state) {

	var real_field = field.split(/-/);

	var _info= xbGetElementById(real_field[0] + '-info')
	var _more= xbGetElementById(real_field[0] + '-more')
	var _mini= xbGetElementById(real_field[0] + '-mini')

	if ( state == 1 ) {
		// change state of tracking field/variable
		// document.form1['active['+real_field[1]+']['+real_field[2]+']['+real_field[3]+']'].value = '1';
		// replace link/indicator texts
		// _more.style.display = 'none';
		// _less.style.display = 'block';
		_info.className = 'morewrap';
		_more.style.display = 'none';
		_mini.style.display = 'inline';
		// change className of textfield
		// document.form1[real_field[2]+'['+real_field[3]+']'].className = '';
	} else {
		// document.form1['active['+real_field[1]+']['+real_field[2]+']['+real_field[3]+']'].value = '0';
		// _more.style.display = 'block';
		// _less.style.display = 'none';
		_info.className = 'lesswrap';
		_more.style.display = 'inline';
		_mini.style.display = 'none';
		// document.form1[real_field[2]+'['+real_field[3]+']'].className = 'inactive-text';
	}

}

// form validation bits
function checkForm (theForm) {

	var firstname_err = checkName(theForm.firstname.value);
	var lastname_err = checkName(theForm.lastname.value);
	var email_err = checkEmail(theForm.email.value);
	var address_err = checkAddress(theForm.address1.value);
	var city_err = checkCity(theForm.city.value);
	var state_err = checkState(theForm.state.selectedIndex);
	var zip_err = checkZip(theForm.zipcode.value);
	var phone_err = checkPhone(theForm.phone.value);
	if (dealerform)	{
		var companyname_err = checkCompanyName(theForm.companyname);
		var curr_install_err = checkInstall(theForm.custentity_survey_42);
		var primary_focus_err = checkFocus(theForm.custentity_survey_43);
		var expect_purchase_err = checkPurchase(theForm.custentity_survey_44);
		var owner_experience_err = checkExperience(theForm.custentity_survey_45);
		var business_plan_err = checkPlan(theForm.custentity_survey_46);
		var contract_license_err = checkLicense(theForm.custentity_survey_47);
	}
	else {
		var referral_err = checkReferral(theForm.custentity_survey_19.selectedIndex);
	}

	var why = '';
	var _req  = '';

	_req = xbGetElementById('firstname-req');
	if (firstname_err != '') {
		why += firstname_err;
		_req.style.display = 'inline';
	} else {
		_req.style.display = 'none';
	}

	_req = xbGetElementById('lastname-req');
	if (lastname_err != '') {
		why += lastname_err;
		_req.style.display = 'inline';
	} else {
		_req.style.display = 'none';
	}	

	_req = xbGetElementById('email-req');
	if (email_err != '') {
		why += email_err;
		_req.style.display = 'inline';
	} else {
		_req.style.display = 'none';
	}

	_req = xbGetElementById('address-req');
	if (address_err != '') {
		why += address_err;
		_req.style.display = 'inline';
	} else {
		_req.style.display = 'none';
	}

	_req = xbGetElementById('city-req');
	if (city_err != '') {
		why += city_err;
		_req.style.display = 'inline';
	} else {
		_req.style.display = 'none';
	}

	_req = xbGetElementById('state-req');
	if (state_err != '') {
		why += state_err;
		_req.style.display = 'inline';
	} else {
		_req.style.display = 'none';
	}

	_req = xbGetElementById('zip-req');
	if (zip_err != '') {
		why += zip_err;
		_req.style.display = 'inline';
	} else {
		_req.style.display = 'none';
	}

	_req = xbGetElementById('phone-req');
	if (phone_err != '') {
		why += phone_err;
		_req.style.display = 'inline';
	} else {
		_req.style.display = 'none';
	}	

	if (dealerform) {
		_req = xbGetElementById('companyname-req');
		if (companyname_err != '') {
			why += companyname_err;
			_req.style.display = 'inline';
		} else {
			_req.style.display = 'none';
		}
	
		_req = xbGetElementById('currently_installing-req');
		if (curr_install_err != '') {
			why += curr_install_err;
			_req.style.display = 'inline';
		} else {
			_req.style.display = 'none';
		}
	
		_req = xbGetElementById('primary_bus_focus-req');
		if (primary_focus_err != '') {
			why += primary_focus_err;
			_req.style.display = 'inline';
		} else {
			_req.style.display = 'none';
		}
	
		_req = xbGetElementById('expect_purchase-req');
		if (expect_purchase_err != '') {
			why += expect_purchase_err;
			_req.style.display = 'inline';
		} else {
			_req.style.display = 'none';
		}
	
		_req = xbGetElementById('owner_experience-req');
		if (owner_experience_err != '') {
			why += owner_experience_err;
			_req.style.display = 'inline';
		} else {
			_req.style.display = 'none';
		}
	
		_req = xbGetElementById('business_plan-req');
		if (business_plan_err != '') {
			why += business_plan_err;
			_req.style.display = 'inline';
		} else {
			_req.style.display = 'none';
		}
	
		_req = xbGetElementById('contract_license-req');
		if (contract_license_err != '') {
			why += contract_license_err;
			_req.style.display = 'inline';
		} else {
			_req.style.display = 'none';
		}	
	} // dealer form
	else {
		_req = xbGetElementById('referral-req');
		if (referral_err != '') {
			why += referral_err;
			_req.style.display = 'inline';
		} else {
			_req.style.display = 'none';
		}	
	}
	
	errorind = xbGetElementById('errormsg');
	if (why == '') {
		errorind.style.display = 'none';
		return true;
	} else {
		alert(why);
		errorind.style.display = 'block';
		return false;
	}

}

function checkName (strng) {
	var error = "";
	var illegalChars = /[^a-zA-Z0-9_., -]/;
	// if (!checkFilled(strng)) {
	if ( (strng == "") || illegalChars.test(strng) ) {
		error = "Please enter your name.\n";
	}
	return error;
}

function checkCompanyName (strng) {
	var error = "";
	if (!checkFilled(strng)) {
		error = "Please enter your Company Name.\n";
	}
	return error;
}

function checkAddress (strng) {
	var error = "";
	var illegalChars = /[^a-zA-Z0-9_.,] /;
	// if (!checkFilled(strng)) {
	if ( (strng == "") || illegalChars.test(strng) ) {
		error = "Please enter your address.\n";
	}
	return error;
}

function checkCity (strng) {
	var error = "";
	if (!checkFilled(strng)) {
		error = "Please enter your city.\n";
	}
	return error;
}

function checkZip (strng) {
	var error = "";
	var validzip = /^[\d]{5}(-\d{4}){0,1}$/;

	if ( (strng == "") || !validzip.test(strng) ) {
		error = "Please enter a valid ZIP code.\n";
	} 

	return error;
}

function checkEmail (strng) {
	var error = "";
	//var emailFilter= /^[a-z][\w-]+@([\w-]+\.)[a-z]{2,4}$/i;

	if (strng == "") { 
		error = "Please enter a valid email address.\n";
	}
	return error;
}

function checkPhone (strng) {
	var error = "";
	var stripped = strng.replace(/[\(\)\.\-\ ]/g, ''); //strip out acceptable non-numeric characters

	if ( (strng == "") || isNaN(parseInt(stripped)) ) {
		error = "Please enter a valid phone number.\n";
	}

	return error;
}

function checkInstall(el) {
	if(!checkEntered(el)) return "Please tell us if you're currently installing PV Systems\n";
	return '';
}
function checkFocus(el) {
	if(!checkEntered(el)) return "Please tell us if your primary business focus is residential or commercial\n";
	return '';
}
function checkPurchase(el) {
	if(!checkEntered(el)) return "Please tell us when you expect to purchase your next solar system\n";
	return '';
}
function checkExperience(el) {
	if(!checkEntered(el)) return "Please tell us if you have solar construction, sales, or business ownership experience\n";
	return '';
}
function checkPlan(el) {
	if(!checkEntered(el)) return "Please tell us if you have a business plan for your solar business\n";
	return '';
}
function checkLicense(el) {
	if(!checkEntered(el)) return "Please tell us if you have a contractor's license\n";
	return '';
}

// valid selector from dropdown list
function checkState(choice) {
	var error = "";
	if (choice == 0) {
		error = "Please choose a state.\n";
	}    
	return error;
}

function checkReferral(choice) {
	var error = "";
	if (choice == 0) {
		error = "Please tell us how you heard about us.\n";
	}    
	return error;
}    


function checkFilled (strng) {
	if (strng == "") {
		return false;
	}
	return true;
}

// this goes through radios and SELECTs to see if something is chosen
function checkEntered (el) {
	for(i=0;i<el.length;i++) {
		if (el[i].checked || (el[i].selected && i>0)) return true;
	}
	return false;
}