﻿//javascript

var MyGallery = function(suff, nome, css) {
    this.Istanza = nome;
    this.Suffisso = suff;
    this.CssBase = css;

    this.SelUrlFoto = '';
    this.SelNomeFoto = '';
    this.SelDescFoto = '';
    this.SelFotoPrec = -1;
    this.SelFotoSucc = -1;
    this.Opacity = 0.5;
    this.Border = 8;
    this.InfoH = 70;
    this.BoxCloseH = 50;
    this.BoxCloseW = 50;
    this.BoxCloseOut = 7;
    this.BoxNavH = 50;
    this.BoxNavW = 50;
    this.BoxNavOut = 20;
}


MyGallery.prototype = {

    ShowFoto: function(id) {
        this.Wait();
        this.SelUrlFoto = $("#" + this.Suffisso + "-Foto" + id).val();
        this.SelNomeFoto = $("#" + this.Suffisso + "-Nome" + id).val();
        this.SelDescFoto = $("#" + this.Suffisso + "-Desc" + id).val();
        this.SelFotoPrec = $("#" + this.Suffisso + "-Prev" + id).val();
        this.SelFotoSucc = $("#" + this.Suffisso + "-Succ" + id).val();
        this.myImage = new Image();
        this.myImage.name = this.SelUrlFoto;
        var x = this;
        this.myImage.onload = function(t) {
            x.ImgH = this.height;
            x.ImgW = this.width;
            x.MyGlShow();
        };
        //this.MyGlShow;
        this.myImage.src = this.SelUrlFoto;
    },

    //---------------------------------------------------------------------------------------------------
    Hide: function() {
        var dv = $('#' + this.Istanza + '_Blanker');
        if (dv.length > 0) dv.css('display', 'none');
        dv = $('#' + this.Istanza + '_ImgCont');
        if (dv.length > 0) dv.css('display', 'none');
        $('#' + this.Istanza + '_BlankerWT').remove();
    },

    //---------------------------------------------------------------------------------------------------
    GetBodySize: function() {
        var winW = $(window).width();
        var winH = $(window).height();
        var bodyW = $('body').width();
        var bodyH = $('body').height();
        var x = winW > bodyW ? winW : bodyW;
        var y = winH > bodyH ? winH : bodyH;
        return { width: x, height: y }
    },

    //---------------------------------------------------------------------------------------------------
    GetVisWin: function() {
        var winW = $(window).width();
        var winH = $(window).height();
        var bodyW = 0;
        var bodyH = 0;
        var x = winW > bodyW ? winW : bodyW;
        var y = winH > bodyH ? winH : bodyH;
        return { width: x, height: y }
    },

    //---------------------------------------------------------------------------------------------------
    MaxZIndex: function() {
        var maxZ = 1000;
        var x = $('body > div');
        x.each(
            function() {
                var x = parseInt($(this).css('z-index'), 10);
                if (!isNaN(x)) maxZ = Math.max(maxZ, x);
            }
        );
        return maxZ;
    },

    //---------------------------------------------------------------------------------------------------
    Wait: function() {
        var wt = this.Istanza + '_BlankerWT'
        $('#' + wt).remove();

        var Blanker = $('#' + this.Istanza + '_Blanker');
        if (Blanker.length == 0) {
            Blanker = $('<div id="' + this.Istanza + '_Blanker" class="' + this.CssBase + '-Blanker"></div>').appendTo('body');
            Blanker.css('position', 'absolute');
            Blanker.css('top', '0px');
            Blanker.css('left', '0px');
            Blanker.css('opacity', this.Opacity);
        }
        var MaxZ = this.MaxZIndex() + 10;
        var size = this.GetBodySize();
        var bodyW = size.width;
        var bodyH = size.height;
        Blanker.css("z-index", MaxZ);
        Blanker.css('height', bodyH);
        Blanker.css('width', '100%');
        Blanker.css('display', 'block');

        var BtClose = $('#' + this.Istanza + '_ImgContClose');
        if (BtClose.length > 0) BtClose.css('display', 'none');

        var BoxPrec = $('#' + this.Istanza + '_BoxPrec');
        if (BoxPrec.length > 0) BoxPrec.css('display', 'none');

        var BoxSucc = $('#' + this.Istanza + '_BoxSucc');
        if (BoxSucc.length > 0) BoxSucc.css('display', 'none');

        var BoxInfo = $('#' + this.Istanza + '_Info');
        if (BoxInfo.length > 0) BoxInfo.css('display', 'none');

        var xl = (bodyW - 60) / 2;
        var xt = (bodyH - 60) / 2;
        MaxZ++;
        var x = $('<div id="' + wt + '" class="' + this.CssBase + '-BlankerWT">&nbsp;</div>');
        x.css({ 'position': 'fixed', 'top': xt + 'px', 'left': xl + 'px', 'width': '60px', 'height': '60px', 'z-index': MaxZ });
        $('body').append(x);
    },

    //---------------------------------------------------------------------------------------------------
    MyGlShow: function() {
        var appo;
        var MaxZ = this.MaxZIndex();
        var size = this.GetVisWin(); // GetBodySize();
        var bodyW = size.width;
        var bodyH = size.height;
        var BoxW = this.ImgW + (this.Border * 2);
        var BoxH = this.ImgH + (this.Border * 2) + this.InfoH + 5;
        var BoxT = (bodyH - BoxH) / 2 + $(window).scrollTop();
        var BoxL = (bodyW - BoxW) / 2;
        if (BoxT < 0) BoxT = 20
        if (BoxL < 0) BoxL = 0

        //----- contenitore --------------------------------------------------------------------------------
        var ImgCont = $('#' + this.Istanza + '_ImgCont');
        if (ImgCont.length == 0) {
            ImgCont = $('<div id="' + this.Istanza + '_ImgCont" class="' + this.CssBase + '-ImgCont"></div>').appendTo('body');
            ImgCont.css('position', 'absolute');
        }
        ImgCont.css('top', BoxT);
        ImgCont.css('left', BoxL);
        ImgCont.css("z-index", MaxZ + 10);
        ImgCont.css('height', BoxH);
        ImgCont.css('width', BoxW);
        ImgCont.css('display', 'block');

        //----- chiusura --------------------------------------------------------------------------------
        var BtClose = $('#' + this.Istanza + '_ImgContClose');
        if (BtClose.length == 0) {
            BtClose = $('<div id="' + this.Istanza + '_ImgContClose" class="' + this.CssBase + '-ImgContClose"><a href="javascript:' + this.Istanza + '.Hide()" id="MyGlLnkClose" class="' + this.CssBase + '-LnkClose"></a></div>').appendTo(ImgCont);
            BtClose.css('position', 'absolute');
            BtClose.css('height', this.BoxCloseW);
            BtClose.css('width', this.BoxCloseH);
            BtClose.css('display', 'none');
        }
        BtClose.css('top', '-' + this.BoxCloseOut + 'px');
        appo = BoxW - this.BoxCloseW + this.BoxCloseOut;
        BtClose.css('left', appo);
        BtClose.css("z-index", MaxZ + 50);

        //----- immagine --------------------------------------------------------------------------------
        var Img = $('#' + this.Istanza + '_Image');
        if (Img.length == 0) {
            Img = $('<img id="' + this.Istanza + '_Image" class="' + this.CssBase + '-Image" alt="' + this.SelNomeFoto + '" />').appendTo(ImgCont);
            Img.css('position', 'absolute');
            Img.css('top', this.Border);
            Img.css('left', this.Border);
            Img.css('display', 'none');
        }
        Img.css("z-index", MaxZ + 30);
        Img.attr("src", this.SelUrlFoto);

        //----- successiva --------------------------------------------------------------------------------
        var BoxPrec = $('#' + this.Istanza + '_BoxPrec');
        if (BoxPrec.length == 0) {
            BoxPrec = $('<div id="' + this.Istanza + '_BoxPrec" class="' + this.CssBase + '-BoxPrec"></div>').appendTo(ImgCont);
            BoxPrec.css('position', 'absolute');
            BoxPrec.css('display', 'none');
        }
        BoxPrec.css("z-index", MaxZ + 50);
        BoxPrec.css('height', this.BoxNavH);
        BoxPrec.css('width', this.BoxNavW);
        appo = (BoxH - this.BoxNavH) / 2;
        BoxPrec.css('top', appo);
        BoxPrec.css('left', '-' + this.BoxNavOut + 'px');

        //----- precedente --------------------------------------------------------------------------------
        var BoxSucc = $('#' + this.Istanza + '_BoxSucc');
        if (BoxSucc.length == 0) {
            BoxSucc = $('<div id="' + this.Istanza + '_BoxSucc" class="' + this.CssBase + '-BoxSucc"></div>').appendTo(ImgCont);
            BoxSucc.css('position', 'absolute');
            BoxSucc.css('display', 'none');
        }
        BoxSucc.css("z-index", MaxZ + 50);
        BoxSucc.css('height', this.BoxNavH);
        BoxSucc.css('width', this.BoxNavW);
        appo = (BoxH - this.BoxNavH) / 2;
        BoxSucc.css('top', appo);
        appo = BoxW - this.BoxNavW + this.BoxNavOut;
        BoxSucc.css('left', appo);

        //----- info --------------------------------------------------------------------------------
        var BoxInfo = $('#' + this.Istanza + '_Info');
        if (BoxInfo.length == 0) {
            BoxInfo = $('<div id="' + this.Istanza + '_Info" class="' + this.CssBase + '-Info"></div>').appendTo(ImgCont);
            BoxInfo.css('position', 'absolute');
            BoxInfo.css('height', this.InfoH);
            BoxInfo.css('display', 'none');
        }
        BoxInfo.css("z-index", MaxZ + 30);
        BoxInfo.css('width', this.ImgW);
        appo = this.ImgH + this.Border + 5;
        BoxInfo.css('top', appo);
        BoxInfo.css('left', this.Border);
        BoxInfo.html('<div class="nome">' + this.SelNomeFoto + '</div><div class="desc"><div class="descInt">' + this.SelDescFoto + '</div></div>');

        //----- visualizza --------------------------------------------------------------------------------
        Img.css('display', 'block');
        if (this.SelFotoPrec >= 0) {
            BoxPrec.css('display', 'block');
            BoxPrec.html('<a href="javascript:' + this.Istanza + '.ShowFoto(' + this.SelFotoPrec + ')" id="MyGlBoxPrecLnk" class="' + this.CssBase + '-BoxPrecLnk"></a>');
        } else BoxPrec.css('display', 'none');
        if (this.SelFotoSucc >= 0) {
            BoxSucc.css('display', 'block');
            BoxSucc.html('<a href="javascript:' + this.Istanza + '.ShowFoto(' + this.SelFotoSucc + ')" id="MyGlBoxSuccLnk" class="' + this.CssBase + '-BoxSuccLnk"></a>');
        } else BoxSucc.css('display', 'none');
        BtClose.css('display', 'block');
        BoxInfo.css('display', 'block');

        size = this.GetBodySize();
        $('#' + this.Istanza + '_Blanker').css('height', size.height);
        $('#' + this.Istanza + '_BlankerWT').remove();
    }

}
