﻿/*Ken Chin 2008-12-08 
http:/*v2.travelsearchresults.com*/

var global_cal_ipt_box= "";

function isDate(p_Expression){
	return !isNaN(new Date(p_Expression));		
}
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 month_index = new Array();
month_index["Jan"] = 0;month_index["Feb"] = 1;month_index["Mar"] = 2;month_index["Apr"] = 3;month_index["May"] = 4;month_index["Jun"] = 5;month_index["Jul"] = 6;month_index["Aug"] = 7;month_index["Sep"] = 8;month_index["Oct"] = 9;month_index["Nov"] = 10;month_index["Dec"] = 11;
month_index["jan"] = 0;month_index["feb"] = 1;month_index["mar"] = 2;month_index["apr"] = 3;month_index["may"] = 4;month_index["jun"] = 5;month_index["jul"] = 6;month_index["aug"] = 7;month_index["sep"] = 8;month_index["oct"] = 9;month_index["nov"] = 10;month_index["dec"] = 11;

var day_name = new Array("Sun", "Mon", "Tues", "Wed", "Thu", "Fri", "Sat");

function 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 fill_day_list_v2(changed,sel_month_year, div_content_, step_,date_ipt_box, dimmer_){	

	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 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\" class=\"cal_table\" >";
		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\">";
    	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\" onclick=\"select_date_v2('" + date_ipt_box + "','" + val + "-"+ month_name[y] + "-" + year_ +  "','" + dimmer_ + "')\">" + val + "</td>\n";}
                    }else{
                        s += "<td align='center' class=\"cal_cell_2\">" + val + "</td>\n";
                    }
                    days_b4 -=1;
                }
                if (thisDay == j){started = true;}
                if (todayDate < dt){
                    if (started){s += "<td align='center' class=\"cal_cell\" onclick=\"select_date_v2('" + date_ipt_box + "','" + val + "-"+ month_name[x] + "-" + year_ +  "','" + dimmer_ + "')\">" + val + "</td>\n";}                
                }else{
                    if (started){s += "<td align='center' class=\"cal_cell_2\">" + 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\" onclick=\"select_date_v2('" + date_ipt_box + "','" + val + "-"+ month_name[x] + "-" + year_ +  "','" + dimmer_ + "')\">" + val + "</td>\n";}                
                }else{
                    if (started){s += "<td align='center' class=\"cal_cell_2\">" + val + "</td>\n";}
                }
                dt = dateAdd("d",1,dt);
		    }
		    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;
	}
}
function show_dimmer_v2(sel_month_year, calendar_content, dimmer, cal_ipt_id, append){
   global_cal_ipt_box = cal_ipt_id;
   fill_monthyear_list(sel_month_year);
   var cal_date = document.getElementById(global_cal_ipt_box);
   var step = return_month_to_step(cal_date.value);
   fill_day_list_v2(false,sel_month_year, calendar_content,step,cal_ipt_id, dimmer);
   var obj = document.getElementById(dimmer);
   var parent_obj = document.getElementById(append);
   parent_obj.appendChild(obj);
   if (obj.style.display == "none"){
       obj.style.display = "inline";
   }else{
       obj.style.display = "none";
   }
}

function return_month_to_step(date_value){
   var step=0;
   var todayDate = new Date();
   if(date_value.indexOf("-") > -1){
      var arr = date_value.split("-");var month = arr[1];var year = arr[2];var first_add = (parseInt(year) - todayDate.getFullYear()) * 12;
		var step_to_return = parseInt(month_index[month.toLowerCase()])+ first_add -1 - todayDate.getMonth();step = step_to_return;
   }
   else if(date_value.indexOf("/") > -1){
      var arr = date_value.split("/");var month = arr[1];var year = arr[2];var first_add = (parseInt(year)  - todayDate.getFullYear() ) * 12;
		var step_to_return = parseInt(month) + first_add -2 -  todayDate.getMonth();step = step_to_return;
   }
   return step;
}

function daysInMonth(iMonth, iYear){return 32 - new Date(iYear, iMonth, 32).getDate();}

function select_date_v2(obj_name,val_,div_container_){
   var obj = document.getElementById(obj_name);
   if (obj == null){obj = document.getElementById(global_cal_ipt_box);obj.value = val_;}else{obj.value = val_;}
   var obj2 = document.getElementById(div_container_);
   obj2.style.display = "none";
}

function close_me(id){
    var obj = document.getElementById(id);
    obj.style.display = "none";
}
