function e(id) {
	return document.getElementById(id);
}

function showStep(step) {
	for (n = 1; n <= 5; n++) {
		e("step" + n).className = (step == n) ? "current" : "";
		e("content_step" + n).style.display = (step == n) ? "block" : "none";
	}
}

function initialize() {
	
	var s = e("select_position");
	for (n = 0; n < jobs.length; n++)
		s.add(new Option(jobs[n].title, jobs[n].id, (pid == jobs[n].id), (pid == jobs[n].id)), undefined);
	s.onchange = s.onkeyup = function() {
		e("account_name").innerHTML = jobs[this.selectedIndex].account;
	}
	s.onchange();
	
	s = e("select_method");
	s.onchange = s.onkeyup = function() {
		e("contact_data").style.display = (this.selectedIndex == 4) ? "none" : "inline";
	}
	
	showStep(1);
	//fpo(); //for testing
	//showStep(5); //for testing
}

function fpo() {

	var f = e("form_step1");
	f.select_position.selectedIndex = 2;
	f.select_position.onchange();
	f.first_name.value = "John";
	f.last_name.value = "Doe";
	f.email_address.value = "somebody@nobody.com";
	f.referred_by.value = "Sally Smith";
	f.contact_data.value = "(310) 555-1212";
	f.contact_method.selectedIndex = 2;

	f = e("form_step3");
	f.idea.value = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vitae suscipit ipsum. Integer elementum imperdiet pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer euismod metus auctor ante sagittis at fermentum ligula pharetra. Praesent luctus risus a augue condimentum dapibus. Nunc pellentesque, augue ut malesuada molestie, erat metus sodales ipsum, in vestibulum neque libero at est. In id arcu metus, eu accumsan nunc. Morbi adipiscing libero at lorem aliquam eu elementum arcu lacinia. Morbi ac diam vitae nulla dictum mattis. Suspendisse lorem ante, posuere nec consectetur sed, consectetur eu arcu. Quisque faucibus lectus et velit dignissim a ullamcorper ipsum sodales. Sed vitae scelerisque augue. Morbi mollis lacinia erat, quis faucibus ante sollicitudin a.";
		
}

function trim(string) {
	return string.replace(/^\s+|\s+$/g,"");
}

function validateEmail(string) {
	var apos = string.indexOf("@");
	var dotpos = string.lastIndexOf(".");
	if (apos < 1 || dotpos - apos < 2)
		return false;
	else
		return true;
}

function validateStep1() {
	var f = e("form_step1");
	var valid = true;
	
	//clean up input
	f.first_name.value = trim(f.first_name.value);
	f.last_name.value = trim(f.last_name.value);
	f.email_address.value = trim(f.email_address.value);
	f.referred_by.value = trim(f.referred_by.value);
	f.contact_data.value = trim(f.contact_data.value);
	
	//position
	f.position.style.borderColor = (f.position.selectedIndex == 0) ? "#ff0000" : "#cccccc";
	if (f.position.selectedIndex == 0) valid = false;
	
	//first name
	f.first_name.style.borderColor = (f.first_name.value.length == 0) ? "#ff0000" : "#cccccc";
	if (f.first_name.value.length == 0) valid = false;
	
	//last name
	f.last_name.style.borderColor = (f.last_name.value.length == 0) ? "#ff0000" : "#cccccc";
	if (f.last_name.value.length == 0) valid = false;
	
	//email address
	f.email_address.style.borderColor = (validateEmail(f.email_address.value)) ? "#cccccc" : "#ff0000";
	if (!validateEmail(f.email_address.value)) valid = false;
	
	//referred by
	//optional field, no validation needed
	
	//contact method
	f.contact_method.style.borderColor = (f.contact_method.selectedIndex == 0) ? "#ff0000" : "#cccccc";
	if (f.contact_method.selectedIndex == 0) valid = false;
		
	//contact_data
	f.contact_data.style.borderColor = (f.contact_data.value.length == 0 && f.contact_method.selectedIndex != 4) ? "#ff0000" : "#cccccc";
	if (f.contact_data.value.length == 0 && f.contact_method.selectedIndex != 4) valid = false;

	//error text
	e("error_step1").innerHTML = (valid) ? "" : "Please complete or correct the items outlined in red.";
	
	//continue
	if (valid) showStep(2);
	
}

function validateStep2() {
	var f = e("form_step2");
	var valid = true;
	
	//resume
	f.resume.style.borderColor = (f.resume.value.length == 0) ? "#ff0000" : "#cccccc";
	if (f.resume.value.length == 0) valid = false;

	//error text
	e("error_step2").innerHTML = (valid) ? "" : "Please attach your r&eacute;sum&eacute;.";
	
	//continue
	if (valid) showStep(3);

}

function validateStep3() {
	var f = e("form_step3");
	var valid = true;
	
	//idea
	f.idea.style.borderColor = (f.idea.value.length == 0) ? "#ff0000" : "#cccccc";
	if (f.idea.value.length == 0) valid = false;
	
	//error text
	e("error_step3").innerHTML = (valid) ? "" : "Please complete the question above.";
	
	if (valid) {
		//populate review data
		e("review_position").innerHTML = e("select_position").options[e("select_position").selectedIndex].text;
		e("review_account").innerHTML = jobs[e("select_position").selectedIndex].account;
		e("review_first_name").innerHTML = e("form_step1").first_name.value;
		e("review_last_name").innerHTML = e("form_step1").last_name.value;
		e("review_email_address").innerHTML = e("form_step1").email_address.value;
		e("review_referred_by").innerHTML = e("form_step1").referred_by.value;
		e("review_email_address").innerHTML = e("form_step1").email_address.value;
		e("review_contact_method").innerHTML = e("select_method").options[e("select_method").selectedIndex].text + " " + e("form_step1").contact_data.value;
		e("review_resume").innerHTML = e("form_step2").resume.value;
		e("review_idea").innerHTML = e("form_step3").idea.value;
		
		//toggle css to reset scroll
		e("review").style.overflowY = "hidden";
		e("review").style.display = "none";
		setTimeout('e("review").style.overflowY = "scroll"; e("review").style.display = "block";', 25);
		
		//continue
		showStep(4);
	}

}

function validateStep4() {
	showStep(5);
}

function validateStep5() {
	var f = e("form_step5");
	var valid = true;
	
	//certify
	if (!f.certify.checked) valid = false;
	
	//error text
	e("error_step5").innerHTML = (valid) ? "" : "You must agree to the statement above before continuing.";
	
	//continue
	if (valid) {
		f.backButton.disabled = f.submitButton.disabled = true;
		e("success_step5").innerHTML = "Submitting your r&eacute;sum&eacute.   Please wait..."
		submitApplication();
	}
	
}

function submitApplication() {
	var f = e("application");

	//step 1 items
	f.position.value = e("form_step1").select_position.value;
	f.first_name.value = e("form_step1").first_name.value;
	f.last_name.value = e("form_step1").last_name.value;
	f.email_address.value = e("form_step1").email_address.value;
	f.referred_by.value = e("form_step1").referred_by.value;
	f.contact_method.value = e("form_step1").contact_method.value;
	f.contact_data.value = e("form_step1").contact_data.value;
	
	//step 2 items
	f.appendChild(e("resume"));
	
	//step 3 items
	f.idea.value = e("form_step3").idea.value;
	
	//step 4 items
	// (none)
	
	//step 5 items
	f.certify.value = String(e("form_step5").certify.checked);

	//submit
	f.submit();
	
}
