// get variables from query string
	function getQueryVariable(variable) {
		var query = window.location.search.substring(1);
		var vars = query.split("&");
		for (var i=0;i<vars.length;i++) {
			var pair = vars[i].split("=");
			if (pair[0] == variable) {
				return pair[1];
			}
		} 
		return "";
	}

	if(typeof(linkID)=="undefined") {
		linkID = getQueryVariable("linkID");
	}

// Preload wait animation for displayeventinfo, etc...
	image1 = new Image();
	image1.src = (typeof(imageWWWPath)!=undefined ? '/evenue/linkID='+linkID+'/images' : imageWWWPath) + '/waitani.gif';
	image2 = new Image();
	image2.src = (typeof(styleWWWPath)!=undefined ? '/evenue/linkID='+linkID+'/stylesheets' : styleWWWPath) + '/style.css';

/* =================================================
	Configuration Variables
================================================= */

// there are generally two header types, images and text...
// set to images if your headers are images
// set to text if your headers are text
	var headType = "text";

// set to whatever you want the text for 00:00 to display, eg, midnight, 00:00 or time TBD
	var zerotimetext = "time TBD";

// set to 1 to turn on, 0 to off
	var showRenewalLinks = 1;
	var showStudentLinks = 0;
	var showDonationLinks = 0;
	var showPAHreissue = 1;

// parent group code
	var bypassGroup = (linkID.indexOf("695")>-1 ? "TIX" : "GS");

// hidden group codes 
	var hiddenGroups = new Array(
		"HIDDEN",
		"PACMON"
	);

/* =================================================
	Functions
================================================= */
// finds items in a single dimensional array, returns true or false
	function inArray(needle, haystack) {
		if(typeof(needle)=="undefined" || typeof(haystack)!="object") return false;
		for(var hsi=0; hsi<haystack.length; hsi++) {
			if(haystack[hsi] == needle) return true;
		}
		return false;
	}
	
	function isChildGroup(childGroup, parentGroup) {
		if(childGroup==parentGroup) return true;
		
		if(typeof(fullGroupList)=="object") {
			var t_groupCode = childGroup;
			while(t_groupCode!="" && t_groupCode!=bypassGroup) {
				if(t_groupCode==parentGroup) {
					return true;
					break;
				}
				
				for(var gi=0; gi<fullGroupList.length; gi++) {
					if(fullGroupList[gi].code==t_groupCode) {
						t_groupCode = fullGroupList[gi].parent;
						break;
					}
				}
			}
		}
		
		return false;
	}

	function isHiddenGroup(groupCode) {
		if(groupCode.indexOf("HIDDEN")==0 || groupCode.indexOf("PR:")==0)
			return true;
		
		if(inArray(groupCode, hiddenGroups)) {
			return true;
		}
		
		for(var gi=0; gi<hiddenGroups.length; gi++) {
			if(isChildGroup(groupCode, hiddenGroups[gi])) {
				return true;
				break;
			}
		}
		
		return false;
	}

// hidden events by group
	function isEventInHiddenGroup(groupCode) {
		if(groupCode.indexOf("HIDDEN")==0 || groupCode.indexOf("PR:")==0)
			return true;
		
		var parentGroup = groupCode;
		while(parentGroup!="" && !isHiddenGroup(parentGroup)) {
			for(var i=0; i<fullGroupList.length; i++) {
				if(parentGroup == fullGroupList[i].code) {
					parentGroup = fullGroupList[i].parent;
					break;
				}
			}
		}
		return (isHiddenGroup(parentGroup) ? true : false);
	}

// set to 1 to include Canadian provinces
	var useCanadianProvince = 0;

// order of address lines
	function makeAddrOrder(number, type, req) {
		this.number = number;
		this.type = type;
		this.req = req;
	}
	var addrOrder = new Array();
	addrOrder[0] = new makeAddrOrder(2, "text", 1);
	addrOrder[1] = new makeAddrOrder(1, "text", 0);
	addrOrder[2] = new makeAddrOrder(3, "hidden", 0);

// array of days of the week (abbreviated & full)
	var dowa =  new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
	var dowf =  new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

// array of months of the year (abbreviated & full)
	var moya = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
	var moyf = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

// array of credit cards used -- put the name of the cc in the array below to add it to the site.
// remove it from the array to remove it from the site
//	var ccUsed = new Array("Visa", "MasterCard", "Discover", "Amex");
	var ccUsed = new Array("Visa", "MasterCard", "Discover");

// ticket office phone number... used throughout the site in "helper" text... ie (for more information call the ticket office at XXXXXX)
	var phoneNumber = "XXXXXXXXXX";

// trim leading and trailing spaces;
	function trim(field){
		var badName = field.value;
		var goodName = badName.replace(/^\s+|\s+$/ig, "");
		field.value = goodName;
	}

// changes all letters to uppercase
	function allCaps(field) {
		var theString = field.value.toUpperCase();
		field.value = theString;
	}

// strip non numerics
	function numbersOnly(field){
		var badName = field.value;
		var goodName = badName.replace(/[^0-9]/ig, "");
		field.value = goodName;
	}

// strip non alphabetics
	function alphaOnly(field){
		var badName = field.value;
		var goodName = badName.replace(/[^a-zA-Z -]/ig, "");
		field.value = goodName;
	}

// strip html coding from strings
	function stripHTML(string) {
		string = string.replace(/<br>/ig, " ");
		return string.replace(/(<([^>]+)>)/ig, "");
	}

// string cleaner
	function cleaner(string) {
		// fix break tags
		string = string.replace(/<br>/ig, " ");
		
		// remove html tags
		string = stripHTML(string);
		
		// fix apostrophes
		string = string.replace(/['`]/ig, "&#39;");
		string = string.replace(/"/ig, "&quot;");
		
		// trim leading/trailing spaces
		string = string.replace(/^\s+|\s+$/ig, "");
		
		// remove extra spaces
		while(string.indexOf("  ")>-1) {
			string = string.replace(/  /g, " ");
		}
		
		return string;
	}

// remove funky characs from string for alert
	function alertCleaner(string) {
		string = cleaner(string);
		string = string.replace(/&nbsp;/ig, ' ');
		string = string.replace(/&quot;/ig, '\"');
		string = string.replace(/&#39;/ig, "\'");
		return string;
	}

// returns string with html tags closed
	function cleanerHTML(string) {
		if(typeof(string)!="string") return string;
		
		var closingTags = "";
		var htmlTags = string.match(/<\/?([a-zA-Z])+(>|\s)/ig);
		if(htmlTags==null) return string;
		
		for(var a=htmlTags.length-1; a>=0; a--) {
			if(htmlTags[a]!="") {
				var t_tag =  htmlTags[a].slice(1, htmlTags[a].length-1);
				if(t_tag.charAt(0)=="/") {
					for(var b=a; b>=0; b--) {
						var tt_tag =  htmlTags[b].slice(1, htmlTags[b].length-1);
						if("/"+tt_tag==t_tag) {
							htmlTags[b] = "";
						}
					}
				} else if(t_tag!="more") {
					closingTags += '</'+t_tag+'>';
				}
			}
		}
		return (string + closingTags);
	}

// generic rollover function
	function flip(image, type) {
		document[image].src = imageWWWPath + "/" + image + type + ".gif";
	}

// generic pop up window function
	function pop(url, w, h) {
		window.open(url, '', 'scrollbars=yes,resizable=yes,width='+w+',height='+h+'');
	}

// function to print the header on each page
// if your headers are images, the image parameter is the filename and the text parameter is the alt text
// if your headers are text, the image parameter is ignored and the text parameter is the text printed
	function printHead(image, text) {
		if(headType == "image") {
			document.write(
				'<table cellpadding="0" cellspacing="0" border="0" width="100%">',
				'	<tr>',
				'		<td width="34"><img src="', imageWWWPath, '/head-l.gif" width="34" height="19"  border="0"></td>',
				'		<td width="100%"><img src="', imageWWWPath, '/head-',image,'.gif" height="19" alt="',text,'" border="0"></td>',
				'	</tr>',
				'</table>'
			);
		} else if(headType == "text") {
			//custom code, custom printhead
			document.write(
				'<table width="100%" cellspacing="0" cellpadding="0">',
				' <tr>',
				'  <td align="left" class="headline"><img src="', imageWWWPath, '/utenn/headline-l.gif" border="0" width="1" height="3"></td>',
				'  <td align="left" width="100%" class="headline"><img src="', imageWWWPath, '/blank.gif" border="0" width="1" height="3"></td>',
				'  <td align="right" class="headline"><img src="', imageWWWPath, '/utenn/headline-r.gif" border="0" width="1" height="3"></td>',
				' </tr>',
				' <tr>',
				'  <td align="left" colspan="3" class="header">&nbsp;',text,'&nbsp;</td>',
				' </tr>',
				' <tr>',
				'  <td align="left" class="headline"><img src="', imageWWWPath, '/utenn/headline-l.gif" border="0" width="1" height="3"></td>',
				'  <td align="left" width="100%" class="headline"><img src="', imageWWWPath, '/blank.gif" border="0" width="1" height="3"></td>',
				'  <td align="right" class="headline"><img src="', imageWWWPath, '/utenn/headline-r.gif" border="0" width="1" height="3"></td>',
				' </tr>',
				'</table>'
			);
		}
		return true;
	}
	
	//custom code, enhancment addthis script only, no header 
	function printAddthis(writeAddthis) {	
		if(writeAddthis == "addthis") {
			 document.write(  
			 	'<table width="100%" cellpadding="0" cellspacing="0" border="0">',
				'  <tr>',
				'	<td id="printheadmargin" align="right">'
			 );  	   
			 
			 //share button	
			 document.write(
			 	'<a href="https://www.addthis.com/bookmark.php" onmouseover="return addthis_open(this, \'\', \'[URL]\', \'[TITLE]\')" onmouseout="addthis_close()" onclick="return addthis_sendto()" style="text-decoration: none;"><img src="', imageWWWPath, '/utenn/bookmark_addthis.jpg" width="110" height="20" border="0" alt="" /></a>' 
			//	'<a href="http://www.addthis.com/bookmark.php?v=250" onmouseover="return addthis_open(this, \'\', \'[URL]\', \'[TITLE]\')" onmouseout="addthis_close()" onclick="return addthis_sendto()"><img src="', imageWWWPath, '/utenn/bookmark_addthis.jpg" width="102" height="20" border="0" alt="" /></a>'
			 );	 
			document.write(
				'</td></tr></table>'
			);	
		}		
	}				

// supporting function to printBreadCrumbs
	function printParent(group) {
		var match = -1;
		for(var i=0; i < fullGroupList.length; i++) {
			if(group == fullGroupList[i].code) {
				match = i;
				if(fullGroupList[i].parent != "") {
					printParent(fullGroupList[i].parent);
				}
			}
		}
		if(match >= 0) {
			//org: document.write('<span>', cleaner(fullGroupList[match].description) ,' &gt; </span>');
			//brainstorm #27, clickable breadcrumbs link 1 of 2
			document.write('<a href="/cgi-bin/ncommerce3/SEGetGroupList?groupCode=',fullGroupList[match].code,'&linkID=', linkID, '&shopperContext=&caller=&appCode=">', cleaner(fullGroupList[match].description) ,'</a> &gt; ');
		}
	}

// function to print "Bread Crumb" type navigation
	function printBreadCrumbs(group) {
		if(group.code.indexOf("RSF:")==0 || group.code.indexOf("PR:")==0) return;
		
		document.write('<div id="breadcrumbs">');
		if(group.code != "") {
			for(var i=0; i < fullGroupList.length; i++) {
				if(group.code == fullGroupList[i].code && fullGroupList[i].parent != "") {
					printParent(fullGroupList[i].parent);
				}
			}
			//org: document.write('<strong>', cleaner(group.description) ,'</strong>'); 
			//brainstorm #27, clickable breadcrumbs link 2 of 2 
			document.write('<strong><a href="/cgi-bin/ncommerce3/SEGetGroupList?groupCode=', group.code,'&linkID=', linkID, '&shopperContext=&caller=&appCode=">', cleaner(group.description) ,'</a></strong>');			
		}
		document.write('</div>');
		return;
	}

// function to get the group name	
	function getGroupName(group) {
		var name="";
		for(var i=0; i < fullGroupList.length; i++) {
			if(group == fullGroupList[i].code) {
				name = fullGroupList[i].description;
				break;
			}
		}
		return name;
	}

/* =================================================
	Date object / Calendar functions
================================================= */
// calculate amount of days in a given month (0-11) and return number.
	function daysInMonth(month,year) {
		var dd = new Date((month==11 ? year+1 : year), (month==11 ? 0 : month+1), 0);
		return dd.getDate();
	}
	
// return date object at the start of incremented month
	function incDateByMonth(initDate, incAmount) {
		initMonth = initDate.getMonth();
		initYear = initDate.getFullYear();
		var incDate = new Date((initMonth+incAmount<12 ? initYear : initYear+1), (initMonth+incAmount<12 ? initMonth+incAmount : initMonth+incAmount-12), 1);
		return incDate;
	}
	
// return date object at the start of decremented month
	function decDateByMonth(initDate, decAmount) {
		initMonth = initDate.getMonth();
		initYear = initDate.getFullYear();
		var decDate = new Date((initMonth-decAmount>0 ? initYear : initYear-1), (initMonth-decAmount>0 ? initMonth-decAmount : initMonth-decAmount+12), 1);
		return decDate;
	}
	
// return date object that is the last date of month
	function lastDayOfMonth(initDate) {
		var incAmount = 1;
		initMonth = initDate.getMonth();
		initYear = initDate.getFullYear();
		var incDate = new Date((initMonth+incAmount<12 ? initYear : initYear+1), (initMonth+incAmount<12 ? initMonth+incAmount : initMonth+incAmount-12), 0, 23, 59, 59);
		return incDate;
	}
	
// returns date object from string
	function convertDateString(string) {
		if(string.match(/\d{1,2}\/\d{1,2}\/\d{4}/ig) == string) {
			string = string.split("/");
			return (new Date(string[2], (string[0]-1), string[1]));
		} else {
			string = string.split("-");
			return (new Date(string[0], (string[1]-1), string[2]));
		}
	}

// print calendar link
	function printCalendarLink(linkID, groupCode) {
		var date1 = new Date();
		var date2 = new Date(date1.getFullYear()+1, date1.getMonth(), 0);

		var calendarLink = 
			'/cgi-bin/ncommerce3/SEGetEventList?linkID='+ linkID +
			'&groupCode='+ groupCode +
			'&timeDateFrom='+ 	date1.getFullYear() +'-'+ (date1.getMonth()+1) +'-'+ date1.getDate() +'-00.00.00'+
			'&timeDateTo='+ 	date2.getFullYear() +'-'+ (date2.getMonth()+1) +'-'+ date2.getDate() +'-00.00.00';
		return calendarLink;
	}

/* =================================================
	Formatting strings
================================================= */
// function to format an amount eg xxx.xx
	function formatAmt(amount) {
		var fmt_amt = Math.round(amount * 100) / 100;
		fmt_amt = fmt_amt.toString();
		var ipos = fmt_amt.indexOf(".");
		if(ipos == -1)
			fmt_amt += ".00";
		else if(fmt_amt.substr(ipos + 1).length == 1)
			fmt_amt += "0";
		return fmt_amt;
	}

// helper function eg turns 3 into 03
	function twoForm(n) {
		return (n < 10 ? "0"+n : n);
	}

// convert time string (ie: "2008-04-26 14:00:00.000000") to proper date format.
	function convertTimeStamp(str) {
		if(str == "")
			return "";
		
		regExp = /(\d{4})-(\d\d)-(\d\d)\s(\d\d):(\d\d):(\d\d)\.\d{6}/ ;
		if(!regExp.test(str))
			return "Bad Date" ;
		
		arr = str.match(regExp) ;
		return new Date(arr[1], arr[2] - 1, arr[3], arr[4], arr[5], arr[6]) ;
	}

// 6.91
	function formatDate(strD)
	{
		if(strD == "" || strD == "Partial" || strD == "Multiple")
		{
			return strD;
		}
		else
		{
			dateArr = strD.split("-");
			return (dateArr[1] + "-" + dateArr[2] + "-" + dateArr[0]);
		}
	}

// function to make the time a nice format
	function timeFormat(time) {
		if(time == "") {
			var hm = "n/a";
		} else {
			var m = time.getMinutes();
			var h24 = time.getHours();
			var h = h24 > 12 ? h24 - 12 : (h24==0 ? 12 : h24);
			
			if(m == 0 && h24 == 0) {
				hm = zerotimetext;
			} else if(m == 0 && h24 == 12) {
				hm = "Noon";
			} else {
				hm = h + ":" +  twoForm(m) + (h24 < 12 ? " am" : " pm");
			}
		}

		return ('<span class="nowrap">'+hm+'</span>');
	}

// returns 24-hour format time (ie: 23:00)
	function timeFormat2(time) {
		if(time == "") {
			return "";
		} else {
			var h = time.getHours();
			var m = time.getMinutes();
			return (twoForm(h) +":"+ twoForm(m));
		}
	}

// function to make the date a nice format
	function dateFormat(time) {
		if(time == "") {
			var formatedTime = "n/a";
		} else {
			var formatedTime = dowf[time.getDay()] + ", " + moyf[time.getMonth()] + " " + time.getDate() + ", " + time.getFullYear();
		}

		return formatedTime;
	}

// returns date format "Sun, Jan 1, 2011" 
	function shortDateFormat(time, ismultiday, endtime) {
		if(typeof(time)=="undefined" || time == "") {
			var formatedTime = "n/a";
			
		} else if(
			typeof(ismultiday)!="undefined" && ismultiday=="1" && 
			typeof(endtime)!="undefined" && endtime!="" && 
			endtime.toString()!=time.toString()
		) {
			var formatedTime =
				'Begins: '+ dowa[time.getDay()] +', '+ moya[time.getMonth()] +'-'+ time.getDate() +'-'+ time.getFullYear() + '<br>'+
				'Ends: '+ dowa[endtime.getDay()] +', '+ moya[endtime.getMonth()] +'-'+ endtime.getDate() +'-'+ endtime.getFullYear();
			
		} else {
			var formatedTime = dowa[time.getDay()] +', '+ moya[time.getMonth()] +' '+ time.getDate() +', '+ time.getFullYear();
		}
	
		return formatedTime;
	}

// returns date format "MM/DD/YYYY" 
	function shortestDateFormat(time) {
		if(typeof(time)=="undefined" || time == "")
			return "";
		var formatedTime = (time.getMonth()+1) + '/' + time.getDate() + '/' + time.getFullYear();
		return formatedTime;
	}

// returns date format "MM/DD/YYYY 12:00pm" 
	function shortDateTimeFormat(time) {
		if(typeof(time)=="undefined" || time == "")
			return "";
		var formatedTime = (time.getMonth()+1) + '/' + time.getDate() + '/' + time.getFullYear() + ' ' + timeFormat(time);
		return formatedTime;
	}

// returns date format "yyyy-mm-dd" 
	function shortestDateFormat2(time) {
		if(typeof(time)=="undefined" || time == "")
			return "";
		var formatedTime = time.getFullYear() + '-' + (time.getMonth()+1) + '-' + time.getDate();
		return formatedTime;
	}

// If left undefined, date format functions below may fail on some pages.
	if(typeof(pageName)=="undefined") var pageName = "";

// function to make the date & time a nice format (with labels)
	function dateTimeFormat(time, ismultiday, endtime) {
		if(typeof(time)=="undefined" || time == "") {
			var formatedTime = "date &amp; time n/a";
			
		} else if(
			typeof(ismultiday)!="undefined" && ismultiday=="1" && 
			typeof(endtime)!="undefined" && endtime!="" && 
			endtime.toString()!=time.toString()
		) {
			var formatedTime =
				'<strong>Event Begins:</strong> '+ dateFormat(time) + ' at ' + timeFormat(time) + '</p><p class="eventDate">'+
				'<strong>Event Ends:</strong> '+ dateFormat(endtime) + ' at ' + timeFormat(endtime);
			
		} else {
			var formatedTime =
				'<strong>Event Date:</strong> ' + dateFormat(time) + ' at ' + timeFormat(time);
		}

		return formatedTime;
	}

// function to make the date & time a nice format (no labels)
	function dateTimeFormat2(time, ismultiday, endtime) {
		if(typeof(time)=="undefined" || time == "") {
			var formatedTime = "date &amp; time n/a";
			
		} else if(
			typeof(ismultiday)!="undefined" && ismultiday=="1" && 
			typeof(endtime)!="undefined" && endtime!="" && 
			endtime.toString()!=time.toString()
		) {
			var formatedTime =
				'Event Begins: '+ dateFormat(time) + ' at ' + timeFormat(time) + '<br>'+
				'Event Ends: '+ dateFormat(endtime) + ' at ' + timeFormat(endtime);
			
		} else {
			var formatedTime = dateFormat(time) + ' at ' + timeFormat(time);
		}

		return formatedTime;
	}

// function to make the date a nice format for pop up boxes (no &nbsp;)
	function popdateFormat(time) {
		var formatedTime = dateTimeFormat2(time)
		formatedTime = formatedTime.replace(/&nbsp;/ig, ' ');
		return formatedTime;
	}

// formats a number to xxx.xx
	function amountFormat(amount) {
		var amtFmt = Math.round(amount * 100) / 100;
		amtFmt = amtFmt.toString();
		var ipos = amtFmt.indexOf(".");
		if(ipos == -1) {
			amtFmt += ".00";
		} else if(amtFmt.substr(ipos + 1).length == 1) {
			amtFmt += "0";
		}
		return amtFmt;
	}

// returns a string in currency format (x,xxx.xx)
	function formatCurrency(amount) {
		var amtFmt = [];
		var amt = parseFloat(amount);
		if(isNaN(amt)) return amount;
		
		amt = amt.toFixed(2).toString();
		amt = amt.split(".");
		amt1 = amt[0];
		amt2 = amt[1];
		while(amt1.length>3) {
			var t_amt = amt1.substr(amt1.length-3);
			amtFmt.unshift(t_amt);
			amt1 = amt1.substr(0,amt1.length-3);
		}
		if(amt1.length>0) amtFmt.unshift(amt1);
		amt1 = amtFmt.join(",");
		
		return (amt1 + "." + amt2);
	}

// prints error message, centered and in error style
	function printError(errorMsg) {
		document.write(
			'<br><div align="center" class="error">', errorMsg ,'</div><br>'
		);
	}

// prints the event head in the cart & orderok pages
	function printCartTitle(text, colspan) {
		if(colspan == "") {
			colspan = 10;
		}
		document.write(
			'<tr><td colspan="',colspan,'" class="cartbox">',text,'</td></tr>'
		);
	}

// prints head lines in cart & orderok pages
	function printTypeHead(text, colspan) {
		if(colspan == "") {
			colspan = 10;
		}
		document.write(
		//	'<tr><td colspan="',colspan,'">&nbsp;</td></tr>',
			'<tr><td colspan="',colspan,'" class="sectionhead">',text,'</td></tr>'
		);
	}

// Opens search box on SE
	function launch() {
		remote = open(seWWWPath+"/datePicker.html", "child", "resizable,dependent=yes,width=400,height=400");
	}

// Works with launch function	for the datepicker
	function callBack(child, groupCode, timeDateFrom, timeDateTo) {
		document.dateForm.timeDateFrom.value = timeDateFrom;
		document.dateForm.timeDateTo.value = timeDateTo;
		document.dateForm.groupCode.value = groupCode;
		child.close();
		document.dateForm.submit();
	}
	
// Validates email address with the following rules:
// 1. One or more characters before the "@"
// 2. An optional "[", because user@[255.255.255.0] is a valid e-mail
// 3. A sequence of letters, numbers, and periods, which are all valid domain or IP address characters
// 4. A period followed by a 2-3 letter suffix
// 5. An optional "]"

	function emailValidate(email) {
		var str = email.value; // email string
  
		var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
		var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4})(\]?)$/; // valid

		if (!reg1.test(str) && reg2.test(str)) { // if syntax is valid
			return true;
		}
		
		window.status = "Please enter a valid Internet e-mail address";
		email.focus();
		email.select();
		
		return false;
	}

// validates account number
	function accntValidate(account) {
		var pe = /[0-9]/;
		var val = account.value;

		if(!(val.match(pe)) ) {
			window.status = "Please enter a valid e-mail address or account number";
			account.select();
			account.focus();
			return false;
		}
		return true;
	}

// Validates password is not empty and between 4 and 12 characters
	function passwordValidate(password) {
		if(password.value == "") {
			window.status = "Please enter a password";
			password.select();
			password.focus();
			return false;
		}
		if(password.value.length < 4 || password.value.length > 12) {
			window.status = "Your Password must be between 4 and 12 characters in length.";
			password.select();
			password.focus();
			return false;
		}
	}

// Validates that no "<" is allowed in all special handling input
	function shValidate(sh) {
		val = sh.value;
		if (val.indexOf("<")!=-1)
		{
			window.status = "Invalid cahracter is used.";
			return false;
		} 
		return true ;
	}
	
// Centered Pop Up Box
	function popBox(href, name, w, h) {
		if(typeof(name)=="undefined") 	name ="evenue";
		if(typeof(w)=="undefined") 		w=700;
		if(typeof(h)=="undefined") 		h=480;
		
		var winl = (screen.width - w) / 2;
		var wint = (screen.height - h) / 2;
		winprops = 'width='+w+',height='+h+',top='+wint+',left='+winl+',scrollbars=yes,resizable=yes';
		win = window.open(href, name, winprops);
		if (parseInt(navigator.appVersion) >= 4) {
			win.window.focus();
		}
	}
	
	/* function popBox(loc) {
		window.open(loc, 'evenue', 'scrollbars=yes,resizable=yes,width=640,height=480');
	} */

// Disables enter button in input boxes
	function disableEnter(fld) {
		var key = (window.event) ? event.keyCode : (key == 0);
		if(key == 13) {
			return false;
		}
		return true;
	}

// formats the phone number into the following format: (XXX)XXX-XXXX
	function phoneFormat(field) {
		re  = /[^0-9]/g;
		val = field.value.replace(re, ""); // take out non integers

		if(!val.match(/^[2-9]\d{9}$/)) {
			window.status = "Please enter a valid 10 digit phone number";
			return false;
		}

		field.value = "(" + val.substr(0, 3) + ")" + val.substr(3, 3) + "-" + val.substr(6, 4);

		return true;
	}

// capitalize words in input field
	function changeCase(field) {
		var fstring = field.value.toLowerCase();
		var words = fstring.split(" ");
		for(var a=0; a<words.length; a++) {
			firstLetter = words[a].charAt(0);
			words[a] = firstLetter.toUpperCase() + words[a].slice(1, words[a].length);
		}
		fstring = words.join(" ");
		field.value = fstring;
	}

// address labels & states
//Default state code.
	var defaultStCode = "";
//Default country code.
	var defaultCnCode = "";

// Array for State code and state name
	var stCodes = new Array(
		"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL",
		"GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME",
		"MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH",
		"NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "PR",
		"RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV",
		"WI", "WY",
		"-",
		"AB", "BC", "LB", "MB", "NB", 
		"NF", "NS", "NT", "ON", "PE",
		"QC", "SK", "YT",
		"-", "N/A"
	);

	var stNames = new Array(
		"Alabama", "Alaska", "Arizona", "Arkansas", "California",
		"Colorado", "Connecticut", "Delaware", "District of Columbia", "Florida",
		"Georgia", "Hawaii", "Idaho", "Illinois", "Indiana",
		"Iowa", "Kansas", "Kentucky", "Louisiana", "Maine",
		"Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi",
		"Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire",
		"New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota",
		"Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Puerto Rico",
		"Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas",
		"Utah", "Vermont", "Virginia", "Washington", "West Virginia",
		"Wisconsin", "Wyoming",
		"=============",
		"Alberta", "British Columbia", "Labrador", "Manitoba", "New Brunswick",
		"Newfoundland", "Nova Scotia", "Northwest Territories", "Ontario", "Prince Edward Island",
		"Quebec", "Saskatchewan", "Yukon Territory",
		"=============", "NOT APPLICABLE"
	);


// Array for Country code and country name
	var cnCodes = new Array(
		"US", "AL",
		"DZ", "AD", "AO", "AR", "AM", "AW",
		"AU", "AT", "AZ", "PT", "BS", "BH",
		"BD", "BB", "BY", "BE", "BZ", "BJ",
		"BM", "BT", "BO", "BA", "BW", "BR",
		"BN", "BG", "BF", "BI", "KH", "CM",
		"CA", "CV", "KY", "CF", "TS", "CL",
		"CN", "CO", "ZR", "CG", "FR", "CR",
		"CI", "HR", "CY", "CZ", "DK", "DJ",
		"DO", "EC", "EG", "SV", "GQ", "ER",
		"EE", "ET", "DK", "FJ", "FI", "FR",
		"GF", "PF", "GA", "GE", "DE", "GH",
		"GB", "GR", "GD", "GP", "GT",
		"GN", "GW", "GY", "HT", "HN", "HK",
		"HU", "IS", "IN", "ID", "IQ", "IE",
		"IL", "IT", "JM", "JP", "JO", "KG",
		"KE", "KR", "KW", "KG", "LA", "LV",
		"LS", "LR", "LI", "LT", "LU", "MO",
		"MK", "MG", "PT", "MW", "MY", "MV",
		"ML", "MT", "MQ", "MR", "MU", "MX",
		"MD", "MN", "MA", "MZ", "NA", "NR",
		"NP", "NL", "AN", "NC", "NZ", "NI",
		"NE", "NG", "NO", "OM", "PK", "PA",
		"PG", "PY", "PE", "PH", "PL", "PT",
		"QA", "RO", "RU", "RW", "KN", "LC",
		"VC", "SA", "SN", "YU", "SC", "SL",
		"SG", "SK", "SI", "SB", "SO", "ZA",
		"ES", "LK", "SD", "SZ", "SE", "SZ",
		"SY", "TW", "TJ", "TZ", "TH", "TG",
		"TT", "TN", "TR", "TM", "T&CI", "UG",
		"UA", "AE", "UY", "VU", "VE",
		"VN", "WS", "YE"
	);

	var cnNames = new Array(
		"United States of America", "Albania", 
		"Algeria", "Andorra", "Angola", "Argentina", "Armenia", "Aruba", 
		"Australia", "Austria", "Azerbaijan", "Azores", "Bahamas", "Bahrain", 
		"Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", 
		"Bermuda", "Bhutan", "Bolivia", "Bosna-Herzegovina", "Botswana", "Brazil", 
		"Brunei Darussalam", "Bulgaria", "Burkina FASO", "Burundi", "Cambodia", "Cameroon", 
		"Canada", "Cape Verde", "Cayman Islands", "Cntl African Republic", "Chad", "Chile", 
		"China", "Columbia", "Democratic Republic of Congo", "Republic of the Congo (Brazaville)", "Corsica", "Costa Rica", 
		"Cote d&#39;Ivoire (Ivory Coast)", "Croatia", "Cyprus", "Czech Republic", "Denmark", "Djibouti", 
		"Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", 
		"Estonia", "Ethiopia", "Faroe Islands", "Fiji", "Finland", "France", 
		"French Guiana", "French Polynesia (Tahitti)", "Gabon", "Georgia, Republic of", "Germany", "Ghana", 
		"Great Britain & Northern Ireland", "Greece", "Grenada", "Guadeloupe", "Guatemala", 
		"Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Honduras", "Hong Kong", 
		"Hungary", "Iceland", "India", "Indonesia", "Iraq", "Ireland (Eire)", 
		"Israel", "Italy", "Jamaica", "Japan", "Jordan", "Kazakhstan", 
		"Kenya", "South Korea, Republic of", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", 
		"Lesotho", "Liberia", "Liechtenstein", "Lithuania", "Luxembourg", "Macao", 
		"Macedonia, Republic of", "Madagascar", "Madeira Islands", "Malawi", "Malaysia", "Maldives ", 
		"Mali", "Malta", "Martinique", "Mauritania", "Mauritius", "Mexico", 
		"Moldova", "Mongolia", "Morocco", "Mozambique", "Namibia", "Nauru", 
		"Nepal", "Netherlands (Holland)", "Netherlands Antilles", "New Caledonia", "New Zealand", "Nicaragua", 
		"Niger", "Nigeria", "Norway", "Oman", "Pakistan", "Panama", 
		"Papua New Guinea", "Paraguay", "Peru", "Phillipines", "Poland", "Portugal", 
		"Qatar", "Romania", "Russia (Russia Federation)", "Rwanda", "St. Christopher (St. Kitts) and Nevis", "St. Lucia", 
		"St. Vincent and the Grenadines", "Saudi Arabia", "Senegal", "Serbia Montenegro (Yugoslavia)", "Seychelles", "Sierra Leone", 
		"Singapore", "Slovak Republic (Slovakia)", "Slovenia", "Solomon Islands", "Somalia", "South Africa", 
		"Spain", "Sri Lanka ", "Sudan", "Swaziland", "Sweden", "Switzerland", 
		"Syrian Arab Republic", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "Togo", 
		"Trinidad & Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks & Caicos Islands", "Uganda", 
		"Ukraine", "United Arab Emirates", "Uruguay", "Vanuatu", "Venezuela", 
		"Vietnam", "Western Samoa", "Yemen"
	);

	if(useCanadianProvince) {
		var stateAddrLabel = "Province/State";
		var zipAddrLabel = "Postal/Zip Code";
	} else {
		var stateAddrLabel = "State";
		var zipAddrLabel = "Zip Code";
	}

	function getStateLabel() {
		return stateAddrLabel;
	}

	function getZipCodeLabel() {
		return zipAddrLabel;
	}

// returns states for use in <select>
	function getStateOptions(selectedState) {
		if(typeof(selectedState)=="undefined" || selectedState=="") {
			selectedState = defaultStCode;
		}
		var stateOptions = '<option value="">Select Your '+ getStateLabel() +'</option>';
		for(var i=0; i<stCodes.length; i++) stateOptions += '<option value="'+ stCodes[i] +'" '+ (stCodes[i]==selectedState ? 'selected="selected"' : '') +'>'+ stNames[i] +'</option>';
		
		return stateOptions;
	}
	
// returns countries for use in <select>
	function getCountryOptions(selectedCountry) {
		if(typeof(selectedCountry)=="undefined" || selectedCountry=="") {
			selectedCountry = defaultCnCode;
		}
		var countryOptions = '<option value="">Select Country</option>';
		for(var i=0; i<cnCodes.length; i++) countryOptions += '<option value="'+ cnCodes[i] +'" '+ (cnCodes[i]==selectedCountry ? 'selected="selected"' : '') +'>'+ cnNames[i] +'</option>';
		
		return countryOptions;
	}
	
// returns states array for use in custom forms, etc
	function getStateOptionsArray() {
		var stateArray = [];
		for(var i=0; i<stCodes.length; i++) stateArray.push( [stCodes[i], stNames[i]] );
		return stateArray;
	}
	
// returns country array for use in custom forms, etc
	function getCountryOptionsArray() {
		var countryArray = [];
		for(var i=0; i<cnCodes.length; i++) countryArray.push( [cnCodes[i], cnNames[i]] );
		return countryArray;
	}

/* =================================================
	all site specific functions go here
================================================= */
// hidden dates
	var hiddenDates = new Array(
	//	"New Jersey Symphony - Marvin Hamlisch At The Movies",
		'---'
	);

	function isHiddenDate(event, date) {
		if(
			(date=="") ||
			(
				typeof date != 'undefined' &&
				date!="" &&
				date.getFullYear() == "2099"
			)
		) {
			return true;
		}
		
		event = cleaner(event);
		for(var hdi=0; hdi < hiddenDates.length; hdi++) {
			if(hiddenDates[hdi].toUpperCase() == event.toUpperCase()) {
				return true;
			}
		}
		return false;
	}

// hidde fac
	var hiddenFac = new Array(
	//	"New Jersey Symphony - Marvin Hamlisch At The Movies",
		'---'
	);
	
	function isHiddenFac(eventDesc, fac) {
		if(fac=="") {
			return true;
		}
		eventDesc = cleaner(eventDesc);
		for(var h=0; h<hiddenFac.length; h++) {
			if(eventDesc.toUpperCase() == hiddenFac[h].toUpperCase()) {
				return true;
			}
		}
		if(inArray(eventDesc, hiddenFac)) {
			return true;
		}
		return false;
	}

// toggle display
	function toggleEl(mcsID) {
		var el = document.getElementById(mcsID);
		/*
		if(el.style.display=='none')
			el.style.display="block";
		else 	
			el.style.display="none";
		*/
		if(el==null) return;
		
		if(el.className.match(/ ?\bhide\b/ig)==null) {
			el.className += " hide";
		} else {
			el.className = el.className.replace(/ ?\bhide\b/ig, "");
		}
	}
	
// add functions to window onload
	function addLoadEvent(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				if (oldonload) {
					oldonload();
				}
				func();
			}
		}
	}
	/* SAMPLES
		addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
		addLoadEvent(function() {
			// more code to run on page load
		});
	END SAMPLES */
	
/* =================================================
	Print BoxedShadow
================================================= */
	function printShadowboxHeader() {
		document.write(
			'<table class="boxedShadow">',
			'<tr>',
			'<th class="corner11"><img src="', imageWWWPath ,'/boxedShadow/11.gif" /></th>',
			'<th class="edge12"><img src="', imageWWWPath ,'/blank.gif" /></th>',
			'<th class="corner13"><img src="', imageWWWPath ,'/boxedShadow/13.gif" /></th>',
			'</tr>',
			'<tr>',
			'<th class="edge21"><img src="', imageWWWPath ,'/blank.gif" /></th>',
			'<td>'
		);
	}
	
	function printShadowboxFooter() {
		document.write(
			'</td>',
			'<th class="edge23"><img src="', imageWWWPath ,'/blank.gif" /></th>',
			'</tr>',
			'<tr valign="top">',
			'<th class="corner31"><img src="', imageWWWPath ,'/boxedShadow/31.gif"></td>',
			'<th class="edge32"><img src="', imageWWWPath ,'/blank.gif" /></th>',
			'<th class="corner33"><img src="', imageWWWPath ,'/boxedShadow/33.gif"></td>',
			'</tr>',
			'</table>'
		);
	}

// Request #119 (Social Labs/Facebook)
// Do not remove this. SL needs to reassign the doc domain to work in IE
	document.domain = "evenue.net";
// END Request #119 (Social Labs/Facebook)

// custom code (promo banners)
	function printPromoBanner(prc) {
		var promoBanner = "";
		switch(prc) {
			case "COKEUTFB" : promoBanner=prc+".jpg"; break;
			case "KOCUTFB" : promoBanner=prc+".jpg"; break;
			case "UTMCUTFB" : promoBanner=prc+".jpg"; break;
			case "FTBUTFB" : promoBanner=prc+".jpg"; break;
			case "ECUTFB" : promoBanner=prc+".jpg"; break;
			case "MDUTFB" : promoBanner=prc+".jpg"; break;
			case "FBIUTFB" : promoBanner=prc+".jpg"; break;
			case "JRVOLSUTFB" : promoBanner=prc+".jpg"; break;
			case "TANASI" : promoBanner=prc+".jpg"; break;
			case "AARPBB" : promoBanner=prc+".jpg"; break;
			case "COMCASTUTFB" : promoBanner=prc+".jpg"; break;
			case "UTANDME2011" : promoBanner=prc+".jpg"; break;
			case "SMGUTFB11" : promoBanner=prc+".jpg"; break;

			case "AARPBB" : promoBanner="aarp_good.gif"; break;
			case "Y12UTFB11" : promoBanner="Y12.gif"; break;
			case "COKEUTFB11" : promoBanner="coke.gif"; break;
			case "COMCASTUTFB11" : promoBanner="Comcast.gif"; break;
			case "EASTMANUTFB11" : promoBanner="Eastman.gif"; break;
			case "FTNUTFB11" : promoBanner="FirstTennessee.gif"; break;
			case "KOCUTFB11" : promoBanner="KOC.gif"; break;
			case "MAYFIELDUTFB11" : promoBanner="Mayfield.gif"; break;
			case "FBIUTFB11" : promoBanner="TFBI.gif"; break;
			case "JRVOLSUTFB11" : promoBanner="JrVols.gif"; break;
			case "LBMCUTFB11" : promoBanner="LBMC.gif"; break;
			case "PILOTUTFB11" : promoBanner="Pilot.gif"; break;
			case "JTEKTUTFB11" : promoBanner="JTEKT.gif"; break;
			case "ORNLUTFB11" : promoBanner="ORNL.gif"; break;
			case "BOEUTFB11" : promoBanner="BOEUTFB11.jpg"; break;
			case "TNFUNDOPPFB" : promoBanner="TNFUNDOPPFB.jpg"; break;
			case "GSCSAUTFB11" : promoBanner=prc+".gif"; break;
			case "CWSREUNION" : promoBanner=prc+".gif"; break;
			case "ALUMCHAP" : promoBanner=prc+".gif"; break;
			case "DOLLYWOODFB11" : promoBanner=prc+".gif"; break;
			case "KTSCVOLS" : promoBanner=prc+".gif"; break;
			case "TDOC" : promoBanner=prc+".jpg"; break;
			case "Y12UTVOLS" : promoBanner=prc+".gif"; break;
			case "ORNLUTVOLS" : promoBanner=prc+".gif"; break;
			case "SUMMITVOLS" : promoBanner=prc+".gif"; break;
			case "DOLLYWOOD" : promoBanner=prc+".gif"; break;

			case "COKEVOLS" : promoBanner=prc+".jpg"; break;
			case "COMCASTVOLS" : promoBanner=prc+".jpg"; break;
			case "EASTMANVOLS" : promoBanner=prc+".jpg"; break;
			case "FTNVOLS" : promoBanner=prc+".jpg"; break;
			case "KOCVOLS" : promoBanner=prc+".jpg"; break;
			case "PILOTVOLS" : promoBanner=prc+".jpg"; break;
			case "LBMCVOLS" : promoBanner=prc+".jpg"; break;
			case "MAYFIELDVOLS" : promoBanner=prc+".jpg"; break;
			case "FBIVOLS" : promoBanner=prc+".jpg"; break;
		}
		if(promoBanner!="") {
			document.write('<p align="center"><img src="', imageWWWPath ,'/utenn/promoBanners/', promoBanner ,'" /></p>');
		}
	}
// end cc (promo banners)
