var navConfig = {
	strings: {
		month: "Monat",
		year:  "Jahr",
		submit: "Wählen",
		cancel: "Abbrechen",
		invalidYear: "Bitte wählen sie ein korrektes Jahr"
	}
}

YAHOO.util.Dom.setInnerHTML = function (el, html) {
    el = YAHOO.util.Dom.get(el);
    if (!el || typeof html !== 'string') {
        return null;
    }

    // Break circular references.
    (function (o) {

        var a = o.attributes, i, l, n, c;
        if (a) {
            l = a.length;
            for (i = 0; i < l; i += 1) {
                n = a[i].name;
                if (typeof o[n] === 'function') {
                    o[n] = null;
                }
            }
        }

        a = o.childNodes;

        if (a) {
            l = a.length;
            for (i = 0; i < l; i += 1) {
                c = o.childNodes[i];

                // Purge child nodes.
                arguments.callee(c);

                // Removes all listeners attached to the element via YUI's addListener.
                YAHOO.util.Event.purgeElement(c);
            }
        }

    })(el);

    // Remove scripts from HTML string, and set innerHTML property
    el.innerHTML = html.replace(/<script[^>]*>[\S\s]*?<\/script[^>]*>/ig, "");

    // Return a reference to the first child
    return el.firstChild;
};

YAHOO.namespace("example.calendar");
YAHOO.example.calendar.init = function() {
	
	//this implements select functionality to 
	//show comments when a "special" date is selected
	var selectHandler = function(type, args, obj)
	{

		var selected = args[0][0]
		

		var day = selected[2].toString();
		
		if (day.length < 2)
		{
			day = "0" + day
		}

		var month = selected[1].toString();
		if (month.length < 2)
		{
			month = "0" + month
		}

		
		var datestring = day+'/'+month+'/'+selected[0]

		var date = dates[datestring]
		
    var hash = date['hash'];
    var comment = comments[hash];

		var canvas = document.getElementById("comment_text")
    

    
		if(date)
		{
			if (date['display'] == 'special' || date['display'] == 'free')
			{ 

			  if(comment != null) {
				    YAHOO.util.Dom.setInnerHTML(canvas, comment)
			  } else {
            YAHOO.util.Dom.setInnerHTML(canvas, 'frei')
        }
      }
			else if (date['display'] == 'taken')
			{
				YAHOO.util.Dom.setInnerHTML(canvas, 'belegt')
			}
			else if (date['display'] == 'start')
			{
				YAHOO.util.Dom.setInnerHTML(canvas, 'Anfahrtstag')
			}
			else if (date['display'] == 'end')
			{
				YAHOO.util.Dom.setInnerHTML(canvas, 'Abfahrtstag')
			}
  } else {
    // Datum == nicht bearbeitet
     YAHOO.util.Dom.setInnerHTML(canvas, '&nbsp;')
  }
}
	//this implements all needed functionality to style fields according to their state.
	function newStyleCellDefault(workingDate, cell) {
		YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_SELECTABLE);
		var day = workingDate.getDate().toString();

		if (day.length < 2)
		{
			day = "0" + day
		}
		
		var month = (workingDate.getMonth()+1).toString();
		if (month.length < 2)
		{
			month = "0" + month
		}
		
		var datestring = 				day+'/'+month+'/'+workingDate.getFullYear() 
		var date = dates[datestring]
		
		if(date)
		{
			YAHOO.util.Dom.addClass(cell, date['display']);
		}
	}
	
	YAHOO.example.calendar.cal1 = new YAHOO.widget.CalendarGroup("cal1","cal1Container", 
																{ LOCALE_WEEKDAYS:"short", 
																  START_WEEKDAY: 1,
																  MULTI_SELECT: false,
navigator: navConfig,
PAGES: 3
																 } );

	// Correct formats for Germany: dd.mm.yyyy, dd.mm, mm.yyyy

	YAHOO.example.calendar.cal1.cfg.setProperty("DATE_FIELD_DELIMITER", ".");

	YAHOO.example.calendar.cal1.cfg.setProperty("MDY_DAY_POSITION", 1);
	YAHOO.example.calendar.cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
	YAHOO.example.calendar.cal1.cfg.setProperty("MDY_YEAR_POSITION", 3);

	YAHOO.example.calendar.cal1.cfg.setProperty("MD_DAY_POSITION", 1);
	YAHOO.example.calendar.cal1.cfg.setProperty("MD_MONTH_POSITION", 2);
	
	// Date labels for German locale

	YAHOO.example.calendar.cal1.cfg.setProperty("MONTHS_SHORT",   ["Jan", "Feb", "M\u00E4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]);
	YAHOO.example.calendar.cal1.cfg.setProperty("MONTHS_LONG",    ["Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]);
	YAHOO.example.calendar.cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["S", "M", "D", "M", "D", "F", "S"]);
	YAHOO.example.calendar.cal1.cfg.setProperty("WEEKDAYS_SHORT", ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]);
	YAHOO.example.calendar.cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"]);
	YAHOO.example.calendar.cal1.cfg.setProperty("WEEKDAYS_LONG",  ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]);

	//YAHOO.example.calendar.cal1.select("1.10.2006-8.10.2006");
	//YAHOO.example.calendar.cal1.cfg.setProperty("PAGEDATE", currentMonth+'.'+currentYear);

	YAHOO.example.calendar.cal1.styleCellDefault = newStyleCellDefault;

	YAHOO.example.calendar.cal1.selectEvent.subscribe(selectHandler, YAHOO.example.calendar.cal1, true)			
	YAHOO.example.calendar.cal1.render();
	
}

YAHOO.util.Event.onDOMReady(YAHOO.example.calendar.init);
