function ajax(url){
    if(window.XMLHttpRequest){
        req = new XMLHttpRequest();
        req.onreadystatechange = processAjaxReturn;
        req.open("GET", url, true);
        req.send(null);
    } 
	else if(window.ActiveXObject){
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if(req){
            req.onreadystatechange = processAjaxReturn;
            req.open("GET", url, true);
            req.send();
        }
    }
}

function processAjaxReturn(){
    if(req.readyState==4){
        if(req.status==200){
            response = req.responseXML.documentElement;
			category = response.getElementsByTagName('category')[0].firstChild.data;
			switch(category){
				case('ok'):
					break;
				case('mailinglist'):
					setTimeout("hide('mailinglistloading'),show('mailinglistadded')",1000);
					break;
				case('failed'):
					alert("Failed to Save Changes");
					break;
			}
		}
    }
}
function addInput(formName,inputName,inputValue){
	form = document.getElementById(formName);
	input = document.createElement('input');
	input.setAttribute('name',inputName);
	input.setAttribute('value',inputValue);
	input.setAttribute('type','hidden');
	form.appendChild(input);
}

function clearNode(name){
	node = document.getElementById(name);
	while(node.firstChild){
		node.removeChild(node.firstChild);
	}
}

function hide(name){
	document.getElementById(name).style.display = 'none';
}

function number_format(number,decimalplaces){
	num_str = number.toString();
	
	if(num_str.lastIndexOf('.')!=-1){
		decimal = num_str.substring(num_str.lastIndexOf('.'),num_str.length);
		num_str = num_str.substring(0,num_str.lastIndexOf('.'));
	}
	else{
		decimal = '.';
	}
	output = '';
	while(num_str.length > 3){
		output = ',' + num_str.substring(num_str.length-3,num_str.length) + output;
		num_str = num_str.substring(0,num_str.length-3);
	}
	output = num_str + output;
	if(!decimalplaces){
		return output;
	}
	else{
		while(decimal.length<=decimalplaces){
			decimal+='0';
		}
		return output + decimal;
	}
}

function show(name){
	document.getElementById(name).style.display = 'block';
}
function showHide(name){
	document.getElementById(name).style.display = (document.getElementById(name).style.display=='block') ? 'none':'block';
}
var menuactive = new Array(5);
for(x=0; x<5; x++){
	menuactive[x]=0;
}
var menuactive = new Array(5);
for(x=0; x<5; x++){
	menuactive[x]=1;
}
var menulock = new Array(5);
for(x=0; x<5; x++){
	menulock[x]=false;
}
function fadeIn(name, number){
	document.getElementById(name).style.opacity = 1;
	show(name);
	menuactive[number]=10;
}
function fadeOut(name, number){
	if(menuactive[number]==10){
		menuactive[number]--;
		setTimeout("hideDelayTrigger('"+name+"',"+number+")",50);
	}
}
function hideDelayTrigger(name, number){
	if(!menulock[number]){
		menulock[number]=true;
		setTimeout("hideDelay('"+name+"',"+number+")",50);
	}
}
function hideDelay(name, number){
	if(menuactive[number]!=10){
		if(menuactive[number]==1){
			hide(name);
			menulock[number]=false;
		}
		else{
			menulock[number]=true;
			document.getElementById(name).style.opacity = eval((menuactive[number])/10);
			menuactive[number]--;
			setTimeout("hideDelay('"+name+"',"+number+")",50);
		}
	}
	else{
		menulock[number]=false;
	}
}
function drawcalendar(year,month,day){
	//This function requires a div id='calendar'
	day = parseInt(day);
	month = parseInt(month);
	year = parseInt(year);
	if(month<1){
		month = 12;
		year --;
	}
	if(month>12){
		month = 1;
		year ++;
	}
	
	var month_text = new Array(12);
	var month_length = new Array(12);
	month_text[1] = "January";
	month_length[1] = 31;
	month_text[2] = "February";
	month_length[2] = 28;
	if(year%4==0){
		month_length[2] = 29;
	}
	month_text[3] = "March";
	month_length[3] = 31;
	month_text[4] = "April";
	month_length[4] = 30;
	month_text[5] = "May";
	month_length[5] = 31;
	month_text[6] = "June";
	month_length[6] = 30;
	month_text[7] = "July";
	month_length[7] = 31;
	month_text[8] = "August";
	month_length[8] = 31;
	month_text[9] = "September";
	month_length[9] = 30;
	month_text[10] = "October";
	month_length[10] = 31;
	month_text[11] = "November";
	month_length[11] = 30;
	month_text[12] = "December";
	month_length[12] = 31;
	
	calendarObj = document.getElementById('calendar');
	//Clear the Calendar
	while(calendarObj.firstChild){
		calendarObj.removeChild(calendarObj.firstChild);
	}
	//Draw the Calendar
	table = document.createElement('table');
	table.setAttribute('class','calendar');
	table.setAttribute('className','calendar');
	table.setAttribute('border',1);
	tbody = document.createElement('tbody');

	//Month
	tr = document.createElement('tr');
	td = document.createElement('td');
	td.setAttribute('class','calendarArrow');
	td.setAttribute('className','calendarArrow');
	arrow = document.createElement('a');
	arrow.setAttribute('href',"javascript:drawcalendar('"+year+"','"+(month-1)+"','"+day+"')");
	arrow.appendChild(document.createTextNode('<'));
	td.appendChild(arrow);
	tr.appendChild(td);
	td = document.createElement('td');
	td.setAttribute('class','calendarMonth');
	td.setAttribute('className','calendarMonth');
	td.setAttribute('colSpan','5');
	td.appendChild(document.createTextNode(month_text[month].toString()));
	tr.appendChild(td);
	td = document.createElement('td');
	td.setAttribute('class','calendarArrow');
	td.setAttribute('className','calendarArrow');
	arrow = document.createElement('a');
	arrow.setAttribute('href',"javascript:drawcalendar('"+year+"','"+(month+1)+"','"+day+"')");
	arrow.appendChild(document.createTextNode('>'));
	td.appendChild(arrow);
	tr.appendChild(td);
	tbody.appendChild(tr);
	
	//Year
	tr = document.createElement('tr');
	td = document.createElement('td');
	td.setAttribute('class','calendarArrow');
	td.setAttribute('className','calendarArrow');
	arrow = document.createElement('a');
	arrow.setAttribute('href',"javascript:drawcalendar('"+(year-1)+"','"+month+"','"+day+"')");
	arrow.appendChild(document.createTextNode('<'));
	td.appendChild(arrow);
	tr.appendChild(td);
	td = document.createElement('td');
	td.setAttribute('class','calendarYear');
	td.setAttribute('className','calendarYear');
	td.setAttribute('colSpan','5');
	td.appendChild(document.createTextNode(year.toString()));
	tr.appendChild(td);
	td = document.createElement('td');
	td.setAttribute('class','calendarArrow');
	td.setAttribute('className','calendarArrow');
	arrow = document.createElement('a');
	arrow.setAttribute('href',"javascript:drawcalendar('"+(year+1)+"','"+month+"','"+day+"')");
	arrow.appendChild(document.createTextNode('>'));
	td.appendChild(arrow);
	tr.appendChild(td);
	tbody.appendChild(tr);
	
	//Days
	tr = document.createElement('tr');
	td = document.createElement('td');
	td.setAttribute('class','calendarDay');
	td.setAttribute('className','calendarDay');
	td.appendChild(document.createTextNode("Sun"));
	tr.appendChild(td);
	td = document.createElement('td');
	td.setAttribute('class','calendarDay');
	td.setAttribute('className','calendarDay');
	td.appendChild(document.createTextNode("Mon"));
	tr.appendChild(td);
	td = document.createElement('td');
	td.setAttribute('class','calendarDay');
	td.setAttribute('className','calendarDay');
	td.appendChild(document.createTextNode("Tue"));
	tr.appendChild(td);
	td = document.createElement('td');
	td.setAttribute('class','calendarDay');
	td.setAttribute('className','calendarDay');
	td.appendChild(document.createTextNode("Wed"));
	tr.appendChild(td);
	td = document.createElement('td');
	td.setAttribute('class','calendarDay');
	td.setAttribute('className','calendarDay');
	td.appendChild(document.createTextNode("Thr"));
	tr.appendChild(td);
	td = document.createElement('td');
	td.setAttribute('class','calendarDay');
	td.setAttribute('className','calendarDay');
	td.appendChild(document.createTextNode("Fri"));
	tr.appendChild(td);
	td = document.createElement('td');
	td.setAttribute('class','calendarDay');
	td.setAttribute('className','calendarDay');
	td.appendChild(document.createTextNode("Sat"));
	tr.appendChild(td);
	tbody.appendChild(tr);
	
	firstDayOfYear = ((Math.floor((year-1)/4)%7) + year)%7
	if(firstDayOfYear==0){firstDayOfYear=7;}
	daysSoFar = 0;
	for(x=1;x<month;x++){
		daysSoFar+=month_length[x];
	}
	startday = (firstDayOfYear + daysSoFar)%7;
	if(startday==0){startday=7;}
	daycount = 0;
	date = 0;
	
	while(date<month_length[month]){
		daycount++;
		if(daycount%7==1){
			tr = document.createElement('tr');
		}
		if(daycount>=startday){
			date++;
		}
		td = document.createElement('td');
		td.setAttribute('class','calendarDate');
		td.setAttribute('className','calendarDate');
		if(date>0){
			a = document.createElement('a');
			a.setAttribute('href',"javascript:hide('calendar'),calendarAction('"+year+"','"+month+"','"+date+"')");
			a.appendChild(document.createTextNode(date.toString()));
			td.appendChild(a)
		}
		tr.appendChild(td);
		if(daycount%7==0){
			tbody.appendChild(tr);
		}
	}
	if(daycount%7!=0){
		tbody.appendChild(tr);
	}
	table.appendChild(tbody);
	calendarObj.appendChild(table);
}
function calendarAction(year,month,day){
	var month_text = new Array(12);
	month_text[1] = "January";
	month_text[2] = "February";
	month_text[3] = "March";
	month_text[4] = "April";
	month_text[5] = "May";
	month_text[6] = "June";
	month_text[7] = "July";
	month_text[8] = "August";
	month_text[9] = "September";
	month_text[10] = "October";
	month_text[11] = "November";
	month_text[12] = "December";
	dateNode = document.getElementById('nice_date');
	dateNode.firstChild.nodeValue = month_text[month]+" "+day+", "+year;

	if(day<10){
		day = "0"+day;
	}
	if(month<10){
		month = "0"+month;
	}
	document.getElementById('date').value=year+"-"+month+"-"+day;
}

function validateEmail(email){
	var at = email.indexOf('@');
	var dot = email.lastIndexOf('.');
	var valid = true;
	if(!email || dot==-1 || at==-1 || dot<at || dot-at ==1){
		alert('Invalid Email Address.');
		valid = false;
	}
	return valid;
}

function joinmailinglist(email){
	ajax('php/joinmailinglist.php?email='+email);
	hide('mailinglistform');
	show('mailinglistloading');
}