var HideElement = null
var Number = 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' + Number + ' ' + HideElement.className
    Number++
}

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()
    }
}