﻿function renderMenu(albumID, encAlbumID, shortDate, albumType) {
    var oMenu;

    if (YAHOO.widget.MenuManager.getMenu("basicmenu") !== undefined) {
        oMenu = YAHOO.widget.MenuManager.getMenu("basicmenu");
        try {
            oMenu.destroy();
            oMenu = null;
            YAHOO.util.Event.purgeElement($get('photo_info_' + albumID), true); 
        } catch (e) { }
    }
    
    oMenu = new YAHOO.widget.Menu("basicmenu", { zindex: 21000, position: 'dynamic', shadow: true, clicktohide: false, lazyload: true, iframe: false });
   

    var oOuterContainer = document.getElementById('album_scrollbox'); // Important!  Used for Webkit based browser scroll fix.

    function Browse(p_sType, p_aArgs, p_oValue) {
        location.href=("../album/photos_view.aspx?q="+p_oValue); 
    }
    
    function AddToCart(p_sType, p_aArgs, p_oValue) {
        var cartService = new ICartService();  
        cartService.OrderEntireAlbum(p_oValue, Redirect, gotError);
    }
    
    function ShowSlideShow(p_sType, p_aArgs, p_oValue) {
       location.href="../album/slideshow_preview.aspx?q=" + p_oValue;
    }
    
    function EditAlbum(p_sType, p_aArgs, p_oValue) {
       location.href="../album/edit_album.aspx?q=" + p_oValue;
    }
    
    function AddMorePhotos(p_sType, p_aArgs, p_oValue) {
       location.href="../upload/copyright.aspx?q=" + p_oValue;
    }

    function ShareAlbum(p_sType, p_aArgs, p_oValue) {
       location.href = "../album/share_albums.aspx?q=" + p_oValue;
    }
    
    function Redirect(result) {
        if (result) {
            location.href=RootUrl+result;
        }
    }
    
    function gotError(){
    
    }
    
    /*
    Add items to the Menu instance by passing an array of object literals 
    (each of which represents a set of YAHOO.widget.MenuItem 
    configuration properties) to the "addItems" method.
    */

    var year = (String)(shortDate).slice(0, 4);

    oMenu.clearContent();
    
    // Add menu items
    switch (albumType) {
        case "albums":
            {
                oMenu.addItems([
                { text: "view album", onclick: { fn: Browse, obj: encAlbumID }, selected: true },
                { text: "order entire album", onclick: { fn: AddToCart, obj: albumID} },
                { text: "edit album settings", onclick: { fn: EditAlbum, obj: encAlbumID} },
                { text: "add photos", onclick: { fn: AddMorePhotos, obj: encAlbumID} },
                { text: "play slideshow", onclick: { fn: ShowSlideShow, obj: encAlbumID} },
                { text: "share album", onclick: { fn: ShareAlbum, obj: encAlbumID} }
                ]);
                break;
            }
        case "friends":
            {
                oMenu.addItems([
                { text: "view album", onclick: { fn: Browse, obj: encAlbumID }, selected: true },
                { text: "order entire album", onclick: { fn: AddToCart, obj: albumID} },
                { text: "play slideshow", onclick: { fn: ShowSlideShow, obj: encAlbumID} }
                ]);
                break;
            }
    }

    function onShow(p_sType, p_aArgs) {
        $get("album_thumb_" + albumID).onmouseout = function() { albumMouseOver(this) };
        $get("album_thumb_" + albumID).onmouseover = function() { albumMouseOver(this) };
    }

    function onHide(p_sType, p_aArgs) {
        $get("album_thumb_" + albumID).onmouseout = function() { albumMouseOut(this) };
        $get("album_thumb_" + albumID).onmouseover = function() { albumMouseOver(this) };

        $get("album_thumb_" + albumID).className = $get("album_thumb_" + albumID).className.replace('_hilite', '_nohilite');
        $get("img_photo_menu_" + albumID).style.display = 'none';
        $get("photo_date_" + albumID).style.width = '110px';
        $get("photo_date_" + albumID).style.overflow = '';
        $get("photo_date_" + albumID).style.height = '12px';
    }

    function albumMouseOut(e) {
        e.className = e.className.replace('_hilite', '_nohilite');  
        $get("img_photo_menu_" + albumID).style.display = 'none';
        $get("photo_date_" + albumID).style.overflow = '';
        $get("photo_date_" + albumID).style.width = '110px';
        $get("photo_date_" + albumID).style.height = '12px';
    }

    function albumMouseOver(e) {
        e.className = e.className.replace('_nohilite', '_hilite');
        $get("img_photo_menu_" + albumID).style.display = 'block';
        $get("photo_date_" + albumID).style.width = '80px';
        $get("photo_date_" + albumID).style.height = '12px';
        $get("photo_date_" + albumID).style.overflow = 'hidden';
    }
   

    oMenu.subscribe("show", onShow);
    oMenu.subscribe("hide", onHide);


    YAHOO.util.Event.addListener("photo_info_" + albumID, "click", 
                         function(e) {
                                       aXY = YAHOO.util.Event.getXY(e);
                                       aXY[0] += 1;
                                       aXY[1] += 1;
                                       this.cfg.setProperty('XY', aXY);
                                       this.cfg.setProperty('hidedelay', 100);
                                       YAHOO.widget.MenuManager.hideVisible();
                                       this.show();
                                     },
                        null,
                        oMenu); 

    function getScrollAmount(p_oElement, p_sProperty, p_nTotalScrollAmount) {
        var nTotalScrollAmount = p_nTotalScrollAmount || 0,
        nElScrollAmount = p_oElement[p_sProperty],
        oParentNode;
               
        if (nElScrollAmount && YAHOO.util.Dom.getStyle(p_oElement, "position") == "static") {
            nTotalScrollAmount += nElScrollAmount;
        }
               
        oParentNode = p_oElement.parentNode;

        if (oParentNode && oParentNode != document.body) {
            return getScrollAmount(oParentNode, p_sProperty, nTotalScrollAmount);
        } else {
            return nTotalScrollAmount;
        }
    }

    function onYChange(p_sType, p_aArgs, p_oButton) {
    
        var nY = this.cfg.getProperty("y"),
        oIFrame;
                      
        if (nY) {
            nY = (nY - getScrollAmount(oOuterContainer, "scrollTop"));
            YAHOO.util.Dom.setY(this.element, nY);
            
            // Sync the position of the iframe shim if it is enabled
            oIFrame = this.iframe;
            
            if (oIFrame) {
                YAHOO.util.Dom.setY(oIFrame, nY);
            }
           
            // Sync the value of the "y" property to the new, correct value
            this.cfg.setProperty("y", nY, true);
        }
        
    }
    
    if ((!YAHOO.env.ua.ie) && (!(YAHOO.env.ua.gecko && YAHOO.env.ua.gecko >= 1.9))) {
        oMenu.cfg.subscribeToConfigEvent("y", onYChange, this);
    }

    oMenu.render("photo_info_" + albumID);

    $get("photo_info_" + albumID).onclick;
}

