/*
Project Name: der Hörverlag
Version: 1.0
Author: Design Aspekt (JB)
*/


$(document).ready(function () {

	changedate('return');
	
	var calendarWidth = $("#calendar").width(); 
	
	if(calendarWidth < "180") {
		$("#calendar-results").css('right', '173px');
		$("#calendar-results").css('margin-top', '48px');
		$("#calendar").css('margin-top', '-35px');
	}
	
	if(calendarWidth > "180" && calendarWidth < "260") {
		$("#calendar-results").css('left', '280px');
	}	


});




// Global variables
var thisDate = 1; // Current date being written in calendar
var wordMonth = new Array("Januar","Februar","März","April","Mai","Juni ","Juli","August","September","Oktober","November","Dezember");
var today = new Date(); // Date object to store the current date
var todaysDay = today.getDay() + 1; // Stores the current day number 1-7
var todaysDate = today.getDate(); // Stores the current numeric date within the month
var todaysMonth = today.getUTCMonth() + 1; // Stores the current month 1-12
var todaysYear = today.getFullYear(); // Stores the current year
var monthNum = todaysMonth; // Tracks the current month being displayed
var yearNum = todaysYear; // Tracks the current year being displayed
var firstDate = new Date(String(monthNum)+"/1/"+String(yearNum)); // Object Storing the first day of the current month
var firstDay = firstDate.getUTCDay(); // Tracks the day number 1-7 of the first day of the current month
var lastDate = new Date(String(monthNum+1)+"/0/"+String(yearNum)); // Tracks the last date of the current month
var numbDays = 0;
var calendarString = "";
var readingMarkers = ""; 
var eventMarkers = "";
var radioMarkers = "";
var eventLink = "";
var events = new Array();
				


// Navigation
function changedate(buttonpressed) {

	buildEventsArray();
	
	if (buttonpressed == "prevmo") monthNum--;
	else if (buttonpressed == "nextmo") monthNum++;

	// Reset the months
	if (monthNum == 0) {
		monthNum = 12;
		yearNum--;
	}
	else if (monthNum == 13) {
		monthNum = 1;
		yearNum++;
	}

	lastDate = new Date(String(monthNum+1)+"/0/"+String(yearNum));
	numbDays = lastDate.getDate();
	firstDate = new Date(String(monthNum)+"/1/"+String(yearNum));
	firstDay = firstDate.getDay() + 1;

	
	
	function buildEventsArray() {

		$.ajax({
			type: "GET",
			//url: "http://www.dhvpreviewserver.de/web/scripts/data-builder.php?yearNum="+ yearNum +"",
			url: "http://www.hoerverlag.de/web/scripts/data-builder.php?yearNum="+ yearNum +"",
			success: function(str){
			
				var str;
				var aL1 = new Array();
				var aL1 = str.split('|');
				
				for (var i=0; i < aL1.length; i++) {
					
					events[i] = aL1[i].split(',');
					
				}
				
				$('#data-store').ajaxComplete(function() {
					createCalendar();
				});
			}
		});
		
	}	
	return false;
}



// Create calendar layout
function createCalendar() {
	
	calendarString = '';
	var daycounter = 0;

	calendarString += '<table border="0" cellpadding="0" id="calendar-controls" width="100%">';
	calendarString += '<tr>';
	calendarString += '<td align="left"><div onClick=\"changedate(\'prevmo\')\" class=\"icon icon-settings icon-settings-left calendar-prev\"> <\/div><\/td>';
	calendarString += '<td align=\"center\"><a href=\"#\" style="line-height:30px;">' + wordMonth[monthNum-1] + '&nbsp;&nbsp;' + yearNum + '<\/a><\/td>';
	calendarString += '<td align="right"><div onClick=\"changedate(\'nextmo\')\" class=\"icon icon-settings icon-settings-right calendar-next\"><\/div><\/td>';
	calendarString += '<\/tr>';
	calendarString += '<\/table>';

	calendarString += '<table border="0" cellpadding="0" cellspacing="0" id="my-calendar" width="100%">';
	calendarString += '<tr class=\"days-week\">';
	calendarString += '<td align=\"center\" width=\"14%\" height=\"27\">So<\/td>';
	calendarString += '<td align=\"center\" width=\"14%\" height=\"27\">Mo<\/td>';
	calendarString += '<td align=\"center\" width=\"14%\" height=\"27\">Di<\/td>';
	calendarString += '<td align=\"center\" width=\"14%\" height=\"27\">Mi<\/td>';
	calendarString += '<td align=\"center\" width=\"14%\" height=\"27\">Do<\/td>';
	calendarString += '<td align=\"center\" width=\"14%\" height=\"27\">Fri<\/td>';
	calendarString += '<td align=\"center\" width=\"14%\" height=\"27\">Sa<\/td>';
	calendarString += '<\/tr>';

	
	// number of rows
	var numRows = "6";

	//Conditions to check how many rows to create
	if (firstDay >= "1" && numbDays <= "31" || firstDay >= "2" && numbDays <= "31" || firstDay >= "6" && numbDays == "30") {
		numRows = "5";
	}	

	if (firstDay >= "6" && numbDays == "31" || firstDay == "7" && numbDays == "30" ) {
		numRows = "6";
	}
	
	for (var week = 1; week <= numRows; week++) {

		calendarString += '<tr>';
		
		for (var dayofweek = 1; dayofweek <= 7; dayofweek++) {
			
			daycounter = (thisDate - firstDay)+1;
			thisDate++;
			
			if ((daycounter > numbDays) || (daycounter < 1)) {
				//empty, no event or calendar day
				calendarString += '<td align=\"center\" height=\"27\" width=\"14%\" class=\"event\"><a href="#">&nbsp;<div class=\"event-icons\"></div></a><\/td>';
			} 
			
			else {
			
				if (checkEvents(daycounter,monthNum,yearNum,week,dayofweek)){
					setIcons(daycounter, monthNum, yearNum, week, dayofweek);
					//calendar day with event
					calendarString += '<td align=\"center\" height=\"27\" width=\"14%\" class=\"event\" onmouseover="javascript:showevents(' + daycounter + ',' + monthNum + ',' + yearNum + ',' + week + ',' + dayofweek + ')\" onmouseout="javascript:clearEvents()"><a href=\"'+eventLink+'">' + daycounter + '<div class=\"event-icons\">'+ readingMarkers +''+ eventMarkers +''+ radioMarkers +'</div><\/a><\/td>';
				} 
				
				else {
					//calendar day no event
					calendarString += '<td align=\"center\" height=\"27\" width=\"14%\" class=\"event\"><a href="#">' + daycounter + '<div class=\"event-icons\"></div></a><\/td>';
				}
				
			}
		}
		
	calendarString += '<\/tr>';
		
	}
	
	var object=document.getElementById('calendar');
	object.innerHTML= calendarString;
	thisDate = 1;
}






// Count the number of events for each month
function checkEvents(day,month,year,week,dayofweek) {

	var numEvents = 0;

	for (var i = 0; i < events.length; i++) {
		if ((events[i][1] == day) && (events[i][0] == month) && (events[i][2] == year)) {
			numEvents++;
		}			
	}
	
	if (numEvents == 0) {
		return false;
	} else {
		return true;
	}
}




// Clear results
function clearEvents() {
	
	var calendarResults=document.getElementById('calendar-results');
	calendarResults = calendarResults.style.display = "none";	
	
	var resultsHeader=document.getElementById('results-header');
	resultsHeader.innerHTML = resultsHeader = "";	

}






//Set event icons
function setIcons (day,month,year,week,dayofweek) {

	readingMarkers = "";
	eventMarkers = "";
	radioMarkers = "";
	eventLink = "";
	
	for (var i = 0; i < events.length; i++) {
		
		if ((events[i][1] == day) && (events[i][0] == month)) {
		
			if (events[i][4] == "Lesung") { 
				readingMarkers += "<span class=\"marker-a\"></span>"; 
			} else if (events[i][4] == "Veranstaltungstipp") { //Veranstaltungstipp
				eventMarkers += "<span class=\"marker-b\"></span>"; 
			} else if (events[i][4] == "Radiotipp") {
				radioMarkers += "<span class=\"marker-c\"></span>"; 
			}
			eventLink = events[i][7];
		}
	}
}




// Build the event and add it to the results div
function showevents(day,month,year,week,dayofweek) {

	var calendarResults=document.getElementById('calendar-results');
	calendarResults = calendarResults.style.display = "block";	
	
	var theEvent=document.getElementById('events-wrapper');
	theEvent.innerHTML = theEvent = "";
	
	// Results header
	var resultsHeader = "<div class=\"event-title\"><div>Veranstaltungen am \n" + day +'.'+ month +'.'+ year + '\n</div></div>';
	var object=document.getElementById('results-header');
	object.innerHTML= resultsHeader;

	
	
	
	// Count the number of events and set the eventCounter Var
	var eventCounter = '';
	
	for (var i = 0; i < events.length; i++) {

		if ((events[i][1] == day) && (events[i][0] == month)) {
			
			eventCounter++;
			
		}
	}
	
	
	// Build the result items
	for (var i = 0; i < events.length; i++) {

		
		if ((events[i][1] == day) && (events[i][0] == month)) {
			
			var type = "";
			
			// Highlight event
			if (events[i][4] == "Lesung") { 
				type = "type-a"; 
			} else if (events[i][4] == "Radiotipp") { 
				type = "type-b"; 
			} else if (events[i][4] == "Veranstaltungstipp") { //Veranstaltungstipp
				type = "type-c";
			}

			// Add pipe divide if time is present
			if (events[i][3] == "") {
				pipe = "";
			} else {
				pipe = "|";
			}
			
			// Add the event divide line 
			if (eventCounter > "1") {
				divide = "<div class=\"event-divide\"></div>";
			} else {
				divide = "";
			}			
			
			
			theEvent += '<div class=\"event-details\"><div class=\"event-type ' + type + '\">' + events[i][4] + '<span class=\"event-time\"><span class=\"event-pipe\">' + pipe + '</span>' + events[i][3] + '</span></div>';
			theEvent += '<div class=\"event-block\">' + events[i][5] + '</div>';
			theEvent += '<div class=\"event-loc\">' + events[i][6] + '</div>';
			theEvent += '' + divide + '';
			theEvent += '</div>';
			
			// Write the event to the calendar results
			var object=document.getElementById('events-wrapper').style.display = "block";
			var object=document.getElementById('events-wrapper');
			object.innerHTML= theEvent;
			
			eventCounter--;
			
		}
	}
	
}
