/* September 2008  Queue Manager for the SurferNETWORK Advertising Platform */  
/* File name: queue_manager_proto.js, located in ...Media/player/scripts/... */ 
/* Last updated February 19, 2009 to set video player "burn-in" to 12 seconds */
/* Last updated May 28, 2009 to set video player "burn-in" to 5 seconds */ 

theQueue = new Array;
// Columns: ["AdID","Duration","ReplacementType","CompBannerFileName","CompBannerClickTarget","AdFileName(URL)","AdClickTarget","playerCode"],
theQueue = [
["","","","","","","",""],
["","","","","","","",""],
["","","","","","","",""],
["","","","","","","",""],
["","","","","","","",""],
["","","","","","","",""],
["","","","","","","",""],
["","","","","","","",""],
["","","","","","","",""],
["","","","","","","",""]
];

var nextup_adid = 0;
var ad_semaphore = 0;

var statusA;
statusA = "ready"; // playing, queued
var statusB;
statusB = "ready"; // playing, queued
var statusC;
statusC = "ready"; // playing, queued
var statusD;
statusD = "ready"; // playing, queued
var statusE;
statusE = "ready"; // playing, queued
var statusF;
statusF = "ready"; // playing, queued
var statusG;
statusG = "ready"; // playing, queued

var nextSlot;
nextSlot = 0;
var nextLoad;
nextLoad = 0;
var theInfo;
theInfo = "";
var staname;
var sn_success_status;
var ai_click_flag;
ai_click_flag = 0;

//staname = "WXYZ";
staname = qcallsign;
var live_player = "Player";  // Others are: WM_Ad_Player_A, WM_Ad_Player_B, and the TargetSpot player which uses separate sw calls. 
var master_volume = 70;      // Example of usage: eval("document." + live_player + ".settings.volume = " + master_volume)
var master_volume_restore;   // Stores the master volume level to which players should be set after being restored from a Mute state
eval("document." + live_player + ".settings.volume = " + master_volume);

function printQueueStatus(){
/*
    theInfo = "<table border='1' cellspacing='0' cellpadding='2' style='font-family: arial; font-size: 8px; color: #dddddd;'>";
    theInfo += "<tr height='14' align='center'><td>Slot #</td><td>AdID</td><td>Duration</td><td>ReplacementType</td><td width='120' align='center'>CompBannerFileName</td><td>CompBannerClickTarget</td><td width='50'>AdFileName(URL)</td><td>AdClickTarget</td><td>PlayerCode</td></tr>"
	for(j=0; j<theQueue.length; j++){
	    theInfo += "<tr height='14' align='center'><td>" + j + "</td>"
		for(i = 0; i<theQueue[j].length; i++){
			theInfo += "<td>&nbsp;" + theQueue[j][i] + "</td>";
		}
			theInfo += "</tr>";
	}
	theInfo += "</table><br>";
	theInfo += "<span style='font-family: arial; font-size: 12px;'>";
	theInfo += "StatusA = <b>" + statusA + "</b>;&nbsp;&nbsp;&nbsp;StatusB = <b>" + statusB + "</b>;&nbsp;&nbsp;&nbsp;StatusC = <b>" + statusC + "</b>;&nbsp;&nbsp;&nbsp;StatusD = <b>" + statusD + "</b>;&nbsp;&nbsp;&nbsp;StatusE = <b>" + statusE + "</b>;&nbsp;&nbsp;&nbsp;StatusF = <b>" + statusF + "</b>;&nbsp;&nbsp;&nbsp;StatusG = <b>" + statusG + "</b><br>";
	theInfo += "nextSlot = <b>" + nextSlot + "</b>;&nbsp;&nbsp;&nbsp;nextLoad = <b>" + nextLoad + "</b><br>";
	theInfo += "</span>";
	document.getElementById('queue_status').innerHTML = theInfo;
*/
}

function clearSlot(x){
    theQueue[x][0] = "";
    theQueue[x][1] = "";
    theQueue[x][2] = "";
    theQueue[x][3] = "";
    theQueue[x][4] = "";
    theQueue[x][5] = "";
    theQueue[x][6] = "";
         switch(theQueue[x][7]){
            case 'A':
              statusA = "ready";
              break;
            case 'B':
              statusB = "ready";
              break;
            case 'C':
              statusC = "ready";
              break; 
            case 'D':
              statusD = "ready";
              break;
            case 'E':
              statusE = "ready";
              break;
            case 'F':
              statusF = "ready";
              break;
            default:	   
		      break;
         };     
    theQueue[x][7] = "";
//    printQueueStatus();    
}


function searchAdID(x){
   // find and return the value of "j" for the row holding the AdID = "x"
   for(j=0; j<theQueue.length; j++){
      if(theQueue[j][0] == x){return j;}
   }
   return -1; 
}


function tryToLoadAd(){
   if(theQueue[nextLoad][0] != ""){
         switch(theQueue[nextLoad][2]){
            case '2':
              if(statusC == "ready"){loadObjectC(theQueue[nextLoad][0])}
              else if(statusD == "ready"){loadObjectD(theQueue[nextLoad][0])}
              break;
            case '3':
              if(statusE == "ready"){loadObjectE(theQueue[nextLoad][0])}
              else if(statusF == "ready"){loadObjectF(theQueue[nextLoad][0])}
              break;
            case '4':
              if(statusA == "ready"){loadObjectA(theQueue[nextLoad][0])}
              else if(statusB == "ready"){loadObjectB(theQueue[nextLoad][0])}
              break; 
            case '8':
              if(statusA == "ready"){loadObjectA(theQueue[nextLoad][0])}
              else if(statusB == "ready"){loadObjectB(theQueue[nextLoad][0])}
              break; 
            default:	   
		      break;
         }     
   }    
}

function loadObjectA(x){
   // loads the Object with the information for AdID = "x"
   var z = searchAdID(x);
   
 if(z != -1){   
   if(theQueue[z][5] != ""){
              document.WM_Ad_Player_A.URL = theQueue[z][5];
           } else {
              document.WM_Ad_Player_A.URL = "http://nick8.surfernetwork.com/Media/player/gateway/day-sn_gateway.wmv";
           }
   //revcountbwd = 0;
   theQueue[z][7] = "A";
   statusA = "queued";
   if(theQueue[z][2] == 8){
      if(theQueue[z][3] != ""){
         document.getElementById('playerObjectG').innerHTML = "<img src='" + theQueue[z][3] + "' height='250'>";
         statusG = "queued";
      }
   }
   document.WM_Ad_Player_A.settings.mute = true;
   setTimeout("document.WM_Ad_Player_A.controls.stop(); document.WM_Ad_Player_A.controls.currentPosition = 0;", 5000);
   nextLoad = (nextLoad + 1)%10;
 }   
}

function loadObjectB(x){
   // loads the Object with the information for AdID = "x"
   var z = searchAdID(x);
   
 if(z != -1){    
   if(theQueue[z][5] != ""){
             document.WM_Ad_Player_B.URL = theQueue[z][5];
           } else {
              document.WM_Ad_Player_B.URL = "http://nick8.surfernetwork.com/Media/player/gateway/day-sn_gateway.wmv";
           }
   //revcountbwdB = 0;
   theQueue[z][7] = "B";
   statusB = "queued";
   if(theQueue[z][2] == 8){
      if(theQueue[z][3] != ""){
         document.getElementById('playerObjectG').innerHTML = "<img src='" + theQueue[z][3] + "' height='250'>";
         statusG = "queued";
      }
   }
   document.WM_Ad_Player_B.settings.mute = true;
   setTimeout("document.WM_Ad_Player_B.controls.stop(); document.WM_Ad_Player_B.controls.currentPosition = 0;", 5000);
   nextLoad = (nextLoad + 1)%10;
 }
}

function loadObjectC(x){
   // loads the Object with the information for AdID = "x"
   var z = searchAdID(x);
   
 if(z != -1){     
   if(theQueue[z][4] != ""){
              document.getElementById('playerObjectC').innerHTML = "<a onclick='ai_count_click()' href='" + theQueue[z][4] + "' target='_blank'><img src='" + theQueue[z][3] + "' height='250'></a>";
           } else {
              document.getElementById('playerObjectC').innerHTML = "<img src='" + theQueue[z][3] + "' height='250'>";
           }
   theQueue[z][7] = "C";
   statusC = "queued";
   nextLoad = (nextLoad + 1)%10;
  }
}

function loadObjectD(x){
   // loads the Object with the information for AdID = "x"
   var z = searchAdID(x);
   
 if(z != -1){    
   if(theQueue[z][4] != ""){
              document.getElementById('playerObjectD').innerHTML = "<a onclick='ai_count_click()' href='" + theQueue[z][4] + "' target='_blank'><img src='" + theQueue[z][3] + "' height='250'></a>";
           } else {
              document.getElementById('playerObjectD').innerHTML = "<img src='" + theQueue[z][3] + "' height='250'>";
           }
   theQueue[z][7] = "D";
   statusD = "queued";
   nextLoad = (nextLoad + 1)%10;
//   printQueueStatus();
  }
}

function loadObjectE(x){
   // loads the Object with the information for AdID = "x"
   var z = searchAdID(x);
   
 if(z != -1){       
   theQueue[z][7] = "E";
   statusE = "queued";
   nextLoad = (nextLoad + 1)%10;
//   printQueueStatus();
  }
}

function loadObjectF(x){
   // loads the Object with the information for AdID = "x"
   var z = searchAdID(x);
   
 if(z != -1){     
   theQueue[z][7] = "F";
   statusF = "queued";
   nextLoad = (nextLoad + 1)%10;
//   printQueueStatus();
  }
}

function playAdID(x){

   var z = searchAdID(x);
   
 if(z != -1){     
   ad_semaphore = 1;
   nextup_adid = "0";
   var dur = theQueue[z][1]; // if!z then return
   var playerID = theQueue[z][7];
   switch(playerID) {
      case 'A':
           if(theQueue[z][2] == 8){
              document.getElementById('playerObjectG').style.left = "475px";
              document.getElementById('playerObjectG').style.top = "0px";
              statusG = "PLAYING";
           } else {
		      document.getElementById('playerObjectA').style.left = "475px";
              document.getElementById('playerObjectA').style.top = "0px";
           }
           document.getElementById('theBanners').style.display = "none";
        // document.Player.settings.mute=true;
		   document.Player.settings.volume = 0;
		   setTimeout("document.Player.settings.volume = 0;", 1000);  //////////

           live_player = "WM_Ad_Player_A";
        
		if (main_player_muted == 1){
			   eval("document." + live_player + ".settings.volume = 0")
		} else {           
			   eval("document." + live_player + ".settings.volume = " +  main_player_vol)
		}      
           revcountbwd = 1;
           document.WM_Ad_Player_A.controls.play();
           statusA = "PLAYING";
		   break;
      case 'B':
		   if(theQueue[z][2] == 8){
              document.getElementById('playerObjectG').style.left = "475px";
              document.getElementById('playerObjectG').style.top = "0px";
              statusG = "PLAYING";
           } else {
		      document.getElementById('playerObjectB').style.left = "475px";
              document.getElementById('playerObjectB').style.top = "0px";
           }
           document.getElementById('theBanners').style.display = "none";
       //  document.Player.settings.mute=true;
		   document.Player.settings.volume = 0;
		   setTimeout("document.Player.settings.volume = 0;", 1000);  //////////
       
           live_player = "WM_Ad_Player_B";
         
		if (main_player_muted == 1){
			   eval("document." + live_player + ".settings.volume = 0")
		} else {           
			   eval("document." + live_player + ".settings.volume = " +  main_player_vol)
		}          
         
           revcountbwdB = 1;
           document.WM_Ad_Player_B.controls.play();
           statusB = "PLAYING";
		   break;
      case 'C':
		   document.getElementById('playerObjectC').style.left = "475px";
           document.getElementById('playerObjectC').style.top = "0px";
           document.getElementById('theBanners').style.display = "none";
           document.Player.controls.play();
           statusC = "PLAYING";
		   break;
      case 'D':
		   document.getElementById('playerObjectD').style.left = "475px";
           document.getElementById('playerObjectD').style.top = "0px";
           document.getElementById('theBanners').style.display = "none";
           document.Player.controls.play();
           statusD = "PLAYING";
		   break; 
	  case 'E':
		   document.getElementById('playerObjectE').style.left = "475px";
           document.getElementById('playerObjectE').style.top = "0px";
           document.getElementById('theBanners').style.display = "none";
           document.Player.settings.volume = 0;
           ts_streamEvent('playAd',dur);
           /*
           if (TS_On != 0){
              setTimeout("ts_streamEvent('playAd'," + dur + ")", 250);
           } else {
              ts_streamEvent('playAd',dur);           
           }
           */
           statusE = "PLAYING";
		   break;
	  case 'F':
		   document.getElementById('playerObjectE').style.left = "475px";
           document.getElementById('playerObjectE').style.top = "0px";
           document.getElementById('theBanners').style.display = "none";
           document.Player.settings.volume = 0;
           ts_streamEvent('playAd',dur);
           /*
           if (TS_On != 0){
              setTimeout("ts_streamEvent('playAd'," + dur + ")", 250);
           } else {
              ts_streamEvent('playAd',dur);           
           }           
           */
           statusF = "PLAYING";
		   break;
	  default:	   
	       // There is a problem. Reset all similar player objects.
	       // There does not seem to be an object loaded with AdID
	       // (Need a startup hysteresis) e.g. if startupvariable != 1, then skip
	       if(theQueue[z][2] == 2){
              for(zz=0; zz<theQueue.length; zz++){
                  if(theQueue[zz][7] == 'C' || theQueue[zz][7] == 'D'){clearSlot(zz);statusC = "ready";statusD = "ready";}
              }
           }       
	       if(theQueue[z][2] == 3){
              for(zz=0; zz<theQueue.length; zz++){
                  if(theQueue[zz][7] == 'E'){clearSlot(zz);statusE = "ready";}
              }
              tryToLoadAd(); // testing
           } 
          
	       sn_success_status = "False";
           reportTrafficStat(x,staname,sn_success_status,0);  //adid, qcallsign, success
		   break;
    }
   // Set the Master Volume for the Live Player here
   document.getElementById('queue_status').innerHTML = "In playAdID(x): " + ad_semaphore + "; " + nextup_adid + "; " + x;
   setTimeout("resetObjectAdID(" + x + ")", dur*1000+300);
    var now1 = new Date();
    
  } else {
  document.getElementById('queue_status').innerHTML = "In playAdID(x) - Cannot find ad: " + ad_semaphore + "; " + nextup_adid + "; " + x;
  }
}
 
function resetObjectAdID(x){
   var z = searchAdID(x);
   
 if(z != -1){     
   var playerID = theQueue[z][7];
  
   switch(playerID)  {
      case 'A':
           document.getElementById('playerObjectA').style.left = "975px";
           document.getElementById('playerObjectA').style.top = "600px";
           
           //document.WM_Ad_Player_A.settings.mute = true;
           document.WM_Ad_Player_A.settings.volume = 0;
           document.WM_Ad_Player_A.controls.stop();
           revcountbwd = 0;
           statusA = "ready";
           document.getElementById('playerObjectG').style.left = "0px";
           document.getElementById('playerObjectG').style.top = "750px";
           statusG = "ready";
           document.getElementById('theBanners').style.display = "block";
           sn_success_status = "True";
           if(ai_click_flag == 1){
              reportTrafficStat(x,staname,sn_success_status,1);  //adid, qcallsign, success
              ai_click_flag = 0;
           } else {
              reportTrafficStat(x,staname,sn_success_status,0);  //adid, qcallsign, success
           }
		   break;  
      case 'B':
           document.getElementById('playerObjectB').style.left = "1300px";
           document.getElementById('playerObjectB').style.top = "600px";
           
          // document.WM_Ad_Player_B.settings.mute = true;
           document.WM_Ad_Player_B.settings.volume = 0;
           
           document.WM_Ad_Player_B.controls.stop();
           revcountbwdB = 0;
           statusB = "ready";
           document.getElementById('playerObjectG').style.left = "0px";
           document.getElementById('playerObjectG').style.top = "750px";
           statusG = "ready";
           document.getElementById('theBanners').style.display = "block";
           sn_success_status = "True";
           if(ai_click_flag == 1){
              reportTrafficStat(x,staname,sn_success_status,1);  //adid, qcallsign, success
              ai_click_flag = 0;
           } else {
              reportTrafficStat(x,staname,sn_success_status,0);  //adid, qcallsign, success
           }
		   break; 
      case 'C':
           document.getElementById('playerObjectC').style.left = "0px";
           document.getElementById('playerObjectC').style.top = "600px";
           document.getElementById('playerObjectC').innerHTML = "";
           statusC = "ready";
           sn_success_status = "True";
           if(ai_click_flag == 1){
              reportTrafficStat(x,staname,sn_success_status,1);  //adid, qcallsign, success
              ai_click_flag = 0;
           }   
           document.getElementById('theBanners').style.display = "block";
		   break;    
      case 'D':
           document.getElementById('playerObjectD').style.left = "325px";
           document.getElementById('playerObjectD').style.top = "600px";
           document.getElementById('playerObjectD').innerHTML = "";
           document.getElementById('theBanners').style.display = "block";           
           statusD = "ready";
           sn_success_status = "True";
           if(ai_click_flag == 1){
              reportTrafficStat(x,staname,sn_success_status,1);  //adid, qcallsign, success
              ai_click_flag = 0;
           }   
		   break; 
	  case 'E':
           document.getElementById('playerObjectE').style.left = "650px";
           document.getElementById('playerObjectE').style.top = "600px";
           document.getElementById('playerObjectE').style.backgroundColor = "#555555";
		   statusE = "ready";
			TS_On = 0;
			Is_TS_Muted = 1;
           statusE = "ready";
           document.getElementById('theBanners').style.display = "block";
           sn_success_status = "True";
       //    reportTrafficStat(x,staname,sn_success_status,1);  //adid, qcallsign, success   
		   break;   
	  case 'F':
           document.getElementById('playerObjectE').style.left = "650px";
           document.getElementById('playerObjectE').style.top = "600px";
           
           	TS_On = 0;
			Is_TS_Muted = 1;
           statusF = "ready";
           document.getElementById('theBanners').style.display = "block";
           sn_success_status = "True";
       //    reportTrafficStat(x,staname,sn_success_status,1);  //adid, qcallsign, success   
		   break;	
/**/		   
	  default:	  
           sn_success_status = "False";
           reportTrafficStat(x,staname,sn_success_status,0);  //adid, qcallsign, success	  
		   break;
    }                   

    ad_semaphore = 0;
    document.getElementById('queue_status').innerHTML = "In resetObjectAdID(x) Ad found: " + ad_semaphore + "; " + nextup_adid;

    if (nextup_adid != 0){  
      clearSlot(z);
      tryToLoadAd();
     // document.Player.settings.mute=false;
      live_player = "Player";
      if (main_player_muted == 1){
        eval("document." + live_player + ".settings.volume = 0");
      } else {
        eval("document." + live_player + ".settings.volume = " +  main_player_vol);
      }
      playAdID(nextup_adid);
    } else {
      clearSlot(z);
      tryToLoadAd();
      //document.Player.settings.mute=false;
      live_player = "Player";
	  if (main_player_muted == 1){
        eval("document." + live_player + ".settings.volume = 0");
      } else {
        eval("document." + live_player + ".settings.volume = " +  main_player_vol);
      }
      //main_player_muted = 0;
    }
    
  } else {
  ad_semaphore = 0;
  document.getElementById('queue_status').innerHTML = "In resetObjectAdID(x) Ad NOT found: " + ad_semaphore + "; " + nextup_adid;
  }
}

// On "Stopped"
// Match PlayerCode (theQueue[j][7] = A or B); status + theQueue[j][7] = "empty"; clearSlot(j);


// This code gets the file URL and optionally the banner from AndoMedia

	function loadXML(url, handler, x){
	     if(document.implementation && document.implementation.createDocument){
	         var xmldoc = document.implementation.createDocument("", "", null);
	         xmldoc.onload = function(){ handler(xmldoc, url);}
	     } else if(window.ActiveXObject){
	         var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
	         xmldoc.onreadystatechange = function(){if(xmldoc.readyState == 4) handler(xmldoc, url, x);}
	     } else {
	         alert('Your browser can\'t handle this script');
		     return;
		 }
	     xmldoc.load(url);
	}
	
	function parseAdData(xmldoc, url, x){
	     
	     var items = xmldoc.getElementsByTagName("item");
	     
	     for(var i = 0; i < items.length; i++){
			 var e = items[i];
			 var adid = e.getElementsByTagName("adid")[0].firstChild.data;
			 var adURL_high = e.getElementsByTagName("adURL_high")[0].firstChild.data;
			 if(e.getElementsByTagName("bannerURL")[0]){var banner = e.getElementsByTagName("bannerURL")[0].firstChild.data; if(banner == "|"){banner = "../images/ando_media.jpg"}} else {var banner = "../images/ando_media.jpg"}

			// var row = table.insertRow(i+1);
			// row.insertCell(0).appendChild(document.createTextNode(adid));
			// row.insertCell(1).appendChild(document.createTextNode(adURL_high));
			// row.insertCell(2).appendChild(document.createTextNode(banner));
	     }
	     //document.getElementById('test_div').innerHTML = adURL_high;
	     theQueue[x][3] = banner;
         //theQueue[x][4] = compbannerclickthru;
         theQueue[x][5] = adURL_high;
         // theQueue[x][6] = adclicktarget;

         return;
	}

    function get_XML(x){
         var cbnow = new Date();
		//var getaddress = "http://collective.andohs.net/amtmsvc/RunSpotService.asmx/RunSpot?sip=-1&latitude=-1&longitude=-1&sid=2797&minduration=25&maxduration=65";
		//var getaddress = "http://nick8.surfernetwork.com/Media/player/view/ando_response.xml?sip=-1&latitude=-1&longitude=-1&sid=7275&minduration=25&maxduration=65";
		var getaddress = "http://nick8c.surfernetwork.com/Media/player/view/ando_response.aspx?sip=-1&latitude=-1&longitude=-1&sid=2797&minduration=55&maxduration=65&cbnow=" + cbnow;
		loadXML(getaddress, parseAdData, x);
    }
    
function getXMLHTTPRequest() {
     try {
     req = new XMLHttpRequest();
     } catch(err1) {
       try {
       req = new ActiveXObject("Msxml2.XMLHTTP");
       } catch(err2) {
         try {
         req = new ActiveXObject("Microsoft.XMLHTTP");
         } catch(err3) {
           req = false;
         }
       }
     }
     return req;
}

var remipadd = "OTDB - C";
var ErrorNo = 0;
var ad_rep_http = getXMLHTTPRequest();

function reportTrafficStat(x,y,z,c) {  //adid, qcallsign, success, click
    //var myurl = "http://lightningstream.surfernetwork.com/Media/player/view/dbAdReporting.aspx";
    var myurl = "dbAdReporting.aspx";
    myRand = parseInt(Math.random()*999999999999999);
    var modurl = myurl + "?CallLTR=" + y + "&adID=" + x + "&Success=" + z + "&click=" + c + "&errmsg=0&rand=" + myRand;
    //document.getElementById('queue_status').innerHTML = "?CallLTR=" + qcallsign.toUpperCase() + "&adID=" + int_gw_AdID + "&Success=" + sn_success_status + "&errmsg=0&rand=" + myRand;
    document.getElementById('queue_status').innerHTML = modurl;

   try { 
    ad_rep_http.open('get', modurl, true);
    ad_rep_http.onreadystatechange = ad_rep_useHttpResponse;
    ad_rep_http.send(null);
    } catch(err1) {
        return;
    }
}

function ad_rep_useHttpResponse() {
    if (ad_rep_http.readyState == 4) {
      if(ad_rep_http.status == 200) {
         var mytext = ad_rep_http.responseText;
        // document.getElementById('myPageElement').innerHTML = mytext;
        document.getElementById('queue_status').innerHTML = mytext;
        }
       //  if(windows_on == "yes"){logwindow.document.writeln(mytext);}
      } else {
        //s document.getElementById('myPageElement').innerHTML = "Not yet";
      }
}

function ai_count_click(){
     ai_click_flag = 1;
}    

function ai_click(x){
    //    var int_gw_AdID = eval("gw_AdID" + x);
          var int_ai_AdID = x;
          reportTrafficStat(int_ai_AdID,qcallsign,sn_success_status,1);  //adid, qcallsign, success
}

