/*
 * Interface elements for jQuery - http://interface.eyecon.ro
 *
 * Copyright (c) 2006 Stefan Petre
 * Dual licensed under the MIT (MIT-LICENSE.txt) 
 * and GPL (GPL-LICENSE.txt) licenses.
 */
jQuery.iUtil = {
	getPosition: function (e) {
		var x = 0;
		var y = 0;
		var restoreStyle = false;
		var es = e.style;
		if (jQuery(e).css('display') == 'none') {
			oldVisibility = es.visibility;
			oldPosition = es.position;
			es.visibility = 'hidden';
			es.display = 'block';
			es.position = 'absolute';
			restoreStyle = true
		}
		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 (restoreStyle) {
			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 {
			oldVisibility = es.visibility;
			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, l, w, h, iw, ih;
		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 && document.documentElement.scrollTop) {
				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 = $.iUtil.getScroll();
		var windowSize = $.iUtil.getSize(el);
		if (!axis || axis == 'vertically') $(el).css({
			top: clientScroll.t + ((Math.max(clientScroll.h, clientScroll.ih) - clientScroll.t - windowSize.hb) / 2) + 'px'
		});
		if (!axis || axis == 'horizontally') $(el).css({
			left: clientScroll.l + ((Math.max(clientScroll.w, clientScroll.iw) - clientScroll.l - windowSize.wb) / 2) + 'px'
		})
	},
	fixPNG: function (el, emptyGIF) {
		var images = $('img[@src*="png"]', el || document),
		png;
		images.each(function () {
			png = this.src;
			this.src = emptyGIF;
			this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + png + "')"
		})
	}
};
[].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
});
jQuery.fxCheckTag = function (e) {
	if (/^tr$|^td$|^tbody$|^caption$|^thead$|^tfoot$|^col$|^colgroup$|^th$|^body$|^header$|^script$|^frame$|^frameset$|^option$|^optgroup$|^meta$/i.test(e.nodeName)) return false;
	else return true
};
jQuery.fx.destroyWrapper = function (e, old) {
	var c = e.firstChild;
	var cs = c.style;
	cs.position = old.position;
	cs.marginTop = old.margins.t;
	cs.marginLeft = old.margins.l;
	cs.marginBottom = old.margins.b;
	cs.marginRight = old.margins.r;
	cs.top = old.top + 'px';
	cs.left = old.left + 'px';
	e.parentNode.insertBefore(c, e);
	e.parentNode.removeChild(e)
};
jQuery.fx.buildWrapper = function (e) {
	if (!jQuery.fxCheckTag(e)) return false;
	var t = jQuery(e);
	var es = e.style;
	var restoreStyle = false;
	var oldStyle = {};
	oldStyle.position = t.css('position');
	if (t.css('display') == 'none') {
		oldVisibility = t.css('visibility');
		es.visibility = 'hidden';
		es.display = '';
		restoreStyle = true
	}
	oldStyle.sizes = jQuery.iUtil.getSize(e);
	oldStyle.margins = jQuery.iUtil.getMargins(e);
	var oldFloat = e.currentStyle ? e.currentStyle.styleFloat: t.css('float');
	oldStyle.top = parseInt(t.css('top')) || 0;
	oldStyle.left = parseInt(t.css('left')) || 0;
	var wid = 'w_' + parseInt(Math.random() * 10000);
	var wr = document.createElement(/^img$|^br$|^input$|^hr$|^select$|^textarea$|^object$|^iframe$|^button$|^form$|^table$|^ul$|^dl$|^ol$/i.test(e.nodeName) ? 'div': e.nodeName);
	jQuery.attr(wr, 'id', wid);
	wr.className = 'fxWrapper';
	var wrs = wr.style;
	var top = 0;
	var left = 0;
	if (oldStyle.position == 'relative' || oldStyle.position == 'absolute') {
		top = oldStyle.top;
		left = oldStyle.left
	}
	wrs.display = 'none';
	wrs.top = top + 'px';
	wrs.left = left + 'px';
	wrs.position = oldStyle.position != 'relative' && oldStyle.position != 'absolute' ? 'relative': oldStyle.position;
	wrs.overflow = 'hidden';
	wrs.height = oldStyle.sizes.hb + 'px';
	wrs.width = oldStyle.sizes.wb + 'px';
	wrs.marginTop = oldStyle.margins.t;
	wrs.marginRight = oldStyle.margins.r;
	wrs.marginBottom = oldStyle.margins.b;
	wrs.marginLeft = oldStyle.margins.l;
	if (jQuery.browser.msie) {
		wrs.styleFloat = oldFloat
	} else {
		wrs.cssFloat = oldFloat
	}
	e.parentNode.insertBefore(wr, e);
	es.marginTop = '0px';
	es.marginRight = '0px';
	es.marginBottom = '0px';
	es.marginLeft = '0px';
	es.position = 'absolute';
	es.listStyle = 'none';
	es.top = '0px';
	es.left = '0px';
	if (restoreStyle) {
		es.display = 'none';
		es.visibility = oldVisibility
	}
	wr.appendChild(e);
	wrs.display = 'block';
	return {
		oldStyle: oldStyle,
		wrapper: jQuery(wr)
	}
};
jQuery.fx.namedColors = {
	aqua: [0, 255, 255],
	azure: [240, 255, 255],
	beige: [245, 245, 220],
	black: [0, 0, 0],
	blue: [0, 0, 255],
	brown: [165, 42, 42],
	cyan: [0, 255, 255],
	darkblue: [0, 0, 139],
	darkcyan: [0, 139, 139],
	darkgrey: [169, 169, 169],
	darkgreen: [0, 100, 0],
	darkkhaki: [189, 183, 107],
	darkmagenta: [139, 0, 139],
	darkolivegreen: [85, 107, 47],
	darkorange: [255, 140, 0],
	darkorchid: [153, 50, 204],
	darkred: [139, 0, 0],
	darksalmon: [233, 150, 122],
	darkviolet: [148, 0, 211],
	fuchsia: [255, 0, 255],
	gold: [255, 215, 0],
	green: [0, 128, 0],
	indigo: [75, 0, 130],
	khaki: [240, 230, 140],
	lightblue: [173, 216, 230],
	lightcyan: [224, 255, 255],
	lightgreen: [144, 238, 144],
	lightgrey: [211, 211, 211],
	lightpink: [255, 182, 193],
	lightyellow: [255, 255, 224],
	lime: [0, 255, 0],
	magenta: [255, 0, 255],
	maroon: [128, 0, 0],
	navy: [0, 0, 128],
	olive: [128, 128, 0],
	orange: [255, 165, 0],
	pink: [255, 192, 203],
	purple: [128, 0, 128],
	red: [255, 0, 0],
	silver: [192, 192, 192],
	white: [255, 255, 255],
	yellow: [255, 255, 0]
};
jQuery.fx.parseColor = function (color, notColor) {
	if (jQuery.fx.namedColors[color]) return {
		r: jQuery.fx.namedColors[color][0],
		g: jQuery.fx.namedColors[color][1],
		b: jQuery.fx.namedColors[color][2]
	};
	else if (result = /^rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)$/.exec(color)) return {
		r: parseInt(result[1]),
		g: parseInt(result[2]),
		b: parseInt(result[3])
	};
	else if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)$/.exec(color)) return {
		r: parseFloat(result[1]) * 2.55,
		g: parseFloat(result[2]) * 2.55,
		b: parseFloat(result[3]) * 2.55
	};
	else if (result = /^#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/.exec(color)) return {
		r: parseInt("0x" + result[1] + result[1]),
		g: parseInt("0x" + result[2] + result[2]),
		b: parseInt("0x" + result[3] + result[3])
	};
	else if (result = /^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/.exec(color)) return {
		r: parseInt("0x" + result[1]),
		g: parseInt("0x" + result[2]),
		b: parseInt("0x" + result[3])
	};
	else return notColor == true ? false: {
		r: 255,
		g: 255,
		b: 255
	}
};
jQuery.fx.cssProps = {
	borderBottomWidth: 1,
	borderLeftWidth: 1,
	borderRightWidth: 1,
	borderTopWidth: 1,
	bottom: 1,
	fontSize: 1,
	height: 1,
	left: 1,
	letterSpacing: 1,
	lineHeight: 1,
	marginBottom: 1,
	marginLeft: 1,
	marginRight: 1,
	marginTop: 1,
	maxHeight: 1,
	maxWidth: 1,
	minHeight: 1,
	minWidth: 1,
	opacity: 1,
	outlineOffset: 1,
	outlineWidth: 1,
	paddingBottom: 1,
	paddingLeft: 1,
	paddingRight: 1,
	paddingTop: 1,
	right: 1,
	textIndent: 1,
	top: 1,
	width: 1,
	zIndex: 1
};
jQuery.fx.colorCssProps = {
	backgroundColor: 1,
	borderBottomColor: 1,
	borderLeftColor: 1,
	borderRightColor: 1,
	borderTopColor: 1,
	color: 1,
	outlineColor: 1
};
jQuery.fx.cssSides = ['Top', 'Right', 'Bottom', 'Left'];
jQuery.fx.cssSidesEnd = {
	'borderWidth': ['border', 'Width'],
	'borderColor': ['border', 'Color'],
	'margin': ['margin', ''],
	'padding': ['padding', '']
};
jQuery.fn.extend({
	animate: function (prop, speed, easing, callback) {
		return this.queue(function () {
			var opt = jQuery.speed(speed, easing, callback);
			var e = new jQuery.fxe(this, opt, prop)
		})
	},
	pause: function (speed, callback) {
		return this.queue(function () {
			var opt = jQuery.speed(speed, callback);
			var e = new jQuery.pause(this, opt)
		})
	},
	stop: function (step) {
		return this.each(function () {
			if (this.animationHandler) jQuery.stopAnim(this, step)
		})
	},
	stopAll: function (step) {
		return this.each(function () {
			if (this.animationHandler) jQuery.stopAnim(this, step);
			if (this.queue && this.queue['fx']) this.queue.fx = []
		})
	}
});
jQuery.extend({
	pause: function (elem, options) {
		var z = this,
		values;
		z.step = function () {
			if (jQuery.isFunction(options.complete)) options.complete.apply(elem)
		};
		z.timer = setInterval(function () {
			z.step()
		},
		options.duration);
		elem.animationHandler = z
	},
	easing: {
		linear: function (p, n, firstNum, delta, duration) {
			return (( - Math.cos(p * Math.PI) / 2) + 0.5) * delta + firstNum
		}
	},
	fxe: function (elem, options, prop) {
		var z = this,
		values;
		var y = elem.style;
		var oldOverflow = jQuery.css(elem, "overflow");
		var oldDisplay = jQuery.css(elem, "display");
		var props = {};
		z.startTime = (new Date()).getTime();
		options.easing = options.easing && jQuery.easing[options.easing] ? options.easing: 'linear';
		z.getValues = function (tp, vp) {
			if (jQuery.fx.cssProps[tp]) {
				if (vp == 'show' || vp == 'hide' || vp == 'toggle') {
					if (!elem.orig) elem.orig = {};
					var r = parseFloat(jQuery.curCSS(elem, tp));
					elem.orig[tp] = r && r > -10000 ? r: (parseFloat(jQuery.css(elem, tp)) || 0);
					vp = vp == 'toggle' ? (oldDisplay == 'none' ? 'show': 'hide') : vp;
					options[vp] = true;
					props[tp] = vp == 'show' ? [0, elem.orig[tp]] : [elem.orig[tp], 0];
					if (tp != 'opacity') y[tp] = props[tp][0] + (tp != 'zIndex' && tp != 'fontWeight' ? 'px': '');
					else jQuery.attr(y, "opacity", props[tp][0])
				} else {
					props[tp] = [parseFloat(jQuery.curCSS(elem, tp)), parseFloat(vp) || 0]
				}
			} else if (jQuery.fx.colorCssProps[tp]) props[tp] = [jQuery.fx.parseColor(jQuery.curCSS(elem, tp)), jQuery.fx.parseColor(vp)];
			else if (/^margin$|padding$|border$|borderColor$|borderWidth$/i.test(tp)) {
				var m = vp.replace(/\s+/g, ' ').replace(/rgb\s*\(\s*/g, 'rgb(').replace(/\s*,\s*/g, ',').replace(/\s*\)/g, ')').match(/([^\s]+)/g);
				switch (tp) {
				case 'margin':
				case 'padding':
				case 'borderWidth':
				case 'borderColor':
					m[3] = m[3] || m[1] || m[0];
					m[2] = m[2] || m[0];
					m[1] = m[1] || m[0];
					for (var i = 0; i < jQuery.fx.cssSides.length; i++) {
						var nmp = jQuery.fx.cssSidesEnd[tp][0] + jQuery.fx.cssSides[i] + jQuery.fx.cssSidesEnd[tp][1];
						props[nmp] = tp == 'borderColor' ? [jQuery.fx.parseColor(jQuery.curCSS(elem, nmp)), jQuery.fx.parseColor(m[i])] : [parseFloat(jQuery.curCSS(elem, nmp)), parseFloat(m[i])]
					}
					break;
				case 'border':
					for (var i = 0; i < m.length; i++) {
						var floatVal = parseFloat(m[i]);
						var sideEnd = !isNaN(floatVal) ? 'Width': (!/transparent|none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset/i.test(m[i]) ? 'Color': false);
						if (sideEnd) {
							for (var j = 0; j < jQuery.fx.cssSides.length; j++) {
								nmp = 'border' + jQuery.fx.cssSides[j] + sideEnd;
								props[nmp] = sideEnd == 'Color' ? [jQuery.fx.parseColor(jQuery.curCSS(elem, nmp)), jQuery.fx.parseColor(m[i])] : [parseFloat(jQuery.curCSS(elem, nmp)), floatVal]
							}
						} else {
							y['borderStyle'] = m[i]
						}
					}
					break
				}
			} else {
				y[tp] = vp
			}
			return false
		};
		for (p in prop) {
			if (p == 'style') {
				var newStyles = jQuery.parseStyle(prop[p]);
				for (np in newStyles) {
					this.getValues(np, newStyles[np])
				}
			} else if (p == 'className') {
				if (document.styleSheets) for (var i = 0; i < document.styleSheets.length; i++) {
					var cssRules = document.styleSheets[i].cssRules || document.styleSheets[i].rules || null;
					if (cssRules) {
						for (var j = 0; j < cssRules.length; j++) {
							if (cssRules[j].selectorText == '.' + prop[p]) {
								var rule = new RegExp('\.' + prop[p] + ' {');
								var styles = cssRules[j].style.cssText;
								var newStyles = jQuery.parseStyle(styles.replace(rule, '').replace(/}/g, ''));
								for (np in newStyles) {
									this.getValues(np, newStyles[np])
								}
							}
						}
					}
				}
			} else {
				this.getValues(p, prop[p])
			}
		}
		y.display = oldDisplay == 'none' ? 'block': oldDisplay;
		y.overflow = 'hidden';
		z.step = function () {
			var t = (new Date()).getTime();
			if (t > options.duration + z.startTime) {
				clearInterval(z.timer);
				z.timer = null;
				for (p in props) {
					if (p == "opacity") jQuery.attr(y, "opacity", props[p][1]);
					else if (typeof props[p][1] == 'object') y[p] = 'rgb(' + props[p][1].r + ',' + props[p][1].g + ',' + props[p][1].b + ')';
					else y[p] = props[p][1] + (p != 'zIndex' && p != 'fontWeight' ? 'px': '')
				}
				if (options.hide || options.show) for (var p in elem.orig) if (p == "opacity") jQuery.attr(y, p, elem.orig[p]);
				else y[p] = "";
				y.display = options.hide ? 'none': (oldDisplay != 'none' ? oldDisplay: 'block');
				y.overflow = oldOverflow;
				elem.animationHandler = null;
				if (jQuery.isFunction(options.complete)) options.complete.apply(elem)
			} else {
				var n = t - this.startTime;
				var pr = n / options.duration;
				for (p in props) {
					if (typeof props[p][1] == 'object') {
						y[p] = 'rgb(' + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].r, (props[p][1].r - props[p][0].r), options.duration)) + ',' + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].g, (props[p][1].g - props[p][0].g), options.duration)) + ',' + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].b, (props[p][1].b - props[p][0].b), options.duration)) + ')'
					} else {
						var pValue = jQuery.easing[options.easing](pr, n, props[p][0], (props[p][1] - props[p][0]), options.duration);
						if (p == "opacity") jQuery.attr(y, "opacity", pValue);
						else y[p] = pValue + (p != 'zIndex' && p != 'fontWeight' ? 'px': '')
					}
				}
			}
		};
		z.timer = setInterval(function () {
			z.step()
		},
		13);
		elem.animationHandler = z
	},
	stopAnim: function (elem, step) {
		if (step) elem.animationHandler.startTime -= 100000000;
		else {
			window.clearInterval(elem.animationHandler.timer);
			elem.animationHandler = null;
			jQuery.dequeue(elem, "fx")
		}
	}
});
jQuery.parseStyle = function (styles) {
	var newStyles = {};
	if (typeof styles == 'string') {
		styles = styles.toLowerCase().split(';');
		for (var i = 0; i < styles.length; i++) {
			rule = styles[i].split(':');
			if (rule.length == 2) {
				newStyles[jQuery.trim(rule[0].replace(/\-(\w)/g, function (m, c) {
					return c.toUpperCase()
				}))] = jQuery.trim(rule[1])
			}
		}
	}
	return newStyles
};
jQuery.iFisheye = {
	build: function (options) {
		return this.each(function () {
			var el = this;
			el.fisheyeCfg = {
				items: jQuery(options.items, this),
				container: jQuery(options.container, this),
				pos: jQuery.iUtil.getPosition(this),
				itemWidth: options.itemWidth,
				itemsText: options.itemsText,
				proximity: options.proximity,
				valign: options.valign,
				halign: options.halign,
				maxWidth: options.maxWidth,
				deltay: options.deltaY
			};
			jQuery.iFisheye.positionContainer(el, 0);
			jQuery(window).bind('resize', function () {
				el.fisheyeCfg.pos = jQuery.iUtil.getPosition(el);
				jQuery.iFisheye.positionContainer(el, 0);
				jQuery.iFisheye.positionItems(el)
			});
			jQuery.iFisheye.positionItems(el);
			el.fisheyeCfg.items.bind('mouseover', function () {
				jQuery(el.fisheyeCfg.itemsText, this).get(0).style.display = 'block'
			}).bind('mouseout', function () {
				jQuery(el.fisheyeCfg.itemsText, this).get(0).style.display = 'none'
			});
			jQuery(document).bind('mousemove', function (e) {
				var pointer = jQuery.iUtil.getPointer(e);
				var toAdd = 0;
				if (el.fisheyeCfg.halign && el.fisheyeCfg.halign == 'center') var posx = pointer.x - el.fisheyeCfg.pos.x - (el.offsetWidth - el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size()) / 2 - el.fisheyeCfg.itemWidth / 2;
				else if (el.fisheyeCfg.halign && el.fisheyeCfg.halign == 'right') var posx = pointer.x - el.fisheyeCfg.pos.x - el.offsetWidth + el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size();
				else var posx = pointer.x - el.fisheyeCfg.pos.x;
				var posy = Math.pow(pointer.y + el.fisheyeCfg.deltay - el.fisheyeCfg.pos.y - el.offsetHeight / 2, 2);
				el.fisheyeCfg.items.each(function (nr) {
					distance = Math.sqrt(Math.pow(posx - nr * el.fisheyeCfg.itemWidth, 2) + posy);
					distance -= el.fisheyeCfg.itemWidth / 2;
					distance = distance < 0 ? 0 : distance;
					distance = distance > el.fisheyeCfg.proximity ? el.fisheyeCfg.proximity: distance;
					distance = el.fisheyeCfg.proximity - distance;
					extraWidth = el.fisheyeCfg.maxWidth * distance / el.fisheyeCfg.proximity;
					this.style.width = el.fisheyeCfg.itemWidth + extraWidth + 'px';
					this.style.left = el.fisheyeCfg.itemWidth * nr + toAdd + 'px';
					toAdd += extraWidth
				});
				jQuery.iFisheye.positionContainer(el, toAdd)
			})
		})
	},
	positionContainer: function (el, toAdd) {
		if (el.fisheyeCfg.halign) if (el.fisheyeCfg.halign == 'center') el.fisheyeCfg.container.get(0).style.left = (el.offsetWidth - el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size()) / 2 - toAdd / 2 + 'px';
		else if (el.fisheyeCfg.halign == 'left') el.fisheyeCfg.container.get(0).style.left = -toAdd / el.fisheyeCfg.items.size() + 'px';
		else if (el.fisheyeCfg.halign == 'right') el.fisheyeCfg.container.get(0).style.left = (el.offsetWidth - el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size()) - toAdd / 2 + 'px';
		el.fisheyeCfg.container.get(0).style.width = el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size() + toAdd + 'px'
	},
	positionItems: function (el) {
		el.fisheyeCfg.items.each(function (nr) {
			this.style.width = el.fisheyeCfg.itemWidth + 'px';
			this.style.left = el.fisheyeCfg.itemWidth * nr + 'px'
		})
	}
};
jQuery.fn.Fisheye = jQuery.iFisheye.build;
