
var opts = [];

function create_cookie(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=/angband/irclogs";
}

function read_cookie(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 erase_cookie(name) 
{
    create_cookie(name,"",-1);
}

function remove_node(n)
{
    if (n.hasChildNodes())
    {
	for (var k = 0; k < n.childNodes.length; k++)
	{
	    n.parentNode.insertBefore(n.childNodes[k].cloneNode(true), n);
	}    
    }
    
    n.parentNode.removeChild(n);
}

function update_view()
{
    var ol = document.getElementById('lines');
    var l = ol.getElementsByTagName('li');
    var url_exp = new RegExp("\\b((?:https?:(?:/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\"'.,<>?«»“”‘’]))", "gi");
 

    for (var i = 0; i < l.length; i++)
    {
        if (l[i].className == 'join' || 
            l[i].className == 'leave' ||
            l[i].className == 'quit')
        {
            l[i].style.display = opts.hide_lines ? 'none' : null;
        }
        else
        {
            if (opts.make_links)
            {
                l[i].innerHTML = l[i].innerHTML.replace(url_exp, "<a>$1</a>");
                
                var links = l[i].getElementsByTagName('a');	    
                for (var j = 0; j < links.length; j++)
                {
                    links[j].href = links[j].innerHTML;
                }
            }
            else
            {
                var links = l[i].getElementsByTagName('a');
                for (var j = links.length - 1; j >= 0; j--)
                {
                    remove_node(links[j]);
                }
            }
        }
    }
}


function new_option(text, var_name, elem)
{
    var x = read_cookie(var_name);
    if (x == "false") x = false;
    else x = true;
    
    var box = document.createElement('input');
    box.setAttribute('type', 'checkbox');
    box.id = "opt"+var_name;
    box.checked = opts[var_name] = x;
    box.onclick = function () { 
        opts[var_name] = this.checked; 
        update_view(); 
        if (opts[var_name]) { 
            erase_cookie(var_name); 
        } else {
            create_cookie(var_name, "false", 30); 
        }
    };

    var label = document.createElement('label');
    label.setAttribute('for', "opt_"+var_name);
    label.appendChild(document.createTextNode(text));

    elem.parentNode.insertBefore(label, elem.nextSibling);
    elem.parentNode.insertBefore(box, label);
}

function init()
{
    var h1 = document.getElementsByTagName('h1')[0];

    new_option("Make links clickable", "make_links", h1);
    new_option("Hide entrances and exits", "hide_lines", h1);

    update_view();
}
