/******************************************************************************
* File:		scripts.js
* Purpose:	Javascripts for general use
* Author:	James Booth  CST205
* Date:		Dec 12, 2002
*/

/******************************************************************************
* Function:	makeCookie
* Purpose:	Allow any page to make a cookie
* Params:	name: Name of cookie
*			value: Value to be stored
*			days: Number of days until expiry
*/
function makeCookie(name, value, days)
{
	var expDate = new Date();
	expDate.setTime(expDate.getTime() + (86400000 * days));

	document.cookie=name + "=" + escape(value) + ";expires=" +
		expDate.toGMTString() + ";";
}

/******************************************************************************
* Function:	expireCookie()
* Purpose:	Expires a cookie
* Params:	name: Name of cookie
*			value: Value of empty cookie
*/
function expireCookie(name, value)
{
	document.cookie=name + "=" + escape(value) + ";";
}

/******************************************************************************
* Function:	eatCookie
* Purpose:	Allow any page to eat a cookie
* Params:	name: Name of cookie
*/
function eatCookie(name, value)
{
	var cookieStr = " " + document.cookie + ";";
	var valStart = cookieStr.indexOf(name);
	var value = "EMPTY";
	if(valStart != -1)
	{
		value = cookieStr.substring(cookieStr.indexOf(name) + name.length + 1,
			cookieStr.indexOf(";", cookieStr.indexOf(name)));
	}
	return value;
}

/******************************************************************************
* Function:	checkEmail
* Purpose:	Checks an email against a regular expression for valid email
* Params:	email: The email to check
*/
function checkEmail(email)
{
	re = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	good = re.test(email);
	if(!good)
	{
		alert("Invalid email address: " + email + "  Please enter a valid email.");
	}
	return good;
}

/******************************************************************************
* Function:	checkAlpha
* Purpose:	Checks an entry against a regular expression for valid alphanumeric
*			character
* Params:	field: The field to check
*/
function checkAlpha(field)
{
	re = /^[a-zA-Z0-9_-]+$/;
	good = re.test(field.value);
	if(!good)
	{
		alert("Invalid entry for " + field.name + ": " + field.value +
			".  Please use only alphanumeric characters.");
	}
	return good;
}

/******************************************************************************
* Function:	checkAlphaSpace
* Purpose:	Checks an entry against a regular expression for valid alphanumeric
*			character
* Params:	field: The field to check
*/
function checkAlphaSpace(field)
{
	re = /^[a-zA-Z0-9_ -]+$/;
	good = re.test(field.value);
	if(!good)
	{
		alert("Invalid entry for " + field.name + ": " + field.value +
			".  Please use only alphanumeric characters.");
	}
	return good;
}

/******************************************************************************
* Function:	checkPostal
* Purpose:	Checks an postal code against a regular expression for valid code
* Params:	pcode: The postal code to check
*/
function checkPostal(pcode)
{
	// re for Canadian postal code
	re = /^[a-zA-Z][0-9][a-zA-Z][0-9][a-zA-Z][0-9]$/;
	// re2 for American zip code
	re2 = /^[0-9]{5}$/;
	good = (re.test(pcode) || re2.test(pcode));
	if(!good)
	{
		alert("Postal/Zip code is invalid: " + pcode);
	}
	return good;
}

/******************************************************************************
* Function:	checkNum
* Purpose:	Checks that a numeric field only has numbers
* Params:	field: The field to check
*/
function checkNum(field)
{
	re = /^[0-9]+[.]?[0-9]*$/;
	good = re.test(field.value);
	if(!good)
	{
		alert("Invalid entry for " + field.name + ": " + field.value +
			".  Please use only numbers & a decimal.");
	}
	return good;
}

/******************************************************************************
* Function:	checkHref
* Purpose:	Checks that an href contains valid chars
* Params:	field: The field to check
*/
function checkHref(field)
{
	re = /^([a-zA-Z0-9\/~.:@-]+)|([ ]*)$/;
	good = re.test(field.value);
	if(!good)
	{
		alert("Invalid entry for " + field.name + ": " + field.value +
			".  Please enter a valid URL.");
	}
	return good;
}

/******************************************************************************
* Function:	checkText
* Purpose:	Checks that a text field only has text (no tags)
* Params:	field: The field to check
*/
function checkText(field)
{
	re = /^[^<>]*$/;
	isGood = re.test(field.value);
	if(!isGood)
	{
		alert("Invalid entry for " + field.name +
			".  Please do not use special characters('<', '>').");
	}
	return isGood;
}