/*	_________________________________________________

		SANDER internetoplossingen

		info@sandermedia.nl
		www.sandermedia.nl

		Leliestraat 1
		7943AV Meppel
		0522 24 68 17
		The Netherlands

		Timezone GMT +1
	_________________________________________________
	
		Script version: v1.2
	_________________________________________________

		Needs:
			Nothing

		Usage:
	
			Just include this script likt this
				<script type="text/javascript" src="utils.js"></script>

			Available functions:

				Utils.Version()
					Gets the current version

				Utils.AddEvent( element, eventName, functionPointer )
					Calls the supplied function when the supplied element triggers the supplied event

				Utils.GetHTTPObject()
					Returns object to do asynchronous (xml)http requests with (usefull for ajax and json)

				Utils.GetKeyFromEvent( event )
					Returns key from supplied event

				Utils.SetElementOpacity( element, opacity )
					Opacity from 0 to 100, returns nothing
					
				Utils.GetStyle( element, style )
					Returns the style value

				Utils.GetElementsByClass( class, node, tag )
					Returns array of elements with a certain class (optional: start searching from a certain node, or with a specific tag)

	_________________________________________________

		Changelog:
			v1.2:	- Added SetElementOpacity
					- Added GetStyle
					- GetElementsByClass

			v1.1:	- Added getKeyFromEvent
					- Moved functions into namespace Utils

			v1.0:	- Initial version
	_________________________________________________
*/			


var Utils = 
{
	// Get current version
	Version : function()
	{
		return 'v1.1';
	},

	// Cross-browser way of adding a event to an element
	AddEvent : function( element, eventName, functionPointer )
	{
		if(element.addEventListener)
		{
			element.addEventListener(eventName, functionPointer, false);
		}
		else if (element.attachEvent)
		{
			element.attachEvent('on'+eventName, functionPointer);
		}
	},


	// Cross-browser way of getting a (xml)http object
	GetHTTPObject : function()
	{
		if (typeof XMLHttpRequest != 'undefined')
		{
			return new XMLHttpRequest();
		}
		try
		{
			return new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				return new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {}
		}
		return false;
	},


	// Cross-browser way of getting the pressed key from a key event
	GetKeyFromEvent : function( myEvent )
	{
		if ( !myEvent || !myEvent.keyCode )
		{
			myKey = window.event;
		}
		myKey = myEvent.keyCode;
		if ( document.layers )
		{
			myKey = myEvent.which;
		}

		return myKey;
	},


	// Cross-browser way of removing all selections
	ClearSelection : function()
	{
		if(document.selection && document.selection.empty)
		{
			document.selection.empty();
		}
		else if(window.getSelection)
		{
			var sel = window.getSelection();
			sel.removeAllRanges();
		}
	},


	// Cross-browser way to set the opacity of an element like a div (long parameter names to make them unique)
	SetElementOpacity : function( setElementOpacityElement, setElementOpacityOpacity )
	{
		if ((setElementOpacityElement) && (setElementOpacityElement.style))
		{
			setElementOpacityElement.style.filter = 'Alpha(opacity='+setElementOpacityOpacity+')';
			setElementOpacityElement.style.MozOpacity = setElementOpacityOpacity / 100;
			setElementOpacityElement.style.KhtmlOpacity = setElementOpacityOpacity / 100;
			setElementOpacityElement.style.opacity = setElementOpacityOpacity / 100;
		}
	},

	// Cross-browser way of getting a style propperty
	GetStyle : function( element, styleProp )
	{
		var y = '';
		if (element.currentStyle)
		{
			y = element.currentStyle[styleProp];
		}
		else if (window.getComputedStyle)
		{
			y = document.defaultView.getComputedStyle( element, null ).getPropertyValue( styleProp );
		}
		return y;
	},


	// Cross-browser way to get all elements with a class
	GetElementsByClass : function(searchClass,node,tag)
	{
		var classElements = new Array();
		if ( node == null )
		{
			node = document;
		}
		if ( tag == null )
		{
			tag = '*';
		}
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
		for (i=0, j=0; i<elsLen; i++)
		{
			if ( pattern.test(els[i].className) )
			{
				classElements[j] = els[i];
				j++;
			}
		}
		return classElements;
	}
}

