var ca_popup_id = -1;
var ca_popup_counter = 0;
var ca_popup_list = new Array();
var ca_item;
var ca_item2;
var ca_list;
var ca_list2;
var ca_code;
var ca_timer;
var ca_left;

onload_functions[onload_functions.length] = 'ca_set_logo();';
onload_functions[onload_functions.length] = 'ca_popup_init();';

// add new item to queue
function ca_popup_register(id)
{
    ca_popup_list[ca_popup_list.length] = id;
}

// initialize popups
function ca_popup_init()
{
    var id, i, j;
    for(i=0; i<ca_popup_list.length; i++)
    {
        id = ca_popup_list[i];
        ca_code = "ca_item.onmouseover = function() { ca_popup_show('" + id + "'); }; ca_item.onmouseout = function() { ca_popup_hide('" + id + "'); }; ";
        ca_left = -1;
        // find link
        ca_item = document.getElementById('link' + id);
        if(ca_item)
        {
            eval(ca_code);
            if(ca_item.offsetLeft)
            {
                ca_left = ca_item.offsetLeft;
            }
        }
        // find items
        ca_item = document.getElementById('popup' + id);
        if(ca_item)
        {
            if(ca_left > 0)
            {
                ca_left = ca_left - ca_item.offsetLeft;
                ca_item.style.marginLeft = ca_left + 'px';
            }
            ca_list = ca_item.getElementsByTagName('a');
            for(j=0; j<ca_list.length; j++)
            {
                ca_item = ca_list[j];
                eval(ca_code);
            }
        }
    }
}

// show popup event
function ca_popup_show(id)
{
    // check previous popup
    if(ca_popup_id != id)
    {
        ca_popup_do_hide(ca_popup_id);
        ca_popup_counter = 0;
        ca_popup_id = id;
    }
    // show popup
    ca_popup_counter ++;
    if(ca_popup_counter < 2)
    {
        ca_popup_do_show(id);
    }
}

// hide popup event
function ca_popup_hide(id)
{
    if(ca_popup_id == id)
    {
        ca_popup_counter --;
        if(ca_popup_counter < 1)
        {
            ca_popup_counter = 0;
            ca_popup_start_hide(id);
        }
    }
}

// show menu
function ca_popup_do_show(id)
{
    ca_item = document.getElementById('popup' + id);
    if(ca_item)
    {
        ca_list = ca_item.getElementsByTagName('ul');
        if(ca_list.length > 0)
        {
            ca_list[0].style.display = 'block';
        }
    }
}

// hide menu
function ca_popup_do_hide(id)
{
    if(id == -1)
    {
        return;
    }
    ca_item = document.getElementById('popup' + id);
    if(ca_item)
    {
        ca_list = ca_item.getElementsByTagName('ul');
        if(ca_list.length > 0)
        {
            ca_list[0].style.display = 'none';
        }
    }
}

// start timer
function ca_popup_start_hide(id)
{
    if(ca_timer)
    {
        clearTimeout(ca_timer);
    }
    setTimeout("ca_popup_end_hide('" + id + "')", 250);
}

// end timer
function ca_popup_end_hide(id)
{
    clearTimeout(ca_timer);
    if(ca_popup_counter > 0)
    {
        return;
    }
    if(ca_popup_id != id)
    {
        return;
    }
    ca_popup_do_hide(id);
}

// parse forums list
function ca_parse_forums()
{
    var i, j;
    // find all categories
    ca_list = document.getElementsByTagName('div');
    ca_item = false;
    for(i=0; i<ca_list.length; i++)
    {
        ca_item = ca_list[i];
        if(ca_item.className == 'forabg')
        {
            // check forums inside category
            ca_list2 = ca_item.getElementsByTagName('li');
            for(j=0; j<ca_list2.length; j++)
            {
                ca_item2 = ca_list2[j];
                if(ca_item2.className == 'row row-new')
                {
                    // found unread forum
                    ca_item.className = 'forabg block-new';
                }
            }
        }
    }
}

// set logo
function ca_set_logo()
{
    ca_item = document.getElementById('logoimg');
    if(ca_item)
    {
        ca_list = ca_item.getElementsByTagName('img');
        if(ca_list.length > 0)
        {
            ca_item2 = document.getElementById('logolink');
            if(ca_item2)
            {
                ca_item2.style.backgroundImage = 'url(' + ca_list[0].src + ')';
                if(ca_list[0].width > 0)
                {
                    ca_item2.style.width = ca_list[0].width + 'px';
                }
                if(ca_list[0].height > 0)
                {
                    ca_item2.style.height = ca_list[0].height + 'px';
                    ca_item2 = document.getElementById('logo');
                    if(ca_item2)
                    {
                        ca_item2.style.height = ca_list[0].height + 'px';
                    }
                }
            }
        }
    }
}

// select code
function ca_select_code(a)
{
	// Get ID of code block
	var e = a.parentNode.parentNode.parentNode.getElementsByTagName('CODE')[0];

	// Not IE
	if (window.getSelection)
	{
		var s = window.getSelection();
		// Safari
		if (s.setBaseAndExtent)
		{
			s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
		}
		// Firefox and Opera
		else
		{
			var r = document.createRange();
			r.selectNodeContents(e);
			s.removeAllRanges();
			s.addRange(r);
		}
	}
	// Some older browsers
	else if (document.getSelection)
	{
		var s = document.getSelection();
		var r = document.createRange();
		r.selectNodeContents(e);
		s.removeAllRanges();
		s.addRange(r);
	}
	// IE
	else if (document.selection)
	{
		var r = document.body.createTextRange();
		r.moveToElementText(e);
		r.select();
	}
}


// expand code
function ca_expand_code(a)
{
	// Get ID of code block
	var e = a.parentNode.parentNode.parentNode.getElementsByTagName('CODE')[0];
	if(e)
	{
	    if(e.style.overflow == 'visible')
	    {
	        e.style.maxHeight = '200px';
	        e.style.overflow = 'auto';
	    }
	    else
	    {
	        e.style.maxHeight = 'none';
	        e.style.overflow = 'visible';
	    }
	}
}


// expand forum
function ca_expand_forum(a)
{
	// Find parent block
	var e = a.parentNode.parentNode.parentNode.parentNode.parentNode.getElementsByTagName('UL')[1];
	if(e)
	{
	    if(e.style.display == 'none')
	    {
	        e.style.display = '';
	    }
	    else
	    {
	        e.style.display = 'none';
	    }
	}
}