var clientStartTime = 0;
var clientFinishTime = 0;
var tabStartTime = 0;
var tabFinishTime = 0;

function startPageDebug(isAjax) {
    date = new Date();

    if (!isAjax) {
        clientStartTime = date.getTime();

        $j(document).ready(function() {
            finishPageDebug();
        });
    } else {
        tabStartTime = date.getTime();
    }
}

function finishPageDebug(isAjax) {
    date = new Date();

    if (!isAjax) {
        pageFinishTime = (date.getTime() - clientStartTime) / 1000;
        updateDebugElement('client', pageFinishTime);
    } else {
        tabFinishTime = (date.getTime() - tabStartTime) / 1000;
        updateDebugElement('tab', tabFinishTime);
    }
}

function updateDebugElement(elementName, elapsedTime) {
    debugTime = null;

    if (elementName == 'server') {
        debugTime = $j('#debugServerTime');
    } else if (elementName == 'client') {
        debugTime = $j('#debugClientTime');
    } else if (elementName == 'tab') {
        debugTime = $j('#debugClientTabTime');
    }

    if (debugTime) {
        debugTime.text(elapsedTime + 's');
    }
}

function access_subcategory(url) {
    if ((window.isLoggedIn !== undefined) && (window.isLoggedIn > 0)) {
        location.href=url;
        return;
    }

    var qmark = url.indexOf("?");

    var desturl = "";
    var urlpath = "";
    if (qmark == -1)
        desturl = url;
    else {
        desturl = url.substr(0, qmark);
        urlpath = url.substr(qmark).replace("?urlpath=","");
    }

    if (desturl.charAt(0) == '/')
        desturl = desturl.substr(1);

    tb_show('Please login before accessing this content', '/login?dest=' + desturl + '&urlpath=' + urlpath + '&TB_iframe=true&height=275&width=400', false);
}

function show_incorrect_login_screen() {
    var destopt = "";
	var urltried = "";

	var Start = location.search.indexOf("urltried=");
	if (Start != -1)
	{
		Start += 9;
		var End = location.search.indexOf("&", Start);
		if (End == -1)
			urltried = location.search.substring(Start);
		else
			urltried = location.search.substring(Start, End);
	}
	
    if ((urltried) && (urltried != "")) {
        destopt = "&dest=" + urltried;
    }

    //sadly, this setTimeout junk helps IE show the TB box correctly
    setTimeout(function() {
            tb_show('Login', '/login?m=1' + destopt + '&TB_iframe=true&height=275&width=400', false);
        }, 0);
}

function get_object_with_id(id)
{
    if (document.layers)
        return document.layers[id];

    if (document.all)
	return document.all[id];

    if (document.getElementById)
        return document.getElementById(id);

    return null;
}

function setup_login_link() {
    var loginlink = get_object_with_id('loginlink');
    var logoutlink = get_object_with_id('logoutlink');
    
    if ((loginlink == null) || (logoutlink == null)) {
	return;
    }

    if (isLoggedIn == -1 || window.location.search.indexOf("urltried=") != -1) {
        show_incorrect_login_screen();
    }

    if ((window.isLoggedIn === undefined) ||
	(isLoggedIn >= 2)) {
	loginlink.style.display = 'none';
        loginlink.innerHTML = '';
        logoutlink.style.display = 'none';
        logoutlink.innerHTML = '';
    } else if (isLoggedIn == 0) {
        loginlink.style.display = 'inline';
        loginlink.innerHTML = 'Login';
        logoutlink.style.display = 'none';
        logoutlink.innerHTML = '';
    } else if (isLoggedIn == 1) {
        loginlink.style.display = 'none';
        loginlink.innerHTML = '';
        logoutlink.style.display = 'inline';
        logoutlink.innerHTML = 'Logout';
    }

}

function logout() {
    document.cookie="SESSION_ID=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT";
    window.location="/";
}

function addLoadEvent(func)
{
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

function addBookmark(url, desc)
{
    if (window.external) {
        window.external.AddFavorite(url, desc);
    }
}

function setHomepage(url)
{
    if (document.all) {
        document.body.style.behavior='url(#default#homepage)';
        document.body.setHomePage(url);
    }
}

function footerlinks(host)
{
    var sep="";
    if (window.external && ("AddSearchProvider" in window.external)) {
        //hack around bug in Page.pm w/ escaped chars
        var linkstart='<a href="javascript:window.external.AddSearchProvider';
        var linkargs="('http://" + host + "/opensearch.xml');";
        var linkend='">Add BASCOM&#39;s Web Library Search to Browser</a>';
        document.write(sep + linkstart + linkargs + linkend);
        sep = "&#8226;";
    }

    var show_favorite = 0;
    var favorite_name = "";
    if (window.external && ("AddFavorite" in window.external)) {
        show_favorite = 1;
        favorite_name = "Favorite";
    }

    if (show_favorite == 1) {
        //hack around bug in Page.pm w/ escaped chars
        var linkstart = "<a href='javascript:addBookmark";
        var linkargs = '("http://' + host + '", "BASCOM&#39;s Web Library");';
        var linkend = "'>Add " + favorite_name + "</a>";
        document.write(sep + linkstart + linkargs + linkend);
        sep = "&#8226;";
    }

    if (document.all) {
        var linkstart = '<a href="javascript:setHomepage';
        var linkargs = "('http://" + host + "');";
        var linkend = '">Set as Homepage</a>';
        document.write(sep + linkstart + linkargs + linkend);
        sep = "&#8226;";
    }
}

var box_shown = new Array();

function swap_display(elem_id, link_id, to_hide_txt, to_show_txt) {
    // IDs of elements to hide if the val() and text() of these elements are blank
    var hideTheseIfTextIsBlank = [ 
        'lessonDetails_notes'
    ];    

    if (elem_id.substring(0,1) != '#') {
        elem_id = '#' + elem_id;
    }

    if (link_id.substring(0,1) != '#') {
        link_id = '#' + link_id;
    }

    var element = $j(elem_id);
    var linkElement = $j(link_id);

    if (element.is(':visible')) {
        linkElement.text(to_show_txt);
        element.slideUp('slow', function() {
            // Animation complete
        });
    } else {
        linkElement.text(to_hide_txt);

        element.slideDown('slow', function() {
            // Animation complete
        });

        $j.each(hideTheseIfTextIsBlank, function(index, id) {
//            var e = element.find('#' + id);
//            if (e) {
//                if ((e.val() == undefined || e.val().length == 0) && (e.text() == undefined || e.text().length == 0)) {
//                    e.parent().parent().hide();
//                }
//            }
        });
    }
}

function openRequestedURL(url,width,height)
{
    chooserwindow = window.open(url,'main_popup','width=' + width + ',height=' + height + ',scrollbars=1,resizable=1,menubar=yes,location=yes,toolbar=yes');
}

function previewLink(url) 
{
    url = url.replace(/\s+/, '');
    var v = new RegExp();
    v.compile("^[A-Za-z0-9]+://");
    if (!v.test(url) && url != "") {
        url = "http://" + url;
    }

    window.open(url);
    return false;
}

