/*
 * imgPreview jQuery plugin Copyright (c) 2009 James Padolsey j@qd9.co.uk |
 * http://james.padolsey.com Dual licensed under MIT and GPL. Updated: 09/02/09
 * @author James Padolsey
 * 
 * @version 0.22
 */
(function(c) {
	c.expr[':'].linkingToImage = function(a, g, e) {
		return !!(c(a).attr(e[3]) && c(a).attr(e[3])
				.match(/\.(gif|jpe?g|png|bmp)$/i))
	};
	c.fn.imgPreview = function(j) {
		var b = c.extend({
					imgCSS : {},
					distanceFromCursor : {
						top : 10,
						left : 10
					},
					preloadImages : true,
					onShow : function() {
					},
					onHide : function() {
					},
					onLoad : function() {
					},
					containerID : 'imgPreviewContainer',
					containerLoadingClass : 'loading',
					thumbPrefix : '',
					srcAttr : 'href'
				}, j), d = c('<div/>').attr('id', b.containerID)
				.append('<img/>').hide().css('position', 'absolute')
				.appendTo('body'), f = c('img', d).css(b.imgCSS), h = this
				.filter(':linkingToImage(' + b.srcAttr + ')');
		function i(a) {
			return a.replace(/(\/?)([^\/]+)$/, '$1' + b.thumbPrefix + '$2')
		}
		if (b.preloadImages) {
			(function(a) {
				var g = new Image(), e = arguments.callee;
				g.src = i(c(h[a]).attr(b.srcAttr));
				g.onload = function() {
					h[a + 1] && e(a + 1)
				}
			})(0)
		}
		h.mousemove(function(a) {
			/*alert($(window).height()); //浏览器当前窗口可视区域高度
			alert($(document).height()); //浏览器当前窗口文档的高度
			alert($(document.body).height());//浏览器当前窗口文档body的高度
			alert($(document.body).outerHeight(true));//浏览器当前窗口文档body的总高度 包括border padding margin
			alert($(window).width()); //浏览器当前窗口可视区域宽度
			alert($(document).width());//浏览器当前窗口文档对象宽度
			alert($(document.body).width());//浏览器当前窗口文档body的高度
			alert($(document.body).outerWidth(true));//浏览器当前窗口文档body的总宽度 包括border padding margin
			*/

			if(d.width() != 0 && d.height() != 0){
			var topy = ((a.pageY + d.height()) > $(window).height())?((a.pageY - d.height()) < 0 ? 0 : (a.pageY - d.height())):(a.pageY + b.distanceFromCursor.top);
			var leftx = ((a.pageX + d.width()+40) > $(window).width())?($(window).width() - d.width()-80):(a.pageX + b.distanceFromCursor.left);
			//alert("图片宽:"+d.width()+"高:"+d.height()+"==鼠标位置X:"+a.pageX+"鼠标位置Y:"+a.pageY+"--屏幕宽高:"+$(window).width()+"=="+$(window).height()+"最后结果:"+leftx+"=="+topy);
					d.css({
								top : topy + 'px',
								left : leftx + 'px'
							})
			}
				}).hover(function() {
					var a = this;
					d.addClass(b.containerLoadingClass).show();
					f.load(function() {
								d.removeClass(b.containerLoadingClass);
								f.show();
								b.onLoad.call(f[0], a)
							}).attr('src', i(c(a).attr(b.srcAttr)));
					//b.onShow.call(d[0], a)
				}, function() {
					d.hide();
					//f.unbind('load').attr('src', '').hide();
					//b.onHide.call(d[0], this)
				});
		return this
	}
})(jQuery);
