﻿var HideElement = null
var NumberElement = 0
var Timeouts = new Array()
var Elements = new Array()
var Visible = new Array()
var HidingQueue = new Array()
var MenuOpened = false

$(document).ready(function() {
	$('.navigation-menu ul ul li').mouseout(function() {
		Hide(this)
	});
	$('.navigation-menu ul ul li').mouseover(function() {
		Show(this)
	});
	$('.navigation-menu ul ul ul ul').hide()
	$('.navigation-menu ul ul ul').hide()

	$('div[@class^=search-] input[@name=keyword]').each(function(i) {
		$(this).click(function() {
			if ($(this).attr('defaultvalue') == $(this).attr('value')) {
				$(this).attr('value', '');
			}
		});
	});
})

function Show(element) {
	var id = GetId(element)
	if (Timeouts[id]) {
		clearTimeout(Timeouts[id])
	}
	var timeout = (MenuOpened ? 1 : 100)
	Timeouts[id] = setTimeout('DoShow("' + id + '")', timeout)
	Elements[id] = element
	Visible[id] = true
}

function DoShow(id) {
	if (Visible[id] == false) return
	HideOthers()
	var element = Elements[id]
	$(element).children("ul").show()
	$(element).addClass('selected')
	MenuOpened = true
}

function Hide(element) {
	HideElement = element
	if (!GetId(HideElement)) {
		SetId(HideElement)
	}
	var id = GetId(HideElement)
	Visible[id] = false
	AddToQueue(id)
	Timeouts[id] = setTimeout('DoHide("' + id + '")', 100)
}

function DoHide(id) {
	if (Visible[id] == true) return
	$('.' + id).children("ul").hide()
	$('.' + id).removeClass('selected')
	CheckMenuOpened()
}

function GetId(element) {
	if (element.className == '') return null
	if (element.className.substring(0, 7) == 'element') {
		var end = element.className.indexOf(' ')
		if (end == -1) end = element.className.length
		return element.className.substring(0, end)
	}
	return null
}

function SetId(element) {
	HideElement.className = 'element' + NumberElement + ' ' + HideElement.className
	NumberElement++
}

function HideOthers() {
	for (var i = 0; i < HidingQueue.length; i++) {
		id = HidingQueue.pop()
		clearTimeout(Timeouts[id])
		DoHide(id)
	}
}

function AddToQueue(id) {
	HidingQueue.unshift(id)
}

function CheckMenuOpened() {
	for (var id in Visible) {
		if (id != 'null' && Visible[id] == true) {
			return
		}
	}
	MenuOpened = false
}

// Tooltip
var tooltip

function MouseOver(id, evnt) {
	tooltip = document.getElementById(id)
	if (!tooltip) return
	evnt = evnt || event
	LocateTooltip(evnt)
	tooltip.style.display = 'block'
}

function MouseOut(id, evnt) {
	if (!tooltip) return
	tooltip.style.display = 'none'
	tooltip = null
}

function Mousemove(evnt) {
	if (!tooltip) return
	evnt = evnt || event
	LocateTooltip(evnt)
}

function LocateTooltip(evnt) {
	mx = evnt.clientX + 16 + document.documentElement.scrollLeft
	my = evnt.clientY + document.documentElement.scrollTop
	var tooltipWidth = tooltip.clientWidth
	if (tooltipWidth == 0) tooltipWidth = 250;

	if (mx + tooltipWidth > document.body.offsetWidth + document.body.scrollLeft) {
		var x = (document.body.clientWidth - mx + 32) + 'px'
		tooltip.style.right = x
		tooltip.style.left = ''
	}
	else {
		tooltip.style.left = mx + 'px'
	}
	tooltip.style.top = my + 'px'
}


// TR

function Click(n) {
	if ($('.tr_group_' + n).hasClass('open')) {
		$('.tr_group_' + n).addClass('closed')
		$('.tr_group_' + n).removeClass('open')
		$('.tr_rule_' + n).hide()
	}
	else {
		$('.tr_group_' + n).addClass('open')
		$('.tr_group_' + n).removeClass('closed')
		$('.tr_rule_' + n).show()
	}
}