var ALBUM = {
    require: ["main", "ajax", "yui/yahoo/yahoo-min", "yui/animation/animation-min", "yui/event/event-min", "yui/dom/dom-min", "yui/container/container-min", "yui/menu/menu-min", "yui/utilities/utilities"],
    photoalbum_link: null,
    init: function(args) {
        this.photoalbum_link = args.photoalbum_link;
    },

    show_textbox: function(textbox) {
        if (!textbox.readOnly) { return; }
        textbox.readOnly = false;
        if(textbox.value == 'Add title...') {
            textbox.value = '';
        }
        var save_func = function() { 
            ALBUM.save_photo(textbox);
            img.style.display='none';
        }
        textbox.onkeypress = function(e) {
            e = e || window.event;
            if (e.keyCode == 13) {
                save_func();
            }
        }

        // save image
        var img = new Image();
        img.src = '/fs_img/save.gif';
        img.style.cursor = 'pointer';
        img.onclick = save_func;
        textbox.parentNode.insertBefore(img, textbox.nextSibling)
    },
    
    save_photo: function(o) {
        o.readOnly = true;
        var img = new Image();
        img.src = '/fs_img/js/yui/tabview/img/loading.gif';
        img.style.position='absolute';
        o.parentNode.insertBefore(img, o.nextSibling)

        var photo_id = o.id.replace(/^.*_/, '');
        var type = o.id.replace(/_.*?$/, '');
        var value = o.value;
        
        var link = this.photoalbum_link + '/edit_photo_ajax';
        var params = '?photo_id=' + photo_id + '&' + type + '=' + value;
        AJAX.get(link + params, {
            success_handler: function(obj, argument) {
                argument.box.value = argument.my_value;
                argument.animated_img.parentNode.removeChild(argument.animated_img);
            },
            failure_handler: function(obj, argument) {
                ALBUM.show_textbox(argument.box);
                argument.animated_img.parentNode.removeChild(argument.animated_img);
                argument.box.focus();
            },
            argument: { 
                box: o,
                my_value: value,
                animated_img: img
            }
        });
    },

    delete_photo: function(photo_id) {
        if(confirm('Are you sure you want to delete this?')) {
            var el = MAIN.byid('photo_' + photo_id);
            var original_html = el.innerHTML;
            el.innerHTML = '<b>Deleting...</b><img src="/fs_img/js/yui/tabview/img/loading.gif" />';
            
            var url = this.photoalbum_link + '/delete_photo?ajax=1&photo_id=' + photo_id;
            AJAX.get(url, {
                success_handler: function(obj, argument) {
                    MAIN.byid('photo_' + argument.my_photo_id).innerHTML = '<b>Successfully deleted photo.</b>';
                },
                failure_handler: function(obj, argument) {
                    MAIN.byid('photo_' + argument.my_photo_id).innerHTML = argument.original_html; 
                },
                argument: { 
                    my_photo_id:   photo_id,
                    original_html: original_html
                }
            });
        }
    },

    delete_album: function(id) {
        if (confirm('By deleting this album, you will also delete all photos it contains.  Are you sure you want to delete this?')) {
            var original_html = MAIN.byid('album_' + id).innerHTML;
            MAIN.byid('album_' + id).innerHTML = '<b>Deleting...</b>';
            var url = this.photoalbum_link + '/delete_album?ajax=1&album_id=' + id;
            AJAX.get(url, {
                failure_handler: function(obj, argument) {
                    MAIN.byid('album_' + argument.my_id).innerHTML = argument.original_html;
                    
                },
                success_handler: function(obj, argument) {
                    MAIN.byid('album_' + argument.my_id).innerHTML = '<b>Successfully deleted album.</b>'; 
                },
                argument: { 
                    my_id: id,
                    original_html: original_html
                }
            });
        }
    },

    link: function(step, album_id) {
        return ALBUM.photoalbum_link + '/' + step + '/' + album_id;
    },

    edit_menu: [],
    create_edit_menu: function(menu_div_id, album_id) {
        this.onLoadQueue = this.onLoadQueue || {};
        this.onLoadQueue[album_id] = menu_div_id;
        var obj = this;
        window.onload = function () { obj.doOnLoad(); };
    },
    doOnLoad: function () {
        if (this.onLoadQueue) {
            for (album_id in this.onLoadQueue) {
                this._create_edit_menu(this.onLoadQueue[album_id], album_id);
            }
        }
    },   
    _create_edit_menu: function(menu_div_id, album_id) {
        var menu_id = 'edit_menu_id_' + album_id;
        var edit_menu = new YAHOO.widget.Menu(
            menu_id, {
                showdelay:  250,
                hidedelay:  750,
                zindex:    100,
                effect: { 
                    effect:     YAHOO.widget.ContainerEffect.FADE,
                    duration:   0.25
                }
            }
        );
        for (step in this.menu_items) {
            var url =  ALBUM.link(step, album_id);
            var item = new YAHOO.widget.MenuItem(this.menu_items[step], { 
                url: url
            });
            edit_menu.addItem(item);
        }
        edit_menu.render(MAIN.byid(menu_div_id));
        this.edit_menu[album_id] = edit_menu;
    },

    show_edit_menu: function(album_id) {
        this.edit_menu[album_id].show();
    },

    menu_items: {
        edit_album:     "Edit Album Details...",
        view_album:     "View Album",
        slideshow:      "View as Slideshow",
        reorder_photos: "Rearrange Photos",
        add_photos:     "Add Photos to this Album...",
        share_album:    "Share this Album..."
    }

}; 

for (index in ALBUM.require) {
    var src = '<script type="text/javascript" src="/fs_img/js/' + ALBUM.require[index] + '.js"></script>';
    document.write(src);
}
