/*
 * jQuery HeySlider Plugin 1.0
 * www.heydays.no
 * Copyright 2011, HEYDAYS
 * Needs imagesize.js-plugin
*/


(function($) {

    $.fn.heySlider = function(options) {
    
    	var defaults = {
    		speed	:	400,
    		prevBut	:	'',
    		nextBut	:	'',
    		address	:	true,
    		onChange: function(returnObject){},
    		onInit: function(returnObject){}
    	}
    	
    	var options = $.extend(defaults, options);
    	var firstRun = true;
    	
    	return this.each(function() {
    		
    		var heySlider = $(this).addClass('heySlider');
    		var slider = heySlider.find('.heySlider-ul');
    		var slides = heySlider.find('.heySlider-li');
    		
    		var curSlideNum = 0;
    		var totalSlideNum = slides.length;
    		
    		var addressEnabled = false;
    		if ($.address && defaults.address) addressEnabled = true;
    		
    		$.address.change(function(event){
    			// GÅR TIL FØRSTE SIDE -> PREVENT
				curSlideNum = (event.pathNames[0]) ? $('#slideshow-slide-'+event.pathNames[0]).index() : 0;
				gotoSlide();
			});
    		
    		if (!totalSlideNum){
    			defaults.onInit(false);
    			return false;
    		}
    		
    		$(defaults.prevBut).click(function(){
    			curSlideNum--;
    			setSlideAddress();
    			return false;
    		});
    		
    		$(defaults.nextBut).click(function(){
    			curSlideNum++;
    			setSlideAddress();
    			return false;
    		});
    		
    		function setSlideAddress(){
				if (curSlideNum>=totalSlideNum) {
					curSlideNum = 0;
				}else if (curSlideNum<0){
					curSlideNum = totalSlideNum-1;
				}
				
				var idstring = slides.eq(curSlideNum).attr("id");
				idstring = idstring.replace("slideshow-slide-","");
				
				if (addressEnabled) {
    				$.address.value('/'+idstring);
    			}else{
    				gotoSlide();
    			}
    		}
    		
    		function gotoSlide(noAnim) {
    			
    			var newPos = -(curSlideNum*heySlider.width());
    			if (firstRun) {
    				slider.css({ left:newPos });
    				firstRun = false;
    			}else{
    				slider.animate({ left:newPos },{transition:options.speed,queue:false});
    			}
    			
				defaults.onChange({
					num 	:	curSlideNum,
					count	:	(parseInt(curSlideNum)+1)+'/'+(totalSlideNum),
					item	:	$(slides).eq(curSlideNum),
					success	:	true
				});
    			
    		}
    		
    		// public functions
    		
    		$.fn.resize = function(sWidth, sHeight){
    			heySlider.width(sWidth).height(sHeight);
				slides.width(sWidth).height(sHeight);
				slides.find('.heySlider-img').imageResize({width:sWidth, height:sHeight});
				slider.width(sWidth*totalSlideNum).css({left:-(sWidth*curSlideNum)});
    		}
    		
    		$.fn.prevSlide = function(){
    			curSlideNum--;
    			setSlideAddress();
    		}
    		$.fn.nextSlide = function(){
    			curSlideNum++;
    			setSlideAddress();
    		}
    		
    		$.fn.goToSlide = function(num){
    			curSlideNum = num;
    			setSlideAddress();
    		}
    		
    		// init
    		
    		//setSlideAddress();
    		options.onInit({
    			success	:	true
			});
    		
    	});	
    };
})(jQuery);
