(function($) {
	$.fn.hoverIntent = function(f,g) {
		// default configuration options
		var cfg = {
			sensitivity: 7,
			interval: 100,
			timeout: 200
		};
		// override configuration options with user supplied object
		cfg = $.extend(cfg, g ? { over: f, out: g } : f );

		// instantiate variables
		// cX, cY = current X and Y position of mouse, updated by mousemove event
		// pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
		var cX, cY, pX, pY;

		// A private function for getting mouse position
		var track = function(ev) {
			cX = ev.pageX;
			cY = ev.pageY;
		};

		// A private function for comparing current and previous mouse position
		var compare = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			// compare mouse positions to see if they've crossed the threshold
			if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
				$(ob).unbind("mousemove",track);
				// set hoverIntent state to true (so mouseOut can be called)
				ob.hoverIntent_s = 1;
				return cfg.over.apply(ob,[ev]);
			} else {
				// set previous coordinates for next time
				pX = cX; pY = cY;
				// use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
				ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
			}
		};

		// A private function for delaying the mouseOut function
		var delay = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			ob.hoverIntent_s = 0;
			return cfg.out.apply(ob,[ev]);
		};

		// A private function for handling mouse 'hovering'
		var handleHover = function(e) {
			// copy objects to be passed into t (required for event object to be passed in IE)
			var ev = jQuery.extend({},e);
			var ob = this;

			// cancel hoverIntent timer if it exists
			if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }

			// if e.type == "mouseenter"
			if (e.type == "mouseenter") {
				// set "previous" X and Y position based on initial entry point
				pX = ev.pageX; pY = ev.pageY;
				// update "current" X and Y position based on mousemove
				$(ob).bind("mousemove",track);
				// start polling interval (self-calling timeout) to compare mouse coordinates over time
				if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}

			// else e.type == "mouseleave"
			} else {
				// unbind expensive mousemove event
				$(ob).unbind("mousemove",track);
				// if hoverIntent state is true, then call the mouseOut function after the specified delay
				if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
			}
		};

		// bind the function to the two event listeners
		return this.bind('mouseenter',handleHover).bind('mouseleave',handleHover);
	};
})(jQuery);

$(document).ready(function() {

	var pathImage='/public/images/topicons/';//path image

	var MenuPackIcon=new Array(); //set icon for pop menu

		MenuPackIcon[1]="desktop.png";

		MenuPackIcon[2]="education.png";

		MenuPackIcon[3]="business.png";

		MenuPackIcon[4]="games.png";

		MenuPackIcon[5]="internet.png";

		MenuPackIcon[6]="multimedia.png";

		MenuPackIcon[7]="development.png";

		MenuPackIcon[8]="utilities.png";

	$('#globalnav li').hoverIntent(function(){//event li hover for 300 ms

		var wId = $(this).attr('rel');//get url loaded from attribute rel for id Widget

		if(wId!=''){//if not have value on attribute rel will not show the popup

			var Pleft = PleftArrow = 0;//set default variable for positioning the popup

			if($(this).position().left>280 && $(this).position().left<=400){//position if the element position left is >280 and <=400

				Pleft = parseInt(500/2);

			}

			else if($(this).position().left>500){//if >400

				Pleft = 450;

			}

			else{//else

				Pleft = 0;

			}

			var blockLoader = $('<div />').addClass('blockLoader').css({'left':-Pleft+'px'}).append('<div class="loadingMenuWidget"></div><div class="widgetPic"><a href=""><img src="'+pathImage+MenuPackIcon[wId]+'" alt="" /></a></div><div class="contentMenuWidget"></div><div class="clr"></div>');//create popup element

			$(this).append(blockLoader);//insert popup element on this li

			blockLoader.fadeIn();//showing the popup

	

			$('.blockLoader .contentMenuWidget').load('/category/widget/'+wId,function(){//load the data from url

				$('.blockLoader .loadingMenuWidget').hide();//hide loading block

			});

		}

	},function(){//event if mouseout on li tag

		$('.blockLoader').remove();//first fade out the popup and remove/

	});
/*
	$('.main_discount .titleProd,.main_discount .img').hoverIntent(function(){

		$('.blockLoaderDiscount').fadeOut(function(){$(this).remove();});

		var id = $(this).parent().attr('rel');

		var _this = $(this).parent();

		var blockLoaderDiscount = $('<div />').addClass('blockLoaderDiscount').append('<div class="loadingDiscountWidget"></div><i class="arrow"></i>');

		$(this).append(blockLoaderDiscount);

		$.get("http://www.softpicks.net/programs/discount_widget/"+id, function (data) {

			var newContent = '<div class="discountPic">';

			newContent += '<img src="'+data.boxshot_link+'" alt="" />';

			newContent += '</div><div class="contentDiscountWidget">';

			newContent += '<div class="title"><a href="'+data.product_link+'">'+data.title+'</a></div>';

			newContent += '<div class="discount">'+data.discount+'</div>';

			newContent += '<div class="price"><s>'+data.price+'$</s> - '+data.new_price+'$</div>';

			if(data.expires!='') newContent += '<div class="gift">'+data.expires+'</div>';

			newContent += '<a href="'+data.buy_link+'"><div class="buy_discountpop" onclick="$(\'#loadingBuyLink\').fadeIn();" ><img alt="Download full version of Odin Frame Photo Creator" src="/public/images/english/but-get-full-version.gif" /></div></a>';

			newContent += '<a href="'+data.download_link+'" class="freeDownload">FREE DOWNLOAD</a>';

			newContent += '</div><div class="clr"></div>';

			blockLoaderDiscount.append(newContent);//create popup element

			//insert popup element on this element

			$('.blockLoaderDiscount .loadingDiscountWidget').fadeOut();

		},'json');

	},function(){});

	$('.rightcol').hoverIntent(function(){

		

	},function(){

		$('.blockLoaderDiscount').fadeOut(function(){$(this).remove();});//first fade out the popup on right and remove/

	});
*/
});

//$(window).unload(function(){$('#loadingBuyLink').hide();});//before unload the page hide the loadingBuylink
