// When document loads
window.addEvent('domready', function() {
    jListCookie = getCookieValue('jList');
    listOrder   = getCookieValue('jOrder');
    journals    = new Array('j_mac', 'j_win', 'j_toy', 'j_fun', 'j_thk');
    jnlCookies  = new Array();
    
    for(i = 0; i < journals.length; i++) {
        jnlCookies[i] = getCookieValue(journals[i]);
        // alert(jnlCookies[i] + ' ' + journals[i]);
        if(jnlCookies[i] == 'up') {Effect.SlideUp(journals[i]);}
    }

    if(jListCookie == 'titles') {
        toggleList('titles');
        writePersistentCookie('jList', 'titles', 'years', 3);
    }
    else {
        writePersistentCookie('jList', 'text', 'years', 3);
    }

    if(listOrder) {
        listOrder = listOrder.split(',');
        Sortable.setSequence('journal_list', listOrder);
    }
    
    setTimeout("breakout_of_frame()", 5000);
});



/*==============================================================================

    Routines written by John Gardner - 2003 - 2005

    See www.braemoor.co.uk/software for information about more freeware
    available.

/*==============================================================================

Routine to write a session cookie

    Parameters:
        cookieName        Cookie name
        cookieValue       Cookie Value
    
    Return value:
        true              Session cookie written successfullly
        false             Failed - persistent cookies are not enabled

   e.g. if (writeSessionCookie("pans","drizzle") then
           alert ("Session cookie written");
        else
           alert ("Sorry - Session cookies not enabled");
*/

function writeSessionCookie(cookieName, cookieValue) {
    if(testSessionCookie()) {
        document.cookie = escape(cookieName) + "=" + escape(cookieValue) + "; path=/";
        return true;
    }
    else {
        return false;
    }
}

/*==============================================================================

Routine to get the current value of a cookie

    Parameters:
        cookieName        Cookie name
    
    Return value:
        false             Failed - no such cookie
        value             Value of the retrieved cookie

   e.g. if (!getCookieValue("pans") then  {
           cookieValue = getCoookieValue ("pans2);
        }
*/

function getCookieValue(cookieName) {
    var exp = new RegExp(escape(cookieName) + "=([^;]+)");
    
    if(exp.test(document.cookie + ";")) {
        exp.exec(document.cookie + ";");
        return unescape(RegExp.$1);
    }
    else {
        return false;
    }
}



/*==============================================================================

Routine to see if session cookies are enabled

    Parameters:
        None
    
    Return value:
        true              Session cookies are enabled
        false             Session cookies are not enabled

   e.g. if (testSessionCookie())
           alert ("Session coookies are enabled");
        else
           alert ("Session coookies are not enabled");
*/

function testSessionCookie() {
    document.cookie = "testSessionCookie=Enabled";
    
    if(getCookieValue("testSessionCookie") == "Enabled") {
        return true
    }
    else {
        return false;
    }
}

/*==============================================================================

Routine to see of persistent cookies are allowed:

    Parameters:
        None
    
    Return value:
        true              Session cookies are enabled
        false             Session cookies are not enabled

   e.g. if (testPersistentCookie()) then
           alert ("Persistent coookies are enabled");
        else
           alert ("Persistent coookies are not enabled");
*/

function testPersistentCookie () {
    writePersistentCookie("testPersistentCookie", "Enabled", "minutes", 1);

    if(getCookieValue("testPersistentCookie") == "Enabled") {
        return true;
    }
    else {
        return false;
    }
}

/*==============================================================================

Routine to write a persistent cookie

    Parameters:
        CookieName        Cookie name
        CookieValue       Cookie Value
        periodType        "years","months","days","hours", "minutes"
        offset            Number of units specified in periodType
    
    Return value:
        true              Persistent cookie written successfullly
        false             Failed - persistent cookies are not enabled
    
    e.g. writePersistentCookie ("Session", id, "years", 1);
*/       

function writePersistentCookie(CookieName, CookieValue, periodType, offset) {

    var expireDate  = new Date();
    offset          = offset / 1;
    
    var myPeriodType = periodType;
    switch(myPeriodType.toLowerCase()) {
        case "years":
            expireDate.setYear(expireDate.getFullYear() + offset);
            break;
        case "months":
            expireDate.setMonth(expireDate.getMonth() + offset);
            break;
        case "days":
            expireDate.setDate(expireDate.getDate() + offset);
            break;
        case "hours":
            expireDate.setHours(expireDate.getHours() + offset);
            break;
        case "minutes":
            expireDate.setMinutes(expireDate.getMinutes() + offset);
            break;
        default:
            alert("Invalid periodType parameter for writePersistentCookie()");
            break;
    } 
    
    document.cookie = escape(CookieName) + "=" + escape(CookieValue) + "; expires=" + expireDate.toGMTString() + "; path=/";
}  



/*==============================================================================

Routine to delete a persistent cookie

    Parameters:
        CookieName        Cookie name
    
    Return value:
        true              Persistent cookie marked for deletion
    
    e.g. deleteCookie ("Session");
*/    

function deleteCookie(cookieName) {

    if (getCookieValue(cookieName)) {
        writePersistentCookie(cookieName, "Pending delete", "years", -1);
    }  
    return true;     
}



/*============================================================================== */ 



function showSmileys() {
    document.getElementByID('smiley_pop').className         = "show";
    document.getElementByID('smiley_toggle_hide').className = "show";
    document.getElementByID('smiley_toggle_show').classname = "hide";
}



function hideSmileys() {
    document.getElementByID('smiley_pop').className         = "hide";
    document.getElementByID('smiley_toggle_hide').classname = "hide";
    document.getElementByID('smiley_toggle_show').classname = "show";
}



function showhide(what, how)
{
    if (document.getElementById(what).style.display != "none") {
        document.getElementById(what).style.display = "none";
    }
    else {
        document.getElementById(what).style.display = how;
    }
}



/* Swap one image for another i.e. Rollover or Mouseover
This function uses the image's name, set in the
HTML {img} tag to access the image's place in the DOM */

function swapImages(ImageName, NewImage) {

    /* Test to see if the browser understands rollovers.
    If it does, swap one image for the other. */

    if (document.images) {
        document.getElementById(ImageName).src = NewImage;
    }
}



function notify_author() {document.getElementById('tellafriend_form').submit();}



/*
Clear default form value script- by JavaScriptKit.com
Featured on JavaScript Kit (http://javascriptkit.com)
Visit javascriptkit.com for 400+ free scripts!
*/

function clearText(field) {
    if(field.value == field.defaultValue) {
        field.value = "";
    }
}



function restoreText(field) {
    if(field.value == "") {
        field.value = field.defaultValue;
    }
}



// Show dynamic controls if Javascript is enabled
function showListControls() {
    document.write('<span class="right">\n'
                + '<a href="javascript:toggleList(\'text\');"'
                + '    title="Show journals with text"'
                + '    class="js_control"'
                + '    style="display: none; opacity: 0;"'
                + '    name="titles_text"'
                + '    id="titles_text"'
                + '    onmouseover="swapImages(\'titles_text_img\', \'http://www.dtgeeks.com/images/controls/text_over.gif\')"'
                + '    onmouseout="swapImages(\'titles_text_img\', \'http://www.dtgeeks.com/images/controls/text.gif\')">\n'
                + '        <img src="http://www.dtgeeks.com/images/controls/text.gif" name="titles_text_img" id="titles_text_img" /></a\n'

                + '><a href="javascript:toggleList(\'titles\');"'
                + '    title="Show journals as titles only"'
                + '    class="js_control"'
                + '    style="display: inline;"'
                + '    name="titles"'
                + '    id="titles"'
                + '    onmouseover="swapImages(\'titles_img\', \'http://www.dtgeeks.com/images/controls/titles_over.gif\')"'
                + '    onmouseout="swapImages(\'titles_img\', \'http://www.dtgeeks.com/images/controls/titles.gif\')">\n'
                + '        <img src="http://www.dtgeeks.com/images/controls/titles.gif" name="titles_img" id="titles_img" /></a\n'

                + '><a href="javascript:resetControls();"'
                + '    title="Reset all controls"'
                + '    class="js_control reset"'
                + '    onmouseover="swapImages(\'reset\', \'http://www.dtgeeks.com/images/controls/reset_over.gif\')"'
                + '    onmouseout="swapImages(\'reset\', \'http://www.dtgeeks.com/images/controls/reset.gif\')">\n'
                + '        <img src="http://www.dtgeeks.com/images/controls/reset.gif" name="reset" id="reset" /></a>\n'
                + '</span>');
}



function showJsControls(name) {
    document.write('<span class="right">\n'
                + '<a href="javascript:none"'
                + '    class="grabber js_control"'
                + '    title="Drag to reorder"'
                + '    onmouseover="swapImages(\''+name+'_reorder\', \'http://www.dtgeeks.com/images/controls/dragger_over.gif\')"'
                + '    onmouseout="swapImages(\''+name+'_reorder\', \'http://www.dtgeeks.com/images/controls/dragger.gif\')">\n'
                + '        <img src="http://www.dtgeeks.com/images/controls/dragger.gif" id="'+name+'_reorder" name="'+name+'_reorder" /></a\n'

                + '><a href="javascript:slideJournal(\''+name+'\');"'
                + '    class="expander js_control"'
                + '    title="Collapse or expand box"'
                + '    name="'+name+'_cnt"'
                + '    onmouseover="swapImages(\''+name+'_contractor\', \'http://www.dtgeeks.com/images/controls/slider_over.gif\')"'
                + '    onmouseout="swapImages(\''+name+'_contractor\', \'http://www.dtgeeks.com/images/controls/slider.gif\')">\n'
                + '        <img src="http://www.dtgeeks.com/images/controls/slider.gif" id="'+name+'_contractor" name="'+name+'_contractor"/></a>\n'
                + '</span>');
}



function slideJournal(which) {
    Effect.toggle(which, 'slide', {duration: '.5'});
    
    if(getCookieValue(which) == 'up') {
        writePersistentCookie(which, 'down', 'years', 3);
        document.getElementById(which+'_contractor').style.cursor = 'n-resize';
    }
    else {
        writePersistentCookie(which, 'up', 'years', 3);
        document.getElementById(which+'_contractor').style.cursor = 's-resize';
    }
}



function toggleList(list) {
    if(list == 'titles') {
        Effect.Fade(    'titles',       {duration:.50});

        Effect.Shrink(  'mac_text',     {duration:1.50, direction: 'bottom-right'});
        Effect.Grow(    'mac_titles',   {duration:1.50, direction: 'top-left'});

        Effect.Shrink(  'win_text',     {duration:1.50, direction: 'bottom-right'});
        Effect.Grow(    'win_titles',   {duration:1.50, direction: 'top-left'});

        Effect.Shrink(  'toy_text',     {duration:1.50, direction: 'bottom-right'});
        Effect.Grow(    'toy_titles',   {duration:1.50, direction: 'top-left'});

        Effect.Shrink(  'fun_text',     {duration:1.50, direction: 'bottom-right'});
        Effect.Grow(    'fun_titles',   {duration:1.50, direction: 'top-left'});

        Effect.Shrink(  'thk_text',     {duration:1.50, direction: 'bottom-right'});
        Effect.Grow(    'thk_titles',   {duration:1.50, direction: 'top-left'});

        Effect.Appear(  'titles_text',  {duration:.50});

        // Set cookie...
        writePersistentCookie('jList', 'titles', 'years', 3);
    }
    else if(list == 'text') {
        Effect.Fade(    'titles_text',  {duration:.50});

        Effect.Shrink(  'mac_titles',   {duration:1.50, direction: 'bottom-right'});
        Effect.Grow(    'mac_text',     {duration:1.50, direction: 'top-left'});

        Effect.Shrink(  'win_titles',   {duration:1.50, direction: 'bottom-right'});
        Effect.Grow(    'win_text',     {duration:1.50, direction: 'top-left'});

        Effect.Shrink(  'toy_titles',   {duration:1.50, direction: 'bottom-right'});
        Effect.Grow(    'toy_text',     {duration:1.50, direction: 'top-left'});

        Effect.Shrink(  'fun_titles',   {duration:1.50, direction: 'bottom-right'});
        Effect.Grow(    'fun_text',     {duration:1.50, direction: 'top-left'});

        Effect.Shrink(  'thk_titles',   {duration:1.50, direction: 'bottom-right'});
        Effect.Grow(    'thk_text',     {duration:1.50, direction: 'top-left'});

        Effect.Appear(  'titles',       {duration:.50});

        // Set cookies...
        writePersistentCookie('jList', 'text', 'years', 3);
    }
}



function resetControls() {
    if(confirm('Reset all controls?')) {
        writePersistentCookie('jList', '', 'years', -1);
        writePersistentCookie('j_mac', '', 'years', -1);
        writePersistentCookie('j_win', '', 'years', -1);
        writePersistentCookie('j_toy', '', 'years', -1);
        writePersistentCookie('j_fun', '', 'years', -1);
        writePersistentCookie('j_thk', '', 'years', -1);
        writePersistentCookie('jOrder', '', 'years', -1);

        deleteCookie('jList');
        deleteCookie('j_mac');
        deleteCookie('j_win');
        deleteCookie('j_toy');
        deleteCookie('j_fun');
        deleteCookie('j_thk');
        deleteCookie('jOrder');

        window.location.reload(true);
    }
}



function show_smileys() {
    if (document.getElementById('smiley_pop').style.display == "block")
    {
        document.getElementById('smiley_pop').style.display         = "none";
        document.getElementById('smiley_tri_down').style.display    = "none";
        document.getElementById('smiley_tri_right').style.display   = "inline";
    }
    else
    {
        document.getElementById('smiley_pop').style.display         = "block";
        document.getElementById('smiley_tri_down').style.display    = "inline";
        document.getElementById('smiley_tri_right').style.display   = "none";
    }
}



function add_smiley(smiley) {
    document.comment_form.comment.value += " " + smiley + " ";
    document.comment_form.comment.focus();
}



function breakout_of_frame()
{
    if (top !== self && document.referrer.match(/digg\.com\/\w{1,8}/)) {top.location.replace(self.location.href);}
}