//pengag.ProduktvorschlagVideoGlobal = new Array();
//pengag.ProduktvorschlagVideoPacks = new Array();

pengag.createIfNotDefined(["pengag", "ProduktvorschlagVideoGlobal"], new Array());
pengag.createIfNotDefined(["pengag", "ProduktvorschlagVideoPacks"], new Array());
pengag.createIfNotDefined(["pengag", "v11"],{});

//if (typeof(pengag.v11) == "undefined")
//{
//	pengag.v11 = {};
//}

pengag.v11.CProduktvorschlagVideoPackage = function(homePath)
{

	var my = this;
	
	this.basePath = homePath;
	
	//Variables for direct access to the modules
	this.loader = null;
	this.videoPlayer = null;
	this.cubeDisplay = null;
	this.produktvorschlagSourceProvider = null;
	this.embedCodeGenerator = null;
	this.controls = null;
	
	//temporary variables to set after loadComplete
	this.youTubeUrl = "";
	this.stopWords = null;
	this.excludeStopWords = null;
	this.subId = null;
	
	//Connects VideoPlayer, Source and Display
	
	//Loads the CubeDisplay
	this.loadCube = function() 
	{
		//pengag.log("LOADING CUBE");
		var module = my.loader.createModule();
		module.moduleReady = my.loadProduktvorschlag;
		my.cubeDisplay = module;
		module.loadModule("ag.peng.advertisements.displays.Cube", 1, 1, "right");
	}
	
	//Loads the RecommenderSource
	this.loadProduktvorschlag = function()
	{
		//pengag.log("LOADING SOURCE");
		var module = my.loader.createModule();
		module.moduleReady = my.loadVideo;
		my.produktvorschlagSourceProvider = module;
		module.loadModule("ag.peng.advertisements.sources.produktvorschlag.ProduktvorschlagSourceProvider", 1, 1, "right");
	}
	
	//Loads the YouTubePlayer
	this.loadVideo = function()
	{
		//StopWords string to array
		//pengag.log("Set stopwords");
		//pengag.log(my.stopWords);

		var a = my.stopWords.split(",");
		//pengag.log(a);
		for(var i = 0; i<a.length; i++)
		{
			//pengag.log(a[i]);
			my.produktvorschlagSourceProvider.callFunction("addStopWord",a[i]);
		}
		
		//Remove excludedStopWords
		//pengag.log("Remove stopwords");
		//pengag.log(my.excludeStopWords);
		
		var b = my.excludeStopWords.split(",");
		//pengag.log(b);
		for(var i = 0; i<b.length; i++)
		{
			//pengag.log(b[i]);
			my.produktvorschlagSourceProvider.callFunction("removeStopWord",b[i]);
		}
		
		if(my.subId != "")
		{
			my.produktvorschlagSourceProvider.callFunction("setSubId", my.subId);
		}
		
		//configure Recommender
		//done by connect and default values at the moment
		//pengag.log("LOADING PLAYER");
		var module = my.loader.createModule();
		module.moduleReady = my.loadControls;
		my.videoPlayer = module;
		module.loadModule("ag.peng.video.YouTubePlayer", 1, 1);
	}
	
	this.loadControls = function()
	{
		var module = my.loader.createModule();
		module.moduleReady = my.loadEmbedCodeGenerator;
		my.controls = module;
		module.loadModule("ag.peng.video.Controls", 1, 1, "bottom");
	}
	
	
	this.loadEmbedCodeGenerator = function()
	{
		//pengag.log("LOAD EMBEDCODE");
		var module = my.loader.createModule();
		module.moduleReady = my.connect;
		my.embedCodeGenerator = module;
		module.loadModule("ag.peng.core.StandardEmbedCodeGenerator", 1, 0);
	}
	
	this.connect = function()
	{
		//pengag.log("CONNECTING...");
		//Recommender to YouTubePlayer for stopwords
		my.produktvorschlagSourceProvider.callFunction("connect", my.videoPlayer.pengId);
		//Cube to Recommender for display
		my.cubeDisplay.callFunction("connect", my.produktvorschlagSourceProvider.pengId);
		
		//Controls to YouTubePlayer
		my.controls.callFunction("connect", my.videoPlayer.pengId);
		
		//EmbedCodeGenerator to YouTubePlayer
		my.embedCodeGenerator.callFunction("connect", my.videoPlayer.pengId);
		my.internalLoadComplete();
	}
	
	this.internalLoadComplete = function()
	{
		//pengag.log("COMPLETE");
		my.videoPlayer.callFunction('loadVideo', my.youTubeUrl);
		my.loadComplete();
	}
	
	this.loadComplete = function ()
	{
		
	}
}

pengag.v11.CProduktvorschlagVideoPackage.targetContext = "core20";
pengag.v11.CProduktvorschlagVideoPackage.targetPrefix = "v2.0";
pengag.v11.CProduktvorschlagVideoPackage.targetSuffix = "-2.0";

/**
 * Loads the PengLoader.swf form the swfUrl into the HTML Element with the specified ID. Aditionally loads
 * the YouTubePlayer and the Recommender Module. You can access the loader, player and Recommender through the
 * returned object. They are accessible when the loadComplete function of this object is called.
 */
pengag.v11.CProduktvorschlagVideoPackage.loadProduktvorschlagVideoPackage = function (id, width, height, version, basePath, youTubeUrl, skinName, stopWords, excludeStopWords, subId, alternativeContent, loadComplete)
{
	//pengag.log("LOADING VIDEOADSPACK");
	var loader = new pengag.core20.CPengLoader(basePath);
	var pack = new pengag.v11.CProduktvorschlagVideoPackage(basePath);
	pack.loader = loader;
	pack.youTubeUrl = youTubeUrl;
	if((typeof loadComplete)!="undefined")
	{
		pack.loadComplete = loadComplete;
	}
	//pengag.log(stopWord);
	
	pack.stopWords = stopWords;
	pack.excludeStopWords = excludeStopWords;
	pack.subId = subId;
	
	//create versionInfo
	var packageInfoTmp =
	[
		"package", "ProduktvorschlagVideoPackage",
		"majorVersion", "1",
		"minorVersion", "1",
		"youTubeUrl", youTubeUrl,
		"stopWords", stopWords,
		"excludeStopWords", excludeStopWords,
		"subId", subId
	]
	var versionInfo = 
	{
		basePath      : basePath,
		versionPrefix : pengag.core20.versionPrefix,
		versionSuffix : pengag.core20.versionSuffix,
		width         : width,
		height		  : height,
		alternative   : alternativeContent,
		packageInfo   : packageInfoTmp,
		skinName	  : skinName
	}
	loader.versionInfoObject = versionInfo;
	
	//pengag.log("ALTERNATIVE >>>>>>>>>>>>>> " + alternativeContent);
	
	pengag.ProduktvorschlagVideoPacks.push(pack);
	pengag.ProduktvorschlagVideoGlobal.push(loader);
	//pengag.log(window.pengag.ProduktvorschlagVideoGlobal);
	//pengag.log(pengag.ProduktvorschlagVideoGlobal);
	loader.clientObject = "pengag.ProduktvorschlagVideoGlobal[" + (pengag.ProduktvorschlagVideoGlobal.length - 1) + "]";
	loader.loaderReady = pack.loadCube;
	//pengag.log("initPeng");
	loader.initPeng(id, width, height, version, basePath + pengag.core20.versionPrefix + skinName + ".swf");
	
	return pack;
}

pengag.v11.CProduktvorschlagVideoPackage.loadFromPengConfig = function (configElement)
{
	var spaceId = configElement.id;
	var alternative = $('p', configElement).html();
	var width = $('div.width', configElement).text();
	var height = $('div.height', configElement).text();
	var youTubeUrl = $('div.youTubeUrl', configElement).text();
	var skinName = $('div.skinName', configElement).text();
	var stopWords = $('div.stopWords', configElement).text();
	var excludeStopWords = $('div.excludeStopWords', configElement).text();
	var subId = $('div.subId', configElement).text();
	var skinName = $('div.skinName', configElement).text();
//	pengag.log("SUBID");
//	pengag.log(subId);
	
	var homePath;
	var homePathDiv = $('div.homePath', configElement).text();
	if(homePathDiv == "")
	{
		homePath = pengag.basePath;
	}
	else
	{
		homePath = homePathDiv;
	}
	
	pengag.log("USING PATH " + homePath);
	
	
	//pengag.log(stopWord);
	
	if(spaceId != "" && width != "" && height != "" && youTubeUrl != "")
	{
		//pengag.log("PARSED");
		pengag.v11.CProduktvorschlagVideoPackage.loadProduktvorschlagVideoPackage(
			spaceId, 
			width, 
			height, 
			"10.0.0",
			homePath,
			youTubeUrl,
			skinName,
			stopWords,
			excludeStopWords,
			subId,
			alternative);
	}
	else
	{
		//pengag.log("NOT PARSED");
	}
}