/***********************************************
* jQuery Mega Menu- by JavaScript Kit (www.javascriptkit.com)
* This notice must stay intact for usage
* Visit JavaScript Kit at http://www.javascriptkit.com/ for full source code
***********************************************/

/* jQuery Mega Menu v1.02
* Last updated: June 29th, 2009. This notice must stay intact for usage 
* Author: JavaScript Kit at http://www.javascriptkit.com/
* Visit http://www.javascriptkit.com/script/script2/jScale/ for full source code
*/

jQuery.noConflict();

var jkmegamenu = {

	effectduration: 0, //duration of animation, in milliseconds
	delaytimer: 0, //delay after mouseout before menu should be hidden, in milliseconds

	//No need to edit beyond here
	megamenulabels: [],
	megamenus: [], //array to contain each block menu instances
	zIndexVal: 1000, //starting z-index value for drop down menu
	$shimobj: null,
	subMenuOver: null,
	currentmegamenu_pos: null,
	submenus: new Array(),
	submenuOver: new Array(),
	submenuHover: new Array(),
	submenuCurrentHover: new Array(),
	submenuCurrentOver: new Array(),

	addshim: function ($) {
		$(document.body).append('<IFRAME id="outlineiframeshim" src="' + (location.protocol == "https:" ? 'blank.htm' : 'about:blank') + '" style="display:none; left:0; top:0; z-index:999; position:absolute; filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)" frameBorder="0" scrolling="no"></IFRAME>')
		this.$shimobj = $("#outlineiframeshim")
	},

	alignmenu: function ($, e, megamenu_pos) {
		var megamenu = this.megamenus[megamenu_pos]
		if (megamenu.isAligned < 1) {
			var $anchor = megamenu.$anchorobj
			var $menu = megamenu.$menuobj
			//var menutop=($(window).height()-(megamenu.offsety-$(document).scrollTop()+megamenu.anchorheight)>megamenu.actualheight)? megamenu.offsety+megamenu.anchorheight : megamenu.offsety-megamenu.actualheight
			var menutop = megamenu.offsety + megamenu.anchorheight  //get y coord of menu
			var menuleft = ($(window).width() - (megamenu.offsetx - $(document).scrollLeft()) > megamenu.actualwidth) ? megamenu.offsetx : megamenu.offsetx - megamenu.actualwidth + megamenu.anchorwidth //get x coord of menu
			if (megamenu.direction == "right") {
			}
			else {
				if (this.subMenuOver != null) {
					menuleft = menuleft + megamenu.anchorwidth - 20 - (this.menusOpen(megamenu.$menuobj) % 2) - (223 * this.menusOpen(megamenu.$menuobj)) //get x coord of menu
				}
				else {
					menuleft = menuleft + megamenu.anchorwidth - 20 - 221 //get x coord of menu
				}
			}
			$menu.css({ left: menuleft + "px", top: menutop + "px" })
			this.$shimobj.css({ width: megamenu.actualwidth + "px", height: megamenu.actualheight + "px", left: (menuleft - 10) + "px", top: menutop + "px", display: "block" })
		}
		megamenu.isAligned++;
	},

	showmenu: function (e, megamenu_pos) {
		jkmegamenu.currentmegamenu_pos = megamenu_pos;
		var megamenu = this.megamenus[megamenu_pos]
		var $menu = megamenu.$menuobj
		var $menuinner = megamenu.$menuinner
		if ($menu.css("display") == "none") {
			this.alignmenu(jQuery, e, megamenu_pos)
			$menu.css("z-index", ++this.zIndexVal)
			$menu.show(this.effectduration, function () {
				$menuinner.css('visibility', 'visible')
			})
		}
		else if ($menu.css("display") == "block" && e.type == "click") { //if menu is hidden and this is a "click" event (versus "mouseout")
			this.hidemenu(e, megamenu_pos)
		}
		var indexes = jkmegamenu.extractMenuItemsID($(this));
		for (var i = 0; i < jkmegamenu.submenuCurrentHover.length; i++) {
			jkmegamenu.submenuCurrentHover[i].removeClass('menu_hover');
		}
		jkmegamenu.submenuCurrentHover = new Array();
		for (var i = 0; i < jkmegamenu.submenuCurrentOver.length; i++) {
			jkmegamenu.submenuCurrentOver[i].addClass('submenu_hide');
		}
		jkmegamenu.submenuCurrentOver = new Array();

		//megamenu.$anchorobj.children('img').addClass('disableSwap');
		//megamenu.$anchorobj.children('img').attr('src', megamenu.$anchorobj.children('img').attr('src').replace("-0", "-1"));
		return false
	},

	hidemenu: function (e, megamenu_pos) {
		var megamenu = this.megamenus[megamenu_pos]
		var $menu = megamenu.$menuobj
		var $menuinner = megamenu.$menuinner
		$menuinner.css('visibility', 'hidden')
		this.hideSubMenus($menu, new Array())
		this.$shimobj.css({ display: "none", left: 0, top: 0 })
		$menu.hide(this.effectduration)
		//megamenu.$anchorobj.children('img').removeClass('disableSwap');
		//megamenu.$anchorobj.children('img').attr('src', megamenu.$anchorobj.children('img').attr('src').replace("-1", "-0"));
	},

	hideSubMenus: function ($target, indexes) {
		/*
		var subMenu = jkmegamenu.subMenuOver
		var subMenuKey = subMenu + ":" + indexes;
		if (subMenu != null) {
		if (typeof (jkmegamenu.submenus[subMenuKey]) == 'undefined') {
		jkmegamenu.submenus[subMenuKey] = new Array();
		var $p = $target
		var t = this;
		if (!$target.hasClass("megamenu")) {
		$p = $target.parents('.megamenu');
		}
		for (var i = 1; i < subMenu.length; i++) {
		if (!this.isInIndex(subMenu[i], indexes)) {
		$p.find('.menulist_' + subMenu[i]).each(function (index, elem) {
		jkmegamenu.submenus[subMenuKey][jkmegamenu.submenus[subMenuKey].length] = $(elem);
		$(elem).addClass('submenu_hide');
		});
		}
		}
		for (var i = 1; i < subMenu.length; i++) {
		var mi = '.menuitem';
		for (var j = 0; j <= i; j++) {
		mi += '_' + subMenu[j];
		}
		$p.find(mi).each(function (index, elem2) {
		$(elem2).removeClass('menu_hover');
		$(elem2).children('a').removeClass('menu_hover');
		$(elem2).children('span').removeClass('menu_hover');
		});
		}
		}
		else {
		for (var i = 0; i < jkmegamenu.submenus[subMenu][0].length; i++) {
		jkmegamenu.submenus[subMenu][0][i].removeClass('menu_hover');
		}
		for (var i = 0; i < jkmegamenu.submenus[subMenuKey].length; i++) {
		jkmegamenu.submenus[subMenuKey].addClass('submenu_hide');
		}

		}
		}
		*/
	},
	menusOpen: function ($target) {
		var count = 1;
		var $p = $target
		if (!$target.hasClass("megamenu")) {
			$p = $target.parents('.megamenu');
		}
		$p.children().each(function (index, elem) {
			if (index > 0 && !$(elem).hasClass("submenu_hide")) {
				count++;
			}
		});
		return count;
	},
	isInIndex: function (e, indexes) {
		for (var i = 0; i < indexes.length; i++) {
			if (e == indexes[i]) {
				return true;
			}
		}
		return false;
	},

	isInMenuListIndexes: function ($elem, indexes) {
		for (var i = 0; i < indexes.length; i++) {
			if ($elem.hasClass('menulist_' + indexes[i])) {
				return true;
			}
		}
		return false;
	},
	isInMenuItemIndexes: function ($elem, indexes) {
		var m = "menuitem";
		for (var i = 0; i < indexes.length; i++) {
			m += "_" + indexes[i];
			if ($elem.hasClass(m)) {
				return true;
			}
		}
		return false;
	},
	definemenu: function (anchorid, menuid, revealtype, direction, depth) {
		this.megamenulabels.push([anchorid, menuid, revealtype, direction, depth])
	},

	render: function ($) {
		for (var i = 0, labels = this.megamenulabels[i]; i < this.megamenulabels.length; i++, labels = this.megamenulabels[i]) {
			if ($('#' + labels[0]).length != 1 || $('#' + labels[1]).length != 1) //if one of the two elements are NOT defined, exist
				return
			this.megamenus.push({ $anchorobj: $("#" + labels[0]), $menuobj: $("#" + labels[1]), $menuinner: $("#" + labels[1]).children('ul:first-child'), revealtype: labels[2], hidetimer: null, direction: labels[3], depth: labels[4], isAligned: 0 })
			var megamenu = this.megamenus[i]
			megamenu.$anchorobj.add(megamenu.$menuobj).attr("_megamenupos", i + "pos") //remember index of this drop down menu
			megamenu.actualwidth = megamenu.$menuobj.outerWidth()
			megamenu.actualheight = megamenu.$menuobj.outerHeight()
			megamenu.offsetx = megamenu.$anchorobj.offset().left
			megamenu.offsety = megamenu.$anchorobj.offset().top
			megamenu.anchorwidth = megamenu.$anchorobj.outerWidth()
			megamenu.anchorheight = megamenu.$anchorobj.outerHeight()
			$(document.body).append(megamenu.$menuobj) //move drop down menu to end of document
			megamenu.$menuobj.css("z-index", ++this.zIndexVal).hide()
			megamenu.$menuinner.css("visibility", "hidden")
			megamenu.$anchorobj.bind(megamenu.revealtype == "click" ? "click" : "mouseenter", function (e) {
				var menuinfo = jkmegamenu.megamenus[parseInt(this.getAttribute("_megamenupos"))]
				clearTimeout(menuinfo.hidetimer) //cancel hide menu timer
				return jkmegamenu.showmenu(e, parseInt(this.getAttribute("_megamenupos")))
			})
			megamenu.$anchorobj.bind("mouseleave", function (e) {
				var menuinfo = jkmegamenu.megamenus[parseInt(this.getAttribute("_megamenupos"))]
				if (e.relatedTarget != menuinfo.$menuobj.get(0) && $(e.relatedTarget).parents("#" + menuinfo.$menuobj.get(0).id).length == 0) { //check that mouse hasn't moved into menu object
					menuinfo.hidetimer = setTimeout(function () { //add delay before hiding menu
						jkmegamenu.hidemenu(e, parseInt(menuinfo.$menuobj.get(0).getAttribute("_megamenupos")))
					}, jkmegamenu.delaytimer)
				}
			})
			megamenu.$menuobj.bind("mouseenter", function (e) {
				var menuinfo = jkmegamenu.megamenus[parseInt(this.getAttribute("_megamenupos"))]
				clearTimeout(menuinfo.hidetimer) //cancel hide menu timer
			})
			megamenu.$menuobj.bind("click mouseleave", function (e) {
				var menuinfo = jkmegamenu.megamenus[parseInt(this.getAttribute("_megamenupos"))]
				menuinfo.hidetimer = setTimeout(function () { //add delay before hiding menu
					jkmegamenu.hidemenu(e, parseInt(menuinfo.$menuobj.get(0).getAttribute("_megamenupos")))
				}, jkmegamenu.delaytimer)
			})
		} //end for loop
		if (/Safari/i.test(navigator.userAgent)) { //if Safari
			$(window).bind("resize load", function () {
				for (var i = 0; i < jkmegamenu.megamenus.length; i++) {
					var megamenu = jkmegamenu.megamenus[i]
					var $anchorisimg = (megamenu.$anchorobj.children().length == 1 && megamenu.$anchorobj.children().eq(0).is('img')) ? megamenu.$anchorobj.children().eq(0) : null
					if ($anchorisimg) { //if anchor is an image link, get offsets and dimensions of image itself, instead of parent A
						megamenu.offsetx = $anchorisimg.offset().left
						megamenu.offsety = $anchorisimg.offset().top
						megamenu.anchorwidth = $anchorisimg.width()
						megamenu.anchorheight = $anchorisimg.height()
					}
				}
			})
		}
		else {
			$(window).bind("resize", function () {
				for (var i = 0; i < jkmegamenu.megamenus.length; i++) {
					var megamenu = jkmegamenu.megamenus[i]
					megamenu.offsetx = megamenu.$anchorobj.offset().left
					megamenu.offsety = megamenu.$anchorobj.offset().top
					megamenu.isAligned = 0;
				}
			})
		}
		jkmegamenu.addshim($)
		$(".menulist").each(function (index, elem) {
			var indexes = jkmegamenu.extractMenuItemsID($(this));
			jkmegamenu.submenuOver[$(this).attr('id')] = new Array();
			jkmegamenu.submenuHover[$(this).attr('id')] = new Array();
			for (var i = 0; i < indexes.length; i++) {
				var id = "";
				for (var j = 0; j <= i; j++) {
					id += '_' + indexes[j];
				}
				jkmegamenu.submenuOver[$(this).attr('id')][jkmegamenu.submenuOver[$(this).attr('id')].length] = $('#menulist' + id);
				if (i > 0) {
					jkmegamenu.submenuHover[$(this).attr('id')][jkmegamenu.submenuHover[$(this).attr('id')].length] = $('#menuitem' + id);
				}
			}
		});
		$(".submenu").each(function (index, elem) {
			var indexes = jkmegamenu.extractMenuItemsID($(this));
			jkmegamenu.submenuOver[$(this).attr('id')] = new Array();
			jkmegamenu.submenuHover[$(this).attr('id')] = new Array();
			for (var i = 1; i < indexes.length; i++) {
				var id = "";
				for (var j = 0; j <= i; j++) {
					id += '_' + indexes[j];
				}
				jkmegamenu.submenuHover[$(this).attr('id')][jkmegamenu.submenuHover[$(this).attr('id')].length] = $('#menuitem' + id);
				jkmegamenu.submenuOver[$(this).attr('id')][jkmegamenu.submenuOver[$(this).attr('id')].length] = $('#menulist' + id);
			}
		});
		$(".menulist").mouseover(function (e) {
			/*var found = false;
			for (var i = 0; i < jkmegamenu.submenuCurrentOver.length; i++) {
				if (jkmegamenu.submenuCurrentOver[i].attr('id') == $(this).attr('id')) {
					found = true;
					break;
				}
			}*/

			if (jkmegamenu.submenuCurrentOver[jkmegamenu.submenuCurrentOver.length -1].attr('id') == $(this).attr('id')) {
				var indexes = jkmegamenu.extractMenuItemsID($(this));
				for (var i = 0; i < jkmegamenu.submenuCurrentHover.length; i++) {
					jkmegamenu.submenuCurrentHover[i].removeClass('menu_hover');
				}
				jkmegamenu.submenuCurrentHover = new Array();
				for (var i = 0; i < jkmegamenu.submenuCurrentOver.length; i++) {
					jkmegamenu.submenuCurrentOver[i].addClass('submenu_hide');
				}
				jkmegamenu.submenuCurrentOver = new Array();
				for (var i = 0; i < jkmegamenu.submenuHover[$(this).attr('id')].length; i++) {
					jkmegamenu.submenuCurrentHover[jkmegamenu.submenuCurrentHover.length] = jkmegamenu.submenuHover[$(this).attr('id')][i];
					jkmegamenu.submenuCurrentHover[jkmegamenu.submenuCurrentHover.length - 1].addClass('menu_hover');
				}
				if (jkmegamenu.submenuOver[$(this).attr('id')] != null) {
					for (var i = 0; i < jkmegamenu.submenuOver[$(this).attr('id')].length; i++) {
						jkmegamenu.submenuCurrentOver[jkmegamenu.submenuCurrentOver.length] = jkmegamenu.submenuOver[$(this).attr('id')][i];
						jkmegamenu.submenuCurrentOver[jkmegamenu.submenuCurrentOver.length - 1].removeClass('submenu_hide');
					}
				}
			}
		});
		$(".submenu").mouseover(function (e) {
			var indexes = jkmegamenu.extractMenuItemsID($(this));
			for (var i = 0; i < jkmegamenu.submenuCurrentHover.length; i++) {
				jkmegamenu.submenuCurrentHover[i].removeClass('menu_hover');
			}
			jkmegamenu.submenuCurrentHover = new Array();
			for (var i = 0; i < jkmegamenu.submenuCurrentOver.length; i++) {
				jkmegamenu.submenuCurrentOver[i].addClass('submenu_hide');
			}
			jkmegamenu.submenuCurrentOver = new Array();
			for (var i = 0; i < jkmegamenu.submenuHover[$(this).attr('id')].length; i++) {
				jkmegamenu.submenuCurrentHover[jkmegamenu.submenuCurrentHover.length] = jkmegamenu.submenuHover[$(this).attr('id')][i];
				jkmegamenu.submenuCurrentHover[jkmegamenu.submenuCurrentHover.length - 1].addClass('menu_hover');
			}
			if (jkmegamenu.submenuOver[$(this).attr('id')] != null) {
				for (var i = 0; i < jkmegamenu.submenuOver[$(this).attr('id')].length; i++) {
					jkmegamenu.submenuCurrentOver[jkmegamenu.submenuCurrentOver.length] = jkmegamenu.submenuOver[$(this).attr('id')][i];
					jkmegamenu.submenuCurrentOver[jkmegamenu.submenuCurrentOver.length - 1].removeClass('submenu_hide');
				}
			}

			//alert(indexes);
			/*
			var indexes = jkmegamenu.extractMenuItems($(this));
			if (indexes != null) {
			jkmegamenu.hideSubMenus($(this), indexes);
			jkmegamenu.subMenuOver = indexes;
			if (typeof (jkmegamenu.submenus[indexes]) == 'undefined') {
			jkmegamenu.submenus[indexes] = new Array();
			jkmegamenu.submenus[indexes][0] = new Array();
			jkmegamenu.submenus[indexes][1] = new Array();
			$('#debugInfo').html($('#debugInfo').html() + "onMouseOver\r\n");
			if (indexes != null) {
			$p = $(this).parents('.megamenu');
			$p.children('.menulist_' + indexes[indexes.length - 1]).each(function (index, elem2) {
			jkmegamenu.submenus[indexes][1][jkmegamenu.submenus[indexes][1].length] = $(this);
			});
			//$p.children('.menulist_' + indexes[indexes.length - 1]).removeClass('submenu_hide');
			for (var i = 0; i < indexes.length; i++) {
			var mi = '.menuitem';
			for (var j = 0; j <= i; j++) {
			mi += '_' + indexes[j];
			}
			$p.find(mi).each(function (index, elem2) {
			jkmegamenu.submenus[indexes][0][jkmegamenu.submenus[indexes][0].length] = $(elem2);
			//$(elem2).addClass('menu_hover');
			//$(elem2).children('a').addClass('menu_hover');
			//$(elem2).children('span').addClass('menu_hover');
			});
			}
			jkmegamenu.submenus[indexes][0][jkmegamenu.submenus[indexes][0].length] = $(this);
			//$(this).addClass('menu_hover');
			//$(this).children('a').addClass('menu_hover');
			//$(this).children('span').addClass('menu_hover');

			}
			}
			for (var i = 0; i < jkmegamenu.submenus[indexes][0].length; i++) {
			jkmegamenu.submenus[indexes][0][i].addClass('menu_hover');
			}
			for (var i = 0; i < jkmegamenu.submenus[indexes][1].length; i++) {
			jkmegamenu.submenus[indexes][1][i].removeClass('submenu_hide');
			}

			jkmegamenu.alignmenu(jQuery, e, jkmegamenu.currentmegamenu_pos);
			}
			*/
		});
	},
	extractMenuItems: function ($target) {
		if ($target != null && $target.attr('class') != null) {
			var match = $target.attr('class').match(/menuitem_[0-9\_]+/);
			if (match != null && match.length > 0) {
				var tokens = match[0].split('_');
				return tokens.slice(1);
			}
		}
		return null;
	},
	extractMenuItemsID: function ($target) {
		if ($target != null && $target.attr('id') != null) {
			var tokens = $target.attr('id').split('_');
			return tokens.slice(1);
		}
		return null;
	}
}

jQuery(document).ready(function ($) {
	jkmegamenu.render($)
})

//jkmegamenu.definemenu("anchorid", "menuid", "mouseover|click")

var overStatus = "off";
var overID = "";
function imageDelay(a,b)
{
	overStatus = "off";
	
	setTimeout("imageDelayHelper('"+a+"','"+b+"');",100);
}
function imageDelayHelper(a,b)
{
	if(overStatus == "off" || overID != a)
	{
		MM_swapImage(a,'',b,0);
	}
}
function overStatusChange(thisItem)
{
	overID = thisItem.id;
}
