function selectCityType(it_ddlClientID, ot_ddlClientID, it_rbClientID, ot_rbClientID, cityType, showCommonCities, co_rblClientID)
{
    try
    {
        if (cityType == "IT")
        {
            document.getElementById(ot_ddlClientID).disabled = true;
	        document.getElementById(it_ddlClientID).disabled = false;
	        
	        if (showCommonCities)
	        {
	            try
	            {
	                document.getElementById(co_rblClientID + "_0").checked = true;
	                document.getElementById(co_rblClientID + "_0").checked = false;
	            }
	            catch(e){}
	            
	        }
        }
        else if (cityType == "OT")
        {
            document.getElementById(ot_ddlClientID).disabled = false;
	        document.getElementById(it_ddlClientID).disabled = true;
	        
	        if (showCommonCities)
	        {
	            try
	            {
	                document.getElementById(co_rblClientID + "_0").checked = true;
	                document.getElementById(co_rblClientID + "_0").checked = false;
	            }
	            catch(e){}
	        }
        }
        else if (cityType == "CO")
        {
            //disable ddl
            document.getElementById(it_ddlClientID).disabled = true;
            document.getElementById(ot_ddlClientID).disabled = true;
	        //uncheck rb
	        document.getElementById(it_rbClientID).checked = false;
	        document.getElementById(ot_rbClientID).checked = false;
	        
	        
        }
	}
    catch (e)
    {
    } 		    
}


function showRooms(ddl_SelectCameraNumber, div_ClientID )
{
    var j;
    for (j=0;j<4;j++)
    {
        if (j<ddl_SelectCameraNumber.value)
        {
            document.getElementById(div_ClientID + j).style.display = 'block';
            //sistemaCamera(j);
        }
        else
        {
            document.getElementById(div_ClientID + j).style.display = 'none';
        }
        
    }
}


function sistemaCamera(ddl_Adult_CID, ddl_Child_CID, ddl_Infant_CID, div_ChildAge_CID, ddl_RoomType_CID)
{
    var lst = null;
    lst = document.getElementById(ddl_Adult_CID);
    var adulti = parseInt(lst.options[lst.selectedIndex].value);
    lst = document.getElementById(ddl_Child_CID);
    var bambini = parseInt(lst.options[lst.selectedIndex].value);
    lst = document.getElementById(ddl_Infant_CID);
    var infanti = parseInt(lst.options[lst.selectedIndex].value);
    //
    var abi = "["+adulti+","+bambini+","+infanti+"]";
    //alert (abi);
    // cerco nel mio array delle tipologie di camere
    var i;
    var found = null;
    for (i=0;i<CamereArray.length;i++)
    {
        //alert(CamereArray[i][0]);
        if (CamereArray[i][0]==abi && CamereArray[i][1]!=null)
            found = CamereArray[i];
    }
    if (found==null || found.length<2)
    {
        //document.forms['search'].elements["roomType"+camera].options.length=0; 
        document.getElementById(ddl_RoomType_CID).options.length=0; 
        document.getElementById(ddl_RoomType_CID).style.display = 'none';
    }
    else
    {
        document.getElementById(ddl_RoomType_CID).style.display = 'block';
        //document.forms['search'].elements["roomType"+camera].options.length=found.length-1;
        document.getElementById(ddl_RoomType_CID).options.length=found.length-1;
        
        
        var j=0;
        for (j=1;j<found.length;j++)
        {
            // alert(found[j][0]);
            //document.forms['search'].elements["roomType"+camera].options[j-1]=new Option(found[j][1],found[j][0]); 
            document.getElementById(ddl_RoomType_CID).options[j-1]=new Option(found[j][1],found[j][0]); 
        }
    }
    // devo sistemare gli infant
    sistemaBambiniCamera(ddl_Child_CID, div_ChildAge_CID);
}

function sistemaBambiniCamera(ddl_Child_CID, div_ChildAge_CID)
{

    var lst = document.getElementById(ddl_Child_CID);
    var bambini = parseInt(lst.options[lst.selectedIndex].value);
    
    
    //
    var j=0;
    for(j=1; j <= 2; j++) {
        //if (bambini>0)
        if (j <= bambini)
        {
             document.getElementById(div_ChildAge_CID+j).style.display = 'block';
        }
        
        else
             document.getElementById(div_ChildAge_CID+j).style.display = 'none';
    }
}

function RecuperaCittaDestinazione(ot_ddlClientID,it_ddlClientID, commonCityVisible, rbl_HotelCommonCities, 
            numCommonCities, ddlPrDestinationClientID,searchType)
{
    var citydest = "Undefined";
    
    // da implementare la gestione H o Pacchetto
    
    switch(searchType)
    {
        case "H":
            {
                var ddlOther = document.getElementById(ot_ddlClientID);
                var ddlIt = document.getElementById(it_ddlClientID);
                
                if(ddlOther!=null && ddlOther.disabled == false)
                {
                    citydest = ddlOther.options[ddlOther.selectedIndex].text;
                }
                else if(ddlIt != null && ddlIt.disabled == false)
                {
                    citydest = ddlIt.options[ddlIt.selectedIndex].text;
                }
                else if(commonCityVisible)
                {
                    citydest = RecuperaSelezioneDaGruppoRadioButton(rbl_HotelCommonCities, numCommonCities);
                }
                else
                {
                    var ddlprDest = document.getElementById(ddlPrDestinationClientID);
                    if(ddlprDest!= null)
                    {
                        citydest = ddlprDest.options[ddlprDest.selectedIndex].text;
                    }
                    else
                    {
                        citydest = "Undefined";
                    }
                }
            }
            break;
            
//        case "FH":
//            {
                  pnl_PackageRoutes
//                citydest="FH";
//            }
//            break;
//            
        case"FHC":
            {
                citydest="FHC";
                
            }
            break;
            
        default:
            {
                citydest: " tipo ricerca sconosciuto";
            }
   
    }
    
	return citydest;
}

function RecuperaSelezioneDaGruppoRadioButton(idGruppo, numItem)
{
    var scelta="";
    var gruppoRbs = document.getElementById(idGruppo);
    var len = numItem;
    
    for (i = 0; i < len; i++) 
    {
        var nomeItem = idGruppo + "_" + i.toString();
        var item = document.getElementById(nomeItem);
        
        if (item.checked) 
        {
            var lbl = item.nextSibling;
            scelta = lbl.innerHTML;
        }
    }
    
    return scelta;
}

//GORRETA 2010-08-12
function sortlist(idcontrollo) {
    var lb = document.getElementById(idcontrollo);
    arrTexts = new Array();
    arrValss = new Array();

    var selezionato = "";

    for (i = 0; i < lb.length; i++) {
        
        arrTexts[i] = lb.options[i].text;
        arrValss[lb.options[i].text] = lb.options[i].value;

        if (lb.options[i].selected) 
        {
            selezionato = lb.options[i].value;
            //alert(selezionato);
        }
    }

    arrTexts.sort();

    for (i = 0; i < lb.length; i++) {
        lb.options[i].selected = false;
        lb.options[i].text = arrTexts[i];
        lb.options[i].value = arrValss[arrTexts[i]];
        if (lb.options[i].value == selezionato)
            lb.options[i].selected = true;
    }
}
//GORRETA 2010-08-12

//il terzo parametro è sempre vuoto, quando serve?
function ChangePackageRoutesReturn(dep_ddlClientID, arr_ddlClientID, selectedArrival, hiddenReturnRouteField)
{
	var outboundIndex = document.getElementById(dep_ddlClientID).options.selectedIndex;					
	document.getElementById(arr_ddlClientID).options.length=1;
	
	for (i = 0; i < ODArray[outboundIndex].length-1; i++)
	{
		document.getElementById(arr_ddlClientID).options[i] =  new Option(ODArray[outboundIndex][i+1][1], ODArray[outboundIndex][i+1][0]);
		
		if (ODArray[outboundIndex][i+1][0] == selectedArrival)
		{
			document.getElementById(arr_ddlClientID).options[i].selected='true';
		}
	}

    //GORRETA 2010-08-12
	sortlist(arr_ddlClientID);
	//GORRETA 2010-08-12
	
	GetPackageRoutesReturnCode(arr_ddlClientID, hiddenReturnRouteField);
}

function GetPackageRoutesReturnCode(ddlReturnRoutePackage, hiddenReturnRouteField)
{
    document.getElementById(hiddenReturnRouteField).value = document.getElementById(ddlReturnRoutePackage).options[document.getElementById(ddlReturnRoutePackage).selectedIndex].value;
}


function changeTipoPacchetto(tipo, DriverAge_pnlClientID, HotelRooms_pnlClientID) //, rbPackageTypeClientId, numRb)
{
    //var rbList = document.getElementById(rbPackageTypeClientId);
    
    if (tipo == "FH")
    {
        //SelezionaRb(rbList,numRb,"FH");
        document.getElementById(DriverAge_pnlClientID).style.display='none';
        document.getElementById(HotelRooms_pnlClientID).style.display = 'block';
        //document.getElementById(DriverAge_pnlClientID).style.visibility='hidden';
        //document.getElementById(HotelRooms_pnlClientID).style.visibility = 'visible';
        
    }
    else if (tipo == "FC")
    {
        //SelezionaRb(rbList,numRb,"FC");
        document.getElementById(DriverAge_pnlClientID).style.display = 'block';
        document.getElementById(HotelRooms_pnlClientID).style.display = 'none';
        //document.getElementById(DriverAge_pnlClientID).style.visibility = 'visible';
        //document.getElementById(HotelRooms_pnlClientID).style.visibility = 'hidden';
    }
    else if (tipo == "FHC")
    {
         //SelezionaRb(rbList,numRb,"FHC");
        document.getElementById(DriverAge_pnlClientID).style.display = 'block';
        document.getElementById(HotelRooms_pnlClientID).style.display = 'block';
        //document.getElementById(DriverAge_pnlClientID).style.visibility = 'visible';
        //document.getElementById(HotelRooms_pnlClientID).style.visibility = 'visible';
    }
    else if (tipo=="H")
    {
    }
}
    
//function SelezionaRb(rbListId, numRb, valore)
//{
//    for (i = 0; i < numRb; i++) 
//    {
//        var nomeItem = idGruppo + "_" + i.toString();
//        var item = document.getElementById(nomeItem);
//        
//        item.checked = false;
//        
//        if(item.value = valore)
//        {
//            item.checked = true;
//        }
//    }
//}

function VoloSoloAndata(rbSoloAndataClientID)
{
    var rb = document.getElementById(rbSoloAndataClientID);
    
    var tbRitorno = document.getElementById('divDataRitorno');
    var oraRitorno = document.getElementById('divOraRitorno');
    
    if(rb.checked)
    {
        tbRitorno.style.display = 'none';
        if(oraRitorno != null)
            oraRitorno.style.display = 'none';
    }
    else
    {
        tbRitorno.style.display = 'block';
        if(oraRitorno != null)
            oraRitorno.style.display = 'block';
    }
}



//#################################################
//   funzioni javascript per l'autocompletamento
//#################################################

    var _block=false;
    
    function AutoCompleteSearch_SelectedDep(source,eventArgs) 
    {   _block=true;
        GetDepHiddenElement().value=eventArgs.get_value();
        //document.getElementById('txt_tbDepAerport').value=eventArgs.get_value();
    }
    
    function AutoCompleteSearch_SelectedRet(source,eventArgs)
    {   _block=true;
        GetRetHiddenElement().value = eventArgs.get_value();
        //document.getElementById('txt_tbRetAerport').value = eventArgs.get_value();
    }
    
    //Fix to set the height of the iframe in IE6
    iefix=navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;

    function unsetBlock(e) {
            var keynum;
            if(window.event) // IE
            {
              keynum = e.keyCode;
            }
            else if(e.which) // Netscape/Firefox/Opera
            {
                keynum = e.which;
            }
            if(keynum!=9 && keynum!=13) {
                _block=false        //rimuove il blocco solo se premuti tasti diversi da tab e enter
            }
        }
            
    function AutoCompleteSearch_Show(sender,args)
    {
        document.getElementById("AutoCompleteDep_completionListElem").style.width = '240px';
        document.getElementById("AutoCompleteRet_completionListElem").style.width = '240px';
            
        if(!iefix)return    //solo ie6 - crea iframe overlay select
        var oList = sender.get_completionList();
        var oSpan = oList.parentNode;
        var ifr = getChildObj(oSpan,"IFRAME");
        if(ifr)
            oSpan.removeChild(ifr);
        ifr=document.createElement("IFRAME");
        oSpan.appendChild(ifr);
        ifr.style.display="block";
        ifr.style.position="absolute";
        ifr.style.width = oList.style.width;
        ifr.style.height = oList.offsetHeight;
        ifr.style.left=oList.style.left;
        ifr.style.top=oList.style.top;
    }
    
    function AutoCompleteSearch_Hide(sender,args)
    {
        if(!iefix)return    //solo ie6
        var oList = sender.get_completionList();
        var oSpan = oList.parentNode;
        var ifr = getChildObj(oSpan,"IFRAME");
        if(ifr)
            oSpan.removeChild(ifr);
    }
    
    function OnChanged(sender,hiddenfield)
    {
        if(!_block) 
        {
            fhid=document.getElementById(hiddenfield);
            fhid.value =sender.value;
        }
         _block=false;
    }
    
    function getChildObj(oCont,tag) 
    {
        for(var i = 0; i < oCont.childNodes.length; i++)    
        {           
            if(oCont.childNodes[i].tagName == tag)
                return oCont.childNodes[i];
        }
        return false;
    }

    
    //FUNZIONI DI VALIDAZIONE LATO CLIENT
    function ClientSearchValidation(searchType, rbl_PackageTypeSelector_ClientID, txt_DepartureDate_ClientID, txt_ReturnDate_ClientID, rb_AndataRitorno_ClientID, ddl_RoomsNumber_ClientID, ddl_numberAdult_ClientID, ddl_numberChild_ClientID, ddl_numberInfant_ClientID, camera1_DDLAdult_ClientID, camera1_DDLChild_ClientID, camera1_DDLInfant_ClientID,  camera2_DDLAdult_ClientID, camera2_DDLChild_ClientID, camera2_DDLInfant_ClientID,  camera3_DDLAdult_ClientID, camera3_DDLChild_ClientID, camera3_DDLInfant_ClientID,  camera4_DDLAdult_ClientID, camera4_DDLChild_ClientID, camera4_DDLInfant_ClientID) {

        document.getElementById("div_ClientSearchErrorList_Top").style.display = 'none';

        var ritorno = true;
        var departDate = document.getElementById(txt_DepartureDate_ClientID).value;  //
        var returnDate = document.getElementById(txt_ReturnDate_ClientID).value; //
        var isAR = true; //


        if (searchType == "F") {
            var rb_AR = document.getElementById(rb_AndataRitorno_ClientID);

            if (rb_AR.checked) {
                isAR = true;
            }
            else {
                isAR = false;
            }
        }

        errorList = new Array();


        // campo data partenza valorizzato
        if (departDate.length == 0) {
            errorList[errorList.length] = errorArray['search.form.error.CAMPO_NULLO'] + " " + errorArray['booking.form.HOTEL_DATA_DA'];
            ritorno = false;
        }
        //
        if (isAR) {
            //campo data ritorno valorizzato
            if (returnDate.length == 0) {
                errorList[errorList.length] = errorArray['search.form.error.CAMPO_NULLO'] + " " + errorArray['booking.form.HOTEL_DATA_A']; 
                ritorno = false;
            }
        }


        dtNow = new Date();
        
        splitDataPartenza = departDate.split("/");
        var objDataPartenza = new Date(splitDataPartenza[2], parseInt(splitDataPartenza[1], 10) - 1, splitDataPartenza[0], dtNow.getHours(), dtNow.getMinutes(), (dtNow.getSeconds() + 5));

        splitDataRitorno = returnDate.split("/");
        var objDataRitorno = new Date(splitDataRitorno[2], parseInt(splitDataRitorno[1], 10) - 1, splitDataRitorno[0], dtNow.getHours(), dtNow.getMinutes(), (dtNow.getSeconds() + 5));

        
        var validDate = 0;
        

        if (departDate.length > 0) {

            
            //campo data partenza non valida come formato gg/MM/yyyy
            if (!IsDate(splitDataPartenza[0] + "/" + splitDataPartenza[1] + "/" + splitDataPartenza[2])) {
                errorList[errorList.length] = errorArray['search.form.error.DATA_ERRATA'] + " " + errorArray['search.form.DATA_PARTENZA'];
                ritorno = false;

            }
            else {
                //campo data partenza precedente a oggi
                if (objDataPartenza < dtNow) {
                    errorList[errorList.length] = errorArray['search.form.error.DATA_ERRATA2'];
                    ritorno = false;
                }
                else {
                    validDate++;
                }
            }

        }


        if (isAR) {
            if (returnDate.length > 0) {

                
                //campo data ritorno non valida come formato gg/MM/yyyy
                if (!IsDate(splitDataRitorno[0] + "/" + splitDataRitorno[1] + "/" + splitDataRitorno[2])) {
                    errorList[errorList.length] = errorArray['search.form.error.DATA_ERRATA'] + " " + errorArray['search.form.DATA_RITORNO'];
                    ritorno = false;

                }
                else {
                    //campo data ritorno precedente a oggi
                    if (objDataRitorno < dtNow) {
                        errorList[errorList.length] = errorArray['search.form.error.DATA_ERRATA2'];
                        ritorno = false;
                    }
                    else {
                        validDate++;
                    }
                }

            }
        }

        //se le due date sono valide verifica che data ritorno sia successiva a data partenza
        if (validDate == 2) {
            if (objDataPartenza > objDataRitorno) {
                errorList[errorList.length] = errorArray['search.form.error.DATE_PARTENZA_RITORNO_ERR'];
                ritorno = false;
            }
        }


        
       
       //PACCEHTTO: totale componenti camere = componenti volo, per ADT, CHD, INF
        //ddl_RoomsNumber_ClientID, ddl_numberAdult_ClientID, ddl_numberChild_ClientID, ddl_numberInfant_ClientID,
        //camera1_DDLAdult_ClientID, camera1_DDLChild_ClientID, camera1_DDLInfant_ClientID,
        //camera2_DDLAdult_ClientID, camera2_DDLChild_ClientID, camera2_DDLInfant_ClientID,
        //camera3_DDLAdult_ClientID, camera3_DDLChild_ClientID, camera3_DDLInfant_ClientID,
        //camera4_DDLAdult_ClientID, camera4_DDLChild_ClientID, camera4_DDLInfant_ClientID
        if (searchType == "FH" || searchType == "FHC" || searchType == "FC") {
        
            //verifica lo stato lato client del selettore del tipo di pacchetto, quindi procede
            //solo per FH o FHC
            var clientSearchType = "FH";
            for(i=0;i<document.getElementById(rbl_PackageTypeSelector_ClientID).getElementsByTagName('input').length;i++)
            {
                var el = document.getElementById(rbl_PackageTypeSelector_ClientID).getElementsByTagName('input')[i];
                
                if (el.type=="radio" && el.checked)
                {
                    clientSearchType = el.value;
                }
            }
            
            if (clientSearchType == "FH" || clientSearchType == "FHC")
            {
        
                var selectedRooms = document.getElementById(ddl_RoomsNumber_ClientID).value;

                var adultsInPackage = parseInt(document.getElementById(ddl_numberAdult_ClientID).value);
                var childsInPackage = parseInt(document.getElementById(ddl_numberChild_ClientID).value);
                var infantsInPackage = parseInt(document.getElementById(ddl_numberInfant_ClientID).value);
                
                var totalAdultsInRooms = 0;
                var totalChildsInRooms = 0;
                var totalInfantInRooms = 0;

                for (ii = 0; ii < selectedRooms; ii++) {
                    switch (ii) {
                        case 0:
                            {
                                totalAdultsInRooms += parseInt(document.getElementById(camera1_DDLAdult_ClientID).value);
                                totalChildsInRooms += parseInt(document.getElementById(camera1_DDLChild_ClientID).value);
                                totalInfantInRooms += parseInt(document.getElementById(camera1_DDLInfant_ClientID).value);
                            }
                            break;
                        case 1:
                            {
                                totalAdultsInRooms += parseInt(document.getElementById(camera2_DDLAdult_ClientID).value);
                                totalChildsInRooms += parseInt(document.getElementById(camera2_DDLChild_ClientID).value);
                                totalInfantInRooms += parseInt(document.getElementById(camera2_DDLInfant_ClientID).value);
                            }
                            break;
                        case 2:
                            {
                                totalAdultsInRooms += parseInt(document.getElementById(camera3_DDLAdult_ClientID).value);
                                totalChildsInRooms += parseInt(document.getElementById(camera3_DDLChild_ClientID).value);
                                totalInfantInRooms += parseInt(document.getElementById(camera3_DDLInfant_ClientID).value);
                            }
                            break;
                        case 3:
                            {
                                totalAdultsInRooms += parseInt(document.getElementById(camera4_DDLAdult_ClientID).value);
                                totalChildsInRooms += parseInt(document.getElementById(camera4_DDLChild_ClientID).value);
                                totalInfantInRooms += parseInt(document.getElementById(camera4_DDLInfant_ClientID).value);
                            }
                            break;
                            
                    
                     }

                 }

                 if (adultsInPackage != totalAdultsInRooms || childsInPackage != totalChildsInRooms || infantsInPackage != totalInfantInRooms) {
                     errorList[errorList.length] = errorArray['search.form.error.CAMERE_ERRATE'];
                     ritorno = false;
                     
                 }
             }
         }

        if (ritorno == false) {
            ClientPrintErrorList(errorList);
        }



        return ritorno;
    }


    function ClientPrintErrorList(errorList) {
        document.getElementById("div_ClientSearchErrorList_Top").style.display = 'block';

        htmlErrorList = "";
        
        for (indice in errorList) {
            htmlErrorList += "<li style='color: red'>" + errorList[indice] + "</li>";
         }

         document.getElementById("div_ClientErrorList_html").innerHTML = htmlErrorList;
     }

     function IsDate(dtStr) {
         var dtCh = "/";
         var minYear = 1900;
         var maxYear = 2100;
         var daysInMonth = DaysArray(12)
         var pos1 = dtStr.indexOf(dtCh)
         var pos2 = dtStr.indexOf(dtCh, pos1 + 1)

         var strDay = dtStr.substring(0, pos1)
         var strMonth = dtStr.substring(pos1 + 1, pos2)
         var strYear = dtStr.substring(pos2 + 1)

         if (strDay.length != 2 || strMonth.length != 2 || strYear.length != 4) {
             return false;
          }
         
         strYr = strYear
         if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)
         if (strMonth.charAt(0) == "0" && strMonth.length > 1)
             strMonth = strMonth.substring(1)
         for (var i = 1; i <= 3; i++) {
             if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1)
         }
         month = parseInt(strMonth, 10)
         day = parseInt(strDay, 10)
         year = parseInt(strYr, 10)
         if (pos1 == -1 || pos2 == -1) {
             //alert("The date format should be : mm/dd/yyyy")
             return false
         }
         if (strMonth.length < 1 || month < 1 || month > 12) {
             //alert("Please enter a valid month")
             return false
         }
         if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
             //alert("Please enter a valid day")
             return false
         }
         if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
             //alert("Please enter a valid 4 digit year between "+minYear+"and "+maxYear)
             return false
         }
         if (dtStr.indexOf(dtCh, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
             //alert("Please enter a valid date")
             return false
         }
         return true
     }

     function isInteger(s) {
         var i;
         for (i = 0; i < s.length; i++) {
             // Check that current character is number.
             var c = s.charAt(i);
             if (((c < "0") || (c > "9"))) return false;
         }
         // All characters are numbers.
         return true;
     }

     function stripCharsInBag(s, bag) {
         var i;
         var returnString = "";
         // Search through string's characters one by one.
         // If character is not in bag, append to returnString.
         for (i = 0; i < s.length; i++) {
             var c = s.charAt(i);
             if (bag.indexOf(c) == -1) returnString += c;
         }
         return returnString;
     }
     

     function daysInFebruary(year) {
         // February has 29 days in any year evenly divisible by four,
         // EXCEPT for centurial years which are not also divisible by 400.
         return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
     }

     function DaysArray(n) {
         for (var i = 1; i <= n; i++) {
             this[i] = 31
             if (i == 4 || i == 6 || i == 9 || i == 11) { this[i] = 30 }
             if (i == 2) { this[i] = 29 }
         }
         return this
     }
   
   
