/*jslint white: true, browser: true, devel: true, onevar: false, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true */
/*global $: false, jQuery: false, window: false, $f: false, helsinkikanava_portal_url: false, flowplayer_key: false */


jQuery(function () {

    var info = null;
    var chapters_timeout = null;
    var m = location.hash.replace('#', '').match(/^\d+$/),
        sec = 0,
        isMainOverlay = false;
    if (m) {
        sec = m[0];
    }


    function init_video_actions(panel_id) {
        var panid="#"+panel_id+" ";
        // Prevent dragging of the image
        if (jQuery.browser.mozilla) {
            jQuery('#mediaplayer').mousedown(function (e) {e.preventDefault();});
        }
        // Buttons' and links' actions
        jQuery(panid + "img.downloadInfoButton").click(
            function (e) {
                var $el=jQuery(panid + ".downloadInfo"),
                el_visible=$el.is(":visible");
                jQuery(panid + ".videoActionInfo").hide();
                if (!el_visible) {$el.show();}
                e.preventDefault();
            }
        );
        jQuery(panid + "img.downloadAudioInfoButton").click(
            function (e) {
                var $el=jQuery(panid + ".downloadAudioInfo"),
                el_visible=$el.is(":visible");
                jQuery(panid + ".videoActionInfo").hide();
                if (!el_visible) {$el.show();}
                e.preventDefault();
            }
        );
        jQuery(panid + "a.linkVideo").click(
            function (e) {
                var $el=jQuery(panid + ".linkInfo"),
                el_visible=$el.is(":visible");
                jQuery(panid + ".videoActionInfo").hide();
                if (!el_visible) {$el.show();}
                e.preventDefault();
            }
        );
        jQuery(panid + "a.embedVideo").click(
            function (e) {
                var $el=jQuery(panid + ".embedInfo"),
                el_visible=$el.is(":visible");
                jQuery(panid + ".videoActionInfo").hide();
                if (!el_visible) {$el.show();}
                e.preventDefault();
            }
        );
        jQuery(panid + ".selectOnClick").click(function (e) {
            this.focus();
            this.select();
        });
        jQuery(panid + '.listenAudioLink').click(video_to_audio);
        jQuery(panid + '.watchVideoLink').click(audio_to_video);
    }

    function close_player () {
        var $player = $f('mediaplayer');
        try {
            $player.pause();
            $player.unload();
            $player.close();
        } catch (e) {
        }
    }

    function setup_chapters () {
        // Chapter selector box functionality
        var $player = $f('mediaplayer');
        jQuery('#chapters').change(function () {
            var seekto = jQuery(this).val();
            if ($player.getState() !== 3) {
                $player.play();
                setTimeout(function () {
                    $player.seek(seekto);
                }, 500);
            } else {
                $player.seek(seekto);
            }
            chapters_timeout = setTimeout(function () {
                jQuery('#chapters option').removeAttr('selected');
                chapters_timeout = null;
            }, 5000);
        });
    }

    function audio_to_video (e) {
        var $fp=jQuery('#overlay-content a#mediaplayer');
        close_player();
        $fp.addClass('hidecontrols')
            .height(288)
            .attr('href', jQuery('#video-url').attr('href'));
        $fp.find('object').remove();
        $fp.primacontrolflowplayer({
            'portal_url': helsinkikanava_portal_url,
            'flowplayer_key': flowplayer_key
        });
        jQuery('#overlay-content .watchVideoLink').hide();
        jQuery('#overlay-content .listenAudioLinkDisabled').hide();
        jQuery('#overlay-content .imageForAudio').hide();
        jQuery('#overlay-content .listenAudioLink').show();
        jQuery('#overlay-content .watchVideoLinkDisabled').show();
        e.preventDefault();
    }

    function video_to_audio (e) {
        var $fp=jQuery('#overlay-content a#mediaplayer');
        close_player();
        $fp.removeClass('hidecontrols').attr('href', jQuery('#audio-url').attr('href'));
        $fp.find('object').remove();
        $fp.primacontrolflowplayer({
            'portal_url': helsinkikanava_portal_url,
            'flowplayer_key': flowplayer_key
        });
        jQuery('#overlay-content .listenAudioLink').hide();
        jQuery('#overlay-content .watchVideoLinkDisabled').hide();
        jQuery('#overlay-content .imageForAudio').show();
        jQuery('#overlay-content .watchVideoLink').show();
        jQuery('#overlay-content .listenAudioLinkDisabled').show();
        e.preventDefault();
    }

    function overlay_options (otype) {
        return {
        oneInstance: false,
        onLoad: function (event) {
            // grab wrapper element inside content
            var wrap = this.getOverlay().find(".contentWrap");
            // load the page specified in the trigger and perform activations on success
            wrap.load(this.getTrigger().attr("href") + "/" + otype + "_overlay_view", function() {
                var isHallSession = jQuery('#hallSessionVideoRelatedContent').length > 0;
                if (isMainOverlay && sec > 0) {
                    jQuery('#overlay-content a.mediacontent,#overlay-content a#mediaplayer')
                        .addClass('seekto_' + sec);
                }

                if (isHallSession) {
                    // activate hallsession
                    info = new HallInfo(_hinfo_options);
                    info.init();
                } else {
                    // activate mediaplayer
                    jQuery('#overlay-content a.mediacontent').primacontrolflowplayer({
                        'portal_url': helsinkikanava_portal_url,
                        'flowplayer_key': flowplayer_key
                    });
                    setup_chapters();
                }

                init_video_actions('videoContentWrapper');

                wrap.show();
            });
        },
        onClose: function () {
            // when overlay is closed, unload any player
            close_player();
            isMainOverlay = false;
            if (info !== null) {
                info.close();
            }
            if (chapters_timeout !== null) {
                clearTimeout(chapters_timeout);
                chapters_timeout = null;
            }
            this.getOverlay().find(".contentWrap").hide();
        },
        mask: "#032845",
        closeOnClick: false
        };
    }

    init_video_actions('videoWrapper');

    jQuery("a.videoLink[rel]").overlay(overlay_options('video'));
    jQuery("a.audioLink[rel]").overlay(overlay_options('audio'));

    if (m) {
        isMainOverlay = true;
        jQuery("div#videoWrapper a.videoLink[rel]").overlay().load();
    }

});

