$(function() {
    $.ECHO.featured = {};
    $.ECHO.featured.interval = 10;
    $.ECHO.featured.images = null;
    $.ECHO.featured.selected = null;
    
    
    $.ECHO.featured.stripPx = function(str) {
        if (typeof str == 'string' && str.length > 2) {
            str = str.substring(0, str.length - 2);
        }
        
    	return str;
    };
    
    $.ECHO.featured.move = function(el, distance) {
    	var margin = Number($.ECHO.featured.stripPx(el.css('margin-left')));
    	var offset = margin + distance;
    	el.stop();
    	el.animate({
    		marginLeft:offset
    	}, 500);
    };
    
    $.ECHO.featured.initIcon = function(images, amount) {
    	var speed = "normal";
    	var selected = 'selected';
    	
    	$(images).each(function(i, n) {
    		$(n).fadeTo(speed, amount);
    		$(n).click(function() {
    			$(images).each (function(k, v) {
    				if ($(v).attr(selected) != undefined && 
    					$(v).attr(selected) == selected) {
    					
    					$(v).removeAttr(selected);
    					$(v).mouseout();
    				}
    			});
    			$(n).attr(selected, selected);
    			$.ECHO.featured.selected.i = i;
    			$.ECHO.featured.selected.img = $($.ECHO.featured.images[i]);
			    
                $('div.hidden').each(function(k, value) {
                    if ($(value).css('display') != 'none') {
                        $(value).hide();
                    }
                });
			    
			    $('div.' + $(n).attr('name')).fadeIn('slow');
    		}).mouseover(function() {
    			$(this).fadeTo(speed, 1);
    		}).mouseout(function() {
    			if ($(this).attr(selected) != selected) {
    				$(this).fadeTo(speed, amount);
    			}
    		});
    	});
    };
    
    $.ECHO.featured.isShowing = function(el, container) {
    	var offset = container.offset();
    	var elLeft = el.offset().left;
    	
    	var left = offset.left;
    	var right = offset.left + container.width();
    	
    	if ((elLeft - (el.width()/2)) < left) {
    		return -1;
    	} else if ((elLeft + (el.width()/2)) > right) {
    		return 1;
    	}
    	
    	return 0;
    };
    
    $.ECHO.featured.arrowAction = function(offset) {
       	var container = $('#companyselector div.container');
       	var moveable = $('#companyselector div.container div.moveable');
        var i = $.ECHO.featured.selected.i + offset;
    	var futureSelected = $($.ECHO.featured.images[i]);
		
		var showing = $.ECHO.featured.isShowing(futureSelected, container);
		if (showing != 0) {
			var distance = 0;
			if (showing < 0) {
				distance = container.offset().left - futureSelected.offset().left;
			} else if (showing > 0) {
				distance = (container.offset().left + container.width()) - 
						   (futureSelected.offset().left + futureSelected.width());
			}
			
			$.ECHO.featured.move(moveable, distance);
		}
    	
  		futureSelected.mouseover();
		futureSelected.click();
    };
    
    $.ECHO.featured.init = function() {
    	var container = $('#companyselector div.container');
    	var moveable = $('#companyselector div.container div.moveable');
    	var larrow = $('#companyselector div.left');
    	var rarrow = $('#companyselector div.right');
    	
    	$.ECHO.featured.images = moveable.children('img');
    	$.ECHO.featured.initIcon($.ECHO.featured.images, .5);

    	var arrowWeight = $($.ECHO.featured.images[0]).width();
    	arrowWeight += Number($.ECHO.featured.stripPx(container.css('padding-left')));
		
    	$([larrow, rarrow]).each(function(i, n) {
    		$(this).mouseover(function() {
    			$(this).css('cursor', 'pointer');
    		}).mouseout(function() {
    			$(this).css('cursor', 'none');
    		});
    	});
    	
    	larrow.click(function() {
    		if ($.ECHO.featured.selected.i > 0) {
    			$.ECHO.featured.arrowAction(-1);
    		} else {
    		    $.ECHO.featured.arrowAction($.ECHO.featured.images.length - 1);
    		}
		});
    	
    	rarrow.click(function() {
    		if ($.ECHO.featured.selected.i < $.ECHO.featured.images.length - 1) {
    			$.ECHO.featured.arrowAction(1);
    		} else {
    			$.ECHO.featured.arrowAction(-1 * ($.ECHO.featured.images.length - 1));
    		}
    	});
    }();
    
    $.ECHO.featured.initRotation = function() {
   		$.ECHO.featured.selected = {i:0, img:$($.ECHO.featured.images[0])};
    	
    	$.timer($.ECHO.featured.interval * 1000, function(timer) {
    		$('#companyselector div.right').click();
    	});
    	
		$.ECHO.featured.selected.img.click();
		$.ECHO.featured.selected.img.mouseover();
    }();
});