var selectedGenre;
var selectedVenue;
var currentdate;

function showMinCalBox(t) {
	if (document.getElementById('miniCalDropList')) document.getElementById("miniCalDrops").removeChild(document.getElementById('miniCalDropList'));
	if (!mc_curropen || mc_curropen != t.id) {
		mc_curropen = t.id;
		if (t.id == "miniCalGenreDrop") {
			var divhtml = genrelist;
		} else {
			var divhtml = venuelist;
		}
		var cd = document.createElement("DIV");
		cd.id = "miniCalDropList";
		cd.innerHTML = divhtml;
		var tx = t.offsetLeft;
		var ty = t.offsetTop + 14;
		cd.style.left = tx + "px";
		cd.style.top = ty + "px";
		cd.style.display = "inline";
		document.getElementById("miniCalDrops").insertBefore(cd, document.getElementById("miniCalGenreDrop"));
		if (document.getElementById("miniCalDropList").clientWidth < 171) document.getElementById("miniCalDropList").width = "171px";
		updateLists();
	} else {
		mc_curropen = false;
	}
}

function selectMiniCalAdded() {
	var type = (this.id.indexOf("Genre") != -1) ? "genre" : "venue";
	selectMiniCalGenre(type,this);
}

function selectMiniCalGenre(type,t){
	selectedGenre = "";
	selectedVenue = "";
	if (t && t.id) {
		var reqid = t.id.split("-")[1];
		var t_txt = t.innerHTML;
	} else if (t) {
		var reqid = t.split("-")[1];
		var t_txt = "";
	}
	var cf = document.getElementById('calFrame').childNodes;
	for (var i=0; i < cf.length; i++) {
		if (cf[i].className == "calDaysGenre") cf[i].className = "calDays";
	}
	document.getElementById("miniCalGenreDrop").className = "miniCalDropDown";
	document.getElementById("miniCalVenueDrop").className = "miniCalDropDown";
	document.getElementById("miniCalGenreDrop").innerHTML = "Show by Genre";
	document.getElementById("miniCalVenueDrop").innerHTML = "Show by Venue";
	for(i=0; i < availdates.length; i++){
		if (availdates[i] != "") {
			document.getElementById(availdates[i]).className = 'calEventDays';
		}
	}
	if (type == 'genre') {
		selectedGenre = reqid;
		document.getElementById("miniCalGenreDrop").innerHTML = (t_txt != "") ? "Show by Genre: " + t_txt : "Show by Genre: " + document.getElementById('genreDrop').innerHTML;
		document.getElementById("miniCalGenreDrop").className = "miniCalDropDownSel";
		if (reqid != "ALL") {
			for(i=0; i < availgenres[reqid].length; i++){
				if (document.getElementById(availgenres[reqid][i])) {
					document.getElementById(availgenres[reqid][i]).className = 'calDaysGenre'
					if (currentdate && availgenres[reqid][i] == currentdate) document.getElementById(availgenres[reqid][i]).className = 'calDaysGenreSel';
				}
			}
		}
	} else {
		selectedVenue = reqid;
		document.getElementById("miniCalVenueDrop").innerHTML = (t_txt != "") ? "Show by Venue: " + t_txt : "Show by Venue: " + document.getElementById('venueDrop').innerHTML;
		document.getElementById("miniCalVenueDrop").className = "miniCalDropDownSel";
		if (reqid != "ALL") {
			for(i=0; i < availvenues[reqid].length; i++){
				if (document.getElementById(availvenues[reqid][i])) {
					document.getElementById(availvenues[reqid][i]).className = 'calDaysGenre';
					if (currentdate && availvenues[reqid][i] == currentdate) document.getElementById(availvenues[reqid][i]).className = 'calDaysGenreSel';
				}
			}
		}
	}
	if (document.getElementById('miniCalDropList')) document.getElementById("miniCalDrops").removeChild(document.getElementById('miniCalDropList'));
	mc_curropen = false;
}

function goToDateNow(t){
	var xtra = "";
	if (t.className == "calDaysGenre") {
		if (selectedGenre.length) {
			xtra = "&genre=" + selectedGenre;
		} else if (selectedVenue.length) {
			xtra = "&venue=" + selectedVenue;
		}
	}
	document.location.href = "/calendar.php?date=" + t.id + xtra;
}

function getNewMonth(m) {
	/*
	document.location.href = "/calendar.php?date=" + m +"-01";
	*/
	
	document.getElementById("miniCalGenreDrop").className = "miniCalDropDown";
	document.getElementById("miniCalVenueDrop").className = "miniCalDropDown";
	document.getElementById("miniCalGenreDrop").innerHTML = "Show by Genre";
	document.getElementById("miniCalVenueDrop").innerHTML = "Show by Venue";

	var req = "action=getNewMonth&month=" + m;
	enqueueRequest(ajax_root + 'minical_ajax.php',req,"doSwitchCal");
	var req = "action=getNewGenres&month=" + m;
	enqueueRequest(ajax_root + 'minical_ajax.php',req,"doSwitchGenres");
	var req = "action=getNewVenues&month=" + m;
	enqueueRequest(ajax_root + 'minical_ajax.php',req,"doSwitchVenues");
	var req = "action=getNewDates&month=" + m;
	enqueueRequest(ajax_root + 'minical_ajax.php',req,"doSwitchDates");
	
}

function doSwitchCal() {
	if (http.responseText) {
		document.getElementById("calFrame").innerHTML = http.responseText;
		queueJump();
	}
}

function doSwitchGenres() {
	if (http.responseText) {
		availgenres = new Array();
		var genrez = http.responseText.split("||");
		if (genrez.length) {
			var last_genre = "";
			for (var i=0; i < genrez.length; i++) {
				var info = genrez[i].split(",");
				if (info[0] != last_genre) {
					availgenres[info[0]] = new Array();
				}
				availgenres[info[0]].push(info[1]);
				last_genre = info[0];
			}
		}
		//alert(availgenres);
		queueJump();
	}
}

function doSwitchVenues() {
	if (http.responseText) {
		availvenues = new Array();
		var venuez = http.responseText.split("||");
		if (venuez.length) {
			var last_venue = "";
			for (var i=0; i < venuez.length; i++) {
				var info = venuez[i].split(",");
				if (info[0] != last_venue) {
					availvenues[info[0]] = new Array();
				}
				availvenues[info[0]].push(info[1]);
				last_venue = info[0];
			}
		}
		//alert(availvenues);
		queueJump();
	}
}

function doSwitchDates() {
	if (http.responseText) {
		availdates = new Array();
		var datez = http.responseText.split("||");
		if (datez.length) {
			for (var i=0; i < datez.length; i++) {
				availdates.push(datez[i]);
			}
		}
		queueJump();
	}
}

function updateLists() {
	var cf = document.getElementById('miniCalDropList').childNodes;
	for (var i=0; i < cf.length; i++) {
		if (cf[i].id != "minicalGenreListItem-ALL" && cf[i].id != "minicalVenueListItem-ALL") {
			if (cf[i].className == "minicalListItem") cf[i].className = "minicalListItemOFF";
			if (cf[i].id) {
				var choice_id = cf[i].id.split("-");
				if (choice_id[0] == "minicalGenreListItem" && availgenres[choice_id[1]]) {
					cf[i].className = "minicalListItem";
					if (window.addEventListener) { 
						cf[i].addEventListener("click",selectMiniCalAdded,false);
					} else if (window.attachEvent) { 
						cf[i].attachEvent("onclick",selectMiniCalAdded); 
					}
				}
				if (choice_id[0] == "minicalVenueListItem" && availvenues[choice_id[1]]) {
					cf[i].className = "minicalListItem";
					if (window.addEventListener) { 
						cf[i].addEventListener("click",selectMiniCalAdded,false);
					} else if (window.attachEvent) { 
						cf[i].attachEvent("onclick",selectMiniCalAdded); 
					}
	
				}
			}
		}
	}
}

function checkMiniCalPreset() {
	var url = document.location.href;
	if (url.indexOf("calendar.php") != -1) {
		var urls = url.split("&")
		if (urls.length) {
			if (urls[urls.length - 1].indexOf("genre") != -1 || urls[urls.length - 1].indexOf("venue") != -1) {
				var parts = urls[urls.length - 1].split("=");
				if (parts[1] != "ALL") {
					if (parts[0] == "genre") {
						var type = "Genre";
					} else {
						var type = "Venue";
					}
					var el = 'minical' + type + 'ListItem-' + parts[1];
					selectMiniCalGenre(parts[0],el);
				}
			}
		}
	}
}

var keepscrolling = false;
var scrolldir = "";
var rn_scroller;

function rightNowScrolling(dir) {
	keepscrolling = true;
	scrolldir = dir;
	doRightNowScrolling();
}

function killScrolling() {
	if (typeof rn_scroller == "number") {
		window.clearTimeout(rn_scroller);
		keppscrolling = false;
	}
}

function doRightNowScrolling() {
	var currpos = (document.getElementById('rightNowBlock').offsetTop) ? document.getElementById('rightNowBlock').offsetTop : 0;
	var rnht = document.getElementById('rightNowBlock').clientHeight;
	if (scrolldir == "up") {
		if (rnht > 191) {
			var newtop = (currpos - 2);
			var mintop = (rnht - 191) * -1;
			if (newtop < mintop) newtop = mintop;
			document.getElementById('rightNowBlock').style.top = newtop + "px";
		}
	}
	if (scrolldir == "dn") {
		if (currpos < 0) {
			var newtop = (currpos + 2);
			if (newtop > 0) newtop = 0;
			document.getElementById('rightNowBlock').style.top = newtop + "px";
		}
	}
	if (keepscrolling) {
		rn_scroller = window.setTimeout("doRightNowScrolling()", 10);
	}
}


/*********************************************************************
AJAX
**********************************************************************/

var queue = new Array();
var http = null;
var domain = document.location.href.match( /:\/\/([^\/:]+)/ );
var ajax_root = "http://" + domain[1] + "/php_includes/c/";

function createRequestObject(){
	var request_o;
	var browser = navigator.appName;
	if (browser == "Microsoft Internet Explorer") {
		request_o = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		request_o = new XMLHttpRequest();
	}
	return request_o;
}

function queueJump() {
	queue.shift();
	http = null;
	setTimeout("dequeueRequests();",100);
}

function enqueueRequest(u,r,f) {
	var qlen = queue.length;
	var qout = "";
	queue[qlen] = new Array(u,r,f);
	for (var i=0; i < queue.length; i++) {
		qout += queue[i] + "\n";
	}
	if (!http) {
		dequeueRequests();
	}
}

function dequeueRequests() {
	if (queue.length) {
		if (!http) {
			var qitem = queue[0];
			var qurl = qitem[0];
			var qreq = qitem[1];
			var qres = qitem[2];
			http = createRequestObject();
			http.open('post',qurl);
			http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			http.onreadystatechange = function() { 
				if (http.readyState == 4) {
					eval(qres + '(http.responseText);');
				}
			}
			http.send(qreq);
		} else {
			setTimeout("dequeueRequests()", 100);
		}
	}
}

function doNothing() {
	queueJump();
}

if (window.addEventListener) { 
	window.addEventListener("load",checkMiniCalPreset,false);
} else if (window.attachEvent) { 
	window.attachEvent("onload",checkMiniCalPreset); 
}
	
//window.addEventListener("load",checkMiniCalPreset,false);

