(function() {
    var Dom = YAHOO.util.Dom,
        Event = YAHOO.util.Event,
        cal1,
        over_cal = false,
        cur_field = '';
		
		

    var init = function() {
	var date_du_jour= new Date();
	var mois=date_du_jour.getMonth()+1;
	var jour=date_du_jour.getDate();
	var annee=date_du_jour.getFullYear ();
	var mindateCal=mois+"/"+jour+"/"+annee;
		
        cal1 = new YAHOO.widget.Calendar("cal1","cal1Container",{mindate:mindateCal, close:true});
        cal1.selectEvent.subscribe(getDate, cal1, true);
        cal1.renderEvent.subscribe(setupListeners, cal1, true);
		//Event.addListener(['show1up', 'show2up'], 'click');
        Event.addListener(['cal1Date1', 'cal1Date2'], 'focus', showCal);
        Event.addListener(['cal1Date1', 'cal1Date2'], 'blur', hideCal);
		
		if(language=='DE' || language=='a')
		{
		// Parametres Allemagne
		cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "/");
		cal1.cfg.setProperty("MDY_DAY_POSITION", 1);
		cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
		cal1.cfg.setProperty("MDY_YEAR_POSITION", 3);
		cal1.cfg.setProperty("MD_DAY_POSITION", 1);
		cal1.cfg.setProperty("MD_MONTH_POSITION", 2);

		// Date labels for German locale
		cal1.cfg.setProperty("MONTHS_SHORT",   ["Jan", "Feb", "M&#228;r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]);
		cal1.cfg.setProperty("MONTHS_LONG",    ["Januar", "Februar", "M&#228;rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]);
		cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["S", "M", "D", "M", "D", "F", "S"]);
		cal1.cfg.setProperty("WEEKDAYS_SHORT", ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]);
		cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["Son", "Mon", "Die", "Mit", "Don", "Fre", "Sam"]);
		cal1.cfg.setProperty("WEEKDAYS_LONG",  ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]);
		}
		
		if(language=='NL' || language=='h')
		{
		// Parametres Pays Bas
		cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "/");
		cal1.cfg.setProperty("MDY_DAY_POSITION", 1);
		cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
		cal1.cfg.setProperty("MDY_YEAR_POSITION", 3);
		cal1.cfg.setProperty("MD_DAY_POSITION", 1);
		cal1.cfg.setProperty("MD_MONTH_POSITION", 2);

		cal1.cfg.setProperty("MONTHS_SHORT",   ["Jan", "Feb", "Maa", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"]);
		cal1.cfg.setProperty("MONTHS_LONG",    ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"]);
		cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["Z","M","D","W","D","V","Z"]);
		cal1.cfg.setProperty("WEEKDAYS_SHORT", ["Zo","Ma","Di","Wo","Do","Vr","Za"]);
		cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["Zon", "Maa", "Din", "Woe", "Don", "Vri", "Zat"]);
		cal1.cfg.setProperty("WEEKDAYS_LONG",  ["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"]);	
		}
		
		if(language=='ES' || language=='e')
		{
		// Parametres Espagne
		cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "/");
		cal1.cfg.setProperty("MDY_DAY_POSITION", 1);
		cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
		cal1.cfg.setProperty("MDY_YEAR_POSITION", 3);
		cal1.cfg.setProperty("MD_DAY_POSITION", 1);
		cal1.cfg.setProperty("MD_MONTH_POSITION", 2);

		cal1.cfg.setProperty("MONTHS_SHORT",   ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"]);
		cal1.cfg.setProperty("MONTHS_LONG",    ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]);
		cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["D","L","M","M","J","V","S"]);
		cal1.cfg.setProperty("WEEKDAYS_SHORT", ["Do","Lu","Ma","Mi","Ju","Vi","S&#225;"]);
		cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["Dom", "Lun", "Mar", "Mi&#233;", "Jue", "Vie", "S&#225;b"]);
		cal1.cfg.setProperty("WEEKDAYS_LONG",  ["Domingo","Lunes","Martes","Mi&#233;rcoles","Jueves","Viernes","S&#225;bado"]);	
		}
		
		if(language=='EN' || language=='u')
		{
		// Parametres UK
		cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "/");
		cal1.cfg.setProperty("MDY_DAY_POSITION", 1);
		cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
		cal1.cfg.setProperty("MDY_YEAR_POSITION", 3);
		cal1.cfg.setProperty("MD_DAY_POSITION", 1);
		cal1.cfg.setProperty("MD_MONTH_POSITION", 2);

		cal1.cfg.setProperty("MONTHS_SHORT",   ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]);
		cal1.cfg.setProperty("MONTHS_LONG",    ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
		cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["S", "M", "T", "W", "T", "F", "S"]);
		cal1.cfg.setProperty("WEEKDAYS_SHORT", ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]);
		cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]);
		cal1.cfg.setProperty("WEEKDAYS_LONG",  ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]);	
		}
		if(language=='FR' || language=='f')
		{
		// Parametres France
		cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "/");
		cal1.cfg.setProperty("MDY_DAY_POSITION", 1);
		cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
		cal1.cfg.setProperty("MDY_YEAR_POSITION", 3);
		cal1.cfg.setProperty("MD_DAY_POSITION", 1);
		cal1.cfg.setProperty("MD_MONTH_POSITION", 2);

		cal1.cfg.setProperty("MONTHS_SHORT",   ["Jan", "Fev", "Mar", "Avr", "Mai", "Jui", "Jui", "Aou", "Sep", "Oct", "Nov", "Dec"]);
		cal1.cfg.setProperty("MONTHS_LONG",    ["Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "D&#233;cembre"]);
		cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["D", "L", "M", "M", "J", "V", "S"]);
		cal1.cfg.setProperty("WEEKDAYS_SHORT", ["Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"]);
		cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"]);
		cal1.cfg.setProperty("WEEKDAYS_LONG",  ["Samedi", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"]);	
		}
		
		
        cal1.render();
        //dp.SyntaxHighlighter.HighlightAll('code'); 
    }
	
    var setupListeners = function() {
        Event.addListener('cal1Container', 'mouseover', function() {
            over_cal = true;
        });
        Event.addListener('cal1Container', 'mouseout', function() {
            over_cal = false;
        });
    }

    var getDate = function() {
            var calDate = this.getSelectedDates()[0];
			var jour = calDate.getDate();
      		var mois =calDate.getMonth() + 1;
			
			if(jour<10){
			  jour="0"+jour;
			  }
			if(mois<10){
			  mois="0"+mois;
			  }
			
			
            calDate =  jour + '/' +mois+ '/' + calDate.getFullYear();
            cur_field.value = calDate;            
            over_cal = false;
            hideCal();
    }

    var showCal = function(ev) {
        var tar = Event.getTarget(ev);
        cur_field = tar;
    
        var xy = Dom.getXY(tar),
            date = Dom.get(tar).value;
        if (date) {
			var date_info = date.split('/');
	        var date_obj = new Date(parseInt(date_info[2],10),parseInt(date_info[1],10) - 1,parseInt(date_info[0],10));
            cal1.cfg.setProperty('selected',parseInt(date_info[1],10)+'/'+parseInt(date_info[0],10)+'/'+parseInt(date_info[2],10));
            cal1.cfg.setProperty('pagedate',date_obj, true);
        } else {

        }
        cal1.render();
        Dom.setStyle('cal1Container', 'display', 'block');
		xy[0] = xy[0];
        xy[1] = xy[1] + 17;
        Dom.setXY('cal1Container', xy);
    }

    var hideCal = function() {
        if (!over_cal) {
            Dom.setStyle('cal1Container', 'display', 'none');
        }
    }

    Event.addListener(window, 'load', init);

})();
