function fileNameFromPath(path, keepExtension) 
	{ 
	var slash = '/';
	var lastOffset;
	
	if (path.match(/\\/)) 
		slash = '\\'
	if (keepExtension) 
		lastOffset = path.length; 
	else
		lastOffset = path.lastIndexOf('.');
	return path.substring(path.lastIndexOf(slash) + 1, lastOffset);
	}
	

function pointInRect(h, v, left, top, right, bottom)
	{
	return (h >= left && h <= right && v >= top && v <= bottom);
	}


function pathMinusFileName(path) 
	{ 
	var slash = '/';
	var lastOffset;
	
	if (path.match(/\\/)) 
		slash = '\\'
	return path.substring(0, path.lastIndexOf(slash) + 1);
	}
	

function mouseEventToElement(event)
	{

	if (event)					// this is a DOM2 compliant browser
		return event.target;
	else 						// this is Internet Explorer
		return window.event.srcElement;
	}
	
	
function validEvent(event)
	{
	return event ? event : window.event;
	}
	
	
function getCurrentStyle(element, CSSStyle, IEStyle) 
	// call like this:
	// var color = getCurrentStyle("myDiv", "background-color", "backgroundColor");
	// This doesn't work in Opera.
	{
	if (element.currentStyle) 
		return element.currentStyle[IEStyle];
	else if (window.getComputedStyle) 
		return window.getComputedStyle(element, "").getPropertyValue(CSSStyle);
	return "";		// This is what Opera returns
	}
	
	
	
	
function viewWidth()
	{
	if (window.innerWidth) 		// all browsers except IE
		{return window.innerWidth;}
	else if (document.documentElement && document.documentElement.clientWidth) // IE6 when there is a DOCTYPE
		{return document.documentElement.clientWidth;}
	else if (document.body.clientWidth) 	// IE4, IE5, and IE6 without a DOCTYPE
		{return document.body.clientWidth;}
	else
		{return 0;}
	}
	
	
function viewHeight()
	{
	if (window.innerHeight) 		// all browsers except IE
		{
		return window.innerHeight;
		}
	else if (document.documentElement && document.documentElement.clientHeight) // IE6 when there is a DOCTYPE
		{
		return document.documentElement.clientHeight;
		}
	else if (document.body.clientHeight) 	// IE4, IE5, and IE6 without a DOCTYPE
		{
		return document.body.clientHeight;
		}
	else
		{return 0;}
	}	
	
	
function viewScrollX()
	{
	var scrollX;
	
	if (window.pageXOffset) 		// all browsers except IE
		{
		scrollX = window.pageXOffset;
		}
	else if (document.documentElement && document.documentElement.scrollLeft) // IE6 when there is a DOCTYPE
		{
		scrollX = document.documentElement.scrollLeft;
		}
	else if (document.body.scrollLeft) 	// IE4, IE5, and IE6 without a DOCTYPE
		{
		scrollX = document.body.scrollLeft;
		}
	if (!scrollX)		// some browsers return "undefined" if scroll is 0
		{
		scrollX = 0;
		}
	return scrollX;
	}	
	
	
function viewScrollY()
	{
	var scrollY;
	
	if (window.pageYOffset) 		// all browsers except IE
		{
		scrollY = window.pageYOffset;
		}
	else if (document.documentElement && document.documentElement.scrollTop) // IE6 when there is a DOCTYPE
		{
		scrollY =  document.documentElement.scrollTop;
		}
	else if (document.body.scrollTop) 	// IE4, IE5, and IE6 without a DOCTYPE
		{
		scrollY =  document.body.scrollTop;
		}
	if (!scrollY)		// some browsers return "undefined" if scroll is 0
		{
		scrollY = 0;
		}
	return scrollY;
	}
	
	
function elementIsMemberOfClass(element, className)
	{
	var whitespace;
	var classNames;
	var x;
	
	if (!element || !className || !element.className) 
		{return false;}          
		
	if (element.className === className)
		{return true;}
	
	// Not an exact match, so, if there is no whitespace there is only one class defined and 
	// we already know that this element is not member of it.
	whitespace = /\s+/;
	if (!whitespace.test(element.className)) 
		{return false;}
	
	// Element is a member of more than one class, so we must check each one.
	classNames = element.className.split(whitespace);  	// Apply whitespace delimiter
	for (x = 0; x < classNames.length; x++) 		 // Loop through classes
		{
		if (classNames[x] === className) 
			{return true;}
		}
	return false;
	}
	
	
function getElementsByClass(className, element)
	{
	var allElements;
	var elementsOfThisClass = [];
	
	if (element)
		{allElements = element.getElementsByTagName("*");}
	else
		{allElements = document.getElementsByTagName("*");}
	for (var x = 0; x < allElements.length; x++) 
		{
		if (elementIsMemberOfClass(allElements[x], className))
			{elementsOfThisClass.push(allElements[x]);}
		}
	return elementsOfThisClass;
	}
	
	

function getElementRect(elementID)
	{
	var element = document.getElementById(elementID);
	var left = 0;
	var top = 0;
	var width = 0;
	var height = 0;
	
	if (element == null)
		return {left:left, top:top, width:width, height:height};
		
	width = element.width;
	height = element.height;
	try			// Because sometimes errors on offsetParent after DOM changes.
		{
		while (element.offsetParent)		// While we haven't got the top element in the DOM hierarchy
			{
			left += element.offsetLeft;
			top += element.offsetTop;
			element = element.offsetParent;
			}
		}
	catch (e)
		{ }
	return {left:left, top:top, width:width, height:height};
	}
	
	
	
	
	
	
	