/**
 * media_server.js - Flash : Javascript Companion Library
 * @version 1.1.1
 * @author jason m horwitz | sekati.com
 * Copyright (C) 2009  jason m horwitz, Sekat LLC. All Rights Reserved.
 * Released under the MIT License: http://www.opensource.org/licenses/mit-license.php
 */
 
if (typeof sekati == "undefined") var sekati = new Object();

sekati.external = {  
	
	// HELPERS
		
	ready: false,
	
	logCount : 0,
	
	init: function() {
		sekati.external.ready = true;
		console.log("HTML.body.onLoad sets 'ready' = true");
	},
	
	isReady: function() {
		console.log("MediaPlayer checks 'ready' status.");
		return sekati.external.ready;
	},
	
	getQueryParam: function( key ) {
		var params = window.location.search.substring(1).split("&"); 
		for (var i=0; i<params.length; i++) {
			var keyVal = params[i].split("=");
			if(keyVal[0] == key) return keyVal[1];
		}
		return null;
	},
	
	logMessage: function ( msg, clearLog ) {
		var newdiv = document.getElementById('alertDiv');
		if(!newdiv){
			newdiv = document.createElement('div');
			newdiv.setAttribute('id', 'alertDiv');
			newdiv.innerHTML = '';
			document.body.appendChild(newdiv);
		}

		sekati.external.logCount++;
		var new_msg;
		if( !clearLog ) {
			new_msg = sekati.external.logCount + '. ' + msg + '<br/>' + newdiv.innerHTML;
		} else {
			new_msg = sekati.external.logCount + '. ' + msg + '<br/>';
		}
		newdiv.innerHTML = new_msg;
	},
	
	logRotate: function() {
		//sekati.external.logCount = 0;
		sekati.external.logMessage("--- log rotated ---", true);
	},
	
	resizePlayer: function( divId, playerId, w, h ) {
		var playerDiv = document.getElementById( divId );
		var player = document.getElementById( playerId );
		
		playerDiv.style.width = w;
		playerDiv.style.height = h;
		
		player.style.width = w;
		player.style.height = h;
	},
	
	// CALL OUT WRAPPERS  	
	
	onComplete: function() {
		sekati.external.logMessage("MediaPlayer reports: Plackback COMPLETE.");
	},

	onPause: function() {
		sekati.external.logMessage("MediaPlayer reports: Plackback PAUSED.");
	},
	
	onResume: function() {
		sekati.external.logMessage("MediaPlayer reports: Plackback RESUME.");
	},
	
	onPlay: function( url ) {
		sekati.external.logMessage("MediaPlayer reports: Plackback PLAY: " + url);
	},
	
	onError: function( msg ) {
		sekati.external.logMessage("MediaPlayer reports: Player ERROR: " + msg);
	},	
	
	onFullscreen: function( bool ) {
		var mode = (!bool) ? "FALSE" : "TRUE"; 
		sekati.external.logMessage("MediaPlayer reports: Fullscreen Mode: " + mode);
	},	
	
	onVolumeChange: function( vol ) {
		var volume = vol * 100;
		sekati.external.logMessage("MediaPlayer reports: Volume Change: " + volume + "%");
	},		
	
	// CALL IN WRAPPERS
	
	/**
	 * Load a new piece of media, item will automatically play.	
	 * @param assetURL (String) path to the asset to be played.
	 * @param imgURL (String) path to the optional image.
	 */
	load: function( assetURL, imgURL ) {
		var swf = document.getElementById( "media_player" );
		swf.load( assetURL, imgURL );
	},

	/**
	 * Plays the player, if the video has not buffered enough yet, player will wait for buffer before starting.
	 */	
	play: function( ) {
		var swf = document.getElementById( "media_player" );
		swf.play( );	
	},

	/**
	 * Pause the player.
	 */	
	pause: function( ) {
		var swf = document.getElementById( "media_player" );
		swf.pause( );
	},
	
	/**
	 * Set the volume of the player.
	 * @param volume (Number) between 0-100.
	 */	
	setVolume: function( volume ) {
		var swf = document.getElementById( "media_player" );
		swf.setVolume( volume );	
	}
};