// JavaScript Document

var GsMnDropdownOpenLink, GsMnDropdownOpenMenu;

function Dropdown(gsMenu) {
	this.menu;
	this.name = 'Dropdown';
	this.hover_obj_id = null;
	this.hover_t = new Array();
	this.hover_a = new Array();
	this.__intvl = new Array();
	this.__objects = new Array();
	this.__menues = new Array();
	if (gsMenu) this.menu = gsMenu;
	}
	
Dropdown.prototype.open = function(obj, gsMenu, sequence) {
	oLvl 		= Dropdown.open.arguments[3];
	menuClsNm	= Dropdown.open.arguments[4];
	lL			= Dropdown.open.arguments[5];
	uL			= Dropdown.open.arguments[6];
	
	if (!oLvl) 	oLvl = 1;
	if (!lL) 	lL = 0;
	if (!menuClsNm) {
		var ddDiv = obj.parentNode.parentNode.parentNode;
		menuClsNm = ddDiv.className;
		}
	
	this.close(obj, gsMenu, gsMenu.sequences[sequence].parent.sequence);
	
	mI = gsMenu.sequences[sequence];
	if (mI && mI.Items.length > 0) {
		if (uL && (mI.level+1) > uL) uLOver = true;
		else uLOver = false;
		
		if (!uLOver && (mI.level+1) >= lL) this.expand(obj, gsMenu, sequence, oLvl, menuClsNm, lL, uL);
		}
	}
	
Dropdown.prototype.close = function (obj, gsMenu, sequence) {
	switch (typeof obj)
	{
			case 'object':
				var ddDiv 	= obj.parentNode.parentNode.parentNode;
				var mnId 	= ddDiv.id.split('_')[0];
			break;
			
			default:
				mnId = obj;
			break;
	}
	dmI = gsMenu.sequences[sequence];
	for (i=0; i<dmI.Items.length; i++) {
		var clObj = document.getElementById(mnId + '_' + dmI.Items[i].sequence + '_dd');
		if (clObj) {
			this.close(obj, gsMenu, dmI.Items[i].sequence);
			var ddParent = clObj.parentNode;
			var delTb = ddParent.removeChild(clObj);
			}
		}
	}
	
Dropdown.prototype.isHover = function (menu_inst_name, sequence)
{
	var hover = false;
	if (this.hover_obj_id == menu_inst_name + '_' + sequence + '_dd')
	{
		hover = true;
	}
	else
	{
		var gsMenu = ___GS_MENUS[menu_inst_name];
		dmI = gsMenu.sequences[sequence];
		var i;
		for (i=0; i<dmI.Items.length; i++) 
		{
			if (this.isHover(menu_inst_name, dmI.Items[i].sequence))
			{
				hover = true;
			}
		}
	}
	return hover;
}
	
Dropdown.prototype.closeIfHover = function (menu_inst_name, sequence) 
{
	//___GS_MENUS[menu_inst_name].sequences[sequence].__obj.style.display = 'none';
	if (!this.isHover(menu_inst_name, sequence))
	{
		this.hover_obj_id = null;
		this.close
		(
		 	menu_inst_name, 
			___GS_MENUS[menu_inst_name], 
			___GS_MENUS[menu_inst_name].sequences[sequence].parent.sequence
		);
	}
}

Dropdown.prototype.expand = function (obj, gsMenu, sequence, oLvl, menuClsNm, lL, uL) {
	var ddDiv 	= obj.parentNode.parentNode.parentNode;
	var mnId 	= ddDiv.id.split('_')[0];
	dd 	= document.createElement("div");
	objPos = Blacksmith.objPos(obj);
	dd.style.position	= 'absolute';
	dd.name				= mnId;
	dd.id				= mnId + '_' + sequence + '_dd';
	dd.style.zIndex		= 990+oLvl;
	
	var i;
	for (i in Dropdown.__intvl)
	{
		clearTimeout(Dropdown.__intvl[i]);
	}
	Dropdown.__intvl = new Array();
	
	dd.onmouseover		= function()
	{
		Dropdown.hover_obj_id = this.id;
		var _p = this.id.split('_');
		Dropdown.__intvl[_p[0] + '_' + _p[1]] 	= setTimeout('Dropdown.closeIfHover(\'' + _p[0] + '\', \'' + _p[1] + '\');', 500);
	}
	dd.onmouseout		= function()
	{
		Dropdown.hover_obj_id = null;
		var _p = this.id.split('_');
		Dropdown.__intvl[_p[0] + '_' + _p[1]] 	= setTimeout('Dropdown.closeIfHover(\'' + _p[0] + '\', \'' + _p[1] + '\');', 500);
	}
	this.__menues	[mnId] 					= gsMenu;
	this.__objects	[mnId+'_'+sequence] 	= obj;
	
	if (!___GS_MENUS[dd.name]) ___GS_MENUS[dd.name] = gsMenu;
	___GS_MENUS[dd.name].sequences[sequence].open 	= true;
	___GS_MENUS[dd.name].sequences[sequence].__obj 	= obj;

	if (oLvl == 1) {
		dd.className		= menuClsNm + '_Dd ' + menuClsNm + '_Dd_offset';
		dd.style.left		= objPos[0] + 'px';
		dd.style.top		= objPos[1] + ddDiv.offsetHeight + 'px';
		}
	else {
		dd.className		= menuClsNm + '_Dd';
		dd.style.left		= objPos[0] + ddDiv.offsetWidth + 'px';
		dd.style.top		= objPos[1] + 'px';
		}
	document.body.appendChild(dd);
	
	ul_el = document.createElement("ul");
	ul_el.className = menuClsNm + '_Dd_ul';
	dd.appendChild(ul_el);
	
	mI = gsMenu.sequences[sequence];
	
	levGlph = false;
	for (i=0; i<mI.Items.length; i++) if (mI.Items[i].urlGlyph) levGlph=true;
	for (i=0; i<mI.Items.length; i++) {
		li_el = document.createElement("li");
		li_el.name = sequence + '-' + i;
		li_el.className = menuClsNm + '_Dd_li';
		li_el.onmouseover = function() {
			GsMenu_EditHover(this, sequence + '-' + i, gsMenu);
			}
		li_el.onmouseout = function() {
			GsMenu_EditHoverOut(this, sequence + '-' + i, gsMenu);
			}
		ul_el.appendChild(li_el);
		a_el = document.createElement("a");
		a_el.name = sequence + '-' + i;
		a_el.id = dd.name + '_' + sequence + '-' + i;
		a_el.onmouseover = function() {
			gsMenu.sequences[this.name].handler.open(document.getElementById(gsMenu.sequences[this.name].hdlObjId + '_' + this.name), gsMenu, this.name, oLvl+1, menuClsNm, lL, uL);
			}
		a_el.onclick = function() {
			GsMnDropdownOpenLink = obj;
			GsMnDropdownOpenMenu = gsMenu;
			setTimeout("Dropdown.close(GsMnDropdownOpenLink, GsMnDropdownOpenMenu, GsMnDropdownOpenMenu.sequences[''].sequence);", 50);
			}
		a_el.href = mI.Items[i].absoluteHref;
		if (mI.Items[i].Items.length > 0) a_el.className = menuClsNm + '_Dd_li_a_expand';
		else a_el.className = menuClsNm + '_Dd_li_a';
		li_el.appendChild(a_el);
			
		if (levGlph) {
			AddClass(menuClsNm + '_Dd_gradient', dd);
			gldiv_el = document.createElement("div");
			if (mI.Items[i].urlImgCap) {
				imgcap_el = document.createElement("img");
				imgcap_el.className = menuClsNm + '_Dd_li_a_img';
				imgcap_el.src = mI.Items[i].urlImgCap;
				gldiv_el.appendChild(imgcap_el);
				if (mI.Items[i].urlImgCapFb) {
					imgcap_el.name = mI.Items[i].urlImgCapFb;
					li_el.onmouseover = li_el.onmouseout = function() {
						fb = imgcap_el.name;
						imgcap_el.name = imgcap_el.src;
						imgcap_el.src = fb;
						}
					}
				}
			else gldiv_el.innerHTML = mI.Items[i].caption;
			gldiv_el.className = menuClsNm + '_Dd_li_a_div';
			if (mI.Items[i].urlGlyph) gldiv_el.style.background = "url('"+ mI.Items[i].urlGlyph +"') no-repeat left center";
			a_el.appendChild(gldiv_el);
			}
		else {
			if (mI.Items[i].urlImgCap) {
				imgcap_el = document.createElement("img");
				imgcap_el.className = menuClsNm + '_Dd_li_a_img';
				imgcap_el.src = mI.Items[i].urlImgCap;
				a_el.appendChild(imgcap_el);
				if (mI.Items[i].urlImgCapFb) {
					imgcap_el.name = mI.Items[i].urlImgCapFb;
					li_el.onmouseover = li_el.onmouseout = function() {
						fb = imgcap_el.name;
						imgcap_el.name = imgcap_el.src;
						imgcap_el.src = fb;
						}
					}
				}
			else a_el.innerHTML = mI.Items[i].caption;
			}
		}
	}
	
Dropdown = new Dropdown();
