//
// Live Power Javascript
//
// Copyright (c) 2008 Horus Networks Sàrl <adomjan@horus.ch>
//
// $Id: livepower.js,v 1.5 2009-12-10 16:16:09 disco Exp $
//

var count = 0;
var reload_file_timeout = 1 * 1000;
var max_reload_count = 1200;
var global_power = 0;

function update_solar_power() {

   // For Mozilla compatible browser
   try { var loader = new XMLHttpRequest(); }

   // Else, for Internet Explorer
   catch (e) {
      var classnames = [ 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP' ];
      for (var i in classnames)
      try { loader = new ActiveXObject(classnames[i]); break; } catch (e) {}
   }
   
   // Get the data from network
   // loader.open('GET', '/cgi-bin/getpower.pl', true );
   var d = new Date();
   //loader.open('GET', '/cgi-bin/getpower-fake.pl?' + d.getTime(), true );
   loader.open('GET', '/cgi-bin/getpower.pl?' + d.getTime(), true );

   // If everything is all right
   loader.onreadystatechange = function (aEvt) {
   if (loader.readyState == 4) {
      if(loader.status == 200) {
         // document.getElementById('power').innerHTML = 'OK';
         var power = loader.getResponseHeader("X-Power-Tag");
         var energy_today = loader.getResponseHeader("X-Energy-Tag");
         document.getElementById('power').innerHTML = power + ' W';
	 if (power > 0) {
	    document.getElementById('energy').innerHTML = energy_today + '<span style="font-size: 10pt;"> kWh</span>';
	 }
         if (document.getElementById('onpagepower')) {
            document.getElementById('onpagepower').innerHTML = power + ' W';
	    if (power > 0) {
               document.getElementById('onpageenergy').innerHTML = energy_today + '<span style="font-size: 10pt;"> kWh</span>';
	    }
         }
         global_power = power;

         //document.getElementById('test').innerHTML = "counter : " + count;
         
         // move images
         if (power > 2300) { 
            document.getElementById('cloud1').style.display = 'none';
         } else if ( (power >= 900) & (power < 2300) ) {
            document.getElementById('cloud1').style.display = 'inline';
            document.getElementById('cloud2').style.display = 'none';
            document.getElementById('cloud1').style.top = (power / 2300)*48 + 'px';
         } else if ( (power >= 100) & (power < 900) ) {
            document.getElementById('cloud1').style.display = 'inline';
            document.getElementById('cloud2').style.display = 'inline';
            document.getElementById('cloud1').style.top = (power / 2300)*48 + 'px';
            document.getElementById('cloud2').style.top = ((power/2300)*48+12) + 'px';
         } else if ( (power > 0) & (power < 100) ) {
            document.getElementById('cloud1').style.display = 'inline';
            document.getElementById('cloud2').style.display = 'inline';
            document.getElementById('cloud3').style.display = 'inline';
            document.getElementById('cloud1').style.top = (power / 2300)*48 + 'px';
            document.getElementById('cloud2').style.top = ((power/2300)*48+12) + 'px';
            document.getElementById('cloud3').style.top = ((power/2300)*48+30) + 'px';
            document.getElementById('cloud3').style.left = (400+parseInt(Math.random()*10-5, 10)) + 'px';
         } else {
            document.getElementById('cloud1').style.display = 'none';
            document.getElementById('cloud2').style.display = 'none';
            document.getElementById('cloud3').style.display = 'none';
            document.getElementById('sun').style.display = 'none';
            document.getElementById('moon').style.display = 'inline';
         }

         if (count < max_reload_count) {
            // is it the night ?
            if (power == 0) {
               tid = window.setTimeout(update_solar_power, reload_file_timeout * 100);
            } else {
               tid = window.setTimeout(update_solar_power, reload_file_timeout);
               count = count + 1;
            }
           // document.getElementById('count').innerHTML = count;
         } else {
          //  document.getElementById('count').innerHTML = count + ": reload the page to start again!";
         }
	 if (count == max_reload_count) {
	    document.getElementById('power').style.color = '#ccc';
	    document.getElementById('energy').style.color = '#ccc';
	 }
      } else {
        // document.getElementById('power').innerHTML = '---' + loader.status;
         document.getElementById('power').innerHTML = '---';
         document.getElementById('energy').innerHTML = '---';
      }
   }
   }

   loader.send(null); 
}


function init_timeout() {
//   var tid = window.setTimeout(update_solar_power, reload_file_timeout);
   update_solar_power();
} 
  

