var com = window.com || {};
com.chs = window.com.chs || {};

com.chs.namespace = function(ns)
{
	if (!ns || !ns.length) {
		return null;
	}

	var levels = ns.split('.');
	var nsobj = com.chs;

	for (var i = (levels[0] == 'com' && levels.length > 2 && levels[1] == 'chs') ? 2 : 0; i < levels.length; ++i)
	{
		nsobj[levels[i]] = nsobj[levels[i]] || {};
		nsobj = nsobj[levels[i]];
	}

	return nsobj;
};

com.chs.namespace('com.chs.calendar');


YAHOO.util.Event.onDOMReady(function()
{
	// Initialize calendars.
	var defaultPickUpDate = document.getElementById('ti_pickupdate').value;
	var defaultDropOffDate = document.getElementById('ti_dropoffdate').value;
	
	com.chs.calendar.calPickUp = new YAHOO.widget.Calendar
		('calPickUp', 'calPickUp',
		{
		pagedate : defaultPickUpDate.substring(3, 5) + '/' + defaultPickUpDate.substring(6, 10),
		selected : defaultPickUpDate.substring(3, 5) + '/' + defaultPickUpDate.substring(0, 2) + '/' + defaultPickUpDate.substring(6, 10),
		mindate : new Date(),
		title : '',
		close: false,
		iframe : true,
		LOCALE_WEEKDAYS : 'short',
		HIDE_BLANK_WEEKS : true,
		START_WEEKDAY: 1
		}
		);
	com.chs.calendar.calPickUp.selectEvent.subscribe(com.chs.calendar.handlePickUpSelect, com.chs.calendar.calPickUp, true);
	com.chs.calendar.calPickUp.render();
	
	com.chs.calendar.calDropOff = new YAHOO.widget.Calendar
		('calDropOff', 'calDropOff',
		{
		pagedate : defaultDropOffDate.substring(3, 5) + '/' + defaultDropOffDate.substring(6, 10),
		selected : defaultDropOffDate.substring(3, 5) + '/' + defaultDropOffDate.substring(0, 2) + '/' + defaultDropOffDate.substring(6, 10),
		mindate : new Date(),
		title : '',
		close: false,
		iframe : true,
		LOCALE_WEEKDAYS : 'short',
		HIDE_BLANK_WEEKS : true,
		START_WEEKDAY: 1
		}
		);
	com.chs.calendar.calDropOff.selectEvent.subscribe(com.chs.calendar.handleDropOffSelect, com.chs.calendar.calDropOff, true);
	com.chs.calendar.calDropOff.render();
}
);

// selectEvent handlers for calendars.
com.chs.calendar.handlePickUpSelect = function(type, args, obj)
{
  var selectedDate = args[0][0];
  var year = selectedDate[0], month = selectedDate[1], day = selectedDate[2];
  document.getElementById('ti_pickupdate').value = (day <= 9 ? '0' : '') + day + '/' + (month <= 9 ? '0' : '') + month + '/' + year;
  document.getElementById('ti_dropoffdate').value = (day <= 9 ? '0' : '') + day + '/' + (month <= 9 ? '0' : '') + month + '/' + year;
  com.chs.calendar.calDropOff.cfg.setProperty('pagedate', document.getElementById('ti_dropoffdate').value.substring(3, 5) + '/' + document.getElementById('ti_dropoffdate').value.substring(6, 10));
  com.chs.calendar.calDropOff.cfg.setProperty('selected', document.getElementById('ti_dropoffdate').value.substring(3, 5) + '/' + document.getElementById('ti_dropoffdate').value.substring(0, 2) + '/' + document.getElementById('ti_dropoffdate').value.substring(6, 10));
  com.chs.calendar.calDropOff.render();
  obj.hide();
}
com.chs.calendar.handleDropOffSelect = function(type, args, obj)
{
  var selectedDate = args[0][0];
  var year = selectedDate[0], month = selectedDate[1], day = selectedDate[2];
  document.getElementById('ti_dropoffdate').value = (day <= 9 ? '0' : '') + day + '/' + (month <= 9 ? '0' : '') + month + '/' + year;
  obj.hide();
}

YAHOO.util.Event.addListener('ti_pickupdate', 'focus', function() {
  com.chs.calendar.calPickUp.show();
});
YAHOO.util.Event.addListener('ti_dropoffdate', 'focus', function() {
  com.chs.calendar.calDropOff.show();
});


// For hiding calendars on click away.
YAHOO.util.Event.addListener(document, 'click', function(e)
{
	var target = (e && e.target) || (event && event.srcElement);
	if (target.id != 'ti_pickupdate' && target.id != 'pickupdateimg')
	{
		if (!com.chs.calendar.checkParentIsCalendarDiv(target, 'calPickUp'))
		{
			com.chs.calendar.calPickUp.hide();
		}
	}
	if (target.id != 'ti_dropoffdate' && target.id != 'dropoffdateimg')
	{
		if (!com.chs.calendar.checkParentIsCalendarDiv(target, 'calDropOff'))
		{
			com.chs.calendar.calDropOff.hide();
		}
	}
});

com.chs.calendar.checkParentIsCalendarDiv = function(t, calendarDivId)
{
	while (t.parentNode)
	{
		if (t == document.getElementById(calendarDivId))
		{
			return true;
		}
		t = t.parentNode;
	}
	return false;
}

YAHOO.util.Event.addListener(document, 'keypress', function(e)
{
	if (e.keyCode == 27) // esc
	{
		com.chs.calendar.calPickUp.hide();
		com.chs.calendar.calDropOff.hide();
	}
});

