/*******************************************************************************
 multiWMPH_0_0.js by prog@hrubec.com 2008/03/06; HTTP://www.hrubec.com
 Copyright: (c) 2008 Hrubec Pavel. All Rights Reserved.
 Purport: WMP directing.
*******************************************************************************/

window.multiWMPH_0=
function 
 (
 container
 )
 {
 this.container=container;
	this.Start=function() // pozastavi prehravani vsech instanci
  {
  this.Play();
  this.started=true;
  };
	this.Stop=function() // pozastavi prehravani vsech instanci
  {
  for(i=0;i<this.container.length;i++) this.container[i].Stop();
  this.started=false;
  this.paused=false;
  };
	this.Pause=function() // pozastavi prehravani vsech instanci
  {
  for(i=0;i<this.container.length;i++) this.container[i].Pause();
  };
	this.Play=function() // pozastavi prehravani vsech instanci
  {
  for(i=0;i<this.container.length;i++) this.container[i].Play(i);
  };
	this.synchroPlay=function() // pozastavi prehravani vsech instanci
  {
  for(i=0;i<this.container.length;i++) this.container[i].synchroPlay(i);
  };
	this.pauseReverse=function() // pozastavi prehravani vsech instanci
  {
  if(this.started)
   {
			if(this.paused){this.Play()} else this.Pause();
   this.paused=!this.paused;
   }
  else this.Start(); 
  };
	this.alertPositions=function() // pozastavi prehravani vsech instanci
  {
  for(i=0;i<this.container.length;i++) this.container[i].alertPositions();
  };
  
 window._multiWMPH_0=this;

 o=this.buttP=document.createElement("button");
 document.body.appendChild(o);
 o.setInnerHTML=function(){this.innerHTML=(!_multiWMPH_0.started||_multiWMPH_0.paused?"play":"pause");};
 o.setInnerHTML();
 o.onclick=function(){_multiWMPH_0.pauseReverse();this.setInnerHTML();};

 o=document.createElement("button");
 document.body.appendChild(o);
 o.innerHTML="stop";
 o.onclick=function(){with(_multiWMPH_0){Stop(); buttP.setInnerHTML();};};

 o=document.createElement("button");
 document.body.appendChild(o);
 o.innerHTML="alert position";
 o.onclick=function(){with(_multiWMPH_0){alertPositions();};};

 o=document.createElement("button");
 document.body.appendChild(o);
 o.innerHTML="synchro play";
 o.onclick=function(){with(_multiWMPH_0){synchroPlay(); started=true; paused=false; buttP.setInnerHTML();};};

	setTimeout('_multiWMPH_0.Stop();', 1000); // nutna pocatecni inicializace (nefunguje hned - nusi se odlozit)
	 
	};

window.fileWMPH_0=
function 
 (
  fileName        // url multimedialniho souboru - kolik instanci bude pripraveno. Pokud je definovan dir, hleda se v nem maxInstances souboru s nazvem #.wav
 ,startPosition   // pocatecni pozice prehravani v sec. (z neznameho duvodu nefunguje prilis male cislo)
 ,playCount       // pocet opakovani cyklického prehravani (loop)
 ,bodyAppendChild // zda se ma v tele dokumentu zobrazovat objekt prehravace
 ,maxInstances    // pocet soucasne prehravanych instanci tohoto souboru  - kolik instanci bude pripraveno. Pokud budou pri volani this.playNext() jiz vyuzity vsechny, prehravani nejstarsi instance se ukonci (aby mohla byt spustena od zacatku). Cim vice bude pripraveno instanci, tim pomalejsi bude nabeh a vyssi vytizeni prostredku, ale hladsi prubeh prehravani.
 ,offsetPosition  // velikost odsazeni pozice prehravani kazde dalsi instance v sec.
 ,dir													// url adresare se seznamem souboru; fileName se pridava za id souboru ze seznamu (0..maxInstances-1)
 )
 {
 this.dir=dir;
 this.fileName=fileName;
 this.maxInstances=maxInstances||1;
 this.startPosition=startPosition;
 this.offsetPosition=offsetPosition;
 this.playCount=playCount;
 this.bodyAppendChild=bodyAppendChild;
 this.instances=[];
 this.addInstance=function()
  {
  /* ma vyznam jen pri pridavani instanci v realnem case (v prubehu prehravani)
  for(i=this.instances.length;i>this.instance;i--) // vytvorim misto pred aktual.
   {
   this.instances[i]=this.instances[i-1];
			};
  */
	 this.instances[this.instance]=so=document.createElement("object");
  so.setAttribute("classid", "CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95");
  so.setAttribute("codebase", "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701");
  so.setAttribute("standby", "Loading Microsoft Windows Media Player components...");
  so.fileName=(this.dir?this.dir+'/'+this.instance:'')+this.fileName;

//  so.loop=this.loop; // nefunguje ???
  so.playCount=playCount;
//  so.autoRewind=true;
  so.autoStart=false;
  if(this.bodyAppendChild) document.body.appendChild(so);  // jen pokud budu chtit zobrazit klasicky objekt (ovladani atd.)
  };
 // priprava objektu predem 
 for(this.instance=0;this.instance<this.maxInstances;this.instance++) this.addInstance();
 this.instance=0;
	this.playNext=function() // spusti prehravani dalsi instance
  {
  if(this.instances[this.instance].PlayState==2) // logicky nejdele bezici instance neni volna
   {/* pridavani v r.case vypnuto
   if(this.instances.length<this.maxInstances) this.addInstance()
   else*/ this.instances[this.instance].Stop();
			}
  this.instances[this.instance].Play();
  this.instance++;
  if(this.instance==this.instances.length)this.instance=0; // loop
  };
	this.Stop=function() 
  {
  for(instance=0;instance<this.maxInstances;instance++) this.instances[instance].Stop();
  /*if(this.offsetPosition||this.startPosition)*/ this.setPosition();
  };
	this.Pause=function()
  {
  for(instance=0;instance<this.maxInstances;instance++) this.instances[instance].Pause();
  };
	this.Play=function(i) 
  {
  for(instance=0;instance<this.maxInstances;instance++) this.instances[instance].Play();
  };


	this.setPosition=function() 
  {
		requiredPosition=this.startPosition; // pri nule zlobi - prvni instance se neposunuje spravne
  for(instance=0;instance<this.maxInstances;instance++)
   {		
   this.instances[instance].currentPosition=requiredPosition;
//   this.instances[instance].setPosition(requiredPosition);
		 requiredPosition+=this.offsetPosition;
   };
  };
	
	this.synchroPlay=function(i) 
  {
  reserve=0; // rezerva - globalni posun vsech instanci - nutne umisteni diff do kladnych hodnot (pokud currentPosition bude mensi nez requiredPosition)
		requiredPosition=this.startPosition-reserve;
  for(instance=0;instance<this.maxInstances;instance++)
		 {
		 currentPosition=this.instances[instance].currentPosition;
	 	diff=currentPosition-requiredPosition;
  	setTimeout('_multiWMPH_0.container['+i+'].instances['+instance+'].Play()',diff*1000);
		 requiredPosition+=this.offsetPosition;
			}
  };

	this.alertPositions=function() // pozastavi prehravani vsech instanci
  {
  t='';
  oP=0;
  for(instance=0;instance<this.maxInstances;instance++)
		 {
			cP=this.instances[instance].currentPosition;
			d=cP-oP;
			timing=60/d;
			oP=cP;
			t+='\n '+timing;
			};
  alert(t);
  };
 };