1 /**
  2  * 
  3  * @description An one Player engine copy
  4  * @constructor
  5  * @class
  6  * @version 0.1a
  7  */
  8 function SntPlayer(id, swfobject){
  9 	this.id = id;
 10 	this.c = 0;	
 11 	this.registered = false;
 12 	this.player = null;	
 13 	this.eventListeners = {};
 14 	window.getSntHolderInstance().registerPlayer(this.id, this);
 15 }
 16 
 17 /**
 18  * @function
 19  * @description This function change player status or return it
 20  * @param {boolean} status It's optional parameter to set status of the player
 21  * @return boolean
 22  */
 23 SntPlayer.prototype.register = function(status){
 24 	if(status == null)return this.registered;
 25 	this.registered = status;
 26 	return this.registered;
 27 }
 28 
 29 /**
 30  * @function
 31  * @description Method for sending messages to holder
 32  * @see SntEventsHolder#sendMessage
 33  * @param command It's ID from which command we receive message
 34  * @param args Array with data
 35  * @param callback Callback function
 36  */
 37 SntPlayer.prototype.sendMessage = function(command, args, callback){
 38 	window.getSntHolderInstance().sendMessage(command, this.id, args);
 39 	this.eventListeners[command] = callback;
 40 }
 41 
 42 
 43 /**
 44  * @function
 45  * @description Method for receiving messages from holder
 46  * @see SntEventsHolder#receiveMessage
 47  * @param command It's ID from which command we receive message
 48  * @param args Array with data
 49  */
 50 SntPlayer.prototype.receiveMessage = function(command, args){
 51 	if(this.eventListeners[command] != null){
 52 		var mNum = this.c++;
 53 		var name = 'f' + mNum;
 54 		this[name] = this.eventListeners[command]; this[name](args);
 55 		this[name] = null;
 56 	}
 57 }
 58 
 59 
 60 /**
 61  * @function
 62  * @description isArray function - Checking whether object is Array or not
 63  * @param object test Object
 64  * @returns Boolean
 65  */
 66 SntPlayer.prototype._isArray = function(o){
 67 	return o && typeof o === "object" && o.constructor === Array;
 68 }
 69 /**
 70  * @function
 71  * @description Add new event to event listeners
 72  * @see SntEventsHolder#addEventListener
 73  * @param event String or Array Event ID or IDs from Player engine events list
 74  * @param callback Callback funciton
 75  */
 76 SntPlayer.prototype.addEventListener = function(eventObject, callback){
 77 	//add just one event if event isn't Array
 78 	var events = eventObject;
 79 	if(!this._isArray(eventObject)){
 80 		events = [eventObject];
 81 	}
 82 	for(var i in events){
 83 		this.eventListeners[events[i]] = callback;
 84 		window.getSntHolderInstance().addEventListener(events[i], this.id);			
 85 	}	
 86 }
 87 
 88 /**
 89  * @function
 90  * @description Remove an event frome event listener
 91  * @see SntEventsHolder#removeEventListener
 92  * @param event String or Array Event ID or IDs from Player engine events list
 93  * @param callback Callback funciton
 94  */
 95 SntPlayer.prototype.removeEventListener = function(eventObject){	
 96 	var events = eventObject;
 97 	if(!this.isArray(eventObject)){
 98 		events = [eventObject];
 99 	}
100 	for(var i in events){
101 		this.eventListeners[event[i]] = null;	
102 		window.getSntHolderInstance().removeEventListener(events[i], this.id);
103 	}
104 }
105 
106 /**
107  * @function
108  * @description Add ready callback to player engine
109  * @see SntEventsHolder#addEventListener
110  * @param callback Callback funciton
111  */
112 SntPlayer.prototype.ready = function(callback){
113 	// if player already sent register event
114 	this.addEventListener(Sonettic.Helper.getConstant('EVENT_REGISTER'), callback);
115 	if(this.register()){
116 		this.receiveMessage(Sonettic.Helper.getConstant('EVENT_REGISTER'));
117 	}
118 	
119 }
120 
121 
122