/**********************************************************************************************
*
*  What: Javascript source code for collecting client specific data.
*
*  Part: eStats System :: DataCollector 2 :: Client
*
*  Author: Stanislaw Brajewski <brajek@eactive.pl>
*
*  Date: 26 X 2002.
*  Last-Modified: 2004-09-15
*
*
*  Copyright 2002 eACTIVE :: e-business partner, http://eactive.pl
*
************************************************************************************************/

 /******************
 *
 *  estats_go_api()
 *
 *  does: Wypisuje na stronie odpowiedni kod, by wywolac obrazek z odpowiednimi parametrami
 *        i przekazac dodatkowe dane na temat klienta do aktualnej wizyty
 *
 *  params: serwis_id, strona
 *
 *  returns: URI 4 image
 *
 ******************/
 function estats_go_api(serwis_id,strona) {
   link = '<img src="http://estats2.eactive.pl/dc/dc2/cs/sapi/api.php?' + get_api_query(serwis_id, strona) +  '" alt="" width="1" heigth="1" />';
   //if (serwis_id == 36) { alert(link); }
   document.writeln(link);
 }

 /******************
 *
 *  infostat_go()
 *
 *  does: przekazuje wszystkie zebrane dane poprzez API -> pobiera obrazek
 *
 *  params: serwis_id, strona
 *
 *  returns: URI 4 image
 *
 ******************/
 function infostat_go(serwis_id, strona) {
   var img = document.createElement("IMG");
   img.src = 'http://infostat.eactive.pl/dc/dc2/cs/sapi/api.php?' + get_api_query_no_flash(serwis_id, strona);
 }

 /******************
 *
 *  get_api_query
 *
 *  does: create api parametrized query!
 *
 *  params: serwis_id, strona
 *
 *  returns: query string for api
 *
 ******************/
 function get_api_query(serwis_id, strona) {
   var link = '';
   link += '&et=' + getEpochTime();
   link += '&srw=' +  serwis_id;
   link += '&st=' + strona;
   link += '&jr=' + referer();
   link += '&re=' + rozdzielczosc();
   link += '&pk=' + paleta();
   link +=  '&fl=' + flash();

   return link;
 }

 /******************
 *
 *  get_api_query
 *
 *  does: create api parametrized query w/o flash information!
 *        for instat_go() which is called for frames at head section
 *        this VBScript raise some errors;
 *
 *  params: serwis_id, strona
 *
 *  returns: query string for api w/o flash info
 *
 ******************/
 function get_api_query_no_flash(serwis_id, strona) {
   var link = '';
   link += '&et=' + getEpochTime();
   link += '&srw=' +  serwis_id;
   link += '&st=' + strona;
   link += '&jr=' + referer();
   link += '&re=' + rozdzielczosc();
   link += '&pk=' + paleta();
//   link +=  '&fl=' + flash();

   return link;
 }

 /******************
 *
 *  rozdzielczosc()
 *
 *  does: Pobiera rozdzielczosc ekranu
 *
 *  params: void
 *
 *  returns: (INTxINT) String WIDTHxHEIGTH
 *
 ******************/
 function referer() {
   return escape(document.referrer);
 }

 /******************
 *
 *  rozdzielczosc()
 *
 *  does: Pobiera rozdzielczosc ekranu
 *
 *  params: void
 *
 *  returns: (INTxINT) String WIDTHxHEIGTH
 *
 ******************/
 function rozdzielczosc() {
   return screen.width + "x" + screen.height;
 }



 /******************
 *
 *  paleta()
 *
 *  does: Pobiera palete kolorow ekranu w bitach na pixel (bits per pixel - bps)
 *
 *  params: void
 *
 *  returns: Integer [bps]
 *
 *
 *  Warning: MSIE zawiera info w colorDepth. Nestscape'y w colorDepth, lecz czesciej w pixelDepth.
 *
 ******************/
 function paleta() {
   if (isNaN(screen.pixelDepth) || (screen.pixelDepth) == 0) {
     return screen.colorDepth;
   } else {
     return screen.pixelDepth;
   }
 }

 /******************
 *
 *  flash()
 *
 *  does: Pobiera i zwraca informacje wesji flash'a
 *
 *  params: void
 *
 *  returns: String (flash info)
 *
 ******************/
 function flash() {
   var flash_ver = "Shockwave Flash nie jest zainstalowany";

   if (navigator.appName == 'Microsoft Internet Explorer') {
     if (isActiveXObj("ShockwaveFlash.ShockwaveFlash.2")) flash_ver = "Shockwave Flash 2";
     if (isActiveXObj("ShockwaveFlash.ShockwaveFlash.3")) flash_ver = "Shockwave Flash 3";
     if (isActiveXObj("ShockwaveFlash.ShockwaveFlash.4")) flash_ver = "Shockwave Flash 4";
     if (isActiveXObj("ShockwaveFlash.ShockwaveFlash.5")) flash_ver = "Shockwave Flash 5";
     if (isActiveXObj("ShockwaveFlash.ShockwaveFlash.6")) flash_ver = "Shockwave Flash 6";
     if (isActiveXObj("ShockwaveFlash.ShockwaveFlash.7")) flash_ver = "Shockwave Flash 7";
   }

   if (navigator.appName == 'Netscape') {
     flash_ver = navigator.plugins["Shockwave Flash"].description;
   }

   /* zamien niedozwolone znaki na ich odpowiedniki heksadecymanlne; napis bedzie parametrem URI */
   flash_ver = escape(flash_ver);

   return flash_ver;
 }


 /******************
 *
 *  getEpochTime()
 *
 *  does: Pobiera i zwraca czas w milisekundach od poczatku epoki (Jan 1 1970) do teraz
 *
 *  params: void
 *
 *  returns: Integer
 *
 ******************/
 function getEpochTime() {
   data_teraz = new Date();         // aktualna data
   data_0 = new Date(0);            // data dla 1 Jan 1970 : 0 milisekund

   return data_teraz - data_0;      // zwroc liczbe milisekund od poczatku ery PC'ta
 }

