/*
 * @author: Christian Trabold
 * @author: Jens Hoffmann
 *  
 */
				 
var swfObjectLoader = {
	
	css_selector: ".swfobject-vars-json",
	css_swfclass: ".flashplayerJson",
	so: "", // Flash Object
		
	
	init: function() {
		this.getAllPlayer();
	},
	
	getSinglePlayer: function(domHook) {
		var objContainer = $ES(this.css_selector, domHook);
		objContainer.each(function(obj){
			// Turn Fallback off
				obj.getPrevious().setStyle('display','none');
			// Get Vars from JSON DIV
				this.getTextContent(obj);
		}.bind(this));
	},

	getAllPlayer: function() {
		var objContainer = $$(this.css_selector);
		objContainer.each(function(obj){
			// Turn Fallback off
				obj.getPrevious().setStyle('display','none');
			// Get Vars from JSON DIV
				this.getTextContent(obj);
		}.bind(this));
	},

	getTextContent: function(domObj) {
		var objContentJson = Json.evaluate(domObj.innerHTML, 1);
		this.procSWFArrayFlat(objContentJson.swfobject);
	},
	
	procSWFArrayFlat: function(jsonObj){
		
		var value 		= "";

		var mainPlayer 	= "";
		var mainID 		= "";
		var mainWidth 	= "";
		var mainHeight 	= "";
		var mainVersion = "";
		var mainBG 		= "";		
		
		for (var objType in jsonObj) {
			var objArryLength = jsonObj[objType].length;
			if (objArryLength !== 0) { // If nothing is in the Set, skip it now!
				for (var Parameter in jsonObj[objType]) {
					value = jsonObj[objType][Parameter];
					if ( objType == "main" ) {
						if (Parameter !== "done") { // true if all Params are loaded, create "main" SWFobject
							if (Parameter == "file")    { mainPlayer  = value; }
							if (Parameter == "id")      { mainID      = value; }
							if (Parameter == "width")   { mainWidth   = value; }
							if (Parameter == "height")  { mainHeight  = value; }
							if (Parameter == "version") { mainVersion = value; }
							if (Parameter == "bgcolor") { mainBG 	  = value; }
						} else {
							this.setSWFobject( "main", "", "", mainPlayer, mainID, mainWidth, mainHeight, mainVersion, mainBG );
						}
					} else {
						// Use this all set Funcs.
						this.setSWFobject( objType, Parameter, value, "", "", "", "", "", "" );
					}				
				}
			}
		}
	},
	
	/* Other way to parse JSON with [] inside
		procSWFArrayHTML: function(jsonObj){
			jsonObj.each(function(obj, index){
				for (var objType in obj) {
					obj[objType].each(function(objectValue){
						for (var Parameter in jsonObj) {
							console.log('objType: %o Parameter: %o => %o', objType, Parameter, jsonObj[Parameter]);
						}
					});
				}
			}.bind(this));
		},
	*/
	
	setSWFobject: function(objType, parameter, value, mainPlayer, mainID, mainWidth, mainHeight, mainVersion, mainBG) {
		
		// Fix TYPO3 CheckBox True/False(1/0"") Bug
		if (value == "1" && (
			parameter !== "width" 		  ||
			parameter !== "height" 		  ||
			parameter !== "displaywidth"  ||
			parameter !== "displayheight" ||
			parameter !== "volume" 		  ||
			parameter !== "bufferlength"  ||
			parameter !== "rotatetime" 	  ||
			parameter !== "start")
		) {
			value = "true";
		}
		if (value == "0" && (
			parameter !== "width" 		  ||
			parameter !== "height" 		  ||
			parameter !== "displaywidth"  ||
			parameter !== "displayheight" ||
			parameter !== "volume" 		  ||
			parameter !== "bufferlength"  ||
			parameter !== "rotatetime" 	  ||
			parameter !== "start")
		) {
			value = "false";
		}

		// Create / Setup SWFobject
		switch (objType) {
			case "main": 
				this.so = new SWFObject(mainPlayer, mainID, mainWidth, mainHeight, mainVersion, mainBG);
				break;
			case "addParam":
				this.so.addParam(parameter, value);
				break;
			case "addVariable":
				this.so.addVariable(parameter, value);
				if (parameter == "type" && value == "swf") { 
					// Remove the Fallback-IMG if the PlayerModeType is SWF
					this.so.addVariable('image', '');
				}
				break;
			case "useExpressInstall":
				this.so.useExpressInstall(parameter, value);
				break;
			case "setAttribute":
				this.so.setAttribute(parameter, value);
				break;
			case "target":
				this.so.write(value);
				break;
    		default:
    			console.log("DEV ERROR: check objType value!");
    			break;
		}
	}
	
};
