/*
	Functions to show and hide elements
	-----------------------------------------------------------------------------
*/

/*
	Shows the element
*/
function showElement(element) {
	element.style.display = "inline";
	return;
}


/*
	Hides the element
*/
function hideElement(element) {
	element.style.display = "none";
	return;
}


/*
	Toggles the element
*/
function toggleElement(element) {

	if (element.style.display == "inline")
		hideElement(element);

	else
		showElement(element);

	return;
}


/*
	Swaps the two elements
*/
function swapElement(element1,element2) {

	if (element1.style.display == "inline") {
		hideElement(element1);
		showElement(element2);
	}

	else {
		showElement(element1);
		hideElement(element2);
	}

	return;
}


function validateEmail(Email) {

	var exp = new RegExp("^[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}$");

	if (exp.test(Email.value) == true)
		return true;

	else {
		alert("Invalid e-mail address.");
		Email.focus();
		return false;
	}

}


function validateMailCode(Country,MailCode) {

	var exp_can = new RegExp("^[a-zA-Z][0-9][a-zA-Z][ ]?[0-9][a-zA-Z][0-9]$");
	var exp_usa = new RegExp("^[0-9]{5}([- ]?[0-9]{4})?$");

	if (Country.options[Country.selectedIndex].value == "Canada") {

		if (exp_can.test(MailCode.value) == true)
			return true;

		else {
			alert("Invalid postal code.\nShould be of form: X2X 2X2");
			MailCode.focus();
			return false;
		}
	}

	if (Country.options[Country.selectedIndex].value == "United States") {

		if (exp_usa.test(MailCode.value) == true)
			return true;

		else {
			alert("Invalid zip code.\nShould be of form: 11111 or 11111-1111");
			MailCode.focus();
			return false;
		}
	}

	return true;
}


function validatePhone(Phone) {

	var exp_phone = new RegExp("^[\(]?[2-9][0-9]{2}[\)]?[- ]?[2-9][0-9]{2}[- ]?[0-9]{4}$");

	if (exp_phone.test(Phone.value) == true)
		return true;

	else {
		alert("Invalid phone number. Some accepted formats are:\nXXXXXXXXXX\nXXX XXX XXXX\nXXX-XXX-XXXX\n(XXX) XXX-XXXX");
		Phone.focus();
		return false;
	}

	return true;
}


function validatePhoneSplit(AreaCode,Number) {

	var exp_area = new RegExp("^[2-9][0-9]{2}$");
	var exp_num = new RegExp("^[2-9][0-9]{2}[- ]?[0-9]{4}$");

	if (AreaCode.value == "" && Number.value == "")
		return true;

	if (AreaCode.value == "" && Number.value != "") {
		alert("Cannot leave area code empty if phone number is entered.");
		AreaCode.focus();
		return false;
	}

	if (AreaCode.value != "" && Number.value == "") {
		alert("Cannot leave phone number empty if area code is entered.");
		Number.focus();
		return false;
	}

	if (exp_area.test(AreaCode.value) == false) {
		alert("Invalid area code.");
		AreaCode.focus();
		return false;
	}

	if (exp_num.test(Number.value) == false) {
		alert("Invalid phone number.");
		Number.focus();
		return false;
	}

	return true;
}


function validateDropDown(element,message) {

	if (element.options[element.selectedIndex].value == 0) {
		alert(message);
		element.focus();
		return false;
	}

	return true;
}


function validateTextBox(element,message) {

	if (element.value == "") {
		alert(message);
		element.focus();
		return false;
	}

	return true;
}


function validateMinutes(Minutes) {

	var exp_mins = new RegExp("^[0-5]?[0-9]$");

	if (exp_mins.test(Minutes.value) == true)
		return true;

	else {
		alert("Invalid value entered for minutes.");
		Minutes.focus();
		return false;
	}

	return true;
}


function validateDate(DateElement) {

	var exp_date = new RegExp("^(([1][9][0-9]{2})|([2][0][0-9]{2}))[- ]?(([0][0-9])|([1][0-2]))[- ]?(([0-2][0-9])|([3][0-1]))$");

	if (exp_date.test(DateElement.value) == false) {
		alert("Invalid date.");
		DateElement.focus();
		return false;
	}

	return true;
}


function stripDate(DateString) {

	date_str = new String(DateString);
	date_str = date_str.replace(/ /g,"");
	date_str = date_str.replace(/-/g,"");

	return date_str;
}


function pageIndex(index) {

	document.getElementById("PageIndex").value = index;

	document.getElementById("Search").click();
}


function sortUserSearchResults(fieldname) {

	// if field didnt change, toggle direction
	if ( document.getElementById("Order").value == fieldname ) {
		if ( document.getElementById("Direction").value == "ASC" ) {
			document.getElementById("Direction").value = "DESC";
		}

		else {
			document.getElementById("Direction").value = "ASC";
		}
	}

	//else sort ascending by that column
	else {
		document.getElementById("Order").value = fieldname;
		document.getElementById("Direction").value = "ASC";
	}

	document.getElementById("PageIndex").value = "0";

	document.getElementById("Search").click();
}

