// JavaScript Document

(function($){

$.fn.likeplugin = function(options)
{
    container = this;
	//uporaba : da? ga takoj za ko zgradi? plugin za gallerio
	//$("#adImages").likeplugin({imagePlacer:'li',...});
    //nastavitve
    var defaults = {
                    imagePlacer:'li',
                    buttonTextLike:'like',
                    buttonTextDisLike:'dislike',
                    previousPict:'#prevGalleria',
                    nextPict:'#nextGalleria',
                    remotePictPath : '/serve/ajaxGetPics',
		    remoteLikePath : '/serve/ajaxLikePics',
                    linkToAdText:'more',
                    linkToAd:false
                    };

    var pluginopts = $.extend(defaults, options);
    // koliko slik thumbsov se je nalo?ilo
    var perpictsize = $(container).find(defaults.imagePlacer).length;
    //interen ?tevec ?
	var sendRqPosition = 0;
    //disable reload
	var disableReload = false;
    //private scope
    var likeplugin =
    {
		//remote pictures loader
        loadRemote:function(from,packetSize)
        {
            disableReload = true;
            var loader = document.createElement('div');
            $(loader).addClass('loader');
            $(container).before(loader);
            $(loader).show();
            $(loader).attr('style', 'position: fixed !important;top:0px;left:0px;width:100%;height:100%;');
            var d = new Date();
            var optionsRS = {
                dataType: 'json',
                url: pluginopts.remotePictPath + '/' + from + '/' + packetSize + '/'+d.getTime(),

                success: function(data)
                {
                    var i = 0;
                    $(".replaced").fadeOut('slow');
                    $(container).find('span').remove();
                    $(container).find(pluginopts.imagePlacer).each(function(){
                        var img = $(this).children('img');
                        $(img).fadeOut('slow');
                        //click event za menjavo glavne slike
                        if ($(this).hasClass('active'))
                        {

                            $(".replaced").attr("src",data['images'][i]['link']);
                            $(".caption").html(data['images'][i]['title']);
                            $.galleria.current =  data['images'][i]['link'];

                        }


                        $(this).click(function(){

                            $.galleria.activate($(this).children().attr("src"));

                            return false;
                        });

                        //prirejanje podatkov na thumbnailih, ?e bo? ?e kaj dodala morda , opis ?

                        if ($(img).attr("src") == undefined)//screwd img
                        {
                            $(this).empty();
                            img = new Image();
                            $(this).append(img);
                        }

                        $(this).attr('id', data['images'][i]['adLink']);


                        $(img).attr("src",data['images'][i]['link']);
                        $(img).attr("rel",data['images'][i]['link']);
                        $(img).attr("id",data['images'][i]['doit']);
                        $(img).attr("title",data['images'][i]['title']);
                        $(img).fadeIn('slow');
                        i++;
                    });
                    doLikeButtonMagic();
                    disableReload = false;
                    var t=setTimeout("$('.replaced').fadeIn('slow');$('.loader').remove();",6000);
                    //var t=setTimeout("$('.replaced').fadeIn('slow');",6000);
                }
            };
            $.ajax(optionsRS);

        },
	sendLike:function(like,id)
	{
            var d = new Date();
            var optionsRS = {
                dataType: 'json',
                url: pluginopts.remoteLikePath + '/' + like + '/' + id + '/'+d.getTime(),
                success: function(data)
                {

                    if(data['success']!=undefined && data['success']==1) {

                        var likeResultDiv = $('#likeResult'+id).length;

                        if(likeResultDiv==0) {
                            var likeResultDiv = document.createElement('span');
                            $(likeResultDiv).attr('id', 'likeResult'+id);
                            $(likeResultDiv).addClass('likeResult');
                            $(likeResultDiv).html('<span>0</span> X <img src="http://pic.equigaia.com/img/heart.gif" alt="" />');
                            $(likeResultDiv).insertBefore('#likeButton'+id);
                            $(likeResultDiv).show();
                            var likeResult=0;
                         } else {
                            var likeResult = $('#likeResult'+id+' span').text();
                         }

                        if(like==1) {
                            likeResult++;
                            $('#likeButton'+id).attr('class','unlikeButton');
                            $('#likeButton'+id).html(pluginopts.buttonTextDisLike);
                        } else {
                            likeResult--;
                            $('#likeButton'+id).attr('class','likeButton');
                            $('#likeButton'+id).html(pluginopts.buttonTextLike);
                        }
                        $('#likeResult'+id+' span').text(likeResult);
                    } else
                        alert('ERROR' + data['err']);
                }
            };
            $.ajax(optionsRS);


		}
    };

    //some public scope
    $.likeplugin =
    {
		//external call with callback if needed
        loadRemote:function( callback )
        {
            var scope = this;
            $.getJSON(pluginopts.remotePictPath,{},function(data){
              callback.call(scope,data);
            });
            return scope;
        },
        reload:function()
        {
            if(!disableReload) likeplugin.loadRemote(sendRqPosition , perpictsize);
            return false;
        },
        reloadWithParams:function(pos,packet)
        {
            if(!disableReload) likeplugin.loadRemote(pos, packet);
            return false;
        }
    };

    //triger load request
    $(pluginopts.nextPict).click(function(){
        if(!disableReload) {
            sendRqPosition = (sendRqPosition + perpictsize) ;
            likeplugin.loadRemote(sendRqPosition,perpictsize);
        }
        return false;
    });
    //triger load request
    $(pluginopts.previousPict).click(function(){

		if (!disableReload && sendRqPosition - perpictsize*2 >= 0)
		{
			likeplugin.loadRemote(sendRqPosition-perpictsize,perpictsize);
            sendRqPosition = sendRqPosition - perpictsize;
		}
        return false;

    });



    //like button magic
    function doLikeButtonMagic() {
        $(container).find(defaults.imagePlacer).each(function(){
            var button = document.createElement('span');
            var idimg = $(this).children().attr("id");
            idimg = idimg.replace(/img_/, '');

            $(button).html(pluginopts.buttonTextLike);
            $(button).attr('id', 'likeButton'+idimg);
            $(button).addClass('likeButton');
            $(this).append(button);
            $(button).toggle(function() {
                likeplugin.sendLike(1,idimg, button);
                //call remote
            }, function() {
                likeplugin.sendLike(0,idimg, button);
                //call remote
            });

        });

    }
    doLikeButtonMagic();

}

})(jQuery);
