/******************************************************************

	Exceptional SLEEP Framework.
	Copyright Peter Kaplan & Exceptional IT Services Inc 2007-2009
		
******************************************************************/
var g_calendar_dialog;
var g_calendar_obj;
var g_input_id
var g_container_id;
var g_button_id;
var g_changeFnc;
//*****************************************************************
function InvokeCalendar( input_id, button_id, container_id, changeFnc)
{
	g_input_id = input_id;
	g_button_id = button_id;
	g_container_id = container_id;
	g_changeFnc = changeFnc;

	g_calendar_dialog = new YAHOO.widget.Dialog( "container", {
									visible:false,
									height: '245px',
									context:[ button_id, "tl", "bl"],
									draggable:false,
									close:false
									});
	
	g_calendar_dialog.setBody('<div id="cal_obj"></div>');
	
	if (container_id != false) {
		var sleep_calendar_div = document.getElementById( container_id);
		g_calendar_dialog.render(sleep_calendar_div);
	}
	else 
		g_calendar_dialog.render(document.body);
	
	g_calendar_obj = new YAHOO.widget.Calendar("cal_obj", {
												iframe:false,          // Turn iframe off, since container has iframe support.
												hide_blank_weeks:true  // Enable, to demonstrate how we handle changing height, using changeContent
												});

	var currentTime = new Date();
	var month = currentTime.getMonth() + 1;
	var day = currentTime.getDate();
	var year = currentTime.getFullYear();
	shown_date = month + "/" + day + "/" + year;

	var date_ele = document.getElementById( input_id);
	if (date_ele.value != '') 
		shown_date = date_ele.value;

	g_calendar_obj.select( date_ele.value);
	g_calendar_obj.render();
	g_calendar_dialog.show();

    g_calendar_obj.selectEvent.subscribe(selectEventCal);

    g_calendar_obj.renderEvent.subscribe(function() {
        // Tell Dialog it's contents have changed, which allows 
        // container to redraw the underlay (for IE6/Safari2)
        g_calendar_dialog.fireEvent("changeContent");
    });
    
	// Hide Calendar if we click anywhere in the document other than the calendar
	YAHOO.util.Event.on(document, "click", handle_outside_click);
}
//*****************************************************************
function selectEventCal()
{
	var date_ele = document.getElementById( g_input_id);
	if (g_calendar_obj.getSelectedDates().length > 0) {
		
		var selDate = g_calendar_obj.getSelectedDates()[0];
		
		var dStr = selDate.getDate();
		var mStr = selDate.getMonth()+1;
		var yStr = selDate.getFullYear();
		
		date_ele.value =  mStr + "/" + dStr + "/" + yStr;
	} else {
		date_ele.value = "";
	}
	destroyCalendar();
}
//*****************************************************************
function handle_outside_click(e) 
{
   var showBtn = YAHOO.util.Dom.get( g_button_id);

    var el = YAHOO.util.Event.getTarget(e);
    var dialogEl = g_calendar_dialog.element;
    if (el != dialogEl && !YAHOO.util.Dom.isAncestor(dialogEl, el) && el != showBtn && !YAHOO.util.Dom.isAncestor(showBtn, el)) {
    	destroyCalendar();
    }
}
//*****************************************************************
function destroyCalendar()
{
	g_calendar_dialog.hide();
	g_calendar_dialog.destroy();
  	YAHOO.util.Event.removeListener(document, "click", handle_outside_click);
  	
  	if (g_changeFnc) g_changeFnc();
}