var lastMonth;
var lmYear ;
var nextMonth;
var nmYear;
var calStartDOW = 1;
var months = new Array( "Jan","Feb","Mar", "Apr","May","Jun", "Jul","Aug","Sep","Oct", "Nov", "Dec");
var longmonths = new Array("January", "February", "March","April", "May", "June","July", "August", "September","October", "November", "December"); 
var leapdays = new Array(31,29,31, 30,31,30, 31,31,30, 31,30,31); 
var yeardays = new Array(31,28,31, 30,31,30, 31,31,30, 31,30,31); 
var dow = new Array("S","S","M","T","W","T","F"); 
var myDate = new Date(); 
var thismonth =  thisMonth = myMonth= myDate.getMonth(); 
var thisyear =  thisYear  = myYear= myDate.getFullYear(); 
var todays = myDate.getDate();
var inOut;
var limitDate = new Date();
limitDate.setDate(limitDate.getDate()+366);
var checkInYear;
var checkInMonth;
var checkInDay;
var checkOutYear;
var checkOutMonth;
var checkOutDay ;
var  hiden = 'no';
var chckInClck = " class=\"calcell selected\" onclick=\"drr_update(this.id);\"";
var prvNoClck = " class=\"calcell previous\"";
var tdClck = " class=\"calcell today  selectable\" onMouseOver=\"overSelectable(this.id);\"  onMouseOut=\"outSelectable(this.id);\" onclick=\"drr_update(this.id);\"";
var slctClck = " class=\"calcell  selectable\" onMouseOver=\"overSelectable(this.id);\"  onMouseOut=\"outSelectable(this.id);\" onclick=\"drr_update(this.id);\"";
	
//BROWSER SELECTOR
var css_browser_selector = function() {
    var ua=navigator.userAgent.toLowerCase(),
    is=function(t){return ua.indexOf(t) != -1;},
    h=document.getElementsByTagName('html')[0],
    b=(!(/opera|webtv/i.test(ua))&&/msie (\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?'gecko ff2':is('firefox/3')?'gecko ff3':is('gecko/')?'gecko':is('opera/9')?'opera opera9':/opera (\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('chrome')?'chrome webkit safari':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',
    os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';
    var c=b+os+' js'; 
    h.className ='';
    h.className += h.className?' '+c:c;
    var getbrower = b.split(' ');
    brower = getbrower[0];
    fullBrower = getbrower[0] + ' ' + getbrower[1];
    }();

function isLeapYear( year ){
    return ( (0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))); 
} 

function writeCalendar(target, myYear, myMonth,myDay, inOut) { 
    var myYear = Math.round(myYear);
    var aaa=0;
    var calDate = new Date( myYear,  myMonth, 1, 0,0,0,0 ); 
    var mDays = isLeapYear(myYear) ? leapdays[myMonth]: yeardays[myMonth]; 
    var wkDay = calDate.getDay(); 
    var xtraweek=0;
    var idlet = (inOut=='checkInD')? 'i': 'u';
    var myMonth2 = (myMonth == 11)?0:(myMonth + 1);
    var myYear2 = (myMonth == 11)?(myYear + 1):myYear;

    lastMonth = (myMonth + 11) % 12;
    if((lastMonth == 11)){
        lmYear    = (myMonth == 0)?  myYear -1: myYear;
    } else { 
        lmYear    = myYear ;
    }
    nextMonth = (myMonth +1)%12;
    if((nextMonth == 0)){ 
        nmYear    = (myMonth == 11)? myYear + 1: myYear;
    } else {
        nmYear = myYear;
    }
  
    var prDay = Math.round(leapdays[lastMonth]) + 1;
    var strCaland = "<TABLE  class=\"yui-calendar\" BORDER='0' CELLPADDING='0' CELLSPACING='0' WIDTH=\"150\">\n";
    strCaland += "<TR>";
    strCaland +="<td colspan=\"7\" class=\"calhead\"><div class=\"calheader\"><a class=\"calnavleft\" onClick='newCalendars(" + lmYear + "," + lastMonth + ");'>&nbsp;</a>" + longmonths[myMonth]+ ' ' + myYear+"</div></td></TR>\n"; 
    strCaland +="<TR  class=\"calweekdayrow\">"; 
    for(i=0; i< 7; i++) { 
        strCaland +="<TD class=\"calweekdaycell\">"+ dow[((i+calStartDOW)%7)] +"</TD>";
    }
    strCaland +="</TR>";
    strCaland +="<tbody class=\"m10 calbody\"><TR ALIGN='RIGHT' class=\"w40\">";
    for(i=((8 - calStartDOW + wkDay)%7) ; i>0; i--) { 
        strCaland +="<TD  class=\"calcell oom calcelltop\">" +Math.round(prDay - i)+ "</TD>"; 
        xtraweek = 1;
    }
    if(xtraweek==1){} else {aaa--;}
    var strMonth =(myMonth>8)?myMonth+1: "0" + (myMonth+1);
    for(cmdate=1, i=((8 - calStartDOW + wkDay)%7);  cmdate <= mDays ;  i++,cmdate++) {
        if(0 == (i%7)){ strCaland +="</TR>\n<TR ALIGN='RIGHT' class=\"w40\">"; if(xtraweek==1){ aaa++; }} 
        dateBgAtt = slctClck;
        var myCalculDate=new Date();
        myCalculDate.setFullYear(myYear,myMonth,cmdate);
        if((myCalculDate>limitDate) || (myCalculDate<myDate)) {
            dateBgAtt = prvNoClck;
        } else if((myYear==thisyear) && (myMonth==thismonth) && (cmdate==todays)) {
            dateBgAtt = (inOut=='checkInD')?tdClck:prvNoClck;
        } else  if(((myYear==checkInYear) && (myMonth==checkInMonth) && (cmdate==checkInDay)) && (inOut=='checkInD')){
            dateBgAtt = chckInClck;
        } else if(((myYear==checkOutYear) && (myMonth==checkOutMonth) && (cmdate==checkOutDay)) && (inOut=='checkOutD')){
            dateBgAtt = chckInClck;
        }
        var strday =(cmdate>9)?cmdate: "0" + cmdate ;
        strCaland += "<TD id=\"" + idlet + myYear+ '-' + strMonth + '-' + strday +"\" " + dateBgAtt + " >"+ cmdate + "</TD>";
    }
 
    var a=1;
    if(0 == (i%7)){
        if(xtraweek==0){
        aaa--;
        }
    }
    while(0 != (i%7)) {
        strCaland +="<TD class=\"calcell oom calcelltop\">" + a + "</TD>";
        i++; 
        a++;
    }
    while(0 != (aaa%5)){
        strCaland +="</TR>\n<TR ALIGN='RIGHT' class=\"w40\">";
        i=1
        while(0 != (i%8)) { strCaland +="<TD class=\"calcell oom calcelltop\">" + a + "</TD>"; i++;a++;} 
        aaa++;
    }
    strCaland +="</TR></tbody>"; 
    strCaland +="</TABLE></CENTER>\n"; 
    document.getElementById('calendar1').innerHTML = strCaland;

    xtraweek = 0;
    calDate = new Date( myYear2,  myMonth2, 1, 0,0,0,0 ); 
    mDays = isLeapYear(myYear2) ? leapdays[myMonth2]: yeardays[myMonth2]; 
    wkDay = calDate.getDay(); 
    var bbb=0;
    var prevMonth = (myMonth)%12;
    var prDay = Math.round(leapdays[prevMonth])+1;

    strCaland = "<TABLE  class=\"yui-calendar\" BORDER='0' CELLPADDING='0' CELLSPACING='0' WIDTH=\"150\">\n";
    strCaland += "<TR>";
    strCaland +="<td colspan=\"7\" class=\"calhead\"><div class=\"calheader\"><a class=\"calnavright\" onClick='newCalendars(" + nmYear + "," + nextMonth + ");'>&nbsp;</a>" + longmonths[myMonth2]+ ' ' +  myYear2+"</div></td></TR>\n"; 
    strCaland +="<TR  class=\"calweekdayrow\">"; 

    for(i=0; i< 7; i++) { 
        strCaland +="<TD class=\"calweekdaycell\">"+ dow[((i+calStartDOW)%7)] +"</TD>";
    }
    strCaland +="</TR>";
    strCaland +="<tbody class=\"m10 calbody\"><TR ALIGN='RIGHT' class=\"w40\">"; 

    for(i=((8 - calStartDOW + wkDay)%7) ; i>0; i--) { 
        strCaland +="<TD  class=\"calcell oom calcelltop\">" +Math.round(prDay - i)+ "</TD>";
        xtraweek = 1;
    }

    if(xtraweek==1){} else {bbb--;}
    var strMonth2 =(myMonth2>8)?myMonth2+1: "0" +  (myMonth2+1);
    for(cmdate = 1, i=((8 - calStartDOW + wkDay)%7);  cmdate <= mDays ;  i++,cmdate++) {
        if(0 == (i%7)){ strCaland +="</TR>\n<TR ALIGN='RIGHT' class=\"w40\">";if(xtraweek==1){ bbb++ } }
        dateBgAtt = slctClck;
        var myCalculDate=new Date();
        myCalculDate.setFullYear(myYear2,myMonth2,cmdate);
        if((myCalculDate>limitDate) || (myCalculDate<myDate)) {
		    dateBgAtt = prvNoClck;
        } else if((myYear2==thisyear) && (myMonth2==thismonth) && (cmdate==todays)) {
            dateBgAtt = (inOut=='checkInD')?tdClck:prvNoClck;
        } else if(((myYear2==checkInYear) && (myMonth2==checkInMonth) && (cmdate==checkInDay)) && (inOut=='checkInD')){
            dateBgAtt = chckInClck;
        } else if(((myYear2==checkOutYear) && (myMonth2==checkOutMonth) && (cmdate==checkOutDay)) && (inOut=='checkOutD')){
            dateBgAtt = chckInClck;
        }
		var strday =(cmdate>9)?cmdate: "0" + cmdate ;	    		  
    	strCaland += "<TD id=\""+ idlet  + myYear2 + '-' + strMonth2 + '-' + strday +"\" "+ dateBgAtt + " >" + cmdate + "</TD>";
    }
 
    var a=1;
    if(0 == (i%7)){
        if(xtraweek==0){
            bbb--;
        }
    }
    while(0 != (i%7)) {
        strCaland +="<TD class=\"calcell oom calcelltop\">" + a + "</TD>";
        i++; 
        a++;
 	}
    while(0 != bbb%5){
        strCaland +="</TR>\n<TR ALIGN='RIGHT' class=\"w40\">";
        i=1
        while(0 != (i%8)) { 	strCaland +="<TD class=\"calcell oom calcelltop\">" + a + "</TD>"; i++;a++}
        bbb++;
    }
    strCaland +="</TR>"; 
    strCaland +="</TABLE></CENTER>\n"; 
    document.getElementById('calendar2').innerHTML = strCaland;
    setTimeout( "hiden ='yes'" , 5);
}

function newCalendars(myear, mmonth,mday) { 
    writeCalendar(document, myear, mmonth, mday,inOut);
}

function newCalendarDisplay(inOu){
    if(document.getElementById('check_in_date').value!='no'){
  	    inOut = inOu;
		document.getElementById('CheckinCalContainer').style.display='block';
		document.getElementById('calendarInMain').style.display='block';
  		switch (inOut) {
            case 'checkInD' :
                if(document.getElementById('ttlChck')){
				    document.getElementById('ttlChck').innerHTML='Check in date:';
                }
  				var checkInDate = document.getElementById('check_in_date').value;
  				var checkInExplode = checkInDate.split('-');
  				var myear = checkInYear = Math.round(checkInExplode[0]);
  				var mmonth = checkInMonth = Math.round(checkInExplode[1])-1;
  				var mday = checkInDay = Math.round(checkInExplode[2]);
  				document.getElementById('calendarInMain').className = 'calendarInMain';
            break;
			case 'checkOutD' :
			    if(document.getElementById('ttlChck')){
				    document.getElementById('ttlChck').innerHTML='Check out date:';
				}
 				var checkOutDate = document.getElementById('check_out_date').value;
  				var checkOutExplode = checkOutDate.split('-');
  				var myear = checkOutYear =Math.round(checkOutExplode[0]);
  				var mmonth = checkOutMonth = Math.round(checkOutExplode[1])-1;
  				var mday = checkOutDay = Math.round(checkOutExplode[2]);
  				document.getElementById('calendarInMain').className = 'calendarOutMain';
			break;
        }
        newCalendars(myear,mmonth,mday);
    } else {
	    return false;
    }
} 

function overSelectable(ID){
    document.getElementById(ID).style.background='#FF9900';
    document.getElementById(ID).style.color='#FFFFFF';
    document.getElementById(ID).style.cursor='pointer';
}

function outSelectable(ID){
    document.getElementById(ID).style.background='#EFF8FF';
    document.getElementById(ID).style.color='#10346B';
}

function drr_update(id){
    var pattern =new RegExp('i');
    var selectTarget = (pattern.test(id))?'check_in_date':'check_out_date';
    var txt = (selectTarget=='check_in_date')?id.replace(/i/,''):id.replace(/u/,'');
    
    document.getElementById(selectTarget).value = txt;
    
    if(selectTarget=='check_in_date'){
        syncDate( 'check_in_date' , 'check_out_date' );
        //CheckoutError();
	} else {
	    CheckoutError();
	}	
    	hideCalendar()
}

function hideCalendar2(){
	if(hiden == 'yes'){
		hideCalendar();
	}else {
		setTimeout( "hiden = 'yes'"  , 80);
	}
}