var ProductRotator = function () {
        var self = this;
	//var video = false;
	self.v = {ani: {duration:600} };
	self.el = {};
	self.products = [];
	//
	// Product
	self.Product = function (name, thumb, content) {
	    var product = this;
	    //
	    // Init
	    product.init = function (name, thumb, content) {
		product.name = name;
		product.thumb = thumb;
		product.content = content;
		return product;
	    };
	    return product.init(name, thumb, content);
	};
	self.addProduct = function (name, thumb, content) {
	    var product = new self.Product(name, thumb, content);
	    self.products.push(product);
	    return self;
	};
	self.getNext = function(i) {
	    if (++i >= self.products.length) {
		return 0;
	    } else {
		return i;
	    }
	};
	self.getPrev = function(i) {
	    if (--i < 0) {
		return self.products.length - 1;
	    } else {
		return i;
	    }
	};
	// Updated with video plaer
	self.setHero = function(i) {
		var product = self.products[i];
	    
		var productEl = jQuery(self.el.heroContainer).html(product.content);
		return productEl;
	};
	self.setLeft = function(i) {
	    var product = self.products[i];
	    var productEl = jQuery('<img/>')
		.attr('src', product.thumb)
		.appendTo(self.el.leftContainer)
		.click(function(){ self.goTo(i, -1) });
	    return productEl;
	};
	self.setRight = function(i) {
	    var product = self.products[i];
	    var productEl = jQuery('<img/>')
		.attr('src', product.thumb)
		.appendTo(self.el.rightContainer)
		.click(function(){ self.goTo(i, 1) });
	    return productEl;
	};
	self.goTo = function(i, dir) {
	    // hero
	    self.el.heroContainer.find('img, div').empty();
	    self.setHero(i).hide().fadeIn('slow');
	    
	    self.el.leftContainer.find('img')
		.animate({
		    'left': -30*dir,
		    'opacity': 0
		}, {
		    duration: self.v.ani.duration,
		    complete: function(){ jQuery(this).remove(); }
		});
	    self.setLeft(self.getPrev(i))
		.css({
		    'left': 30*dir,
		    'opacity': 0
		})
		.animate({
		    'left': 0,
		    'opacity': 1
		}, {
		    duration: self.v.ani.duration
		});
	    // right
	    self.el.rightContainer.find('img')
		.animate({
		    'right': 30*dir,
		    'opacity': 0
		}, {
		    duration: self.v.ani.duration,
		    complete: function(){ jQuery(this).remove(); }
		});
	    self.setRight(self.getNext(i))
		.css({
		    'right': -30*dir,
		    'opacity': 0
		})
		.animate({
		    'right': 0,
		    'opacity': 1
		}, {
		    duration: self.v.ani.duration
		});
	};
	//
	// Start
	self.start = function(){
	    self.setHero(0).hide().fadeIn('slow');
	    self.setLeft(self.getPrev(0)).hide().fadeIn('slow');
	    self.setRight(self.getNext(0)).hide().fadeIn('slow');
	    return self;
	};
	//
	// Init
	self.init = function(){
	    self.el.leftContainer = jQuery('#leftContainer');
	    self.el.rightContainer = jQuery('#rightContainer');
	    self.el.leftForeground = jQuery('#leftForeground');
	    self.el.rightForeground = jQuery('#rightForeground');
	    self.el.heroContainer = jQuery('#heroContainer');
	    self.el.productRotator = jQuery('#productRotator');
	    return self;
	};
	return self.init();
    };
