// JavaScript Document

function changeDisplayView(ele){
	var form = ele.form;
	var vw = '';
	for(i=0; i<form.elements.length; i++){
		vw += form.elements[i].value + ',';
	}
	form.action = form.action + '?vw=' + vw;
	self.location.href = form.action;
}

function toggleEle(ele){
	if(ele.style.display == 'none'){
		ele.style.display = 'block';
	} else {
		ele.style.display = 'none';
	}
}

function openUL(ele){
	document.getElementById(ele).style.display = 'block';
}

function closeUL(ele){
	document.getElementById(ele).style.display = 'none';
}

function confirmDelete(text, url){
	var conf = confirm(text);	
	if(conf){
		self.location.href = url;
	}
}

function comparePasswords(reenter, enter){
	enter = document.getElementById(enter);
	if(reenter.value !== enter.value){
		alert('The passwords do not match. Please try again.');
		enter.value = '';
		reenter.value = '';
	}
}

Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

function onlyDigits(ele){
	var valid = Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
	inputTemp = ele.value;		
	for (x=0; x<inputTemp.length; x++){	
		if(!valid.inArray(inputTemp.charAt(x))){
			inputTemp = inputTemp.substring(0, x) + inputTemp.substring(x+1, inputTemp.length);
		}
	}
	ele.value = inputTemp;
}

function formatPhone(ele){	
	if(event.keyCode !== 8){
		onlyDigits(ele);
		var phone = ele.value;
		switch (phone.length){
			case 0:
				adjusted = phone;
				break;
			case 1:
				adjusted = phone;
				break;
			case 2:
				adjusted = phone;
				break;
			case 3:
				adjusted = "(" + phone + ")";
				break;
			case 4:
				adjusted = "(" + phone.substr(0, 3) + ")" + phone.substr(3, 1);//  
				break;
			case 5:
				adjusted = "(" + phone.substr(0, 3) + ")" + phone.substr(3, 2);
				break;	
			case 6:
				adjusted = "(" + phone.substr(0, 3) + ")" + phone.substr(3, 3);
				break;		
			case 7:
				adjusted = "(" + phone.substr(0, 3) + ")" + phone.substr(3, 3) + "-" + phone.substr(6, phone.length);
				break;
			case 8:
				adjusted = "(" + phone.substr(0, 3) + ")" + phone.substr(3, 3) + "-" + phone.substr(6, phone.length);
				break;
			case 9:
				adjusted = "(" + phone.substr(0, 3) + ")" + phone.substr(3, 3) + "-" + phone.substr(6, phone.length);
				break;
			case 10:
				adjusted = "(" + phone.substr(0, 3) + ")" + phone.substr(3, 3) + "-" + phone.substr(6, 4);
		}
		ele.value = adjusted;
	}
}

function validEmail(ele){
	if(ele.value.length > 0){
		if(!emailCheck(ele.value)){
			ele.value = '';
			ele.focus();
		}
	}
}

function styleForm(){
	for (i=0; i<document.forms.length; i++){
		form = document.forms[i];
		for (j=0; j<form.elements.length; j++){
			switch (form.elements[j].type){
				case "button":
				case "submit":
					form.elements[j].className = "buttons";
					break;
				case "textarea":
					form.elements[j].className = "textbox";
					break;
				case "select-one":
					form.elements[j].className = "select";
					break;
				default:	
					//error class is dependant on the initial class
					if (form.elements[j].className.indexOf('input') > -1){
						form.elements[j].className = "input";
						} else {
							form.elements[j].className = "currency";
					}
					break;
			}
		}
	}
}

//---GENERIC FORM VALIDATOR--------------------------//
/*
The function's arguments include a reference to the form to be validated and
a comma seperated string of element ids to ignore during validation.
The default action is to check each element within the form with the exception
of the elements listed within the 'exempt_string.'
If any of the checked elements are without a value, the element is flagged
by changing the style class and an error field is populated with text.
*/
function validForm(form, exempt_string){
	styleForm();//the form is restyled to non-error style classes
	if (exempt_string == null){
		exempt = new Array();//if the argument is null an empty array is created
		} else {			
			exempt = exempt_string.split(",");//the split function creates an array is the argument contains data
	}
	document.getElementById("error").innerHTML = "";//clear the error field
	var valid = true;//assume no errors are present
	var reg;
	for (i=0; i<form.elements.length; i++){//iterate through all elements
		reg = true;//assume validation is required for current element
		var ele = form.elements[i];
		//compare current element to items listed as exempt by the exempt string argument
		for (j=0; j<exempt.length; j++){
			if (ele == document.getElementById(exempt[j])){
				reg = false;//if found that element is exempt, change required variable to false
			}
		}
		//perform style changes only if element validation is required
		//and current element contains invalid data.
		if (reg == true && (ele.value.length == 0)){
			valid = false;
			document.getElementById("error").innerHTML = "Please complete all highlighted entries.";
			switch (ele.type){
				case "button":
				case "submit":
					ele.className = "buttons";
					break;
				case "textarea":
					ele.className = "textbox_error";
					break;
				case "select-one":
					ele.className = "select_error";
					break;
				default:	
					//error class is dependant on the initial class
					if (form.elements[i].className.indexOf('input') > -1){
						ele.className = "input_error";
						} else {
							ele.className = "currency_error";
					}
					break;	
			}
		}
	}
	return valid;
}