function FAService3( swfObjName  ) {
	if( swfObjName == null ) return;
	this.swfObjectName = swfObjName;
	this.readyList = new Array();
	this.prevReadyAddedEventListenerList = new Array();
	this.isShowErrorMsg = true;
	this.isReady = false;
}
FAService3.prototype.getMovie = function() {
	return document.getElementById(this.swfObjectName);
}	
FAService3.prototype.checkExternalInterface = function() {
	var movie = this.getMovie();
	if(movie == undefined) return false;
	return movie.checkExternalInterface();
}
FAService3.prototype.ready = function() {
	if( this.isReady == true ) return;
	var movie = this.getMovie();
	for( i=0; i < this.prevReadyAddedEventListenerList.length; i++ ) {
		listener = this.prevReadyAddedEventListenerList[i];
		movie.addEventHandler( listener.eventName, listener.listenerName, listener.priority );
	}
	this.prevReadyAddedEventListenerList = null;
	for( i=0; i < this.readyList.length; i++ ) {
		func = this.readyList[i];
		eval('('+func+')')();
	}
	this.readyList = null;
	this.isReady = true;
}
FAService3.prototype.wrongEventListener = function( errorMessage ) {
	if( this.isShowErrorMsg  )
		alert(errorMessage);
}
FAService3.prototype.wrongCall = function( errorMessage ) {
	if( this.isShowErrorMsg  )
		alert(errorMessage);
}
FAService3.prototype.calladdedEventListener = function( listenerName, objJSON ) {
	listener = eval(listenerName);
	listener(objJSON);
}
FAService3.prototype.call = function( callName, objJSON ) {
	var movie = this.getMovie();
	if(movie == undefined) {
		alert( "[Error]After a 'ready' event, you can call call() method.")
		return;
	}
	if( objJSON ) {
		if( typeof(objJSON) === "object" ) {
			//objJSON = objJSON.toJSONString();
			objJSON = Object.toJSON(objJSON);
		}
	}	
	return movie.call( callName, objJSON );
}
FAService3.prototype.addEventListener = function( eventName, listener, priority ) {
	if( this.isReady == false ) {
		if( eventName == "ready" ) {
			this.readyList.push(listener);
			return;
		} else {
			this.prevReadyAddedEventListenerList.push( {"eventName":eventName, "listenerName":listener, "priority":priority} );
			return;
		} 
	}
	if( eventName == "ready" ) return;
	var movie = this.getMovie();
	if(movie == undefined) return; 
	movie.addEventHandler( eventName, listener, priority );
}
FAService3.prototype.removeEventListener = function( eventName, listener ) {
	var movie = this.getMovie();
	if(movie == undefined) return;
	movie.removeEventHandler( eventName, listener);
}