/* globals required by plugin */

var lastOPFAlbum = null;
var OPFAlbum_VolumeLevel = 100;
var OPFAlbum_VolumeMuted = 'N';
var OPFAlbum_ErrorCount = 0;
var OPFNavExtensionOriginalStyles = { 'display': 'none' };
var OPFNavExtensionStyles = { 'background-color': '#808080', 'display': 'inline', 'height': 'auto', 'width': '75px', 'z-index': 100, 'opacity': 0.8, 'filter': 'alpha(opacity=80)', '-moz-border-radius': '7px', '-webkit-border-radius': '7px', 'padding': '5px 10px', 'margin': '0 5px 17px 0' };
var OPFNavPopupExtensionStyles = { 'background-color': '#808080', 'display': 'inline', 'height': 'auto', 'width': '75px', 'z-index': 100, 'opacity': 0.8, 'filter': 'alpha(opacity=80)', '-moz-border-radius': '7px', '-webkit-border-radius': '7px', 'padding': '5px 10px', 'margin': '0 5px 5px 0' };

function onOPFAlbumClick(pic, me) {
    lastOPFAlbum = me;
    me.opfSlideshow('popup', { picIndexToSelect: pic.index });
    return false;
}

function onOPFAlbumLoad(me) {
    me.opfSlideshow('load');
}

function onOPFAlbumPlay(me) {
    me.opfSlideshow('play');
}

function onOPFAlbumPause(me) {
    me.opfSlideshow('pause');
}

function onOPFAlbumPopupPlay(me) {
    lastOPFAlbum.opfSlideshow('popup.play');
}

function onOPFAlbumPopupPause(me) {
    lastOPFAlbum.opfSlideshow('popup.pause');
}

function HandleVolumeChange(level, muting) {
    OPFAlbum_VolumeLevel = level;
    OPFAlbum_VolumeMuted = muting;
}

/* jquery.opf.slideshow.js (opfSlideshow)
* Created by Aaron Silvas
* Copyright (c) 2009 GoDaddy.com
*/
;(function($) {
    var opfAlbums = [];

    $.fn.opfSlideshow = function(cmd, options) {
        var settings = $.extend(true, {}, options);

        var meId = $(this).attr('id');

        var locals = opfAlbums[meId];
        if (locals != null) {
            return locals.fn(locals, cmd, settings);
        }

        locals = opfAlbums[meId] = { me_this: this, fn: function(locals, cmd, settings) {
            switch (cmd.toLowerCase()) {
                case 'init':
                    locals.me = $(locals.me_this);
                    locals.meId = locals.me.attr('id');
                    locals.settings = settings;
                    locals.audioId = Math.round(Math.random() * 65535);
                    locals.audioUrl = null;

                    break;
                case 'destroy':
                    delete opfAlbums[locals.meId];
                    break;
                case 'load':
                    // query service for filename, and embed flash audio if applicable
                    OPFAlbum_ErrorCount = 0; // reset
                    if (locals.wasPlaying == true) {
                        locals.me.wstAlbum('play', {});
                        locals.wasPlaying = false;
                    }

                    if (locals.audioUrl != null && locals.audioUrl.length > 0) { // if locals.audioUrl is valid, embed audio
                        locals.navExtension.css(OPFNavExtensionStyles);
                        var child = locals.navExtension.children('div');
                        if (child.length == 0) {
                            child = $(document.createElement('div')).attr('id', locals.meId + 'Extension');
                            locals.navExtension.append(child);
                        }
                        locals.meExtensionId = child.attr('id');
                        swfobject.embedSWF(locals.settings.slideshow_path, locals.meExtensionId, 75, 16, '8.0.25'
                                , ''
                                , { mySound: locals.audioUrl
                                    , defaultvolume: OPFAlbum_VolumeLevel, defaultmuting: OPFAlbum_VolumeMuted
                                    , playmusic: 'yes', audioId: locals.audioId
                                }
                                , { allowScriptAccess: 'sameDomain', allowFullScreen: 'false'
                                    , quality: 'high', wmode: 'transparent', bgcolor: '#ffffff'
                                }
                                , {}
                                , function() {
                                    if (locals.me.wstAlbum('isplaying', {}) == false) {
                                        locals.me.opfSlideshow('pause', {});
                                    }
                                });

                        locals.meExtension = $('object', locals.navExtension);
                    }
                    else if (locals.audioUrl != null) {
                        locals.navExtension.css(OPFNavExtensionOriginalStyles); // set original styles
                    }
                    else { // otherwise request it
                        locals.navExtension = $('.nav_extension,.nav_extension_sm', locals.me);
                        $.getJSON(locals.settings.opf_music_url + '&callback=?'
                        , function(data) {
                            try {
                                locals.audioUrl = data;
                                if (locals.audioUrl == null)
                                    locals.audioUrl = '';
                                //var loc = window.location.href.toLowerCase();
                                //if (loc.indexOf('https') == 0)
                                //    locals.audioUrl = locals.audioUrl.replace('http:', 'https:');
                            } catch (e) { locals.audioUrl = ''; }
                            locals.me.opfSlideshow('load');
                        });
                    }

                    break;
                case 'play':
                    try {
                        if (locals.meId == null)
                            break;
                        else if (locals.meExtension != null && locals.meExtension.length > 0 && $.isFunction(locals.meExtension[0].resumeAudio)) {
                            locals.meExtension[0].resumeAudio();
                        }
                        else if (OPFAlbum_ErrorCount++ <= 10) {
                            var tick = function() {
                                locals.me.opfSlideshow('play', {});
                            }
                            setTimeout(tick, 50);
                        }
                    } catch (e) { }
                    break;
                case 'pause':
                    try {
                        if (locals.meId == null)
                            break;
                        else if (locals.meExtension != null && locals.meExtension.length > 0 && $.isFunction(locals.meExtension[0].pauseAudio)) {
                            locals.meExtension[0].pauseAudio();
                        }
                        else if (OPFAlbum_ErrorCount++ <= 10) {
                            var tick = function() {
                                locals.me.opfSlideshow('pause', {});
                            }
                            setTimeout(tick, 50);
                        }
                    } catch (e) { }
                    break;
                case 'popup.play':
                    try {
                        var obj = $('#wstAlbumPopupExtension');
                        if (locals.meId == null)
                            break;
                        else if (obj != null && obj.length > 0 && $.isFunction(obj[0].resumeAudio)) {
                            obj[0].resumeAudio();
                        }
                        else if (OPFAlbum_ErrorCount++ <= 10) {
                            var tick = function() {
                                locals.me.opfSlideshow('popup.play', {});
                            }
                            setTimeout(tick, 50);
                        }
                    } catch (e) { }
                    break;
                case 'popup.pause':
                    try {
                        var obj = $('#wstAlbumPopupExtension');
                        if (locals.meId == null)
                            break;
                        else if (obj != null && obj.length > 0 && $.isFunction(obj[0].pauseAudio)) {
                            obj[0].pauseAudio();
                        }
                        else if (OPFAlbum_ErrorCount++ <= 10) {
                            var tick = function() {
                                locals.me.opfSlideshow('popup.pause', {});
                            }
                            setTimeout(tick, 50);
                        }
                    } catch (e) { }
                    break;
                case 'popup':
                    // hide our extension
                    if (locals.meExtension != null) {
                        locals.meExtension.remove();
                        locals.meExtension = null;
                    }

                    if (locals.me.wstAlbum('isplaying', {}) == true) {
                        locals.me.wstAlbum('pause', {});
                        locals.wasPlaying = true;
                    }
                    else {
                        locals.wasPlaying = false;
                    }

                    // popup the slideshow
                    var popup_settings = $.extend(true, locals.settings
                        , { picsToLoad: locals.me.wstAlbum('getPics')
                            , slideShowStart: true
                            , slideShowDelay: locals.me.wstAlbum('getspeed', {})
                            , slideShowSpeeds: locals.settings.slideShowSpeeds
                            , picIndexToSelect: settings.picIndexToSelect
                            , afterClose: function() {
                                locals.me.opfSlideshow('load', {});
                            }
                            , autoShow: true
                            , onLoad: function(me) { lastOPFAlbum.opfSlideshow('popup.load', {}); }
                            , onPlay: onOPFAlbumPopupPlay
                            , onPause: onOPFAlbumPopupPause
                            , onClick: null
                            , menuExtension: '<div id=\"wstAlbumPopupExtension\"></div>'
                            , menuExtensionPosition: 'bottomright'
                            , frameWidth: 0
                            , titleShow: false
                            , titlePosition: 'top'                            
                        }
                        )
                    ;
                    locals.me.wstAlbumPopup('', popup_settings);

                    break;
                case 'popup.load':
                    if (locals.audioUrl != null && locals.audioUrl.length > 0) { // if locals.audioUrl is valid, embed audio
                        $('#wst_album_popup .nav_extension,#wst_album_popup .nav_extension_sm').css(OPFNavPopupExtensionStyles);

                        // popup has loaded, embed flash if applicable
                        swfobject.embedSWF(locals.settings.slideshow_path
                            , 'wstAlbumPopupExtension', 75, 16, '8.0.25', ''
                            , { mySound: locals.audioUrl
                                , defaultvolume: OPFAlbum_VolumeLevel, defaultmuting: OPFAlbum_VolumeMuted
                                , playmusic: 'yes', audioId: locals.audioId
                            }
                            , { allowScriptAccess: 'sameDomain', allowFullScreen: 'false', quality: 'high'
                                , wmode: 'transparent', bgcolor: '#ffffff'
                            }
                            )
                        ;
                    }
                    else if (locals.audioUrl != null)
                        break; // we already requested the file, none available
                    else { // otherwise request it
                        $.getJSON(locals.settings.opf_music_url + '&callback=?'
                        , function(data) {
                            try {
                                locals.audioUrl = data;
                                if (locals.audioUrl == null)
                                    locals.audioUrl = '';
                                //var loc = window.location.href.toLowerCase();
                                //if (loc.indexOf('https') == 0)
                                //    locals.audioUrl = locals.audioUrl.replace('http:', 'https:');
                            } catch (e) { locals.audioUrl = ''; };
                            locals.me.opfSlideshow('popup.load');
                        });
                    }

                    break;
            };

            return locals.me;
        }
        }; // locals = opfAlbums[meId] = { me_this: this, fn: function(locals, uri, settings) {

        return locals.fn(locals, cmd, settings);
    };

})(jQuery);
