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;
};



	function numericDate(day,month,year) {
		if(day<10) day = "0" + day;
		if(month<10) month= "0" + month;
	
		return year+""+month+''+day;			
	}
	
var navConfig = {
	strings: {
		month: "Monat",
		year:  "Jahr",
		submit: "Wählen",
		cancel: "Abbrechen",
		invalidYear: "Bitte wählen sie ein korrektes Jahr"
	}
}
	
	var global_start = "";
	var global_stop = "";

	
	YAHOO.namespace("example.calendar");
	YAHOO.example.calendar.init = function() {
	
		var currentDate = new Date();
		var currentYear = currentDate.getFullYear();
		var currentMonth = currentDate.getMonth();
		var currentDay = currentDate.getDay();
//		alert(currentDay);
//		alert(currentMonth+'.'+currentYear);
		

		function backupSelectedDates() {
			global_start = YAHOO.example.calendar.cal1.getSelectedDates();
			global_stop = YAHOO.example.calendar.cal2.getSelectedDates();
		}

		function handleSelect(type,args,obj) {
			var dates = args[0];
			var date = dates[0];
			var year = date[0], month = date[1], day = date[2];

			var selMonth = document.getElementById("selMonth");
			var selDay = document.getElementById("selDay");
			var selYear = document.getElementById("selYear");

			selMonth.selectedIndex = month;
			selDay.selectedIndex = day;

			for (var y=0;y<selYear.options.length;y++) {
				if (selYear.options[y].text == year) {
					selYear.selectedIndex = y;
					break;
				}
			}
		}

		function handleSelect2(type,args,obj) {
			var dates = args[0];
			var date = dates[0];
			var year = date[0], month = date[1], day = date[2];

			var selMonth = document.getElementById("selMonth2");
			var selDay = document.getElementById("selDay2");
			var selYear = document.getElementById("selYear2");

			selMonth.selectedIndex = month;
			selDay.selectedIndex = day;

			for (var y=0;y<selYear.options.length;y++) {
				if (selYear.options[y].text == year) {
					selYear.selectedIndex = y;
					break;
				}
			}
		}
		
		//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']);
		    }
		}
		
var calConfig = 																	{ LOCALE_WEEKDAYS:"short", 
																	  START_WEEKDAY: 1,
																	  MULTI_SELECT: false,
navigator: navConfig
																	 };
																	 
		if(startMonth != 'null')
		{
			calConfig.pageDate = startMonth;
		}
																	 
		YAHOO.example.calendar.cal1 = new YAHOO.widget.Calendar("cal1","cal1Container", calConfig);

		// 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.render();

		YAHOO.example.calendar.cal2 = new YAHOO.widget.Calendar("cal2","cal2Container", calConfig);

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

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

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

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

		//YAHOO.example.calendar.cal2.select("1.10.2006-8.10.2006");
		//YAHOO.example.calendar.cal2.cfg.setProperty("PAGEDATE", currentDay+7+'.'+currentMonth+'.2008');
		YAHOO.example.calendar.cal2.styleCellDefault = newStyleCellDefault;

		YAHOO.example.calendar.cal2.render();
		
		function mySelect1(type,args,obj,args1,args2) {
			document.getElementById("selectionError").style.display = 'none'; 
      
			// getDate from first Cal
			var dates = args[0];
			var date = dates[0];
			var year = date[0], month = date[1], day = date[2];
			var date_start_numeric = numericDate(day,month,year);

			
			/*
			alert("CAL1: FIRST");
			alert(args);
			*/
			date_stop_mumeric = false
			
					
			// getDate from second Cal
			var cal2Date = YAHOO.example.calendar.cal2.getSelectedDates()[0];
			if (cal2Date)
			{
				var cal2Year = cal2Date.getFullYear();
				var cal2Month = cal2Date.getMonth()+1;
				var cal2Day = cal2Date.getDate();
			} else {
     		// date_start == date_stop
        var cal2Year = year;
				var cal2Month = month;
				var cal2Day = day; 
      }
			// covert an numericeDate YYYYMMDD 
      var date_stop_numeric = numericDate(cal2Day,cal2Month,cal2Year);
			
			if(!date_stop_numeric || date_start_numeric <= date_stop_numeric) {
				// prepair date for yui
				var date_start = day + "." + month + "." + year;
				var date_stop = cal2Day + "." + cal2Month + "." + cal2Year;	
        
 				// render dates to both cal
				YAHOO.example.calendar.cal1.addRenderer(date_start + "-" + date_stop, YAHOO.example.calendar.cal1.renderCellStyleSelected);
				YAHOO.example.calendar.cal2.addRenderer(date_start + "-" + date_stop, YAHOO.example.calendar.cal2.renderCellStyleSelected);
			
				YAHOO.example.calendar.cal1.render();
				YAHOO.example.calendar.cal2.render();
			
				document.settermin.zeitraum_von.value = date_start;
				if (date_stop_numeric)
				{
					document.settermin.zeitraum_bis.value = date_stop;
				}
			
				
			
			} else {
				document.getElementById("selectionError").style.display = 'block'; 
				
				YAHOO.example.calendar.cal1.select(global_start);
			}
		}
		

		function mySelect2(type,args,obj) {
			document.getElementById("selectionError").style.display = 'none'; 

			// getDate from first Cal
			var cal1Date = YAHOO.example.calendar.cal1.getSelectedDates()[0];
			var cal1Year = cal1Date.getFullYear();
			var cal1Month = cal1Date.getMonth()+1;
			var cal1Day = cal1Date.getDate();
			/*
			alert("CAL2: FIRST");
			alert(cal1Date);
			*/
			
			// getDate from second Cal
			var dates = args[0];
			var date = dates[0];
			var year = date[0], month = date[1], day = date[2];
			/*
			alert("CAL2: SECOND");
			alert(args[0]);
			*/
						
			// covert an numericeDate YYYYMMDD 
			var date_start_numeric = numericDate(cal1Day,cal1Month,cal1Year);
			var date_stop_numeric = numericDate(day,month,year);
			
			
			
			if(date_start_numeric <= date_stop_numeric) {
			// prepair date for yui
			var date_start = cal1Day + "." + cal1Month + "." + cal1Year;
			var date_stop = day + "." + month + "." + year;
			
			// render dates to both cal
			YAHOO.example.calendar.cal1.addRenderer(date_start + "-" + date_stop, YAHOO.example.calendar.cal1.renderCellStyleSelected);
			YAHOO.example.calendar.cal2.addRenderer(date_start + "-" + date_stop, YAHOO.example.calendar.cal2.renderCellStyleSelected);
			
			YAHOO.example.calendar.cal1.render();
			YAHOO.example.calendar.cal2.render();
			
			document.settermin.zeitraum_von.value = date_start;
			document.settermin.zeitraum_bis.value = date_stop;
			} else {
				document.getElementById("selectionError").style.display = 'block'; 
				
				YAHOO.example.calendar.cal2.select(global_stop);
			}
		}
		
		function updateCal1() {
			var selMonth = document.getElementById("selMonth1");
			var selYear = document.getElementById("selYear1");

			var month = parseInt(selMonth.options[selMonth.selectedIndex].value);
			var year = parseInt(selYear.options[selYear.selectedIndex].value);

			if (! isNaN(month) && ! isNaN(year)) {
				YAHOO.example.calendar.cal1.cfg.setProperty("pagedate", month + "." + year);
				YAHOO.example.calendar.cal1.render();
			}
		}

		function updateCal2() {
			var selMonth = document.getElementById("selMonth2");
			var selYear = document.getElementById("selYear2");

			var month = parseInt(selMonth.options[selMonth.selectedIndex].value);
			var year = parseInt(selYear.options[selYear.selectedIndex].value);

			if (! isNaN(month) && ! isNaN(year)) {
				YAHOO.example.calendar.cal2.cfg.setProperty("pagedate", month + "." + year);
				YAHOO.example.calendar.cal2.render();
			}
		}
		
		function updateDropdown1() {
			//alert("UpdateDrop");
			var currentCalDate = YAHOO.example.calendar.cal1.cfg.getProperty("pagedate");
			var currentCalYear = currentCalDate.getFullYear();
			var currentCalMonth = currentCalDate.getMonth()+1;
		
			var currentDate = new Date();
			var currentYear = currentCalYear - currentDate.getFullYear() + 1;
	
			var selMonth = document.getElementById("selMonth1");
			var selYear = document.getElementById("selYear1");
		
			selMonth.options[currentCalMonth].selected = true;
			selYear.options[currentYear].selected = true;
		}
		
		function updateDropdown2() {
			//alert("UpdateDrop");
			var currentCalDate = YAHOO.example.calendar.cal2.cfg.getProperty("pagedate");
			var currentCalYear = currentCalDate.getFullYear();
			var currentCalMonth = currentCalDate.getMonth()+1;
		
			var currentDate = new Date();
			var currentYear = currentCalYear - currentDate.getFullYear() + 1;
	
			var selMonth = document.getElementById("selMonth2");
			var selYear = document.getElementById("selYear2");
		
			selMonth.options[currentCalMonth].selected = true;
			selYear.options[currentYear].selected = true;
		}
		
		// Backup SelectedDates
		YAHOO.example.calendar.cal1.beforeDeselectEvent.subscribe(backupSelectedDates, YAHOO.example.calendar.cal1, true);
		YAHOO.example.calendar.cal2.beforeDeselectEvent.subscribe(backupSelectedDates, YAHOO.example.calendar.cal2, true);
		
		// Update on EventSelect
		YAHOO.example.calendar.cal1.selectEvent.subscribe(mySelect1, YAHOO.example.calendar.cal1, true);
		YAHOO.example.calendar.cal2.selectEvent.subscribe(mySelect2, YAHOO.example.calendar.cal2, true);
	
		// Update Cals from Dropdown
		YAHOO.util.Event.addListener(["selMonth1","selYear1"], "change", updateCal1); 	
		YAHOO.util.Event.addListener(["selMonth2","selYear2"], "change", updateCal2); 			
		
		// Update Dropdown on PageChange
		YAHOO.example.calendar.cal1.changePageEvent.subscribe(updateDropdown1, YAHOO.example.calendar.cal1, true);
		YAHOO.example.calendar.cal2.changePageEvent.subscribe(updateDropdown2, YAHOO.example.calendar.cal2, true);		
	}

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

	function CheckComment()
	{
		var select_box = document.settermin.display;
		var option = select_box.options[select_box.selectedIndex]
		
		el = document.getElementById("comment");
		
		if(option.value == "free" || option.value == "special")
		{
	      el.style.display = 'block'; 		
		}
		else
		{
	      el.style.display = 'none'; 
		}
	
	}