YAHOO.namespace("myCal");

YAHOO.myCal.init = function() {

	// Primo calendario
	YAHOO.myCal.cal1 = new YAHOO.widget.Calendar("cal1","cal1Container",
								                                        { LOCALE_WEEKDAYS:"short",
								                                          MULTI_SELECT: false,
								                                          IFRAME: false,
								                                          CLOSE:true
		                                     									} );		
                                       									
    //YAHOO.myCal.cal1.cfg.setProperty("MONTHS_SHORT",   ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"]);
    //YAHOO.myCal.cal1.cfg.setProperty("WEEKDAYS_1CHAR", ["D", "L", "M", "M", "G", "V", "S"]);
    //YAHOO.myCal.cal1.cfg.setProperty("WEEKDAYS_MEDIUM",["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"]);
    //YAHOO.myCal.cal1.cfg.setProperty("WEEKDAYS_LONG",  ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"]);

	setLingua(YAHOO.myCal.cal1);
	
	// Secondo calendario
	YAHOO.myCal.cal2 = new YAHOO.widget.Calendar("cal2","cal2Container",
								                                        { LOCALE_WEEKDAYS:"short",
								                                          START_WEEKDAY: 1,
								                                          MULTI_SELECT: false,
								                                          IFRAME: false,
								                                          CLOSE:true
		                                     									} );		
                                       									
	YAHOO.myCal.cal2.cfg.setProperty("DATE_FIELD_DELIMITER", "-");

    YAHOO.myCal.cal2.cfg.setProperty("MDY_DAY_POSITION", 1);
    YAHOO.myCal.cal2.cfg.setProperty("MDY_MONTH_POSITION", 2);
    YAHOO.myCal.cal2.cfg.setProperty("MDY_YEAR_POSITION", 3);

    YAHOO.myCal.cal2.cfg.setProperty("MD_DAY_POSITION", 1);
    YAHOO.myCal.cal2.cfg.setProperty("MD_MONTH_POSITION", 2);
   
    setLingua(YAHOO.myCal.cal2);
    
   // Aggiunta evento selezione data
    YAHOO.myCal.cal1.selectEvent.subscribe(handleSelect, YAHOO.myCal.cal1, true);
    YAHOO.myCal.cal2.selectEvent.subscribe(handleSelect, YAHOO.myCal.cal2, true);

	// Aggiunta evento apertura su pressione bottone
    YAHOO.util.Event.addListener("show2up1", "click", YAHOO.myCal.cal1.show, YAHOO.myCal.cal1, true);                                                									       
    YAHOO.util.Event.addListener("show2up2", "click", YAHOO.myCal.cal2.show, YAHOO.myCal.cal2, true);                                                									
    
    // Rendering dei calendari
	YAHOO.myCal.cal1.render();
	YAHOO.myCal.cal2.render();
}

YAHOO.util.Event.onDOMReady(YAHOO.myCal.init);
	
function handleSelect(type,args,obj) {
	var dates = args[0];
	var date = dates[0];
	var year = date[0], month = date[1], day = date[2];
	var txtDate;
	var delim = obj.cfg.getProperty("DATE_FIELD_DELIMITER");
	var chk;
	chk = document.getElementById("dateSelezionate");
	chk.checked = true;
	
	if(obj.id == "cal1")
	{
		txtDate = document.getElementById("periodoDal");
	}
	else
	{
		txtDate = document.getElementById("periodoAl");
	}
			
	if(delim == "/"){		
		txtDate.value = month + delim + day + delim + year;
	} else {
		txtDate.value = day + delim + month + delim + year;	
	}

	if(obj.id == "cal1")
	{
		document.getElementById("periodoAl").value = txtDate.value;
	} 
	else 
	{
		var selectedDateFrom = document.getElementById("periodoDal").value;

		if(DataIsSuccessiva(selectedDateFrom, txtDate.value, delim))
		{		
			document.getElementById("periodoDal").value = txtDate.value;
		}
	}
	
	obj.hide();
}

function DataIsSuccessiva(dataFrom, dataTo, delimiter)
{

	var from = ValoreToDate(dataFrom, delimiter);
	var to = ValoreToDate(dataTo, delimiter);
	
	return (from > to);
}

function ValoreToDate(data, delimiter)
{
	var result = null;
	var ValidChars = "0123456789";
	
	if(data.length < 8)
	{
		return result;
	}

	var chunk = data.split(delimiter);
	
	if(chunk.length != 3)
	{
		return result;
	}
						
	var day = null;
	var month = null;
	var year = null;
	
	if(delimiter == "/")
	{
		month = parseInt(chunk[0],10);
		day = parseInt(chunk[1],10);
	} else {
		day = parseInt(chunk[0],10);
		month = parseInt(chunk[1],10);	
	}
		
   	year = parseInt(chunk[2],10);

	if(isNaN(day)
	|| day == 0
	|| isNaN(month)
	|| month == 0
	|| isNaN(year)
	|| year == 0)
	{
		return result;
	}		
	
   	result = new Date(year, month, day); 
   	
   	return result;
}