/*
	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("SearchJavaScript").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("SearchJavaScript").click();
}
*/


function isNumericKeyStroke(e) {

	var keyCode;
	var keyChar;
	var isDigit;

	// IE
	if ( window.event ) {
		keyCode = e.keyCode;
	}

	// Netscape/Firefox/Opera
	else if ( e.which ) {
		keyCode = e.which;
	}

	// if under 57 (bunch of events and keys and digits 0-9 but not space bar) or (96 to 105 is numpad)
	if ( ( keyCode <= 57 && keyCode != 32 ) || ( keyCode >= 96 && keyCode <= 105 ) ) {
		return true;
	}

	return false;
}


function formatNumber(num,dec,thou,pnt,curr1,curr2,n1,n2) {

	var x = Math.round(num * Math.pow(10,dec));

	if ( x >= 0 ) {
		n1=n2='';
	}

	var y = (''+Math.abs(x)).split('');

	var z = y.length - dec;
	
	if ( z < 0 ) {
		z--;
	}

	for ( var i = z; i < 0; i++ ) {
		y.unshift('0');
	}

	y.splice(z, 0, pnt);

	while ( z > 3 ) {
		z-=3;
		y.splice(z,0,thou);
	}
	
	var r = curr1+n1+y.join('')+n2+curr2;
	
	return r;
}
