    var g_pms = [],                   // Array to hold satellite objects
        g_TLE = [],
        g_numOfSats = 0,              // Number of satellites
        g_altitudeMode = false,        // altitude mode: true = absolute,  false = clampToGround
        g_extrudeMode = true,         // extrude:  true = on

        g_updatePeriod = 1000,        // Time between calls to fetchNewData function (in ms)
        g_features,                  // performance hack. Variable to hold ge.getFeatures()
        g_speed = 1,

        g_curTime,
        g_fetchNew = null,
        g_lastMillis,
        g_lastUpdate,
        position,
        slider,
        xmlHttp;
        resetinProgress = false;

        debug='debug info';
        firsttime=1;

     xmlHttp=GetXmlHttpObject();
       if (xmlHttp==null)
       {
         alert ("Your browser does not support AJAX!");

       }


     function getFile(url)
     {

       xmlHttp.onreadystatechange=stateChanged;
       xmlHttp.open("GET",url,true);
       xmlHttp.send(null);

     }



     function GetXmlHttpObject()
     {
       var xmlHttp=null;
       try
       {
         xmlHttp=new XMLHttpRequest();  // Firefox, Opera 8.0+, Safari
       }
       catch (e)
       {

         try  // Internet Explorer
         {
           xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
         }
         catch (e)
         {
           xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
       }
       return xmlHttp;
     }


     function stateChanged()
     {
       debug=xmlHttp.readyState;
       debug+='-'+firsttime;
       if ((xmlHttp.readyState==4)&&(1==1))
       {
		debug+='-'+firsttime;
       g_TLE = xmlHttp.responseText.split('\n');
       debug+='-'+firsttime;

       g_features = ge.getFeatures();
       g_getview = ge.getView();
       createStyles();
       ge.getWindow().setVisibility(true);

       var g_totsatsinfile = 0;
       var g_iridium = 0;
       var g_cosmos = 0;
       while (g_TLE[g_totsatsinfile])
       {
         var line = trim(g_TLE[g_totsatsinfile]);
//         if ((name.charAt(0) == "I") && (g_iridium < 100))
         if (g_totsatsinfile < 1000)
         {
           g_pms[g_numOfSats] = new Satellite(g_numOfSats,line);
           g_numOfSats++;
           g_iridium++;
         }
         g_totsatsinfile++;

       }

/*       else
       {
       	 g_TLE = request.responseText.split('\n');
       	 var id=Math.ceil(Math.random()*g_numOfSats-1);
       	 debug=id;
       	 var line = trim(g_TLE[id]);
       	 debug+='-'+line;
//       	 g_pms[g_numOfSats]=new Satellite(g_numOfSats,line);

//g_numOfSats++;
       }
*/

       resetTime();

       ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW);
       ge.getOptions().setStatusBarVisibility(true);
       updateOptions();

       var la = ge.createLookAt('');
       la.set(0, 0, 0, ge.ALTITUDE_RELATIVE_TO_GROUND, 0, 0, 20000000);
       ge.getView().setAbstractView(la);
       google.earth.addEventListener(ge.getGlobe(), "mousedown", function(event) { draw(event); });
       google.earth.addEventListener(ge.getGlobe(), "mousemove", function(event) { movePMLoc(event); });
       }
     }

     function about() {
      if(ge){
        var balloon = ge.createHtmlStringBalloon('');
        balloon.setMaxWidth(350);
        balloon.setContentString('' +
            'Currently tracking ' + g_numOfSats + ' objects.');
        ge.setBalloon(balloon);
      }
    }

     function fetchNewData()
     {
       var next = g_curTime+g_updatePeriod*g_speed;
       var jdNext = JDate(next);
//       debug=jdNext;
       var refresh;

       (next > g_lastUpdate) ? refresh = false: refresh = true;



//		getFile('get.php');
		var url = "get.php";

//request.open("GET", url, true);
//request.onreadystatechange = stateChanged;
//request.send(null);

/*       var xmlHttp=GetXmlHttpObject();
       if (xmlHttp==null)
       {
         alert ("Your browser does not support AJAX!");
         return;
       }
       xmlHttp.onreadystatechange=stateChanged;
       xmlHttp.open("GET",'get.php',true);
       xmlHttp.send(null);
*/
/*		g_TLE = xmlHttp.responseText.split('\n');
		g_totsatsinfile=0;
		g_numOfSats=0;
       while (g_TLE[g_totsatsinfile])
       {
         var line = trim(g_TLE[g_totsatsinfile]);
//         if ((name.charAt(0) == "I") && (g_iridium < 100))
         if (g_totsatsinfile < 500)
         {
           g_pms[g_numOfSats] = new Satellite(g_numOfSats,line);
           g_numOfSats++;
//           g_iridium++;
         }
         g_totsatsinfile++;

       }
*/


//       for (var i =0; i< g_numOfSats;i++)
//       {
//         g_pms[i].UpdatePositionData(next,jdNext,refresh);
//       }



       g_lastUpdate = next;
       g_fetchNew = setTimeout("fetchNewData()", g_updatePeriod);
     }


     function moveSatellites()
     {
       var temp = fetchCurTime();
         g_curTime += (temp-g_lastMillis)*g_speed;
         g_lastMillis = temp;


         for (var i =0; i< g_numOfSats;i++)
         {
             g_pms[i].Move(g_curTime);
         }

         var time = new Date(g_curTime);  var date = time.toUTCString();
         el('date').innerHTML = time.toLocaleString();
         el('debug').innerHTML = debug;
    }


      function resetTime()
      {

          g_curTime = g_lastMillis = g_lastUpdate = fetchCurTime();

          var jd = JDate(g_curTime);

          for (var i =0; i< g_numOfSats;i++)
          {
            g_pms[i].UpdatePositionData(g_curTime,jd,true);

          }

          fetchNewData();

          google.earth.addEventListener(ge, "frameend", moveSatellites);

     }


     function fetchCurTime()
     {
       var timex = new Date();
       return timex.getTime()
     }



     function updateOptions()
     {
       var options = ge.getOptions();
       var form = el("options");
       var mode;

       if (form.altitude.checked != g_altitudeMode)
       {
         g_altitudeMode = form.altitude.checked;
         for (var i =0; i< g_numOfSats;i++){g_pms[i].altMode(g_altitudeMode)}
       }


       ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, form.borders.checked);

     }

     function el(e) { return document.getElementById(e); }




function draw(e)
{
  if(e.getTarget().getType() == 'KmlPlacemark')
  {
      e.preventDefault();
  }
}



