YAHOO.namespace("example.calendar");

YAHOO.example.calendar.init = function() {
	var eLog = YAHOO.util.Dom.get("evtentries");
	var eCount = 1;

	function logEvent(msg) {
		//eLog.innerHTML = '<pre class="entry"><strong>' + eCount + ').</strong> ' + msg + '</pre>' + eLog.innerHTML;
		//eCount++;
		eLog.innerHTML = '<p class="entry">' + msg + '</p>';
	}

	function dateToLocaleString(dt, cal) {
		var wStr = cal.cfg.getProperty("WEEKDAYS_LONG")[dt.getDay()];
		var dStr = dt.getDate();
		var mStr = cal.cfg.getProperty("MONTHS_LONG")[dt.getMonth()];
		var yStr = dt.getFullYear();
		return (wStr + ", " + dStr + " " + mStr + " " + yStr);
	}

	function mySelectHandler(type,args,obj) {
		var selected = args[0];
		var date = selected[0];
		var selDate = this.toDate(selected[0]);
		var year = date[0], month = date[1], day = date[2];
		 
		//logEvent("SELECTED: " + dateToLocaleString(selDate, this));
		//sndReq('get', '', '/date/'+year+'/'+month+'/'+day);
		var url = '/events/date/'+year+'/'+month+'/'+day+'/?variant=xml';

		YAHOO.util.Connect.initHeader('Accept', 'application/xml');
		var conn = YAHOO.util.Connect.asyncRequest('get', url, { 
			success:successHandler, 
			failure:failureHandler 
		});

		function successHandler(o){
			var selectedDate = dateToLocaleString(selDate, YAHOO.example.calendar.cal);
			var root = o.responseXML.documentElement;
			var events = "No events today";
			if (root.getElementsByTagName('title')[0] && root.getElementsByTagName('title')[0].firstChild.nodeType){
				events = "";
				var arLen = root.getElementsByTagName('title').length;
//					events += root.getElementsByTagName('title')[0].firstChild.nodeValue; 
				for ( var i=0, len=arLen; i<len; ++i){
					events += root.getElementsByTagName('title')[i].firstChild.nodeValue + "<br/><br/>"; 
				}
			}
			//var oDescription = root.getElementsByTagName('description')[0].firstChild.nodeValue; 
			
			logEvent(selectedDate + '<br/><br/>' + events);
		}

		function failureHandler(o){
			logEvent(o.status + " " + o.statusText);
		}
	};

	function myDeselectHandler(type, args, obj) {
		var deselected = args[0];
		var deselDate = this.toDate(deselected[0]);

		//logEvent("DESELECTED: " + dateToLocaleString(deselDate, this));
	};

	YAHOO.example.calendar.cal = new YAHOO.widget.Calendar("cal","calContainer");

	YAHOO.example.calendar.cal.selectEvent.subscribe(
		mySelectHandler, 
		YAHOO.example.calendar.cal, 
		true
	);
	YAHOO.example.calendar.cal.deselectEvent.subscribe(
		myDeselectHandler, 
		YAHOO.example.calendar.cal, 
		true
	);

	YAHOO.example.calendar.cal.render();
	var today = new Date();
	var year = today.getFullYear();
	var month = today.getMonth();
	var day = today.getDay();
	var daym = today.getDate();
	if (year < 1000) {
		year+=1900;
	}

	if (daym<10) {
		daym="0"+daym;
	}

	var dayarray=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday",
						"Friday","Saturday");
	var montharray=new Array("January","February","March","April","May","June",
						"July","August","September","October","November","December");
	
	var monthName = montharray[month];
	var dayName = dayarray[day];

	var formattedDate = dayName + ", " + daym + " " + monthName + " " + year;

	month = today.getMonth() + 1;
	var url = '/events/date/'+year+'/'+month+'/'+daym+'/?variant=xml';

	YAHOO.util.Connect.initHeader('Accept', 'application/xml');
	var conn = YAHOO.util.Connect.asyncRequest('get', url, { 
		success:successHandler, 
		failure:failureHandler 
	});

	function successHandler(o){
		var root = o.responseXML.documentElement;
		var events = "No events today";
		if (root.getElementsByTagName('title')[0] && root.getElementsByTagName('title')[0].firstChild.nodeType){
			events = "";
			var arLen = root.getElementsByTagName('title').length;
//					events += root.getElementsByTagName('title')[0].firstChild.nodeValue; 
			for ( var i=0, len=arLen; i<len; ++i){
				events += root.getElementsByTagName('title')[i].firstChild.nodeValue + "<br/><br/>"; 
			}
		}
		//var oDescription = root.getElementsByTagName('description')[0].firstChild.nodeValue; 
		
		logEvent(formattedDate + "<br /><br />" + events);
	}

	function failureHandler(o){
		logEvent(o.status + " " + o.statusText);
	}
}

YAHOO.util.Event.onDOMReady(YAHOO.example.calendar.init);
