﻿        var thisDate = new Date();
        var selectedId = -1 ;
        var startPos = -1 ;
        var endPos = -1;
        var pos0 = new Date();
        var calPosX = 40 ;
        var calPosY = -2 ;
 
     
        function CheckVsDate(theDate,chkDate,chkType) {
            today = chkDate;
            
            var retVal=100 ;
            
            if(theDate.getFullYear()==today.getFullYear()) retVal=0 ;
            else if (theDate.getFullYear()<today.getFullYear()) retVal=-1 ;
            else retVal=1 ;
            if(chkType=="year") return retVal ;

            if(retVal==0&&theDate.getMonth()==today.getMonth()) retVal=0 ;
            else if (retVal<0||(retVal==0&&theDate.getMonth()<today.getMonth())) retVal=-1 ;
            else retVal=1 ;
            if (chkType == "month") return retVal;
           
            if(retVal==0&&theDate.getDate()==today.getDate()) retVal=0 ;
            else if (retVal<0||(retVal==0&&theDate.getDate()<today.getDate())) retVal=-1 ;
            else retVal=1 ;
            if(chkType=="date") return retVal ;

            return retVal ;
        }
         
        function SetDates() {
          //  alert(thisDate);
            var startDate = new Date(thisDate.getFullYear(), thisDate.getMonth(), 1);
            //alert(thisDate);
            var month = thisDate.getMonth() ;
            var year = thisDate.getFullYear() ;
            //  alert(thisDate.getFullYear());

            var mons = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec') ;

            var day = startDate.getDay(); /* day 0=Sunday */
            if (day == 0) { day = 7; }
            // alert(day);
            startDate = new Date(startDate - (1000 * 60 * 60 * 24) * (day - 1)) ;
            //alert(startDate);
            /* check vs current date */
            if (CheckVsDate(thisDate, new Date(), "month") < 1 ) {
                //alert(document.getElementById("t_b1").innerHTML);
                document.getElementById("t_b1").innerHTML = "<span id='c_b1'></span>";
                document.getElementById("t_b2").innerHTML = "<span id='c_b2'></span>";
            } else {
                //alert("gg");
                document.getElementById("t_b1").innerHTML = "<span id='c_b1' "
                        + " onClick='MoveMonth(-2);' "
                        + " onMouseOver='this.style.cursor=" + '"pointer";' + "'"
                        + "></span>";
                document.getElementById("t_b2").innerHTML = "<span id='c_b2' "
                        + " onClick='MoveMonth(-1);' "
                        + " onMouseOver='this.style.cursor=" + '"pointer";' + "'"
                        + "></span>";
                document.getElementById("c_b1").innerHTML = '&lt;&lt;';
                document.getElementById("c_b2").innerHTML = '&lt;';
           }
          // alert("ggg");

            if (CheckVsDate(new Date(thisDate.getFullYear() - 1, thisDate.getMonth(), thisDate.getDate()), new Date(), "month") < 0) {
                document.getElementById("t_b1").innerHTML = "<span id='c_b1'></span>";
            } else {
                document.getElementById("t_b1").innerHTML = "<span id='c_b1' "
                        + " onClick='MoveMonth(-2);' "
                        + " onMouseOver='this.style.cursor=" + '"pointer";' + "'"
                        + "></span>";
                document.getElementById("c_b1").innerHTML = '&lt;&lt;';
            }
            
            pos0 = startDate;
              
            for (var i = 0; i < 42; i++) {

                
                if (startDate.getDate() == 1 && startPos == -1) { startPos = i; }
                if (startDate.getDate() == 1 && startPos != -1) { endPos = i-1; }
                
                //if (i < 5) alert(startDate.getDate());

                if (CheckVsDate(thisDate, startDate, "date") == 0) {
                    document.getElementById("t_" + i.toString()).innerHTML = "<span id='c_" + i.toString() + "'" 
                        + " onClick='SelectDate("+'"c_'+i.toString()+'");'+"'"
                        + " onMouseOver='this.style.cursor="+'"pointer";'+"'"                 
                        + "></span>" ;
                    document.getElementById("c_" + i.toString()).innerHTML = startDate.getDate().toString();
                    selectedId = i;
                    document.getElementById("t_" + i.toString()).className = "cell_pick";
                }
                else if (startDate.getMonth() != month ) {
                    document.getElementById("t_" + i.toString()).innerHTML = "<span id='c_" + i.toString() + "'></span>";
                    document.getElementById("t_" + i.toString()).className = "cell";
                }
                else if (CheckVsDate(startDate, new Date(), "date") < 0) {
                    document.getElementById("t_" + i.toString()).innerHTML = "<span id='c_" + i.toString() + "'"
                            + "></span>";
                    document.getElementById("c_" + i.toString()).innerHTML = startDate.getDate().toString();
                    document.getElementById("t_" + i.toString()).className = "cell_out";
                
                }
                else {
                //alert(" onMouseOver='this.cursor="+'"pointer";'+"'") ;
                    document.getElementById("t_" + i.toString()).innerHTML = "<span id='c_" + i.toString() + "'" 
                        + " onClick='SelectDate("+'"c_'+i.toString()+'");'+"'"
                        + " onMouseOver='this.style.cursor="+'"pointer";'+"'"                 
                        + "></span>" ;
                    document.getElementById("c_" + i.toString()).innerHTML = startDate.getDate().toString();
                    document.getElementById("t_" + i.toString()).className = "cell";
                }

                startDate = new Date(startDate.getFullYear(),startDate.getMonth(), startDate.getDate()+1);

            }
            //alert("here");
            document.getElementById("c_m").innerHTML = mons[month] + ' ' + year;   
       
            SetDate(thisDate) ;

        }

        function ReadDate(dateStr) {
            //alert('Read Date *'+dateStr+'**'+dateStr.substr(0, 2) + '*' + dateStr.substr(3,2) + '*' + '20' + dateStr.substr(6, 2)+'*');
            return new Date(('20' + dateStr.substr(6, 2)) * 1, dateStr.substr(3, 2) * 1-1, dateStr.substr(0, 2)*1);
        }

        function MoveMonth(value) {
            var addY=0 ; addM=0 ;
            if(value==+1) addM=-1 ;
            if(value==+2) addY=-1 ;
            if(value==-1) addM=1 ;
            if (value == -2) addY = 1;

            var chkMon = thisDate.getMonth() - (addM);
            var chkYear = thisDate.getFullYear() - (addY);
            if (chkMon == 12) {
                chkMon = 0; chkYear = chkYear + 1;
            }
            if (chkMon == -1) {
                chkMon = 11 ; chkYear = chkYear - 1;
            }
    //          alert(selectedId + ' ' + startPos + ' ' + endPos + ' ' + chkMon+' '+chkYear);
     //       if (selectedId > endPos) { chkMon = chkMon - 1 ; addM = addM + 1;}
     //       if (selectedId < startPos) { chkMon = chkMon + 1 ; addM = addM -1; }
     //       alert(selectedId + ' ' + startPos + ' ' + endPos + ' ' + chkMon + ' ' + chkYear);

            thisDate = new Date(thisDate.getFullYear() - (addY), thisDate.getMonth() - (addM), thisDate.getDate());
            if(CheckVsDate(thisDate,new Date(),'date')<0) thisDate=new Date() ;
            //alert(thisDate);
            if (thisDate.getFullYear() != chkYear || thisDate.getMonth() != chkMon) {
                thisDate = new Date(chkYear, chkMon + 1, 0);
                //alert(selectedId + ' ' + startPos + ' ' + endPos + ' ' + chkMon + ' ' + chkYear+' '+addY+' '+addM);
            }

            SetDates();

            return false;
        }

        function SelectDate(id) {
            //alert(startPos+'-'+endPos+'-'+selectedId) ;
            //if (selectedId > endPos || selectedId < startPos) eval('c_'+selectedId).className = "cell_out";
            //else
            document.getElementById('t_' + selectedId).className = "cell";
            selectedId = id.toString().substr(2, 4)* 1;
            //alert(selectedId);
            document.getElementById("t_" + selectedId).className = "cell_pick";
            thisDate = new Date(pos0.getFullYear(), pos0.getMonth(), pos0.getDate() + selectedId) ;
            //          alert(thisDate);
            
            SetDate(thisDate) ;
            document.getElementById("calendar").style.display = "none";
            //calBut.style.display = "block";

        }
        
        function SetDate(theDate) {
            var calobj = document.getElementsByName("availability_arrivalDate").item(0);

            calobj.value = calendar_getDateStr(theDate);
            //alert(calobj.value);
        
        }
        
        function formatDate(setDate) {
            var dateStr = "";

            dateStr =  (100 + setDate.getDate()).toString().substr(1, 3) + '/' + (101 + setDate.getMonth()).toString().substr(1, 3) + '/' + setDate.getFullYear().toString().substr(2, 4);
                       
            return dateStr ;
        }

        function calendar_display(x, y) {

            calPosX = x;
            calPosY = y;
            var calobj = document.getElementsByName("availability_arrivalDate").item(0);
            //alert(calobj.value);
            //alert(document.all.availability_arrivalDate.value);
            thisDate = ReadDate(calendar_SetDateFormat(calobj.value));
            //alert(thisDate);
         
            if(thisDate=="NaN") thisDate=new Date() ;
            //alert(thisDate);
            //document.all.calBut.style.display = "none";

            var iReturnTop = 0;
            var iReturnLeft = 0;
            var oElement = document.getElementsByName("availability_nights").item(0);
            var calElement = document.getElementById("calendar");
            while (oElement != null) {
                iReturnTop += oElement.offsetTop;
                iReturnLeft += oElement.offsetLeft;
                oElement = oElement.offsetParent;
            }
            //alert(iReturnTop + " " + iReturnLeft);
        //    alert("here" + calendar.offsetTop);
         //   alert("here" + calendar.offsetTop);
            calElement.style.top = (iReturnTop + calPosY ).toString() + "px";
            calElement.style.left = (iReturnLeft+calPosX).toString() + "px";
          //  alert("here" + document.all.calendar.offsetTop);
            calElement.style.display = "block";

           SetDates();
        }


        function calendar_SetDateFormat(dateStr) {

            dateStr=dateStr.toString().replace(/ /g,'') ;
            var retDate="" ;
            
            //alert("*"+dateStr+"*") ;

            if (dateStr.match(/^\d\d[\/-]\d\d[\/-]\d\d$/)) {
                //alert("v1 dd/mm/yy " + dateStr + "**" + dateStr.substr(0, 2) + '/' + dateStr.substr(3, 2) + '/' + dateStr.substr(6, 2));
                retDate = dateStr.substr(0, 2) + '/' + dateStr.substr(3, 2) + '/' + dateStr.substr(6, 2);
                //alert("retDate - " + retDate);
            } 
            else if (dateStr.match(/^\d[\/-]\d\d[\/-]\d\d$/)) {
                //alert("v1 d-mm-yy");
                retDate='0'+dateStr.substr(0,1)+'/'+dateStr.substr(2,2)+'/'+dateStr.substr(5,2) ;
            } 
            else if (dateStr.match(/^\d\d[\/-]\d[\/-]\d\d$/)) {
                //alert("v1 dd-m-yy");
                retDate=dateStr.substr(0,2)+'/0'+dateStr.substr(3,1)+'/'+dateStr.substr(5,2) ;
            } 
            else if (dateStr.match(/^\d[\/-]\d[\/-]\d\d$/)) {
                //alert("v1 d-m-yy");
                retDate='0'+dateStr.substr(0,1)+'/0'+dateStr.substr(2,1)+'/'+dateStr.substr(4,2) ;
            } 
            else if (dateStr.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)) {
                //alert("v1 dd/mm/yyyy");
                retDate=dateStr.substr(0,2)+'/'+dateStr.substr(3,2)+'/'+dateStr.substr(8,2) ;
           } 
            else if (dateStr.match(/^\d[\/-]\d\d[\/-]\d\d\d\d$/)) {
                //alert("v1 d-mm-yyyy");
                retDate='0'+dateStr.substr(0,1)+'/'+dateStr.substr(2,2)+'/'+dateStr.substr(7,2) ;
           } 
            else if (dateStr.match(/^\d\d[\/-]\d[\/-]\d\d\d\d$/)) {
                //alert("v1 dd-m-yyyy");
                retDate=dateStr.substr(0,2)+'/0'+dateStr.substr(3,1)+'/'+dateStr.substr(7,2) ;
           } 
            else if (dateStr.match(/^\d[\/-]\d[\/-]\d\d\d\d$/)) {
                //alert("v1 d-m-yyyy");
                retDate='0'+dateStr.substr(0,1)+'/0'+dateStr.substr(2,1)+'/'+dateStr.substr(6,2) ;
            }         
            else if (dateStr.match(/^\d\d[\/-]\d\d[\/-]\d$/)) {
                //alert("v1 dd/mm/y");
                retDate=dateStr.substr(0,2)+'/'+dateStr.substr(3,2)+'/0'+dateStr.substr(6,1) ;
            } 
            else if (dateStr.match(/^\d[\/-]\d\d[\/-]\d$/)) {
                //alert("v1 d-mm-y");
                 retDate='0'+dateStr.substr(0,1)+'/'+dateStr.substr(2,2)+'/0'+dateStr.substr(5,1) ;
           } 
            else if (dateStr.match(/^\d\d[\/-]\d[\/-]\d$/)) {
                //alert("v1 dd-m-y");
                 retDate=dateStr.substr(0,2)+'/0'+dateStr.substr(3,1)+'/0'+dateStr.substr(5,1) ;
           } 
            else if (dateStr.match(/^\d[\/-]\d[\/-]\d$/)) {
                //alert("v1 d-m-y");
                 retDate='0'+dateStr.substr(0,1)+'/0'+dateStr.substr(2,1)+'/0'+dateStr.substr(4,1) ;
           }

        //   alert(dateStr + ' ' + retDate + ' ' + calendar_getDate(retDate));
           if (retDate == "") { retDate = calendar_getDateStr(new Date()); }
           else if(calendar_matchDate(retDate,calendar_getDate(retDate))==0) retDate=calendar_getDateStr(new Date()) ;
           else if(calendar_compareDates(calendar_getDate(retDate),new Date(),"date")==-1) retDate=calendar_getDateStr(new Date()) ;
         //  alert(dateStr + ' ' + retDate + ' ' + calendar_getDate(retDate));
            
           SetDate(calendar_getDate(retDate)) ;
            
           return retDate ;
            
        }
        
        function calendar_getDate(dateStr) {
      //      alert("getDate " + dateStr);
      //      alert("getDate " + (('20' + dateStr.substr(6, 2)) * 1) + " " + (dateStr.substr(3, 2) * 1 - 1) + " " + (dateStr.substr(0, 2) * 1));
      //      alert("getDate " + Date(('20' + dateStr.substr(6, 2)) * 1, dateStr.substr(3, 2) * 1 - 1, dateStr.substr(0, 2) * 1));
            return new Date(('20' + dateStr.substr(6, 2)) * 1, dateStr.substr(3, 2) * 1 - 1, dateStr.substr(0, 2) * 1);
        }
        
        function calendar_getDateStr(theDate) {
         //   alert("getDateStr " + theDate);
          //  alert("getDateStr " + theDate.getFullYear().toString());
            //alert("getDateStr " + (100 + theDate.getDate()).toString().substr(1, 3) + '/' + (101 + theDate.getMonth()).toString().substr(1, 3) + '/' + theDate.getFullYear().toString().substr(2, 4));
            return (100 + theDate.getDate()).toString().substr(1, 3) + '/' + (101 + theDate.getMonth()).toString().substr(1, 3) + '/' + theDate.getFullYear().toString().substr(2, 4);
        }
        
        function calendar_matchDate(dateStr,theDate) {
        //   alert("match " + dateStr); alert("match " + theDate);alert("match " + calendar_getDateStr(theDate));  
           if(dateStr==calendar_getDateStr(theDate)) return 1 ;
           else return 0 ;
        }
        
        function calendar_compareDates(theDate,chkDate,chkType) {
        
            today = chkDate;
            
            var retVal=100 ;
            
            if(theDate.getFullYear()==today.getFullYear()) retVal=0 ;
            else if (theDate.getFullYear()<today.getFullYear()) retVal=-1 ;
            else retVal=1 ;
            if(chkType=="year") return retVal ;

            if(retVal==0&&theDate.getMonth()==today.getMonth()) retVal=0 ;
            else if (retVal<0||(retVal==0&&theDate.getMonth()<today.getMonth())) retVal=-1 ;
            else retVal=1 ;
            if (chkType == "month") return retVal;
           
            if(retVal==0&&theDate.getDate()==today.getDate()) retVal=0 ;
            else if (retVal<0||(retVal==0&&theDate.getDate()<today.getDate())) retVal=-1 ;
            else retVal=1 ;
            if(chkType=="date") return retVal ;
            
            return retVal ;
        }

        function calendar_blur(dateStr) {
            if(calendar.style.display=="none") calendar_SetDateFormat(dateStr) ;               
        }