﻿// JScript File containing player functions

//function to load the user request list items
function loadRequestlist() {

        DeleteChildNodes(document.getElementById('requestList'));
        
        setLoadingicon('requestList');
        
        $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=loadrequestlist',
        success: function(response) {
            if (response == 'NOSESSION')
                redirectToLogin();
            else {
                    var rlist = document.getElementById('requestList');
                    rlist.innerHTML = response;
                    //get the count of the items to show as a total number of items in request list
                    document.getElementById('reqBooksCount').innerHTML = ' ' + rlist.childNodes.length + ' ';
                    //activate the request list tab for user to see the selected item in request list
                    $('#container-1 > ul').tabs("select", requestTabNum);
                    //this call to jScrollPane will make sure if the scrollbar is required
                    $(function() { $('#DivRequestList').jScrollPane({ showArrows: true }); });}
                 }
            }); 

}
function clearRequestlist() {
    $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=clearrequestlist',
        success: function(response) {
            if (response == 'NOSESSION') redirectToLogin();
            else {
                DeleteChildNodesByID('requestList');
                var rlist = document.getElementById('requestList');
                document.getElementById('reqBooksCount').innerHTML = ' ' + rlist.childNodes.length + ' ';
            }
        }
    });
}

//windows media custom tracker bar for sliding chapter streaming
function initializeSlider(){
        $(function() {
	        $('.slider_bar').slider({
		        handle: '.slider_handle',
		        min: 0,
		        max: 100,
		        start: function(e, ui) {
			        //$('#slider_callout').fadeIn('fast', function() { calloutVisible = true;});
		        },
		        stop: function(e, ui) {
		        if(globalTracker === 0 ){
		            //move the tracker forward depending on the user input
		            if (document.getElementById('MPlayer') !== null && document.getElementById('MPlayer').URL !== ''){
		                document.getElementById('MPlayer').controls.currentPosition = (document.getElementById('MPlayer').currentmedia.duration * ui.value) / 100;}
		        }
		        },
		        slide: function(e, ui) {
		        }
	        });
        });
}

//update the slider while streaming
var globalTracker = 0;
function UpdateSlider() {
    globalTracker = 1;
    var totalTime = document.getElementById('MPlayer').currentmedia.duration;
    var timeElapsed = document.getElementById('MPlayer').controls.currentPosition;

    var playtime = document.getElementById('lblplaytime');
    var secVar1 = parseInt(timeElapsed);
    var minVar = Math.floor(secVar1 / 60);
    var secVar2 = secVar1 % 60;
    var hrsVar = Math.floor(minVar / 60);

    setInnerText(playtime, CalPad(hrsVar) + ":" + CalPad(minVar) + ":" + CalPad(secVar2));

    var newMovelocation = Math.round(timeElapsed * 100);

    if (newMovelocation !== 0) {
        newMovelocation = newMovelocation / totalTime;
        $('.slider_bar').slider('moveTo', Math.round(newMovelocation));
        globalTracker = 0;
    }
}

//Media player controls front-end interact with
//media player object using this function
function CallMediaPlayer(el) {
    if (el == 'Play'){
         document.getElementById('MPlayer').controls.play();
        }
    if (el == 'Stop') {
        document.getElementById('MPlayer').controls.stop();
        $('.slider_bar').slider('moveTo', 0);
    }
    if (el == 'Pause'){
        document.getElementById('MPlayer').controls.pause();
        }
}

function toggleVolume() {
    var volDiv = document.getElementById('volDiv');
    if (volDiv.className == 'VolDiv') {
        volDiv.setAttribute('className', 'VolDivNo');
        volDiv.setAttribute('class', 'VolDivNo');
        document.getElementById('MPlayer').settings.mute = true;
    }
    else {
        volDiv.setAttribute('className', 'VolDiv');
        volDiv.setAttribute('class', 'VolDiv');
        document.getElementById('MPlayer').settings.mute = false;
    }
}

function increaseVol() {
    var Player = document.getElementById('MPlayer');
    var X = Player.settings.volume;
    Player.settings.volume = X + 10;
}

function decreaseVol() {
    var Player = document.getElementById('MPlayer');
    var X = Player.settings.volume;
    Player.settings.volume = X - 10;
}

//global chapter variabale
var globalChapter = '0';

//change chapter function for FireFox
function ChangeFileFF(url, chapterNumber) {

            // highlight the clicked item
            document.getElementById('' + chapterNumber + '').style.color = '#4682B4';

            document.getElementById('music').innerHTML = '<object width="100%" height="115" '
		      + 'classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" '
		      + 'codebase="https://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" '
		      + 'standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject">'
		      + '<param name="url" value="' + url + '">'
		      + '<param name="uiMode" value="full">'
		      + '<param name="autoStart" value="true">'
		      + '<param name="loop" value="false">'
		      + '<param name="SendErrorEvents" value="false">'
		      + '<param name="enableErrorDialogs" value="false" />'
		      + '<embed type="application/x-mplayer2" '
		      + 'pluginspage="https://microsoft.com/windows/mediaplayer/en/download/" '
		      + 'showcontrols="true" uimode="full" width="100%" height="115" '
		      + 'src="' + url + '" autostart="true" loop="false">'
		+ '<\/object>';
    
    globalChapter = chapterNumber;

    // get the main container of books results
    var divContainer = document.getElementById('RightBox');

    // make sure there is no other item highlighted/selected
    for (var i = 0; i < divContainer.childNodes.length; i++) {
        //if (divContainer.childNodes[i].id!="BooksTop")
        divContainer.childNodes[i].style.backgroundColor = '#fff';
    }
}

//change chapter function for internet explorer
function ChangeFile(url, chapterNumber) {
    var playObj = document.getElementById(chapterNumber);
    if (url == "") return;

    // else, Change the chapter
    var mplayer = document.getElementById('MPlayer');

    if (chapterNumber == null)
        globalChapter = '1';
    else
        globalChapter = chapterNumber;
        
    mplayer.URL = url;
    mplayer.controls.play();

    // get the main container of books results
    var divContainer = document.getElementById('RightBox');

    // make sure there is no other item highlighted/selected
    for (var i = 0; i < divContainer.childNodes.length; i++) {
        //if (divContainer.childNodes[i].id!="BooksTop")
        divContainer.childNodes[i].style.backgroundColor = '#fff';
    }

    // highlight the clicked item
    if (playObj != null) {
        playObj.style.backgroundColor = '#4682B4';
    }
    
    if (chapterNumber > 17) {
        document.getElementById('RightBox').scrollTo(chapterNumber * 20, { duration: 1000 }, { easing: 'elseout' });
    }

    setInterval(UpdateSlider, 1000);
}

//function to create fisheye buttons for Play,Pause,Stop on Player
//////////////////////////////////////////////////////////////////
function LoadFisheyeMenus() {
    $('#dock2').Fisheye(
				{
				    maxWidth: 30, items: '.dock-item2',
				    itemsText: 'span', container: '.dock-container2', 
				    itemWidth: 40, proximity: 35,
				    alignment: 'left', valign: 'center',
				    halign: 'center'
				}
			);
}

// Attach event to media player to detect chapter finish state
// in order to play next chapter from the playlist
//==============THIS FEATURE IS FOR IE ONLY================//
function attachEventHandler() {
    var WMP = new Object();
    WMP = document.getElementById("MPlayer");
    if (navigator.appName == 'Microsoft Internet Explorer'){
        WMP.attachEvent("playStateChange", mediaplayerStateChange);}
    }

var globalMediaplayerState = '';
function mediaplayerStateChange() {
    var WMP = new Object();
    var playtime = document.getElementById('lblplaytime');
    WMP = document.getElementById("MPlayer");
    var currChapter = document.getElementById(globalChapter);
    if (WMP.playstate == 2) {
        setInnerText(playtime, 'Paused');
    }

    if (WMP.playstate == 6) {
        setInnerText(playtime, 'Buffering...');
    }
    if (WMP.playstate == 7) {
        setInnerText(playtime, 'Waiting...');
    }
    if (WMP.playstate == 9) {
        setInnerText(playtime, 'Transitioning...');
    }    
    if (WMP.playstate == 10) {
        setInnerText(playtime, 'Ready');
    }    
    if (WMP.playstate == 11) {
        setInnerText(playtime, 'Reconnecting...');
    }   
    if (WMP.playstate == 8 && currChapter.nextSibling !== null) {
        playChapter(getInnerText2(document.getElementById('currBookNumber')), currChapter.nextSibling.id);
    }
}

//functions for bookmarking's
////////////////////////////////////////////////
function bookMarkChapter(bookmarktype, ActPas) {

    //if there is no selected chapter then return
    if (document.getElementById(globalChapter) == null || globalChapter == '0') return;

    //change the color of the bookmarked item
    document.getElementById(globalChapter).style.color = '#610183';

    //only get the time if user is on Internet Explorer
    var currentTime = '0';
    if (navigator.appName == 'Microsoft Internet Explorer')
        currentTime = document.getElementById('MPlayer').controls.currentPosition;

    var bookNumber = getInnerText2(document.getElementById('currBookNumber'));

    var path = globalChapter;
    $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=setBookmark' + '&bn=' + bookNumber + '&path=' + path + '&time=' + currentTime + '&ActPas=' + ActPas + '&PageType=stream',
        success: function(response) {
                if (response == 'NOSESSION')
                   redirectToLogin();
        }
    });
    if (ActPas == 1) {
        $('#container-1 > ul').tabs("select", bookmarkTabNum);
        loadBookmarks();
    }
}
function loadBookmarks() {
    var d = new Date();
    var time = d.getSeconds.toLocaleString();
    setLoadingicon('bookmarksContainer');
    $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=loadBookmarks' + '&PageType=stream' + '&time=' + time + '',
        success: function(response) {
            if (response == 'NOSESSION')
                redirectToLogin();
            else {
                DeleteChildNodes(document.getElementById('bookmarksContainer'));
                document.getElementById('bookmarksContainer').innerHTML += response;
                $(function() { $('#bookmarksContainer').jScrollPane({ showArrows: true }); });
            }
        }
    });
}

function deleteBookmark(id, bookmarkitem) {
    $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=deletebookmark' + '&PageType=stream' + '&id=' + id,
        success: function(response) {
            if (response == 'NOSESSION')
                redirectToLogin();
            else {
                CloseMe(bookmarkitem);
                $("#divbookmarkDeleteMsg").fadeIn("slow");
                $("#divbookmarkDeleteMsg").fadeOut("slow");
                //refresh bookmark item numbers
                refreshBookmarkNumbering();
            }
        }
    });
}
function refreshBookmarkNumbering() {

    var bmContainer = document.getElementById('bookmarksContainer');
    for (var i = 0; i < bmContainer.childNodes.length; i++) {
        for (var j = 0; j < bmContainer.childNodes[i].childNodes.length; j++) {
            if (bmContainer.childNodes[i].childNodes[j].id == 'divBmnum') 
            {
                DeleteChildNodes(bmContainer.childNodes[i].childNodes[j]);
                bmContainer.childNodes[i].childNodes[j].innerHTML = i + 1 + '';
            }
        }
    }
    return;
}

//function load user written review using ajax call and modaldialog functions
/////////////////////////////////////////////////////////////////////////////
function loadReview(bookNumber) {
    $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=review' + '&bn=' + bookNumber,
        success: function(response) {
            if (response == 'NOSESSION')
                redirectToLogin();
            else {
                $(response).modal({ onClose: modalClose, onShow: modal2.show });
                initializeRating(0);
            }
        }
    });
}
function getReviewData(id) {
    $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=viewreview' + '&rid=' + id,
        success: function(response) {
            if (response == 'NOSESSION')
                redirectToLogin();
            else                
                $(response).modal({ onClose: modalClose });
        }
    });
}

//this function uses 2 functions getPlayDate to load book in player
//& playChapter to start playing bookmarked chapter
function playBookmark(booknumber, chapternumber, position) {
    getPlayData(booknumber, '1');
    setTimeout("playChapter('"+booknumber+"','"+ chapternumber+"')", 1000);
    if (navigator.appName == 'Microsoft Internet Explorer') 
        setTimeout("document.getElementById('MPlayer').controls.currentPosition = " + position +"", 2000);        
}

//flip the bookmark box on members-homepage
function toggleBookmarks(username) {

    //get the currently loaded bookmarks type
    var currType = document.getElementById('bmType').value;
  
    DeleteChildNodes(document.getElementById('boomarkContents'));
    document.getElementById('boomarkContents').innerHTML = "<div id=\"bmLoading\" name=\"bmLoading\" style=\"margin-left:80px; margin-top:40px;\"></div>";
    setLoadingicon('bmLoading');

    $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=togglebookmark' + '&PageType=stream' + '&username=' + username + '&toggletype=' + currType,
        success: function(response) {
            if (response == 'NOSESSION')
                redirectToLogin();
            else {
                document.getElementById('boomarkContents').innerHTML = response;
                //flip bookmarks box heading to reflect the type bookmarks loaded
                if (currType == 1) { setInnerText(document.getElementById('bmHead'), 'Bookmarks'); }
                else { setInnerText(document.getElementById('bmHead'), 'Recently listened'); }   
            }
        }
    });
}

//delete the parent of Me object
function deleteRequestItem(Me) {

    var booknumber = Me.id.slice(0, Me.id.indexOf('-')) + '';
    var mediatype = Me.id.slice(Me.id.indexOf('-') + 1, Me.id.length) + '';

    var parent = Me.parentNode;
    parent.parentNode.removeChild(parent);
    var rlist = document.getElementById('requestList');
    document.getElementById('reqBooksCount').innerHTML = ' ' + rlist.childNodes.length + ' ';

    $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=deletereqlistItem' + '&BookNumber=' + booknumber + '&mediatype=' + mediatype,
        success: function(response) {
            if (response == 'NOSESSION')
                redirectToLogin();
            else {

            }
        }
    });
}

function playChapter(bookNumber, chapterNumber) {
    
    if (navigator.appName == 'Microsoft Internet Explorer') {
        document.getElementById('MPlayer').controls.stop();
    }

    bookMarkChapter(chapterNumber, 0);
    
    $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=sendchapterPath' + '&bn=' + bookNumber + '&cn=' + chapterNumber + '&PageType=stream',
        success: function(response) {
            if (response == 'NOSESSION')
                redirectToLogin();
            else {
                if (navigator.appName == 'Microsoft Internet Explorer')
                    ChangeFile(response, chapterNumber);
                else
                    ChangeFileFF(response, chapterNumber);
            }
        }
    });
}

//change chapter to be used by Internet Explorer
function changeChapter(nxtPre) {
    //if there is no selected chapter the return
    if (globalChapter == '0') return;

    //get the current chapter object
    var currentChap = document.getElementById(globalChapter);

    if (nxtPre == 'Next') {
        var nextChap = currentChap.nextSibling;
        if (nextChap != null)
            playChapter(getInnerText2(document.getElementById('currBookNumber')), nextChap.id);
        }
    else if (nxtPre == 'Previous') {
        var prevChap = currentChap.previousSibling;
        if (prevChap != null)
            playChapter(getInnerText2(document.getElementById('currBookNumber')), prevChap.id);
        }
}

//change chapter to be used by Firefox browser
function changeChapterFF(nxtPre) {
    if (globalChapter == '0') return;

    if (nxtPre == 'Next') {
        var currentChap = document.getElementById(globalChapter);
        var nextChap = currentChap.nextSibling;
        playChapter(getInnerText2(document.getElementById('currBookNumber')), nextChap.id);
    }
    else if (nxtPre == 'Previous') {
        var currentChap = document.getElementById(globalChapter);
        var nextChap = currentChap.previousSibling;
        playChapter(getInnerText2(document.getElementById('currBookNumber')), nextChap.id);
    }
}

//load the play data in the player tab like book image, title, author, synopsis
function getPlayData(bookNumber, bmarkClick) {

       globalChapter = '0';

       if(document.getElementById('infoMsg'))
       DeleteChildNodes(document.getElementById('infoMsg'));

       //set the loader icon on screen
       setLoadingicon('divBookTag');

       $.ajax({
           type: "GET",
           url: 'Getrecords.aspx',
           data: 'type=Play' + '&bNumber=' + bookNumber,
           success: function(response) {
               if (response == 'NOSESSION')
                   redirectToLogin();
               else {
                   DeleteChildNodes(document.getElementById('LeftBox'));
                   document.getElementById('LeftBox').innerHTML = response;
                   $(document).ready(function() { imageTooltip(); });
                   $('#container-1 > ul').tabs("select", playTabNum);
                   $(function() { $('#divSummary').jScrollPane({ showArrows: true }); });
               }
           }
       });

       //call to load chapters for the current book in playlist div
       if (bmarkClick != '1')
           getChaptersData(bookNumber, '0');
       else
           getChaptersData(bookNumber, '1');
}

//this function is responsible to load chapters data into the right side
//of the Player using booknumber as a parameter. we normally call it after
//getPlayData function
function getChaptersData(bookNumber, bmarkClick) {

    var url = 'GetRecords.aspx?type=ChaptersList&bn=' + bookNumber;

    //set the loader icon on screen
    setLoadingicon('RightBox');

    $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=ChaptersList' + '&bn=' + bookNumber,
        success: function(response) {
            if (response == 'NOSESSION')
                redirectToLogin();
            else {
                DeleteChildNodes(document.getElementById('RightBox'));
                document.getElementById('RightBox').innerHTML += response;
                $(function() { $('#RightBox').jScrollPane({ showArrows: true }); });
            }
        }
    });
    if(bmarkClick!='1')
    setTimeout("playChapter('" + bookNumber + "','" + 1 + "')", 1000);
}

//streaming help dialog function
function streamingHelp() {

    //create the dialog object
    $('#FAQdialog').dialog({
        autoOpen: false,
        width: 550, height: 250,
        zIndex: 19999, resizable: false,
        closeOnEscape: true,
        position: [180, 80],
        buttons: {
            "Ok": function() { $(this).dialog("close"); }
        }
    });
    $('#FAQdialog').dialog('open');
    fillStreamingHelp();
    return false;
}

//function to fill inside the streaming help dialog
function fillStreamingHelp() {

    var contentDiv = document.getElementById('FAQdialog_contents');

    //set the loading icon inside the dialog while its loading the streaming contents
    setLoadingicon('FAQdialog_contents');

    var d = new Date();
    var time = d.getSeconds.toLocaleString();

    $.ajax({
        type: "GET",
        url: 'Getrecords.aspx',
        data: 'type=sendstreaminghelp' + '&time=' + time,
        success: function(response) {
            if (response == 'NOSESSION')
                redirectToLogin();
            else {
                contentDiv.innerHTML = response;
                $('#FAQdialog_contents:eq(0)> h3').click(function() {
                    $(this).next().slideToggle('slow');
                });
            }
        }
    });
}

//show error dialog
function showErrorMessage(msg) {
    //create the dialog object
    $('#Errdialog').dialog({
        autoOpen: false,
        width: 450, height: 270,
        zIndex: 19999, resizable: false,
        closeOnEscape: true,
        title: 'Error',
        position: [180, 80],
        buttons: {
            "Close": function() { $(this).dialog("close"); }
            //,"Report": function() {
                //send email to LB admin
                //var contenDiv = document.getElementById('Errordialog_contents');
                //DeleteChildNodes(contenDiv);
                //contentDiv.innerHTML = '<strong>Your error has been reported to the Admin. Someone from Listening Books team will contact you very soon. Thanks</strong>';
                //$(this).dialog("close");
            //}
        }
    });
    $('#Errdialog').dialog('open');
    var contentDiv = document.getElementById('Errordialog_contents');
    contentDiv.innerHTML = '' + msg + '';
    return false;
}