// JavaScript Document
/*
	Calendar v1.0
	Author Milko Leporis
	www.milkoleporis.com
*/

// JavaScript Document
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth() + 1; // 1-january 
var date = today.getDate(); // 1-31
var day = today.getDay(); // 0-sunday , 1-monday ... 6-saturday
	
//var days = getMonthDays(month,year);
var oldOfset = getOfset(date, day); 
var calendar = new Array(35);
var calendarVal = new Array(35);
var calendarValues = new Array(35);

var monthActivities = false;
var monthActivitiesVal = new Array();
var monthActivitiesOK = false;

var sec = 0; // is user secretary

function startCalendar(secretary)
{
	sec = secretary;
	calculateCalendar(month,year, 1);
}

// ----------------------------------------------------------------

function populateCalendar(days, ofset, _month, _year)
{
	var i,j;
	var field;
	var fieldVal;
	
	for(i=1;i<ofset;i++)
	{
		field = '_'+i;
		fieldVal = '_v'+i;
		//alert(i);
		calendar[i] = document.getElementById(field);
		calendar[i].style.backgroundImage = "url(http://www.msjb.org/_images/calendarFieldHead.jpg)";
		calendarVal[i] = document.getElementById(fieldVal);
		calendarVal[i].style.height = "86px";
		//calendarVal[i].style.backgroundColor = "#333333";
		calendarVal[i].style.backgroundImage = "url(http://www.msjb.org/_images/calendarInactiveBack.jpg)";
		
		calendar[i].innerHTML = "";	
		calendarValues[i] = 0;
		calendarVal[i].innerHTML = "";
	}
	for(i=ofset,j=1; i<days+ofset; i++,j++)
	{
		field = '_'+i;
		fieldVal = '_v'+i;
		
		calendar[i] = document.getElementById(field);
		calendarVal[i] = document.getElementById(fieldVal);
		calendar[i].style.backgroundImage = "url(http://www.msjb.org/_images/calendarFieldHead.jpg)";
		//calendarVal[i].style.backgroundColor = "#DEDEDE";
		calendarVal[i].style.height = "86px";
		calendarVal[i].style.backgroundImage = "url(http://www.msjb.org/_images/calendarFieldBack.jpg)";
		//calendar[i].style.borderBottom = "1px solid #000000";
		calendar[i].innerHTML = j;
		calendarValues[i] = j;
		
		if(j == today.getDate() && _month == today.getMonth() + 1 && _year == today.getFullYear()) 
		{
			
			calendar[i].style.color = "#A5C756";
			//calendarVal[i].style.backgroundColor = "#";
			calendarVal[i].style.backgroundImage = "url(http://www.msjb.org/_images/calendarTodayBack.jpg)";
			//$('#'+calendarVal[i]).text("asdas");
			//alert($('#'+calendarVal[i]).text());
		}
		else calendar[i].style.color = "#FFFFFF";
		calendarVal[i].innerHTML = "";
		if(!monthActivities){
			monthActivitiesVal = new Array();
			
				
			getActivities(_month,days,ofset);
			monthActivities = true;
		}
		
		//calendar[i].style.display = 'none';
		$('#'+calendar[i]).fadeIn("slow");
	}
	for(i=days+ofset;i<43;i++)
	{
		field = '_'+i;
		fieldVal = '_v'+i;
		calendar[i] = document.getElementById(field);
		calendar[i].style.backgroundImage = "url(http://www.msjb.org/_images/calendarFieldHead.jpg)";
		calendarVal[i] = document.getElementById(fieldVal);
		calendarVal[i].style.height = "86px";
		calendarVal[i].style.backgroundImage = "url(http://www.msjb.org/_images/calendarInactiveBack.jpg)";
		//alert(i);
		calendar[i].innerHTML = "";	
		calendarValues[i] = 0;
		calendarVal[i].innerHTML = "";
	}
}
function calculateCalendar(newMonth, newYear, current)
{
	//$('#calendarLoader').show();
	if(current == 1)
	{
		var days = getMonthDays(newMonth,newYear);
		var ofset = getOfset(date, day);
		monthActivities = false;
		populateCalendar(days, ofset, newMonth, newYear);
		document.getElementById('current').innerHTML = getMonthString(newMonth);
		document.getElementById('year').innerHTML = newYear;
	}
	else
	{
		var days = getMonthDays(newMonth,newYear);
		var newOfset;
		if(current == 2) newOfset = getNewPrevOfset(oldOfset,newMonth);
		if(current == 3) newOfset = getNewNextOfset(oldOfset,newMonth);
		if(current == 4) newOfset = getCurrentOfset();
		oldOfset = newOfset;
		monthActivities = false;
		populateCalendar(days, newOfset, newMonth, newYear);
		document.getElementById('current').innerHTML = getMonthString(newMonth);
		document.getElementById('year').innerHTML = newYear;	
	}
	
}
function getMonthString(month)
{
	switch(month)
	{
		case 1:
			return 'Januar';
		break;
		case 2:
			return 'Februar';
		break;
		case 3:
			return 'Mart';
		break;
		case 4:
			return 'April';
		break;
		case 5:
			return 'Maj';
		break;
		case 6:
			return 'Jun';
		break;
		case 7:
			return 'Jul';
		break;
		case 8:
			return 'August';
		break;
		case 9:
			return 'Septembar';
		break;
		case 10:
			return 'Oktobar';
		break;
		case 11:
			return 'Novembar';
		break;
		case 12:
			return 'Decembar';
		break;
	}
}

function getMonthDays(month,year)
{
	var temp;
	switch(month)
	{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			return 31;
		break;
		
		case 4:
		case 6:
		case 9: 
		case 11:
			return 30;
		break;
		case 2:
			if( (year-2000)%4 == 0 ) return 29;
			else return 28;
		break;
	}
}
function getOfset(date, day)
{
	var temp;	
	temp = date - day;
	while(temp > 7)
		temp -= 7;
	return 8 - temp;
}
function getNewPrevOfset(oldOfset,newMonth)
{
	var backOfset = oldOfset - 1;
	if(backOfset == 0) backOfset = 7;
	var monthDays = getMonthDays(newMonth, year);
	var temp;
	temp = monthDays - backOfset; 
	while(temp > 7)
		temp -= 7;
	return 8 - temp;
}
function getNewNextOfset(oldOfset,newMonth)
{
	var temp;
	var _newMonth = newMonth - 1;
	if(_newMonth == 0) _newMonth = 12;
	var monthDays = getMonthDays(_newMonth, year);
	temp = 7 - oldOfset + 1; // first sunday in month
	do temp += 7; // all sundays
	while(temp < monthDays+1);
	temp -= 7; // last sunday
	return monthDays - temp + 1;	
}
function getCurrentOfset(){
	var tempOfset = 0;
	month_ = month - 1;
	if (month_ == 0) 
		month_ = 12;
		
	tempOfset = getNewPrevOfset(oldOfset,month_);
	tempOfset = getNewNextOfset(tempOfset,month);
	return tempOfset;
}
function showPrevMonth()
{
	$("#actionStatus").ajaxStart(function(){
			$(this).html("<img src=\"http://www.msjb.org/_images/loaders/ajax-loader(4).gif\" >");
	}).ajaxComplete(function(){
			$(this).html("").show();
	});
	
	month = month - 1;
	if (month == 0) 
	{
		month = 12;
		year = year-1;
	}
	calculateCalendar(month, year, 2);
}
function showNextMonth()
{
	$("#actionStatus").ajaxStart(function(){
			$(this).html("<img src=\"http://www.msjb.org/_images/loaders/ajax-loader(4).gif\" >");
	}).ajaxComplete(function(){
			$(this).html("").show();
	});
	
	month = month + 1;
	if (month == 13) 
	{
		month = 1;
		year = year+1;
	}
	calculateCalendar(month, year, 3);
}

function toggleAddActivity(){
	
	$('#addActivity').toggle();	
	document.getElementById("isEditEvent").value = 0;
	document.getElementById("eventId").value = 0;
	
	document.getElementById("titleSr").value = "";
	document.getElementById("placeSr").value = "";
	document.getElementById("textSr").value = "";
	
	document.getElementById("aDay").value = date;
	document.getElementById("aMonth").value = month;
	document.getElementById("aYear").value = year;
	
	document.getElementById("aaDay").value = date;
	document.getElementById("aaMonth").value = month;
	document.getElementById("aaYear").value = year;
}

function cancelAddActivity(){
	$('#addActivity').toggle();	
}
function saveNewActivity(){
	
	$("#actionStatus").ajaxStart(function(){
			$(this).html("<img src=\"http://www.msjb.org/_images/loaders/ajax-loader(4).gif\" >");
	}).ajaxComplete(function(){
			$(this).html("Nova aktivnost sa&#269;uvana.").show();
	});
	
	var title = document.getElementById("titleSr").value;
	var text = document.getElementById("textSr").value;
	var place = document.getElementById("placeSr").value;
	
	var dateFrom = document.getElementById("aYear").value+"-"+document.getElementById("aMonth").value+"-"+document.getElementById("aDay").value;
	var dateTo = document.getElementById("aaYear").value+"-"+document.getElementById("aaMonth").value+"-"+document.getElementById("aaDay").value;
	//alert(dateTo);
	
	var isEdit = document.getElementById("isEditEvent").value;
	var eventId = document.getElementById("eventId").value;
	
	$.post("_server/server.calendar.php", {
		action: "saveActivity",
		dateFrom: dateFrom,
		dateTo: dateTo,
		place: place,
		titleSr: title,
		textSr: text,
		isEdit: isEdit,
		eventId: eventId
	}, function(xml){
		
		var ok = $("OK", xml).text();
		if(ok == 1)
			//$('#activityStatus').text(ok);
			cancelAddActivity();
			calculateCalendar(month,year,4);
			
			
	});	
	
}

function getActivities(month,days,ofset){
	//alert(month);
	var i = 0;
	var activitie = new Array();
	var act = new Array();
	var monthActivitiesVal2 = new Array();
	
	$.post("_server/server.calendar.php", {
		action: "getActivities",
		month: month
	}, function(xml){
		
		var ok = $("OK", xml).text();
		if(ok == 1)
			
			$("activity", xml).each(function(id){
				
				var activity = $("activity", xml).get(id);
				activitie['id'] = $("aId", activity).text();				
				activitie['dateFrom'] = $("aDateFrom", activity).text();
				activitie['dateTo'] = $("aDateTo", activity).text();
				activitie['place'] = $("aPlace", activity).text();	 
				activitie['title'] = $("aTitleSr", activity).text();
				//activitie['text'] = $("aTextSr", activity).text();
				/**
				monthActivitiesVal2[i] = activitie;
				//alert(monthActivitiesVal2.length);
				//alert("i:"+i+", "+monthActivitiesVal2[i]['dateFrom']);
				i++;
				//
				*/
				
				for(i=ofset,j=1; i<days+ofset; i++,j++) {
					var aDateFrom = "";
					var aDateTo = "";
					var aDayFrom = "";
					var aDayTo = "";
					//alert(monthActivitiesVal2.length);
					var actText = "";
					//for(var z=0; z < monthActivitiesVal2.length; z++) {
						//alert("z:"+z+", "+monthActivitiesVal2[z]['dateFrom']);
						act = activitie
						aDateFrom = act['dateFrom'];
						
						aDayFrom = aDateFrom.substr(8,aDateFrom.length);
						//alert("day:"+calendarValues[i]+", activity:"+z+", dayFrom:"+aDayFrom);
						if(aDayFrom.substr(0,1) == '0') {
							if(calendarValues[i] == aDayFrom.substr(1,2)) {
								if(calendarVal[i].innerHTML != "")
									calendarVal[i].innerHTML = calendarVal[i].innerHTML +"<br/><br/><a href=\"javascript:showActivity('"+act['id']+"','"+i+"')\">"+act['title']+"</a>";	
								else
									calendarVal[i].innerHTML = "<a href=\"javascript:showActivity('"+act['id']+"','"+i+"')\">"+act['title']+"</a>";
							}
						} else {
							if(calendarValues[i] == aDayFrom) {
								if(calendarVal[i].innerHTML != "")
									calendarVal[i].innerHTML = calendarVal[i].innerHTML +"<br/><br/><a href=\"javascript:showActivity('"+act['id']+"','"+i+"')\">"+act['title']+"</a>";	
								else
									calendarVal[i].innerHTML = "<a href=\"javascript:showActivity('"+act['id']+"','"+i+"')\">"+act['title']+"</a>";	
							}	
						}
						//calendarValues[i]
						
					//}
					
				}
				
				
			});	
			
			//$('#calendarLoader').hide();
	});
	
}
var fieldOldValue = "";
var detailsOpen = false;
function showActivity(id, field){
	if(!detailsOpen)
	{
		detailsOpen = true;
		fieldOldValue = $('#_v'+field).html(); 
		var activitie = new Array();
		
		$.post("_server/server.calendar.php", {
			action: "getActivityDetails",
			id: id
		}, function(xml){
			
			activitie['dateFrom'] = $("aDateFrom", xml).text();
			activitie['dateTo'] = $("aDateTo", xml).text();
			activitie['place'] = $("aPlace", xml).text();	 
			activitie['title'] = $("aTitleSr", xml).text();
			activitie['text'] = $("aTextSr", xml).text();
			
			var actDetails = '<div id="actDetails">';
			//actDetails += "<h3 class=\"titleBar\">Detalji aktivnosti</h3>";
			actDetails += "<b>"+activitie['title']+"</b>";
			actDetails += '<div style="height: 1px; border-bottom: 1px solid #cccccc; margin-bottom: 10px;"></div>';
			actDetails += "<b>Mesto : </b>"+activitie['place']+"<br/>";
			
			var fDateFrom = CalendarFormater.format_DMY(activitie['dateFrom']);
			var fDateTo = CalendarFormater.format_DMY(activitie['dateTo']);
			
			if(activitie['dateFrom'] == activitie['dateTo']) {
				actDetails += "<b>Datum : </b>"+fDateFrom+"<br/>";
			} else {
				actDetails += "<b>Od : </b>"+fDateFrom+"<br/>";
				actDetails += "<b>Do : </b>"+fDateTo+"<br/>";
			}
			actDetails += '<div style="height: 1px; border-bottom: 1px solid #cccccc; margin-bottom: 10px;"></div>';
			
				
			actDetails += ""+activitie['text']+"<br/>";
			if(sec == 1){
				actDetails += '<br/><a href="javascript:editEvent(\''+id+'\',\''+field+'\')" title="Edit"><img src="http://www.msjb.org/_images/imgEdit.png" border="0"/></a>';
				actDetails += '<a href="javascript:deleteEvent(\''+id+'\',\''+field+'\')" title="Delete"><img src="http://www.msjb.org/_images/imgEditDelete.png" border="0"/></a>';
			}
			actDetails += "<br/><input type=\"button\" onclick=\"javascript:closeActivityDetails('"+field+"')\" value=\" Zatvori \" style=\"float:right; width:75px\">";
			actDetails += "</div>";
			
			
			$('#_v'+field).append(actDetails);	
			//$('#actDetails').hide("slow");
			$('#actDetails').toggle();
		});
	}
}

function closeActivityDetails(field){
	$('#_v'+field).html(fieldOldValue);
	$('#actDetails').toggle();
	detailsOpen = false;
}

function editEvent(eventId,field){
	
	$("#actionStatus").ajaxStart(function(){
			$(this).html("<img src=\"http://www.msjb.org/_images/loaders/ajax-loader(4).gif\" >");
	}).ajaxComplete(function(){
			$(this).html("Aktivnost spremna za izmene.").show();
	});
	
	$.post("http://www.msjb.org/_server/server.calendar.php", {
			action: "editEvent",
			id: eventId
	}, function(xml){
						
			var error = $("error", xml).text();
			
			if(error == "No"){
				closeActivityDetails(field);
				toggleAddActivity();
				
				document.getElementById("isEditEvent").value = 1;
				document.getElementById("eventId").value = eventId;
				
				document.getElementById("titleSr").value = $("aTitleSr",xml).text();
				document.getElementById("placeSr").value = $("aPlace",xml).text();
				document.getElementById("textSr").value = $("aTextSr",xml).text();
				
				var dateFrom = $("aDateFrom", xml).text();
				var dateFromArray = dateFrom.split("-");
				
				
				var dfDay = dateFromArray[2];
				if(dfDay.substring(0,1) == "0")
					aDay = dfDay.substring(1,2);
				else
					aDay = dfDay;
				document.getElementById("aDay").value = aDay;
				
				var dfMonth = dateFromArray[1];
				if(dfMonth.substring(0,1) == "0")
					aMonth = dfMonth.substring(1,2);
				else
					aMonth = dfMonth;
				document.getElementById("aMonth").value = aMonth;
				
				document.getElementById("aYear").value = dateFromArray[0];
				
				var dateTo = $("aDateTo", xml).text();
				var dateToArray = dateTo.split("-");
				
				var dtDay = dateToArray[2];
				if(dtDay.substring(0,1) == "0")
					aaDay = dtDay.substring(1,2);
				else
					aaDay = dtDay;
				document.getElementById("aaDay").value = aaDay;
				
				var dtMonth = dateToArray[1];
				if(dtMonth.substring(0,1) == "0")
					aaMonth = dtMonth.substring(1,2);
				else
					aaMonth = dtMonth;
				document.getElementById("aaMonth").value = aaMonth;
				
				document.getElementById("aaYear").value = dateToArray[0];
				
			} else if(error == "Yes"){
				
			}
	});	
}

function deleteEvent(id,field){
	$.post("http://www.msjb.org/_server/server.calendar.php", {
			action: "deleteEvent",
			id: id
	}, function(xml){
							
			var error = $("error", xml).text();
			if(error == "No"){
				closeActivityDetails(field);
				calculateCalendar(month,year,4);
			} else if(error == "Yes"){
				
			}
	});		
}



