﻿//Ken Chin 2007-01-11 
//http://www.henoo.com

function isDate(p_Expression){
	return !isNaN(new Date(p_Expression));		// <<--- this needs checking
}

// REQUIRES: isDate()
function dateAdd(p_Interval, p_Number, p_Date){
	if(!isDate(p_Date)){return "invalid date: '" + p_Date + "'";}
	if(isNaN(p_Number)){return "invalid number: '" + p_Number + "'";}	

	p_Number = new Number(p_Number);
	var dt = new Date(p_Date);
	switch(p_Interval.toLowerCase()){
		case "yyyy": {// year
			dt.setFullYear(parseInt(dt.getFullYear()) + parseInt(p_Number));
			break;
		}
		case "q": {		// quarter
			dt.setMonth(parseInt(dt.getMonth()) + parseInt(p_Number*3));
			break;
		}
		case "m": {		// month
			dt.setMonth(parseInt(dt.getMonth()) + parseInt(p_Number));
			break;
		}
		case "y":		// day of year
		case "d":		// day
		case "w": {		// weekday
			dt.setDate(parseInt(dt.getDate()) + parseInt(p_Number));
			break;
		}
		case "ww": {	// week of year
			dt.setDate(parseInt(dt.getDate()) + parseInt(p_Number*7));
			break;
		}
		case "h": {		// hour
			dt.setHours(parseInt(dt.getHours()) + parseInt(p_Number));
			break;
		}
		case "n": {		// minute
			dt.setMinutes(parseInt(dt.getMinutes()) + parseInt(p_Number));
			break;
		}
		case "s": {		// second
			dt.setSeconds(parseInt(dt.getSeconds()) + parseInt(p_Number));
			break;
		}
		case "ms": {		// second
			dt.setMilliseconds(parseInt(dt.getMilliseconds()) + parseInt(p_Number));
			break;
		}
		default: {
			return "invalid interval: '" + p_Interval + "'";
		}
	}
	return dt;
}


var month_name = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var day_name = new Array("Sun", "Mon", "Tues", "Wed", "Thu", "Fri", "Sat");
var month_name_arr= new Array();
month_name_arr['Jan'] = "Jan";
month_name_arr['Feb'] = "Feb";
month_name_arr['Mar'] = "Mar";
month_name_arr['Apr'] = "Apr";
month_name_arr['May'] = "May";
month_name_arr['Jun'] = "Jun";
month_name_arr['Jul'] = "Jul";
month_name_arr['Aug'] = "Aug";
month_name_arr['Sep'] = "Sep";
month_name_arr['Oct'] = "Oct";
month_name_arr['Nov'] = "Nov";
month_name_arr['Dec'] = "Dec";
           
function hotels_fill_monthyear_list(sel_month_year){
    
	var sel_dept_date_monthyear = document.getElementById(sel_month_year);
	var todayDate = new Date();
	var defaultDate = new Date(); 
	defaultDate = dateAdd("m",1,todayDate);
					
	for (i=0;i<18;i++){		
	    	
	    if (todayDate.getDate() >= 29){todayDate = dateAdd("d",-10,todayDate);}

		if (i>0){todayDate = dateAdd("m",1,todayDate);}

		var month = todayDate.getMonth();
		var year = todayDate.getFullYear();
		
		var val = month_name[month]+' '+year;
		var key = month+'-'+year;
		
		sel_dept_date_monthyear.options[i] = new Option(val,key);
	}
	sel_dept_date_monthyear.options[1].selected=true;
}

function hotels_fill_monthyear_list_v2(sel_month_year, ipt_id){

    
	var sel_dept_date_monthyear = document.getElementById(sel_month_year);
    
    var txt = document.getElementById(ipt_id);
    var cur_set_date = makeDate(txt.value);
	var todayDate = new Date();
	var cur_set_month = cur_set_date.getMonth();
	var defaultDate = new Date(); 
	defaultDate = dateAdd("m",1,todayDate);
    var sel_ctr = 0;
	for (i=0;i<18;i++){		
	    	
	    if (todayDate.getDate() >= 29){todayDate = dateAdd("d",-10,todayDate);}

		if (i>0){todayDate = dateAdd("m",1,todayDate);}

		var month = todayDate.getMonth();
		var year = todayDate.getFullYear();
		
		if (month == cur_set_month && sel_ctr <= 0){sel_ctr = i}
		
		var val = month_name[month]+' '+year;
		var key = month+'-'+year;
		
		sel_dept_date_monthyear.options[i] = new Option(val,key);
	}
	sel_dept_date_monthyear.options[sel_ctr].selected=true;
}
                                        
function hotels_fill_day_list(changed,sel_month_year, div_content_, step_,date_ipt_box){	
    
	var sel_dept_date_monthyear = document.getElementById(sel_month_year);
	var monthyear = ""
	if (sel_dept_date_monthyear.selectedIndex + step_ < sel_dept_date_monthyear.length){	    
	        monthyear = sel_dept_date_monthyear.options[sel_dept_date_monthyear.selectedIndex + step_].value;	    
            sel_dept_date_monthyear.selectedIndex = sel_dept_date_monthyear.selectedIndex + step_;	    
	}

	if (monthyear != ""){
	
	    var dimmer_ = document.getElementById(div_content_).parentNode.parentNode.parentNode.parentNode.parentNode.id;
		
		var todayDate = new Date();			
		var defaultDate = new Date(); 
		var arr = monthyear.split("-");
		
		var month = arr[0];
		var year = arr[1];
		
		var dt = new Date();
		dt.setDate(1);
		dt.setMonth(month);
		dt.setFullYear(year);	
        
        var dy = new Date();
		dy.setDate(1);
		dy.setMonth(month);
		dy.setFullYear(year);	
	    var dy = dateAdd("m",-1,dy);
		
		if (changed == true){				
			defaultDate.setDate(1);
			
			defaultDate.setMonth(month);
			defaultDate.setFullYear(year);	
		}else{	
			defaultDate = dateAdd("m",1,todayDate);	
		}
		var current_month = month
		var x = dt.getMonth();
		var i =0;
		var s= "";
		s += "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"2\" >"
		var cal_started = false;
		var started = false;
		var j = 0;
        var minus_days = dt.getDay();
        minus_days = minus_days -7;
        var num_rows = Math.ceil((daysInMonth(x,year) + (7 + minus_days)) / 7)
        s += "<tr class=\"cal_header_hotels\">";
    	for (j = 0;j<7;j++){
	        s += "<td>" + day_name[j] + "</td>\n";
	    }
        s += "</td>\n";
        var days_b4 = 7 + minus_days;
        for (i = 0;i < num_rows;i++){
		    for(j=0;j<7;j++){
			    if (j == 0){s +="<tr>"}
			    x = dt.getMonth();
                if (x != current_month){break;}
                var thisDay = dt.getDay();
                var val = dt.getDate();
                var year_ = dt.getYear();
                if(year_ < 2000){year_ = year_ + 1900}
                if (thisDay != j){
                    var y = dy.getMonth();
                    var val = dy.getDate();
                    var year_ = dy.getYear();
                    if(year_ < 2000){year_ = year_ + 1900}
                    var lastMonthDay = daysInMonth(y, year_);
                    val = (lastMonthDay + 1) - days_b4;
                    if (todayDate < dt){
                        if (!started){s += "<td align='center' class=\"cal_cell_shaded_hotels\" onclick=\"hotels_select_date('" + date_ipt_box + "','" + val + "-"+ month_name[y] + "-" + year_ +  "','" + dimmer_ + "')\">" + val + "</td>\n";}
                    }else{
                        s += "<td align='center' class=\"cal_cell_2_hotels\">" + val + "</td>\n";
                    }
                    days_b4 -=1
                    
                }
                if (thisDay == j){started = true;}
                if (todayDate < dt){
                    if (started){s += "<td align='center' class=\"cal_cell\" onclick=\"hotels_select_date('" + date_ipt_box + "','" + val + "-"+ month_name[x] + "-" + year_ +  "','" + dimmer_ + "')\">" + val + "</td>\n";}                
                }else{
                    if (started){s += "<td align='center' class=\"cal_cell_2_hotels\">" + val + "</td>\n";}
                }
                
                if (started){dt = dateAdd("d",1,dt);}										
                if (j == 6){s +="</tr>"}
                
		    }
		    for (k = j;k<7;k++){
		        x = dt.getMonth();
                var thisDay = dt.getDay();
                var val = dt.getDate();
                var year_ = dt.getYear();
                if(year_ < 2000){year_ = year_ + 1900}
                if (todayDate < dt){
                    if (started){s += "<td align='center' class=\"cal_cell_shaded_hotels\" onclick=\"hotels_select_date('" + date_ipt_box + "','" + val + "-"+ month_name[x] + "-" + year_ +  "','" + dimmer_ + "')\">" + val + "</td>\n";}                
                }else{
                    if (started){s += "<td align='center' class=\"cal_cell_2_hotels\">" + val + "</td>\n";}
                }
                dt = dateAdd("d",1,dt);

		        //s += "<td></td>\n";
		    }
		    if (j != 6){
		        s +="</tr>";
		    }
        }
        s += "<tr><td colspan=\"7\" align=\"center\"><a onclick=\"close_me('" + dimmer_ + "')\"  style=\"cursor:pointer;\">Close</a></td></tr>"
		s += "</table>"
		
		
		var obj = document.getElementById(div_content_);
		obj.innerHTML = s;
	    //alert(obj.innerHTML)
    
	
	}
}
function daysInMonth(iMonth, iYear)
{
	return 32 - new Date(iYear, iMonth, 32).getDate();
}

function hotels_select_date(obj_name,val_,div_container_){
    
    var s = div_container_.split("_");
    var obj = document.getElementById(s[0] + '_hotel' + cal_ipt_id);
    obj.value = val_;
    obj = document.getElementById(div_container_);
    obj.style.display = "none";

}
function hotels_select_date_v2(obj_name,val_,div_container_, obj_name_2){
    var obj = document.getElementById(obj_name);
    obj.value = val_;
    obj = document.getElementById(div_container_);
    obj.style.display = "none";

}

function close_me(id){
   
    var obj = document.getElementById(id);
    obj.style.display = "none";
}
function set_cal_date(cal_id, ipt_id){
    
    var txt = document.getElementById(ipt_id);
    var cur_set_date = txt.value;
    alert(makeDate(cur_set_date));

//    var today = new Date();
//    today.setTime(Date.parse( cur_set_date + ' 00:01:00'));
//    alert(today);
    //txt.
}
function makeDate(str) {
  return new Date(str.replace(/-/g,' '))
}

//d = new Date("21-Jan-2006".replace(/-/g,' '))
//or

//alert(makeDate("21-Jan-2006"))
