/* * * * * * * * * * * * * * * * * * *
 * Simple Javascript / Jquery gallery
 * Use: showImage(src);
 * Use: showTextbox(html);
 * Written by: flame2014@gmail.com
 * * * * * * * * * * * * * * * * * * */

var FG_CONFIG = Array();
FG_CONFIG['overlay'] = '#000000';
FG_CONFIG['background'] = '#000000';
FG_CONFIG['border'] = '#000000';
FG_CONFIG['basePath'] = '/images/';
FG_CONFIG['closeImage'] = 'ico-fg-close.png';
FG_CONFIG['nextImage'] = 'ico-fg-next.png';
FG_CONFIG['prevImage'] = 'ico-fg-prev.png';
FG_CONFIG['loaderImage'] = 'ico-fg-loader.gif';
FG_CONFIG['effect'] = 'custom'; // show, fade, slide, custom
FG_CONFIG['slideImages'] = new Array();
FG_CONFIG['lastShown'] = '';

$(document).ready(function(){
	var img = new Image();
	img.src = FG_CONFIG['basePath'] + FG_CONFIG['loaderImage'];

	var img2 = new Image();
	img2.src = FG_CONFIG['basePath'] + FG_CONFIG['nextImage'];

	var img3 = new Image();
	img3.src = FG_CONFIG['basePath'] + FG_CONFIG['prevImage'];

	var img4 = new Image();
	img4.src = FG_CONFIG['basePath'] + FG_CONFIG['closeImage'];

});

function showImage(src, text)
	{
	if(src && src.length > 0)
		{
		createLoader();

  		var img = new Image();
		$(img).load(function(){createGallery(this);});
		//$(img).error(function (){});
		$(img).attr('src', src);
		$(img).attr('text', text);
		FG_CONFIG['lastShown'] = src;
		slideImage(0);
		}
	else
		{
		$('#fg_background').hide();
		$('#fg_photocontainer').hide();
		FG_CONFIG['lastShown'] = '';
		}

	return false;
	}
function slideImage(ord)
    {
    var found = 0;
    txt = '';
    var start = 0;
    var lastimage = FG_CONFIG['lastShown'];
    // Visty path zobrazeny bez domeny, url atd
    lastimage = lastimage.replace(document.domain, '').replace("http://", '').replace("https://", '');
    for(i = start; i < FG_CONFIG['slideImages'].length; i++)
        {
        txt += lastimage + '=='+ FG_CONFIG['slideImages'][i] + "\n";
        if(FG_CONFIG['slideImages'][i].search(lastimage) != -1)
            {
            txt += " - FOUND \n" ;
            found = i;
            break;
            }
        }

    next = found+ord;
    //alert(txt);
    //alert(next +' = '+ found+ ' + ' + ord);
    if(next >= FG_CONFIG['slideImages'].length - 1)
        $('#fg_nextbutton').hide();
    else
        $('#fg_nextbutton').show();

    if(next <= 0)
        $('#fg_prevbutton').hide();
    else
        $('#fg_prevbutton').show();
    


    if(next >= FG_CONFIG['slideImages'].length)
        next = 0;
    if(next < 0)
        next = FG_CONFIG['slideImages'].length - 1;

    FG_CONFIG['lastShownPos'] = next;
    if(ord != 0)
        {
        $('#fg_photocontainer').hide();
        showImage(FG_CONFIG['slideImages'][next]);
        }
    }
    
function showTextbox(text)
    {
    if(text.length == 0)
        {
        $('#fg_background').hide();
        $('#fg_textcontainer').hide();
        $('#fg_content').html('');

        $('#fg_textcontainer').css('width', '');
        return;
        }

    // text
    if($('#fg_textcontainer').length == 0)
        {
        var src = "<div id=\"fg_textcontainer\" style=\"display: none; min-width: 150px; position: absolute; top: 0px; left: 0px; z-index:20001; background: "+FG_CONFIG['background']+"; -moz-border-radius: 5px; border-radius: 5px; -moz-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px;\">";
        src += "<div id=\"fg_closetextbutton\" style=\"position:absolute;\"><a href=\"#\"><img src=\""+FG_CONFIG['basePath'] + FG_CONFIG['closeImage']+"\" alt=\"Zavriet\" style=\"border: 0px;\" /></a></div>";
        src += "<div id=\"fg_content\" style=\" border:1px solid "+FG_CONFIG['border']+"; padding: 10px; -moz-border-radius: 5px; border-radius: 5px; -moz-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px; \">";
        src += "</div></div>";
        
        $('body').append(src);   
        
        $('#fg_closetextbutton').click(function(){showTextbox(''); return false;});
        }
        
    $('#fg_content').html(text);
    $('#fg_loader').hide();

    if(FG_CONFIG['effect'] == 'slide')
        $('#fg_textcontainer').slideDown('fast', function(){positionTextElements();});
    if(FG_CONFIG['effect'] == 'fade')
        $('#fg_textcontainer').fadeIn('fast', function(){positionTextElements();});
    if(FG_CONFIG['effect'] == 'show')
        $('#fg_textcontainer').show();
    if(FG_CONFIG['effect'] == 'custom')
        $('#fg_textcontainer').animate({"height": "show", "opacity": "show"}, 800, function(){positionTextElements();});


    positionTextElements();
    }
function positionTextElements()
{
    // Normalizacia obrazka aby nebol sirsi ako stranka    
    if($('#fg_content').width() > $(document).width() - 200)
        {
        ratio = ($(document).width() - 200) / $('#fg_content').width();
        
        $('#fg_content').width($(document).width() - 200);
        }
        
    $('#fg_textcontainer').width($('#fg_content').width());
    createBackground();        

    left = $('#fg_textcontainer').width() - $('#fg_closetextbutton').width();
    top  = $('#fg_textcontainer ').height();
    $('#fg_closetextbutton').css({'left':left+'px', 'top': top+'px'});    

    $('#fg_background').height($(document).height());

    var left = Math.round(($(document).width() - $('#fg_content').width()) / 2);
    var top  = $(window).scrollTop() + 30;
    $('#fg_textcontainer').css({'left':left+'px', 'top': top+'px'});

}
    
    
    
function createLoader()
	{
	if($('#fg_loader').length == 0)
		{
		var src = "<div id=\"fg_loader\" style=\"position: absolute; z-index:20002; background: "+FG_CONFIG['background']+"; border:1px solid "+FG_CONFIG['border']+"; padding: 3px 3px 3px 3px;\"><img src=\""+FG_CONFIG['basePath'] + FG_CONFIG['loaderImage']+"\" alt=\"Loader\" /></div>";

		$('body').append(src);
		}

	$('#fg_loader').show();
	var left = Math.round(($(document).width() - $('#fg_loader img').width()) / 2);
	var top  = $(window).scrollTop() + $(window).height() / 2;
	$('#fg_loader').css({'left':left+'px', 'top': top+'px'})
	}
function createBackground()
    {
    if($('#fg_background').length == 0)
        {
        var src = "<div id=\"fg_background\" style=\"display: none; position: absolute; top: 0px; left: 0px; z-index:20000; background: "+FG_CONFIG['overlay']+"; filter:alpha(opacity=80);-moz-opacity:.80;opacity:.80;\"></div>";
        $('body').append(src);

        $('#fg_background').click(function(){showImage(''); showTextbox(''); return false;});
        }
    $('#fg_background').show();
    $('#fg_background').width($(document).width());
    $('#fg_background').height($(document).height());
    }
function createGallery(imgObj)
	{
	// Galeria
	if($('#fg_imageholder').length == 0)
		{
        createBackground();
        
		var src = "<div id=\"fg_photocontainer\" style=\"display: none; position: absolute; top: 0px; left: 0px; z-index:20001; background: "+FG_CONFIG['background']+"; -moz-border-radius: 5px; border-radius: 5px; -moz-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px;\">";
		src += "<div id=\"fg_closebutton\" style=\"position:absolute;\"><a href=\"#\"><img src=\""+FG_CONFIG['basePath'] + FG_CONFIG['closeImage']+"\" alt=\"Zavriet\" style=\"border: 0px;\" /></a></div>";
		src += "<div style=\" border:1px solid "+FG_CONFIG['border']+"; padding: 10px; -moz-border-radius: 5px; border-radius: 5px; -moz-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px; \">";
		src += "	<img src=\"\" alt=\"Preview\" id=\"fg_imageholder\"/>";
		src += "</div></div>";

		$('body').append(src);
        $('#fg_closebutton a').click(function(){showImage(''); return false;});
		}
	// Prev next
	if(FG_CONFIG['slideImages'].length > 0)
		{
		if($('#fg_nextbutton').length == 0)
			{
			var src = "";
			src += "<div id=\"fg_nextbutton\" style=\"position:absolute;\"><a href=\"#\"><img src=\""+FG_CONFIG['basePath'] + FG_CONFIG['nextImage']+"\" alt=\"Next\" style=\"border: 0px;\" /></a></div>";
			src += "<div id=\"fg_prevbutton\" style=\"position:absolute;\"><a href=\"#\"><img src=\""+FG_CONFIG['basePath'] + FG_CONFIG['prevImage']+"\" alt=\"Prev\" style=\"border: 0px;\" /></a></div>";
			$('#fg_photocontainer').append(src);

			$('#fg_nextbutton a').click(function(){slideImage(+1); return false;});
			$('#fg_prevbutton a').click(function(){slideImage(-1); return false;});
			}
		}
	// Text information
	if(imgObj.text)
		{
		}

	$('#fg_imageholder').attr('src', imgObj.src);
	
    $('#fg_loader').hide();

    createBackground();

    if(FG_CONFIG['effect'] == 'slide')
		$('#fg_photocontainer').slideDown('fast', function(){placeButtons();});
	if(FG_CONFIG['effect'] == 'fade')
		$('#fg_photocontainer').fadeIn('fast', function(){placeButtons();});
	if(FG_CONFIG['effect'] == 'show')
		$('#fg_photocontainer').show();
	if(FG_CONFIG['effect'] == 'custom')
		$('#fg_photocontainer').animate({"height": "toggle", "opacity": "toggle"}, 800, function(){placeButtons();});
    
    // Normalizacia obrazka aby nebol sirsi ako stranka    
    if(imgObj.width > $(document).width() - 200)
        {
        ratio = ($(document).width() - 200) / imgObj.width;
        imgObj.width = $(document).width() - 200;
        imgObj.height = imgObj.height * ratio;
        }
    
    $('#fg_imageholder').css({'width': imgObj.width+ 'px', 'height': imgObj.height + 'px'});
    
    if(imgObj.width)
        $('#fg_photocontainer').css({'min-width': imgObj.width+'px'});

    placeButtons();
	}
    
function placeButtons()
    {
    $('#fg_background').height($(document).height());
    
    var left = Math.round(($(document).width() - $('#fg_imageholder').width()) / 2);
    var top  = $(window).scrollTop() + 30;
    $('#fg_photocontainer').css({'left':left+'px', 'top': top+'px'});
    
    //alert($('#fg_photocontainer').width());
    left = $('#fg_photocontainer').width() - $('#fg_closebutton img').width();
    top  = $('#fg_photocontainer ').height();
    $('#fg_closebutton').css({'left':left+'px', 'top': top+'px'});

    if(FG_CONFIG['slideImages'].length > 0)
        {
        top = 30;
        left = -1 * $('#fg_prevbutton').width() - 10;
        $('#fg_prevbutton').css({'left':left+'px', 'top': top+'px'});

        left = $('#fg_photocontainer').width() + 10;
        $('#fg_nextbutton').css({'left':left+'px', 'top': top+'px'});
        }        
        
    }
