/**
 * Interface Elements for jQuery
 * utility function
 *
 * http://interface.eyecon.ro
 *
 * Copyright (c) 2006 Stefan Petre
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 *
 */
jQuery.noConflict();
	jQuery(document).ready(function($){
	jQuery.iUtil = {
		getPosition : function(e)
		{
			var x = 0;
			var y = 0;
			var es = e.style;
			var restoreStyles = false;
			if (jQuery(e).css('display') == 'none') {
				var oldVisibility = es.visibility;
				var oldPosition = es.position;
				restoreStyles = true;
				es.visibility = 'hidden';
				es.display = 'block';
				es.position = 'absolute';
			}
			var el = e;
			while (el){
				x += el.offsetLeft + (el.currentStyle && !jQuery.browser.opera ?parseInt(el.currentStyle.borderLeftWidth)||0:0);
				y += el.offsetTop + (el.currentStyle && !jQuery.browser.opera ?parseInt(el.currentStyle.borderTopWidth)||0:0);
				el = el.offsetParent;
			}
			el = e;
			while (el && el.tagName  && el.tagName.toLowerCase() != 'body')
			{
				x -= el.scrollLeft||0;
				y -= el.scrollTop||0;
				el = el.parentNode;
			}
			if (restoreStyles == true) {
				es.display = 'none';
				es.position = oldPosition;
				es.visibility = oldVisibility;
			}
			return {x:x, y:y};
		},
		getPositionLite : function(el)
		{
			var x = 0, y = 0;
			while(el) {
				x += el.offsetLeft || 0;
				y += el.offsetTop || 0;
				el = el.offsetParent;
			}
			return {x:x, y:y};
		},
		getSize : function(e)
		{
			var w = jQuery.css(e,'width');
			var h = jQuery.css(e,'height');
			var wb = 0;
			var hb = 0;
			var es = e.style;
			if (jQuery(e).css('display') != 'none') {
				wb = e.offsetWidth;
				hb = e.offsetHeight;
			} else {
				var oldVisibility = es.visibility;
				var oldPosition = es.position;
				es.visibility = 'hidden';
				es.display = 'block';
				es.position = 'absolute';
				wb = e.offsetWidth;
				hb = e.offsetHeight;
				es.display = 'none';
				es.position = oldPosition;
				es.visibility = oldVisibility;
			}
			return {w:w, h:h, wb:wb, hb:hb};
		},
		getSizeLite : function(el)
		{
			return {
				wb:el.offsetWidth||0,
				hb:el.offsetHeight||0
			};
		},
		getClient : function(e)
		{
			var h, w, de;
			if (e) {
				w = e.clientWidth;
				h = e.clientHeight;
			} else {
				de = document.documentElement;
				w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
				h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
			}
			return {w:w,h:h};
		},
		getScroll : function (e)
		{
			var t=0, l=0, w=0, h=0, iw=0, ih=0;
			if (e && e.nodeName.toLowerCase() != 'body') {
				t = e.scrollTop;
				l = e.scrollLeft;
				w = e.scrollWidth;
				h = e.scrollHeight;
				iw = 0;
				ih = 0;
			} else  {
				if (document.documentElement) {
					t = document.documentElement.scrollTop;
					l = document.documentElement.scrollLeft;
					w = document.documentElement.scrollWidth;
					h = document.documentElement.scrollHeight;
				} else if (document.body) {
					t = document.body.scrollTop;
					l = document.body.scrollLeft;
					w = document.body.scrollWidth;
					h = document.body.scrollHeight;
				}
				iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
				ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
			}
			return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
		},
		getMargins : function(e, toInteger)
		{
			var el = jQuery(e);
			var t = el.css('marginTop') || '';
			var r = el.css('marginRight') || '';
			var b = el.css('marginBottom') || '';
			var l = el.css('marginLeft') || '';
			if (toInteger)
				return {
					t: parseInt(t)||0,
					r: parseInt(r)||0,
					b: parseInt(b)||0,
					l: parseInt(l)
				};
			else
				return {t: t, r: r,	b: b, l: l};
		},
		getPadding : function(e, toInteger)
		{
			var el = jQuery(e);
			var t = el.css('paddingTop') || '';
			var r = el.css('paddingRight') || '';
			var b = el.css('paddingBottom') || '';
			var l = el.css('paddingLeft') || '';
			if (toInteger)
				return {
					t: parseInt(t)||0,
					r: parseInt(r)||0,
					b: parseInt(b)||0,
					l: parseInt(l)
				};
			else
				return {t: t, r: r,	b: b, l: l};
		},
		getBorder : function(e, toInteger)
		{
			var el = jQuery(e);
			var t = el.css('borderTopWidth') || '';
			var r = el.css('borderRightWidth') || '';
			var b = el.css('borderBottomWidth') || '';
			var l = el.css('borderLeftWidth') || '';
			if (toInteger)
				return {
					t: parseInt(t)||0,
					r: parseInt(r)||0,
					b: parseInt(b)||0,
					l: parseInt(l)||0
				};
			else
				return {t: t, r: r,	b: b, l: l};
		},
		getPointer : function(event)
		{
			var x = event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) || 0;
			var y = event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) || 0;
			return {x:x, y:y};
		},
		traverseDOM : function(nodeEl, func)
		{
			func(nodeEl);
			nodeEl = nodeEl.firstChild;
			while(nodeEl){
				jQuery.iUtil.traverseDOM(nodeEl, func);
				nodeEl = nodeEl.nextSibling;
			}
		},
		purgeEvents : function(nodeEl)
		{
			jQuery.iUtil.traverseDOM(
				nodeEl,
				function(el)
				{
					for(var attr in el){
						if(typeof el[attr] === 'function') {
							el[attr] = null;
						}
					}
				}
			);
		},
		centerEl : function(el, axis)
		{
			var clientScroll = jQuery.iUtil.getScroll();
			var windowSize = jQuery.iUtil.getSize(el);
			if (!axis || axis == 'vertically')
				jQuery(el).css(
					{
						top: clientScroll.t + ((Math.max(clientScroll.h,clientScroll.ih) - clientScroll.t - windowSize.hb)/2) + 'px'
					}
				);
			if (!axis || axis == 'horizontally')
				jQuery(el).css(
					{
						left:	clientScroll.l + ((Math.max(clientScroll.w,clientScroll.iw) - clientScroll.l - windowSize.wb)/2) + 'px'
					}
				);
		},
		fixPNG : function (el, emptyGIF) {
			var images = jQuery('img[@src*="png"]', el||document), png;
			images.each( function() {
				png = this.src;				
				this.src = emptyGIF;
				this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + png + "')";
			});
		}
	};

	// Helper function to support older browsers!
	[].indexOf || (Array.prototype.indexOf = function(v, n){
		n = (n == null) ? 0 : n;
		var m = this.length;
		for (var i=n; i<m; i++)
			if (this[i] == v)
				return i;
		return -1;
	});
});

