function trim(sString)
{
while (sString.substring(0,1) == ' ')
{
sString = sString.substring(1, sString.length);
}
while (sString.substring(sString.length-1, sString.length) == ' ')
{
sString = sString.substring(0,sString.length-1);
}
return sString;
}

function replaceChars(entry) {
newline = '\n'; // replace this
tab = '\t';
rline = '\r';
//xline = '\x';
add = ''; // with this
temp = "" + entry; // temporary holder


while (temp.indexOf(newline)>-1) {
pos= temp.indexOf(newline);
temp = "" + (temp.substring(0, pos) + add + 
temp.substring((pos + newline.length), temp.length));
}

while (temp.indexOf(tab)>-1) {
pos= temp.indexOf(tab);
temp = "" + (temp.substring(0, pos) + add + 
temp.substring((pos + tab.length), temp.length));
}

while (temp.indexOf(rline)>-1) {
pos= temp.indexOf(rline);
temp = "" + (temp.substring(0, pos) + add + 
temp.substring((pos + rline.length), temp.length));
}

while (temp.indexOf(xline)>-1) {
pos= temp.indexOf(xline);
temp = "" + (temp.substring(0, pos) + add + 
temp.substring((pos + xline.length), temp.length));
}

return temp;
}


function count_words(tbox_input, limit){   

	
	// Strip new line chars and such.
	//alert('Before size is: ' + trim(tbox_input.value).split(" ").length);
	//alert(trim(tbox_input.value).split(" "));
	//	var temp = replaceChars(tbox_input.value);
		
	//	alert('After size is: ' + trim(temp).split(" ").length);
	var no_words = trim(tbox_input.value).split(" ");
//	var no_words = trim(temp).split(" ");

	// If last characters are spaces.
//	if(
	//alert(tbox_input.value.charAt(tbox_input.value.length - 1));
	reduce = 0;
	for(i =0; i<no_words.length; i++){
	
		if(no_words[i] == '\n' || no_words[i] == '\r' || no_words[i] == '\t' || trim(no_words[i]) == ''){
			reduce++;	
		//	console.log('Reducing: ' + no_words[i]);
		}
		//else console.log('not reduting "' + no_words[i] + '"');
	
	}
	//alert('Normal: ' + no_words.length + '\nReduce: ' + (no_words.length - reduce));
	if((no_words.length - reduce) > limit){
		alert(tbox_input.name + " has " +(no_words.length - reduce) + " words");
	   	return false;
	}
	
	return true;
}
   
function showAll(){

	document.getElementById('page_0').style.display='none';
	for(var i=1; i<=4; i++)	document.getElementById('page_' + i).style.display='inline';
	updateMenu(4);
}
// Hides or displays different parts of the form.
function hide_display(page){

	
	var parts = 4;
	// Hide all fields except for the one that needs to be shown.
	for(var i = 0; i <= parts; i++){
		try{ // Used for when I hide the form.
		if(i == page){
			document.getElementById('page_' + i).style.display='inline';
		}
		else{
			//alert('page_' + i);
			document.getElementById('page_' + i).style.display='none';
		}
		}
		catch(e){}
	}
	
	updateMenu(page);
	
	// Upon entering the new page, make it so the top is shown.
	document.getElementById('top').focus();
	document.location.href='#';
	
//	document.getElementById('page_' + page).focus();

}

function updateMenu(page){

	
	//currentPage = page;
	var i = 1;
	var parts = 4;
	var menuTxt = '<ul>';
	
	for(; i <= page; i++)
		//menuTxt += '<li id="step' + i + '" class="current" onclick="if(validate(' + currentPage + ')) hide_display(' + i + ');"></li>';
		menuTxt += '<li id="step' + i + '" class="current" onclick="hide_display(' + i + ');"></li>';
	for(; i <= parts; i++)
		menuTxt += '<li id="step' + i + '"></li>';
	
	menuTxt += '</ul>';
	
	// don't show menu if on inital page.
	if(page == 0) menuTxt = '';
	// Show the menu
	var menu = document.getElementById('menu');
	
	if(navigator.appName == "Microsoft Internet Explorer"){
		menu.innerText = menuTxt;
		menu.innerHTML = menu.innerText;
	}
	else {
		menu.innerHTML = menuTxt;
	}	

}

function changeClass(x) {
	var ID=document.getElementById(x).className='nogo';
	/*var ID=document.getElementById(x);
	ID.style.background = '#FFFFCC';
	ID.style.border = '1px solid #FF0000 !important';
	ID.style.color ='#333';
*/
}
function resetClass(x) {
	var ID=document.getElementById(x).className='';
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, "");
}

function validate(page){

	var required;
	var required_radio;
	var error = 0;
	var container;

	switch(page){
		
		case 1:
			required = new Array('FirstName', 'LastName', 'Email', 'PhoneNumber', 'Address', 'Major', 'GradDate', 'Mentors', 'heardAbout');
			required_radio = new Array('StudentStatus1', 'StudentStatus2');
			container = "StudentStatus";
			
			// ugly
			resetClass('location_option');
			resetClass('location_display');
			if(document.getElementById('research_location1').checked)
				// good
				;
			else if(document.getElementById('research_location2').checked){
			
				// make sure school is entered.
				if(trim(document.getElementById('research_location').value) == ""){
						error++;
						changeClass('location_display');
				}
					
			}
			else{
				error++;
				changeClass('location_option');
			}

			if(trim(document.getElementById('Email').value) != trim(document.getElementById('EmailCheck').value)){
				alert('Emails do not match!');
				error++;
				changeClass('Email');
			}
			break;
		
		case 2:
			required = new Array('Project_Title', 'Objective', 'Abstract');		
			required_radio = new Array('ResearchArea1', 'ResearchArea2', 'ResearchArea3', 'ResearchArea4', 'ResearchArea5', 'ResearchArea6', 'ResearchArea7', 'ResearchArea8');
			container = "ResearchArea";
			
			// Check word counts
			if(!count_words(document.getElementById('Objective'), 50) 
			|| !count_words(document.getElementById('Abstract'), 300) 
			|| !count_words(document.getElementById('Project_Title'), 20))
			{
				error++;
			}

			break;
			
		case 3:
			required = new Array();		
			required_radio = new Array('PresentationTime1', 'PresentationTime2', 'PresentationTime3', 'PresentationTime4');
			container = 'PresentationTime';
			break;
			
		case 4:
			required = new Array();		
			required_radio = new Array();
			break;
	}
	resetClass(container);
	required.reverse;

	for(var i=0;i<required.length;i++) {

		var obj = required[i];
		//alert(obj);
		resetClass(obj);
		if(document.getElementById(obj).value.trim().length == 0 || document.getElementById(obj).value == null) {
			changeClass(obj);
		//	alert('Changed ' + obj);
			error+=1;
		}
	}
	
	required_radio.reverse;
	var checked = 0;
	for(var i=0;i<required_radio.length;i++) {

		var obj = required_radio[i];
	//	alert(obj);
		if(document.getElementById(obj).checked) {
			checked = 0;
			break;
		}
		else{
			checked++;
		}	
	}
	if(checked > 0) { 
	//	for(var i=0;i<required_radio.length;i++) {
	//		changeClass(required_radio[i]); 
	//	}
		changeClass(container);
		error+=1; 
	}
	
	if(error == 0) {
		return true;
	} else {
		document.getElementById('top').focus();
		document.location.href='#';
		//resetClass('error');
		//new Effect.Appear('error', {duration: .5});
		//new Effect.Highlight('error', {delay: .5});
	
		return false;
	}

	return false;	

}
