		var miniTab = {
		  currentTab:     0,
		  activeTab:      0,
		  destX:          0,
		  destW:          0,
		  t:              0,
		  b:              0,
		  c:              0,
		  d:              20,
		  animInterval:   null,
		  sliderObj:      null,
		  aHeight:        0,

		  init: function() {
			if(!document.getElementById || !document.getElementById("miniflex")) return;

			var ul          = document.getElementById("miniflex");
			var liArr       = ul.getElementsByTagName("li");
			var aArr        = ul.getElementsByTagName("a");

			for(var i = 0, li; li = liArr[i]; i++) {
			  liArr[i].onmouseover = aArr[i].onfocus = function(e) {
				var pos = 0;
				var elem = this.nodeName == "LI" ? this : this.parentNode;
				while(elem.previousSibling) {
				  elem = elem.previousSibling;
				  if(elem.tagName && elem.tagName == "LI") pos++;
				}
				miniTab.initSlide(pos);
			  }
			}

			ul.onmouseout = function(e) {
			  miniTab.initSlide(miniTab.currentTab);
			};

			for(var i = 0; i < aArr.length; i++) {
			  if(document.location.href.indexOf(aArr[i].href)>=0) {
				miniTab.activeTab = miniTab.currentTab = i;
			  }
			  aArr[i].style.borderBottom  = "0px";
			  aArr[i].style.paddingBottom = "6px";
			}

			miniTab.slideObj                = ul.parentNode.appendChild(document.createElement("div"));
			miniTab.slideObj.appendChild(document.createTextNode(String.fromCharCode(160)));
			miniTab.slideObj.id             = "animated-tab";
			miniTab.slideObj.style.top      = (ul.offsetTop + liArr[miniTab.activeTab].offsetTop + aArr[miniTab.activeTab].offsetTop) + "px";
			miniTab.slideObj.style.left     = (ul.offsetLeft + + liArr[miniTab.activeTab].offsetLeft + aArr[miniTab.activeTab].offsetLeft) + "px";
			miniTab.slideObj.style.width    = aArr[miniTab.activeTab].offsetWidth + "px";
			miniTab.aHeight                 = ul.offsetTop + liArr[miniTab.activeTab].offsetTop + aArr[miniTab.activeTab].offsetTop;

			miniTab.initSlide(miniTab.activeTab, true);

			var intervalMethod = function() { miniTab.slideIt(); }
			miniTab.animInterval = setInterval(intervalMethod,10);
		  },

		  cleanUp: function() {
			clearInterval(miniTab.animInterval);
			miniTab.animInterval = null;
		  },

		  initSlide: function(pos, force) {
			if(!force && pos == miniTab.activeTab) return;
			miniTab.activeTab = pos;
			miniTab.initAnim();
		  },

		  initAnim: function() {
			var ul          = document.getElementById("miniflex");
			var liArr       = ul.getElementsByTagName("li");
			var aArr        = ul.getElementsByTagName("a");
			miniTab.destX = parseInt(liArr[miniTab.activeTab].offsetLeft + liArr[miniTab.activeTab].getElementsByTagName("a")[0].offsetLeft + ul.offsetLeft);
			miniTab.destW = parseInt(liArr[miniTab.activeTab].getElementsByTagName("a")[0].offsetWidth);
			miniTab.t = 0;
			miniTab.b = miniTab.slideObj.offsetLeft;
			miniTab.c = miniTab.destX - miniTab.b;
			miniTab.bW = miniTab.slideObj.offsetWidth;
			miniTab.cW = miniTab.destW - miniTab.bW;
			miniTab.slideObj.style.top = (ul.offsetTop + liArr[miniTab.activeTab].offsetTop + aArr[miniTab.activeTab].offsetTop) + "px";
		  },

		  slideIt:function() {
			var ul          = document.getElementById("miniflex");
			var liArr       = ul.getElementsByTagName("li");
			var aArr        = ul.getElementsByTagName("a");

			 /*Has the browser text size changed?*/
			if(miniTab.aHeight != ul.offsetTop + liArr[miniTab.activeTab].offsetTop + aArr[miniTab.activeTab].offsetTop) {
			  miniTab.initAnim();
			  miniTab.aHeight = ul.offsetTop + liArr[miniTab.activeTab].offsetTop + aArr[miniTab.activeTab].offsetTop
			};

			if(miniTab.t++ < miniTab.d) {
			  var x = miniTab.animate(miniTab.t,miniTab.b,miniTab.c,miniTab.d);
			  var w = miniTab.animate(miniTab.t,miniTab.bW,miniTab.cW,miniTab.d);
			  miniTab.slideObj.style.left = parseInt(x) + "px";
			  miniTab.slideObj.style.width = parseInt(w) + "px";
			} else {
			  miniTab.slideObj.style.left = miniTab.destX + "px";
			  miniTab.slideObj.style.width = miniTab.destW +"px";
			}
		  },

		  animate: function(t,b,c,d) {
			if ((t/=d/2) < 1) return c/2*t*t + b;
			return -c/2 * ((--t)*(t-2) - 1) + b;
		  }
		}

		window.onload = miniTab.init;
		window.onunload = miniTab.cleanUp;



function scour(emailStr){
	var emailStr = '' + emailStr;
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		//window.alert(introducer + " Email address seems incorrect (check @ and .\'s)");
		return false;
	}

	var user=matchArray[1];
	var domain=matchArray[2];

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			//window.alert(introducer + " Email address contains invalid characters.");
			return false;
		}
	}

	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			//window.alert(introducer + " Email address contains invalid characters.");
			return false;
		}
	}

	if (user.match(userPat)==null) {
		//window.alert(introducer + " The username doesn\'t seem to be valid.");
		return false;
	}

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
		//window.alert(introducer + " Destination IP address invalid.");
		return false;
			}
		}
		return true;
	}

	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			//window.alert(introducer + " The domain name does not seem to be valid.");
			return false;
		}
	}

	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		//window.alert(introducer + " Email address must end in a well-known domain or two letter " + "country.");
		return false;
	}

	if (len<2) {
		//window.alert(introducer + " Email address is missing a hostname!");
		return false;
	}

	return true;
}

function validate(){
	var theiremail = document.getElementById('theiremail').value;
	if(scour(theiremail)){
		window.alert('Thank You.\nWe Will Keep You\nUp To Date On\nUpcoming Events!');
		return true;
	} else {
		window.alert('Invalid Email Address'); 
		return false;
	}
}

var xmlHttp;

function createXMLHttpRequest(){
	if(window.ActiveXObject){
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	} else if (window.XMLHttpRequest){
		xmlHttp = new XMLHttpRequest();
	}
}

function handleStateChange(){
	if(xmlHttp.readyState == 4){
		if(xmlHttp.status == 200){
			getOneMoment();
		}
	}
}

function handleStateChange2(){
	if(xmlHttp.readyState == 4){
		if(xmlHttp.status == 200){
			getAllMoments();
		}
	}
}

function handleStateChange3(){
	if(xmlHttp.readyState == 4){
		if(xmlHttp.status == 200){
			makeGallery();
		}
	}
}


function startRequest(){

	createXMLHttpRequest();
	newURL = 'events.xml';
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.open("GET",newURL,true);
	xmlHttp.send(null);
}

function fillGallery(){

	createXMLHttpRequest();
	newURL = 'gallery.xml';
	xmlHttp.onreadystatechange = handleStateChange3;
	xmlHttp.open("GET",newURL,true);
	xmlHttp.send(null);
}

function fillEvents(){

	createXMLHttpRequest();
	newURL = 'events.xml';
	xmlHttp.onreadystatechange = handleStateChange2;
	xmlHttp.open("GET",newURL,true);
	xmlHttp.send(null);
}

function getOneMoment(){
	var xmlDoc = xmlHttp.responseXML;
	var allMoments = xmlDoc.getElementsByTagName("longdate");
	outputList(allMoments);
}

function getAllMoments(){
	var xmlDoc = xmlHttp.responseXML;
	var starttime = xmlDoc.getElementsByTagName("starttime");
	var endtime = xmlDoc.getElementsByTagName("endtime");
	var shortdate = xmlDoc.getElementsByTagName("shortdate");
	var longdate = xmlDoc.getElementsByTagName("longdate");
	var place = xmlDoc.getElementsByTagName("place");
	var info = xmlDoc.getElementsByTagName("info");
	var table = document.getElementById("wholelist");
	var tablebody = document.createElement("tbody");
	for(var ll=0;ll < place.length; ll++){
		var current_row = document.createElement("tr");
			var current_cell = document.createElement("td");
				current_cell.setAttribute('class','eventGrid');
				current_cell.setAttribute('className','eventGrid');
				current_cell.innerHTML = shortdate[ll].childNodes[0].nodeValue;
				current_row.appendChild(current_cell);
			var current_cell = document.createElement("td");
				current_cell.setAttribute('class','timeGrid');
				current_cell.setAttribute('className','timeGrid');
				current_cell.innerHTML = starttime[ll].childNodes[0].nodeValue + ' - ' + endtime[ll].childNodes[0].nodeValue;
				current_row.appendChild(current_cell);
			var current_cell = document.createElement("td");
				current_cell.setAttribute('class','eventGrid');
				current_cell.setAttribute('className','eventGrid');
				current_cell.innerHTML = place[ll].childNodes[0].nodeValue;
				current_row.appendChild(current_cell);
			var current_cell = document.createElement("td");
				current_cell.setAttribute('class','timeGrid');
				current_cell.setAttribute('className','timeGrid');
				current_cell.innerHTML = longdate[ll].childNodes[0].nodeValue + ' ' + starttime[ll].childNodes[0].nodeValue + ' - ' + endtime[ll].childNodes[0].nodeValue + ': <br />' + info[ll].childNodes[0].nodeValue;
				current_row.appendChild(current_cell);				
		tablebody.appendChild(current_row);
	}
	table.appendChild(tablebody);
}
function outputList(moments){
	document.getElementById('eventSpot1').innerHTML = moments[0].childNodes[0].nodeValue;
	document.getElementById('eventSpot2').innerHTML = moments[1].childNodes[0].nodeValue;	
}
function makeGallery(){
	var xmlDoc = xmlHttp.responseXML;
	var picture = xmlDoc.getElementsByTagName("picture");
	var caption = xmlDoc.getElementsByTagName("caption");
	var gallery = document.getElementById("gallery");
	var strLump = '';
	for(var ll=0;ll < picture.length; ll++){
		if((ll % 2) == 0){
			strLump += '<table class="gallery"><tr><td class="lefttext">' + caption[ll].childNodes[0].nodeValue + '<br /><input type="button" class="zoom" value=" Enlarge in Pop-Up " onclick="zoom(' + ll + ');" /></td>'
			strLump += '<td class="rightphoto"><img class="gallery" src="images/' + picture[ll].getAttribute('small') + '" /><br />' + picture[ll].getAttribute('courtesy') + '</td></tr></table>';
		} else {
			strLump += '<table class="gallery"><tr><td class="leftphoto"><img class="gallery" src="images/' + picture[ll].getAttribute('small') + '" /><br />' + picture[ll].getAttribute('courtesy') + '</td>';
			strLump += '<td class="righttext">' + caption[ll].childNodes[0].nodeValue + '<br /><input type="button" class="zoom" value=" Enlarge in Pop-Up " onclick="zoom(' + ll + ');" /></td></tr></table>';
		}
	}
	gallery.innerHTML = strLump;
	startRequest();
}



