var curCalDay = null;
curDate = "today";
var a = null;
var b = null;
var c = null;
artistSlider = null;
orgSlider = null;
calendarSlider = null;
footPush = null;
footHeightCal = 0;
footHeightArt = 0;
footHeightOrg = 0;
footHeightOriginal = 0;

totalExhib = 0;
totalFest = 0;
totalPerform = 0;
totalWorkshops = 0;

function hideAll() {
	document.getElementById("artistBody").style.display = "none";
	document.getElementById("orgBody").style.display = "none";
	document.getElementById("calBody").style.display = "none";
}

function goArtist() {
	document.getElementById("artistBody").style.display = "block";
	document.getElementById("orgBody").style.display = "none";
	document.getElementById("calBody").style.display = "none";
	
	footPush.style.height = footHeightArt + "px";
}

function goOrg() {
	document.getElementById("orgBody").style.display = "block";
	document.getElementById("artistBody").style.display = "none";
	document.getElementById("calBody").style.display = "none";

	footPush.style.height = footHeightOrg + "px";
}

function goCal() {
	document.getElementById("calBody").style.display = "block";
	document.getElementById("artistBody").style.display = "none";
	document.getElementById("orgBody").style.display = "none";

	footPush.style.height = footHeightCal + "px";
}

function goDay(e,theDate) {
	if(curCalDay != null) {
		toggleClickyDay(curCalDay);
	}
	toggleClickyDay(e);
	curCalDay = e;
	curDate = theDate;
	
	fetchEvents(theDate);
}

function toggleClickyDay(e) {
	var nombre = String(e.className);
	var dayPos = nombre.substr(11);
	var dayClass = nombre.substr(0,10);
	e.className = (dayClass == "dayClicker") ? "dayCurrent " + dayPos : "dayClicker " + dayPos;
}

function initCal() {
	artistSlider = document.getElementById("artistSlideContainer");
	orgSlider = document.getElementById("orgSlideContainer");
	calendarSlider = document.getElementById("calSlideContainer");
	footPush = document.getElementById("footerPusher");
	tmpHeight = parseInt(footPush.style.height);
	footHeightCal = isNaN(tmpHeight) ? 740 : tmpHeight;
	footHeightOrg = footHeightCal;
	footHeightArt = footHeightCal;
	footHeightOriginal = footHeightCal;
	
//	alert("footHeight: " + footHeightOriginal);

	//scrollbar jumping fix
//	if (document.body.clientWidth) {
//		var margey = (document.body.clientWidth - 990) / 2;
//	} else if (window.innerWidth) {
//		var margey = (window.innerWidth - 990) / 2;
//	}
//	document.getElementById("bodyContainer").style.marginLeft = margey + "px";
//	document.body.background.position = margey + "px" + " top";

	elDate = new Date();
	curCalDay = document.getElementById("d" + elDate.getDate());
//	fetchEvents("today");
}

function initXmlRequest() {
	xslReq = false;

	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		xslReq = new XMLHttpRequest();
	} else if (window.ActiveXObject) { // IE
		try {
			xslReq = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xslReq = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!xslReq) {
		alert('Your web browser is not compatible with our Create a Bowl interface.');
		return false;
	} else {
		return true;	
	}
}

function fetchEvents(sqlDate) {
	initXmlRequest();
	
	xslReq.open("POST", "/eventFetcher.php", true);
	xslReq.onreadystatechange = gotEvents;
	xslReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	var pdiddyInfo = "date=" + sqlDate;
	xslReq.send(pdiddyInfo);
}

function calSearch() {
	if (document.getElementById("calSearchBox").value != "") {
		initXmlRequest();
		
		xslReq.open("POST", "/eventSearcher.php", true);
		xslReq.onreadystatechange = gotEvents;
		xslReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		
		var pdiddyInfo = "srch=" + document.getElementById("calSearchBox").value;
		xslReq.send(pdiddyInfo);
	}
}


function gotEvents() {
	if (xslReq.readyState==4) {
		if (xslReq.status==200) {
			document.getElementById("calendarList").innerHTML = xslReq.responseText;
			dHeight = document.getElementById("calendarList").offsetHeight;
			slideCal(dHeight);
		} else {
			alert("Couldn't load a required resource");
		}
	}
}

function slideCal(dH) {
	if (c != null) {
		c.stop();
		c = null;
	}

	c = new Accelimation(calendarSlider.style, "height", (dH + 14), 400, .8, "px");
	c.onend = onCalSlideEnd;
	c.onframe = slideCali;
	c.start();
}

function slideCali(y) {
	calendarSlider.style.height = y  + "px";
	footPush.style.height = (y > 320) ? (y + 524) + "px" : footHeightOriginal + "px";
}

function onCalSlideEnd() {
	c.stop();
	c = null;

	footHeightCal = parseInt(footPush.style.height);
	scripto = document.getElementById("eventTotals");

	eval(scripto.innerHTML);
	updateEventTotals();
}

function monthPrev(leDate) {
	initXmlRequest();
	
	xslReq.open("POST", "/monthFetcher.php", true);
	xslReq.onreadystatechange = gotMonth;
	xslReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	var pdiddyInfo = "dir=prev&date=" + leDate;
	xslReq.send(pdiddyInfo);
}

function monthNext(leDate) {
	initXmlRequest();
	
	xslReq.open("POST", "/monthFetcher.php", true);
	xslReq.onreadystatechange = gotMonth;
	xslReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	var pdiddyInfo = "dir=next&date=" + leDate;
	xslReq.send(pdiddyInfo);
}

function gotMonth() {
	if (xslReq.readyState==4) {
		if (xslReq.status==200) {
			document.getElementById("leCalendar").innerHTML = xslReq.responseText;
			document.getElementById("calendarList").innerHTML = "";
			curCalDay = null;
//			curCalDay = document.getElementById("d1");

			dHeight = document.getElementById("calendarList").offsetHeight;
			slideCal(dHeight);
		} else {
			alert("Couldn't load a required resource");
		}
	}
}

function memArt(sLetter) {
	initXmlRequest();
	
	xslReq.open("POST", "/artistFetcher.php", true);
	xslReq.onreadystatechange = gotArtists;
	xslReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	var pdiddyInfo = "cat=artist&letter=" + sLetter;
	xslReq.send(pdiddyInfo);
}

function memArtSearch() {
	sCat = document.getElementById("artCats").value;
	if(sCat == "") {
		memArtSearchAll();
	} else {
	
		initXmlRequest();
		
		xslReq.open("POST", "/artistFetcher.php", true);
		xslReq.onreadystatechange = gotArtists;
		xslReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		
		var pdiddyInfo = "cat=" + sCat;
		xslReq.send(pdiddyInfo);
	}
}

function memArtSearchAll() {
	initXmlRequest();
	
	xslReq.open("POST", "/artistFetcher.php", true);
	xslReq.onreadystatechange = gotArtists;
	xslReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	var pdiddyInfo = "crap=1&all=gimmeall";
	xslReq.send(pdiddyInfo);
}

function gotArtists() {
	if (xslReq.readyState==4) {
		if (xslReq.status==200) {
			document.getElementById("artistList").innerHTML = xslReq.responseText;
			dHeight = document.getElementById("artistList").offsetHeight;
			slideArtists(dHeight);
		} else {
			alert("Couldn't load a required resource");
		}
	}
}

function gotOrgs() {
	if (xslReq.readyState==4) {
		if (xslReq.status==200) {
			document.getElementById("orgList").innerHTML = xslReq.responseText;
			dHeight = document.getElementById("orgList").offsetHeight;
			slideOrgies(dHeight);
		} else {
			alert("Couldn't load a required resource");
		}
	}
}

function slideArtists(dH) {
	if (a != null) {
		a.stop();
		a = null;
	}

	a = new Accelimation(artistSlider.style, "height", (dH + 30), 400, .8, "px");
	a.onend = onSlideEnd;
	a.onframe = slideArt;
	a.start();
}

function slideArt(y) {
	artistSlider.style.height = y  + "px";
	footPush.style.height = (y > 306) ? (y + 434) + "px" : footHeightOriginal + "px";
}

function onSlideEnd() {
	a.stop();
	a = null;
	
	footHeightArt = parseInt(footPush.style.height);
}

function slideOrgies(dH) {
	if (b != null) {
		b.stop();
		b = null;
	}

	b = new Accelimation(orgSlider.style, "height", (dH + 30), 400, .8, "px");
	b.onend = onOrgSlideEnd;
	b.onframe = slideOrgs;
	b.start();
}

function onOrgSlideEnd() {
	b.stop();
	b = null;

	footHeightOrg = parseInt(footPush.style.height);
}

function slideOrgs(y) {
	orgSlider.style.height = y  + "px";
	footPush.style.height = (y > 306) ? (y + 434) + "px" : footHeightOriginal + "px";
}

function memOrg(sLetter) {
	initXmlRequest();
	
	xslReq.open("POST", "/orgFetcher.php", true);
	xslReq.onreadystatechange = gotOrgs;
	xslReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	
	var pdiddyInfo = "cat=org&letter=" + sLetter;
	xslReq.send(pdiddyInfo);
}

function memOrgSearch() {
	sSearch = document.getElementById("orgSearchBox").value;
	sCat = document.getElementById("orgCats").value;

	initXmlRequest();
		
	xslReq.open("POST", "/orgFetcher.php", true);
	xslReq.onreadystatechange = gotOrgs;
	xslReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

	var pdiddyInfo = "cat=" + sCat;
	
	if(sSearch != "") {
		pdiddyInfo += "&search=" + sSearch;
	}
	xslReq.send(pdiddyInfo);
}



function catClick(e) {
	sCSS = "";
	
	switch(e.id) {
		case "catExhib":
			sCSS = "styleExhib";
			break;

		case "catClass":
			sCSS = "styleClasses";
			break;

		case "catPerform":
			sCSS = "stylePerform";
			break;

		case "catFest":
			sCSS = "styleFest";
			break;
	}
	
	if(sCSS != "") {
		if(e.checked) {
			document.getElementById(sCSS).disabled = false;
		} else {
			document.getElementById(sCSS).disabled = true;
		}
	
		updateEventTotals();
	
		dHeight = document.getElementById("calendarList").offsetHeight;
		slideCal(dHeight);
	}
}

function goFestival() {
	document.getElementById("catFest").checked = true;
	document.getElementById("styleFest").disabled = false;

	document.getElementById("catClass").checked = false;
	document.getElementById("styleClasses").disabled = true;

	document.getElementById("catPerform").checked = false;
	document.getElementById("stylePerform").disabled = true;

	document.getElementById("catExhib").checked = false;
	document.getElementById("styleExhib").disabled = true;

	fetchEvents(curDate);

}

function goExhib() {
	document.getElementById("catExhib").checked = true;
	document.getElementById("styleExhib").disabled = false;

	document.getElementById("catClass").checked = false;
	document.getElementById("styleClasses").disabled = true;

	document.getElementById("catPerform").checked = false;
	document.getElementById("stylePerform").disabled = true;

	document.getElementById("catFest").checked = false;
	document.getElementById("styleFest").disabled = true;

	fetchEvents(curDate);
}

function goWorkshops() {
	document.getElementById("catClass").checked = true;
	document.getElementById("styleClasses").disabled = false;

	document.getElementById("catExhib").checked = false;
	document.getElementById("styleExhib").disabled = true;

	document.getElementById("catPerform").checked = false;
	document.getElementById("stylePerform").disabled = true;

	document.getElementById("catFest").checked = false;
	document.getElementById("styleFest").disabled = true;

	fetchEvents(curDate);
}

function goPerform() {
	document.getElementById("catPerform").checked = true;
	document.getElementById("stylePerform").disabled = false;

	document.getElementById("catClass").checked = false;
	document.getElementById("styleClasses").disabled = true;

	document.getElementById("catExhib").checked = false;
	document.getElementById("styleExhib").disabled = true;

	document.getElementById("catFest").checked = false;
	document.getElementById("styleFest").disabled = true;

	fetchEvents(curDate);
}

function goAllEvents() {
	document.getElementById("catPerform").checked = true;
	document.getElementById("stylePerform").disabled = false;
	document.getElementById("catClass").checked = true;
	document.getElementById("styleClasses").disabled = false;
	document.getElementById("catExhib").checked = true;
	document.getElementById("styleExhib").disabled = false;
	document.getElementById("catFest").checked = true;
	document.getElementById("styleFest").disabled = false;

	fetchEvents(curDate);
}

function updateEventTotals() {
	var iTot = 0;
	var grandTotal = totalExhib + totalFest + totalPerform + totalWorkshops;
	
	if (document.getElementById("catExhib").checked) {
		iTot += totalExhib;	
	}
	if (document.getElementById("catFest").checked) {
		iTot += totalFest;	
	}
	if (document.getElementById("catPerform").checked) {
		iTot += totalPerform;	
	}
	if (document.getElementById("catClass").checked) {
		iTot += totalWorkshops;	
	}

	document.getElementById("eventTotalLisitng").innerHTML = "Showing <strong>" + iTot + "</strong> of <strong>" + grandTotal + "</strong> events";
}