/*******************************************************************************
* Datei :           timetable.js   ***JAVASCRIPT***                            *
*                                                                              *
* Projekt :         NC EveCal                                                  *
* Version :         4.0.3                                                      *
* Datum :           03.07.2004 (v3.0)                                          *
* Letzte Änderung : 25.11.2007 (v4.0.3)                                        *
* Autor :           Manuel Rennecke <info@netconcept24.de>                     *
* Herausgeber :     (c) 2001-2007 - Net Concept 24                             *
*                                                                              *
* Zeitplan-Funktionen                                                          *
*******************************************************************************/

//**** Intervall-Layer anzeigen *************************************
function show_repetition(element) {
	for (var i = 0; i < element.length; i++)
		document.getElementById(element.options[i].value).style.display = "none";

	document.getElementById(element.value).style.display = "block";
}

//**** Ausnahmen-Layer anzeigen *************************************
function openExceptions() {
	if (document.getElementById('none').style.display == "block")
		alert(txt_noexceptions);
	else {
		document.getElementById('exceptions_off').style.display = "none";
		document.getElementById('exceptions_on').style.display = "block";
	}
}

//**** Ausnahmen-Layer verbergen ************************************
function closeExceptions() {
	document.getElementById('exceptions_on').style.display = "none";
	document.getElementById('exceptions_off').style.display = "block";
}

//**** Datum hinzufügen *********************************************
function date_add(form, layer) {
	checkdate(layer + '_date', form);
	date = new Array(form.elements[layer + '_date_day'].value, form.elements[layer + '_date_month'].value, form.elements[layer + '_date_year'].value);
	if (!dateFinished(date) || (dateFinished && confirm(txt_datefinished))) {
		curDate = (date[0] < 10 ? '0' : '') + date[0] + '.' + ((date[1] + 1) < 10 ? '0' : '') + (date[1] + 1) + '.' + date[2];
		newOption = new Option(curDate, curDate);
		form.elements[layer + '_dates[]'].options[form.elements[layer + '_dates[]'].length] = newOption;
	}
	form.elements[layer + '_date_day'].value = '';
	form.elements[layer + '_date_month'].value = '';
	form.elements[layer + '_date_year'].value = '';
}

//**** Datumsangaben beim Absenden vergleichen *********************************
function comparedates(rep, form) {
	var start = new Array(document.forms[form].elements[rep + '_' + 'start_day'].value, document.forms[form].elements[rep + '_' + 'start_month'].value, document.forms[form].elements[rep + '_' + 'start_year'].value);
	var end   = new Array(document.forms[form].elements[rep + '_' + 'end_day'].value, document.forms[form].elements[rep + '_' + 'end_month'].value, document.forms[form].elements[rep + '_' + 'end_year'].value);
	if (start[0] == "" && start[1] == "" && start[2] == "") {
		start[0] = start[1] = "01";
		start[2] = "1970";
	}
	if (end[0] == "" && end[1] == "" && end[2] == "") {
		end[0] = "31";
		end[1] = "12";
		end[2] = "2099";
	}  
	start[0] = parseInt(start[0], 10);
	start[1] = parseInt(start[1], 10) - 1;
	if (start[2].length == 2) 
		start[2] = '20' + start[2];
	end[0] = parseInt(end[0], 10);
	end[1] = parseInt(end[1], 10) - 1;
	if (end[2].length == 2) 
		end[2] = '20' + end[2];
	var test_start = new Date(start[2], start[1], start[0]);
	var test_end   = new Date(end[2], end[1], end[0]);
	if (test_end.getTime() < test_start.getTime()) {
		alert(txt_startgreaterend);
		document.form.elements[rep + '_' + 'end_day'].focus();
		return false;
	}
	return true;
}

//**** Prüfen, ob Datum vergangen *************************
function eventFinished(form) {
	var repType = document.forms[form].ecRepetition.value;
	if (repType != "individual") {
		var start = new Array(document.forms[form].elements[repType + '_' + 'start_day'].value, document.forms[form].elements[repType + '_' + 'start_month'].value, document.forms[form].elements[repType + '_' + 'start_year'].value);
		if (repType != "none")
			var end = new Array(document.forms[form].elements[repType + '_' + 'end_day'].value, document.forms[form].elements[repType + '_' + 'end_month'].value, document.forms[form].elements[repType + '_' + 'end_year'].value);
		else
			var end = new Array(start[0], start[1], start[2]);
		
		if (start[0] == "" && start[1] == "" && start[2] == "") {
			start[0] = start[1] = "01";
			start[2] = "1970";
		}
		start[0] = parseInt(start[0], 10);
		start[1] = parseInt(start[1], 10);
		if (start[2].length == 2) 
			start[2] = '20' + start[2];
			
		if (end[0] == "" && end[1] == "" && end[2] == "") {
			end[0] = "31";
			end[1] = "12";
			end[2] = "2099";
		}  
		end[0] = parseInt(end[0], 10);
		end[1] = parseInt(end[1], 10);
		if (end[2].length == 2) 
			end[2] = '20' + end[2];

		if (dateFinished(start) && dateFinished(end))
			return true;
	}
	return false;
}

//**** Wiederholungsintervall prüfen ********************************
function checkRepetition(form) {
	var repType = document.forms[form].ecRepetition.value;
	// Startdatum und Zeit korrigieren (bei jedem Wiederholungsintervall nötig, außer individuell)
	if (repType != "individual") {
		checkdate(repType + '_start', form);
		checktime(repType + '_start', form);
		checktime(repType + '_end', form);
		// Falls vorhanden, Enddatum korrigieren
		if (repType != "none") {
			checkdate(repType + '_end', form);
			if (!comparedates(repType, form))
				return false;
		}
	}
	// wöchentliche Termine
	if (repType == "weekly") {
		if (document.forms[form].weekly_cycle[1].checked && document.forms[form].weekly_cycle_intervall.value == "") {
			alert(txt_weekintervall);
			document.forms[form].weekly_cycle_intervall.focus();
			return false;
		}
		var chkZ = 1;
		for (i=0; i<document.forms[form].weekly_cycle_intervall.value.length; i++)
			if (isNaN(document.forms[form].weekly_cycle_intervall.value) || document.forms[form].weekly_cycle_intervall.value < 0)
				chkZ = -1;
		if(chkZ == -1) {
			alert(txt_weekintervall2);
			document.forms[form].weekly_cycle_intervall.focus();
			return false;
		}
		if (!document.forms[form].weekly_monday.checked && !document.forms[form].weekly_tuesday.checked &&
			!document.forms[form].weekly_wednesday.checked && !document.forms[form].weekly_thursday.checked &&
			!document.forms[form].weekly_friday.checked && !document.forms[form].weekly_saturday.checked &&
			!document.forms[form].weekly_sunday.checked) {
			alert(txt_weekdaycheck);
			document.forms[form].weekly_monday.focus();
			return false;
		}
	// monatliche Termine
	} else 
	if (repType == "monthly") {
		if (document.forms[form].monthly_cycle[0].checked) {
			if (document.forms[form].monthly_cycle_intervall_date.value == "") {
				alert(txt_monthday);
				document.forms[form].monthly_cycle_intervall_date.focus();
				return false;
			}
			test = parseInt(document.forms[form].monthly_cycle_intervall_date.value, 10);
			if (test < 1 || test > 31) {
				alert(txt_monthday2);
				document.forms[form].monthly_cycle_intervall_date.focus();
				return false;
			}
		}
		if (document.forms[form].monthly_cycle[1].checked) {
			if (document.forms[form].elements['monthly_cycle_intervall_number[]'].selectedIndex == -1) {
				alert(txt_intervall);
				document.forms[form].elements['monthly_cycle_intervall_number[]'].focus();
				return false;
			}
			if (document.forms[form].elements['monthly_cycle_intervall_weekday[]'].selectedIndex == -1) {
				alert(txt_intervall);
				document.forms[form].elements['monthly_cycle_intervall_weekday[]'].focus();
				return false;
			}
		}
		if (!document.forms[form].monthly_january.checked && !document.forms[form].monthly_february.checked &&
			!document.forms[form].monthly_march.checked && !document.forms[form].monthly_april.checked &&
			!document.forms[form].monthly_may.checked && !document.forms[form].monthly_june.checked &&
			!document.forms[form].monthly_july.checked && !document.forms[form].monthly_august.checked &&
			!document.forms[form].monthly_september.checked && !document.forms[form].monthly_october.checked &&
			!document.forms[form].monthly_november.checked && !document.forms[form].monthly_december.checked) {
			alert(txt_monthone);
			document.forms[form].monthly_january.focus();
			return false;
		}
	}
	return true;
}
