/*
 * Slider v1.1.1
 * http://www.i2mago.com/
 * Copyright (c) 2009 Daniel Lai
 * Dual licensed under the MIT and GPL licenses.
 * Date: 2009-06-16 22:49:21 +0800 (Tue, 16 Jun 2009)
 */
(function($){
    $.fn.slider = function(vars) {
        var element     = this;
        var timeOut     = (vars.timeOut != undefined) ? vars.timeOut : 4000;
		var effect      = (vars.effect != undefined) ? vars.effect : 'fadeIn';
        var speed       = (vars.speed != undefined) ? vars.speed : 500;
        var cssClass    = (vars.cssClass != undefined) ? vars.cssClass : 'slider';
        var current     = 0;
        var timeOutFn   = null;
        var box			= null;
        var items 		= new Array();
        var itemsSpan 	= new Array();
        var itemsLink 	= new Array();
        
        $(element[0]).find('li').each(function(i) {
            items[i]        = $(this).find('img').attr('src');
            itemsSpan[i]    = $(this).find('span').html();
            itemsLink[i]    = $(this).find('a').attr('href');
        });
        
        var makeSlider = function(vars) {
            var prev;
            if (vars != undefined) {
                if (vars.current != undefined) current = vars.current;
                prev = (vars.prev != undefined) ? vars.prev : current++;
            }
            else {
                prev = current++;
            }

            if (current >= items.length) current = 0;
            var photoDiv = box.find('.' + cssClass + 'Photo');
            box.find('.' + cssClass + 'PrevPhoto').html(photoDiv.html());
            photoDiv.hide();
            photoDiv.find('img').attr('src', items[current]).attr('alt', itemsSpan[current]);
            box.find('.' + cssClass + 'Title span').html(itemsSpan[current]);
            box.find('a').attr('href', itemsLink[current]);
            box.find('a').attr('title', itemsSpan[current]);
			
			var e = effect;
			if (e == 'random') {
				var effects = new Array('slideDown', 'slideRight', 'slideDownRight', 'fadeIn');
				e = effects[rand(0, 3)];
			}
			switch(e)
			{
				case 'slideDown':
					photoDiv.slideDown(speed);
					break;
				case 'slideRight':
					photoDiv.animate({width: 'show'}, speed);
					break;
				case 'slideDownRight':
					photoDiv.animate({width: 'show', height: 'show'}, speed);
					break;
				default:
					photoDiv.fadeIn(speed);
					break;
			}
			
            
            var navs = box.find('.' + cssClass + 'Nav span');
            $(navs[prev]).removeClass(cssClass + 'NavCurr');
            $(navs[current]).addClass(cssClass + 'NavCurr');
        }
        
        if (items.length > 0) {
            box = $('<div class="' + cssClass + '"><div class="' + cssClass + 'PrevPhoto"></div><div class="' + cssClass + 'Photo"><a href="' + itemsLink[0] + '" title="' + itemsSpan[0] + '"><img src="' + items[0] + '" alt="' + itemsSpan[0] + '" /></a></div><div class="' + cssClass + 'Title"><a href="' + itemsLink[0] + '" title="' + itemsSpan[0] + '"><span>' + itemsSpan[0] + '</span></a></div></div>'
                ).mouseover(function() {
                    clearInterval(timeOutFn);
				}).mouseout(function() {
                    timeOutFn = setInterval(makeSlider, timeOut);
                }).appendTo($(element[0]));
            var sliderNav = $('<div class="' + cssClass + 'Nav"></div>');
            $('<span class="' + cssClass + 'NavCurr">1</span>').click(function() {
                    makeSlider({prev: current, current: items.length});
                }).appendTo(sliderNav);
            for (var i = 2; i <= items.length; i++) {
                '<span>' + i + '</span>'
                $('<span>' + i + '</span>').click(function() {
                        makeSlider({prev: current, current: ($(this).html() * 1 - 1)});
                    }).appendTo(sliderNav);
            }
            sliderNav.appendTo(box);
            $(element[0]).find('ul').hide();
            timeOutFn = setInterval(makeSlider, timeOut);
        }
		
		function rand(l, u) {
	 		return Math.floor((Math.random() * (u - l + 1)) + l);
		}
    }
})(jQuery);