// #############################################################################
// function to toggle the collapse state of an object, and save to a cookie
// define a few variables that are required
var vbmenu_usepopups = false;
var ignorequotechars = 0;

// #############################################################################
// lets define the browser we have instead of multiple calls throughout the file
var userAgent = navigator.userAgent.toLowerCase();
var is_opera  = (userAgent.indexOf('opera') != -1);
var is_saf    = ((userAgent.indexOf('applewebkit') != -1) || (navigator.vendor == "Apple Computer, Inc."));
var is_webtv  = (userAgent.indexOf('webtv') != -1);
var is_ie     = ((userAgent.indexOf('msie') != -1) && (!is_opera) && (!is_saf) && (!is_webtv));
var is_ie4    = ((is_ie) && (userAgent.indexOf("msie 4.") != -1));
var is_moz    = ((navigator.product == 'Gecko') && (!is_saf));
var is_kon    = (userAgent.indexOf('konqueror') != -1);
var is_ns     = ((userAgent.indexOf('compatible') == -1) && (userAgent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_saf));
var is_ns4    = ((is_ns) && (parseInt(navigator.appVersion) == 4));

// catch possible bugs with WebTV and other older browsers
var is_regexp = (window.RegExp) ? true : false;

// #############################################################################
// let's find out what DOM functions we can use
var vbDOMtype = '';
if (document.getElementById)
{
    vbDOMtype = "std";
}
else if (document.all)
{
    vbDOMtype = "ie4";
}
else if (document.layers)
{
    vbDOMtype = "ns4";
}

// make an array to store cached locations of objects called by fetch_object
var vBobjects = new Array();

// #############################################################################
// function to emulate document.getElementById
function fetch_object(idname, forcefetch)
{
    if (forcefetch || typeof(vBobjects[idname]) == "undefined")
    {
        switch (vbDOMtype)
        {
            case "std":
            {
                vBobjects[idname] = document.getElementById(idname);
            }
            break;

            case "ie4":
            {
                vBobjects[idname] = document.all[idname];
            }
            break;

            case "ns4":
            {
                vBobjects[idname] = document.layers[idname];
            }
            break;
        }
    }
    return vBobjects[idname];
}

// #############################################################################
// function to handle the different event models of different browsers
// and prevent event bubbling
function do_an_e(eventobj)
{
    if (!eventobj || is_ie)
    {
        window.event.returnValue = false;
        window.event.cancelBubble = true;
        return window.event;
    }
    else
    {
        eventobj.stopPropagation();
        eventobj.preventDefault();
        return eventobj;
    }
}

// #############################################################################
// simple function to toggle the 'display' attribute of an object
function toggle_display(idname)
{
    obj = fetch_object(idname);
    if (obj)
    {
        if (obj.style.display == "none")
        {
            obj.style.display = "";
        }
        else
        {
            obj.style.display = "none";
        }
    }
    return false;
}

// #############################################################################
// ##################### vBulletin Cookie Functions ############################
// #############################################################################

// #############################################################################
// function to set a cookie
function set_cookie(name, value, expires)
{
    if (!expires)
    {
        expires = new Date();
    }
    document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString() +  "; path=/";
}

// #############################################################################
// function to retrieve a cookie
function fetch_cookie(name)
{
    cookie_name = name + "=";
    cookie_length = document.cookie.length;
    cookie_begin = 0;
    while (cookie_begin < cookie_length)
    {
        value_begin = cookie_begin + cookie_name.length;
        if (document.cookie.substring(cookie_begin, value_begin) == cookie_name)
        {
            var value_end = document.cookie.indexOf (";", value_begin);
            if (value_end == -1)
            {
                value_end = cookie_length;
            }
            return unescape(document.cookie.substring(value_begin, value_end));
        }
        cookie_begin = document.cookie.indexOf(" ", cookie_begin) + 1;
        if (cookie_begin == 0)
        {
            break;
        }
    }
    return null;
}

// #############################################################################
// function to delete a cookie
function delete_cookie(name)
{
    var expireNow = new Date();
    document.cookie = name + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT" +  "; path=/";
}



function toggle_collapse(objid)
{
    if (!is_regexp)
    {
        return false;
    }
    
    obj = fetch_object("collapseobj_" + objid); 
    img = fetch_object("collapseimg_" + objid);
    cel = fetch_object("collapsecel_" + objid);
    
    if (!obj)
    {
        // nothing to collapse!
        if (img)
        {
            // hide the clicky image if there is one
            img.style.display = "none";
        }
        return false;
    }

    if (obj.style.display == "none")
    {
        obj.style.display = "";
        save_collapsed(objid, false);
        if (img)
        {
            img_re = new RegExp("_collapsed\\.gif$");
            img.src = img.src.replace(img_re, '.gif');
        }
        if (cel)
        {
            cel_re = new RegExp("^(thead|tcat)(_collapsed)$");
            cel.className = cel.className.replace(cel_re, '$1');
        }
    }
    else
    {
        obj.style.display = "none";
        save_collapsed(objid, true);
        if (img)
        {
            img_re = new RegExp("\\.gif$");
            img.src = img.src.replace(img_re, '_collapsed.gif');
        }
        if (cel)
        {
            cel_re = new RegExp("^(thead|tcat)$");
            cel.className = cel.className.replace(cel_re, '$1_collapsed');
        }
    }
    return false;
}

// #############################################################################
// update vbulletin_collapse cookie with collapse preferences
function save_collapsed(objid, addcollapsed)
{
    var collapsed = fetch_cookie("vbulletin_collapse");
    var tmp = new Array();

    if (collapsed != null)
    {
        collapsed = collapsed.split("\n");

        for (i in collapsed)
        {
            if (collapsed[i] != objid && collapsed[i] != "")
            {
                tmp[tmp.length] = collapsed[i];
            }
        }
    }

    if (addcollapsed)
    {
        tmp[tmp.length] = objid;
    }

    expires = new Date();
    expires.setTime(expires.getTime() + (1000 * 86400 * 365));
    set_cookie("is_collapse", tmp.join("\n"), expires);
}

