// JavaScript of controlling Flash Movie

// === Requirement ===
// <object id="{movieId}" ...
// <embed swliveconnect="true" name="{movieId}"...

function getFlashMovieObject(movieId) {
	if (window.document[movieId]) {
		return window.document[movieId];
	}
	if (navigator.appName.indexOf("Microsoft Internet") == -1) {
		if (document.embeds && document.embeds[movieId]) {
			return document.embeds[movieId];
		}
	} else {
		return document.getElementById(movieId);
	}
}

function setFlashVariable(movieId, variableName, variableValue) {
	var flashMovie = getFlashMovieObject(movieId);
	flashMovie.SetVariable(variableName, variableValue);
}

function getFlashVariable(movieId, variableName) {
	var flashMovie = getFlashMovieObject(movieId);
	return flashMovie.GetVariable(variableName);
}

function setFlashAction(movieId, action) {
	var actionId = getFlashVariable(movieId, "_root.vpActionId");
	actionId++;
	setFlashVariable(movieId, "_root.vpAction" + actionId, action);
	setFlashVariable(movieId, "_root.vpActionId", actionId);
	return actionId;
}

function isFlashActionReplied(movieId, actionId) {
	var actionReply = getFlashVariable(movieId, "_root.vpActionReply" + actionId);
	if (actionReply == "[Success]") {
		return true;
	} else if (actionReply == "[Failed]") {
		return true;
	}
	return false;
}

function isFlashActionSuccess(movieId, actionId) {
	var actionReply = getFlashVariable(movieId, "_root.vpActionReply" + actionId);
	if (actionReply == "[Success]") {
		return true;
	}
	return false;
}

function isFlashActionFailed(movieId, actionId) {
	var actionReply = getFlashVariable(movieId, "_root.vpActionReply" + actionId);
	if (actionReply == "[Failed]") {
		return true;
	}
	return false;
}

function getFlashActionException(movieId, actionId) {
	return getFlashVariable(movieId, "_root.vpActionException" + actionId);
}

function getFlashActionReturn(movieId, actionId) {
	return getFlashVariable(movieId, "_root.vpActionReturn" + actionId);
}

function playFlash(movieId) {
//	return setFlashAction(movieId, "Play");
	return new FlashMovieObject(movieId).playFlash();
}

function pauseFlash(movieId) {
//	return setFlashAction(movieId, "Pause");
	return new FlashMovieObject(movieId).pauseFlash();
}

function getFlashSlideIndex(movieId) {
	return setFlashAction(movieId, "GetCurrentSlideIndex");
}
// =================================
function FlashMovieObject(movieId) {
	this._flashObject = getFlashMovieObject(movieId);   
}
FlashMovieObject.prototype.getFlashVariable = function(variableName) {
	return this._flashObject.GetVariable(variableName);
}
FlashMovieObject.prototype.setFlashVariable = function(variableName, variableValue) {
	this._flashObject.SetVariable(variableName, variableValue);
}
FlashMovieObject.prototype.setFlashAction = function(actionName) {
	var actionId = this.getFlashVariable("_root.vpActionId");
	actionId++;
	this.setFlashVariable("_root.vpAction" + actionId, actionName);
	this.setFlashVariable("_root.vpActionId", actionId);
	return actionId;
}
FlashMovieObject.prototype.playFlash = function() {
	if (this._flashObject==null) {
		return;
	}
	return this.setFlashAction("Play");
}
FlashMovieObject.prototype.pauseFlash = function() {
	if (this._flashObject==null) {
		return;
	}
	return this.setFlashAction("Pause");
}
// =====================================
function getSlideNo(movieId) {
	var actionId = getFlashSlideIndex(movieId);
	var timer = 3000;
	var waitReply = function() {
		var replied = isFlashActionReplied(movieId, actionId);
		if (!replied) {
			if (timer>0) {
				setTimeout(waitReply, 200);
				timer -= 200;
			}
		} else {
			return getFlashActionReturn(movieId, actionId);
		}
	};
	waitReply();
	return null;
}
