var ExpEmail		= /^[a-zA-Z][a-zA-Z_0-9\.\-]*@[a-zA-Z_0-9\.\-]+\.[a-z]{2,3}$/i
var ExpUsername		= /^[a-zA-Z][a-zA-Z_0-9]{2,11}$/i
var ExpPassword		= /^[a-zA-Z][a-zA-Z0-9]{3,14}$/i
var ExpDate			= /^(0?[1-9]|1[0-2])\/(0?[1-9]|[1-2][0-9]|3[0-1])\/[1,2][0-9]{3}$/i
var ExpPhone		= /^[\(]?[1-9][0-9]{2}([\)]\s?|-|\s)[0-9]{3}-?[0-9]{4}$/i
var ExpZip			= /^([0-9]{5}$|[0-9]{5}-[0-9]{4})$/i
var ExpUrl			= /^(http:\/\/[a-zA-Z_0-9\.\-]*\.[a-z]{2,3}|https:\/\/[a-zA-Z_0-9\.\-]*\.[a-z]{2,3}|mailto:[a-zA-Z][a-zA-Z_0-9\.\-]*@[a-zA-Z_0-9\.\-]+\.[a-z]{2,3})$/i
var ExpCurrency		= /^(\$)?[0-9,]*(\.[0-9]{2}){0,1}$/
var ExpCurrency2	= /^(\$)?([0-9]*|(([0-9]{1,3}(\,)?)*[0-9]{3}))(\.[0-9]{2}){0,1}$/
var ExpNumeric		= /[0-9]/

var space			= /\s/
var startspaces		= /^\s+/
var quote			= /"/


function isValid(pattern, str) {
	return pattern.test(str)
}

function stripChars(pattern, str) {
	return str.replace(pattern, "")
}

function replaceChars(pattern, str, replace) {
	return str.replace(pattern, replace)
}


function validateUpdates() {
 	var f = document.Updates;
 
 	f.name.value = stripChars(startspaces, f.name.value);
 	f.email.value = stripChars(startspaces, f.email.value);
 
 	if (f.name.value == '') {
 		alert('Please enter your name so we can match\nit up with our membership roster.');
 		f.name.focus();
 		return false;
 	}

	if (f.email.value != '') {
	 	if (!isValid(ExpEmail, f.email.value)) {
	 		alert('You need to enter a valid E-Mail Address.\n\nEx: joe@smith.com');
	 		f.email.select();
	 		return false;
	 	}
	} else {
	 		alert('You need to enter a valid E-Mail Address.\n\nEx: joe@smith.com');
	 		f.email.focus();
	 		return false;
	}
}

/*
function displayEmailLink(name, domain, display) {
	displayed = (typeof(display) == "undefined") ? name + '&#64;' + domain : display;
	document.write('<a href=mailto:' + name + '&#64;' + domain + '>' + displayed + '</a>');
}
*/

function displayEmailLink(name, domain, display, style) {
	if (display == '' || display == undefined) {
		display = name + '&#64;' + domain;
	}
	
	if (style != '' && style != undefined) {
		style = ' style=\"' + style + '\"';
	} else {
		style = '';
	}

	strEMailLink = '<a href=\"mailto:' + name + '&#64;' + domain + '\"';
	strEMailLink = strEMailLink + style;
	strEMailLink = strEMailLink + '>' + display + '</a>';
	
	document.write(strEMailLink);
}






/*
function displayEmailLink_new(name, domain, display, style) {
	var strEMailLink;
	displayed = (typeof(display)=="undefined") ? name + "&#64;" + domain : display
	
	document.write('<a href=mailto:' + name + '&#64;' + domain + '');
//	if (style != '')
//		document.write(' style=\"' + style + '\"');
	document.write('>' + displayed + '</a>');
	
	strEMailLink = '<a href=mailto:' + name + '&#64;' + domain + '';
//	if (style != '') {
//		strEMailLink .= ' style=\"' + style + '\"';
	strEMailLink .= '>' + displayed + '</a>';
	
	alert(strEMailLink);
	//font-size:11px
}
*/





/***********************************************
* Dynamic Countdown script- © Dynamic Drive (http://www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for this script and 100s more.
***********************************************/
function cdtime(container, targetdate, x_strEndMsg) {
  if (!document.getElementById || !document.getElementById(container)) { return; }
  this.container = document.getElementById(container);
  this.currentTime = new Date();
  this.targetdate = new Date(targetdate);
  this.timesup = false;
  this.endmsg = x_strEndMsg;
  this.updateTime();
}

cdtime.prototype.updateTime = function() {
  var thisobj = this;
  this.currentTime.setSeconds(this.currentTime.getSeconds() + 1);
  setTimeout(function() { thisobj.updateTime() }, 1000); //update time every second
}

cdtime.prototype.displaycountdown = function(baseunit, functionref) {
  this.baseunit = baseunit;
  this.formatresults = functionref;
  this.showresults();
}

cdtime.prototype.showresults = function(){
  var thisobj = this;
  var timediff = (this.targetdate-this.currentTime) / 1000; //difference btw target date and current date, in seconds
  
  if (timediff < 0) { //if time is up
    this.timesup = true;
    this.container.innerHTML = this.formatresults();
    return;
  }
  
  var oneMinute = 60; //minute unit in seconds
  var oneHour = 60 * 60; //hour unit in seconds
  var oneDay = 60 * 60 * 24; //day unit in seconds
  var dayfield = Math.floor(timediff/oneDay);
  var hourfield = Math.floor((timediff - dayfield * oneDay) / oneHour);
  var minutefield = Math.floor((timediff - dayfield * oneDay - hourfield * oneHour) / oneMinute);
  var secondfield = Math.floor((timediff - dayfield * oneDay - hourfield * oneHour - minutefield * oneMinute));
  
  if (this.baseunit == "hours") { //if base unit is hours, set "hourfield" to be topmost level
    hourfield = dayfield * 24 + hourfield;
    dayfield = "n/a";
  } else if (this.baseunit == "minutes") { //if base unit is minutes, set "minutefield" to be topmost level
    minutefield = dayfield * 24 * 60 + hourfield * 60 + minutefield;
    dayfield = hourfield = "n/a";
  } else if (this.baseunit == "seconds") { //if base unit is seconds, set "secondfield" to be topmost level
    var secondfield = timediff;
    dayfield = hourfield = minutefield = "n/a";
  }
  this.container.innerHTML = this.formatresults(dayfield, hourfield, minutefield, secondfield);
  setTimeout(function() { thisobj.showresults() }, 1000); //update results every second
}

/////CUSTOM FORMAT OUTPUT FUNCTIONS BELOW//////////////////////////////

//Create your own custom format function to pass into cdtime.displaycountdown()
//Use arguments[0] to access "Days" left
//Use arguments[1] to access "Hours" left
//Use arguments[2] to access "Minutes" left
//Use arguments[3] to access "Seconds" left

//The values of these arguments may change depending on the "baseunit" parameter of cdtime.displaycountdown()
//For example, if "baseunit" is set to "hours", arguments[0] becomes meaningless and contains "n/a"
//For example, if "baseunit" is set to "minutes", arguments[0] and arguments[1] become meaningless etc


function formatresults() {
  if (this.timesup == false) {
    //if target date/time not yet met
    var displaystring = arguments[0] + ' <sup>days</sup> ' + arguments[1] + ' <sup>hours</sup> ' + arguments[2] + ' <sup>minutes</sup> ' + arguments[3] + ' <sup>seconds</sup>';
  } else {
    //else if target date/time met
    var displaystring = this.endmsg;
  }
  return displaystring;
}

