/**
 * jqFancyTransitions - jQuery plugin
 * @version: 1.8 (2010/06/13)
 * @requires jQuery v1.2.2 or later 
 * @author Ivan Lazarevic
 * Examples and documentation at: http://www.workshop.rs/projects/jqfancytransitions
 
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
**/

(function($) {
    var opts = new Array;
    var level = new Array;
    var img = new Array;
    var links = new Array;
    var titles = new Array;
    var order = new Array;
    var imgInc = new Array;
    var inc = new Array;
    var stripInt = new Array;
    var imgInt = new Array;
	
    $.fn.jqFancyTransitions = $.fn.jqfancytransitions = function(options){
	
        init = function(el){

            opts[el.id] = $.extend({}, $.fn.jqFancyTransitions.defaults, options);
            img[el.id] = new Array(); // images array
            links[el.id] = new Array(); // links array
            titles[el.id] = new Array(); // titles array
            order[el.id] = new Array(); // strips order array
            imgInc[el.id] = 0;
            inc[el.id] = 0;

            params = opts[el.id];

            if(params.effect == 'zipper'){
                params.direction = 'alternate';
                params.position = 'alternate';
            }
            if(params.effect == 'wave'){
                params.direction = 'alternate';
                params.position = 'top';
            }
            if(params.effect == 'curtain'){
                params.direction = 'alternate';
                params.position = 'curtain';
            }

            // width of strips
            stripWidth = parseInt(params.width / params.strips);
            gap = params.width - stripWidth*params.strips; // number of pixels
            stripLeft = 0;

            // create images and titles arrays
            $.each($('#'+el.id+' img'), function(i,item){             

                var tmp_link     = $(item).attr('src');
                var tmp_link2 = tmp_link.substr(0, 5) + '/' + tmp_link.substr(7, tmp_link.length);                
                img[el.id][i] = tmp_link2;
                links[el.id][i] = $(item).next().attr('href');
                titles[el.id][i] = $(item).attr('alt') ? $(item).attr('alt') : '';
                $(item).hide();
            });

            // set panel
            $('#'+el.id).css({
                'background-image':'url('+img[el.id][0]+')',
                'width': params.width,
                'height': params.height,
                'position': 'relative',
                'background-position': 'top left'
            });

            // create title bar
            $('#'+el.id).append("<div class='ft-title' id='ft-title-"+el.id+"' style='position: absolute; bottom:0; left: 0; z-index: 1000; color: #fff; background-color: #000; '>"+titles[el.id][0]+"</div>");
            if(titles[el.id][imgInc[el.id]])
                $('#ft-title-'+el.id).css('opacity',opts[el.id].titleOpacity);
            else
                $('#ft-title-'+el.id).css('opacity',0);

            if(params.navigation){
                $.navigation(el);
                $('#ft-buttons-'+el.id).children().first().addClass('ft-button-'+el.id+'-active');
            }

            odd = 1;
            // creating bars
            // and set their position
            for(j=1; j < params.strips+1; j++){
			
                if( gap > 0){
                    tstripWidth = stripWidth + 1;
                    gap--;
                } else {
                    tstripWidth = stripWidth;
                }
			
                if(params.links)
                    $('#'+el.id).append("<a href='"+links[el.id][0]+"' class='ft-"+el.id+"' id='ft-"+el.id+j+"' style='width:"+tstripWidth+"px; height:"+params.height+"px; float: left; position: absolute;outline:none;'></a>");
                else
                    $('#'+el.id).append("<div class='ft-"+el.id+"' id='ft-"+el.id+j+"' style='width:"+tstripWidth+"px; height:"+params.height+"px; float: left; position: absolute;'></div>");
							
                // positioning bars
                $("#ft-"+el.id+j).css({
                    'background-position': -stripLeft +'px top',
                    'left' : stripLeft
                });
			
                stripLeft += tstripWidth;

                if(params.position == 'bottom')
                    $("#ft-"+el.id+j).css( 'bottom', 0 );
				
                if (j%2 == 0 && params.position == 'alternate')
                    $("#ft-"+el.id+j).css( 'bottom', 0 );
	
                // bars order
                // fountain
                if(params.direction == 'fountain' || params.direction == 'fountainAlternate'){
                    order[el.id][j-1] = parseInt(params.strips/2) - (parseInt(j/2)*odd);
                    order[el.id][params.strips-1] = params.strips; // fix for odd number of bars
                    odd *= -1;
                } else {
                    // linear
                    order[el.id][j-1] = j;
                }
	
            }

            $('.ft-'+el.id).mouseover(function(){
                opts[el.id].pause = true;
            });
		
            $('.ft-'+el.id).mouseout(function(){
                opts[el.id].pause = false;
            });
			
            $('#ft-title-'+el.id).mouseover(function(){
                opts[el.id].pause = true;
            });
		
            $('#ft-title-'+el.id).mouseout(function(){
                opts[el.id].pause = false;
            });
		
            clearInterval(imgInt[el.id]);
            imgInt[el.id] = setInterval(function() {
                $.transition(el)
            }, params.delay+params.stripDelay*params.strips);

        };

        // transition
        $.transition = function(el,direction){

            if(opts[el.id].pause == true) return;

            stripInt[el.id] = setInterval(function() {
                $.strips(order[el.id][inc[el.id]], el)
            },opts[el.id].stripDelay);
		
            $('#'+el.id).css({
                'background-image': 'url('+img[el.id][imgInc[el.id]]+')'
            });
		
            if(typeof(direction) == "undefined")
                imgInc[el.id]++;
            else
            if(direction == 'prev')
                imgInc[el.id]--;
            else
                imgInc[el.id] = direction;

            if  (imgInc[el.id] == img[el.id].length) {
                imgInc[el.id] = 0;
            }
		
            if (imgInc[el.id] == -1){
                imgInc[el.id] = img[el.id].length-1;
            }
		
            if(titles[el.id][imgInc[el.id]]!=''){
                $('#ft-title-'+el.id).animate({
                    opacity: 0
                }, opts[el.id].titleSpeed, function(){
                    $(this).html(titles[el.id][imgInc[el.id]]).animate({
                        opacity: opts[el.id].titleOpacity
                    }, opts[el.id].titleSpeed);
                });
            } else {
                $('#ft-title-'+el.id).animate({
                    opacity: 0
                }, opts[el.id].titleSpeed);
            }
		
            inc[el.id] = 0;
		
            buttons = $('#ft-buttons-'+el.id).children();
		
            buttons.each(function(index){
                if(index == imgInc[el.id]){
                    $(this).addClass('ft-button-'+el.id+'-active');
                } else{
                    $(this).removeClass('ft-button-'+el.id+'-active');
                }
            });

            if(opts[el.id].direction == 'random')
                $.fisherYates (order[el.id]);
			
            if((opts[el.id].direction == 'right' && order[el.id][0] == 1)
                || opts[el.id].direction == 'alternate'
                || opts[el.id].direction == 'fountainAlternate')
                order[el.id].reverse();
        };


        // strips animations
        $.strips = function(itemId, el){

            temp = opts[el.id].strips;
            if (inc[el.id] == temp) {
                clearInterval(stripInt[el.id]);
                return;
            }
            $('.ft-'+el.id).attr('href',links[el.id][imgInc[el.id]]);
            if(opts[el.id].position == 'curtain'){
                currWidth = $('#ft-'+el.id+itemId).width();
                $('#ft-'+el.id+itemId).css({
                    width: 0,
                    opacity: 0,
                    'background-image': 'url('+img[el.id][imgInc[el.id]]+')'
                });
                $('#ft-'+el.id+itemId).animate({
                    width: currWidth,
                    opacity: 1
                }, 1000);
            } else {
                $('#ft-'+el.id+itemId).css({
                    height: 0,
                    opacity: 0,
                    'background-image': 'url('+img[el.id][imgInc[el.id]]+')'
                });
                $('#ft-'+el.id+itemId).animate({
                    height: opts[el.id].height,
                    opacity: 1
                }, 1000);
            }
		
            inc[el.id]++;
		
        };

        // navigation
        $.navigation = function(el){
            // create prev and next
            // tworzenie diva na nawigacje          ft-buttons-
            $("<div id='ft-buttons-strzalki-"+el.id+"'></div>").insertAfter($('#'+el.id));
            //   $('#ft-buttons-strzalki-'+el.id).css({
            //      'text-align' 	: 'center',
            //     'padding-top'	: 5
            //'width'			: opts[el.id].width
            //      });


            $('#ft-buttons-strzalki-'+el.id).append("<a href='#' id='ft-prev-"+el.id+"' class='ft-prev' onmousedown=\"var aSoundObject = soundManager.createSound({id:'mySound6', url:'/public/media/camera.mp3'});aSoundObject.play()\"><< Poprzednie</a>");
            $('#ft-buttons-strzalki-'+el.id).append("<a href='#' id='ft-next-"+el.id+"' class='ft-next' onmousedown=\"var aSoundObject = soundManager.createSound({id:'mySound6', url:'/public/media/camera.mp3'});aSoundObject.play()\">Następne >></a>");
            $('#ft-prev-'+el.id).css({
                //  'position' 	: 'absolute',
                //  'top'		: params.height/2 - 15,
                //  'left'		: 0,
                'z-index' 	: 1001,
                // 'line-height': '30px',
                'opacity'	: 0.7
            }).click( function(e){
                e.preventDefault();
                $.transition(el,'prev');
                clearInterval(imgInt[el.id]);
                imgInt[el.id] = setInterval(function() {
                    $.transition(el)
                }, params.delay+params.stripDelay*params.strips);
            });

            $('#ft-next-'+el.id).css({
                //'position' 	: 'absolute',
                //'top'		: params.height/2 - 15,
                //'right'		: 0,
                'z-index' 	: 1001,
                // 'line-height': '30px',
                'opacity'	: 0.7
            }).click( function(e){
                e.preventDefault();
                $.transition(el);
                clearInterval(imgInt[el.id]);
                imgInt[el.id] = setInterval(function() {
                    $.transition(el)
                }, params.delay+params.stripDelay*params.strips);
            });

            // image buttons

            $("<div id='ft-buttons-"+el.id+"'></div>").insertAfter($('#ft-buttons-strzalki-'+el.id));
            $('#ft-buttons-'+el.id).css({
                'text-align' 	: 'center',
                'padding-top'	: 5
            //'width'			: opts[el.id].width
            });
            for(k=0;k<img[el.id].length;k++){
                //  /data/14_3070e6ad14_.jpg
                var sciezka = img[el.id][k];
                 var tmp_sciezka = sciezka.substr(6,sciezka.length);
                
                 var newImg = new Image();
                    newImg.src = "/data/t"+tmp_sciezka;
                //  przerwa = window.setTimeout(function(){}, '300');
                 var widthimg = newImg.width;
                   var styl='';
                 if(widthimg < 100){
                  styl='minifotkimarginy';
                  }
                //   window.clearTimeout(przerwa);
                // newImg = null;
                //
                $('#ft-buttons-'+el.id).append("<a href='#' class='ft-button-"+el.id+" "+styl+"'><img class='zdjecie_mini' src='/data/t"+tmp_sciezka+"' onmousedown=\"return false\" oncontextmenu=\"return false\" onselectstart=\"return false\" onselect=\"return false\" oncopy=\"return false\" ondragstart=\"return false\" ondrag=\"return false\" onmousedown=\"var aSoundObject = soundManager.createSound({id:'mySound6', url:'/public/media/camera.mp3'});aSoundObject.play()\"/></a>");
            }
            $('.ft-button-'+el.id).css({
                'display'   :'block'
            });

            $.each($('.ft-button-'+el.id), function(i,item){
                $(item).click( function(e){
                    e.preventDefault();
                    $.transition(el,i);
                    clearInterval(imgInt[el.id]);
                    imgInt[el.id] = setInterval(function() {
                        $.transition(el)
                    }, params.delay+params.stripDelay*params.strips);
                })
            });
        }
	


        // shuffle array function
        $.fisherYates = function(arr) {
            var i = arr.length;
            if ( i == 0 ) return false;
            while ( --i ) {
                var j = Math.floor( Math.random() * ( i + 1 ) );
                var tempi = arr[i];
                var tempj = arr[j];
                arr[i] = tempj;
                arr[j] = tempi;
            }
        }
		
        this.each (
            function(){
                init(this);
            }
            );
		
    };

    // default values
    $.fn.jqFancyTransitions.defaults = {
        width: 500, // width of panel
        height: 332, // height of panel
        strips: 10, // number of strips
        delay: 5000, // delay between images in ms
        stripDelay: 50, // delay beetwen strips in ms
        titleOpacity: 0.7, // opacity of title
        titleSpeed: 1000, // speed of title appereance in ms
        position: 'alternate', // top, bottom, alternate, curtain
        direction: 'fountainAlternate', // left, right, alternate, random, fountain, fountainAlternate
        effect: '', // curtain, zipper, wave
        navigation: false, // prev next and buttons
        links : false // show images as links
    };
	
})(jQuery);
