(function($){
  $.fn.pager = function(options) {
    var defaults = {
     page : '.page',
     type : 'page_navigator',
     navigatorSibling : 'this'
    };
    var options = $.extend(defaults, options);

    return this.each(function() {
      var $this = $(this);      
      var $pages = $(options.page, $this);
      var currentPageNumber = 1;
      var numberOfPages = $pages.length;
      var $navigator = $('<div class="navigator"></div>');
      var $currentPage = null;
      var pageShiftInProgress = false;
      
      var $navigatorSibling = options.navigatorSibling == 'this' ? $this : $(options.navigatorSibling, $this);
      if($pages.length > 1){        
        $navigatorSibling.before($navigator);
      }
      
      var pageId = location.hash;
      if(pageId){
          var $selectedPages = $(pageId).show();
          $currentPage = $selectedPages.eq(0);
      }
      else{
          $currentPage = $pages.eq(0).show();
      }
      currentPageNumber = $pages.index($currentPage) + 1;   
     
    var $next = $('<a class="navigator_next" href="" title="Next"><span class="hidden">Next</span></a>');
    var $prev = $('<a class="navigator_previous" href="" title="Previous"><span class="hidden">Previous</span></a>');
    var $progress = $('<div class="progress">Bilete '+ currentPageNumber + ' ' + 'av ' + numberOfPages + '</div>');
    $navigator.append($prev).append($next).append($progress);    
    
    $next.bind('click',function(event){
        //$currentPage.stop();
        event.stopPropagation();
        event.preventDefault();
        if(currentPageNumber < numberOfPages && !pageShiftInProgress){
            pageShiftInProgress = true;
            currentPageNumber = currentPageNumber +1;
            $currentPage = $currentPage.fadeOut(250, function(){
               $(this).hide();
               $(this).next().fadeIn(250, function(){pageShiftInProgress = false;});
         
            }).next();
            $progress.text('Bilete ' + currentPageNumber + ' av ' + numberOfPages);
        }
    });
    $prev.bind('click', function(event){
      
        event.stopPropagation();
        event.preventDefault();
        if(currentPageNumber > 1 && !pageShiftInProgress){
            pageShiftInProgress = true;
            currentPageNumber = currentPageNumber - 1;
            $currentPage = $currentPage.fadeOut(250, function(){
              $(this).hide()
              $(this).prev().fadeIn(250, function(){pageShiftInProgress = false;})
            }).prev();
            $progress.text('Bilete ' + currentPageNumber + ' av ' + numberOfPages);
        }
    });
    });
 }
 
 
 $.fn.collapsible = function(options) {

    var defaults = {
        showText: "Vis alle",
        hideText: "Skjul alle"
    };

    var defaults_en = {
        showText: "Show all",
        hideText: "Hide all"
    };    

    //var options = $.extend(defaults, options);
    if ( $("#vfarea").attr('value') == "en") {
    	var options = $.extend(defaults_en, options);
    } else {
    	var options = $.extend(defaults, options);
    }    

    return this.each(function(index, el) {

        var text = $(el).hasClass("startHidden") ?
                options.showText : options.hideText;
        var button = $('<button class="linkButton toggler">' + text + '</button>');

        $(el).before(button);

        if ($(el).hasClass("startHidden")) {
            $(el).hide();
        }

        button.click(function (ev) {
            $(el).toggle();

            if ($(button).text() == options.showText) {
                $(button).text(options.hideText).addClass("expanded");
            } else {
                $(button).text(options.showText).removeClass("expanded");
            }
        });
    });
};



    $.fn.partCollapsibleList = function(options) {
    
        
        var defaults = {
            maximumItems: 3,
            tolerance: 0,
            showText: "Vis fleire",
            hideText: "Skjul"
        };

        var defaults_en = {
            maximumItems: 3,
            tolerance: 0,
            showText: "Show more",
            hideText: "Hide"
        }        
    
        //var options = $.extend(defaults, options);
        if ( $("#vfarea").attr('value') == "en") {
        	var options = $.extend(defaults_en, options);
        } else {
        	var options = $.extend(defaults, options);
        }
    
        return this.each(function(index, el) {

    
            var $listItems = $(el).children("li"),
                $toggleableItems,
                $button
                

			if ($listItems.length > (options.maximumItems + options.tolerance)) {
                $toggleableItems = $listItems.slice(options.maximumItems);
    
                $toggleableItems.hide();
                $button = $('<button class="linkButton">' +
                        options.showText + ' (' + $toggleableItems.length +')</button>');
                $button.insertBefore(
                        $toggleableItems.eq(0)).wrap('<li class="toggler"></li>');

                $button.click(function (ev) {
    
                    if ($button.text() == options.showText + ' (' + $toggleableItems.length +')') {
                        $toggleableItems.show();
                        $button.parent().addClass("expanded");
                        $button.text(options.hideText);
                    } else {
                        $toggleableItems.hide();
                        $button.parent().removeClass("expanded");
                        $button.text(options.showText + ' (' + $toggleableItems.length +')');
                    }
                });
            }
        });
    };
    
    
    
    /**
     * Makes a whole text block clickable with the same effect as clicking the
     * last link within it. Use for "read more"-style links.
     */
    $.fn.containerBlockLink = function(options) {
    
        var defaults = {
            hideLink: true        
        };
    
        var options = $.extend(defaults, options);
        
        var handleClick = function(ev) {
            document.location.assign(ev.data);
        };
    
        return this.each(function(index, el) {
    
            var $link = $(el).find("a:last"),
                url   = $link.attr("href");
    
            $(el).bind("click", url, handleClick);
            $(el).addClass("active");
            if (options.hideLink) {
                $link.addClass("accessibilityHidden");
            }
            $link.focus(function() { $(el).addClass("focus") });
            $link.blur(function() { $(el).removeClass("focus") });
        });
    };




 
})(jQuery);

$(document).ready(function(){
  $(".portal-content-decoration.slideshow").pager();  
  $(".expandable").partCollapsibleList();
});


