/*----------------
 WIGGLE SLIDE v1.0
 By Jordan Boesch
 www.boedesign.com
-----------------*/
/*
jQuery.log = function(message) {
  if(window.console) {
     console.debug(message);
  } else {
     alert(message);
  }
};
*/

jQuery.wiggleSlide = function(opt) {
	
        // get the options
        var sliderNav = opt.sliderNav; 
        var sliderClickLink = opt.sliderClickLink; 
        var hiddenContainer = opt.hiddenContainer;
        var sliderItemClassName = opt.sliderItemClassName; 
        var swingSpeed = opt.swingSpeed; 
        var wiggle = opt.wiggle;
        var permalinking = opt.permalinking;
       
        // defaults
        if(sliderNav == null || sliderNav == '') sliderNav = '#slider-nav';
        if(sliderClickLink == null || sliderClickLink == '') sliderClickLink = 'a';
        if(hiddenContainer == null || hiddenContainer == '') hiddenContainer = '#invis-cont';
        if(sliderItemClassName == null || sliderItemClassName == '') sliderItemClassName = 'slider-item';
        if(swingSpeed == null || swingSpeed == '') swingSpeed = "medium";
        if(wiggle == null || wiggle == '') wiggle = true;
        if((permalinking == null || permalinking == '') && permalinking != false){
            (sliderClickLink == 'a') ? permalinking = true : permalinking = false;
        }
		
        // don't touch below this line unless you are a true john resig
        var sliderItemWidth = getSliderWidth(sliderItemClassName);
        var sliderContainerWidth = (sliderItemWidth) * $("."+sliderItemClassName).length;
      	$(hiddenContainer).css('width',sliderContainerWidth);

        var relTitle;
        (sliderClickLink == 'a') ? relTitle = 'rel' : relTitle = 'title';
       
        // if they've entered something into the #, they want to see something specific
        if(window.location.hash && permalinking){
       
            var a = window.location.hash.slice(1);
            var countLink = 0;
           
            $("."+sliderItemClassName).each(function(){
                    countLink++;									
                    if($(this).attr('id') == 'slider-'+a){
                        var sliderContStart = (sliderItemWidth) * countLink - sliderItemWidth;
                        $(hiddenContainer).css('left',-sliderContStart+'px');	
                    }
                });
           
        }
	   
        // lets calculate the padding/margin offsets (if applicable)
        function getSliderWidth(sliderItemClassName){
           
            var sliderClass = $("."+sliderItemClassName);
            var sliderClassWidth = parseInt(sliderClass.width());
            var paddingLeft = sliderClass.css('padding-left').split('px')[0];
            var paddingRight = sliderClass.css('padding-right').split('px')[0];
            var marginLeft = sliderClass.css('margin-left');
            var marginRight = sliderClass.css('margin-right');
           
            // IE6/7 are silly about this
            (marginLeft == 'auto') ? marginLeft = 0 : marginRight = marginRight.split('px')[0];
            (marginRight == 'auto') ? marginRight = 0 : marginRight = marginRight.split('px')[0];
           
            var marginsPaddings = parseInt(marginLeft) + parseInt(marginRight) + parseInt(paddingLeft) + parseInt(paddingRight);
            var totalUp = marginsPaddings + sliderClassWidth;
            return totalUp;
           
        }
       
        function getSlidePos(slideId){
            
            var numberPos = 0;
            var ret;
            
            $("."+sliderItemClassName).each(function(){
                    numberPos++;
                    if($(this).attr('id') == slideId){
                        ret = numberPos;
                    }
                });
            
            return ret;
            
        }
        
        $(sliderNav+" "+sliderClickLink).each(function(){
                
                if(permalinking) $(this).attr('href','#'+$(this).attr('id'));
		
                $(this).click(function(){
			
                        var sliderId = $(this).attr('id');
                        var slidePosition = getSlidePos(sliderId);

                        // if they're on the current slide and they click it, don't move
                        var lastPos = $(hiddenContainer).css('left').split('px')[0];
                        newSlideNum = parseInt(slidePosition) * sliderItemWidth - sliderItemWidth;

                        var newPos = -newSlideNum;
                        $(hiddenContainer).animate({left: newPos+'px'},{duration: swingSpeed, easing: 'swing'});

                        $(this).parent().find('a').attr('class', '');
                        $(this).attr('class', 'selected');

                        if(!permalinking) return false;
			
                    });
            });
        
    };

