/**
 * JS-Funktionen für den Kalender
 */

function LyCal()
{
	var app = this;

	app.addPopupCalendar = function(calendarId, buttonId, inputId, lang)
	{
		if (!lang) lang = 'de';
		var dialog, calendar, buttonText = "Cancle";
		var calendarContainerId = calendarId + '_container';

		// Kalender erstellen und konfigurieren
		calendar = new YAHOO.widget.Calendar(calendarId,
														{
															LOCALE_WEEKDAYS: "short",
															START_WEEKDAY: 1,
															iframe:false
														} );

		calendar.cfg.setProperty("DATE_FIELD_DELIMITER", ".");
		calendar.cfg.setProperty("MDY_DAY_POSITION", 1);
		calendar.cfg.setProperty("MDY_MONTH_POSITION", 2);
		calendar.cfg.setProperty("MDY_YEAR_POSITION", 3);
		calendar.cfg.setProperty("MD_DAY_POSITION", 1);
		calendar.cfg.setProperty("MD_MONTH_POSITION", 2);

		switch (lang)
		{
			case 'de':
				calendar.cfg.setProperty("MONTHS_SHORT",   				["Jan", "Feb", "M\u00E4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]);
				calendar.cfg.setProperty("MONTHS_LONG",					["Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]);
				calendar.cfg.setProperty("WEEKDAYS_1CHAR",				["S", "M", "D", "M", "D", "F", "S"]);
				calendar.cfg.setProperty("WEEKDAYS_SHORT",				["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]);
				calendar.cfg.setProperty("WEEKDAYS_MEDIUM",				["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"]);
				calendar.cfg.setProperty("WEEKDAYS_LONG",				["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]);
				buttonText = "Abbrechen";
				break;
			case 'sv':
				calendar.cfg.setProperty("MONTHS_LONG",					["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"]);
				calendar.cfg.setProperty("WEEKDAYS_SHORT",				["S\u00f6", "M\u00E5", "Ti", "On", "To", "Fr", "L\u00f6"]);
				buttonText = "Avbryta";
				break;
			case 'fr':
				calendar.cfg.setProperty("MONTHS_LONG",					["Janvier", "F\u00E9vrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "D\u00E9cembre"]);
				calendar.cfg.setProperty("WEEKDAYS_SHORT",				["Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"]);
				buttonText = "Annuler";
				break;
			case 'it':
				calendar.cfg.setProperty("MONTHS_LONG",					["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"]);
				calendar.cfg.setProperty("WEEKDAYS_SHORT",				["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"]);
				buttonText = "Bloccare";
				break;
		}

		// Event-Handler für den Dialog konfigurieren
		okHandler = function() {
			var dateString = '';
			var elem = document.getElementById(inputId);

			if (calendar.getSelectedDates().length > 0) {
				var selectedDate = calendar.getSelectedDates()[0];
				var day   = (selectedDate.getDate() > 9)? selectedDate.getDate() : '0' + selectedDate.getDate();
				var month = (selectedDate.getMonth() > 8)? (selectedDate.getMonth() +1) : '0' + (selectedDate.getMonth() +1);
				var year = (selectedDate.getFullYear());
				switch(lang)
				{
					case 'de':
						dateString = day+'.'+month+'.'+year;
						break;
					case 'en':
						dateString = month+'/'+day+'/'+year;
						break;
					case 'sv':
						dateString = year+'-'+month+'-'+day;
						break;
					case 'fr':
					case 'it':
						dateString = day+'/'+month+'/'+year;
						break;
				}
			}
			if (elem) elem.value = dateString;
			this.hide();
		}

		cancelHandler = function() {
			this.hide();
		}

		// Dialog-Fenster erstellen und konfigurieren
		dialog = new YAHOO.widget.Dialog(
			calendarContainerId,
			{
				context: [buttonId, "tl", "bl"],
				buttons: [ { text: "OK", isDefault: true, handler: okHandler }, { text: buttonText, handler: cancelHandler } ],
				width: "16em",
				draggable: false,
				close: true
			}
		);

		calendar.render();
		dialog.render();
		dialog.hide();

		calendar.renderEvent.subscribe(function() {
			dialog.fireEvent("changeContent");
		} );

		YAHOO.util.Event.on(buttonId, 'click', function() {
			var elem = document.getElementById(inputId);
			if (elem && elem.value.length > 0) {
				var dummy = elem.value.split('.');
				if (dummy.length == 3) {
					calendar.select(dummy[0] + '.' + dummy[1] + '.' + dummy[2]);
					calendar.render();
				}
			}

			dialog.show();
			if (YAHOO.env.ua.opera && document.documentElement) document.documentElement.className += "";
		} );

		YAHOO.namespace('lynet.cal');
		YAHOO.lynet.cal[calendarId] = calendar;
		YAHOO.lynet.cal[calendarContainerId] = dialog;
	}
}

var lyCal = new LyCal();
