soundManager.url = './sm2.9/swf';

var global_name;
var global_artistName;
var global_id;


var songs  = [];

var nowPlaying = "NONE";

// Create a new sound and store it in songs for later use

function createNewSound(songID, URL, buttonLoc) {

  songs[songID] = [];
  songs[songID].playState  = "stopped";
  songs[songID].playEventHandlerCount = 0; 
  songs[songID].loaded = false; 

  // This is were Soundmanager is called to create a new sound object.  We
  // also setup event handlers callbacks to this code


  //alert('createNewSound songID = ' + songID);
  
  var songname = 'SONG_' + songID;
  var tmp = soundManager.createSound(
     {id: songname, 
      autoPlay: false,
      url: URL, 
      onfinish:function() {  smEventHandler(songID,buttonLoc, "FINISH"); }, 
      onpause:function() { smEventHandler( songID,  buttonLoc, "PAUSE"); },  
      onresume:function() { smEventHandler( songID,  buttonLoc, "RESUME"); },  
      onplay:function() { smEventHandler( songID,  buttonLoc, "PLAY"); }, 
      whileplaying:function() { playingEventHandler(songID)},
      onstop :function() { smEventHandler(songID,buttonLoc, "FINISH");}
      } );

   //alert("created " + tmp);
  songs[songID].sm2Obj  = tmp;
}



function whileLoading(songID) {

alert(songs[songID].sm2Obj.bytesTotal);
//    if(songs[songID].sm2Obj.bytesTotal  > 10000 ) {
 //       songs[songID].sm2Obj.play();
  //  }
    
}


// songID is a unique identifier that tell the songId, cdID, and 
// the ID of the element that generated this event.   
// The song can be controlled from the 
// 1) The artist Page
// 2) The free songs location
// 3) The main player at the top.


function playSong(name, songID, URL, artistName, action,  buttonLoc, artistID, free) {


   if( false ) {
    alert('playSong name:' + name);
    alert('playSong artistName:' + artistName);
    alert('playSong action: ' + action);
    alert('playSong songID: ' + songID);
    alert('playSong buttlonLoc: ' + buttonLoc);
    alert("playSong free = " + free);
    alert('playSong URL:' + URL);
   }

   if(!songs[songID] || (songs[songID].sm2Obj  == undefined)) {  
         createNewSound(songID, URL, buttonLoc);
   } else {  
         //alert("did not create song");
   }

   javaBeatLog('playSong() name: ' + name + ' artist: ' + artistName);

   setMainDisplay (name, songID, URL, artistName, action, artistID, free); 

   changeSongState('PLAYSTOP', songID, 'onClick', buttonLoc); 

   return true;

}


var dp_name = '';
var dp_id =  '';
var dp_URL = '' ;
var dp_artistName = '';
var dp_artistID = '';
var dp_action = '';
var dp_songID = '';
var dp_downloadURL = '';
var buttonName = '';

function setMainDloadURL(url) {

    dp_downloadURL = url;

}


function setMainDisplay  (name, songID, URL, artistName, action, artistID, free) {

// This function must be intialized or mainPlay() will fail.
// This will set up the defaults for the MainDisplay.

   dp_name = name;
   dp_songID = songID;
   dp_URL = URL ;
   dp_artistName = artistName;
   dp_action = action;
   mainNowDisplays = songID;
   dp_buttonLoc = "MARQUEE";
   dp_artistID = artistID;


   if(1==2) {
    alert("setMainDisplay dp_name = " + dp_name );
    alert("setMainDisplay dp_songID = " + dp_songID);
    alert("setMainDisplay dp_URL = " + dp_URL);
    alert("setMainDisplay dp_artistName = " + dp_artistName);
    alert("setMainDisplay dp_action = " + dp_action);
    alert("setMainDisplay dp_buttonLoc = " + dp_buttonLoc);
    alert("setMainDisplay dp_artistID = " + dp_artistID);
   }

   document.getElementById('playDisplay').innerHTML = '<table class=\"player\"><tr><td>' + dp_name + ' by ' + dp_artistName + '</td></tr></table>';

   if(free == 'free' ) {
      document.getElementById('BUTTON2').innerHTML = '<a onclick="mainDownload();"><img  id="MARQUEE_BUTTON2" class="button" src="images/william/FreeMusicButtonDNLOAD.gif" onMouseOver="changeSongState(\'DOWNLOAD\', \'USEGLOBAL_ID\', \'onMouseOver\', \'MARQUEE_BUTTON2\'); return false;" onMouseOut="changeSongState(\'DOWNLOAD\', \'USEGLOBAL_ID\', \'onMouseOut\', \'MARQUEE_BUTTON2\'); return false;" ></a>';
   } else {
      document.getElementById('BUTTON2').innerHTML = '<a onclick="mainAddToCart();"><img  id="MARQUEE_BUTTON2" class="button" src="images/william/CartButtonADD.gif" onMouseOver="changeSongState(\'ADDTOCART\', \'USEGLOBAL_ID\', \'onMouseOver\', \'MARQUEE_BUTTON2\'); return false;" onMouseOut="changeSongState(\'ADDTOCART\', \'USEGLOBAL_ID\', \'onMouseOut\', \'MARQUEE_BUTTON2\'); return false;" ></a>';
   }



}

function mainAddToCart() {


       ajax_add_to_cart(dp_artistID, dp_name, dp_songID, jsCartId );


}

function mainDownload() {

      //alert('mainDownload dp_URL = ' + dp_downloadURL);
      //alert('mainDownload jsCarId = ' + jsCartId);
      //alert('mainDownload dp_songID = ' + dp_songID);
      ajax_download_song(dp_downloadURL, jsCartId, dp_songID );  

}

function mainPlay() {

   if( false ) { 
     alert('mainPlay()');
     alert('songID =' + dp_songID);
   }


   if(!songs[dp_songID] || (songs[dp_songID].sm2Obj  == undefined)) {  
         createNewSound(dp_songID, dp_URL, dp_buttonLoc);
   }

   changeSongState('PLAYSTOP', dp_songID, 'onClick', "MARQUEE"); 

}


songLength = 3500;

function playingEventHandler( songID ) {

   if(songs[songID].playEventHandlerCount++ > songLength ) {

      var timeCount = songs[songID].playEventHandlerCount;   
      var vol = songs[songID].sm2Obj.volume;
      if (vol != 0) { 
        songs[songID].sm2Obj.setVolume(Math.max(vol-.50));
      } else {
        songs[songID].sm2Obj.stop();
      }
   }


}

//function smVolUp( songID ) {
   //var vol = songs[songID].sm2Obj.volume;
   var vol = soundManager.volume;
//alert("songmanger = " + soundManager);
//alert("songmanger vol = " + vol);
//   var newVol = vol + 10; 
//   if(newVol <= 100 ) {
      //songs[songID].sm2Obj.setVolume(Math.max(newVol));
 //     soundManager.setVolume = newVol;
  // }

//}

//function smVolDown( songID ) {
 //  var vol = songs[songID].sm2Obj.volume;
  // var newVol = vol - 10; 
   //if(newVol >= 0 ) {
      //songs[songID].sm2Obj.setVolume(Math.max(newVol));
    //  soundManager.setVolume = newVol;
   //}

//}

// Handles all events from soundManager.  The argument soundManagerAction says which one.

function smEventHandler( songID, buttonLoc, soundManagerAction) {

   var buttonStillThere = true;


   //alert('event handler buttonLoc = ' + buttonLoc);
   //alert('event handler songID = ' + songID );

   changeObj = document.getElementById(buttonLoc);
   mainObj = document.getElementById("MARQUEE");


   //alert("smEventHandler changeObj = " + changeObj);
   //alert("smEventHandler mainObj = " + mainObj);
  //alert("smEventHandler action = " + soundManagerAction);
   // Note:  We have to check to see if the button is still in the player section.
   // We might have replaced the page that this button was located.

   if(!changeObj) {
      //alert("button not available anymore");
      buttonStillThere = false; 
   }
       
   //alert(buttonStillThere);

   if(soundManagerAction == "FINISH") {

       songs[songID].playState  = "stopped";
       songs[songID].playEventHandlerCount = 0;  // Let them listen again
       if(changeObj = findSongInAA(songID)) {
         // Check to see if song if in Artist Play area. 
         changeObj.src = 'images/william/FreeMusicButtonPLAY.gif';
       }
  
       if(changeObj = findSongInFA(songID)) {
         // Check to see if song if FREE column area
         changeObj.src = 'images/william/FreeMusicButtonPLAY.gif';
       }

       if(changeObj = findSongInMQ(songID)) {
         // Check to see if song if MainDisplay area
         changeObj.src = 'images/william/FreeMusicButtonPLAY.gif';
       }

       songs[songID].showing= "FreeMusicButtonPLAY.gif";
       nowPlaying = "NONE";
   }

   if(soundManagerAction == "PLAY") {
       //alert("smEventHandler PLAY");

       songs[songID].playState  = "playing";



       if(changeObj = findSongInAA(songID)) {
         // Check to see if song if in Artist Play area. 
         changeObj.src = 'images/william/FreeMusicButtonPLAY-pause.gif';
       }

  
       if(changeObj = findSongInFA(songID)) {
         // Check to see if song if FREE column area
         changeObj.src = 'images/william/FreeMusicButtonPLAY-pause.gif';
       }

       if(changeObj = findSongInMQ(songID)) {
         // Check to see if song if MainDisplay area
         changeObj.src = 'images/william/FreeMusicButtonPLAY-pause.gif';
       }

       songs[songID].showing = 'FreeMusicButtonPLAY-pause.gif';

       nowPlaying = songID;

   }

   if(soundManagerAction == "PAUSE") {

       songs[songID].playState  = "paused";
       if(changeObj = findSongInAA(songID)) {
         // Check to see if song if in Artist Play area. 
         changeObj.src = 'images/william/FreeMusicButtonPLAY.gif';
       }

  
       if(changeObj = findSongInFA(songID)) {
         // Check to see if song if FREE column area
         changeObj.src = 'images/william/FreeMusicButtonPLAY.gif';
       }

       if(changeObj = findSongInMQ(songID)) {
         // Check to see if song if MainDisplay area
         changeObj.src = 'images/william/FreeMusicButtonPLAY.gif';
       }



       songs[songID].showing= "FreeMusicButtonPLAY.gif";
   }

   if(soundManagerAction == "RESUME") {
      //alert('RESUME id = ' + songID);
       nowPlaying = songID;
       songs[songID].playState  = "playing";

       if(changeObj = findSongInAA(songID)) {
         // Check to see if song if in Artist Play area. 
      //alert(changeObj);
         changeObj.src = 'images/william/FreeMusicButtonPLAY-pause.gif';
       }

  
       if(changeObj = findSongInFA(songID)) {
      //alert(changeObj);
         // Check to see if song if FREE column area
         changeObj.src = 'images/william/FreeMusicButtonPLAY-pause.gif';
       }

       if(changeObj = findSongInMQ(songID)) {
      //alert(changeObj);
         // Check to see if song if MainDisplay area
         changeObj.src = 'images/william/FreeMusicButtonPLAY-pause.gif';
       }

       songs[songID].showing = 'FreeMusicButtonPLAY-pause.gif';
   }



   return true;

}


// Look in Free area for song ID.  Free area convention for nameing is FR_<songID>;

function findSongInFA(songID) {


      return(document.getElementById('FA_' + songID));



}

// Look in Artist area for song ID.  Free area convention for nameing is AR_<songID>;

function findSongInAA(songID) {

      return(document.getElementById('AA_' + songID));


}

// Look in Marquee for song ID.  Free area convention for nameing is AR_<songID>;

function findSongInMQ(songID) {

      if(songID == dp_songID) {
        return(document.getElementById('MARQUEE'));
      } else {
        return null;
      }

     

}








// This routine is called either from an event from an href directly or
// through playSong() or addToCart() after they have done some processing.
// This changes the button State

var showem = false;

function changeSongState(buttonType, songID, action, buttonLoc) {

   showem = false; // debugging

   if(songID  == 'USEGLOBAL_ID') {
      songID = dp_songID;
   }

   if(showem) {
     alert("changeSongState: buttonLoc = " + buttonLoc);
     alert("changeSongState: buttonType=" +  buttonType);
     alert("changeSongState: songID=" +  songID);
     alert("changeSongState: action=" +  action);
   }

   if(songs[songID] == undefined) {
      songs[songID] = new Array();
      songs[songID].playState  = "stopped";
      songs[songID].showing = "FreeMusicButtonPLAY.gif";
   }



   changeObj = document.getElementById(buttonLoc);


   if(buttonType == "PLAYSTOP" ) {

     //alert("cs: songID = " + songID); 
     //alert("cs: action = " + action); 


     if( action == 'onMouseOver') {
	if(showem) {
		alert('mouseOver');
        }
        if(songs[songID].showing == "FreeMusicButtonPLAY.gif") {
            //alert("showing = " + songs[songID].showing);
            changeObj.src = 'images/william/FreeMusicButtonPLAY-roll.gif';
            songs[songID].showing = 'FreeMusicButtonPLAY-roll.gif';
        }
        if(songs[songID].showing == "FreeMusicButtonPLAY-pause.gif") {
            changeObj.src = 'images/william/FreeMusicButtonPLAY-pauseRoll.gif';
            songs[songID].showing = 'FreeMusicButtonPLAY-pauseRoll.gif';
        }
     } else if( action == 'onMouseOut') {
 	if(showem) { alert('mouseOut'); };
        if(songs[songID].showing == 'FreeMusicButtonPLAY-roll.gif') {
            changeObj.src = 'images/william/FreeMusicButtonPLAY.gif';
            songs[songID].showing = 'FreeMusicButtonPLAY.gif';
        }
        if(songs[songID].showing  == 'FreeMusicButtonPLAY-pauseRoll.gif' ) {
            changeObj.src = 'images/william/FreeMusicButtonPLAY-pause.gif';
            songs[songID].showing = 'FreeMusicButtonPLAY-pause.gif';
        }

     } else if ( action == 'onClick' ) {

          state = songs[songID].playState;

          //alert('onclick state = ' + state);
          switch (state) {
             case "stopped": 
                             //alert("starting song songID = " + songID); 
                             if(nowPlaying != "NONE") {
                               songs[nowPlaying].sm2Obj.stop();
                             }
                             songs[songID].sm2Obj.play();
                             break;
             case "paused":  songs[songID].sm2Obj.resume();
                             break;
             case "playing": songs[songID].sm2Obj.stop();
                             break;
          }


 

  

    } else { 

         alert('unknown play state');
    }

   }


   if(buttonType == "ADDTOCART" ) {
//alert("addtocart buttonLoc = "  + buttonLoc);

     changeObj = document.getElementById(buttonLoc);
     if( action == 'onMouseOver') {
          changeObj.src = 'images/william/CartButtonADD-roll.gif';
     } else  {
          changeObj.src = 'images/william/CartButtonADD.gif';
     } 

   }
   if(buttonType == "DOWNLOAD" ) {
//alert("download buttonLoc = "  + buttonLoc);
     changeObj = document.getElementById(buttonLoc);

     if( action == 'onMouseOver') {
          changeObj.src = 'images/william/FreeMusicButtonDNLOAD-roll.gif';
     } else  {
          changeObj.src = 'images/william/FreeMusicButtonDNLOAD.gif';
     } 

   }

}
