// JavaScript Document
// In diesem Script wird ein Objekt beschrieben, das die Wiedergabe von Sounds steuert.

//Unterstützt der Browser das W3C-DOM?
function w3c(){
  return document.documentElement;
}

// Die folgenden Funktionen liefern true wenn der Browsertyp ihrem Namen entspricht.
function firefox(){
  return (navigator.userAgent.toLowerCase().indexOf("firefox") > -1 && w3c());
}

function iexplorer(){
  return (navigator.appName.toLowerCase().indexOf("explorer") > -1 && w3c());
}

// Der Aufbau des Objektes wird beschrieben
function sound_obj(id){
// Der Parameter id sollte dem id- und name-Attribut des embed- bzw. object-Tags entsprechen.
  if(firefox() || iexplorer())
    this.obj = document.getElementById(id);
    // Bei einem Firefox bzw. Internet Explorer Browser beruht der Verweis auf das DOM des W3C
  this.play = sound_play;
  this.stop = sound_stop;
  this.pause = sound_pause;
  this.getVolume = sound_getVolume;
  this.setVolume = sound_setVolume;
  this.lade = sound_lade;
  this.getUrl = sound_getUrl;
  // Die Funktionen der Klasse werden nachfolgend beschrieben.
}

function sound_play(){
  if(firefox() || iexplorer())
    this.obj.Play();
    // Bei beiden Browsern wird die Funktion Play() aufgerufen.
}

function sound_stop(){
  if(firefox()){
    this.obj.Stop();
    this.obj.Rewind();
    /* Stop() pausiert die Wiedergabe und Rewind() lässt die Wiedergabe zurück
    zum Anfang springen */
  }
  else if(iexplorer())
    this.obj.Stop();
    /* Die Funktion Stop() des Internet Explorers kombiniert die beiden Funktion
    des Firefox Navigators */
}

function sound_pause(){
  if(firefox())
    this.obj.Stop();
    // Stop() lässt die Wiedergabe in einem Firefox Browser pausieren.
  else if(iexplorer())
    this.obj.Pause();
    // Pause() lässt die Wiedergabe in einem Internet Explorer Browser pausieren
}

function sound_getVolume(){
  if(firefox())
    return this.obj.GetVolume();
    /* In einem Firefox Browser wird die aktuelle Lautstärke über die Funktionen
    GetVolume() und SetVolume(neuerWert) verändert */
  else if(iexplorer())
    return this.obj.Volume;
    /* In einem Internet Explorer Browser wird auf die Lautstärke über die Eigenschaft
    Volume geregelt */
}

function sound_setVolume(wert){
  if(firefox())
    this.obj.SetVolume(wert);
  else if(iexplorer())
    this.obj.Volume = wert;
}

function sound_lade(url){
  if(firefox()){
    this.obj.SetURL(url);
    this.obj.Stop();
    /* In einem Firefox Browser wird mit SetURL(url) eine neue Datei geladen
    und sofort wiedergegeben. Um letzteres zu unterbinden wird die Wiedergabe mit
    Stop() pausiert */
  }
  else if(iexplorer())
    this.obj.FileName = url;
    /* In einem Internet Explorer Browser wird eine neue Datei über die Eigenschaft
    FileName geladen. */
}

function sound_getUrl(){
  if(firefox())
    return this.obj.GetURL();
  else if(iexplorer())
    return this.obj.FileName;
}