var __FlexPoker_swfID = 0;
var __FlexPoker_swfMap = {};

function FlexPoker(swfUrl, width, height, bgColor) {
	__FlexPoker_swfID++;
	this.__pokerId = "__FlexPoker_swf" + __FlexPoker_swfID; 
	this.__so = new SWFObject(swfUrl, this.__pokerId, width, height, "9", bgColor);
	//this.__so.addParam("wmode", "transparent");
	this.__so.addVariable("__connector", this.__pokerId);
	this.__listeners = {};
}

FlexPoker.prototype.addEventListener = function (eventType, listener) {
	var listeners = this.__listeners[eventType];
	if (listeners) {
		for(var i=0; i<listeners.length; i++) {
			if (listeners[i] == listener) {
				return;
			}
		}
		listeners.push(listener);
	} else {
		this.__listeners[eventType] = [listener];
	}
}

FlexPoker.prototype.removeEventListener = function (eventType, listener) {
	var listeners = this.__listeners[eventType];
	if (listeners) {
		var i = 0;
		while (i < listeners.length) {
			if (listeners[i] == listener) {
				listeners.splice(i, 1)
			} else {
				i++;
			}
		}
		if (listeners.length > 0) {
			this.__listeners[eventType] = listeners;
		} else {
			delete this.__listeners[eventType];
		}
	}
}

FlexPoker.prototype.__dispatchEvent = function(eventType, data) {
	var eventListeners = this.__listeners[eventType];
	if (eventListeners ) {
		for(var i=0; i<eventListeners.length; i++) {
			var fun = eventListeners[i];
			fun(eventType, data);
		}
	}
}

FlexPoker.prototype.addVariable = function (name, value) {
	this.__so.addVariable(name, value);
}

FlexPoker.prototype.addParam = function (name, value) {
	this.__so.addParam(name, value);
}

FlexPoker.prototype.render = function (objectIdStr) {
	__FlexPoker_swfMap[this.__pokerId] = this;
	this.__so.write(objectIdStr);
}

function __FlexPoker_dispatchPokerEvent(pokerId, eventType, data) {
	__FlexPoker_swfMap[pokerId].__dispatchEvent(eventType, data);
}

