// Simulates PHP's date function
// http://jacwright.com/projects/javascript/date_format
Date.prototype.format = function(format) {
	var returnStr = '';
	var replace = Date.replaceChars;
	for (var i = 0; i < format.length; i++) {
		var curChar = format.charAt(i);
		if (replace[curChar]) {
			returnStr += replace[curChar].call(this);
		} else {
			returnStr += curChar;
		}
	}
	return returnStr;
};
Date.replaceChars = {
	shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
	longMonths: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
	shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
	longDays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
	
	// Day
	d: function() { return (this.getDate() < 10 ? '0' : '') + this.getDate(); },
	D: function() { return Date.replaceChars.shortDays[this.getDay()]; },
	j: function() { return this.getDate(); },
	l: function() { return Date.replaceChars.longDays[this.getDay()]; },
	N: function() { return this.getDay() + 1; },
	S: function() { return (this.getDate() % 10 == 1 && this.getDate() != 11 ? 'st' : (this.getDate() % 10 == 2 && this.getDate() != 12 ? 'nd' : (this.getDate() % 10 == 3 && this.getDate() != 13 ? 'rd' : 'th'))); },
	w: function() { return this.getDay(); },
	z: function() { return "Not Yet Supported"; },
	// Week
	W: function() { return "Not Yet Supported"; },
	// Month
	F: function() { return Date.replaceChars.longMonths[this.getMonth()]; },
	m: function() { return (this.getMonth() < 9 ? '0' : '') + (this.getMonth() + 1); },
	M: function() { return Date.replaceChars.shortMonths[this.getMonth()]; },
	n: function() { return this.getMonth() + 1; },
	t: function() { return "Not Yet Supported"; },
	// Year
	L: function() { return (((this.getFullYear()%4==0)&&(this.getFullYear()%100 != 0)) || (this.getFullYear()%400==0)) ? '1' : '0'; },
	o: function() { return "Not Supported"; },
	Y: function() { return this.getFullYear(); },
	y: function() { return ('' + this.getFullYear()).substr(2); },
	// Time
	a: function() { return this.getHours() < 12 ? 'am' : 'pm'; },
	A: function() { return this.getHours() < 12 ? 'AM' : 'PM'; },
	B: function() { return "Not Yet Supported"; },
	g: function() { return this.getHours() % 12 || 12; },
	G: function() { return this.getHours(); },
	h: function() { return ((this.getHours() % 12 || 12) < 10 ? '0' : '') + (this.getHours() % 12 || 12); },
	H: function() { return (this.getHours() < 10 ? '0' : '') + this.getHours(); },
	i: function() { return (this.getMinutes() < 10 ? '0' : '') + this.getMinutes(); },
	s: function() { return (this.getSeconds() < 10 ? '0' : '') + this.getSeconds(); },
	// Timezone
	e: function() { return "Not Yet Supported"; },
	I: function() { return "Not Supported"; },
	O: function() { return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + '00'; },
	P: function() { return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + ':' + (Math.abs(this.getTimezoneOffset() % 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() % 60)); },
	T: function() { var m = this.getMonth(); this.setMonth(0); var result = this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/, '$1'); this.setMonth(m); return result;},
	Z: function() { return -this.getTimezoneOffset() * 60; },
	// Full Date/Time
	c: function() { return this.format("Y-m-d") + "T" + this.format("H:i:sP"); },
	r: function() { return this.toString(); },
	U: function() { return this.getTime() / 1000; }
};

// Create an object that is used to searchField form fields
calendarControl = {
	// ++++++++++++++++++ Object properties (Tip: You can change the values to fit in with your html page but DON'T change the property names)
	// ID of form
	nextMonthLinkID:'nextMonth',
	previousMonthLinkID:'previousMonth',
	calanderMonthTitleID:'month_name',
	calanderYearTitleID:'year_name',
	// CSS Style for searchFielded textbox
	calendarheadingClass:'highlight_field',
	fieldText:'Enter search term',
	currentNextMonthValue : null,
	currentPreviousMonthValue : null,
	yearValue : null,
	// Highlight tab variables
	eventTabID:'event_tab',
	calendarBodyID:'calendar_body',
	calendarBody:null,
	
	// Id for today link
	gotodayID:'gotoday',
	
	loadingImageID: 'preloader',
	preloader: null,
	// CLass for show date links
	showDateClass:"showdate",
	//showDateContainerID :"navigate-container",
	showDateContainerID :"accordion",
	
	calendarDaysID :"calendar_days",
	calendarInformationHolderID :"string_date",
	eventHolderID : "date_information",
	// Variable to track if we need to highlight an event id
	highlightEventID : null,
	browserOpera : false,
	browserSafari : false,
	// http://snipplr.com/view/11020/detect-ie6-in-javascript/
//	browserIE6 : false /*@cc_on || @_jscript_version < 5.7 @*/;
//	// exactly Internet Explorer 7
//	browserIE7 : false /*@cc_on || @_jscript_version == 5.7 @*/;
//	// at least Internet Explorer 7
//	browsergteIE7 : false /*@cc_on || @_jscript_version >= 5.7 @*/;

	// Determien if todays date should have an active date on
	todayActive : true,
	/************************************* Initialise functionality (called after page has loaded using addEvent() method ********************************************************/
  	// Initilise object
  	init:function()
  	{
		var browserIE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
		if(browserIE6)
			return;
  		/****************** Checks to see if the DOM is available (the browser supports it) AND the element is available ******/
		// Check to see if W3C DOM is available - if not terminate script (object detection)
		if(!document.getElementById || !document.createTextNode){return;}
		var calendar = document.getElementById(calendarControl.calendarBodyID); // Find form element
		if(!calendar)
			return;
			
		var nextMonthLink = document.getElementById(calendarControl.nextMonthLinkID); // Find form element
		
		// ++++++++++++++++++++++++ NEW: Opera dones't lay ball with the next/previous month links so we need to hide these. It's ok to run the other javascript though
		var UserAgent = navigator.userAgent;
		var AgentName = UserAgent.substring(0,5);
		if (AgentName == "Opera") {
			calendarControl.browserOpera = true;
			var previousMonthLink = document.getElementById(calendarControl.previousMonthLinkID); // Find form element
			helper.cssjs('add', previousMonthLink, "hide");
			var nextMonthLink = document.getElementById(calendarControl.nextMonthLinkID); // Find form element
			helper.cssjs('add', nextMonthLink, "hide");
			//return;
		}
		// ++++++++++++++++++++++++ NEW: Opera dones't lay ball with the next/previous month links so we need to hide these. It's ok to run the other javascript though
		
		// alert(nextMonthLink);
		// If form element is available, initialise functunality
		if(nextMonthLink)
		{
			helper.addEvent(nextMonthLink,'click', calendarControl.changeMonthForward, false);
			var previousMonthLink = document.getElementById(calendarControl.previousMonthLinkID); // Find form element
			helper.addEvent(previousMonthLink,'click', calendarControl.changeMonthBackward, false);
		};
		// Set year value
		calendarControl.yearValue = document.getElementById(calendarControl.calanderYearTitleID).firstChild.nodeValue;
  	
		// Set events for highlighting days when events are selected
		var eventTab = document.getElementById(calendarControl.eventTabID);
		if(eventTab) {
			var links = eventTab.getElementsByTagName('li');
			for(var i=0; i<links.length;i++)
			{
				helper.addEvent(links[i],'click', calendarControl.highlightCalendar, false);
			}
		}
		// Set events for highlighting days when events are selected
		var todayLink = document.getElementById(calendarControl.gotodayID);
		if(todayLink)
			helper.addEvent(todayLink,'click', calendarControl.showToday, false);
			
		// Check for date links on event tabs so we can jump to specific dates
		var showDateContainer = document.getElementById(calendarControl.showDateContainerID);
		if(showDateContainer) {
			var showdateLinks = showDateContainer.getElementsByTagName('a');
			for(var j=0; j<showdateLinks.length;j++) {
				if(helper.cssjs('check',showdateLinks[j],calendarControl.showDateClass)) {
					helper.addEvent(showdateLinks[j],'click', calendarControl.showDate, false);
					// REMOVED
					// helper.addEvent(showdateLinks[j],'click', calendarControl.showDateInformation, false);
				}
			}
		}
		// Check for date links so we can jump to specific dates
		calendarControl.preloader = document.getElementById(calendarControl.loadingImageID);
		
		// Set date links to display event information
		// REMOVED: We decided the calendar worked best when it jumped directly over to the ticket page
		// calendarControl.setDateLinks();
		
		var browser = navigator.userAgent;
		if (browser.toLowerCase().indexOf('safari') > 0)
			calendarControl.browserSafari = true;
			
/*		alert(calendarControl.currentNextMonthValue);
			if(calendarControl.currentNextMonthValue==13) {
*/	
		// Check if the user has selected a month using the dropdown (so we need to get the name value pairs)
		
		if(location.href.split('=')[1]) {
			var url = location.href.split('=')[1].split('_');
			if(url[0]==12) {
				calendarControl.currentNextMonthValue=13;
			}else if(url[0]==1) {
				calendarControl.currentPreviousMonthValue = 0;
			}
		} else {
			
			
				var url = nextMonthLink.getAttribute('href').split('=')[1].split('&');
				if(url[0]==1)
					calendarControl.currentNextMonthValue=13;
		}
		
	},
	// Set date links to display event information
	setDateLinks:function(e) {
		var days = document.getElementById(calendarControl.calendarDaysID);
		var _dayLinks = days.getElementsByTagName('a');
		for(var j=0; j<_dayLinks.length;j++) {
			helper.addEvent(_dayLinks[j],'click', calendarControl.showDateInformation, false);	
		}
	},
	
	// Calendar day is clicked
	showDateInformation:function(e) {
		
		if(!ajaxCall.xmlHttp || ajaxCall.xmlHttp.status == 200) {
			if(calendarControl.preloader)
				helper.cssjs('remove', calendarControl.preloader, "hide");
		}
		
		var linkElement = helper.getTarget(e);
		
		
		//?startdate=2010-07-31
		var url = linkElement.getAttribute('href').split('?')[1].split('&');
		// Check if event date has been clicked (from tabs), rather than a calendar date
		if(!url[1]) {
			var _date = url[0].split('startdate=')[1];
			_dateSplit = _date.split('-')
			var year = _dateSplit[0];
			var month = _dateSplit[1];
			var day = _dateSplit[2];
		}else{
			var year = url[0].split('=')[1];
			var month = url[1].split('=')[1];
			var day = url[2].split('=')[1];
		}
		
/*		var year = url[0].split('=')[1];
		var month = url[1].split('=')[1];
		var day = url[2].split('=')[1];
*/		
		var date = new Date(year,month-1,day);
		var date_formatted = date.format('l F jS, Y');
			
		var eventHolder = document.getElementById(calendarControl.eventHolderID);
		while (eventHolder.firstChild) 
		{
			eventHolder.removeChild(eventHolder.firstChild);
		}
		
		var eventHolder = document.getElementById(calendarControl.eventHolderID);
		var spanElement = document.createElement("span");
		spanElement.id = "string_date";
		//helper.cssjs('add',spanElement, "string_date");
		var dateText=document.createTextNode(date_formatted);
		spanElement.appendChild(dateText);
		eventHolder.appendChild(spanElement);

		var string = '&year='+year;
		string += '&month='+month;
		string += '&day='+day;
		string += '&weekday='+date.format('l');
		
		ajaxCall.createXMLHttpRequest(string, 'getEvent');
		
		if(ajaxCall.returnedContent) {
			var formData = eval('(' + ajaxCall.returnedContent + ')');
			var arrayCount = formData.length;
			for(i=0; i < arrayCount; i++) {
				// Build events
				eventHolder.appendChild(calendarControl.buildEvent(formData[i]));
			}
		}
		
		// Create buy tickets link
		var divElement = document.createElement("div");
		divElement.id = "buy_ticket";
		var linkElement = document.createElement("a");
		linkElement.setAttribute('href','/view-available-tickets/?year='+year+'&month='+month+'&day='+day);
		var buyText=document.createTextNode("Buy Tickets for "+date_formatted);
		linkElement.appendChild(buyText);
		divElement.appendChild(linkElement);
		eventHolder.appendChild(divElement);

		helper.cssjs("add", calendarControl.preloader, "hide");
		
		//centering with css
		centerPopup();
		//load popup
		loadPopup();
		
		// (window.location = "#calendar-container");
		helper.cancelClick(e);
	},
	
	buildEvent: function(formData) {
				
		var divElement = document.createElement("div");
		helper.cssjs('add',divElement, "event_detail");
		var spanElement = document.createElement("span");
		helper.cssjs('add',spanElement, "event_title");
		
		var timeValue = '';
		if(formData['start_time_formatted']!='00.00AM') {
			var timeValue = " "+formData['start_time_formatted'];	
		}
		var titleText=document.createTextNode("Event: "+formData['title']+timeValue);
		spanElement.appendChild(titleText);
		divElement.appendChild(spanElement);
		return divElement;
	},
	
	showToday: function(e) {
		
		ajaxCall.createXMLHttpRequest(null, 'getDate');
			
		if(ajaxCall.returnedContent) {
			
			var formData = eval('(' + ajaxCall.returnedContent + ')');
				
			var calanderYearTitle = document.getElementById(calendarControl.calanderYearTitleID);
			var calanderText=document.createTextNode(formData[0]['year']);
			calanderYearTitle.removeChild(calanderYearTitle.firstChild);
			calanderYearTitle.appendChild(calanderText);
			calendarControl.yearValue = formData[0]['year'];
	
			var monthValue = parseInt(formData[0]['month']);
	
			if(monthValue==0) {
				calendarControl.currentPreviousMonthValue = 12;
			} else {
				calendarControl.currentPreviousMonthValue = monthValue-1;
				if(monthValue==12) {
					calendarControl.currentNextMonthValue = 1;
				}else{
					calendarControl.currentNextMonthValue = monthValue+1;
					
				}
			}
			var calanderTitle = document.getElementById(calendarControl.calanderMonthTitleID);
			var calanderText=document.createTextNode(formData[0]['monthtext']);
			calanderTitle.removeChild(calanderTitle.firstChild);
			calanderTitle.appendChild(calanderText);	
			
			calendarControl.buildDays(formData, calendarControl.yearValue, monthValue);
		}
		
		// Set date links to display event information
		calendarControl.setDateLinks();
		helper.cancelClick(e);
	},
	
	// User clicks event tab "Show Start Date..." and calendar jumps to correct month
	showDate: function(e) {
		//return;
		var linkElement = helper.getTarget(e);
		// alert(linkElement);
		var url = linkElement.getAttribute('href').split('?startdate=')[1];

		var _date = url.split('-');
		var year = _date[0];
		
		var month = _date[1];
		var day = _date[2];
		
		var _day = day.split('&event=');
		calendarControl.highlightEventID = _day[1];
		// alert(calendarControl.highlightEventID);
		
		var string = '&year='+year;
		string += '&month='+month;
		string += '&day='+day;
		
		ajaxCall.createXMLHttpRequest(string, 'getDate');
			
		if(ajaxCall.returnedContent) {
			
			var formData = eval('(' + ajaxCall.returnedContent + ')');
				
			var calanderYearTitle = document.getElementById(calendarControl.calanderYearTitleID);
			var calanderText=document.createTextNode(formData[0]['year']);
			calanderYearTitle.removeChild(calanderYearTitle.firstChild);
			calanderYearTitle.appendChild(calanderText);
			calendarControl.yearValue = formData[0]['year'];
	
			var monthValue = parseInt(formData[0]['month']);
	
			/* Removed and inserted the code below. Replace if it breaks
			if(monthValue==0) {
				calendarControl.currentPreviousMonthValue = 12;
			} else {
				calendarControl.currentPreviousMonthValue = monthValue-1;
				if(monthValue==12) {
					calendarControl.currentNextMonthValue = 1;
				}else{
					calendarControl.currentNextMonthValue = monthValue+1;
				}
			} Removed and inserted the code below. Replace if it breaks */
			
			if(monthValue==13) {
				calendarControl.currentNextMonthValue = 1;
				calendarControl.currentPreviousMonthValue = 13;
				//alert(calendarControl.currentPreviousMonthValue);
			}else{
				calendarControl.currentNextMonthValue = monthValue+1;
				if(monthValue==1) {
					calendarControl.currentPreviousMonthValue = 0;
					
				} else {
					//alert(monthValue);
					// NOTE: This was commmented out before, if errors crop up comment back out
					/*if(monthValue==12) {
						calendarControl.currentPreviousMonthValue = 1;
					}else{*/
					// NOTE: This was commmented out before, if errors crop up comment back out
						calendarControl.currentPreviousMonthValue = monthValue-1;
					/*}*/
				}
			}
			
			var calanderTitle = document.getElementById(calendarControl.calanderMonthTitleID);
			var calanderText=document.createTextNode(formData[0]['monthtext']);
			calanderTitle.removeChild(calanderTitle.firstChild);
			calanderTitle.appendChild(calanderText);	
			
			calendarControl.buildDays(formData, year, month);
		}
		// alert(calendarControl.currentNextMonthValue);
		// Set date links to display event information
		calendarControl.setDateLinks();
		calendarControl.highlightEventID = null;
		helper.cancelClick(e);
	},
	
	highlightCalendar: function(e) {
		
		var linkElement = helper.getTarget(e);
		var className = linkElement.className;
		if(className=='')
			return;
		if(!calendarControl.calendarBody)
			calendarControl.calendarBody = document.getElementById(calendarControl.calendarBodyID);
			
		var cells = calendarControl.calendarBody.getElementsByTagName('td');
		for(var i=0; i<cells.length;i++)
		{
			if(helper.cssjs('check',cells[i],className)) {
				helper.cssjs('add',cells[i], "highlight");
				continue;
			}
			if(helper.cssjs('check',cells[i],"highlight"))
				helper.cssjs('remove',cells[i], "highlight");
		}
		
		//alert('tste');
		helper.cancelClick(e);
	},
	
	changeMonthForward: function(e) {
		// plan-a-visit,1&year=2011
		// plan-a-visit,12&year=2010
		var linkElement = helper.getTarget(e);
		var url = linkElement.getAttribute('href').split('?month=');
		// alert(url);
		if(!ajaxCall.xmlHttp || ajaxCall.xmlHttp.status == 200) {
			if(calendarControl.preloader)
				helper.cssjs('remove', calendarControl.preloader, "hide");
		}
		
		if(calendarControl.currentNextMonthValue!=null) {

			if(calendarControl.currentNextMonthValue==13) {
				var monthValue = 1;
				var string = '&month='+monthValue;
				// Increase year value
				var calanderYearTitle = document.getElementById(calendarControl.calanderYearTitleID);
				var calanderText=document.createTextNode(parseInt(calanderYearTitle.firstChild.nodeValue)+1);
				calanderYearTitle.removeChild(calanderYearTitle.firstChild);
				calanderYearTitle.appendChild(calanderText);
				calendarControl.yearValue = calanderText.nodeValue;
				
			} else {
				var monthValue = calendarControl.currentNextMonthValue;
				var string = '&month='+calendarControl.currentNextMonthValue;
			}
			
		}else{
			var monthValue = parseInt(url[1]);
			//alert(monthValue);
			var string = '&month='+monthValue;
		}
		string += "&year="+parseInt(calendarControl.yearValue);
		// string += '&quantity_value='+target.value;
		/*alert(string)
		return;*/
		ajaxCall.createXMLHttpRequest(string, 'changeMonthForward');
		
		if(ajaxCall.returnedContent) {
			
			var formData = eval('(' + ajaxCall.returnedContent + ')');
			if(!formData) {
				helper.cancelClick(e);
				return;
			}
			// Work out month and insert value
			//alert(monthValue);
			if(monthValue==13) {
				calendarControl.currentNextMonthValue = 1;
				calendarControl.currentPreviousMonthValue = 13;
				//alert(calendarControl.currentPreviousMonthValue);
			}else{
				calendarControl.currentNextMonthValue = monthValue+1;
				if(monthValue==1) {
					calendarControl.currentPreviousMonthValue = 0;
					
				} else {
					//alert(monthValue);
					// NOTE: This was commmented out before, if errors crop up comment back out
					/*if(monthValue==12) {
						calendarControl.currentPreviousMonthValue = 1;
					}else{*/
					// NOTE: This was commmented out before, if errors crop up comment back out
						calendarControl.currentPreviousMonthValue = monthValue-1;
					/*}*/
				}
			}
			var calanderTitle = document.getElementById(calendarControl.calanderMonthTitleID);
			var calanderText=document.createTextNode(formData[0]['month']);
			calanderTitle.removeChild(calanderTitle.firstChild);
			calanderTitle.appendChild(calanderText);
			// Work out month and insert value
			calendarControl.buildDays(formData, calendarControl.yearValue, monthValue);
		}

		// Set date links to display event information
		calendarControl.setDateLinks();

		helper.cancelClick(e);
		helper.cssjs("add", calendarControl.preloader, "hide");
		//setTimeout('helper.cssjs("add", calendarControl.preloader, "hide")',500); // delay 2 seconds
	},
	
	changeMonthBackward: function(e) {
	//alert(calendarControl.currentPreviousMonthValue);
		var linkElement = helper.getTarget(e);
		var url = linkElement.getAttribute('href').split('?month=');
		//alert(parseInt(url[1]));
		
		if(!ajaxCall.xmlHttp || ajaxCall.xmlHttp.status == 200) {
			if(calendarControl.preloader)
				helper.cssjs('remove', calendarControl.preloader, "hide");
		}

		if(calendarControl.currentPreviousMonthValue!=null) {

			if(calendarControl.currentPreviousMonthValue==0) {
				var monthValue = 12;
				var string = '&month='+monthValue;
				// Decrease year value
				var calanderYearTitle = document.getElementById(calendarControl.calanderYearTitleID);
				var calanderText=document.createTextNode(parseInt(calanderYearTitle.firstChild.nodeValue)-1);
				calanderYearTitle.removeChild(calanderYearTitle.firstChild);
				calanderYearTitle.appendChild(calanderText);
				calendarControl.yearValue = calanderText;
				calendarControl.yearValue = calanderText.nodeValue;
			} else {
				var monthValue = calendarControl.currentPreviousMonthValue;
				var string = '&month='+calendarControl.currentPreviousMonthValue;
			}
			
		} else {
			var monthValue = parseInt(url[1]);
			var string = '&month='+monthValue;
		}
		string += "&year="+parseInt(calendarControl.yearValue);
		//string += '&quantity_value='+target.value;

		ajaxCall.createXMLHttpRequest(string, 'changeMonthBackward');
		
		if(ajaxCall.returnedContent) {
			
			var formData = eval('(' + ajaxCall.returnedContent + ')');
			//alert(monthValue);
			if(monthValue==0) {
				calendarControl.currentPreviousMonthValue = 12;
			} else {
				calendarControl.currentPreviousMonthValue = monthValue-1;
				// NEW: +++++++++++++ Removed (reinsert if things start going off)
				/*if(monthValue==12) {
					calendarControl.currentNextMonthValue = 1;
				}else{*/
					calendarControl.currentNextMonthValue = monthValue+1;
				/*}*/
				// NEW: +++++++++++++ Removed (reinsert if things start going off)
			}
			
			var calanderTitle = document.getElementById(calendarControl.calanderMonthTitleID);
			var calanderText=document.createTextNode(formData[0]['month']);
			calanderTitle.removeChild(calanderTitle.firstChild);
			calanderTitle.appendChild(calanderText);	
			
			calendarControl.buildDays(formData, calendarControl.yearValue, monthValue);
		}
		// Set date links to display event information
		calendarControl.setDateLinks();
	
		helper.cancelClick(e);
		helper.cssjs("add", calendarControl.preloader, "hide");
	
	},
	
	buildDays: function(formData, year, month) {
		//alert('testasdasd');
		//return;
		//var today = new Date();
		// If IE we need to parse the date
		
		if(window.event && !calendarControl.browserSafari && !calendarControl.browserOpera) {
			
			// var today = Date.parse("10-26-2010");
			
			var browsergteIE7 = false /*@cc_on || @_jscript_version >= 5.7 @*/;
			if(browsergteIE7) {
				var today = new Date();
			}else{
				var today = Date.parse();
			}
			// calDate = Date.parse(month+"-"+_day[j][1]+"-"+year);
			//alert(today);
			//1288047600000
			//alert("TEST"+today.toUTCString);
		} 
		else {
			
			var today = new Date();
		}
		
		
/*		var yearValue = year;
		var monthValue = month;
*/		
		//Christmas = new Date("December 25, 2005");
		
		
		
		/*if(today > Christmas)
			alert("after");*/

		// Work out day and insert values
		var arrayCount = formData.length;
		for(i=1; i < arrayCount; i++) {
			
			var week = document.getElementById("week_row_"+i);
			if(!week)
				continue;
			
			var weekdayValue = formData[i]['week_row_'+i];
			while (week.firstChild) 
			{
				// The list is LIVE so it will re-index each call
				week.removeChild(week.firstChild);
			}
			
			if(formData[i]['week_row_'+i] != '') {
				var _day = formData[i]['week_row_'+i];
				
				if(_day!='') {
				
					for(j=0; j < _day.length; j++) {
						
						var tdElement = document.createElement("td");
						//tdElement.style.border   = "1px solid #ffffff";
						if(!_day[j]) {
							var text = document.createTextNode('');
							//helper.cssjs('add',tdElement," ");
						}
						else {
							
							if(_day[j].length>1) {
								
								if(_day[j][0] == 'today') {
									helper.cssjs('add',tdElement,'today');
									var text = document.createTextNode(_day[j][1]);	
									if(calendarControl.todayActive) {
										var linkElement = document.createElement("a");
										linkElement.setAttribute('href','/view-available-tickets/?year='+year+'&month='+month+'&day='+_day[j][1]);
										linkElement.appendChild(text);
										var text =  linkElement;	
									}

								}else{
									if(_day[j][0]!='') {
										helper.cssjs('add',tdElement,_day[j][0]);
									} else {
										// helper.cssjs('add',tdElement,"standard");
									}
									var text = document.createTextNode(_day[j][1]);
									
									// var dateid = new Date(parse("11 1 2010"));
									
									// dateid.setDate("11 1 2010");
									// dateid.setFullYear("11 1 2010");

									// dateid.setFullYear("1990");
									// alert(Date.parse("01-01-2000"));
									// If museum isn't closed, insert link
									if(_day[j][0]!='closed') {
										
										// Check if date was set ok, if no
										if(window.event/* && !calendarControl.browserSafari*/) {
											if(calendarControl.browserOpera || calendarControl.browserSafari) {
												
												if(calendarControl.browserOpera) {
													var calDate = new Date(_day[j][1]+"-"+month+"-"+year);
												}else{
													// Safari handles dats slightly differently
													var calDate = new Date();
													calDate.setFullYear(year);
													// alert("MONTH:" +month);
													calDate.setMonth((month-1));
													calDate.setDate(_day[j][1])
													//alert("CALDATE:" +calDate);
													//return;
												}
											} else {
												var calDate = Date.parse(month+"-"+_day[j][1]+"-"+year);
											}
											
										} else {
											var calDate = new Date(month+" "+_day[j][1]+" "+year);
											//alert("CALDATE:" +calDate);
										}
										// Check if date was set ok, if no
										/*if(calDate=="NaN") {
											calDate = Date.parse(month+"-"+_day[j][1]+"-"+year);
										}*/
										// alert(today);

										if(calDate>today) {
											var linkElement = document.createElement("a");
											linkElement.setAttribute('href','/view-available-tickets/?year='+year+'&month='+month+'&day='+_day[j][1]);
											linkElement.appendChild(text);
											var text =  linkElement;											
										
											// Check if we need to highlight the calendar event
											//alert(calendarControl.highlightEventID);
											if(calendarControl.highlightEventID) {
												// alert(calendarControl.highlightEventID);
												if(_day[j][4] == calendarControl.highlightEventID) {
													linkElement.style.backgroundColor='#7B6F5E';
													linkElement.style.color='#FFFFFF';
													// alert(_day[j][4]);
												}
											}
											// NEW: Check if we need to insert an event popup
											if(_day[j][2]!='') {
												helper.cssjs('add',linkElement,'calendarpopupalert');
												var popup = document.createElement("span");
												
												// NEW: Check for additional event so we can insert it
												if(_day[j][5]!='') {
													popup.innerHTML = _day[j][5];
												}
												
												var eventTitle = document.createTextNode(_day[j][2]);
												var strongStyle = document.createElement("strong");
												strongStyle.appendChild(eventTitle);
												popup.appendChild(strongStyle);
												helper.cssjs('add',popup,'alertbox');
												if(_day[j][3]!='') {
													var paragraph = document.createElement("p");
													var eventDescription = document.createTextNode(_day[j][3]);
													paragraph.appendChild(eventDescription);
													popup.appendChild(paragraph);
												}
												
												
												linkElement.appendChild(popup);
											}
											// NEW: Check if we need to insert an event popup

										
										} else {
											helper.cssjs('add',tdElement,'inactive');
											if(_day[j][0]!='')
												helper.cssjs('remove',tdElement,_day[j][0]);
										}
									}
									// If museum isn't closed, insert link
								}

							} else {
								
								var text = document.createTextNode(_day[j]);
								// Check if date was set ok, if no
								if(window.event) {
									//alert(calDate);
									//calDate = Date.parse(month+"-"+_day[j]+"-"+year);
									
									//calDate = new Date(month+" "+_day[j]+" "+year);
									if(calendarControl.browserOpera || calendarControl.browserSafari) {
										
										if(calendarControl.browserOpera) {
											var calDate = new Date(_day[j]+"-"+month+"-"+year);
										} else {
											// Safari handles dats slightly differently
											var calDate = new Date();
											calDate.setFullYear(year);
											calDate.setMonth((month-1));
											calDate.setDate(_day[j])
											//alert("CALDATE:" +calDate);
											//return;
										}
									} else {
										var calDate = Date.parse(month+"-"+_day[j]+"-"+year);
									}
									//alert(calDate);

								} else {
									calDate = new Date(month+" "+_day[j]+" "+year);
								}
								
								if(calDate>today) {
									
									var linkElement = document.createElement("a");
									linkElement.setAttribute('href','/view-available-tickets/?year='+year+'&month='+month+'&day='+_day[j][0]);
									linkElement.appendChild(text);
									var text =  linkElement;										
								} else {
									helper.cssjs('add',tdElement,'inactive');
								}
							}
						}
						
						tdElement.appendChild(text);
						if(j==5 || j==6) {
							//alert('add weekend style - '+j);
							helper.cssjs('add',tdElement,'weekend');
						}
						// tdElement.style.padding   = "0.5px";
						// tdElement.style.border   = "1px solid #FFFFFF";
						// tdElement.setAttribute("class", "weekend");
						
						week.appendChild(tdElement);
					}
				}
			}
		}
		// VERY IMPORTANT: Check if the 
		var week = document.getElementById("week_row_"+i++);
		if(week) {
			while (week.firstChild) 
			{
				// The list is LIVE so it will re-index each call
				week.removeChild(week.firstChild);
			}
		}
		// VERY IMPORTANT: Check if the 
		return;
	}
}
helper.addEvent(window, 'load', calendarControl.init, false);
