// -----------------------
// General
// -----------------------

function PageName()
{
	var fullpath = window.location.pathname;
	pos = fullpath.lastIndexOf('/');
	if (pos == fullpath.length - 1)
		return "?";
	else if (pos < 0)
		return fullpath;
	else
		return fullpath.substr(pos + 1);
}

function StringToIntArray(str)
{
    var sarr = str.split(',');
    var i;
    var ret = [];
    for (i = 0; i < sarr.length; i++)
        ret[i] = parseInt(sarr[i]);
    return ret;
}

// -----------------------
// Startup
// -----------------------

var startupFunctions = [];
window.onload = ExecStartupFunctions;

function ExecStartupFunctions()
{
    var i;
    for (i = 0; i < startupFunctions.length; i++)
        eval(startupFunctions[i]);
}

function AddStartupFunction(func)
{
    startupFunctions.push(func);
}

// -----------------------
// Cookies
// -----------------------

function createCookie(name,value,days) 
{
	if (days) 
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) 
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) 
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) 
{
	createCookie(name,"",-1);
}

// -----------------------
// Expandable Topics
// -----------------------

AddStartupFunction("ArticleLists_OnLoad()");

var topicsCookieName;
var topicsState;
var topicIdPrefix = 'Topic_';

function HandleExpandableTopicClick(element)
{
    if (element.className=='expandedtopic')
    {
        element.className = 'collapsedtopic';
        id = parseInt(element.id.substr(topicIdPrefix.length));
        topicsState[id] = 0;
    }
    else if (element.className == 'collapsedtopic')
    {
        element.className='expandedtopic';
        id = parseInt(element.id.substr(6));
        topicsState[id] = 1;
    }
    createCookie(topicsCookieName, topicsState, 3);
}

function AssignIDsToTopics()
{
    var list = document.getElementsByTagName('li');
    var i;
    var id = 0;
    for (i = 0; i < list.length; i++)
    {
        if (list[i].className == 'expandedtopic' || list[i].className == 'collapsedtopic')
        {
            list[i].id=topicIdPrefix + id;
            id++;
        }
    }

    cookie = readCookie(topicsCookieName);
    if (cookie == null)
    {
        topicsState = [];
        for (i = 0; i < id; i++)
            topicsState[i] = 0;
    }
    else
    {
        topicsState = StringToIntArray(cookie);
        if (topicsState.length > id)
            topicsState.length = id;
    }
    createCookie(topicsCookieName, topicsState, 3);
}

function SetTopicState(list)
{
    var i = 0;
    var done = false;
    var element;
    
    do
    {
        element = document.getElementById(topicIdPrefix + i);
        if (element)
        {
            if (topicsState[i] == 0)
                element.className = 'collapsedtopic';
            else
                element.className = 'expandedtopic';
        }
        else
        {
            done = true;
        }
        i++;
    } while (!done);
}

function ArticleLists_OnLoad()
{
    topicsCookieName = topicIdPrefix + PageName();
    AssignIDsToTopics();
    SetTopicState();
}


// -----------------------
// Calculator IFrames
// -----------------------

function ResizeIframeByRef(frm)
{
    try
    {
        // Find the height/width of the internal page
		var theHeight;
		var theWidth;
		if (frm)
		{
		        var theHeight = frm.contentWindow.document.body.scrollHeight;
	        	var theWidth = frm.contentWindow.document.body.scrollWidth;
	
		        // Resize the iframe
	        	frm.style.height = (theHeight) + "px";
		        frm.style.width = (theWidth) + "px";
		}
    }
    catch(e)
    {
    }
}

// -----------------------
// Printing
// -----------------------

function PrintPage()
{
    window.open(location.href + "?print", "", "status=1, scrollbars=1");
}

// -----------------------
// Handle a key press in the Search Textbox
// -----------------------

function HandleSearchKeyPress(e)
{
    var ENTER_KEY = 13;
    var code = "";
          
    if (window.event) // IE
    {
        code = e.keyCode;
    }
    if (e.which) // Netscape/Firefox/Opera
    {
        code = e.which;
    }

    if (code == ENTER_KEY) 
    {
        document.getElementById("SearchButton").onclick();
        return false;
    }
}
