/*
+------------------------------------------------------------------------------------------+
* COMPANY: Raven Developers 2009
+------------------------------------------------------------------------------------------+
* FILE INFO: Menu system Java Script
+------------------------------------------------------------------------------------------+
* WEBSITE: http://www.ravendevelopers.com
+------------------------------------------------------------------------------------------+
* Portions created by Anirudh K. Mahant are Copyright of Raven Developers (C) 2009.
+------------------------------------------------------------------------------------------+
* COPYRIGHT NOTICE:
* The original author(s) retain all the copyrights of this file.
* Portions created by Anirudh K. Mahant (original developer) are Copyright of Raven Developers (C) 2009.
* Portions contains jQuery JavaScript framework developed by John Resig and other
* community members. More info at http://docs.jquery.com/About
* jQuery LICENSE:
* Copyright (c) 2008 John Resig (jquery.com)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
+------------------------------------------------------------------------------------------+
*/

(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);

function showMenu(){
	var theDropDown = jQuery(this).find('a').parent().find('.menu-dropdown');
	//Fixes the menu dropdown placement in IE
	if (jQuery.browser.msie){
		var posX = this.offsetLeft;
		jQuery(theDropDown).css({ left: posX + 'px'});
		jQuery(theDropDown).slideDown(500);
	}
	else{
		jQuery(theDropDown).slideDown(200);
	}
}

function hideMenu(){
	jQuery(this).parent().find(".site-menu, .menu-dropdown").slideUp(200);
}

// Fixes some hover issues on menuparent class and takes care of displaying the overall menusystem :)
jQuery(document).ready(function(){

  var config = {
	 sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)
	 interval: 100, // number = milliseconds for onMouseOver polling interval
	 over: showMenu, // function = onMouseOver callback (REQUIRED)
	 timeout: 100, // number = milliseconds delay before onMouseOut
	 out: hideMenu // function = onMouseOut callback (REQUIRED)
	};

	// Set display style none at first
	jQuery(".site-menu .menu-dropdown").css({display: 'none'});
	jQuery(function(){jQuery('div.menu-dropdown').pngFix();});
	jQuery("div.site-menu table tbody tr td.m-content li:last-child").addClass('ielcfix');
	// Fix Opera Bugs
	if (jQuery.browser.opera){ 
		//jQuery("div.menu-dropdown").css("z-index","99999");
		//jQuery("div.menu-dropdown").css("margin-top","23px");
	}
	// Show the drop down menu controls display and hiding of the drop down menu
//	jQuery(".site-menu ul li").hover(
//		function () {
//			var theDropDown = jQuery(this).find('a').parent().find('.menu-dropdown');
//			//Fixes the menu dropdown placement in IE
//			if (jQuery.browser.msie){
//				var posX = this.offsetLeft;
//				jQuery(theDropDown).css({ left: posX + 'px'});
//				jQuery(theDropDown).show();
//			}
//			else{
//				//jQuery(theDropDown).slideDown(200);
//				jQuery(theDropDown).show();
//			}
//		},
//		function () {
//		  jQuery(this).parent().find('.menu-dropdown').css({display: 'none'});
//		}
//	);
  jQuery(".site-menu ul li").hoverIntent(config);
	// This code adds an extra class to the drop down menus parent anchor so that it
	// doesnt loose its focus style or hover style when cursor is moved out from it.
	jQuery(".menu-dropdown").hover(
		function () {
		  jQuery(this).siblings('a').addClass('menu-hover');
		},
		function () {
		  jQuery(this).siblings('a').removeClass('menu-hover');
		}
	);
	// Brute force hide all menu dropdowns
	jQuery(".site-menu", ".menu-dropdown").hover(
		function () {
		  return false;
		},
		function () {
			jQuery(this).find('.menu-dropdown').each(function(i){ 
				jQuery(this).css({display: 'none'});
			});
		}
	);
});
