/**
 * @author msandow
 * 
 *
$('.slider').advancedSlider({
	hotSpots: new Array(10,10,50,130),
	targets: '.box'
}); 
 *
 */
$.fn.advancedSlider = function(options){

    var slider = new Object();
    slider.defaults = {
		'hotSpots':null,
		'manualRight':null,
		'manualLeft':null,
		'targets':'div'
	};
    $.extend(slider.defaults, options);
    
    slider.targets = $(this).find(slider.defaults.targets);
    slider.all = jQuery.makeArray($(slider.targets));
    slider.windowHeight = $(this).height();
    slider.windowWidth = $(this).width();
    slider.window = $('<div></div>').css({
        'position': 'relative',
        'width': slider.windowWidth + 'px',
        'height': slider.windowHeight + 'px',
        'padding': '0px',
        'marging': '0px',
        'overflow': 'hidden'
    });
    slider.list = $('<div></div>').css({
        'position': 'relative',
        'width': '5000px',
        'height': slider.windowHeight + 'px',
        'padding': '0px',
        'marging': '0px'
    }).attr('class', 'list');
    $(this).wrapInner(slider.list);
    $(this).wrapInner(slider.window);
    $(slider.all).sequentialLoad('fadeIn', 350);
    
	if (slider.defaults.manualRight == null) {
		slider.leftSpot = $('<div></div>').css({
			'position': 'absolute',
			'top': slider.defaults.hotSpots[1] + 'px',
			'left': slider.defaults.hotSpots[0] + 'px',
			'width': slider.defaults.hotSpots[2] + 'px',
			'height': slider.defaults.hotSpots[3] + 'px',
			'cursor': 'pointer'
		}).appendTo(this);
		slider.rightSpot = $('<div></div>').css({
			'position': 'absolute',
			'top': slider.defaults.hotSpots[1] + 'px',
			'right': slider.defaults.hotSpots[0] + 'px',
			'width': slider.defaults.hotSpots[2] + 'px',
			'height': slider.defaults.hotSpots[3] + 'px',
			'cursor': 'pointer'
		}).appendTo(this);
	}else{
		slider.leftSpot = $(slider.defaults.manualLeft);
		slider.rightSpot = $(slider.defaults.manualRight);
		$(slider.leftSpot).css('cursor','pointer').appendTo(this);
		$(slider.rightSpot).css('cursor','pointer').appendTo(this);
	}
    
    slider.targetCount = Number($(slider.all).length);
    if($(slider.all[0]).css('margin-right') == 'auto'){
        $(slider.all[0]).css('margin-right','0px');
    }
    slider.targetWidth = Number($(slider.all[0]).outerWidth() + parseFloat($(slider.all[0]).css('margin-right')));
    slider.targetArea = Number((slider.targetWidth * slider.targetCount) - slider.windowWidth);
    
    slider.list = $(this).find('.list');
    slider.currentMove = 0;
    
    $(slider.rightSpot).bind('mouseenter', function(){
        if (slider.currentMove <= slider.targetArea) {
            $.moveRight = function(){
                $(slider.list).animate({
                    marginLeft: "-=3px"
                }, 10, function(){
                    slider.currentMove = slider.currentMove + 3;
                    if (slider.currentMove <= slider.targetArea) {
                        $.moveRight();
                    }
                });
            }
            $.moveRight();
			$(this).trigger('sliding');
        }
    });
    
    $(slider.rightSpot).bind('mouseleave', function(){
        $(slider.list).stop();
    });
    
    $(slider.leftSpot).bind('mouseenter', function(){
        if (slider.currentMove > 0) {
            $.moveRight = function(){
                $(slider.list).animate({
                    marginLeft: "+=3px"
                }, 10, function(){
                    slider.currentMove = slider.currentMove - 3;
                    if (slider.currentMove > 0) {
                        $.moveRight();
                    }
                });
            }
            $.moveRight();
        }
    });
    
    $(slider.leftSpot).bind('mouseleave', function(){
        $(slider.list).stop();
    });
    
}

