﻿
//
// Thumb container
//

Type.registerNamespace('PhotoSite');

PhotoSite.ThumbItem = function(obj, imageUrl, name, details)
{
    this._obj = obj;
    this._imageUrl = imageUrl;
    this._name = name;
    this._details = details;
};

PhotoSite.ThumbItem.prototype = {

    _obj: null,
    _imageUrl: null,
    _name: null,
    _details: null,

    _domOuterContainer: null,
    _domInnerContainer: null,
    _domLinkContainer: null,
    _domImage: null,
    _domInput: null,
    _domName: null,
    _domDetail: null,
    _domEmpty: null,

    getObjectRef: function() {
        return this._obj;
    },

    clear: function() {
        this._domOuterContainer = this._domInnerContainer = this._domImage = this._domLink = this._domName = this._domDetail = this._domEmpty = null;
    },

    hide: function() {
        this.deSelect();
        this._domOuterContainer.style.display = 'none';
    },

    update: function(imageUrl, name, details) {
        this._name = name;
        this._details = details;
        this._imageUrl = imageUrl;

        if (imageUrl && imageUrl.length > 0) {
            if (this._domImage === null) {
                this._domImage = document.createElement('img');
                this._domImage.src = this._imageUrl;

                this._domInnerContainer.removeChild(this._domEmpty);
                this._domInnerContainer.appendChild(this._domImage);

                this._domEmpty = null;
            }
            else {
                this._domImage.src = imageUrl;
            }
        }

        this._domName.nodeValue = name;

        if (this._domDetail !== null) {
            this._domLinkContainer.removeChild(this._domDetail);
        }

        this._appendDetailsInfo();
    },

    _appendDetailsInfo: function() {
        if (typeof (this._details) !== 'undefined' && this._details != null) {
            this._domDetail = document.createElement('span');
            this._domDetail.className = 'blue';
            this._domDetail.innerHTML = '(' + this._details + ')';
            this._domLinkContainer.appendChild(document.createTextNode(' '));
            this._domLinkContainer.appendChild(this._domDetail);
        }
    },

    render: function(outerClassName, innerClassName, linkClassName, inputType, onClickCallback, emptyClassName, emptyText) {
        if (this._domOuterContainer !== null) {
            return this._domOuterContainer;
        }

        this._domOuterContainer = document.createElement('div');
        this._domInnerContainer = document.createElement('div');
        this._domLinkContainer = document.createElement('div');

        if (this._imageUrl && this._imageUrl.length > 0) {
            this._domImage = document.createElement('img');
            this._domImage.src = this._imageUrl;
        }
        else {
            this._domEmpty = document.createElement('div');
            this._domEmpty.className = emptyClassName;
        }

        this._domOuterContainer.className = outerClassName;
        this._domInnerContainer.className = innerClassName;
        this._domLinkContainer.className = linkClassName;

        if (typeof (inputType) !== 'undefined' && inputType !== null) {
            if (inputType == 'radio') {
                try {
                    this._domInput = document.createElement('<input type="radio" name="' + outerClassName + '_radio_name" />');
                }
                catch (err) {
                    this._domInput = document.createElement('input');
                }
                this._domInput.setAttribute('type', 'radio');
                this._domInput.setAttribute('name', outerClassName + '_radio_name');
            }
            else {
                this._domInput = document.createElement('input');
                this._domInput.type = inputType;
            }

            this._domLinkContainer.appendChild(this._domInput);
            this._domLinkContainer.appendChild(document.createTextNode(' '));
        }
        if (this._name.length > 14) {
            this._name = this._name.substring(0, 14) +'...';
        } 
        this._domName = document.createTextNode(this._name);
        this._domLinkContainer.appendChild(this._domName);
        this._appendDetailsInfo();

        if (this._domImage) {
            if (onClickCallback) {
                var anchor = document.createElement('a');
                anchor.href = '#';
                anchor.obj = this.getObjectRef();
                anchor.onclick = function() { onClickCallback(this.obj); return false; };
                anchor.appendChild(this._domImage);
                this._domInnerContainer.appendChild(anchor);
            }
            else {
                this._domInnerContainer.appendChild(this._domImage);
            }
        }
        else {
            var p = document.createElement('p');

            if (onClickCallback) {
                var anchor = document.createElement('a');
                anchor.href = '#';
                anchor.obj = this.getObjectRef();
                anchor.onclick = function() { onClickCallback(this.obj); return false; };
                anchor.innerHTML = emptyText;
                p.appendChild(anchor);
            }
            else {
                p.innerHTML = emptyText;
            }

            this._domEmpty.appendChild(p);
            this._domInnerContainer.appendChild(this._domEmpty);
        }

        this._domOuterContainer.appendChild(this._domInnerContainer);
        this._domOuterContainer.appendChild(this._domLinkContainer);

        return this._domOuterContainer;
    },

    select: function() {
        if (this._domInput) {
            this._domInput.checked = true;
        }
    },

    deSelect: function() {
        if (this._domInput) {
            this._domInput.checked = false;
        }
    },

    selected: function() {
        return this._domInput ? this._domInput.checked : false;
    }
};

PhotoSite.ThumbContainer = function(id)
{
    this._id = id;
    this._items = [];
    this._containerClassNames = [null, null, null];
};

PhotoSite.ThumbContainer.prototype = {

    _id: null,
    _items: null,
    _sizeIndex: 0,
    _thumbInputTypeName:  null,
    _thumbLinkClassName:  null,
    _thumbOuterClassName: null,
    _thumbInnerClassName: null,
    _containerClassNames: null,
    _thumbOnClickCallback: null,
    _thumbEmptyClassName: null,
    _thumbEmptyText: null,

    _getDomElement: function(name)
    {
        return document.getElementById(this._id + '_dom' + name);
    },

    _showDomElement: function(name)
    {
        this._getDomElement(name).style.display = '';
    },

    _hideDomElement: function(name)
    {
        this._getDomElement(name).style.display = 'none';
    },

    setupSortOptions: function(sortOptions)
    {
        if (typeof(sortOptions) !== 'undefined' && sortOptions !== null)
        {
            var select = this._getDomElement('SortDropDown');
            
            RemoveAllChildNodes(select);

            for (var i = 0; i < sortOptions.length; i++)
            {
                var option = document.createElement('option');
                option.innerHTML = sortOptions[i].Name;
                option.value = sortOptions[i].Value;
                select.appendChild(option);
            }
            
            select.onchange = Function.createDelegate(this, this.sort);
            
            this._showDomElement('SortContainer');
        }
        else
        {
            this._hideDomElement('SortContainer');
        }
    },

    setupLinkObjects: function(linkObjects)
    {
        if (typeof(linkObjects) !== 'undefined' && linkObjects !== null)
        {
            var container = this._getDomElement('LinkObjects');

            RemoveAllChildNodes(container);

            for (var i = 0; i < linkObjects.length; i++)
            {
                var linkObj = linkObjects[i];
                var callback = linkObj.Callback;
                
                var anchor = document.createElement('a');
                var strong = document.createElement('strong');
                
                anchor.href = '#';
                anchor.obj = linkObj;
                anchor.onclick = function() { this.obj.Callback(); return false; };
                strong.innerHTML = linkObj.Text;
                anchor.appendChild(strong);
                anchor.style.marginLeft = '8px';
                
                container.appendChild(anchor);
            }
        }
        else
        {
            this._getDomElement('LinkObjects').innerHTML = '';
        }
    },

    setupControlButtons: function(controlButtons)
    {
        if (typeof(controlButtons) !== 'undefined' && controlButtons !== null)
        {
            var container = this._getDomElement('ControlButtons');

            RemoveAllChildNodes(container);
            
            for (var i = 0; i < controlButtons.length; i++)
            {
                var controlBtn = controlButtons[i];
                var buttonImg = document.createElement('img');
                
                buttonImg.src = controlBtn.Image;
                buttonImg.onclick = controlBtn.Callback;
                buttonImg.style.cursor = 'pointer';
                
                container.appendChild(buttonImg);
                container.appendChild(document.createTextNode(' '));
            }
            
            this._showDomElement('ControlButtonContainer');
            this._getDomElement('Scrollbox').style.marginTop = '0px';
            this._getDomElement('Scrollbox').style.marginBottom = '0px';
        }
        else
        {
            this._hideDomElement('ControlButtonContainer');
            this._getDomElement('Scrollbox').style.marginTop = '15px';
            this._getDomElement('Scrollbox').style.marginBottom = '30px';
        }
    },

    setup: function(title, showSizeOptions, showSelectAll, sortOptions, linkObjects, controlButtons)
    {
        this.clear();
        this._getDomElement('Scrollbox').scrollTop = 0;
        this._getDomElement('Title').innerHTML = title;
        this._getDomElement('ResizeOptions').style.display = showSizeOptions ? '' : 'none';
        this._getDomElement('SelectContainer').style.display = showSelectAll ? '' : 'none';
        
        this.setupSortOptions(sortOptions);
        this.setupLinkObjects(linkObjects);
        this.setupControlButtons(controlButtons);
        
        this.setThumbSizeIndex(0);
    },

    setTitle: function(title)
    {
        this._getDomElement('Title').innerHTML = title;
    },
    
    selectAll: function()
    {
        for (var i = 0; i < this._items.length; i++)
        {
            this._items[i].select();
        }
    },
    
    deSelectAll: function()
    {
        for (var i = 0; i < this._items.length; i++)
        {
            this._items[i].deSelect();
        }
    },
    
    add: function(obj, imageUrl, name, details)
    {
        this._items.push(new PhotoSite.ThumbItem(obj, imageUrl, name, details));
    },
    
    update: function(obj, imageUrl, name, details)
    {
        for (var i = 0; i < this._items.length; i++)
        {
            if (this._items[i].getObjectRef() == obj)
            {
                this._items[i].update(imageUrl, name, details);
                break;
            }
        }
    },
    
    _getSpecificItems: function(itemTestCallback)
    {
        var result = new Array;
        
        for (var i = 0; i < this._items.length; i++)
        {
            if (itemTestCallback(this._items[i]))
            {
                result.push(this._items[i].getObjectRef());
            }
        }
        
        return result;
    },
    
    getItems: function()
    {
        return this._getSpecificItems(function(p){return true;});
    },
    
    getSelectedItem: function()
    {
        return this.getSelectedItems()[0];
    },
    
    getSelectedItems: function()
    {
        return this._getSpecificItems(function(p){return p.selected();});
    },
    
    getSelectedItemsSingleProperty: function(propName)
    {
        var items = this.getSelectedItems();
        var result = new Array;
        
        for (var i = 0; i < items.length; i++)
        {
            result.push(items[i][propName]);
        }
        
        return result;
    },
    
    remove: function(obj)
    {
        for (var i = 0; i < this._items.length; i++)
        {
            if (this._items[i].getObjectRef() == obj)
            {
                this._items[i].hide();
                Array.removeAt(this._items, i);
                break;
            }
        }
    },
    
    clear: function()
    {
        this._items.length = 0;
    },
    
    render: function()
    {
        var content = this._getDomElement('Content');
        
        RemoveAllChildNodes(content);
        
        content.className = this._containerClassNames[this._sizeIndex];
        
        for (var i = 0; i < this._items.length; i++)
        {
            var item = this._items[i].render(this._thumbOuterClassName, this._thumbInnerClassName, this._thumbLinkClassName, this._thumbInputTypeName, this._thumbOnClickCallback, this._thumbEmptyClassName, this._thumbEmptyText);
            content.appendChild(item);
        }
    },
    
    sort: function()
    {
        var sortBy = this._getDomElement('SortDropDown').value;
        RadixSort.sortByKeyCallback(this._items, function(p) { return p.getObjectRef()[sortBy]; }, (sortBy == "DateCreated"));
        this.render();
    },
    
    setThumbSizeIndex: function(index)
    {
        this._sizeIndex = index;
        this._getDomElement('Content').className = this._containerClassNames[this._sizeIndex];
        
        for (var i = 0; i < 3; i++)
        {
            var btn = this._getDomElement('ThumbSizeButton' + i);
            var src = btn.src;
            
            src = src.replace('_on.gif', '.gif');
            
            if (i == index)
            {
                src = src.replace('.gif', '_on.gif');
            }
            
            btn.src = src;
        }
    },
    
    setContainerClasses: function(large, medium, small)
    {
        this._containerClassNames[0] = large;
        this._containerClassNames[1] = medium;
        this._containerClassNames[2] = small;
    },
    
    setThumbOuterClass: function(className)
    {
        this._thumbOuterClassName = className;
    },
    
    setThumbInnerClass: function(className)
    {
        this._thumbInnerClassName = className;
    },
    
    setThumbLinkClass: function(className)
    {
        this._thumbLinkClassName = className;
    },
    
    setThumbInputTypeName: function(typeName)
    {
        this._thumbInputTypeName = typeName;
    },
    
    setThumbOnClickCallback: function(callbackFunction)
    {
        this._thumbOnClickCallback = callbackFunction;
    },
    
    setThumbEmptyClassName: function(className)
    {
        this._thumbEmptyClassName = className;
    },
    
    setThumbEmptyText: function(text)
    {
        this._thumbEmptyText = text;
    }

};

//
// Page functionality...
//

var displayType = null;
var mediaCache = {};
var albumService = null;
var currentAlbum = null;

function getAlbumService()
{
    if (albumService === null)
    {
        albumService = new IAlbumService();
    }
    return albumService;
}

function onTabChanged(name)
{
    if (name == 'albums')
    {
        displayAlbums('Upload');
    }
    else if (name == 'projects')
    {
        displayProjects('PhotoBook');
    }
    else if (name == 'documents')
    {
        displayDocuments();
    }
}

function onSectionChanged(section)
{
    switch (section.getID())
    {
    case 'AlbumUpload':
        displayAlbums('Upload');
        break;
    case 'AlbumShared':
        displayAlbums('Share');
        break;
    case 'AlbumFriend':
        displayAlbums('Friend');
        break;
    case 'PhotoBooks':
        displayProjects('PhotoBook');
        break;
    case 'Calendars':
        displayProjects('Calendar');
        break;
    case 'SharedPhotoBooks':
        displayProjects('SharedPhotoBook');
        break;
    }
}

function onAlbumClick(album)
{
    if (album.NoOfMedia == 0)
    {
        location.href = '../upload/upload.aspx?a=' + album.ID;
    }
    else
    {
        onAlbumChanged(album);
    }
}

function onAlbumChanged(album)
{   
    if (mediaCache[album.ID])
    {
        displayAlbumMedia(album);
    }
    else if (album.NoOfMedia > 0)
    {
        showLoadingPopupDelayed();
        getAlbumService().GetAlbumMedia2(album.ID, onGotAlbumMedia, gotError, album);
    }
    else
    {
        mediaCache[album.ID] = new Array;
        displayAlbumMedia(album);
    }
    currentAlbum = album;
}

function onGotAlbumMedia(result, ctx)
{
    mediaCache[ctx.ID] = result;
    displayAlbumMedia(ctx);
    hideLoadingPopup();
}

function onMediaClick(media)
{
    location.href = 'prints_preview.aspx?m=' + media.ID;
}

function sharePrints()
{
    var prints = ThumbHolder.getSelectedItems();
    
    if (prints.length === 0)
    {
        msgBox.Show(SR.Share, SR.CollagePopUpSelectPhotos, [{ Button: 'Ok'}]);
        return;
    }
    else
    {
        showLoadingPopup();
        getAlbumService().ShareImages(ThumbHolder.getSelectedItemsSingleProperty('ID'), sharePrints_Callback, gotError);
    }
}

function sharePrints_Callback(result)
{
    location.href = '../share/generate_share.aspx?q=' + result;
}

function orderPrints()
{
    var prints = ThumbHolder.getSelectedItems();
    
    if (prints.length === 0)
    {
        msgBox.Show(SR.OrderPrints, SR.CollagePopUpSelectPhotos, [{ Button: 'Ok'}]);
        return;
    }
    else
    {
        showAddToCartConfirmation();
    }
}

function showAddToCartConfirmation()
{
    msgBox.Show(SR.AddToCartConfirmationConfirmation, SR.AddTheSelectedPrintsToTheCart,
        [{ Button: 'AddToCart', Callback: function() { _albumOrderPrints(false); } },
         { Button: 'Cancel' },
         { Button: 'AddAndGoToCart', Callback: function() { _albumOrderPrints(true); } }
        ]);
}

function printSlideshow() {
    var prints = ThumbHolder.getSelectedItems();
    //    currentAlbum.NoOfMedia -= prints.length;
    //    if (currentAlbum.NoOfMedia == 0)
    if (prints.length == 0) {
        //        msgBox.Show(SR.SlideShow, SR.ThereisnophotointheSelectedAlbum, [{ Button: 'Ok', Callback: _defaultPage}]);
        msgBox.Show(SR.SlideShow, SR.CollagePopUpSelectPhotos, [{ Button: 'Ok', Callback: null}]);
        return;
    }
    location.href = 'slideshow_preview.aspx?q=' + currentAlbum.ID;
}

function _defaultPage() {
    location.href = 'default.aspx';
}
function copyPrints()
{
    var prints = ThumbHolder.getSelectedItems();
    
    if (prints.length === 0)
    {
        msgBox.Show(SR.Copy, SR.SelectImageToCopyHere, [{ Button: 'Ok'}]);
        return;
    }
    else
    {
        populateCopyPopup();
        PopupCopy.show();
    }
}

function movePrints()
{
    var prints = ThumbHolder.getSelectedItems();
    
    if (prints.length === 0)
    {
        msgBox.Show(SR.Move, SR.PrintsToBeMovedPopup, [{ Button: 'Ok'}]);
    }
    else
    {
        populateMovePopup();
        PopupMoveMedia.show();
    }
}

function movePrintsConfirm()
{
    var albumID = getSelectedAlbumToCopyTo();
    
    if (albumID === null)
    {
        return;
    }
    
    var target = TabsPanel.getAlbumByID(albumID);
    
    if (target == null)
    {
        return;
    }
    
    var prints = ThumbHolder.getSelectedItems();
    var printIDs = ThumbHolder.getSelectedItemsSingleProperty('ID');
    
    if (mediaCache[albumID])
    {
        for (var i = 0; i < prints.length; i++)
        {
            mediaCache[albumID].push(prints[i]);
        }
    }
    
    target.NoOfMedia += prints.length;
    currentAlbum.NoOfMedia -= prints.length;
    
    if (target.ThumbUrl.length == 0)
    {
        target.ThumbUrl = prints[0].ThumbUrl;
    }
    
    for (var i = 0; i < prints.length; i++)
    {
        Array.remove(mediaCache[currentAlbum.ID], prints[i]);
    }
    
    displayAlbumMedia(currentAlbum);
    
    getAlbumService().MovePrintstoAlbum(printIDs, albumID, gotSuccess, gotError);
    
    PopupMoveMedia.hide();
}

function removePrints()
{
    var prints = ThumbHolder.getSelectedItems();
    
    if (prints.length == 0)
    {
        msgBox.Show(SR.Remove, SR.SelectPrintsToBeRemove, [{ Button: 'Ok'}]);
        return;
    }
    else
    {
        PopupRemovePrints.show();
    }
}

function removePrintsConfirm()
{
    var prints = ThumbHolder.getSelectedItems();
    var printIDs = ThumbHolder.getSelectedItemsSingleProperty('ID');
    
    for (var i = 0; i < prints.length; i++)
    {
        Array.remove(mediaCache[currentAlbum.ID], prints[i]);
    }
    
    currentAlbum.NoOfMedia -= prints.length;
    
    if (mediaCache[currentAlbum.ID].length > 0)
    {
        currentAlbum.ThumbUrl = mediaCache[currentAlbum.ID][0].ThumbUrl;
    }
    else
    {
        currentAlbum.ThumbUrl = '';
    }
    
    getAlbumService().RemovePrints(printIDs, gotSuccess, gotError);
    
    displayAlbumMedia(currentAlbum);
    
    PopupRemovePrints.hide();
}

function displayAlbumMedia(album)
{
    var albumID = album.ID;
    
    if (displayType != 'Print')
    {
        ThumbHolder.setup(album.Name, true, true, null,
            [
                { Text: SR.Copy, Callback: copyPrints }, { Text: SR.Move, Callback: movePrints }, { Text: SR.Remove, Callback: removePrints }
            ],
            [
                { Image: '../images/btns/btn_share_images' + SR.LanguageSuffix + '.gif', Callback: sharePrints },
                { Image: '../images/btns/btn_order_prints' + SR.LanguageSuffix + '.gif', Callback: orderPrints },
                { Image: '../images/btns/btn_slideshow' + SR.LanguageSuffix + '.gif', Callback: printSlideshow }
            ]);

        ThumbHolder.setContainerClasses('print');
        
        ThumbHolder.setThumbOuterClass('print');
        ThumbHolder.setThumbInnerClass('print_thumb');
        ThumbHolder.setThumbLinkClass('print_link');
        ThumbHolder.setThumbInputTypeName('checkbox');
        ThumbHolder.setContainerClasses('albums_listing', 'albums_listing_med', 'albums_listing_sm');
        
        ThumbHolder.setThumbOnClickCallback(onMediaClick);
    }
    else
    {
        ThumbHolder.clear();
        ThumbHolder.setTitle(album.Name);
    }

    var medias = mediaCache[albumID];

    for (var i = 0; i < medias.length; i++)
    {
        ThumbHolder.add(medias[i], medias[i].ThumbUrl, medias[i].Name);
    }
    
    ThumbHolder.render();
    
    displayType = 'Print';
}

function newAlbum()
{
    TabsPanel.promptCreateNewAlbum();
}

function populateMovePopup()
{
    populateAlbumListMarkup('div_move_album_markup');
}

function populateCopyPopup()
{
    populateAlbumListMarkup('div_popup_copy_album_markup');
}

function populateAlbumListMarkup(divName)
{
    var markup = new Sys.StringBuilder();
    var albums = TabsPanel.getAlbumsByType('Upload');

    markup.append("<table>");

    for (var i = 0; i < albums.length; i++)
    {
        markup.append("<tr><td><input type='radio' name='album_to_copy_to' value='");
        markup.append(albums[i].ID);
        markup.append("'/>&nbsp;</td><td>");
        markup.append(albums[i].Name);
        markup.append('</td></tr>');
    }

    markup.append("</table>");

    document.getElementById(divName).innerHTML = markup.toString();
}

function copyAlbum()
{
    var albums = ThumbHolder.getSelectedItems();
    
    if (albums.length == 0)
    {
        msgBox.Show(SR.CopyAlbumCopyit, SR.SelectAlbumToCopyHere, [{ Button: 'Ok'}]);
        return;
    }
    else
    {
        populateCopyPopup();
        PopupCopy.show();
    }
}

function getSelectedAlbumToCopyTo()
{
    var inputs = document.getElementsByName('album_to_copy_to');
    var albumID = null;
    
    for (var i = 0; i < inputs.length; i++)
    {
        if (inputs[i].checked)
        {
            albumID = inputs[i].value;
            break;
        }
    }
    
    return albumID;
}

function copyAlbumSelect()
{
    var albumID = getSelectedAlbumToCopyTo();
    
    if (albumID === null)
    {
        return;
    }
    
    var target = TabsPanel.getAlbumByID(albumID);
    
    if (target === null)
    {
        return;
    }
    
    PopupCopy.hide();
    showLoadingPopup(SR.CopyingPleaseWait);
    
    mediaCache[target.ID] = null;
    
    if (displayType == 'Album')
    {
        var albums = ThumbHolder.getSelectedItems();
        
        for (var i = 0; i < albums.length; i++)
        {
            target.NoOfMedia += albums[i].NoOfMedia;
            
            if (target.ThumbUrl.length == 0)
            {
                target.ThumbUrl = albums[i].ThumbUrl;
            }
        }
        
        ThumbHolder.update(target, target.ThumbUrl, target.Name, target.NoOfMedia);
        
        getAlbumService().CopyAlbums(ThumbHolder.getSelectedItemsSingleProperty('ID'), target.ID, function() { hideLoadingPopup(); }, gotError);
    }
    else
    {
        var prints = ThumbHolder.getSelectedItems();
        
        target.NoOfMedia += prints.length;
        
        if (target.ThumbUrl.length == 0)
        {
            target.ThumbUrl = prints[0].ThumbUrl;
        }
        
        getAlbumService().CopyPrintstoAlbum(ThumbHolder.getSelectedItemsSingleProperty('ID'), target.ID, function() { hideLoadingPopup(); ThumbHolder.deSelectAll(); }, gotError);
    }
}

function renameAlbum()
{
    var albums = ThumbHolder.getSelectedItems();

    if (albums.length == 0)
    {
        msgBox.Show(SR.RenameIt, SR.NoAlbumWasSelectedNo, [{ Button: 'Ok'}]);
    }
    else if (albums.length > 1)
    {
        msgBox.Show(SR.RenameIt, SR.YouCanOnlySelectOneAlbum, [{ Button: 'Ok'}]);
    }
    else
    {
        PopupRenameAlbum.show();
    }
}

function renameAlbumConfirmed(newName)
{
    if (newName.length == 0)
    {
        return;
    }
    
    var album = ThumbHolder.getSelectedItems()[0];
    
    album.Name = newName;
    
    getAlbumService().SaveRenamedAlbum(album.ID, album.Name, gotSuccess, gotError);

    ThumbHolder.update(album, album.ThumbUrl, album.Name, album.NoOfMedia);
    TabsPanel.rePopulateAlbumTabs();

    PopupRenameAlbum.hide();
    displayAlbums('Upload');
}

function removeAlbum()
{
    var albums = ThumbHolder.getSelectedItems();
    
    if (albums.length == 0)
    {
        msgBox.Show(SR.RemoveTheAlbum, SR.SelectAlbumToRemoveIt, [ { Button: 'Ok'} ]);
    }
    else
    {
        msgBox.Show(SR.DeleteConfirmation, SR.SelectedAlbumWillBeRemovedRemoved, [{ Button: 'Cancel'}, { Button: 'Ok', Callback: _removeAlbumConfirmed}]);
    }
}

function _removeAlbumConfirmed()
{
    var albums = ThumbHolder.getSelectedItems();
    var albumIDs = new Array;
    
    for (var i = 0; i < albums.length; i++)
    {
        albumIDs.push(albums[i].ID);
        ThumbHolder.remove(albums[i]);
    }
    
    TabsPanel.removeAlbums(albums);
    
    getAlbumService().RemoveAlbums(albumIDs, gotSuccess, gotError);
}

function albumOrderPrints()
{
    var albums = ThumbHolder.getSelectedItems();
    
    if (albums.length == 0)
    {
        msgBox.Show(SR.OrderPrints, SR.SelectPleaseAlbum, [{ Button: 'Ok'}]);
        return;
    }
    else
    {
        showAddToCartConfirmation();
    }
}

function _albumOrderPrints(redirectToCart)
{
    var IDs = ThumbHolder.getSelectedItemsSingleProperty('ID');
    showLoadingPopup(SR.AddingToCartPleaseWait);
    
    if (displayType == 'Album')
    {
        getAlbumService().AddAlbumsToCart(IDs, function() { if (redirectToCart) { location.href = shoppingCartURL; } else { hideLoadingPopup(); ShowCartItemCount(); } }, gotError);
    }
    else
    {
        getAlbumService().AddPrintsToCart(IDs, function() { if (redirectToCart) { location.href = shoppingCartURL; } else { hideLoadingPopup(); ShowCartItemCount(); } }, gotError);
    }
}

function albumShare()
{
    var albums = ThumbHolder.getSelectedItems();

    if (albums.length == 0)
    {
        msgBox.Show(SR.ShareAnAlbumWith, SR.SelectPleaseAlbum, [{ Button: 'Ok'}]);
    }
    else
    {
        for (var i = 0; i < albums.length; ++i) 
        {
            if (albums[i].NoOfMedia == 0)
            {
                Array.removeAt(albums, i);
                i--;
            }
        }
        
        if (albums.length > 0)
        {
            var albumIDs = new Array;
            
            for (var i = 0; i < albums.length; i++)
            {
                albumIDs.push(albums[i].ID);
            }
            
            getAlbumService().ShareAlbums(albumIDs, function(result) { location.href = '../share/generate_share.aspx?q=' + result; }, gotError);
        }
        else
        {
            msgBox.Show(SR.ShareAnAlbumWith, SR.TheAlbumYouHaveSelectedIsEmpty, [{ Button: 'Ok'}]);
        }
    }
}

function albumSlideshow()
{
    var albums = ThumbHolder.getSelectedItems();

    if (albums.length == 0)
    {
        msgBox.Show(SR.SlideShow, SR.NoAlbumWasSelectedNo, [{ Button: 'Ok'}]);
    }
    else if (albums.length > 1)
    {
        msgBox.Show(SR.SlideShow, SR.YouCanOnlySelectOneAlbum, [{ Button: 'Ok'}]);
    }
    else if (albums[0].NoOfMedia == 0)
    {
        msgBox.Show(SR.SlideShow, SR.ThereisnophotointheSelectedAlbum, [{ Button: 'Ok'}]);
    }
    else
    {
        location.href = 'slideshow_preview.aspx?q=' + albums[0].ID;
    }
}

function displayAlbums(type)
{
    var albums = TabsPanel.getAlbumsByType(type);
    
    if (displayType != 'Album')
    {
        var actionButtons = null;
        
        if (isNormalUser)
        {
            actionButtons = 
            [
                { Image: '../images/btns/btn_share_album' + SR.LanguageSuffix + '.gif', Callback: albumShare },
                { Image: '../images/btns/btn_order_prints' + SR.LanguageSuffix + '.gif', Callback: albumOrderPrints },
                { Image: '../images/btns/btn_slideshow' + SR.LanguageSuffix + '.gif', Callback: albumSlideshow }
            ];
        }
        else
        {
            actionButtons = 
            [
                { Image: '../images/btns/btn_order_prints' + SR.LanguageSuffix + '.gif', Callback: albumOrderPrints },
                { Image: '../images/btns/btn_slideshow' + SR.LanguageSuffix + '.gif', Callback: albumSlideshow }
            ];
        }

   
        ThumbHolder.setup(SR.Album, true, true,
            [
                { Name: 'Date', Value: 'DateCreated' }, { Name: SR.Name, Value: 'Name' }
            ],
            [
                { Text: SR.NewAlbum, Callback: newAlbum }, { Text: SR.Copy, Callback: copyAlbum }, { Text: SR.RenameIt, Callback: renameAlbum }, { Text: SR.Remove, Callback: removeAlbum }
            ], actionButtons);

        ThumbHolder.setContainerClasses('print');
        
        ThumbHolder.setThumbOuterClass('print');
        ThumbHolder.setThumbInnerClass('albums_thumb');
        ThumbHolder.setThumbLinkClass('albums_link');
        ThumbHolder.setContainerClasses('albums_listing', 'albums_listing_med', 'albums_listing_sm');
        ThumbHolder.setThumbEmptyClassName('empty');
        ThumbHolder.setThumbEmptyText(SR.ClickToAddImages);
        
        ThumbHolder.setThumbOnClickCallback(onAlbumClick);
    }
    else
    {
        ThumbHolder.clear();
    }

    for (var i = 0; i < albums.length; i++)
    {
        ThumbHolder.add(albums[i], albums[i].ThumbUrl, albums[i].Name, albums[i].NoOfMedia);
    }
    
    if (type == 'Upload' && albums.length == 0)
    {
        ThumbHolder.setThumbInputTypeName(null);
        ThumbHolder.add({ ID: '', Name: '', DateCreated: '', NoOfMedia: 0 }, null, '', null);
    }
    else
    {
        ThumbHolder.setThumbInputTypeName('checkbox');
        ThumbHolder.sort();
    }
    
    ThumbHolder.render();
    
    displayType = 'Album';
}

function projectCopy()
{
    if (projectSelected())
    {
        var project = ThumbHolder.getSelectedItem();
        
        getAlbumService().CopyProject2(project.ID, project.Type, projectCopyCallback, gotError);
    }
}

function projectCopyCallback(result)
{
    TabsPanel.addProject(result);
}

function projectRename()
{
    if (projectSelected())
    {
        var project = ThumbHolder.getSelectedItem();
        
        document.getElementById('imgRenameProject').src = project.ThumbUrl;
        document.getElementById('span_Rename_Project').innerHTML = project.Name;
        
        PopupRenameProject.show();
    }
}

function projectRenameConfirm(newName)
{
    var project = ThumbHolder.getSelectedItem();
    project.Name = newName;
    
    ThumbHolder.update(project, project.ThumbUrl, project.Name);
    TabsPanel.rePopulateProjectTabs();
    
    getAlbumService().RenameProject(project.ID, project.Name, gotSuccess, gotError);
    
    PopupRenameProject.hide();
}

function projectRemove()
{
    if (projectSelected())
    {
        msgBox.Show(SR.Remove, SR.AreYouSureYouWantToDeleteTheSelectedProjectss, [{ Button:'Cancel'}, { Button: 'Ok', Callback:projectRemoveConfirm }]);
    }
}

function projectRemoveConfirm()
{
    var project = ThumbHolder.getSelectedItem();
    
    ThumbHolder.remove(project);
    TabsPanel.removeProject(project);
    
    getAlbumService().RemoveProject(project.ID, gotSuccess, gotError);
}

function projectShare()
{
    if (projectSelected())
    {
        getAlbumService().ShareProjects([ThumbHolder.getSelectedItem().ID], function(result) { location.href = "../share/generate_share.aspx?q=" + result; }, gotError);
    }
}

function projectAddToCart()
{
    if (projectSelected())
    {
        var project = ThumbHolder.getSelectedItem();
        
        if (project.Type == 'Calendar')
        {
            getAlbumService().AddCalendarToCart(project.ID, gotRedirect, gotError);
        }
        else
        {
            getAlbumService().AddPhotoBookToCart(project.ID, gotRedirect, gotError);
        }
    }
}

function projectEdit()
{
    if (projectSelected())
    {
        var project = ThumbHolder.getSelectedItem();
    
        if (project.Type == 'Calendar')
        {
            location.href = 'calendar_custom_create.aspx?q=' + project.Params;
        }
        else
        {
            location.href = 'photobook_create.aspx?q=' + project.Params;
        }
    }
}

function projectPreview()
{
    if (projectSelected())
    {
        onProjectClick(ThumbHolder.getSelectedItem());
    }
}

function projectSelected()
{
    var project = ThumbHolder.getSelectedItem();
    
    if (project == null)
    {
        alert(SR.PleaseSelectAProject);
        return false;
    }
    
    return true;
}

function onProjectClick(project)
{   
    if (project.Type == 'Calendar')
    {
        location.href = 'calendar_custom_create.aspx?q=' + project.Params;
    }
    else
    {
        location.href = 'photobook_preview.aspx?q=' + project.Params;
    }
}

function displayProjects(type)
{
    var projects = TabsPanel.getProjectsByType(type);

    var actionButtons = null;
    
    ThumbHolder.clear();
    
    if (type == 'PhotoBook')
    {
        actionButtons = [
            { Image: '../images/btns/btn_sm_share_project' + SR.LanguageSuffix + '.gif', Callback: projectShare },
     // FB 20654      { Image: '../images/btns/btn_sm_add_to_cart' + SR.LanguageSuffix + '.gif', Callback: projectAddToCart },
            { Image: '../images/btns/btn_sm_edit_project' + SR.LanguageSuffix + '.gif', Callback: projectEdit },
            { Image: '../images/btns/btn_sm_preview_project' + SR.LanguageSuffix + '.gif', Callback: projectPreview }
        ]
    }
    else
    {
        actionButtons = [
    // FB 20654       { Image: '../images/btns/btn_sm_add_to_cart' + SR.LanguageSuffix + '.gif', Callback: projectAddToCart },
            { Image: '../images/btns/btn_sm_edit_project' + SR.LanguageSuffix + '.gif', Callback: projectEdit },
            { Image: '../images/btns/btn_sm_preview_project' + SR.LanguageSuffix + '.gif', Callback: projectPreview }
        ]
    }
    
    ThumbHolder.setup(SR.MyProjects, false, false, null,
        [
            { Text: SR.Copy, Callback: projectCopy }, { Text: SR.RenameIt, Callback: projectRename }, { Text: SR.Remove, Callback: projectRemove }
        ], actionButtons);

    ThumbHolder.setContainerClasses('print');
    ThumbHolder.setThumbOuterClass('print');
    ThumbHolder.setThumbInnerClass('project_thumb');
    ThumbHolder.setThumbLinkClass('albums_link');
    ThumbHolder.setThumbInputTypeName('radio');
    ThumbHolder.setContainerClasses('albums_listing', 'albums_listing_med', 'albums_listing_sm');
    
    ThumbHolder.setThumbOnClickCallback(onProjectClick);

    for (var i = 0; i < projects.length; i++)
    {
        ThumbHolder.add(projects[i], projects[i].ThumbUrl, projects[i].Name);
    }
    
    ThumbHolder.render();
    
    displayType = 'Project';
}

function documentsRemove()
{
    var documents = ThumbHolder.getSelectedItems();
    
    if (documents.length == 0)
    {           
        msgBox.Show(SR.RemoveDocument, SR.NoDocumentSelected, [ { Button: 'Ok' } ]);
    }
    else
    {
        msgBox.Show(SR.RemoveDocument, SR.DeleteDocument, [{ Button:'Cancel'}, { Button: 'Ok', Callback:documentsRemoveConfirm }]);
    }
}

function documentsRemoveConfirm()
{
    var documents = ThumbHolder.getSelectedItems();
    
    if (documents.length === 0)
    {
        return;
    }
    
    var documentIDs = ThumbHolder.getSelectedItemsSingleProperty('ID');
    
    for (var i = 0; i < documents.length; i++)
    {
        ThumbHolder.remove(documents[i]);
    }
    
    TabsPanel.removeDocuments(documents);

    getAlbumService().RemoveDocuments2(documentIDs, gotSuccess, gotError);
}

function displayDocuments()
{
    var documents = TabsPanel.getDocuments();
    
    if (displayType != 'Documents')
    {
        ThumbHolder.setup(SR.Documents, false, false, null,
            [
                { Text: SR.Remove, Callback: documentsRemove }
            ], 
            null);

        ThumbHolder.setContainerClasses('print');
        ThumbHolder.setThumbOuterClass('print');
        ThumbHolder.setThumbInnerClass('print_thumb');
        ThumbHolder.setThumbLinkClass('print_link');
        ThumbHolder.setThumbInputTypeName('checkbox');
        ThumbHolder.setContainerClasses('albums_listing', 'albums_listing_med', 'albums_listing_sm');
        
        ThumbHolder.setThumbOnClickCallback(null);
    }
    else
    {
        ThumbHolder.clear();
    }

    if (documents != null)
    {
        for (var i = 0; i < documents.length; i++)
        {
            ThumbHolder.add(documents[i], '../images/icon_pdfthumb.gif', documents[i].Name);
        }
    }
    
    ThumbHolder.render();
    
    displayType = 'Documents';
}
