/***********************************************************************
 * @filename            : inc/common.js
 * @author              : Ken Wang
 * @description         : miscellaneous javascript functions/utilities
 * @created             : 2004-08-24
 * @modified            : 2004-08-24
 ***********************************************************************/

/* string manipulation */
function trim( String ) 
{
    if ( String == null ) 
    {
        return (false);
    }
    return String.replace( /(^\s+)|(\s+$)/g,"" );
}

/* multiple onloads */
/*
usage:
    addLoadEvent( nameOfSomeFunctionToRunOnPageLoad );
    addLoadEvent( function() { // more code to run on page load } );
*/
function addLoadEvent(func) 
{
    var oldonload = window.onload;
    if ( typeof window.onload != 'function' ) 
    {
        window.onload = func;
    } 
    else 
    {
        window.onload = function() 
        {
            oldonload();
            func();
        }
    }
}

/* popup window */
function popWin( url, winame, wintype ) 
{
    if( typeof wintype != "string" ) { wintype = ""; }
    switch( wintype )
    {
        case 'basic': extras = 'scrollbars=yes,resizable=yes,width=350,height=550,left=20,top=20,status=yes'; break;
        case 'html_editor': extras = 'width=620,height=440,resizable=yes,dependent=yes,status=yes'; break;
        case 'admin_pop': extras = 'width=480,height=300,resizable=yes,status=yes'; break;
        default: extras = 'scrollbars=yes,width=620,height=420,resizable=yes,status=yes';
    }
    kmsPop = window.open( url, winame, extras );
    kmsPop.focus();
}

/***** Links Plugin *****/
function toggleFolder( listItem )
{
    if( listItem )
    {
        if( listItem.className == "folderOpen" )
        {
            listItem.className = "folderClosed";
        }
        else
        {
            // only open one level, all grand children listItems remain closed
            for( var i=0; i<listItem.childNodes.length; i++ )
            {
                if( listItem.childNodes[i].nodeType == 1 
                    && listItem.childNodes[i].tagName == "LI" 
                    && listItem.childNodes[i].className.indexOf("folder")==0 )
                {   // this is a folder LI - close the folder
                    listItem.childNodes[i].className = "folderClosed";
                }
            }
            listItem.className = "folderOpen";
        }
    }
}
function editLink( linkId, linkFolder, linkIsPublic )
{
    if( document.getElementById("linkForm") && document.getElementById("link_"+linkId) )
    {
        formObj = document.getElementById("linkForm");
        linkObj = document.getElementById("link_"+linkId);
        formObj.mode.value = 'link_edit_do';
        formObj.link_id.value = linkId;
        formObj.link_name.value = linkObj.innerHTML;
        formObj.link_location.value = linkObj.href;
        formObj.link_description.value = linkObj.title;
        formObj.is_public.checked = ( linkIsPublic == 'Y' ) ? true : false;
        formObj.link_submit.value = 'Edit Link';
        for( var i=0; i<formObj.folder_id.options.length; i++ )
        {
            if( linkFolder == formObj.folder_id.options[i].value )
            {
                formObj.folder_id.selectedIndex = i;
                break;
            }
        }
    }
}
function linksToggleAll( ulObj, newClassName )
{
    ulObj = ( ulObj == null || ulObj == undefined ) ? document.getElementById('linksRootUl') : ulObj;
    if( ulObj )
    {
        for( var i=0; i<ulObj.childNodes.length; i++ )
        {
            if( ulObj.childNodes[i].nodeType == 1
                && ulObj.childNodes[i].tagName == "LI" 
                && ulObj.childNodes[i].className.indexOf("folder")==0 )
            {   // this is a folder <li>
                ulObj.childNodes[i].className = newClassName;
                for( var j=0; j<ulObj.childNodes[i].childNodes.length; j++ )
                {
                    var nodeObj = ulObj.childNodes[i].childNodes[j];
                    if( nodeObj.nodeType == 1 && nodeObj.tagName == "UL" )
                    {   // call function recursively
                        linksToggleAll( nodeObj, newClassName );
                    }
                }
            }
        }
    }
}