


$(function() {

	$("ul.navsystem").preparenavsystem();

});

$.fn.preparenavsystem = function()
{
	this.show();
	if (this.find(".navsystemtopbuttoncontents:first").length>0)
		return this;	// so we don't initialize twice

	this.children("li").each(function() {
				var thiselem = $(this).css("padding",0);
				var submenu = thiselem.children("ul");
				thiselem
					.wrapInner("<div class='navsystemtopbuttoncontents'></div>")
					.append(submenu)
					.children(".navsystemtopbuttoncontents")
						.append("<div class='navsystemtopbuttonleft'></div>");
			});
	var submenus = this.find("ul");
	submenus = submenus.wrap("<div class='submenuholder'><div class='navsystemsubmenucontents'></div></div>").show().parent().parent().bgiframe();
	submenus.append("<div class='navsystemsubmenubottom'><div></div></div>").children(".navsystemsubmenucontents").append("<div class='navsystemsubmenuleft'></div>");

	var lis = this.find("li");
	lis.hover(
		function() { 
			//var level = $(this).parents("div.submenuholder").length;
			//$('body').append("<div>in: "+level+"</div>");
			var thisli = $(this);
			thisli
				.addClass('navsystemitemover')
				.children("div.submenuholder:hidden")
					.displaysubmenu();

			thisli.parents("ul.navsystem:first").css("zIndex",'91');
			navsystemmouseoutli(thisli.siblings(".navsystemitemover"));

		},
		function() {
			var thisli = $(this);
			var thisliparent = thisli.parent();
			if (thisliparent.is(".navsystem"))
			{
				thisliparent.css("zIndex",'90');
				navsystemmouseoutli(thisli);
			}
		}
	);
	return this;
}


function navsystemmouseoutli(objs)
{
	//var level = $(this).parents("div.submenuholder").length;
	//$('body').append("<div>out: "+level+"</div>");
	if (objs.length==0) return;
	objs.find('li').andSelf().removeClass('navsystemitemover');
	var visiblesubmenus = objs.find("div.submenuholder:first");		// hide all descendent uls, not just child one (to close all submenus)
	visiblesubmenus.find("div.submenuholder:first").hide();
	visiblesubmenus.hide();
	objs.find('ul').andSelf().removeClass('navsystemitemover');
	var visiblesubmenus = objs.find("div.submenuholder:last");		// hide all descendent uls, not just child one (to close all submenus)
	visiblesubmenus.find("div.submenuholder:last").hide();
	visiblesubmenus.hide();
	//remove bgi frame here: .children('.bgiframe').remove();
}


function getWindowPosition()
{
	var windowobj = $(window);
	var windowrect = {
		left: windowobj.scrollLeft(),
		top: windowobj.scrollTop()
	};
	windowrect.bottom = windowrect.top+windowobj.height();
	windowrect.right = windowrect.left+windowobj.width();
	return windowrect;
}

$.fn.displaysubmenu = function()
{
	if (this.length==0)
		return this;
		
	var li = this.parent();
	//var lipos = li.offset();
	var lisize;
	lisize = {width: li.outerWidth(), height: li.outerHeight()};
	if (browser.isIE7not)
		lisize.width -= 2;
	
	var newcss;
	var windowrect = getWindowPosition();
	var lipos = li.offset();
	var menuwidth = this.width();
	
	if (li.parent().is(".navsystem"))
	{
		if (lisize.width>this.width()) 
		{
			menuwidth = lisize.width-1;
			this.width(menuwidth);
		}
		newcss = {left:0, top:lisize.height};
		if ((lipos.left + menuwidth > windowrect.right) ||
			li.parent().attr('navsystemrightjust'))
			newcss.left = lisize.width-menuwidth;
	}
	else
	{
		newcss = {left:lisize.width, top:0};
		if (lipos.left + newcss.left + menuwidth > windowrect.right)
			newcss.left = -menuwidth;
	}
	return this.css(newcss).show();
}

$.fn.hint = function (blurClass) {
  if (!blurClass) { 
    blurClass = 'blur';
  }
    
  return this.each(function () {
    // get jQuery version of 'this'
    var $input = $(this),
    
    // capture the rest of the variable to allow for reuse
      title = $input.attr('title'),
      $form = $(this.form),
      $win = $(window);

    function remove() {
      if ($input.val() === title && $input.hasClass(blurClass)) {
        $input.val('').removeClass(blurClass);
      }
    }

    // only apply logic if the element has the attribute
    if (title) { 
      // on blur, set value to title attr if text is blank
      $input.blur(function () {
        if (this.value === '') {
          $input.val(title).addClass(blurClass);
        }
      }).focus(remove).blur(); // now change all inputs to title
      
      // clear the pre-defined text when form is submitted
      $form.submit(remove);
      $win.unload(remove); // handles Firefox's autocomplete
    }
  });
};
