/**
 * Media Betzold Javascript core file
 *
 * @package     Betzold
 * @subpackage  Core
 * @author      Murat Purc <murat@purc.de>
 * @version     $Id: mb.js 8 2010-09-24 18:06:57Z Murat $
 */


/**
 * Media Betzold namespace
 * @namespace MB
 */
var MB = {}


/**
 * Treepodia products class
 *
 * @namespace MB
 * @class     TreepodiaProducts
 * @static
 */
MB.TreepodiaProducts = {

    _storeUuid:       "",
	_products:        {},
	_videoController: {},
	selectedProduct:  "",

	/**
	 * Saves store uuid
	 */
	setStoreUuid: function(storeUuid)
	{
		this._storeUuid = storeUuid;
	},

	/**
	 * Adds a product by it's product sku
	 */
    addProduct: function(productSku)
    {
        if (typeof(this._products[productSku]) == "undefined") {
        	this._products[productSku] = {};
        }
    },


	/**
	 * Adds a video controller, will be invoked by initTreepodia() function
	 */
    addVideoControllerByProductSku: function(productSku, videoController)
    {
        if (typeof(this._videoController[productSku]) == "undefined") {
        	this._videoController[productSku] = videoController;
        }
    },


	/**
	 * Returns video controller by it's assoziated product sku
	 */
    getVideoControllerByProductSku: function(productSku)
    {
        if (typeof(this._videoController[productSku]) == "undefined") {
        	return null;
        } else {
            return this._videoController[productSku];
        }
    },


	/**
	 * Loads a previous added product video by it's assoziated product sku.
	 *
	 * Note: Needs Treepodia object!
	 */
    loadProduct: function(productSku)
    {
		if (!this.getProduct(productSku)) {
			return;
		}
        if (typeof(Treepodia) !== "object") {
        	throw("Can't load product, missing Treepodia object");
        }

		this._products[productSku] = Treepodia.getProduct(this._storeUuid, productSku);
		this._products[productSku].requestVideo(function(videoController) {
			mb_videoHandlerCallback(videoController, productSku);
		});
    },


	/**
	 * Returns product by it's assoziated product sku
	 */
    getProduct: function(productSku)
    {
        if (typeof(this._products[productSku]) == "undefined") {
        	throw("Invalid product sku");
        }
        return this._products[productSku];
    },


    /**
	 * Returns all products
	 */
    getAllProducts: function()
    {
        return this._products;
    },


    /**
	 * Returns treepodia activator element id.
	 * Format is "treepodia_activator_{product_sku}"
	 */
    getActivatorId: function(productSku)
    {
		if (!this.getProduct(productSku)) {
			return;
		}
    	return "treepodia_activator_" + productSku;
    }
};

