/*
# bmflStreamVS10.js VS10
# jconama  20060817 
bmStats() : ALL REQUEST PARAMETERS.
bmStats[0]  = LOCATION
bmStats[1]  = FIXEDURL
bmStats[2]  = DOCTITLE
bmStats[3]  = REFERRER
bmStats[4]  = JAVA
bmStats[5]  = SCREEN
bmStats[6]  = COLOR
bmStats[7]  = CLIENT_ACCOUNT 
bmStats[8]  = CLIENT_COUNTRY 
bmStats[9]  = CLIENT_ENCTYPE 
bmStats[10] = MEDIA_UR
bmStats[11] = MEDIA_AGENT
bmStats[12] = MEDIA_STREAM_ID
bmStats[13] = MEDIA_TITLE
bmStats[14] = MEDIA_DESC
bmStats[15] = MEDIA_CAMPAGIN
bmStats[16] = MEDIA_TYPE
bmStats[17] = MEDIA_DURATION
bmStats[18] = MEDIA_EVENT
bmStats[19] = MEDIA_END
*/

// padding
var bmStats = new Array();
bmStats[0]  = "";
bmStats[1]  = "";
bmStats[2]  = "";
bmStats[3]  = "";
bmStats[4]  = "";
bmStats[5]  = "";
bmStats[6]  = "";
bmStats[7]  = ""; 
bmStats[8]  = ""; 
bmStats[9]  = ""; 
bmStats[10] = "";
bmStats[11] = "";
bmStats[12] = "";
bmStats[13] = "";
bmStats[14] = "";
bmStats[15] = "";
bmStats[16] = "";
bmStats[17] = "";
bmStats[18] = "";
bmStats[19] = "";

var bmSLoc = 'statistik-gallup.net';
//var bmSLoc = 'login0.bmmetrix.com';
var bmSVer = 'VS10a';
//Interval in seconds between updates.
var bmSupdate_freq = 30;
var bmSdate = new Date();
var bmSTimer = 0;
var bmSTimer_start  = null;
var bmSend = true;
var bmSinitComp = false;
// Image used to hit the collection server
var bmSImg = new Image();
var first_load = false;
//Count of requests
var bmSCounter = 0;
//Requests queue
var bmSRequests = new Array();






bmSImg.onload = function() { 
   for(var i = 0; i< bmSRequests.length; i++) {
      bmSImg.setAttribute("src", bmSRequests[i]);
   }
   first_load = true
   bmSRequests.length = 0;
   bmSImg.onload = function() {}
};

function bmSInit(smac, smcc) {
    var furl = 'furl';
    var loc = document.location.href;
    var prot = document.location.protocol;
    if (furl.indexOf('R>') == 0) {
        furl = furl.substring(2);
        loc = furl;
    }
    var ref = document.referrer;
    
    var bmSEsc = function(str){return str.replace(/\*/g, '%2a').replace(/#/g, '%23')};
    bmStats[0] = bmSPrepField(loc);
    bmStats[1]= furl;
    bmStats[2]= bmSEsc(document.title);
    bmStats[3]= bmSEsc(ref);
    
    for (var x = 0; x < 4; x++)
    {
       if (bmStats[x].length > 256) {
          bmStats[x] = bmStats[x].substring(0,253) + '...';
       }
    }
    bmStats[4] = navigator.javaEnabled();
    if (window.screen) {
        bmStats[5]= screen.width+'x'+screen.height;
        bmStats[6]= screen.colorDepth;
    } 
    bmStats[7] = smac;
    bmStats[8] = smcc;
    bmStats[9] = "UTF-8";
}






function bmSGetStats(playerObj,durationString) {
    
    // bmStats[10] = playerObj.URL;
    //bmStats[10]=   document.getElementByName('video_link').value;
    
        
    //bmStats[11] = "WMP:" +  playerObj.versionInfo; 
    bmStats[11] = "FLASH:" +  GetSwfVer(); 
    //bmStats[12] = bmSPrepField(cm.getItemInfo("SM/id"));
    bmStats[12] = getQueryVariable("id");
   	bmStats[13] = getQueryVariable("id");
    //alert(bmStats[14])     
    
    //bmStats[13] = bmSPrepField(cm.getItemInfo("SM/Title"));
    //bmStats[14] = bmSPrepField(cm.getItemInfo("SM/Description"));
    //bmStats[16] = bmSPrepField(cm.getItemInfo("SM/Type"));
    bmStats[16] = "Streaming";
    
    bmStats[17] = durationString;
    bmSGetUpdateFreq(durationString);
    // We dont need this as there only on stream for flash video
    // Set it true
    bmStats[19] = "true";

    
    /*tmp = cm.getItemInfo("SM/END");
    tmp = tmp.toLowerCase();
    tmp = tmp.replace(/^\s*|\s*$/g,"");
    if (tmp == "true"){
       bmStats[19] = "true";
    } else {
       bmStats[19] = "false";
    }
   */ 

}

function bmSGetUpdateFreq(durationString) {
   /*
     IF DURATION = 00:00 DURATION UNAVALIABLE;
     IF DURATION    <=   00:03 IGNORE
     IF DURATION 3  -->  00:15 NO  UPDATE
     IF DURATION 16 -->  00:30 1  UPDATE
     IF DURATION 31 -->  01:00 2  UPDATE
     IF DURATION    >=   01:00 1  update every 30 seconds.
   */ 
        
   // var mins = parseInt(bmStats[17].substr(0, 2));
   // var secs = parseInt(bmStats[17].substr(3, 2));
    var dur = parseInt(durationString);
    
    bmSend = true;
    if (dur == 0) {
    } else if (dur <= 3 && dur > 0 ) {
        bmSend = false;
    } else if (dur <= 15 || dur > 60 ) {
        bmSupdate_freq = 30;
    } else if (dur <= 30) {
        bmSupdate_freq = Math.round(dur/2);
    } else if (dur <= 60) {
        bmSupdate_freq = Math.round(dur/3);
    }                                                   
}

function bmSendEvent(event) {
    
    /*Change Duration String in Streammetrix for flash player format Aziz:20070226*/
    var flv_mins = Math.floor(parseInt(bmStats[17])/ 60);
    if (flv_mins < 10)
    {
        flv_mins = "0" + flv_mins;
    } // end if
    var flv_secs = Math.floor(parseInt(bmStats[17]) % 60);
    if (flv_secs < 10)
    {
        flv_secs = "0" + flv_secs;
    } // end if
    flv_dur = flv_mins + ":" + flv_secs;
    
    bmStats[17]=flv_dur;
    /*End of Change*/
    
    bmStats[18] = event;
    if (event == "play") {
         bmStart_timer();
    } else if (event !="update") {
      bmStop_timer();
    }
    var d = new Date();
    var qs = bmStats.join("*");
    var sm_qs = window.location.protocol + '//' + bmSLoc + '/' + bmSVer + '/' + qs  + "*" + d.getTime() + '/'; 
    if(bmSend) {
      if (bmSCounter == 0) {
         bmSImg.setAttribute("src", sm_qs);
         
      } else if (first_load == false) {
         bmSRequests.push(sm_qs);
      } else {
         bmSImg.setAttribute("src", sm_qs);
      }
      ++bmSCounter;
    }
}

function bmSPrepField(encodedHtml) {
  if (encodedHtml.length > 256) {
        encodedHtml = encodedHtml.substring(0,253) + '...';
  }
  encodedHtml = encodedHtml.replace(/%/g, '');
  encodedHtml = encodedHtml.replace(/\?/g, '%3F');
  encodedHtml = encodedHtml.replace(/=/g,  '%3D');
  encodedHtml = encodedHtml.replace(/&/g,  '%26');
  encodedHtml = encodedHtml.replace(/@/g,  '%40');
  encodedHtml = encodedHtml.replace(/#/g,  '%23');
  encodedHtml = encodedHtml.replace(/\*/g,  '%2a');
  return(encodedHtml);
}

function bmSUpdateTimer() {
   if (bmSTimer) {
      clearTimeout(bmSTimer);
   }
   if (!bmSTimer_start)
      bmSTimer_start   = new Date();
   var   bmSTimer_now = new Date();
   var   bmSTimer_diff = bmSTimer_now.getTime() - bmSTimer_start.getTime();
   bmSTimer_now.setTime(bmSTimer_diff);
   if (bmSTimer_now.getSeconds()%bmSupdate_freq == 0 && bmSTimer_now.getSeconds()!=0) {
       bmSendEvent('update');
       clearTimeout(bmSTimer);
       bmSTimer_start   = new Date();
   }
   bmSTimer = setTimeout("bmSUpdateTimer()", 1000);
}

function bmStart_timer() {
   bmSTimer_start   = new Date();
   bmSTimer  = setTimeout("bmSUpdateTimer()", 1000);
}

function bmStop_timer() {
   if (bmSTimer) {
      clearTimeout(bmSTimer);
      bmSTimer  = 0;
   }
   bmSTimer_start = null;
}

function  bmflCaptureState(smac, smcc, NewState, mediaObj,durationString){

 

        if (!bmSinitComp) {
            bmSInit(smac, smcc);
            bmSinitComp = true;
        }
        
               
        bmSGetStats(mediaObj,durationString);
        
        switch(NewState){
            case 1:    // Stopped 
                bmSendEvent('stop');
                break;
            case 2:     // Paused
                bmSendEvent('pause');
                break;
            case 6:    // Buffering 
                bmSendEvent('load');
                break;
            case 3:    // Playing 
                bmSendEvent('play');
                break;
  
           case 8:    // MediaEnded 
                bmSendEvent('end');
                break;
           case 10:    // Ready 
                bmSendEvent('ready');
                break;
    
           case 7:    // Waiting 
                break;
           case 9:    // Transistioning 
                break;
        }
     
  

}


// Flash Player Version Detection - Rev 1.5
// Detect Client Browser type
// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;			
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
			var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

//custom --
function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  } 
}


