var booking = 
{
	description : 'Our global object-literal namespace.',
	version     : '2.5'
};
booking.CSS =
{
	units : 
	{
		px : 'px'
	}
}
booking.utils = { ie : {} };
// Used by IE ≤6 window.onload, window.onresize or hider.ondrag to hide elements such as selects that otherwise render above absolutely positioned elements.
booking.utils.ie.hideIntersectingElements = function (hider, hidees)
{
	// hidees is an array of elements to hide when underneath the hider.
	// Q: what happens when the offsetParent isn’t the whole viewport?
	var
		i,
		hidee;
	hider.offsetBottom = hider.offsetTop + hider.offsetHeight;
	hider.offsetRight = hider.offsetLeft + hider.offsetWidth;
	for (i = 0; i < hidees.length; i++)
	{
		hidee = hidees[i];
		// to-do: test for existence of these?
		hidee.offsetBottom = hidee.offsetTop + hidee.offsetHeight;
		hidee.offsetRight = hidee.offsetLeft + hidee.offsetWidth;
		// Test for hider/hidee rectangle intersection.
		if (hidee.offsetLeft  < hider.offsetRight   &&
			hidee.offsetRight  > hider.offsetLeft    &&
			hidee.offsetTop    < hider.offsetBottom  &&
			hidee.offsetBottom > hider.offsetTop)
		{
			hidee.style.visibility = 'hidden';
		}
		else
		{
			hidee.style.visibility = 'visible';
		}
	}
};
booking.json = {};
// Tests JSON content for validity per RFC 4627.
booking.json.validate = function (jsonResponse)
{
	return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
		jsonResponse.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + jsonResponse + ')')
};
booking.event = {};
// Add an event listener using the available method, either DOM 2 Event’s addEventListener or IE’s attachEvent.
booking.event.addListener = function (elm, event, handler)
{
	if (elm)
	{
		if (elm.addEventListener)
		{
			elm.addEventListener(event, handler, false);
		}
		else
			if (elm.attachEvent)
			{
				elm.attachEvent('on' + event, handler);
			}
			else
			{
				elm['on' + event] = handler;
			}
	}
}
// Ensures event objects resemble standard DOM 2 Event objects in IE, which lacks support for this standard.
booking.event.normalizeExplorerEventObject = function (eventObject)
{
	if (!eventObject)
	{
		eventObject = window.event;
	}
	if (!eventObject.currentTarget)
	{
		eventObject.currentTarget = eventObject.srcElement;
	}
	return eventObject;
};
