/***************************************************************
# MABL Media Controler
# Ver 1.1.0 # Mar,13,2008
# Ver 1.1.1 # Apr,2,2008 # table width="100%" added
# Ver 1.1.2 # Apr,24,2008 # flv progress,loadsize,duration added
****************************************************************/
/*-------------------------------------------------------------
+ define globals
--------------------------------------------------------------*/
var $w = window;
var $d = document;
var $wbi = new MMC_WebBrowserInfo();
var $stat = 0;
var $p;
var $ipreload = true;
//
var $mdt;
var $mmc;
var $melm;

/*-------------------------------------------------------------
+ load libs
--------------------------------------------------------------*/

/*-------------------------------------------------------------
+ init
--------------------------------------------------------------*/
initMABL();
/*-------------------------------------------------------------
+ init MABL
--------------------------------------------------------------*/
function initMABL() {
	$stat = 0;
	//$w.onload = function() {
	//	readyMABL();
	//};
}
/*-------------------------------------------------------------
+ ready MABL 
--------------------------------------------------------------*/
function readyMABL(pSNO,pKEY) {
	// create object
	$melm = new MMC_Elements();
	$mmc = new MMCO();
	$mdt = new MDCC_Data();
	// element check
	$melm.check();
	// preset $mdt
	$mdt.imgo.preload = $ipreload;
	$mdt.imgo.KeepOriginal($melm.media.img);
	$mdt.txo.CreateDefaultLanguageList();
	$mdt.imgo.CreateDefaultLanguageList();
	$mdt.tro.CreateDefaultLanguageList();
	
	// media control init
	$mmc.init();
	//$p = window.opener;
	$stat = 1;
	// open connect
	MDCI_OpenDC(pSNO,pKEY);
}
/*-------------------------------------------------------------
// start MABL
--------------------------------------------------------------*/
function startMABL(pRate) {
	if( $stat > 0 ) {
		$mmc.start(pRate);
	}
}
/*-------------------------------------------------------------
// stop MABL
--------------------------------------------------------------*/
function stopMABL() {
	$mmc.stop();
}
/*-------------------------------------------------------------
// load MLIB
--------------------------------------------------------------*/
function MMC_LoadLIB(pURL) {
	var myELM = $d.createElement('SCRIPT');
	myELM.type = 'text/javascript';
	myELM.charset = 'utf-8';
	myELM.src = pURL;
	var myHEAD = $d.getElementsByTagName('head')[0];
	if( myHEAD == undefined ) {
		return(false);
	}
	myHEAD.appendChild(myELM);
	return(true);
}

/*-------------------------------------------------------------
// browser check class
--------------------------------------------------------------*/
function MMC_WebBrowserInfo() {
	//=============== get version
	// Mozilla
	this.getVMozilla = function(pUA) {
		var myV = -1;
		if( !this.IsMozilla(pUA) ) {
			return(-1);
		}
		if( this.version < 5 ) {
			return(this.version);
		}
		if( this.version == 5 ) {
			return(6);
		}
		if( this.version > 5 ) {
			return(7);
		}
		return(myV);
	}
	// FireFox
	this.getVFireFox = function(pUA) {
		var myUA = pUA;
		var myV = -1;
		if( !this.IsFireFox(pUA) ) {
			return(-1);
		}
		if( (myUA.indexOf("firefox/1") != -1) ) {
			return(1);
		}
		if( (myUA.indexOf("firefox/2") != -1) ) {
			return(2);
		}
		if( (myUA.indexOf("firefox/") != -1) ) {
			return(3);
		}
		return(myV);
	}
	// Safari
	this.getVSafari = function(pUA) {
		var myUA = pUA;
		var myV = -1;
		if( !this.IsSafari(pUA) ) {
			return(-1);
		}
		myV = this.version;
		return(myV);
	}
	// IE
	this.getVIE = function(pUA) {
		var myUA = pUA;
		var myV = -1;
		if( !this.IsIE(pUA) ) {
			return(myV);
		}
		
		if( this.version < 4 ) {
			return(3);
		}
		if( (myUA.indexOf("msie 4") != -1) ) {
			return(4);
		}
		if( (myUA.indexOf("msie 5.0") != -1) ) {
			return(5);
		}
		if( (myUA.indexOf("msie 5.5") != -1) ) {
			return(5.5);
		}
		if( (myUA.indexOf("msie 6.") != -1) ) {
			return(6);
		}
		if( (myUA.indexOf("msie 7.") != -1) ) {
			return(7);
		}
		return(myV);
	}
	
	//===============  browser check
	// Gecko
	this.IsGecko = function(pUA) {
		var myUA = pUA;
		var myGecko = (myUA.indexOf('gecko') != -1);
		return(myGecko);
	}
	// FireFox
	this.IsFireFox = function(pUA) {
		var myUA = pUA;
		var myFF = (myUA.indexOf('firefox') != -1);
		return(myFF);
	}
	// Safari
	this.IsSafari = function(pUA) {
		var myUA = pUA;
		var myFF = (myUA.indexOf('safari') != -1);
		return(myFF);
	}
	// Mozilla
	this.IsMozilla = function(pUA) {
		var myUA = pUA;
		var myNav = (myUA.indexOf('mozilla') != -1);
		return(myNav);
    }
    // IE
	 this.IsIE = function(pUA) {
		var myUA = pUA;
		var myIE  = ( (myUA.indexOf("msie") != -1) && (myUA.indexOf("opera") == -1));
		return(myIE);
    }
    //===============  OS check
	// Windows
	this.IsWindows = function(pUA) {
		var myUA = pUA;
		var myRET = (myUA.indexOf('win') != -1);
		return(myRET);
	}
	// Mac
	this.IsMac = function(pUA) {
		var myUA = pUA;
		var myRET = (myUA.indexOf('mac') != -1);
		return(myRET);
	}
    //=============== 
	this.display = function() {
		var mySTR = "";
		mySTR += "[userAgent:" + this.UA + "]\n";
		mySTR += "[IE:" + this.ie + "]\n";
		mySTR += "[FireFox:" + this.firefox + "]\n";
		mySTR += "[Mozilla:" + this.mozilla + "]\n";
		mySTR += "[OS(win):" + this.win + "]\n";
		mySTR += "[OS(mac):" + this.mac + "]\n";
		return(mySTR);
	}
    //=============== set property
    // user agent
	this.UA = navigator.userAgent.toLowerCase();
	// version
	this.version = parseInt(navigator.appVersion);
	this.versionf = parseFloat(navigator.appVersion);
	// browser
	this.mozilla = this.getVMozilla(this.UA);
	this.ie = this.getVIE(this.UA);
	this.firefox = this.getVFireFox(this.UA);
	this.safari = this.getVSafari(this.UA);
	// OS
	this.win = this.IsWindows(this.UA);
	this.mac = this.IsMac(this.UA);
	//
	//alert(this.display());
}
/***************************************************************
# MABL Media Control Class
# Setup Contents
****************************************************************/
// classid
var $mclsid_swf = 'd27cdb6e-ae6d-11cf-96b8-444553540000';
var $mclsid_wmv = '6BF52A52-394A-11D3-B153-00C04F79FAA6';
var $mclsid_qt = '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
/**************************************************************
+ Contents setup
***************************************************************/
//============================================================
// SWF
//============================================================
function MCONT_SetupSWF(pID,pURL,pW,pH,pFLV,pAuto) {
	var myOBJ = new MCT_SWF();
	myOBJ.$id = pID;
	myOBJ.$url = pURL;
	myOBJ.$width = pW;
	myOBJ.$height = pH;
	myOBJ.$flv = pFLV;
	myOBJ.$auto = pAuto;
	var myTAG = myOBJ.get_object();
	$d.write(myTAG);
}
//============================================================
// WMV
//============================================================
function MCONT_SetupWMV(pID,pURL,pW,pH,pAuto) {
	var myOBJ = new MCT_WMV();
	myOBJ.$id = pID;
	myOBJ.$url = pURL;
	myOBJ.$width = pW;
	myOBJ.$height = pH;
	myOBJ.$auto = pAuto;
	var myTAG = myOBJ.get_object();
	//alert(myTAG);
	$d.write(myTAG);
}
//============================================================
// QT
//============================================================
function MCONT_SetupQT(pID,pURL,pW,pH,pAuto) {
	var myOBJ = new MCT_QT();
	myOBJ.$id = pID;
	myOBJ.$url = pURL;
	myOBJ.$width = pW;
	myOBJ.$height = pH;
	myOBJ.$auto = pAuto;
	var myTAG = myOBJ.get_object();
	//alert(myTAG);
	$d.write(myTAG);
}
/**************************************************************
+ make Contents Tag
***************************************************************/
//============================================================
// SWF
//============================================================
function MCT_SWF() {
	//
	this.makeFlashVars = function() {
		var mySTR = "";
		mySTR += 'flv=' + this.$flv;
		mySTR += '&auto=' + this.$auto;
		return(mySTR);
	}
	//=============== make embed
	this.get_embed = function() {
		var mySRC = this.$url + '?' +this.makeFlashVars();
		var myTAG = "";
		myTAG += '<embed ';
		myTAG += ('src="'+mySRC+'" ');
		myTAG += ('quality="high" ');
		myTAG += ('bgcolor="#000000" ');
		myTAG += ('width="'+this.$width+'" ');
		myTAG += ('height="'+this.$height+'" ');
		myTAG += ('name="'+this.$id+'" ');
		myTAG += ('align="'+this.$align+'" ');
		myTAG += ('allowScriptAccess="always" ');
		myTAG += ('type="application/x-shockwave-flash" ');
		myTAG += ('pluginspage="http://www.macromedia.com/go/getflashplayer" ');
		myTAG += '></embed>';
		return(myTAG);
	}
	//=============== make object
	this.get_object = function() {
		var mySRC = this.$url + '?' +this.makeFlashVars();
		var myTAG = "";
		myTAG += '<object ';
		myTAG += ('classid="clsid:' + $mclsid_swf + '" ');
		myTAG += 'codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" ';
		myTAG += ('width="'+this.$width+'" ');
		myTAG += ('height="'+this.$height+'" ');
		myTAG += ('id="'+this.$id+'" ');
		myTAG += ('align="'+this.$align+'" ');
		myTAG += ('>');
		myTAG += ('<param name="allowScriptAccess" value="always"/>');
		myTAG += ('<param name="movie" value="'+mySRC+'"/>');
		myTAG += ('<param name="quality" value="high"/>');
		myTAG += ('<param name="bgcolor" value="#000000"/>');
		myTAG += ('<param name="FlashVars" value="'+this.makeFlashVars()+'"/>');
		myTAG += this.get_embed();
		myTAG += ('</object>');
		return(myTAG);
	}
	//
	this.$id = "";
	this.$url = "";
	this.$width = "0";
	this.$height = "0";
	this.$align = "middle";
	this.$flv = "";
	this.$auto = "false";
}
//============================================================
// QuickTime
//============================================================
function MCT_QT() {
	//=============== make embed
	this.get_embed = function() {
		var myTAG = "";
		myTAG += '<embed ';
		myTAG += ('type="video/quicktime" ');
		myTAG += ('src="'+this.$url+'" ');
		myTAG += ('width="'+this.$width+'" ');
		myTAG += ('height="'+this.$height+'" ');
		myTAG += ('autoplay="'+this.$auto+'" ');
		myTAG += ('controller="'+this.$controller+'" ');
		myTAG += ('pluginspage="http://www.apple.com/quicktime/download/" ');
		myTAG += ('enableJavascript="true" ');
		myTAG += ('name="'+this.$id+'" ');
		myTAG += ('id="'+this.$id+'" ');
		myTAG += '></embed>';
		return(myTAG);
	}
	//=============== make object
	this.get_object = function() {
		var myTAG = "";
		//if( $wbi.ie > 0 ) {
			myTAG += '<object ';
			myTAG += ('classid="clsid:' + $mclsid_qt + '" ');
			myTAG += ('width="'+this.$width+'" ');
			myTAG += ('height="'+this.$height+'" ');
			myTAG += 'codebase="http://www.apple.com/qtactivex/qtplugin.cab" ';
			myTAG += ('id="'+this.$id+'" ');
			myTAG += ('>');
			myTAG += ('<param name="src" value="'+this.$url+'" >');
			myTAG += ('<param name="autoplay" value="'+this.$auto+'" >');
			myTAG += ('<param name="controller" value="'+this.$controller+'" >');
		if( $wbi.ie > 0 ) {
		} else {
			myTAG += this.get_embed();
		}
		myTAG += ('</object>');
		return(myTAG);
	}
	//=============== define property
	//this.$classid = new MCONT_AXClassid();
	this.$id = "";
	this.$url = "";
	this.$width = "0";
	this.$height = "0";
	this.$align = "middle";
	this.$auto = "true";
	this.$controller = "false";
}
//============================================================
// WMV
//============================================================
function MCT_WMV() {
	//=============== make embed
	this.get_embed = function() {
		var myTAG = "";
		myTAG += '<embed ';
		myTAG += ('src="'+this.$url+'" ');
		myTAG += ('width="'+this.$width+'" ');
		myTAG += ('height="'+this.$height+'" ');
		myTAG += ('AutoStart="'+this.$auto+'" ');
		myTAG += ('uiMode="'+this.$controller+'" ');
		myTAG += ('CurrentPosition="'+this.$currentposition+'" ');
		myTAG += ('name="'+this.$id+'" ');
		myTAG += ('type="application/x-mplayer2" ');
		myTAG += '/>';
		return(myTAG);
	}
	//=============== make object
	this.get_object = function() {
		var myTAG = "";
		myTAG += '<object ';
		myTAG += ('classid="clsid:' + $mclsid_wmv + '" ');
		myTAG += ('width="'+this.$width+'" ');
		myTAG += ('height="'+this.$height+'" ');
		myTAG += ('id="'+this.$id+'" ');
		myTAG += ('>');
		myTAG += ('<param name="URL" value="'+this.$url+'"/>');
		myTAG += ('<param name="AutoStart" value="'+this.$auto+'"/>');
		myTAG += ('<param name="uiMode" value="'+this.$controller+'"/>');
		myTAG += ('<param name="CurrentPosition" value="'+this.$currentposition+'"/>');
		if( $wbi.ie < 0 ) {
			myTAG += this.get_embed();
		}
		myTAG += ('</object>');
		return(myTAG);
	}
	//=============== define property
	this.$id = "";
	this.$url = "";
	this.$width = "0";
	this.$height = "0";
	this.$align = "middle";
	this.$auto = "false";
	this.$controller = "none";
	this.$currentposition = "0";
}
/***************************************************************
# MABL Media Control
****************************************************************/
/*===============================================================
+
+ Control Elements class
+
================================================================*/
function MMC_Elements() {
	// define property
	this.ids = new Array();
	this.media = new Object();
	
	// make ID list
	this.makeIDList = function() {
		//var myBODY = $d.getElementsByTagName("body")[0];
		for( var i=0; i<this.checkTags.length; i++ ) {
			var myTag = this.checkTags[i];
			var myElms = $d.getElementsByTagName(myTag);
			this.makeList(myElms);
		}
	}
	//
	this.addList = function(pID) {
		var myID = pID;
		if( myID != undefined && myID != "" ) {
			this.ids.push(myID);
		}
	}
	//
	this.makeList = function(pOBJ) {
		for( var i=0; i<pOBJ.length; i++ ) {
			var myID = pOBJ[i].id;
			if( myID == null || myID == undefined ) {
				return;
			}
			this.addList(myID);
		}
	}
	// get ID list String
	this.getIDListString = function() {
		var mySTR = "";
		for( var i=0; i<this.ids.length; i++ ) {
			mySTR += ("["+this.ids[i]+"]");
		}
		return(mySTR);
	}
	// get ID Array
	this.getIDList = function(pSTR) {
		var myRET = new Array();
		var myIDS = this.ids;
		for( var i=0; i<myIDS.length; i++ ) {
			if( myIDS[i].indexOf(pSTR) != (-1) ) {
				myRET.push(myIDS[i]);
			}
		}
		return(myRET);
	}
	// get ID
	this.getID = function(pSTR) {
		var myRET = "";
		var myIDS = this.ids;
		for( var i=0; i<myIDS.length; i++ ) {
			if( myIDS[i].indexOf(pSTR) != (-1) ) {
				myRET = myIDS[i];
				break;
			}
		}
		return(myRET);
	}
	//
	this.display = function() {
		var mySTR = "FLV->>>";
		for( var i=0; i<this.media.flv.length; i++ ) {
			mySTR += ("["+this.media.flv[i]+"]");
		}
		mySTR += "\nWMV->>>";
		for( var i=0; i<this.media.wmv.length; i++ ) {
			mySTR += ("["+this.media.wmv[i]+"]");
		}
		mySTR += "\nQT->>>";
		for( var i=0; i<this.media.qt.length; i++ ) {
			mySTR += ("["+this.media.qt[i]+"]");
		}
		mySTR += "\nTEXT->>>";
		for( var i=0; i<this.media.tx.length; i++ ) {
			mySTR += ("["+this.media.tx[i]+"]");
		}
		mySTR += "\nIMAGE->>>";
		for( var i=0; i<this.media.img.length; i++ ) {
			mySTR += ("["+this.media.img[i]+"]");
		}
		mySTR += "\nALL->>>";
		mySTR += this.getIDListString();
		return(mySTR);
	}
	//############### check MABL Elements
	this.check = function() {
		// clear array
		this.ids = new Array();
		//----- make ID List
		this.makeIDList();
		//----- search FLV
		this.media.flv = this.getIDList('MABL_FLV');
		//----- search Windows Media
		this.media.wmv = this.getIDList('MABL_WMV');
		//----- search QuickTime
		this.media.qt = this.getIDList('MABL_QT');
		//----- search Text
		this.media.tx = this.getIDList('MABL_TEXT');
		//----- search Image
		this.media.img = this.getIDList('MABL_IMG');
		//----- search Time
		this.media.mtime = this.getIDList('MABL_TIME');
		//----- search Total Time
		this.media.ttime = this.getIDList('MABL_TOTAL');
		//
		//alert(this.display());
	}
	//
	this.checkTags = new Array();
	this.checkTags.push("table");
	this.checkTags.push("td");
	this.checkTags.push("div");
	this.checkTags.push("img");
	this.checkTags.push("object");
}

/*===============================================================
+
+ Media Control Class
+
================================================================*/
//------------------------------------------------------------
// MMC sub class
//------------------------------------------------------------
//-------------------- FLV
function MMC_FLV() {
	this.currentTime = (-1);
	this.task = function() {
		var myCurrentTime = 0;
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.flv[0];
			myCurrentTime = MMI_FLV_GetTime(myID);
			this.status = true;
		} catch(e) {
			this.status = false;
		}
		return(myCurrentTime);
	}
	//
	this.IsActive = function() {
		var myRET = true;
		if( $melm.media.flv.length < 1 ) {
			myRET = false;
		}
		return(myRET);
	}
	//
	this.getDuration = function() {
		if( !this.IsActive() ) { return(-1); }
		var myID = $melm.media.flv[0];
		var myD = MMI_FLV_GetDuration(myID);
		return(myD);
	}
	//
	this.setURL = function(pID,pPath) {
		if( !this.IsActive() ) { return; }
		var myID = $melm.media.flv[0];
		if( pID == myID ) {
			MMI_FLV_SetFLV(myID,pPath);
		}
	}
	// play
	this.play = function() {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.flv[0];
			MMI_FLV_Play(myID);
		} catch(e) {
		}
	}
	// stop command
	this.stop = function() {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.flv[0];
			MMI_FLV_Pause(myID);
		} catch(e) {
		}
	}
	// seek
	this.seek = function(pSeekValue) {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.flv[0];
			MMI_FLV_Seek(myID,pSeekValue);
		} catch(e) {
		}
	}
	// time seek
	this.tseek = function(pSeekValue) {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.flv[0];
			MMI_FLV_TimeSeek(myID,pSeekValue);
		} catch(e) {
		}
	}
	// Sound Track
	this.setSoundTrack = function(pTracks) {
		if( !this.IsActive() ) { return(-1); }
		if( pTracks.length > 0 ) {
			this.setTransform(pTracks[0]);
		}
	}
	// transform
	this.setTransform = function(pSndTrackNum) {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.flv[0];
			var myTRANS = "MX";
			if( pSndTrackNum == 1 ) {
				myTRANS = "LC";
			} else if( pSndTrackNum == 2 ) {
				myTRANS = "RC";
			}
			MMI_FLV_SetTransform(myID,myTRANS);
		} catch(e) {
		}
	}
	// Get Volume
	this.getVolume = function() {
		var myVol = (-1);
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.flv[0];
			myVol = MMI_FLV_GetVolume(myID);
		} catch(e) {
		}
		return(myVol);
	}
	// Set Volume
	this.setVolume = function(pVolume) {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.flv[0];
			MMI_FLV_SetVolume(myID,pVolume);
		} catch(e) {
		}
	}
	// Get loadedSize
	this.getLoadedSize = function() {
		var mySize = (-1);
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.flv[0];
			mySize = MMI_FLV_GetProgress(myID);
		} catch(e) {
		}
		return(mySize);
	}
	// Get totalSize
	this.getTotalSize = function() {
		var mySize = (-1);
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.flv[0];
			mySize = MMI_FLV_GetTotalSize(myID);
		} catch(e) {
		}
		return(mySize);
	}
}
//-------------------- WMV
function MMC_WMV() {
	this.task = function() {
		var myCurrentTime = 0;
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.wmv[0];
			var myOBJ = $w[myID];
			myCurrentTime = myOBJ.controls.currentPosition;
			this.status = true;
		} catch(e) {
			myCurrentTime = 0;
			this.status = false;
		}
		return(myCurrentTime);
	}
	//
	this.IsActive = function() {
		var myRET = true;
		if( $melm.media.wmv.length < 1 ) {
			myRET = false;
		}
		return(myRET);
	}
	//
	this.setURL = function(pID,pPath) {
		if( !this.IsActive() ) { return; }
		var myID = $melm.media.wmv[0];
		if( pID == myID ) {
			var myOBJ = $w[myID];
			myOBJ.URL = pPath;
		}
	}
	// play
	this.play = function() {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.wmv[0];
			var myOBJ = $w[myID];
			if( myOBJ.controls.isAvailable('play') ) {
				myOBJ.controls.play();
			}
		} catch(e) {
		}
	}
	// stop command
	this.stop = function() {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.wmv[0];
			var myOBJ = $w[myID];
			myOBJ.controls.stop();
		} catch(e) {
		}
	}
	// pause
	this.pause = function() {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.wmv[0];
			var myOBJ = $w[myID];
			if( myOBJ.controls.isAvailable('pause') ) {
				myOBJ.controls.pause();
			}
		} catch(e) {
		}
	}
	// Get Duration
	this.getDuration = function() {
		var myD = 0;
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.wmv[0];
			var myOBJ = $w[myID];
			myD = myOBJ.currentMedia.duration;
		} catch(e) {
		}
		return(myD);
	}
	// seek
	this.seek = function(pSeekValue) {
		try {
			
		} catch(e) {
		}
	}
	

	// time seek
	this.tseek = function(pSeekValue) {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.wmv[0];
			var myOBJ = $w[myID];
			myOBJ.controls.currentPosition = pSeekValue;
		} catch(e) {
		}
	}
	// Sound Track
	this.setSoundTrack = function(pTracks) {
		if( !this.IsActive() ) { return(-1); }
		if( pTracks.length > 0 ) {
			//
		}
	}
	// Get Volume
	this.getVolume = function() {
		var myVol = 0;
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.wmv[0];
			var myOBJ = $w[myID];
			myVol = myOBJ.settings.volume;
		} catch(e) {
		}
		return(myVol);
	}
	// Set Volume
	this.setVolume = function(pVolume) {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.wmv[0];
			var myOBJ = $w[myID];
			myOBJ.settings.volume = pVolume;
		} catch(e) {
		}
	}
}
//-------------------- QT
function MMC_QT() {
	this.task = function() {
		if( !this.IsActive() ) { return(-1); }
		var myID = $melm.media.qt[0];
		var myCurrentTime = 0;
		try {
			var myOBJ = this.getMovie(myID);
			var myTime = myOBJ.GetTime();
			var myTimeScale = myOBJ.GetTimeScale();
			myCurrentTime = this.formatTime(myTime,myTimeScale);
		} catch(e) {
			myCurrentTime = 0;
		}
		return(myCurrentTime);
	}
	//
	this.IsActive = function() {
		var myRET = true;
		if( $melm.media.qt.length < 1 ) {
			myRET = false;
		}
		return(myRET);
	}
	//
	this.formatTime = function(pTime,pTScale) {
		var myRET = (pTime/pTScale);
		//alert(myRET);
		return(myRET);
	}
	this.sec2qtTime = function(pTime,pTScale) {
		var myRET = Math.floor(pTime*pTScale);
		return(myRET);
	}
	//
	this.setURL = function(pID,pPath) {
		if( !this.IsActive() ) { return; }
		var myID = $melm.media.qt[0];
		var myOBJ = this.getMovie(myID);
		myOBJ.SetURL(pPath);
		this.setUI(pID,false);
	}
	this.setUI = function(pID,pBool) {
		if( !this.IsActive() ) { return; }
		var myID = $melm.media.qt[0];
		var myOBJ = this.getMovie(myID);
		myOBJ.SetControllerVisible(pBool);
	}
	// Get Duration
	this.getDuration = function() {
		var myD = 0;
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.qt[0];
			var myOBJ = this.getMovie(myID);
			var myTimeScale = myOBJ.GetTimeScale();
			var myDuration = myOBJ.GetDuration();
			myD = this.formatTime(myDuration,myTimeScale);
		} catch(e) {
		}
		return(myD);
	}
	// play command
	this.play = function() {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.qt[0];
			var myOBJ = this.getMovie(myID);
			myOBJ.Play();
		} catch(e) {
		}
	}
	// stop
	this.stop = function() {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.qt[0];
			var myOBJ = this.getMovie(myID);
			myOBJ.Stop();
		} catch(e) {
		}
	}
	// time seek
	this.tseek = function(pSeekSec) {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.qt[0];
			var myOBJ = this.getMovie(myID);
			var myTimeScale = myOBJ.GetTimeScale();
			var myTime = this.sec2qtTime(pSeekSec,myTimeScale);
			myOBJ.SetTime(myTime);
		} catch(e) {
		}
	}
	// Get Volume
	this.getVolume = function() {
		var myVol = 0;
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.qt[0];
			var myOBJ = this.getMovie(myID);
			myVol = myOBJ.GetVolume();
			myVol = this.formVol(myVol,256,100);
		} catch(e) {
		}
		return(myVol);
	}
	// Set Volume
	this.setVolume = function(pVolume) {
		try {
			if( !this.IsActive() ) { return(-1); }
			var myID = $melm.media.qt[0];
			var myOBJ = this.getMovie(myID);
			var myVol = this.formVol(pVolume,100,256);
			myOBJ.SetVolume(myVol);
		} catch(e) {
		}
	}
	//
	this.formVol = function(pVol,pMax,pDstMax) {
		if( pVol <= 0 ) {
			return(0);
		}
		if( pVol >= pMax ) {
			return(pDstMax);
		}
		var myRes = Math.floor(pVol/(pMax/pDstMax));
		return(myRes);
	}
	// Sound Track
	this.setSoundTrack = function(pTracks) {
		if( !this.IsActive() ) { return(-1); }
		if( pTracks.length < 1 ) {
			return(0);
		}
		//
		var myID = $melm.media.qt[0];
		var myOBJ = this.getMovie(myID);
		var myTC = myOBJ.GetTrackCount();
		var mySndTrackNum = 0;
		for( var i=1; i<=myTC; i++ ) {
			var myEnabled = false;
			if( this.matchSoundTrack(i,pTracks) ) {
				myEnabled = true;
			}
			myOBJ.SetTrackEnabled(i,myEnabled);
		}
	}
	this.matchSoundTrack = function(pTrackNum,pTracks) {
		var myR = false;
		for( var i=0; i<pTracks.length; i++ ) {
			if( pTrackNum == (pTracks[i]) ) {
				myR = true;
				break;
			}
		}
		return(myR);
	}
	
	this.info = function() {
		if( !this.IsActive() ) { return(-1); }
		var myID = $melm.media.qt[0];
		var myOBJ = this.getMovie(myID);
		//
		//myOBJ.SetLanguage('English');
		var myRET = "";
		var myTC = myOBJ.GetTrackCount();
		myRET += ("[" + myOBJ.GetLanguage() + "]");
		for (var i=1; i<=myTC; i++) {
			var myTT = myOBJ.GetTrackType(i);
			var myS = lookupAnyCharaCode(myTT, this.soundTrackTypes);
			myRET += ("[" + myTT + ":" + myS + "]");
		}
		//
		return(myRET);
	}
	//
	this.getMovie = function(pID) {
		var myOBJ = document[pID];
		return(myOBJ);
	}
	//
	this.soundTrackTypes = new Array("sound","サウンド");
}
//-------------------- TEXT
function MMC_TEXT() {
	this.task = function(pTime) {
		for( var i=0; i<$melm.media.tx.length; i++ ) {
			try {
				var myID = $melm.media.tx[i];
				//
				if( $mdt.txo.GetSync(myID) ) {
					var myTX = $mdt.txo.GetPropByTime(myID,pTime,"TX");
					var myAL = $mdt.txo.GetPropByTime(myID,pTime,"AL");
					this.setTextToElement(myID,myTX,myAL);
				}
				this.status = true;
			} catch(e) {
				this.status = false;
			}
		}
	}
	// Set Text to Element
	this.setTextToElement = function(pID,pTX,pAL) {
		var myText = pTX;
		var myElm = $d.getElementById(pID);
		var myCurrent = "";
		if( $wbi.firefox > 0 ) {
			myCurrent = myElm.textContent;
		} else {
			myCurrent = myElm.innerText;
		}
		myCurrent = this.trim(myCurrent);
		myCurrent = this.delBR(myCurrent);
		myCurrent = this.delRTN(myCurrent);
		myText = this.delBR(myText);
		var myMESS = "";
		myMESS = "{TEXT}"+pID+"["+myText+"]["+myCurrent+"]";
		if( myText == myCurrent ) {
			return;
		}
		myText = this.formTextByAlign(pTX,pAL);
		myElm.innerHTML = myText;
	}
	// text align
	this.formTextByAlign = function(pText,pAlign) {
		var myTX = pText;
		var myBOXA = "center";
		var myTEXTA = "center";
		if( pAlign == "CENTER" ) {
			myBOXA = "center";
			myTEXTA = "center";
		} else if( pAlign == "LEFT" ) {
			myBOXA = "left";
			myTEXTA = "left";
		} else if( pAlign == "RIGHT" ) {
			myBOXA = "right";
			myTEXTA = "right";
		} else if( pAlign == "CENTERLEFT" ) {
			myBOXA = "center";
			myTEXTA = "left";
		} else if( pAlign == "CENTERRIGHT" ) {
			myBOXA = "center";
			myTEXTA = "right";
		}
		
		if(myTX == "") {
			myTX = '&nbsp;';
		}
		var myTAG = "";
		myTAG += ('<table border="0" width="100%"');
		myTAG += ('align="'+myBOXA+'" ');
		myTAG += ('cellpadding="0" cellspacing="0">');
		myTAG += ('<tr><td>');
		myTAG += ('<div align="'+myTEXTA+'">');
		myTAG += myTX;
		myTAG += ('</div>');
		myTAG += ('</td></tr>');
		myTAG += ('</table>');
		//
		return(myTAG);
	}
	//
	this.trim = function(pText) {
		if( pText == undefined ) { return(""); }
		var myTX = String(pText);
		myTX = myTX.replace(/^\s+|\s+$/g,"");
		return(this.und2empty(myTX));
	}
	this.rtn2br = function(pText) {
		if( pText == undefined ) { return(""); }
		var myTX = String(pText);
		myTX = myTX.replace("\r\n","<br>");
		myTX = myTX.replace("\r","<br>");
		myTX = myTX.replace("\n","<br>");
		return(this.und2empty(myTX));
	}
	this.br2br = function(pText) {
		if( pText == undefined ) { return(""); }
		var myTX = String(pText);
		myTX = myTX.replace("<BR>","<br>");
		return(this.und2empty(myTX));
	}
	this.br2lf = function(pText) {
		if( pText == undefined ) { return(""); }
		var myTX = String(pText);
		myTX = myTX.replace("<br>","\n");
		myTX = myTX.replace("<BR>","\n");
		return(this.und2empty(myTX));
	}
	this.rtn2lf = function(pText) {
		if( pText == undefined ) { return(""); }
		var myTX = String(pText);
		myTX = myTX.replace("\r\n","\n");
		myTX = myTX.replace("\r","\n");
		return(this.und2empty(myTX));
	}
	this.delBR = function(pText) {
		if( pText == undefined ) { return(""); }
		var myTX = String(pText);
		myTX = this.delChar(myTX,"<br>");
		myTX = this.delChar(myTX,"<BR>");
		return(this.und2empty(myTX));
	}
	this.delRTN = function(pText) {
		if( pText == undefined ) { return(""); }
		var myTX = String(pText);
		myTX = this.delChar(myTX,"\r\n");
		myTX = this.delChar(myTX,"\n");
		myTX = this.delChar(myTX,"\r");
		return(this.und2empty(myTX));
	}
	this.delChar = function(pText,pTarget) {
		if( pText == undefined ) { return(""); }
		var myTX = String(pText);
		myTX = myTX.replace(pTarget,"");
		return(this.und2empty(myTX));
	}
	this.und2empty = function(pText) {
		if( pText == undefined ) {
			return("");
		}
		return(pText);
	}
	//
	this.status = true;
}
//-------------------- IMAGE
function MMC_IMG() {
	this.task = function(pTime) {
		for( var i=0; i<$melm.media.img.length; i++ ) {
			try {
				var myID = $melm.media.img[i];
				if( $mdt.imgo.GetSync(myID) ) {
					var mySRC = $mdt.imgo.GetPathByTime(myID,pTime,"SRC");
					if( mySRC != "" ) {
						this.setImageToElement(myID,mySRC);
					}
				}
				this.status = true;
			} catch(e) {
				this.status = false;
			}
		}
	}
	// Set Image to Element
	this.setImageToElement = function(pID,pSRC) {
		var mySRC = pSRC;
		var myElm = $d.getElementById(pID);
		var myCurrent = myElm.src;
		var myMESS = "{IMG}"+pID+"["+mySRC+"]["+myCurrent+"]";
		if( myCurrent.indexOf(mySRC) >= 0 ) {
			return;
		}
		myElm.src = mySRC;
	}
	//
	this.status = true;
}
//-------------------- MABL Time
function MMC_MTime() {
	this.task = function(pTime,dTime) {
		for( var i=0; i<$melm.media.mtime.length; i++ ) {
			try {
				var myID = $melm.media.mtime[i];
				this.setTimeToElement(myID,pTime);
				this.status = true;
			} catch(e) {
				this.status = false;
			}
		}
		for( var i=0; i<$melm.media.ttime.length; i++ ) {
			try {
				var myID = $melm.media.ttime[i];
				if (dTime == 0) {
					this.setStrToElement(myID,'--:--:--');
        } else {
					this.setTimeToElement(myID,dTime);
				}
			} catch(e) {
			}
		}
	}
	// Get Movie Duration
	this.getDuration = function() {
		var myD = 0;
		if( $mmc.flv.IsActive() ) {
			myD = $mmc.flv.getDuration();
		} else if( $mmc.wmv.IsActive() ) {
			myD = $mmc.wmv.getDuration();
		} else if( $mmc.qt.IsActive() ) {
			myD = $mmc.qt.getDuration();
		}
		return(myD);
	}
	// Set Time to Element
	this.setTimeToElement = function(pID,pTime) {
		var myTime = pTime;
		if( pID.indexOf("HMSF") >= 0 ) {
			myTime = this.SEC2HMSF(myTime);
		} else {
			if( pID.indexOf("HMS") >= 0 ) {
				myTime = this.SEC2HMS(myTime);
			} else if( pID.indexOf("SEC") >= 0 ) {
				myTime = myTime;
			}
		}
		var myElm = $d.getElementById(pID);
		if( $wbi.firefox > 0 ) {
			myElm.textContent = String(myTime);
		} else {
			myElm.innerText = String(myTime);
		}
	}
	this.SEC2HMS = function(pSec) {
		var myARR = this.SEC2ARR(pSec);
		var ret = "";
		ret += this.NumToKetaStr(myARR[0],2) + ":";
		ret += this.NumToKetaStr(myARR[1],2) + ":";
		ret += this.NumToKetaStr(myARR[2],2);
		return(ret);
	}
	this.SEC2HMSF = function(pSec) {
		var myARR = this.SEC2ARR(pSec);
		var ret = "";
		ret += this.NumToKetaStr(myARR[0],2) + ":";
		ret += this.NumToKetaStr(myARR[1],2) + ":";
		ret += this.NumToKetaStr(myARR[2],2) + ":";
		ret += this.NumToKetaStr(myARR[3],2);
		return(ret);
	}
	this.SEC2ARR = function(pSec) {
		var orgISEC;
		var orgMSEC;
		var myH,myM,myS,myF;
		var cSECM = 60;
		var cFRMM = 0.033;
		//
		var myARR = new Array(0,0,0,0);
		//
		orgISEC = parseInt(pSec);
		orgMSEC = parseFloat(pSec);
		//
		myARR[0] = Math.floor(orgISEC / (cSECM * cSECM));
		myARR[1] = Math.floor((orgISEC % (cSECM * cSECM)) / cSECM);
		myARR[2] = Math.floor(orgISEC % cSECM);
		myARR[3] = Math.floor(orgMSEC / cFRMM);
		//
		return(myARR);
	}
	//====================
	this.NumToKetaStr = function(pNum,pKeta) {
		var mySTR = String(pNum);
		var myRET = "";
		for( var i=0; i<(pKeta - mySTR.length); i++ ) {
			myRET += "0";
		}
		myRET += mySTR;
		return(myRET);
	}
	//
	this.status = true;
}
//-------------------- MABL Mv Sound
function MMC_MvSound() {
	// Set Launguage
	this.SetLanguage = function(pLanguage) {
		var myID = "";
		if( $mmc.flv.IsActive() ) {
			myID = $melm.media.flv[0];
		} else if( $mmc.wmv.IsActive() ) {
			myID = $melm.media.wmv[0];
		} else if( $mmc.qt.IsActive() ) {
			myID = $melm.media.qt[0];
		}
		if( myID == "" ) {
			return;
		}
		$mdt.tro.SetLanguage(myID,pLanguage);
		this.SetTracks(myID);
	}
	// Set Default Launguage
	this.SetDefault = function() {
		var myID = "";
		if( $mmc.flv.IsActive() ) {
			myID = $melm.media.flv[0];
		} else if( $mmc.wmv.IsActive() ) {
			myID = $melm.media.wmv[0];
		} else if( $mmc.qt.IsActive() ) {
			myID = $melm.media.qt[0];
		}
		var myLang = $mdt.tro.GetLanguage(myID);
		if( myLang != "" ) {
			this.SetTracks(myID);
		}
	}
	// Set Tracks
	this.SetTracks = function(pID) {
		var myTracks = $mdt.tro.GetTrackId(pID);
		if( $mmc.flv.IsActive() ) {
			$mmc.flv.setSoundTrack(myTracks);
		} else if( $mmc.wmv.IsActive() ) {
			$mmc.wmv.setSoundTrack(myTracks);
		} else if( $mmc.qt.IsActive() ) {
			$mmc.qt.setSoundTrack(myTracks);
		}
	}
	// Get Sound Volume
	this.GetVolume = function() {
		var myVol = (-1);
		if( $mmc.flv.IsActive() ) {
			myVol = $mmc.flv.getVolume();
		} else if( $mmc.wmv.IsActive() ) {
			myVol = $mmc.wmv.getVolume();
		} else if( $mmc.qt.IsActive() ) {
			myVol = $mmc.qt.getVolume();
		}
		return(myVol);
	}
	// Set Sound Volume
	this.SetVolume = function(pVolume) {
		if( $mmc.flv.IsActive() ) {
			$mmc.flv.setVolume(pVolume);
		} else if( $mmc.wmv.IsActive() ) {
			$mmc.wmv.setVolume(pVolume);
		} else if( $mmc.qt.IsActive() ) {
			$mmc.qt.setVolume(pVolume);
		}
	}
}
//------------------------------------------------------------
// MMC class
//------------------------------------------------------------
function MMCO() {
	this.proc = new Array();
	this.taskid = undefined;
	//=============== event check task
	//---------- init
	this.init = function() {
		if( !$melm ) { exit; }
	}
	//---------- start
	this.start = function(pRate) {
		if( this.taskid != undefined ) {
			return(false);
		}
		this.taskid = setInterval(MMC_Task,pRate);
		return(true);
	}
	//---------- stop
	this.stop = function() {
		clearInterval(this.taskid);
		this.taskid = undefined;
	}
	//=============== set Current Time
	this.setCurrentTime = function(pTime) {
		if( pTime < 0 ) {
			return;
		}
		this.currentTime = pTime;
	}
	//=============== set Duration Time # +alpha
	this.setDurationTime = function(pTime) {
		if( pTime < 0 ) {
			return;
		}
		this.durationTime = pTime;
	}
	//=============== add proc
	this.addProc = function(pFCN) {
		this.proc.push(pFCN);
	}
	//===============
	this.currentTime = 0;
	this.durationTime = 0; // added
	this.flv = new MMC_FLV();
	this.wmv = new MMC_WMV();
	this.qt = new MMC_QT();
	this.tx = new MMC_TEXT();
	this.img = new MMC_IMG();
	this.mtime = new MMC_MTime();
	this.mvsound = new MMC_MvSound();
	this.userT = null; // added
}
/*===============================================================
+
+ MMC loop
+ functions
================================================================*/
function MMC_Task() {
	if( $mmc.flv.IsActive() ) {
		$mmc.setCurrentTime($mmc.flv.task());
	} else if( $mmc.wmv.IsActive() ) {
		$mmc.setCurrentTime($mmc.wmv.task());
	} else if( $mmc.qt.IsActive() ) {
		$mmc.setCurrentTime($mmc.qt.task());
	}
	$mmc.durationTime = $mmc.mtime.getDuration();
	$mmc.tx.task($mmc.currentTime);
	$mmc.img.task($mmc.currentTime);
	$mmc.mtime.task($mmc.currentTime, $mmc.durationTime);
	if ($mmc.userT != null) {
          $mmc.userT();
        }
}
/*===============================================================
+
+ mabl media interface
+
================================================================*/
//------------------------------------------------------------
// FLV function
//------------------------------------------------------------
//==================== Get Current Time
//this function call SWF function
function MMI_FLV_GetTime(pID) {
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return;
	}
	// call Flash function
	//mySWF.getFLVCurrent();
	var myTime = mySWF.flvGetTime();
	return(myTime);
}
//==================== Get Duration
//this function call SWF function
function MMI_FLV_GetDuration(pID) {
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return;
	}
	// call Flash function
	var myD = mySWF.flvGetDuration();
	return(myD);
}
//==================== Set FLV
//this function call SWF function
function MMI_FLV_SetFLV(pID,pFLVPath) {
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return;
	}
	//----- call Flash function
	mySWF.startFLV(pFLVPath,0);
}
//==================== FLV Play
function MMI_FLV_Play(pID) {
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return;
	}
	mySWF.flvPlay();
}
//==================== FLV Pause
function MMI_FLV_Pause(pID) {
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return;
	}
	mySWF.flvPause();
}
//==================== FLV Seek
function MMI_FLV_Seek(pID,pSeek) {
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return;
	}
	mySWF.flvSeek(pSeek);
}
//==================== FLV Time Seek
function MMI_FLV_TimeSeek(pID,pSeek) {
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return;
	}
	mySWF.flvTimeSeek(pSeek);
}

//==================== FLV Transform
function MMI_FLV_SetTransform(pID,pTrans) {
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return;
	}
	mySWF.flvTransform(pTrans);
}
//==================== FLV Get Volume
function MMI_FLV_GetVolume(pID) {
	var myVol = (-1);
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return(myVol);
	}
	myVol = mySWF.flvGetVolume();
	return(myVol);
}
//==================== FLV Set Volume
function MMI_FLV_SetVolume(pID,pVol) {
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return;
	}
	mySWF.flvSetVolume(pVol);
}
//---------------------
function MMI_FLV_GetSWF(pID) {
	var mySWF = undefined;
	if( $wbi.win ) {
		if( $wbi.ie > 0 ) {
			mySWF = $w[pID];
		} else if( $wbi.mozilla > 0 ) {
			if( $wbi.firefox > 0 ) {
				mySWF = $d[pID];
			} else {
				mySWF = $d[pID];
			}
		}
	} else if( $wbi.mac ) {
		if( $wbi.mozilla > 0 ) {
			mySWF = $d[pID];
		}
	}
	return(mySWF);
}
//==================== Set Current Time
//this function call from SWF
function MMI_FLV_SetTime(pTime) {
	$mmc.flv.currentTime = pTime;
	// set MMC current time
	$mmc.setCurrentTime($mmc.flv.currentTime);
	//alert(pTime);
	return(("done:"+pTime));
}
//==================== FLV Get Progess : Use FLV only
function MMI_FLV_GetProgress(pID) {
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return(-1);
	}
	loadedSize = mySWF.flvGetProgress();
	return(loadedSize);
}
//==================== FLV Get TotalSize : Use FLV only
function MMI_FLV_GetTotalSize(pID) {
	var mySWF = MMI_FLV_GetSWF(pID);
	if( mySWF == undefined ) {
		return(-1);
	}
	totalSize = mySWF.flvGetTotalSize();
	return(totalSize);
}
//============================================================
// QT function
//============================================================
//==================== Get Current Time
function MMI_QT_GetTime() {
	var myCurrentTime = document.MABL_QT_01.GetTime();
	//alert(myCurrentTime);
}


/***************************************************************
# MABL Media Controler
# data control
****************************************************************/
/*===============================================================
+
+ データコントロール関係
+
================================================================*/
//------------------------------------------------------------
// create mabl data class
//------------------------------------------------------------
function MDCC_Data() {
	this.txo = new MDCC_Text();
	this.imgo = new MDCC_Image();
	this.tro = new MDCC_MvSound();
	this.mio = new MDCC_MvInfo();
	this.dc = new MDCC_DC();
}

//------------------------------------------------------------
// テキスト class
//------------------------------------------------------------
function MDCC_Text() {
	//---------- get property by time
	// <pTime>
	// 小数点込みの秒指定
	// <pProp>(upper case)
	// "TX":テキスト
	// "AL":Align
	this.GetPropByTime = function(pID,pTime,pProp) {
		var myTime = pTime;
		var myLang = this.GetLanguage(pID);
		var myRET = "";
		var myDATA = this.data;
		if( !(this.GetLanguageDisplay(pID)) ) {
			return("");
		}
		for(var i=0; i<myDATA.length; i++ ) {
			var myTA = myDATA[i];
			if( myTA.id != pID ) {
				continue;
			}
			for( var j=0; j<myTA.data.length; j++ ) {
				var myLANG = myTA.data[j];
				if( myLANG.type != myLang ) {
					continue;
				}
				for( var k=0; k<myLANG.data.length; k++ ) {
					var myLINE = myLANG.data[k];
					if( myLINE.start <= myTime && myLINE.end >= myTime ) {
						if( pProp == "TX" ) {
							myRET = myLINE.text;
						} else if( pProp == "AL" ) {
							myRET = myLINE.align;
						}
						return(myRET);
					}
				}
			}
		}
		return(myRET);
	}
	
	//---------- Get Data Array
	// return data array from data table
	this.GetDataArray = function(pID,pLanguage) {
		var myARR = new Array();
		var myDATA = this.data;
		for(var i=0; i<myDATA.length; i++ ) {
			var myTA = myDATA[i];
			if( myTA.id != pID ) {
				continue;
			}
			for( var j=0; j<myTA.data.length; j++ ) {
				var myLANG = myTA.data[j];
				if( myLANG.type != pLanguage ) {
					continue;
				}
				for( var k=0; k<myLANG.data.length; k++ ) {
					var myLINE = myLANG.data[k];
					myARR.push(new Object());
					myARR[(myARR.length-1)].start = myLINE.start;
					myARR[(myARR.length-1)].end = myLINE.end;
					myARR[(myARR.length-1)].align = myLINE.align;
					myARR[(myARR.length-1)].text = myLINE.text;
				}
			}
		}
		return(myARR);
	}
	//---------- Set Language
	this.SetLanguage = function(pID,pLanguage) {
		var myResult = false;
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				this.defaultLang[i].type = pLanguage;
				myResult = true;
				break;
			}
		}
		return(myResult);
	}
	//---------- Get Language
	this.GetLanguage = function(pID) {
		var myResult = "";
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				myResult = this.defaultLang[i].type;
				break;
			}
		}
		return(myResult);
	}
	//---------- Set Language Display
	this.SetLanguageDisplay = function(pID,pBool) {
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				this.defaultLang[i].display = pBool;
				break;
			}
		}
	}
	//---------- Get Language Display
	this.GetLanguageDisplay = function(pID) {
		var myResult = true;
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				myResult = this.defaultLang[i].display;
				break;
			}
		}
		return(myResult);
	}
	//---------- Set Sync
	this.SetSync = function(pID,pBool) {
		//alert("set sync:"+pID+"|"+pBool);
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				this.defaultLang[i].sync = pBool;
				break;
			}
		}
	}
	//---------- Get Sync
	this.GetSync = function(pID) {
		var myResult = true;
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				myResult = this.defaultLang[i].sync;
				break;
			}
		}
		return(myResult);
	}
	//---------- Check Default Language
	// this function called by MDCStartMabl
	this.CheckDefaultLanguage = function() {
		var myDATA = this.data;
		for(var i=0; i<myDATA.length; i++ ) {
			var myTA = myDATA[i];
			//
			if( myTA.data.length > 0 ) {
				var myLANG = myTA.data[0];
				if( this.GetLanguage(myTA.id) == "" ) {
					this.SetLanguage(myTA.id,myLANG.type);
				}
			}
		}
	}
	
	//---------- Create Default Language List
	// this function need $melm object
	this.CreateDefaultLanguageList = function() {
		if( $melm == undefined ) { return; }
		var myARR = $melm.media.tx;
		for(var i=0; i<myARR.length; i++ ) {
			this.defaultLang.push(new Object());
			this.defaultLang[(this.defaultLang.length-1)].id = myARR[i];
			this.defaultLang[(this.defaultLang.length-1)].display = true;
			this.defaultLang[(this.defaultLang.length-1)].sync = true;
			this.defaultLang[(this.defaultLang.length-1)].type = "";
		}
	}
	
	
	//---------- add TEXT to Table
	// 1 line add to Table
	this.AddText = function(pTextAreaID,pLanguageType,pStart,pEnd,pAlign,pText) {
		var myTA = this.GetTextArea(this.data,pTextAreaID);
		if( myTA == undefined ) {
			myTA = this.NewTextArea(this.data,pTextAreaID);
		}
		var myLTable = this.GetTextLanguageTable(myTA,pLanguageType);
		if( myLTable == undefined ) {
			myLTable = this.NewTextLanguageTable(myTA,pLanguageType)
		}
		this.AddTextData(myLTable,pStart,pEnd,pAlign,pText);
	}
	//---------- get text area
	this.GetTextArea = function(pTA,pID) {
		var myOBJ = undefined;
		for( var i=0; i<pTA.length; i++ ) {
			if( pTA[i].id == pID ) {
				myOBJ = pTA[i];
				break;
			}
		}
		return(myOBJ);
	}
	//---------- get Language Table
	this.GetTextLanguageTable = function(pTA,pLanguageType) {
		if( pTA.data == undefined ) {
			return(undefined);
		}
		var myTAD = pTA.data;
		var myLTBL = undefined;
		for( var i=0; i<myTAD.length; i++ ) {
			if( myTAD[i].type == pLanguageType ) {
				myLTBL = myTAD[i];
				break;
			}
		}
		return(myLTBL);
	}
	//---------- create new text area
	this.NewTextArea = function(pTA,pTextAreaID) {
		pTA.push(new Object());
		var myNum = (pTA.length - 1);
		pTA[myNum].id = pTextAreaID;
		pTA[myNum].data = new Array();
		return(pTA[myNum]);
	}
	//---------- create language table
	this.NewTextLanguageTable = function(pTA,pLanguageType) {
		var myTAD = pTA.data;
		myTAD.push(new Object());
		var myNum = (myTAD.length - 1);
		myTAD[myNum].type = pLanguageType;
		myTAD[myNum].data = new Array();
		return(myTAD[myNum]);
	}
	//---------- add text to language table
	this.AddTextData = function(pLT,pSTART,pEND,pAlign,pTEXT) {
		var myLTD = pLT.data;
		myLTD.push(new Object());
		var myLine = myLTD[(myLTD.length-1)];
		myLine.start = pSTART;
		myLine.end = pEND;
		myLine.align = pAlign;
		myLine.text = pTEXT;
	}
	//---------- init
	this.init = function() {
		this.data = new Array();
		this.defaultLang = new Array();
	}
	//---------- constractor
	this.init();
}

//------------------------------------------------------------
// イメージ class
//------------------------------------------------------------
function MDCC_Image() {
	//---------- keep original image
	this.KeepOriginal = function(pImageIDs) {
		this.orgImages = new Array();
		for( var i=0; i<pImageIDs.length; i++ ) {
			var myID = pImageIDs[i];
			var myElm = $d.getElementById(myID);
			this.orgImages.push(new Object());
			var myLen = this.orgImages.length - 1;
			this.orgImages[myLen].id = myID;
			this.orgImages[myLen].src = myElm.src;
		}
	}
	//---------- Get original image src
	this.GetOriginalSRC = function(pID) {
		var myRET = "";
		for( var i=0; i<this.orgImages.length; i++ ) {
			var myID = this.orgImages[i].id;
			if( myID == pID ) {
				myRET = this.orgImages[i].src;
				break;
			}
		}
		return(myRET);
	}
	//---------- get property by time
	// <pTime>小数点込みの秒指定
	this.GetPathByTime = function(pID,pTime) {
		var myTime = pTime;
		var myLang = this.GetLanguage(pID);
		var myRET = "";
		var myDATA = this.data;
		for(var i=0; i<myDATA.length; i++ ) {
			var myIA = myDATA[i];
			if( myIA.id != pID ) {
				continue;
			}
			for( var j=0; j<myIA.data.length; j++ ) {
				var myLANG = myIA.data[j];
				if( myLANG.type != myLang ) {
					continue;
				}
				for( var k=0; k<myLANG.data.length; k++ ) {
					var myLINE = myLANG.data[k];
					if( myLINE.start <= myTime && myLINE.end >= myTime ) {
						myRET = myLINE.path;
						return(myRET);
					}
				}
			}
		}
		
		myRET = this.GetOriginalSRC(pID);
		return(myRET);	
	}
	//---------- Get Data Array
	// return data array from data table
	this.GetDataArray = function(pID,pLanguage) {
		var myARR = new Array();
		var myDATA = this.data;
		for(var i=0; i<myDATA.length; i++ ) {
			var myTA = myDATA[i];
			if( myTA.id != pID ) {
				continue;
			}
			for( var j=0; j<myTA.data.length; j++ ) {
				var myLANG = myTA.data[j];
				if( myLANG.type != pLanguage ) {
					continue;
				}
				for( var k=0; k<myLANG.data.length; k++ ) {
					var myLINE = myLANG.data[k];
					myARR.push(new Object());
					myARR[(myARR.length-1)].start = myLINE.start;
					myARR[(myARR.length-1)].end = myLINE.end;
					myARR[(myARR.length-1)].path = myLINE.path;
				}
			}
		}
		return(myARR);
	}
	
	//---------- Set Language
	this.SetLanguage = function(pID,pLanguage) {
		var myResult = false;
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				this.defaultLang[i].type = pLanguage;
				myResult = true;
				break;
			}
		}
		return(myResult);
	}
	//---------- Get Language
	this.GetLanguage = function(pID) {
		var myResult = "";
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				myResult = this.defaultLang[i].type;
				break;
			}
		}
		return(myResult);
	}
	//---------- Set Sync
	this.SetSync = function(pID,pBool) {
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				this.defaultLang[i].sync = pBool;
				break;
			}
		}
	}
	//---------- Get Sync
	this.GetSync = function(pID) {
		var myResult = true;
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				myResult = this.defaultLang[i].sync;
				break;
			}
		}
		return(myResult);
	}
	
	//---------- Check Default Language
	// this function called by MDCStartMabl
	this.CheckDefaultLanguage = function() {
		var myDATA = this.data;
		for(var i=0; i<myDATA.length; i++ ) {
			var myTA = myDATA[i];
			if( myTA.data.length > 0 ) {
				var myLANG = myTA.data[0];
				if( this.GetLanguage(myTA.id) == "" ) {
					this.SetLanguage(myTA.id,myLANG.type);
				}
			}
		}
	}
	//---------- Create Default Language List
	// this function need $melm object
	this.CreateDefaultLanguageList = function() {
		if( $melm == undefined ) { return; }
		var myARR = $melm.media.img;
		for(var i=0; i<myARR.length; i++ ) {
			this.defaultLang.push(new Object());
			this.defaultLang[(this.defaultLang.length-1)].id = myARR[i];
			this.defaultLang[(this.defaultLang.length-1)].display = true;
			this.defaultLang[(this.defaultLang.length-1)].sync = true;
			this.defaultLang[(this.defaultLang.length-1)].type = "";
		}
	}
	
	//---------- add IMAGE to Table
	// 1 line add to Table
	this.AddImage = function(pImageAreaID,pLanguageType,pPath,pStart,pEnd) {
		var myIA = this.GetImageArea(this.data,pImageAreaID);
		if( myIA == undefined ) {
			myIA = this.NewImageArea(this.data,pImageAreaID);
		}
		//
		var myLTable = this.GetImageLanguageTable(myIA,pLanguageType);
		if( myLTable == undefined ) {
			myLTable = this.NewImageLanguageTable(myIA,pLanguageType)
		}
		//
		this.AddImageData(myLTable,pPath,pStart,pEnd);
	}
	//---------- get image area
	this.GetImageArea = function(pIA,pID) {
		var myOBJ = undefined;
		for( var i=0; i<pIA.length; i++ ) {
			if( pIA[i].id == pID ) {
				myOBJ = pIA[i];
				break;
			}
		}
		return(myOBJ);
	}
	//---------- get Language Table
	this.GetImageLanguageTable = function(pIA,pLanguageType) {
		if( pIA.data == undefined ) {
			return(undefined);
		}
		var myIAD = pIA.data;
		var myLTBL = undefined;
		for( var i=0; i<myIAD.length; i++ ) {
			if( myIAD[i].type == pLanguageType ) {
				myLTBL = myIAD[i];
				break;
			}
		}
		return(myLTBL);
	}
	//---------- create new image area
	this.NewImageArea = function(pIA,pImageAreaID) {
		pIA.push(new Object());
		var myLen = (pIA.length - 1);
		pIA[myLen].id = pImageAreaID;
		pIA[myLen].data = new Array();
		return(pIA[myLen]);
	}
	//---------- create language table
	this.NewImageLanguageTable = function(pIA,pLanguageType) {
		var myIAD = pIA.data;
		myIAD.push(new Object());
		var myLen = (myIAD.length-1)
		myIAD[myLen].type = pLanguageType;
		myIAD[myLen].data = new Array();
		return(myIAD[myLen]);
	}
	//---------- add image to language table
	this.AddImageData = function(pLT,pPath,pSTART,pEND) {
		var myLD = pLT.data;
		myLD.push(new Object());
		var myLine = myLD[(myLD.length-1)];
		myLine.path = pPath;
		myLine.start = pSTART;
		myLine.end = pEND;
		if( this.preload ) {
			myLine.img = new Image();
			myLine.img.src = myLine.path;
		}
	}
	//---------- init
	this.init = function() {
		this.data = new Array();
		this.defaultLang = new Array();
	}
	//----------
	this.init();
	this.preload = false;
	this.orgImages = new Array();
}

//------------------------------------------------------------
// サウンドトラック class
//------------------------------------------------------------
function MDCC_MvSound() {
	//---------- get trackID
	this.GetTrackId = function(pID) {
		var myLang = this.GetLanguage(pID);
		var myRET = Array();
		var myDATA = this.data;
		for(var i=0; i<myDATA.length; i++ ) {
			var myIA = myDATA[i];
			if( myIA.id != pID ) {
				continue;
			}
			for( var j=0; j<myIA.data.length; j++ ) {
				var myLANG = myIA.data[j];
				if( myLANG.type != myLang ) {
					continue;
				}
				for( var k=0; k<myLANG.data.length; k++ ) {
					var myLINE = myLANG.data[k];
					myRET.push(myLINE.id);
				}
				return(myRET);
			}
		}
		return(myRET);
	}
	//---------- Set Language
	this.SetLanguage = function(pID,pLanguage) {
		var myResult = false;
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				this.defaultLang[i].type = pLanguage;
				myResult = true;
				break;
			}
		}
		return(myResult);
	}
	//---------- Get Language
	this.GetLanguage = function(pID) {
		var myResult = "";
		for( var i=0; i<this.defaultLang.length; i++ ) {
			if( this.defaultLang[i].id == pID ) {
				myResult = this.defaultLang[i].type;
				break;
			}
		}
		return(myResult);
	}
	
	//---------- Check Default Language
	// this function called by MDCStartMabl
	this.CheckDefaultLanguage = function() {
		var myDATA = this.data;
		for(var i=0; i<myDATA.length; i++ ) {
			var myTA = myDATA[i];
			if( myTA.data.length > 0 ) {
				var myLANG = myTA.data[0];
				if( this.GetLanguage(myTA.id) == "" ) {
					this.SetLanguage(myTA.id,myLANG.type);
				}
			}
		}
	}
	//---------- Create Default Language List
	// this function need $melm object
	this.CreateDefaultLanguageList = function() {
		if( $melm == undefined ) { return; }
		var myARR;
		if( $melm.media.flv.length > 0 ) {
			myARR = $melm.media.flv;
		} else if( $melm.media.wmv.length > 0 ) {
			myARR = $melm.media.wmv;
		} else if( $melm.media.qt.length > 0 ) {
			myARR = $melm.media.qt;
		} else {
			return;
		}
		for(var i=0; i<myARR.length; i++ ) {
			this.defaultLang.push(new Object());
			this.defaultLang[(this.defaultLang.length-1)].id = myARR[i];
			this.defaultLang[(this.defaultLang.length-1)].display = true;
			this.defaultLang[(this.defaultLang.length-1)].type = "";
		}
	}
	
	//---------- add Track to Table
	// 1 line add to Table
	this.AddMvSound = function(pMvAreaID,pLanguageType,pTrackID) {
		var myMA = this.GetMvArea(this.data,pMvAreaID);
		if( myMA == undefined ) {
			myMA = this.NewMvArea(this.data,pMvAreaID);
		}
		var myLTable = this.GetMvLanguageTable(myMA,pLanguageType);
		if( myLTable == undefined ) {
			myLTable = this.NewMvLanguageTable(myMA,pLanguageType)
		}
		this.AddTrackData(myLTable,pTrackID);
	}
	//---------- get mv area
	this.GetMvArea = function(pMA,pID) {
		var myOBJ = undefined;
		for( var i=0; i<pMA.length; i++ ) {
			if( pMA[i].id == pID ) {
				myOBJ = pMA[i];
				break;
			}
		}
		return(myOBJ);
	}
	//---------- get Language Table
	this.GetMvLanguageTable = function(pMA,pLanguageType) {
		if( pMA.data == undefined ) {
			return(undefined);
		}
		var myMAD = pMA.data;
		var myLTBL = undefined;
		for( var i=0; i<myMAD.length; i++ ) {
			if( myMAD[i].type == pLanguageType ) {
				myLTBL = myMAD[i];
				break;
			}
		}
		return(myLTBL);
	}
	//---------- create new movie area
	this.NewMvArea = function(pIA,pImageAreaID) {
		pIA.push(new Object());
		var myLen = (pIA.length - 1);
		pIA[myLen].id = pImageAreaID;
		pIA[myLen].data = new Array();
		return(pIA[myLen]);
	}
	//---------- create language table
	this.NewMvLanguageTable = function(pIA,pLanguageType) {
		var myIAD = pIA.data;
		myIAD.push(new Object());
		var myLen = (myIAD.length-1)
		myIAD[myLen].type = pLanguageType;
		myIAD[myLen].data = new Array();
		return(myIAD[myLen]);
	}
	//---------- add Track to language table
	this.AddTrackData = function(pLT,pTrackID) {
		var myLD = pLT.data;
		myLD.push(new Object());
		var myLine = myLD[(myLD.length-1)];
		myLine.id = pTrackID;
	}
	//---------- init
	this.init = function() {
		this.data = new Array();
		this.defaultLang = new Array();
	}
	//----------
	this.init();
}

//------------------------------------------------------------
// Movie Info class
//------------------------------------------------------------
function MDCC_MvInfo() {
	//---------- add Track to Table
	// 1 line add to Table
	this.AddMvInfo = function(pMvElmID,pPath) {
		var myDT = this.data;
		myDT.push(new Object());
		var myLen = myDT.length;
		myDT[(myLen-1)].id = pMvElmID;
		myDT[(myLen-1)].path = pPath;
	}
	//---------- 
	this.setMovieURL = function(pNumber) {
		var myDT = this.data;
		if( myDT.length < pNumber ) {
			return(false);
		}
		var myID = myDT[pNumber].id;
		var myURL = myDT[pNumber].path;
		
		//alert(myID+"|"+myURL);
		// set movie path
		$mmc.flv.setURL(myID,myURL);
		$mmc.wmv.setURL(myID,myURL);
		$mmc.qt.setURL(myID,myURL);
		return(true);
	}
	//---------- init
	this.init = function() {
		this.data = new Array();
	}
	//----------
	this.init();
}
//------------------------------------------------------------
// データ通信用SWF class
//------------------------------------------------------------
function MDCC_DC() {
	this.clsid_swf = 'd27cdb6e-ae6d-11cf-96b8-444553540000';
	//---------- make embed
	this.get_embed = function() {
		var mySRC = this.$url + '?' +this.makeFlashVars();
		var myTAG = "";
		myTAG += '<embed ';
		myTAG += ('src="'+mySRC+'" ');
		myTAG += ('FlashVars="'+this.makeFlashVars()+'" ');
		myTAG += ('quality="high" ');
		myTAG += ('bgcolor="#000000" ');
		myTAG += ('width="'+this.$width+'" ');
		myTAG += ('height="'+this.$height+'" ');
		myTAG += ('name="'+this.$id+'" ');
		myTAG += ('align="'+this.$align+'" ');
		myTAG += ('allowScriptAccess="always" ');
		myTAG += ('wmode="transparent" ');
		myTAG += ('type="application/x-shockwave-flash" ');
		myTAG += ('pluginspage="http://www.macromedia.com/go/getflashplayer" ');
		myTAG += '></embed>';
		return(myTAG);
	}
	//=============== make object
	this.get_object = function() {
		var mySRC = this.$url + '?' +this.makeFlashVars();
		var myTAG = "";
		myTAG += '<object ';
		myTAG += ('classid="clsid:' + this.clsid_swf + '" ');
		myTAG += 'codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" ';
		myTAG += ('width="'+this.$width+'" ');
		myTAG += ('height="'+this.$height+'" ');
		myTAG += ('id="'+this.$id+'" ');
		myTAG += ('align="'+this.$align+'" ');
		myTAG += ('>');
		myTAG += ('<param name="allowScriptAccess" value="always"/>');
		myTAG += ('<param name="movie" value="'+mySRC+'"/>');
		myTAG += ('<param name="quality" value="high"/>');
		myTAG += ('<param name="bgcolor" value="#000000"/>');
		myTAG += ('<param name="wmode" value="transparent"/>');
		myTAG += ('<param name="FlashVars" value="'+this.makeFlashVars()+'"/>');
		if( $wbi.ie < 0 ) {
			myTAG += this.get_embed();
		}
		myTAG += ('</object>');
		return(myTAG);
	}
	//----------
	this.makeFlashVars = function() {
		var mySTR = "";
		mySTR += ('i='+this.$id);
		mySTR += ('&m='+this.$ms);
		mySTR += ('&sno='+this.$sno);
		mySTR += ('&key='+this.$key);
		
		return(mySTR);
	}
	//----------
	this.openDC = function() {
		var myTAG = this.get_object();
		var myElm = $d.getElementById(this.dcID);
		if( myElm != undefined ) {
			myElm.innerHTML = myTAG;
		}
	}
	//----------
	this.rmDC = function() {
		var myElm = $d.getElementById(this.dcID);
		myElm.removeChild(myElm.childNode[0]);
	}
	//=============== define property
	this.dcID = "MABL_DC";
	this.$url = "";
	this.$width = "0";
	this.$height = "0";
	this.$align = "middle";
	this.$x = "0";
	this.$y = "0";
	this.$id = "MABLDCSWF";
	this.$ms = "LD";
	this.$sno = "";
	this.$key = "";

}


/*===============================================================
+
+ 受信用function
+
================================================================*/
//============== RESULT
// Call from SWF
function MDCI_SetResult(pFLG,pTEXT) {
	if( pFLG != "OK" ) {
		return;
	}
	// set movie
	$mdt.mio.setMovieURL(0);
	//
	MDCStartMabl();
}
// start mabl
function MDCStartMabl() {
	//---------- check default language
	$mdt.txo.CheckDefaultLanguage();
	$mdt.imgo.CheckDefaultLanguage();
	$mdt.tro.CheckDefaultLanguage();
	$mmc.mvsound.SetDefault();
	//---------- start MABL
	startMABL(100);
}
//============== TEXT
// Call from SWF
function MDCI_SetText(pID,pLang,pST,pET,pALIGN,pTEXT) {
	$mdt.txo.AddText(pID,pLang,pST,pET,pALIGN,pTEXT);
	return(true);
}
//============== IMAGE
// Call from SWF
function MDCI_SetImage(pID,pLang,pPATH,pST,pET) {
	$mdt.imgo.AddImage(pID,pLang,pPATH,pST,pET);
	return(true);
}
//============== MvSound
// Call from SWF
function MDCI_SetMvSound(pID,pLang,pTrackID) {
	$mdt.tro.AddMvSound(pID,pLang,pTrackID);
	return(true);
}
//============== MvInfo
// Call from SWF
function MDCI_SetMvInfo(pID,pPath) {
	$mdt.mio.AddMvInfo(pID,pPath);
	return(true);
}

/*===============================================================
+
+ データ通信SWF Setup
+
================================================================*/
//------------------------------------------------------------
// setup SWF
//------------------------------------------------------------
function MDCI_OpenDC(pSNO,pKEY) {
	$mdt.dc.$url = 'MABLDC.swf';
	$mdt.dc.$width = "1";
	$mdt.dc.$height = "1";
	$mdt.dc.$sno = pSNO;
	$mdt.dc.$key = pKEY;
	$mdt.dc.openDC();
}
function MDCI_RemoveDC() {
	//alert("DC remove");
	$mdt.dc.rmDC();
}

/***************************************************************
# MABL Media Controler
# extra command interface 
****************************************************************/
/*===============================================================
+ ready to start MABL
+ MABLシステム開始ファンクション
+ サーバーからデータを取得して処理を開始します。
+ ※このファンクションは通常window.onloadもしくはbody.onload
+ で設定します。
+
+ sno,key=字幕データのアクセスキー
================================================================*/
function MEC_StartMABL(pSNO,pKEY) {
	readyMABL(pSNO,pKEY);
}
/*===============================================================
+ stop MABL
+ MABL loop処理停止
+ readyMABL後のloop処理を停止します。
================================================================*/
function MEC_StopMABL() {
	stopMABL();
}
/*===============================================================
+
+ Movie Control
+
================================================================*/
//---------- Play
function MEC_MoviePlay() {
	$mmc.flv.play();
	$mmc.qt.play();
	$mmc.wmv.play();
}
//---------- Stop
function MEC_MovieStop() {
	$mmc.flv.stop();
	$mmc.qt.stop();
	$mmc.wmv.pause();
}

//---------- RePlay
function MEC_MovieRePlay() {
	MEC_MovieRewind();
	MEC_MoviePlay();
}
//---------- Rewind
function MEC_MovieRewind() {
	//$mmc.flv.seek(0);
	$mmc.flv.tseek(0);
	$mmc.wmv.tseek(0);
	$mmc.qt.tseek(0);
}
//---------- Step
// not use
function MEC_MovieStep() {
	
}
//---------- Seek
// % seek (flv only)
function MEC_MovieSeek(pValue) {
	$mmc.flv.seek(pValue);
}
//---------- Time Seek(sec exsample: 123.456)
function MEC_MovieTimeSeek(pValue) {
	$mmc.flv.tseek(pValue);
	$mmc.wmv.tseek(pValue);
	$mmc.qt.tseek(pValue);
}
//---------- Sound Language
function MEC_MovieSndLanguage(pLanguage) {
	$mmc.mvsound.SetLanguage(pLanguage);
}

//---------- Get Sound Volume
function MEC_MovieGetVolume() {
	return($mmc.mvsound.GetVolume());
}

//---------- Set Sound Volume
function MEC_MovieSetVolume(pVolume) {
	$mmc.mvsound.SetVolume(pVolume);
}

//---------- Get Movie Duration
function MEC_MovieGetDuration() {
	return($mmc.mtime.getDuration());
}
//---------- Get Current Time
function MEC_MovieGetTime() {
	return($mmc.currentTime);
}

/*===============================================================
+
+ TEXT Control
+
================================================================*/
//---------- Set Language
function MEC_TextSetLanguage(pID,pLanguage) {
	$mdt.txo.SetLanguage(pID,pLanguage);
}

//---------- Text Display ON/OFF
function MEC_TextDisplay(pID) {
	var dsp = $mdt.txo.GetLanguageDisplay(pID);
	$mdt.txo.SetLanguageDisplay(pID,(!dsp));
}
//---------- Text Set Display ON/OFF
function MEC_TextSetDisplay(pID,pBool) {
	$mdt.txo.SetLanguageDisplay(pID,pBool);
}
//---------- Text Display (bool)
function MEC_TextGetDisplay(pID) {
	var dsp = $mdt.txo.GetLanguageDisplay(pID);
	return(dsp);
}

//---------- Text Set Sync
function MEC_TextSetSync(pID,pBool) {
	$mdt.txo.SetSync(pID,pBool);
}
//---------- Text Set Sync
function MEC_TextGetSync(pID) {
	var ret = $mdt.txo.GetSync(pID);
	return(ret);
}

//---------- Text Get Data Array
function MEC_TextGetDataA(pID,pLanguage) {
	var ret = $mdt.txo.GetDataArray(pID,pLanguage);
	return(ret);
}

/*===============================================================
+
+ Image Control
+
================================================================*/
//---------- Set Language
function MEC_ImageSetLanguage(pID,pLanguage) {
	$mdt.imgo.SetLanguage(pID,pLanguage);
}

//---------- Image Set Sync
function MEC_ImageSetSync(pID,pBool) {
	$mdt.imgo.SetSync(pID,pBool);
}
//---------- Image Set Sync
function MEC_ImageGetSync(pID) {
	var ret = $mdt.imgo.GetSync(pID);
	return(ret);
}

//---------- Image Get Data Array
function MEC_ImageGetDataA(pID,pLanguage) {
	var ret = $mdt.imgo.GetDataArray(pID,pLanguage);
	return(ret);
}
/*===============================================================
+
+ FLV Expand : Use Flv version Only
+
================================================================*/
//---------- Progress load
function MEC_LoadedSize() {
	if( $mmc.flv.IsActive() ) {
		return ($mmc.flv.getLoadedSize());
	}
	return (-1);
}
//---------- TotalSize
function MEC_TotalSize() {
	if( $mmc.flv.IsActive() ) {
		return ($mmc.flv.getTotalSize());
	}
	return (-1);
}
function MEC_UserTask(userTask) {
	if($mmc.userT == null) {
	  stopMABL();
	  $mmc.userT = userTask;
    	  startMABL(100);
        }
}

