var MonthView = CalendarView.extend({
	init: function (firstDay, data, dictById) {
		this.calendarType = 'week';
		this.data = data;
		this.dictById = dictById;
		this.dates = this.getDatesArray(firstDay);
		this.mainTbody = $j('.calendar tbody')[0];
		this.initActions();
	},

	showQuickAddDlg: function (e)  {
		var cell = e.currentTarget.parentNode;
		data = {
			title : '',
			eventdescription: '',
			type: 'single',
			startdate: this.getTimeCellDate(cell),
			eventtime: '08:00 pm',
			maincalendar: "1",
			showfrontsite: this.getTimeCellDate(cell),
			showfrontministry: 0,
			ministry: 'None'
		};
		this.quickDlg.show(data);
	},

	getTimeCellDate: function (cell) {
		var dayIndex = cell.cellIndex;
		var weekIndex = cell.parentNode.rowIndex-2;
		return this.dates[weekIndex][dayIndex];
	},

	getDatesArray :function(firstDay) {
		var dates = new Array();
		var splitFirstDate = firstDay.split('-');
		var year = parseInt(splitFirstDate[0], 10);
		var month = parseInt(splitFirstDate[1], 10) - 1;
		var dayOfMonth = parseInt(splitFirstDate[2], 10);
		var nextMonth = (dayOfMonth>1) ? month + 2 : month + 1;
		if(nextMonth>11) {
			nextMonth = nextMonth - 12;
		}
		var j = 0;
		var week = 0;
		var tmpMonth = month;
		while(tmpMonth!= nextMonth) {
			var tmpDate = new Date(year, month, dayOfMonth++);
			var tmpMonth = tmpDate.getMonth();
			var tmpStrDate = dateToStr(tmpDate);
			if(typeof(dates[week])== 'undefined') {
				dates.push(new Array());
			}
			//console.log(tmpStrDate);
			dates[week].push(tmpStrDate);
			if(j<6) {
				j++;
			} else {
				j = 0;
				week++;
			}
		}
		// days of next mointh if we have free cells
		var lastWeek = dates[dates.length-1];
		var lastDate = strToDate(lastWeek[lastWeek.length-1]);
		while(lastWeek.length<7) {
			lastDate.setDate(lastDate.getDate()+1);
			lastWeek.push(dateToStr(lastDate));
		}

		return dates;
	},

	getCellForDate: function (date) {
		for(var week=0; week < this.dates.length; week++) {
			var weekDates = this.dates[week];
			for(var i=0; i < weekDates.length; i++) {
				if(weekDates[i]==date) {
					return this.mainTbody.rows[week+2].cells[i];
				}
			}
		}
	},

	createActivityDiv: function(data) {
		if(data.type=='single') {
			var eventHtml = this.getEventTemplate(data.savedData.id, data.eventdescription);
			if(typeof(data.eventdate)!='undefined') {
				var dayCell = this.getCellForDate(data.eventdate);
			}
			$j(dayCell).find('.actContainer').append(eventHtml);
			this.addToData(data, strToDate(data.eventdate));
		}
		if((data.type=='daily') || (data.type=='weekly')) {
			var startDate = strToDate(data.startdate);
			var tmpDate = strToDate(dateToStr(startDate));
			var endDate = strToDate(data.enddate);
			var lastWeek = this.dates[this.dates.length-1];
			var lastMonthViewDate = strToDate(lastWeek[lastWeek.length-1]);
		}
		if(data.type=='daily') {
			var i = 0;
			while((tmpDate<=endDate) && (tmpDate<=lastMonthViewDate)) {
				var dayCell = this.getCellForDate(dateToStr(tmpDate));
				console.log(dayCell);
				var eventHtml = this.getEventTemplate(data.savedData.ids[i], data.eventdescription);
				$j(dayCell).find('.actContainer').append(eventHtml);
				console.log([tmpDate, endDate, lastMonthViewDate, eventHtml]);
				this.addToData(data, tmpDate, i);
				i++;
				tmpDate.setDate(tmpDate.getDate()+1);
			}
		}
		if(data.type=='weekly') {
			var i = 0;
			while((tmpDate<=endDate) && (tmpDate<=lastMonthViewDate)) {
				if(tmpDate.getDay()==data.day_of_week) {
					var dayCell = this.getCellForDate(dateToStr(tmpDate));
					//console.log(dayCell);
					var eventHtml = this.getEventTemplate(data.savedData.ids[i], data.eventdescription);
					$j(dayCell).find('.actContainer').append(eventHtml);
					//console.log([tmpDate, endDate, lastMonthViewDate]);
					this.addToData(data, tmpDate, i);
					i++;
				}
				tmpDate.setDate(tmpDate.getDate()+1);
			}
		}


	},

	getEventTemplate: function(id, text) {
		var htmlCode =  "<table id='item_"+id+"' class='activity'><tr>";
		htmlCode += "<td valign='top'><div class='delEventBtn'></div><div class='editEventBtn'></div></td>";
		htmlCode += "<td class='actTitle' valign='top'>"+text+"</td></tr></table>";
		return htmlCode;
	}


});

