
var events = new Array();
var RSSRequestObject = false; // XMLHttpRequest Object
var Backend = 'eventrss.asp?n='+Math.random(); // Backend url

if (window.XMLHttpRequest) // try to create XMLHttpRequest
	RSSRequestObject = new XMLHttpRequest();

if (window.ActiveXObject)	// if ActiveXObject use the Microsoft.XMLHTTP
	RSSRequestObject = new ActiveXObject("Microsoft.XMLHTTP");


/*
* onreadystatechange function
*/
function ReqChange() {

	// If data received correctly
	if (RSSRequestObject.readyState==4) {
	
		// if data is valid
		if (RSSRequestObject.responseText.indexOf('invalid') == -1) 
		{ 	
			// Parsing Feeds
			var node = RSSRequestObject.responseXML.documentElement; 
			
			// Get the calendar title
			var title = node.getElementsByTagName('title').item(0).firstChild.data;
			
			content = '<div class="channeltitle">'+title+'</div>';
		
			// Browse events
			var items = node.getElementsByTagName('entry');
			if (items.length == 0) {
				content += '<ul><li><div class=error>No events</div></li></ul>';
			} else {
				content += '<ul>';
				for (var n=0; n < items.length; n++)
				{	
					var itemTitle = items[n].getElementsByTagName('title').item(0).firstChild.data;
					try {
						var sourceTime = items[n].getElementsByTagName('gd:when').item(items[n].getElementsByTagName('gd:when').length-1).getAttribute('startTime');		
					} catch (e) {		
						var sourceTime = "2000-1-1T12:00:00";
					}
					// Firefox 2 and others can't find gd:when without NameSpace declaration, but would break IE, so it is only run if needed
					if(sourceTime=="2000-1-1T12:00:00") {
						try {
							sourceTime = items[n].getElementsByTagNameNS("http://schemas.google.com/g/2005","when").item(items[n].getElementsByTagNameNS("http://schemas.google.com/g/2005","when").length-1).getAttribute("startTime");		
						} catch (e) {		
							sourceTime = "2001-1-1T12:00:00";
						}						
					}
					var startTime = sourceTime.split("T");
					var eventDate = startTime[0].split("-");
					// If there is a possibility that events won't have times, this needs better handling.
					if(startTime.length>1){
						var eventTime = startTime[1].split(":");
					} else {
						var eventTime = "12:00:00".split(":")
					}
					//alert(eventDate[1]);
					var eventWhen = new Date(eventDate[0], eventDate[1]-1, eventDate[2], eventTime[0], eventTime[1]);
					var eventHour = eventWhen.getHours();
					var eventAMPM = "AM";
					if(eventHour>=12){eventAMPM="PM";}
					if(eventHour>12){eventHour=eventHour-12;}
					if(eventHour==0){eventHour=12;}
					var eventMinute = eventWhen.getMinutes().toString();
					if(eventMinute < 10){eventMinute="0"+eventMinute;}
					var eventReadableTime = (eventWhen.getMonth()+1)+"/"+eventWhen.getDate()+"/"+eventWhen.getFullYear()+" - "+eventHour+":"+eventMinute+" "+eventAMPM;
					content += "<li>"+items[n]+" "+itemTitle+" : "+(eventWhen.getMonth()+1)+"/"+eventWhen.getDate()+"/"+eventWhen.getFullYear()+" - "+eventHour+":"+eventMinute+" "+eventAMPM+"</li>";
					
					var eventSlot = events.length;
					events[eventSlot] = new Array();
					events[eventSlot]["title"] = itemTitle;
					events[eventSlot]["time"] = eventWhen;
					events[eventSlot]["readableTime"] = eventReadableTime;
				}
				
	
				content += '</ul>';
			}
			
			setCalendar();
			
		}
		else {
			// Tell the reader that there was error requesting data
			var alertmsg = "There was an error requesting the calendar data.  Please call Mission Research at 888-323-8766 x2 to complete your order or try refreshing this page."
			alert(alertmsg)
			if ($("#calendar").length>0) {
				$("#calendar").text(alertmsg)
			}
		}
	}
	
}	

// Calendar Functions
function setCalendar(m,y,r) {
	var today = new Date();
	
	//checks to see if month and year were passed in. Set to today's date if nothing.
	if(m>=0) {
		var monthNum = m;
	}
	else {
		var monthNum = today.getMonth();
	}
	
	if(y) {
		var year = y;
	}
	else {
		var year = today.getFullYear();
	}
	
	if(r) {
		var rounds = r;
	}
	else {
		var rounds = 0;
	}
	
	//set up next and previous month links
	if(monthNum == 0) {var monthPrior = 11; var yearPrior = year - 1; var monthLater = 1; var yearLater = year;}
	else if (monthNum == 11) {var monthPrior = 10; var yearPrior = year; var monthLater = 0; var yearLater = year + 1;}
	else {var monthPrior = monthNum-1; var yearPrior = year; var monthLater = monthNum+1; var yearLater = year;}
	
	var args = getArgs();
	
	var monthList = ["January","February","March","April","May","June","July","August","September","October","November","December"];
	//product list includes the product id and all keywords for each training product
	var productList = [["gw","Overview"],["gi","Import"],["gv","Events"]];
	var productFlag = "none";
	var productID = "0";
	
	for(var i=0;i<productList.length;i++) {
		if(args.type==productList[i][0]) {
			productFlag=productList[i][1];
		}
	}
	
	var monthEvents = new Array();
	for(var i=0;i<events.length;i++) {
		if(events[i]["time"].getMonth() == monthNum && events[i]["time"].getFullYear() == year) {
			if(productFlag=="none" || events[i]["title"].indexOf(productFlag)!=-1) {
				var day = events[i]["time"].getDate();
				if(!monthEvents[day]) {
					monthEvents[day] = new Array();
				}
				for(var x=0;x<productList.length;x++) {
					if(events[i]["title"].indexOf(productList[x][1])!=-1) {
						var productID=productList[x][0];
						break;
					} else {
						var productID="8";
					}
				}
				monthEvents[day][monthEvents[day].length] = "<a href='#' onClick='setForm(\""+events[i]["title"]+" "+events[i]["readableTime"]+"\",\""+productID+"\");return false;' class='eventItem'><b>"+events[i]["title"]+"</b> - "+events[i]["readableTime"].split("-")[1]+"</a>";
			}
		}
	}
	if (monthEvents.length == 0 && events.length > 1 && rounds < 3) {
		setCalendar(monthLater,yearLater,rounds+1);
		return;
	} else if (rounds == 3) {
		alert("Sorry, there are no tours available in the next three months.");
		return;
	}

	if ($("#calendar").length>0) {
		var monthDiv = document.getElementById("calendar");
		//start building the display code stored in the "html" variable
		var html = "<table cellpadding='0' cellspacing='0' class='calendar-wrap'><tr><td class='calendar-left-arrow'><a onClick='setCalendar(" + monthPrior + "," + yearPrior + ",\"prev\")'><img src='/images_07/arrow-back.gif' border='0'></a></td><td class='calendar-month' colspan='5'>" + monthList[monthNum] + " " + year + "</td><td class='calendar-right-arrow'><a onClick='setCalendar(" + monthLater + "," + yearLater + ",\"next\")'><img src='/images_07/arrow-forward.gif' border='0'></a></td></tr><tr class='day-list'><td class='day-name' width='5%'>Sun</td><td class='day-name' width='18%'>Mon</td><td class='day-name' width='18%'>Tue</td><td class='day-name' width='18%'>Wed</td><td class='day-name' width='18%'>Thu</td><td class='day-name' width='18%'>Fri</td><td class='day-name' width='5%'>Sat</td></tr><tr>"
		var startDate = new Date(year, monthNum, 1);
		var monthCheck = new Date(year, monthNum, 2);
		var count = 0;
		
		//buid in empty slots at the begining of the month.
		for(var i=0; i<7; i++) {
			if(i<startDate.getDay()) {
				html = html + "<td class='emptyday'>&nbsp;</td>";
				count++;
			}
		}
		
		//loop through all of the days for this month, stop when we get to the next month
		for(var i=1; startDate.getMonth() == monthCheck.getMonth(); i++) {
			var eventInfo="";
			var dayDate = new Date(year, monthNum, i);
			if(dayDate <= new Date()) {var style = "cursor: pointer; color: #ccc;"} else {var style = "cursor: pointer;"}
			//if there is an event for this date, add it in to the code
			if(monthEvents[dayDate.getDate()]){
				for(var x=0;x<monthEvents[dayDate.getDate()].length;x++){
					eventInfo=eventInfo + monthEvents[dayDate.getDate()][x] + "<br />";
				}
			} 
			//build the code for each day
			html = html + "<td class='day' style='" + style + "'>" + i + " " + eventInfo + "</td>";
	
			//check to see if we need to add a new week row
			count++;
			if(count%7==0){html=html+"</tr><tr>"}
			
			//create a new date for the begining of the loop
			monthCheck = new Date(year, monthNum, i+1);
		}
		
		//buid in empty slots at the end of the month.
		if(monthCheck.getDay() != 0) {
			for(var i=0; i<7; i++) {
				if(i>=monthCheck.getDay()) {
					html = html + "<td class='emptyday'>&nbsp;</td>";
				}
			}
		}
	}
	html = html + "</tr></table>";
	monthDiv.innerHTML = html;

}

/*
* Main AJAX RSS reader request
*/
function RSSRequest() {
	// Prepare the request
	RSSRequestObject.open("GET", Backend , true);
	// Set the onreadystatechange function
	RSSRequestObject.onreadystatechange = ReqChange;
	// Send
	RSSRequestObject.send(null); 
}

function getArgs() {
	var args = new Object();
	var query = location.search.substring(1);
	var pairs = query.split("&")
	for (var i=0; i<pairs.length; i++) {
		var pos = pairs[i].indexOf('=');
		if (pos == -1) continue;
		var argname = pairs[i].substring(0,pos);
		var value = pairs[i].substring(pos+1);
		args[argname] = unescape(value);
	}
	return args
}

function calendarPass() {
	$("input[name=tourtime]").each(function() {
		var current = this;
		this.onclick=function(event) {calendarLaunch(this);}
	});
	$("input[disabled]").removeAttr("disabled");
	$("input[name=tourtime]+span").append("<a href='#' onClick='calendarLaunch($(\"input[name=tourtime]\"));return false;'><img src='/images_07/calendar-03.gif' class='calendar-button'></a><div id='calendarPop' style='display: none;'><div style='float: right;'><a href='#' onClick='calendarClose();return false;'>Close Window</a></div><strong>Click on a Tour Date</strong><br />All dates and times are based on US Eastern Time.<div id='status' style='display:none'>Fetching calendar ...</div><div id='calendar'></div></div>");
	var args = getArgs();
	// if(args.date && args.idproduct) {
	//	$("input[name=tourtime]").attr("value",args.date);
	//}
	RSSRequest();	
	//}).append("<a href='#' onClick='calendarLaunch($(\"input[name=xfield1]\"))'>Cal</a><div>Calendar</div>")
}


function calendarLaunch(field) {
	field.value = "";
	$(field).attr("disabled","disabled");
	$("#calendarPop").css("display","block");
}

function calendarClose() {
	$("#calendarPop").css("display","none");
	$("input[disabled]").removeAttr("disabled");
}

function setForm(val,productID) {
	$("input[name=tourtime]").attr("value",val);
	$("input[name=tourtype]").attr("value",productID);
	calendarClose();
}

$(function() {
	var args = getArgs();
	calendarPass();
});
