﻿            
/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Konstantin Jagello | http://javascript-array.com/ */

var setDropDown;

$(document).ready(function(){

var TimeOut         = 0;
var currentLayer    = null;
var currentitem     = null;
var closeTimer      = null;

setDropDown = function (link_name,menu_name, offsetX, offsetY) {
	
		$("#" + link_name).bind("mouseover", function(){mopen(link_name, menu_name)});
		$("#" + link_name).bind("mouseout",  function(){mclosetime()});		
		$("#" + menu_name).bind("mouseover", function(){mcancelclosetime()});
		$("#" + menu_name).bind("mouseout",  function(){mclosetime()});
		$(window).bind("resize", function(){changePosition(link_name,menu_name, offsetX, offsetY)});

		$("#" + menu_name).hide();
		$("#" + menu_name).css("position", "absolute");
    changePosition(link_name,menu_name, offsetX, offsetY);
		$("#" + menu_name).css("z-index",9999);//IE6のバグの為、親要素にも、z-indexを指定する必要がある。本メソッドの呼び出し元もしくはcss内で指定すること。	

}

function mopen(link_name, menu_name) {

	var l  = $("#" + menu_name);
  var mm = $("#" + link_name);
	
	if (currentLayer && currentLayer.attr('id') != l.attr('id')){
		mclose();
	}
	
	mcancelclosetime();
	l.css("visibility", "visible");
	l.show();
	currentLayer = l;
	currentitem = mm;	

}

function mclosetime() {
  closeTimer = window.setTimeout(mclose, TimeOut);
}

function mcancelclosetime() {
  if(closeTimer) {
    window.clearTimeout(closeTimer);
    closeTimer = null;
  }
}

function changePosition(link_name,menu_name, offsetX, offsetY) {
		$("#" + menu_name).css("left", ($("#" + link_name).offset().left + Number(offsetX)) + "px");
		$("#" + menu_name).css("top", ($("#" + link_name).height() + $("#" + link_name).offset().top + Number(offsetY)) + "px");
}

function mclose() {
	currentLayer.hide();
}

}); 

          
