/* init is required by calendar */
function adv_cal_init() {
	cal = new YAHOO.widget.Calendar2up("cal","cal1div");
   	cal.pages[0].minDate = YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 0);
   	cal.pages[1].minDate = YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 0);
	cal.pages[0].Options.MULTI_SELECT = true; 
	cal.pages[1].Options.MULTI_SELECT = true;
	
	cal.pages[0].renderCellDefault = adv_renderCellDefault;
	cal.pages[1].renderCellDefault = adv_renderCellDefault;
	
	cal.render();
	cal.setChildFunction("onSelect", adv_superSelect);
	cal.setChildFunction("onDeselect", adv_superDeSelect);

	cal2 = new YAHOO.widget.Calendar2up("cal2","cal2div");
   	cal2.pages[0].minDate = YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 0);
   	cal2.pages[1].minDate = YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 0);
	cal2.pages[0].Options.MULTI_SELECT = true; 
	cal2.pages[1].Options.MULTI_SELECT = true;
	
	cal2.pages[0].renderCellDefault = adv_renderCellDefault;
	cal2.pages[1].renderCellDefault = adv_renderCellDefault;
	
	cal2.render();
	cal2.setChildFunction("onSelect", adv_superSelect2);
	cal2.setChildFunction("onDeselect", adv_superDeSelect2);
};

/* calendar2up implementation of restricted cells */
var adv_disableBookedCells = function(workingDate, cell) {
	YAHOO.widget.Calendar_Core.setCssClasses(cell, [this.Style.CSS_CELL,this.Style.CSS_CELL_RESTRICTED]);
	cell.innerHTML=workingDate.getDate();
	return YAHOO.widget.Calendar_Core.STOP_RENDER;
};

/* onSelect for multi-select with just two clicks */
var adv_superSelect = function(rd) {
	rds = new String(rd);
	rs = rds.split(",");
	recent = new Date(rs[0], rs[1] - 1, rs[2]);
	totalSelected = cal.getSelectedDates().length;
	selected = cal.getSelectedDates();
	if(totalSelected > 2) {
		for(var i=0; i<selected.length; i++) {
			if(recent.toString() !== selected[i].toString()) {
				cal.deselect(selected[i]);
			}
		}
		cal.render();
	}
	if(totalSelected == 2) {
		cal.render();
		
		/* calculate dates */
		selected = cal.getSelectedDates();
		if(selected[0].valueOf() < selected[1].valueOf()) {
			first = selected[0];
			second = selected[1];
		}
		else {
			first = selected[1];
			second = selected[0];
		}
		firstStr = (first.getMonth() + 1) + "/" + first.getDate() + "/" + first.getFullYear();
		secondStr = (second.getMonth() + 1) + "/" + second.getDate() + "/" + second.getFullYear();
		document.getElementById('start_date').value = firstStr;
		document.getElementById('end_date').value = secondStr;
	}
};

/* onDeselect for multi-select */
var adv_superDeSelect = function(rd) {
	totalSelected = cal.getSelectedDates().length;
	if(totalSelected == 1) {
		cal.render();
		document.getElementById("ratesdiv").innerHTML = '';
		document.getElementById("ratesdiv").className = '';
	}
}

/* onSelect for multi-select with just two clicks */
var adv_superSelect2 = function(rd) {
	rds = new String(rd);
	rs = rds.split(",");
	recent = new Date(rs[0], rs[1] - 1, rs[2]);
	totalSelected = cal2.getSelectedDates().length;
	selected = cal2.getSelectedDates();
	if(totalSelected > 2) {
		for(var i=0; i<selected.length; i++) {
			if(recent.toString() !== selected[i].toString()) {
				cal2.deselect(selected[i]);
			}
		}
		cal.render();
	}
	if(totalSelected == 2) {
		cal2.render();
		
		/* calculate dates */
		selected = cal2.getSelectedDates();
		if(selected[0].valueOf() < selected[1].valueOf()) {
			first = selected[0];
			second = selected[1];
		}
		else {
			first = selected[1];
			second = selected[0];
		}
		firstStr = (first.getMonth() + 1) + "/" + first.getDate() + "/" + first.getFullYear();
		secondStr = (second.getMonth() + 1) + "/" + second.getDate() + "/" + second.getFullYear();
		document.getElementById('start_date2').value = firstStr;
		document.getElementById('end_date2').value = secondStr;
	}
};

/* onDeselect for multi-select */
var adv_superDeSelect2 = function(rd) {
	totalSelected = cal2.getSelectedDates().length;
	if(totalSelected == 1) {
		cal2.render();
		document.getElementById("ratesdiv").innerHTML = '';
		document.getElementById("ratesdiv").className = '';
	}
}

/* overload renderCellDefault() */
var adv_renderCellDefault = function(workingDate, cell) {
	cell.innerHTML = "";
	var link = document.createElement("a");

	link.href="javascript:void(null);";
	link.name=this.id+"__"+workingDate.getFullYear()+"_"+(workingDate.getMonth()+1)+"_"+workingDate.getDate();

	if(this.isDateOOM(workingDate)) {
        cell.innerHTML = "&nbsp;";
	}
	else {
    	link.appendChild(document.createTextNode(this.buildDayLabel(workingDate)));
		cell.appendChild(link);
        totalSelected = this.getSelectedDates().length;
        selected = this.getSelectedDates();
        if(totalSelected == 2) {
            if(selected[0].valueOf() < selected[1].valueOf()) {
                first = selected[0];
                second = selected[1];
            }
            else {
                first = selected[1];
                second = selected[0];
            }
            if(workingDate.valueOf() > first.valueOf() && workingDate.valueOf() < second.valueOf()) {
                YAHOO.util.Dom.addClass(cell,'interselect');
            }
        }
    }
};