/*
 * jde, 13/07/17, displaySlide() now check to ensure that 'image' exists and if not creates it
 * jde, SlideManager.js, Original coding 10/07/17
 */
'use strict';

var SlideManager = SlideManager || {};

SlideManager = function () {

    var xhr = createXMLHttpRequestObject();
    var firstSlideNumber = -1;
    var currentSlideNumber = -1;
    var lastSlideNumber = -1;
    var folderName = ".";

    var setup = function ( foldername ) {
        folderName = foldername;
/*
        xhr.onreadystatechange = loadSlideDetails;
        xhr.open("GET","http://localhost/modules/src/js/" + startupFilename + ".json", true);
        xhr.send();
*/
    };

    var loadSlideDetails = function () {
        if (xhr.readyState==4 && xhr.status==200) {
            var sections = JSON.parse( xhr.responseText );
            var slideCount = 0;
            var bodyElement = document.getElementsByTagName("body");
            var newElement = document.createElement("p");
            var tmpString;
            for (var index = 0; index < sections.length; index ++){
                tmpString = sections[index].text + " " + sections[index].count;
                var textNode = document.createTextNode(tmpString);
                var para = newElement.appendChild(textNode);
                bodyElement[0].appendChild(para);
                console.log( tmpString );
            }
        }
    };

    var loaded = function( maxSlideCount ) {
        if ( typeof maxSlideCount != "number" )
            return false;
        else {
            firstSlideNumber = 1;
            lastSlideNumber = maxSlideCount;
            currentSlideNumber = 1;
        }
        displaySlide();
    };

    var inrange = function( value, min, max ) {
        console.log( 'inrange:', value, min, max );
        return ( min <= value) && ( value <= max );
    };

    var displaySlide = function () {
        console.log( currentSlideNumber, firstSlideNumber, lastSlideNumber );
        if ( currentSlideNumber > lastSlideNumber )
            currentSlideNumber = 1;
        if ( currentSlideNumber < firstSlideNumber )
            currentSlideNumber = lastSlideNumber;
        if ( ! inrange( currentSlideNumber, firstSlideNumber, lastSlideNumber ) )
            currentSlideNumber = 1;
        console.log( "displaySlide Current slide number: ", currentSlideNumber );
        var image = document.getElementById("image");
        if ((image === 'undefined' ) || (image === null)) {
            // create the image id
            var mmc = document.getElementById("mainMiddleContent");
//            var mmc = document.getElementById("mainContentRightBody");
            // clear out existing contents of mmc
            mmc.innerHTML = "";
            var img = document.createElement('img');
            img.setAttribute( 'id', 'image' );

            img.setAttribute( 'max-height', '450px' );
 /*            img.setAttribute( 'width', '100%' );
*/
            mmc.appendChild( img );
            // now get the image placeholder
            image = document.getElementById("image");
        };
        var slideName = "http://localhost/modules/dsa/"+folderName+"/Slide"+currentSlideNumber+".PNG";
        image.setAttribute( "src", slideName );
    };

    var displayFirstSlide = function () {
        console.log( "First slide number: ", firstSlideNumber );
        currentSlideNumber = firstSlideNumber;
        displaySlide( );
    };

    var displayNextSlide = function () {
        console.log( "next slide number: ", currentSlideNumber );
        currentSlideNumber++;
        displaySlide( );
    };

    var displayPreviousSlide = function () {
        console.log( "previous slide number: ", currentSlideNumber );
        currentSlideNumber--;
        displaySlide( );
    };

    var displayLastSlide = function () {
        console.log( "Last slide number: ", lastSlideNumber );
        currentSlideNumber = lastSlideNumber;
        displaySlide( );
    };

    var displaySlideNumber = function ( slideNumber ) {
        console.log( "displaySlideNumber: ", slideNumber );
        if ( typeof slideNumber != "number" )
            return false;
        else {
            currentSlideNumber = slideNumber;
        }
        displaySlide();
    };

    var toggle = function ( obj ) {
        //debug( obj )
        var toggleWhat = document.getElementById( obj );
        if ( toggleWhat != null ) {
            var image = toggleWhat.getElementsByTagName( "img" )[0];  // get obj image
            if ( toggleWhat.className == "closed" ) {
                toggleWhat.className = "open";
                if ( image != null ) image.src = "./src/images/minus.gif";  // might not be using an image to show +/-
            } else {
                toggleWhat.className = "closed";
                if ( image != null ) image.src = "./src/images/plus.gif";
            }
        }
    }

    return {
        startup : setup,
        load: loaded,
        first: displayFirstSlide,
        next: displayNextSlide,
        previous: displayPreviousSlide,
        last: displayLastSlide,
        display: displaySlideNumber,
        toggle: toggle
    }

}();
