/******************************************************************************/
/*  Developed by:  Ken Sladaritz                                              */
/*                 Marshall Computer Service                                  */
/*                 2660 E End Blvd S, Suite 122                               */
/*                 Marshall, TX 75672                                         */
/*                 ken@marshallcomputer.net                                   */
/******************************************************************************/


/******************************************************************************/
/* JW player analytics section                                                */
/******************************************************************************/
var player=null;
var title=null;
var playlist=null;
var i_duration=0;
var i_stop_position=0;
var i_pause_count=0;
var i_stop_count=0;
var i_buffer_count=0;
var i_completed=0;
var i_buffer_time=0;
var i_buffer_percent=0;
var i_error='';
var i_newstate='';
var i_oldstate='';
var buff_start_time=0;
var buff_stop_time=0;

function reset_ka_variables()
{
 i_duration=0;
 i_stop_position=0;
 i_pause_count=0;
 i_stop_count=0;
 i_buffer_count=0;
 i_completed=0;
 i_buffer_time=0;
 i_buffer_percent=0;
 i_error=null;
 var i_newstate='';
 var i_oldstate='';
 buff_start_time=0;
 buff_stop_time=0;
}

function buffering_start()
{
 var d = new Date();
 buff_start_time = d.getTime();
}

function buffering_stop()
{
 if(buff_start_time)
 {
  var d = new Date();
  buff_stop_time = d.getTime();
  i_buffer_time += (buff_stop_time - buff_start_time)/1000;
  i_buffer_count++;
 }
}

function play_func(obj)   { i_pause_count++;}

function stop_func(obj)   { i_stop_count++; }

function timer_func(obj)  
{
 if(obj.position>i_stop_position) {i_stop_position = obj.position;}
 i_duration = obj.duration;
};

function buffer_func(obj) { i_buffer_percent = obj.percentage; }

function error_func(obj)  { i_error = obj.message;  ka_callback();}

function loaded_func(obj)  
{
 i_bytes_loaded = obj.loaded; 
 i_bytes_total = obj.total; 
 i_bytes_offset = obj.offset; 
};

function state_func(obj)  
{
 i_newstate = obj.newstate;
 i_oldstate = obj.oldstate;
 if(i_newstate=="BUFFERING") {buffering_start();}
 if(i_oldstate=="BUFFERING") {buffering_stop();}
 if(i_newstate=="COMPLETED") {i_completed=1; ka_callback();}
};


function playerReady(obj)
{ 
 ka_callback();
 player = document.getElementById(obj.id);
 player.addControllerListener("PLAY","play_func");
 player.addControllerListener("STOP","stop_func");
 player.addModelListener("TIME","timer_func");
 player.addModelListener("BUFFER","buffer_func");
 player.addModelListener("ERROR","error_func");
 player.addModelListener("LOADED","loaded_func");
 player.addModelListener("STATE","state_func");
};


function ka_callback()
{
 if(i_stop_position || i_error || i_completed || i_stop_count)
 {
  var xmlHttp;
  try {xmlHttp=new XMLHttpRequest();}
  catch (e)
  {  
   try {xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
   catch (e)
   {try
    {xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}
    catch (e)
    {return false;}
   }
  }

/*
  xmlHttp.onreadystatechange=function()
  {
   if(xmlHttp.readyState==4)
   {
    xmlResponse = xmlHttp.responseText;
    alert('ka_callback response: '+xmlResponse)
   }
  }
*/

  title = player.getPlaylist()[0].file;

  url  = "/sites/default/kalaam-extras/ka_callback.php";
  url += "?filename="+title;
  url += "&duration="+i_duration;
  url += "&stop_position="+i_stop_position;
  url += "&pause_count="+i_pause_count;
  url += "&stop_count="+i_stop_count;
  url += "&buffer_count="+i_buffer_count;
  url += "&completed="+i_completed;
  url += "&buffer_time="+i_buffer_time;
  url += "&buffer_percent="+i_buffer_percent;
  url += "&error="+i_error;
  url += "&sid="+Math.random(); 
  xmlHttp.open("GET",url,false);
  xmlHttp.send(null);
 }
 reset_ka_variables();
 buffering_start();
}


/******************************************************************************/
/* text window analytics section                                              */
/******************************************************************************/

var kctUrls    = new Array();
var durations  = new Array();
var kct_window = new Array();

function kct_window_id(url)
{
 var found=0;
 for (var i = 0; i < kctUrls.length; i++) {if(kctUrls[i]==url) {found=1; break;}} //check for existing window
 if(found==0)  {i++; kctUrls[i]=url; durations[i]=0;} // assign new window number
 return i; // current window assignment
}


function kct_open_windows()
{
 for (var i = 0; i < kctUrls.length; i++) 
 {if(kctUrls[i]) {if(kct_window[i].closed==false) {durations[i]++;}}} 
 setTimeout("kct_open_windows();",1000);
}

kct_open_windows();


function ka_callback_txt(title, i_duration, i_error)
{
  var xmlHttp;
  try {xmlHttp=new XMLHttpRequest();}
  catch (e)
  {  
   try {xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
   catch (e)
   {try
    {xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}
    catch (e)
    {return false;}
   }
  }

/*
  xmlHttp.onreadystatechange=function()
  {
   if(xmlHttp.readyState==4)
   {
    xmlResponse = xmlHttp.responseText;
    alert('ka_callback response: '+xmlResponse)
   }
  }
*/

  url  = "/sites/default/kalaam-extras/ka_callback.php";
  url += "?filename="+title;
  url += "&duration="+i_duration;
  url += "&error="+i_error;
  url += "&sid="+Math.random(); 
  xmlHttp.open("GET",url,false);
  xmlHttp.send(null);
}


/******************************************************************************/
/* common section                                                             */
/******************************************************************************/

window.onbeforeunload = function() 
{
 ka_callback();
 for (var i = 0; i < kctUrls.length; i++) 
 {if(kctUrls[i]!=undefined) {ka_callback_txt(kctUrls[i], durations[i], '');}}
}


/*
function parseObj(obj)
{
 objCount = 0;
 var objStr = '';
 for (prop in obj)
 {
  objStr += '\r\nProperty:' + prop + 'Type:' + typeof(obj[prop]) + 'Value:' + obj[prop];
  if (typeof(obj[prop]) == "object")
  {
   objStr += parseObj(obj[prop]);
  }
 }
 return objStr;
}
*/

