var ingrandisci_element = '<div class="navBox" id="ingrandisci">&nbsp;<div class="nav_buttons"><a><img id="zoom_img" class="nav_button_img" src="/images/lente_ingr.gif"/></a></div></div>';
var terminal_navigation_box = '<div id="termNavBox" class="navBox"><select id="term_select"></select><div class="nav_buttons"><a id="term_prev"><img class="nav_button_img" src="/images/back.jpg" alt="" /></a> <a id="term_next"><img class="nav_button_img" src="/images/next.jpg" alt="" /></a>&nbsp;</div></div>';
var intermediary_navigation_box = '<div class="navBox"><select id="int_select"></select>&nbsp;</div>';

var Console = function(page){
    /*
     * FORMAT BOX
     */
    this.multipage = false;
    this.format = 'jpg';
    this.page = page;
    this.jpg_button = '<div class="navBox"><a id="format_jpg">Jpeg</a></div><div class="navBox" style="font-weight:bold">DjVu</div>';
    this.djvu_button = '<div class="navBox" style="font-weight:bold">Jpeg</div><div class="navBox"><a id="format_djvu">DjVu</a></div>'; 
    this.djvum_button = '<div class="navBox" style="font-weight:bold">Jpeg</div><div class="navBox"><a id="format_djvum">DjVu</a></div>';
    var self = this;
    
    (function init(){
        $('#commands').hide();
    })()
    
    this.complete = function(){
        if (!$('#commands').is(':visible')) {
            $('#commands').fadeIn();
        }
    }

    this.setFormatBox = function(){
        if(this.multipage){
            this.appendFormatDjvum();
        }else{
            this.appendFormatDjvu();
        }
    }
    
    this.appendFormatDjvu = function(){
        if(format !== 'djvu'){
            $("#formatBox").html(this.djvu_button);
            $("#format_djvu").click(this.onFormatDjVuClick);
        }else{
            $('#formatBox').html(this.jpg_button);
            $('#format_jpg').click(this.onFormatJpgClick);
        }
    }
    
    this.appendFormatDjvum = function (){
        if(format !== 'djvum'){
            $("#formatBox").html(this.djvum_button);
            $("#format_djvum").click(this.onFormatDjVumClick);
        } else {
            $('#formatBox').html(this.jpg_button);
            $('#format_jpg').click(this.onFormatJpgClick);
        }
    }

    this.onFormatJpgClick = function(){
        var terminal_filename = 0;
        var url = null;
        if(intermediary != null){
            imageURL = "/archivio/" + primary.data.filename+"/"+intermediary.data.filename+"/";
        }else{
            imageURL = "/archivio/"+ primary.data.filename+"/";
        }
        self.page.appendJpg(imageURL, terminal.data);
        if(format=='djvum'){
            $('#indexBox').remove();
            $('#termNavBox').fadeIn();
        }
        if(self.multipage){
            $("#formatBox").html(self.djvum_button);
            $("#format_djvum").click(self.onFormatDjVumClick);
        } else {
            $("#formatBox").html(self.djvu_button);
            $("#format_djvu").click(self.onFormatDjVuClick);
        }
        format = 'jpg';
        self.appendZoom(terminal.data.image.width);
    }

    this.onFormatDjVuClick = function(){
        var url = null;
        if(intermediary != null){ 
            imageURL = "/archivio/" + primary.data.filename + "/" + intermediary.data.filename + "/"
        }else{ 
            imageURL = "/archivio/" + primary.data.filename + "/";
        }
        self.page.appendDjvu(imageURL, terminal.data.filename);
        if($("#ingrandisci").length){
            $("#ingrandisci").remove();
        }
        $('#formatBox').html(self.jpg_button);
        $('#format_jpg').click(self.onFormatJpgClick);
        format = 'djvu';
    }
    //indexOptions è globale
    this.onFormatDjVumClick = function(){
        format = 'djvum';
        var url = null;	
        self.page.changeImage();
        $('#termNavBox').hide();
        if($("#ingrandisci").length){ 
            $("#ingrandisci").remove();
        }
        if(index_exists){
            $('#commands').append('<div id="indexBox" class="navBox"><a id="display_index">Indice</a></div>');
            $('#indice').html(indexOptions);
            $('#display_index').click(self.page.displayIndex);
        }
        $('#formatBox').html(self.jpg_button);
        $('#format_jpg').click(self.onFormatJpgClick);
    }
    /*
     * INTERMEDIARY NAVIGATION BOX
     */
    this.buildIntermediarySelectElement = function(result, partnumber){
        var options = '';
        for(var i = 0; i < result.length; i++){	
            options += '<option value="' + result[i].partnumber + '">' + result[i].partname + '</option>';
        }
        if(!$("#int_select").length){
            $('#formatBox').after(intermediary_navigation_box);
            $("#int_select").change(function (){
                var selected = $("#int_select option:selected");
                if(selected.val() != 0){
                    intermediary.getIntermediaryObject(selected.val());
                }
            });
        }
        $("#int_select").html(options);
        $('#int_select').val(parseInt(partnumber));
    }
    
    /*
     * TERMINAL NAVIGATION BOX
     * */
    this.buildTermNavBox = function(result){
        if($('#termNavBox').length){ 
            $('#termNavBox').hide();
        } else{ 
            var term_nav_box = $(terminal_navigation_box);
            term_nav_box.hide();
            $('#commands').append(term_nav_box);
            $("#term_select").change(this.onTermSelectChange);
            $("#term_next").click(this.onTermNextClick);
            $("#term_prev").click(this.onTermPrevClick);
        }
        this.buildTerminalSelectElement(result);
        if(format != 'djvum'){
            $('#termNavBox').fadeIn();
        }
    }
    
    this.buildTerminalSelectElement = function(result){
        var options = "";
        for(var i = 0; i < result.length; i++){	
            options += '<option value="' + result[i].partnumber + '">' + result[i].partname + '</option>';
        }
        $("#term_select").html(options);
    }
    
    this.onTermNextClick = function(){
        var tp = parseInt(terminal.data.partnumber) + 1;
        if(intermediary == null){
            terminal.getTerminal(primary.data, tp);
        }else{
            terminal.getTerminal(intermediary.data, tp);
        }
    }

    this.onTermPrevClick = function(){
        var tp = parseInt(terminal.data.partnumber) - 1;
        if(intermediary == null){
            terminal.getTerminal(primary.data, tp);
        }else{
            terminal.getTerminal(intermediary.data, tp);
        }
    }

    this.onTermSelectChange = function(){
        var tp = $("#term_select option:selected").val();
        if(tp != 0){ 
            if(intermediary == null){
                terminal.getTerminal(primary.data, tp);
            }else{
                terminal.getTerminal(intermediary.data, tp);
            }
        }
    }
    
    /*
     * INDEX
     * */
    this.buildIndexElement = function(index){
        indexOptions = '';
        for(var i = 0; i < index.length; i++){	
            indexOptions += '<p><a onclick="javascript:changeIndex(' + index[i].page + ')">' + index[i].index + '</a></p>';
        }
        if($('#indice').length){
            $('#indice').html(indexOptions);
        }
    }
   
   /*
    * ZOOM
    *
    */
    this.appendZoom = function(imageWidth){
        if(this.format == 'jpg' && imageWidth > 800){
            if($('#ingrandisci').length == 0){
                $('#commands').append(ingrandisci_element);
                $('#ingrandisci').click(this.onZoom);
            }
        }else {
            if($('#ingrandisci').length > 0) $('#ingrandisci').remove();
        }
    }

    this.onZoom = function(){
        if(zoom){
            zoom = false;
            $('#commands').width("");
            $('#zoom_img').attr('src','/images/lente_ingr.gif');
        } else {
            zoom = true;
            $('#commands').width(terminal.data.image.width+'px');
            $('#zoom_img').attr('src','/images/lente_rimp.gif');
        }
        self.page.changeImage();
    }
}

