var calendar = {

	init: function() {
		var dkmdr = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
		var dkdays = ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø"];
		calendar.navCal = new YAHOO.widget.Calendar("navCal","calendarContainer");
		
		calendar.navCal.cfg.setProperty("START_WEEKDAY", 1);
		calendar.navCal.cfg.setProperty("MONTHS_LONG", dkmdr);
		calendar.navCal.cfg.setProperty("WEEKDAYS_SHORT", dkdays);
		
		calendar.navCal.render();
		calendar.navCalChangePage();
		
		calendar.navCal.selectEvent.subscribe(calendar.navCalDateSelected, calendar.navCal, true);
		calendar.navCal.changePageEvent.subscribe(calendar.navCalChangePage, calendar.navCal, true);
	}, 
	
	navCalDateSelected: function(type, args, obj){
		var selected = args[0];
		var selectedDate = selected[0];
		//alert("forward to: /events/"+selectedDate[0] +"/"+ selectedDate[1]+"/"+ selectedDate[2]+"/");
		a.redirect("/events/"+selectedDate[0] +"/"+ selectedDate[1]+"/"+ selectedDate[2]+"/");
	},
	navCalChangePage: function(type, args, obj){
		// get next months coloured days. 
		a.rpc = "/events/" + calendar.navCal.cellDates[14][0] +"/" + calendar.navCal.cellDates[14][1] + "/json/";
		a.reqGet(calendar.navCalHighlight);
	},
	navCalHighlight: function(o){
		var jData = eval(o.responseText);
		var found = false;
		var date;
		var dateStr;
		// for mouseover
		//calendar.navCalEventDates = new Array();
		var tmpstr;
		
		for (eventIndex in jData){
			found = true;
			date = calendar.timeStampToDate(jData[eventIndex].fields.start_date + " 12:00:00");
			dateStr = calendar.dateToStr(date); 
			calendar.navCal.addRenderer(dateStr, calendar.navCal.renderCellStyleHighlight2);
			
			/* for displaying mouseover 
			if (undefined === calendar.navCalEventDates[dateStr]){
				calendar.navCalEventDates[dateStr]=jData[eventIndex].fields.header;
			} else {
				calendar.navCalEventDates[dateStr] = calendar.navCalEventDates[dateStr] + " <br/>\n " + jData[eventIndex].fields.header;
			}
			*/
		}
		/* for mouseover
		calendar.navCal.doCellMouseOver = function(e, cal) {
			//var cell= this;
			var tmpDate = calendar.dateToStr(calendar.navCal.getDateByCellId(e.target.id));
			//calendar.navCal.getDateByCellId(e.target.id);
			document.getElementById("debugtext").value = calendar.navCalEventDates[tmpDate];
		};
		*/
		// render again to colour days 
		if (found) {
			calendar.navCal.render();
		}
	}, 
	timeStampToDate: function(timeStamp) {
		//alert(timestamp);
		//function parses mysql datetime string and returns javascript Date object
		//input has to be in this format: 2007-06-05 15:26:02
		/*
		var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
		var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
		return new Date(parts[0],parts[1],parts[2],parts[3],parts[4],parts[5]);
		*/
		// Revised to suit quirks in YUI calendar 
	    var dt = new Date();
		var dtS = timeStamp.slice(timeStamp.indexOf(' ')+1, timeStamp.length);
	    //var dtS = xmlDate.slice(xmlDate.indexOf('T')+1, xmlDate.indexOf('.'))
	    var TimeArray = dtS.split(":");
	    dt.setUTCHours(TimeArray[0],TimeArray[1],TimeArray[2]);
	    dtS = timeStamp.slice(0, timeStamp.indexOf(' '))
	    //dtS = xmlDate.slice(0, xmlDate.indexOf('T'))
	    TimeArray = dtS.split("-");
	    dt.setUTCFullYear(TimeArray[0],TimeArray[1]-1,TimeArray[2]);
	    return dt;
	},
	dateToStr: function(date){
		// revised to suit quirks in YUI calendar
		var mth = date.getMonth()+1;
		return mth + "/" + date.getDate() + "/" + date.getFullYear();
	},
	cfgCal: function(cale) {
		return cale;
	},
	
	/* functions for EVENTS */
	initEventForm: function(){

		calendar.formCalStart = new YAHOO.widget.Calendar("formCalStart","formCalContainerStart");
		var dkmdr = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
		var dkdays = ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø"];
		calendar.formCalStart.cfg.setProperty("START_WEEKDAY", 1);
		calendar.formCalStart.cfg.setProperty("MONTHS_LONG", dkmdr);
		calendar.formCalStart.cfg.setProperty("WEEKDAYS_SHORT", dkdays);
		
		
		//calendar.formCalExpire = new YAHOO.widget.Calendar("formCalExpire","formCalContainerExpire");
																	
//		calendar.formCalExpire.selectEvent.subscribe(calendar.handleSelect, calendar.formCalExpire, true);
		calendar.formCalStart.selectEvent.subscribe(calendar.handleSelect, {txtId: "id_start_date"}, true);
		//calendar.formCalExpire.selectEvent.subscribe(calendar.handleSelect, {txtId: "id_expire"}, true);
		
		calendar.updateFormCal({calObj: calendar.formCalStart, txtId: "id_start_date"});
		//calendar.updateFormCal({calObj: calendar.formCalExpire, txtId: "id_expire"});

		//calendar.formCalExpire.render();
		calendar.formCalStart.render();
	},

	handleSelect: function(type,args,obj) {
			//debug.alertObj(args);
			var dates = args[0]; 
			var date = dates[0];
			var year = date[0], month = date[1], day = date[2];
			
			var txtDate1 = document.getElementById(obj.txtId);

			// django also use month day year when separated by slashes. 
			txtDate1.value = month + "/" + day + "/" + year;
	},
	
	updateFormCal: function(tgt) {
		var txtDate = document.getElementById(tgt.txtId);
		if (txtDate.value != "") {
			tgt.calObj.select(txtDate.value);
			var selectedDates = tgt.calObj.getSelectedDates();
			if (selectedDates.length > 0) {
				var firstDate = selectedDates[0];
				tgt.calObj.cfg.setProperty("pagedate", (firstDate.getMonth()+1) + "/" + firstDate.getFullYear());
				tgt.calObj.render();
			} else {
				alert("Could not set the date");
				//alert("Can not select a date before 1/1/2006 or after 12/31/2009");
			}

		}

/*				var txtDate = document.getElementById("id_expire");
				if (txtDate.value != "") {
					calendar.formCal.select(txtDate.value);
					var selectedDates = calendar.formCal.getSelectedDates();
					if (selectedDates.length > 0) {
						var firstDate = selectedDates[0];
						calendar.formCal.cfg.setProperty("pagedate", (firstDate.getMonth()+1) + "/" + firstDate.getFullYear());
						calendar.formCal.render();
					} else {
						alert("Could not set the date");
						//alert("Can not select a date before 1/1/2006 or after 12/31/2009");
					}

				}
*/			}
};