
Array.prototype.locate = function(o) {
	for(var i = 0; i < this.length; i++) {
		if(this[i].toUpperCase() == o.toUpperCase()){
			return i;
		}
	}
	return -1;
}

Array.prototype.locateCourse = function(o) {
	for(var i = 0; i < this.length; i++) {
		if(this[i].naam.toUpperCase() == o.toUpperCase()){
			return i;
		}
	}
	return -1;
}

function dateSort(a,b) {
	var x = stringNaarDatum(a.datum); 
	var y = stringNaarDatum(b.datum);
	if ( x > y ) {
		return 1;
	} else if ( x < y ) {
		return -1;
	}
	return 0;
}

function stringNaarDatum( myDateString ){
	var myDate=new Date();
	var parts = String(myDateString).split(/[- :]/)
	var deMaand = maanden.locate(parts[1])
	if (deMaand == -1) {
		deMaand = months.locate(parts[1])
	}
	if (deMaand == -1) {
		deMaand = parts[1] -1
	}

	myDate.setFullYear(parts[2],deMaand,parts[0])
	return myDate;	
}

function makeDatumNed(myDate){
	return myDate.getDate() + " " + maanden[myDate.getMonth()] + " " + myDate.getFullYear();
}

function makeDatumEng(myDate){
	return myDate.getDate() + " " + months[myDate.getMonth()] + " " + myDate.getFullYear();
}

function makeWeekDaysNed(list){
	if (list.length == 1) {
		return	dagen[list[0]%7]
	} else 	if (list.length == 2) {
		return	dagen[list[0]%7] + " en " + dagen[list[1]%7];
	} else {
		var antwoord = dagen[list[0]%7]
		for(var i = 1; i < list.length -1 ; i++) {
			antwoord += ", " + dagen[list[i]%7]
		}
		antwoord += " en " + dagen[list[i]%7]
		return antwoord;
	}
}

function makeWeekDaysEng(list){
	if (list.length == 1) {
		return	weekdays[list[0]%7]
	} else 	if (list.length == 2) {
		return	weekdays[list[0]%7] + " and " + weekdays[list[1]%7];
	} else {
		var antwoord = weekdays[list[0]%7]
		for(var i = 1; i < list.length -1 ; i++) {
			antwoord += ", " + weekdays[list[i]%7]
		}
		antwoord += " and " + weekdays[list[i]%7]
		return antwoord;
	}
}

function makeWeekDaysShortNed(course){
	list = cmmData[cmmData.locateCourse(course)].dagen
	var week1 = [];
	var week2 = [];
	var week3 = [];
	var week4 = [];
	for (var i = 0; i < list.length; i++) {
		if (list[i] <= 7) { 
			week1.push(list[i] % 7);
		} else if (list[i] <= 14) { 
			week2.push(list[i] % 7);
		} else if (list[i] <= 21) { 
			week3.push(list[i] % 7);
		} else { 
			week4.push(list[i] % 7);
		}
	}
	
	var antwoord = "week 1: " +  makeWeekDaysNed(week1);
	if (week2.length > 0){
		antwoord += "\n<br />week 2: " +  makeWeekDaysNed(week2);
	}
	if (week3.length > 0){
		antwoord += "\n<br />week 3: " +  makeWeekDaysNed(week3);
	}
	if (week4.length > 0){
		antwoord += "\n<br />week 4: " +  makeWeekDaysNed(week4);
	}

	document.write( antwoord );
}

function makeWeekDaysShortEng(course){
	list = cmmData[cmmData.locateCourse(course)].dagen
	var week1 = [];
	var week2 = [];
	var week3 = [];
	var week4 = [];
	for (var i = 0; i < list.length; i++) {
		if (list[i] <= 7) { 
			week1.push(list[i] % 7);
		} else if (list[i] <= 14) { 
			week2.push(list[i] % 7);
		} else if (list[i] <= 21) { 
			week3.push(list[i] % 7);
		} else { 
			week4.push(list[i] % 7);
		}
	}
	
	var antwoord = "week 1: " +  makeWeekDaysEng(week1);
	if (week2.length > 0){
		antwoord += "\n<br />week 2: " +  makeWeekDaysEng(week2);
	}
	if (week3.length > 0){
		antwoord += "\n<br />week 3: " +  makeWeekDaysEng(week3);
	}
	if (week4.length > 0){
		antwoord += "\n<br />week 4: " +  makeWeekDaysEng(week4);
	}

	document.write( antwoord );
}

function makeDaysDatesNed(course){

	var list = cmmData[cmmData.locateCourse(course)].dagen;
	var startDate = stringNaarDatum( cmmData[cmmData.locateCourse(course)].datum);
	var currentYear = startDate.getFullYear();
	if (isNaN(currentYear)) { return; }
	var currentMonth = startDate.getMonth();
	var currentDay = startDate.getDate();
	var nextYear = currentYear;
	if (currentMonth + 1 > 11){
		nextYear++;
	}
	var nextMonth = (currentMonth + 1) % 12;
	var maand1 = [currentMonth, currentYear];
	var maand2 = [nextMonth, nextYear];

	for (var i = 0; i < list.length; i++) {
		var courseDate = new Date(startDate.getTime());
		courseDate.setDate( currentDay + (list[i] - list[0] ))	
		var dag = courseDate.getDate();
		var maand = courseDate.getMonth();
		if (maand == currentMonth) { 
			maand1.push(dag);
		} else { 
			maand2.push(dag);
		}
	}
	
	
	var antwoord = "" + maand1[2];
	for (var i = 3; i < maand1.length; i++) {
		antwoord += ", " + maand1[i]
	}
	antwoord += " " + maanden[ maand1[0] ] + " " +  maand1[1] 
	
	if (maand2.length > 2){
		antwoord += "<br />" + maand2[2];
		for (var i = 3; i < maand2.length; i++) {
			antwoord += ", " + maand2[i]
		}
		antwoord += " " + maanden[ maand2[0] ] + " " +  maand2[1]
	}

	document.write( antwoord );
}

function makeDaysDatesEng(course){

	var list = cmmData[cmmData.locateCourse(course)].dagen;
	var startDate = stringNaarDatum( cmmData[cmmData.locateCourse(course)].datum);
	var currentYear = startDate.getFullYear();
	if (isNaN(currentYear)) { return; }
	var currentMonth = startDate.getMonth();
	var currentDay = startDate.getDate();
	var nextYear = currentYear;
	if (currentMonth + 1 > 11){
		nextYear++;
	}
	var nextMonth = (currentMonth + 1) % 12;
	var maand1 = [currentMonth, currentYear];
	var maand2 = [nextMonth, nextYear];

	for (var i = 0; i < list.length; i++) {
		var courseDate = new Date(startDate.getTime());
		courseDate.setDate( currentDay + list[i] - list[0] )	
		var dag = courseDate.getDate();
		var maand = courseDate.getMonth();
		if (maand == currentMonth) { 
			maand1.push(dag);
		} else { 
			maand2.push(dag);
		}
	}
	
	var antwoord = "" + maand1[2];
	for (var i = 3; i < maand1.length; i++) {
		antwoord += ", " + maand1[i]
	}
	antwoord += " " + months[ maand1[0] ] + " " +  maand1[1] 
	
	if (maand2.length > 2){
		antwoord += "<br />" + maand2[2];
		for (var i = 3; i < maand2.length; i++) {
			antwoord += ", " + maand2[i]
		}
		antwoord += " " + months[ maand2[0] ] + " " +  maand2[1]
	}

	document.write( antwoord );
}

function showProp (course, prop){
	var prep = prop;
	if (prep == "days") { prop = "dagen";}
	if (prep == "date") { prop = "datum";}
	if (prep == "temp") { prop = "datum";}
	if (prep == "link") { prop = "URL";}
	if (prep == "examengeld") { prop = "naam";}
	if (prep == "inschrijfgeld") { prop = "naam";}
	var pos = cmmData.locateCourse(course)
	var antwoord = 0;
	if (pos >= 0) {
		courseObject =  cmmData[pos];
		proper = courseObject[prop];
		if (prop == "datum" && isNaN(stringNaarDatum(proper).getFullYear()) ){ prep = "temp";}
		
		if (proper) {
			switch(prep) {
			case "naam"			: antwoord = proper;break; 
			case "naamVol" 		: antwoord = proper;break; 
			case "lokatie" 		: antwoord = proper;break; 
			case "taal"			: antwoord = proper;break;
			case "periode"		: antwoord = proper;break;
			case "temp"			: antwoord = proper;break;
			case "termijnen"	: antwoord = proper;break;
			case "prijs"		: antwoord = "&euro; " + proper + ",-";break;
			case "totaalprijs"	: antwoord = "&euro; " + proper + ",-";break;
			case "prijsNON"		: antwoord = "&euro; " + proper + ",-";break;
			case "termijn"		: antwoord = "&euro; " + proper + ",-";break;
			case "boekengeld"	: antwoord = "&euro; " + proper + ",-";break;
			case "examengeld"	: antwoord = "&euro; " + examenbedrag + ",-";break;
			case "inschrijfgeld": antwoord = "&euro; " + inschrijfbedrag + ",-";break;
			case "tijden"		: antwoord = proper[0] + " - " + proper[1];break;
			case "dagen"		: antwoord = makeWeekDaysNed(proper);break;
			case "datum"		: antwoord = makeDatumNed(stringNaarDatum(proper));break;
			case "days"			: antwoord = makeWeekDaysEng(proper);break;
			case "date"			: antwoord = makeDatumEng(stringNaarDatum(proper));break;
			case "URL"			: antwoord = cmmDomain + proper;break;
			case "link"			: antwoord = '<a href="' + cmmDomain + proper +'">';break;
			}
		}
	}	
	return antwoord;
}

function putProp (course, prop) {
	document.write(showProp (course, prop) )
}

function agendaDatum(myDate) {
	realDate = stringNaarDatum( myDate );
	realDay = realDate.getDate();
	realMonth = realDate.getMonth() + 1;
	realDay = realDay <= 9 ? "0" + realDay : realDay;
	realMonth = realMonth <= 9 ? "0" + realMonth : realMonth;
	return realDay + "/" + realMonth;
}

function agendaList(taal){
	var currentDate = 	new Date();
	var currentMonth = 	currentDate.getMonth();
	var currentYear =  	currentDate.getFullYear();
	var currentDay =  	currentDate.getDate();
	
	var nextDate = 		new Date();
	nextDate.setDate(1);
	nextDate.setMonth(currentMonth + 1 );
	var nextMonth = 	nextDate.getMonth();
	var nextYear = 		nextDate.getFullYear();
	
	var nextDate2 = 	new Date();
	nextDate2.setDate(1);
	nextDate2.setMonth(currentMonth + 2 );
	var nextMonth2 = 	nextDate2.getMonth();
	var nextYear2 = 	nextDate2.getFullYear();

	var nextDate3 = 	new Date();
	nextDate3.setDate(1);
	nextDate3.setMonth(currentMonth + 3 );
	var nextMonth3 = 	nextDate3.getMonth();
	var nextYear3 = 	nextDate3.getFullYear();

	var aMonth = 		'<div class="month">';
	var aMonthEnd = 	'</div>\n';
	var aEvents = 		'<div class="eventsItem"><div class="mediumText"><p>\n';
	var aEventDate =	'<div style="width:98%; background-color:#fff; margin:0; padding:1px 3px;"><strong>';
	var aEventDateH =	'<div style="width:98%; background-color:#ddd; margin:0; padding:1px 3px;"><strong>';
	var aEventURL = 	'</strong>&nbsp;&nbsp;&nbsp;&nbsp;<a title="Locatie Amsterdam" href="';
	var aEventURLH = 	'</strong>&nbsp;&nbsp;&nbsp;&nbsp;<a title="Locatie Hilversum" class="hsum" href="';
	var aEventName = 	'">';
	var aEventEnd= 		'</a></div>\n';
	var aEventsEnd	= 	'</p></div></div>\n';           
	var uitvoer = 		"";
	var agenda0 = 		new Array();
	var agenda1 = 		new Array();
	var agenda2 = 		new Array();
	var agenda3 = 		new Array();

	for (i = 0 ; i < cmmData.length ; i++) {
		if (cmmData[i].agenda) {
			var testMaand = stringNaarDatum(cmmData[i].datum).getMonth();
			var testJaar = stringNaarDatum(cmmData[i].datum).getFullYear();
			var testDay = stringNaarDatum(cmmData[i].datum).getDate();
		
			if (currentYear == testJaar && (testMaand == currentMonth) && (testDay >= currentDay)) {
				agenda0.push(cmmData[i]);
			}
		
			if (nextYear == testJaar && (testMaand == nextMonth) ) {
				agenda1.push(cmmData[i]);
			}
			
			if (nextYear2 == testJaar && (testMaand == nextMonth2) ) {
				agenda2.push(cmmData[i]);
			}
			
			if (nextYear3 == testJaar && (testMaand == nextMonth3) ) {
				agenda3.push(cmmData[i]);
			}
		}
	}

	agenda0.sort(dateSort);
	agenda1.sort(dateSort);
	agenda2.sort(dateSort);
	agenda3.sort(dateSort);
	
	if (taal == "ned") {
		uitvoer += aMonth + maanden[currentMonth] + " " + currentYear + aMonthEnd + aEvents;
		for (i = 0 ; i < agenda0.length ; i++) {
			if(agenda0[i].locatie=="Hilversum"){
				uitvoer += aEventDateH + agendaDatum(agenda0[i].datum) + aEventURLH + cmmDomain + agenda0[i].URL + aEventName + agenda0[i].naamVol + aEventEnd;
		}else{
				uitvoer += aEventDate + agendaDatum(agenda0[i].datum) + aEventURL + cmmDomain + agenda0[i].URL + aEventName + agenda0[i].naamVol + aEventEnd;	
			}
		}
		uitvoer += aEventsEnd;
	
		uitvoer += aMonth +  maanden[nextMonth] + " " + nextYear  + aMonthEnd + aEvents;
		for (i = 0 ; i < agenda1.length ; i++) {
			if(agenda1[i].locatie=="Hilversum"){
				uitvoer += aEventDateH + agendaDatum(agenda1[i].datum) + aEventURLH + cmmDomain + agenda1[i].URL + aEventName + agenda1[i].naamVol + aEventEnd;
			}else{
				uitvoer += aEventDate + agendaDatum(agenda1[i].datum) + aEventURL + cmmDomain + agenda1[i].URL + aEventName + agenda1[i].naamVol + aEventEnd;
			}
		}
		uitvoer += aEventsEnd;
		
		uitvoer += aMonth +  maanden[nextMonth2] + " " + nextYear2  + aMonthEnd + aEvents;
		for (i = 0 ; i < agenda2.length ; i++) {
			if(agenda2[i].locatie=="Hilversum"){
				uitvoer += aEventDateH + agendaDatum(agenda2[i].datum) + aEventURLH + cmmDomain + agenda2[i].URL + aEventName + agenda2[i].naamVol + aEventEnd;
			}else{
				uitvoer += aEventDate + agendaDatum(agenda2[i].datum) + aEventURL + cmmDomain + agenda2[i].URL + aEventName + agenda2[i].naamVol + aEventEnd;
			}
		}
		uitvoer += aEventsEnd;
		
		uitvoer += aMonth +  maanden[nextMonth3] + " " + nextYear3  + aMonthEnd + aEvents;
		for (i = 0 ; i < agenda3.length ; i++) {
			if(agenda3[i].locatie=="Hilversum"){
				uitvoer += aEventDateH + agendaDatum(agenda3[i].datum) + aEventURLH + cmmDomain + agenda3[i].URL + aEventName + agenda3[i].naamVol + aEventEnd;
			}else{
				uitvoer += aEventDate + agendaDatum(agenda3[i].datum) + aEventURL + cmmDomain + agenda3[i].URL + aEventName + agenda3[i].naamVol + aEventEnd;
			}
		}
		uitvoer += aEventsEnd;


	} else {
		uitvoer += aMonth + months[currentMonth] + " " + currentYear + aMonthEnd + aEvents;
		for (i = 0 ; i < agenda0.length ; i++) {
			uitvoer += aEventDate + agendaDatum(agenda0[i].datum) + aEventURL + cmmDomain + agenda0[i].URL + aEventName + agenda0[i].naamVol + aEventEnd;
		}
		uitvoer += aEventsEnd;
	
		uitvoer += aMonth +  months[nextMonth] + " " + nextYear  + aMonthEnd + aEvents;
		for (i = 0 ; i < agenda1.length ; i++) {
			uitvoer += aEventDate + agendaDatum(agenda1[i].datum) + aEventURL + cmmDomain + agenda1[i].URL + aEventName + agenda1[i].naamVol + aEventEnd;
		}
		uitvoer += aEventsEnd;
		
		uitvoer += aMonth +  months[nextMonth2] + " " + nextYear2  + aMonthEnd + aEvents;
		for (i = 0 ; i < agenda2.length ; i++) {
			uitvoer += aEventDate + agendaDatum(agenda2[i].datum) + aEventURL + cmmDomain + agenda2[i].URL + aEventName + agenda2[i].naamVol + aEventEnd;
		}
		uitvoer += aEventsEnd;
		
		
	}
	

	document.write(uitvoer);
}



var dagen = new Array(7);
dagen[0] = "zondag";
dagen[1] = "maandag";
dagen[2] = "dinsdag";
dagen[3] = "woensdag";
dagen[4] = "donderdag";
dagen[5] = "vrijdag";
dagen[6] = "zaterdag";

var maanden = new Array(12);
maanden[0] = "januari";
maanden[1] = "februari";
maanden[2] = "maart";
maanden[3] = "april";
maanden[4] = "mei";
maanden[5] = "juni";
maanden[6] = "juli";
maanden[7] = "augustus";
maanden[8] = "september";
maanden[9] = "oktober";
maanden[10] = "november";
maanden[11] = "december";

var weekdays = new Array(7);
weekdays[0] = "Sunday";
weekdays[1] = "Monday";
weekdays[2] = "Tuesday";
weekdays[3] = "Wednesday";
weekdays[4] = "Thursday";
weekdays[5] = "Friday";
weekdays[6] = "Saturday";

var months = new Array(12);
months[0] = "January";
months[1] = "February";
months[2] = "March";
months[3] = "April";
months[4] = "May";
months[5] = "June";
months[6] = "July";
months[7] = "August";
months[8] = "September";
months[9] = "October";
months[10] = "November";
months[11] = "December";



