(function($){
    $.fn.extend({
        slideshow: function(options) {

            var defaults = {
                width: 670,
                height: 292,
            	previousBtnLabel: "FÖREGÅENDE",
				nextBtnLabel: "NÄSTA",
				autoSlide: true,
				delay: 5100,
				isHomepage: false,
				homepageLabel: ""
			};

            var options = $.extend(defaults, options);

            return this.each(function() {
				
				var _slideshow_container =  $(this).parents('.global_slideshow');
                var _container = $(this);
                var _width = options.width;
                var _height = options.height;
				var _numOfSlides = $(_container).find('img').length;
				var _pagContainer, _pagBtnContainer, _prevBtn, _nextBtn, _timer;
				var _pagIndex = _slideIndex = _posLeft = 0;
				var _delay = options.delay;
				var _autoSlide = options.autoSlide;
				var _isRunning = false;
				var _isHomepage = options.isHomepage;
				var _imgs = [];
				
				$(_container).css({position:"relative",left:0});
				$(_container).find('img').css('display', 'none');
				
				
				var createPagination = function(){
					var pag_id = '' + Math.floor(Math.random()*100);
					_pagContainer = $('<div class="slide_pag_container"></div>').attr('id' , 'pag_id_' + pag_id);
					_pagBtnContainer = $('<div class="btn_container"></div>').attr('id' , 'pag_btns_' + pag_id);
					var alphaBg = $('<div class="alpha_bg"></div>').css('width', _width);
					
					$(_container).parent().append(_pagContainer);
					$(_pagContainer).append(alphaBg);
					$(_pagContainer).append(_pagBtnContainer);
					$(_pagContainer).css('top', _height);
					
					var xx = (_width *.5) - ((_numOfSlides *.5) * 16) - ((_numOfSlides - 1) *3);
					$(_pagBtnContainer).css('left', xx);
				};
				
				createPagination();
				
				var pushPagButton = function(){
					var pagItem = $('<a class="pag_btn"></a>').attr('id' , 'pag_' + _pagIndex);
					$(_pagBtnContainer).append(pagItem);
					if(_pagIndex == 0){
						$(pagItem).addClass('active');
					}
					_pagIndex++;
				}
				/*duplicate fist and last for cycle*/
				var pushDuplicate = function(obj){
					var cloned = $(obj).clone().appendTo(_container);
					if(eachCounter == 1){
						$(cloned).css({position:"absolute",left:(_numOfSlides * _width)});
					}else{
						$(cloned).css({position:"absolute",left:(-_width)});
					}
				}
				
				var eachCounter = 0;
				
				$(_container).children().each(function(){
					$(this).css({position:"absolute",left:_posLeft});
					_posLeft += _width;
					pushPagButton();
					eachCounter++;
					
					/*duplicate fist and last for cycle*/
					if(eachCounter == 1 || eachCounter == _numOfSlides){
						pushDuplicate($(this));
					}
				});
				
				$(_container).find('img').each(function(){
					var img = $(this);
					var src = $(img).attr('src');
					$(img).attr('src', '');
					$(img).load(function () {
			            $(this).fadeIn(350);
						$(_slideshow_container).removeClass('loading');
			        }).error(function () {
			            // notify the user that the image could not be loaded
			        }).attr('src', src);
				});
				
				
				if(_numOfSlides < 2)
				{
					return;
				}
				
				
				if(_isHomepage){
					var label = $('<h2 id="slideshow_label"></h2>').html(options.homepageLabel);
					$(_pagContainer).append(label);
				}
				_prevBtn = $('<a class="pag_left_btn"></a>').html(options.previousBtnLabel);
				_nextBtn = $('<a class="pag_right_btn"></a>').html(options.nextBtnLabel);
				$(_pagContainer).append(_nextBtn);
				$(_pagContainer).append(_prevBtn);
				
				/*runtime funcitonality*/
				$(_container).parent().hover(function(){
					stopTimer();
					$(_pagContainer).addClass("is_hover");
					$(_pagContainer).stop(true, false).animate({'top': _height - 50}, 200);
				}, function(){
					stopTimer();
					startTimer();
					$(_pagContainer).removeClass("is_hover");
					$(_pagContainer).stop(true, false).animate({'top': _height}, 250);
				});
				
				$(_prevBtn).click(function(){
					goToPrevious();
				});
				
				$(_nextBtn).click(function(){
					goToNext();
				});
				
				$('.pag_btn').click(function(){
					if(_isRunning == true){
						return false;
					}
					var _clickedID = parseFloat($(this).attr('id').split("_")[1]);
					_slideIndex = _clickedID;
					slideToPagIndex();
				});
				
				var slideToPagIndex = function(){
					_isRunning = true;
					stopTimer();
					var xx = (_slideIndex * _width) * -1;
					$(_container).stop(true, true).animate({'left': xx}, 500, function(){
						$(_container).css('left', ((_slideIndex * _width) * -1));
						if(!$(_pagContainer).hasClass("is_hover")){
							stopTimer();
							startTimer();
						}
						_isRunning = false;
					});
					
					if(_slideIndex < 0){
						_slideIndex = _numOfSlides - 1;
					}
					if(_slideIndex > _numOfSlides - 1){
						_slideIndex = 0;
					}
					updatePagBtns();
				};
				
				var updatePagBtns = function(){
					$('.pag_btn').each(function(){
						if(parseFloat($(this).attr('id').split("_")[1]) == _slideIndex){
							$(this).addClass('active');
						}else if($(this).hasClass('active')){
							$(this).removeClass('active');
						}
					});
				};
				var goToNext = function(){
					if(_isRunning == true){
						return false;
					}
					_slideIndex++;
					if(_slideIndex > _numOfSlides){
						_slideIndex = 0;
					}
					slideToPagIndex();
				}
				var goToPrevious = function(){
					if(_isRunning == true){
						return false;
					}
					_slideIndex--;
					if(_slideIndex < -1){
						_slideIndex = _numOfSlides - 1;
					}
					slideToPagIndex();
				}
				var startTimer = function(){
					if(_autoSlide == true){
						_timer = setInterval(onTimerHandler, _delay);
					}
				}
				var onTimerHandler = function(){
					goToNext();
				}
				var stopTimer = function(){
					clearInterval(_timer);
				}
				
				startTimer();
            });
        }
    });
})(jQuery);

(function($){	
	$.fn.extend({
    		searchPag: function(options) {

        	var defaults = {
            	width: 304,
				rowWidth: 270,
				rowHeight: 50,
            	rows: 5,
				titleCopy: 'träffar'
			};
 
         	var options = $.extend(defaults, options);
 		
         	return this.each(function() {
			
            	var _container = $(this);
            	var _width = options.width;
            	var _rows = options.rows;
				var _rowWidth = options.rowWidth;
				var _rowHeight = options.rowHeight;
				var _numOfSlides = $(_container).find('.single_result').length;
				var _cols = Math.ceil(_numOfSlides / 5);
				var _titleCopy = options.titleCopy;
				
				$(_container).css('overflow', 'visible');
				$(_container).css('position', 'relative');
				$(_container).css('height', _rows * _rowHeight);
			
				var _xx = (_width - _rowWidth) / 2;
				var _yy = 0;
				var _rowCounter = 0;
				var _totalCounter = 0;
				
				$(_container).find(".single_result" ).each(function(){
					$(this).css({position:"absolute", left:_xx, top: _yy, margin:0});
					_yy+=_rowHeight;
					_rowCounter++;
					_totalCounter++;
					if(_rowCounter >= _rows || _totalCounter == _numOfSlides){
						$(this).addClass('last');
					}
					if(_rowCounter >= _rows){
						_rowCounter = 0;
						_yy = 0;
						_xx += _width;
					}
				});
				
				
				/*update num of products in cat*/
				$(_container).parent().find('.category span').text(_numOfSlides);
				
				/*pagination*/
				if(_cols == 0){
					_cols = 1;
				}
				var _pagContainer = $('<div class="global_search_pag"></div>');
				var leftVal = (_width *.5) - (((_cols * 20) - 4) *.5);
				$(_pagContainer).css({position:"absolute", left:leftVal, bottom: 38});
				
				$(_container).parent().append(_pagContainer);
				
				for(var i = 0; i < _cols; i++){
					createPagButton(i);
				}
				
				function createPagButton(index){
					var btn_id = 'b' + Math.floor(Math.random() * 100) + '_' + index;
					var pagBtn = $('<a class="pag_btn"></a>').attr('id', btn_id);
					var xpos = index * 20;
					$(pagBtn).css({position:"absolute", left:xpos});
					if(index == 0){
						$(pagBtn).addClass('selected');
					}
					$(_pagContainer).append(pagBtn);
					$(pagBtn).click(function(){
						var _clickedID = parseInt($(this).attr('id').split("_")[1]);
						slideTo(_clickedID);
						
						$(_pagContainer).find('.pag_btn').each(function(){
							$(this).removeClass('selected');
						});
						
						$(this).addClass('selected');
					});
				}
				
				function slideTo(index){
					var xValue = index * _width;
					$(_container).stop(true, true).animate({'left': -xValue}, 350);
				}
				
         	});
 		}
 	});
})(jQuery);
