var bPageIsLoaded = false;
/***********************************************************************
*
* setCookie -    Generic Set Cookie routine
*
* Input: sName     -    Name of cookie to create
*     sValue     -    Value to assign to the cookie
*     sExpire -    Cookie expiry date/time (optional)
*
* Returns: null
*
************************************************************************/

function setCookie(sName, sValue, sExpire) 
    {
    var sCookie = sName + "=" + escape(sValue) +"; path=/";    // construct the cookie
    if (sExpire)
        {
        sCookie += "; expires=" + sExpire.toGMTString();    // add expiry date if present
        }
    document.cookie = sCookie;                    // store the cookie
    return null;
    }

/***********************************************************************
*
* getCookie    -    Generic Get Cookie routine
*
* Input: sName    -    Name of cookie to retrieve
*
* Returns:        Requested cookie or null if not found
*
************************************************************************/

function getCookie(sName) 
    {
    var sCookiecrumbs = document.cookie.split("; ");     // break cookie into crumbs array
    var sNextcrumb
    for (var i=0; i < sCookiecrumbs.length; i++) 
    {
    sNextcrumb = sCookiecrumbs[i].split("=");    // break into name and value
    if (sNextcrumb[0] == sName)            // if name matches
        {
         return unescape(sNextcrumb[1]);         // return value
        }
    }
    return null;
    }

/***********************************************************************
*
* saveReferrer -    Saves the referrer to a Cookie
*
* Input:         nothing
*
* Returns:        null
*
************************************************************************/

function saveReferrer() 
    {
    var bSetCookie = false;
    if (parent.frames.length == 0)                    // No FrameSet
        {
        bSetCookie = true;
        }
    else                                                        // FrameSet in use
        {
        var bCatalogFrameSet = false;
        for (var nFrameId = parent.frames.length; nFrameId > 0; nFrameId--)
            {
            if (parent.frames[nFrameId - 1].name == 'CatalogBody')    // Catalog FrameSet used
                {
                bCatalogFrameSet = true;
                break;
                }
            }
        if (bCatalogFrameSet)                            // Catalog FrameSet
            {
            if (window.name=='CatalogBody')            // and this is the CatalogBody frame
                {
                bSetCookie = true;
                }
            }
        else                                                    // Not Catalog FrameSet
            {
            bSetCookie = true;
            }
        }
    if (bSetCookie)
        {
        var sUrl = document.URL;
        var nHashPos = sUrl.lastIndexOf("#");        // Look for URL anchor
        if (nHashPos > 0)                                    // if it exists
            {
            sUrl = sUrl.substring(0,nHashPos);        // then remove it
            }
        setCookie("ACTINIC_REFERRER", sUrl);        // Emulates HTTP_REFERER
        }
        return null;
        }
    
saveReferrer();                        // For v6 only, should be in templates for v7

/***********************************************************************
*
* CreateArray    creates an array with n elements
*
* Input: n    -    number of elements
*
* Returns:        the created array
*
************************************************************************/

function CreateArray(n)
    {
    this.length = n;
    for (var i=1; i <= n; i++)                            // for all ns
        {
        this[i] = new Section();                        // create a section structure
        }
    return this;                                            // return the created array
    }

/***********************************************************************
*
* Section    -    creates the section structure for raw section lists
*
* Input:                 nothing
*
* Returns:                nothing
************************************************************************/

function Section()
    {
    this.sURL = null;
    this.sName = null;
    this.sImage = null;
    this.nImageWidth = null;
    this.nImageHeight= null;
    this.nSectionId    = null;
    this.pChild = null;
    }
    
/***********************************************************************
*
* SwapImage            -    swaps an image to the alternative
*
* Input:    sName        -    name of the image
*
*            sAltImage    -    filename of the alternative image
*
************************************************************************/

function SwapImage(sName, sAltImage)
    {
    var nCount = 0;
    document.aSource = new Array;                        // array for images
    if (document[sName] != null)                        // if image name exists
        {
        document.aSource[nCount++] = document[sName];    // store image
        if(null == document[sName].sOldSrc)
            {
            document[sName].sOldSrc = document[sName].src;    // store image source
            }
        document[sName].src = sAltImage;                // change image source to alternative
        }
    }

/***********************************************************************
*
* RestoreImage        -    restores an image to the original
*
* Input:                 nothing
*
* Returns:                nothing
************************************************************************/

function RestoreImage()
    {
    var nCount, aSource = document.aSource;
    if (aSource != null)                                    // if array of images exists
        {
        for(nCount=0; nCount < aSource.length; nCount++)    // restore all images
            {
            if ((aSource[nCount] != null) &&
                (aSource[nCount].sOldSrc != null))    // if we stored something for this image
                {
                aSource[nCount].src = aSource[nCount].sOldSrc;    // restore the original image
                }
            }
        }
    }

/***********************************************************************
*
* PreloadImages        -    restores an image to the original
*
* Input:                 nothing
*
* Returns:                nothing
*
************************************************************************/

function PreloadImages()
    {
    bPageIsLoaded = true;
    if(document.images)
        {
        if(!document.Preloaded)                            // preload array defined?
            {
            document.Preloaded = new Array();        // no, define it
            }
        var nCounter , nLen = document.Preloaded.length, saArguments = PreloadImages.arguments;
        for(nCounter = 0; nCounter < saArguments.length; nCounter++)    // iterate through arguments
            {
            document.Preloaded[nLen] = new Image;
            document.Preloaded[nLen++].src = saArguments[nCounter];
            }
       }
    }
    
/***********************************************************************
*
* ShowPopUp        -    creates pop up window
*
* Input: sUrl        -    URL o page to display
*            nWidth    -    Width of window
*            nHeight    -    Height of window
*
* Returns:                nothing
*
************************************************************************/

function ShowPopUp(sUrl, nWidth, nHeight)
      {  
    window.open(sUrl, 'ActPopup', 'width=' + nWidth + ',height=' + nHeight + ',scrollbars, resizable');
    if (!bPageIsLoaded)
        {
        window.location.reload(true);
        }
    }
