var flashcolor = '#686868'; // color to flash for changed observations RGB
var flashtime  = 1000;       // miliseconds to keep flash color on (2000 = 2 seconds);
var reloadTime = 2500;       // reload AJAX conditions every 5 seconds (= 5000 ms)
var maxupdates = 0;	         // Maxium Number of updates allowed (set to zero for unlimited)
                             // maxupdates * reloadTime / 1000 = number of seconds to update
var clientrawFile = './customclientraw.php'; // location of clientraw.txt relative to this page on website
var ajaxLoaderInBody = false; // set to true if you have <body onload="ajaxLoader(..."
var imagedir = './imagens/';  // place for wind arrows, rising/falling arrows, etc.
var imageext = '.gif';  // place for wind arrows, rising/falling arrows, etc.
var imageextpng = '.png';  // place for wind arrows, rising/falling arrows, etc.
var imagestart = '<img src="';  // place for wind arrows, rising/falling arrows, etc.
var imageend = '">';  // place for wind arrows, rising/falling arrows, etc.
var cortextstart = '<font size="1" face="arial" color="';
var cortextend = '">';
var tempunit = '&nbsp;ºC&nbsp;&nbsp;&nbsp;&nbsp;';
var humunit = '&nbsp;%&nbsp;&nbsp;&nbsp;&nbsp;';
var windunit = '&nbsp;km/h&nbsp;de&nbsp;';
var barounit = '&nbsp;hpa&nbsp;&nbsp;&nbsp;&nbsp;';
var winddirunit = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
var rainunit = '&nbsp;mm';
var imageendb = '"  width="80" height="80" align="left">';
// -- end of settings -------------------------------------------------------------------------

// --- you don't need to customize the stuff below, the actions are controlled by the 
//  settings above.  

var ie4=document.all;
var browser = navigator.appName;
var ie8 = false;
if (ie4 && /MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x;
 var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number
 if (ieversion>=8) {
   ie4=false;
   ie8=true;
 }
}
var counterSecs = 0;  // for MCHALLIS counter script from weather-watch.com (adapted by K. True)
var updates = 0;		// update counter for limit by maxupdates
var lastajaxtimeformat = 'unknown'; //used to reset the counter when a real update is done
var doTooltip = 0;   // set to 1 to have ajaxed variable names appear as tooltips (except for graphics)

function get_ajax_tags ( ) {
// search all the span tags and return the list with class="ajax" in it
//
  if (ie4 && browser != "Opera" && ! ie8) {
    var elem = document.body.getElementsByTagName('span');
	var lookfor = 'className';
  } else {
    var elem = document.getElementsByTagName('span');
	var lookfor = 'class';
  }
     var arr = new Array();
	 var iarr = 0;
     for(var i = 0; i < elem.length; i++) {
          var att = elem[i].getAttribute(lookfor);
          if(att == 'ajax') {
               arr[iarr] = elem[i];
               iarr++;
          }
     }

	 return arr;

}

function reset_ajax_color( usecolor ) {
// reset all the <span class="ajax"...> styles to have no color override
      var elements = get_ajax_tags();
	  var numelements = elements.length;
	  for (var index=0;index!=numelements;index++) {
         var element = elements[index];
	     element.style.color=usecolor;
 
      }
}

function set_ajax_obs( name, value ) {
		var element = document.getElementById(name);
		if (! element ) { return; } // V1.04 -- don't set if missing the <span id=name> tag
		var lastobs = element.getAttribute("lastobs");
		element.setAttribute("lastobs",value);
		if (value != unescape(lastobs)) {
          element.style.color=flashcolor;
		  if ( doTooltip ) { element.setAttribute("title",'AJAX tag '+name); }
		  element.innerHTML =  value; // moved inside to fix flashing issue (Jim at jcweather.us)
		}
}

function set_ajax_uom( name, onoroff ) {
		var element = document.getElementById(name);
		if (! element ) { return; } 
		if (onoroff) {
          element.style.display='inline';
		} else {
          element.style.display='none';
		}
}

// ------------------------------------------------------------------------------------------
//  main function.. read clientraw.txt and format <span class="ajax" id="ajax..."></span> areas
// ------------------------------------------------------------------------------------------
function ajaxLoader(url) {
  if (document.getElementById) {
    var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(url);
  }
  if (x) { // got something back
    x.onreadystatechange = function() {
    try { if (x.readyState == 4 && x.status == 200) { // Mike Challis added fix to fix random error: NS_ERROR_NOT_AVAILABLE 
    var clientraw = x.responseText.split('*');
	// now make sure we got the entire clientraw.txt  -- thanks to Johnnywx
	// valid clientraw.txt has '12345' at start and '!!' at end of record
	var wdpattern=/\d+\.\d+.*!!/; // looks for '!!nn.nn!!' version string 
	// If we have a valid clientraw file AND updates is < maxupdates
	if(clientraw[0] == '12345' && wdpattern.test(x.responseText) && 
	    ( updates <= maxupdates || maxupdates > 0  ) ) {
		if (maxupdates > 0 ) {updates++; } // increment counter if needed


// DEFINIR AJAX DE CUSTOMCLIENTRAW

set_ajax_obs("ajaxData",clientraw[1]);
set_ajax_obs("ajaxtime",clientraw[2]);
set_ajax_obs("ajaxCeu",clientraw[3]);

  Ceu = clientraw[3];
  Ceu = imagestart + imagedir + Ceu+ imageextpng + imageendb;
set_ajax_obs("ajaxCeuAgora" ,Ceu);

set_ajax_obs("ajaxCeuTxt",clientraw[4]);
set_ajax_obs("ajaxCeuTxt2",clientraw[95]);
set_ajax_obs("ajaxtemp",clientraw[5]);
  tempF = clientraw[5];
  tempF = ((tempF*1.8) + 32).toFixed(1);
set_ajax_obs("ajaxtempF" ,tempF);
  tempG = clientraw[5];
  tempG = tempG+tempunit
set_ajax_obs("ajaxtempG" ,tempG);

set_ajax_obs("ajaxTempVar",clientraw[6]);
set_ajax_obs("ajaxTempVarGif",clientraw[7]);

  TempVarGif = clientraw[7];
  TempVarGif = imagestart + imagedir + TempVarGif+ imageext + imageend;
set_ajax_obs("ajaxTempVarGifSeta" ,TempVarGif);

set_ajax_obs("ajaxfeelslike",clientraw[8]);
  feelslikeF = clientraw[8];
  feelslikeF = ((feelslikeF*1.8) + 32).toFixed(0);
set_ajax_obs("ajaxfeelslikeF" ,feelslikeF);
set_ajax_obs("ajaxfeelslikedp",clientraw[9]);
set_ajax_obs("ajaxtempo" ,clientraw[10]);
set_ajax_obs("ajaxtempoc",clientraw[11]);
set_ajax_obs("ajaxtempchange24hour",clientraw[12]);
set_ajax_obs("ajaxtempchange24hour",clientraw[13]);
set_ajax_obs("ajaxtemp24hoursago",clientraw[14]);
set_ajax_obs("ajaxmaxtemp",clientraw[15]);
set_ajax_obs("ajaxmaxtempt",clientraw[16]);
set_ajax_obs("ajaxmintemp",clientraw[17]);
set_ajax_obs("ajaxmintempt",clientraw[18]);
set_ajax_obs("ajaxmaxtempyest",clientraw[19]);
set_ajax_obs("ajaxmaxtempyestt" ,clientraw[20]);
set_ajax_obs("ajaxmintempyest",clientraw[21]);
set_ajax_obs("ajaxmintempyestt",clientraw[22]);
set_ajax_obs("ajaxVPsolar",clientraw[23]);
set_ajax_obs("ajaxcurrentsolarpercent",clientraw[24]);
set_ajax_obs("ajaxhighsolar",clientraw[25]);
set_ajax_obs("ajaxhighsolartime",clientraw[26]);
set_ajax_obs("ajaxsunhoursdec",clientraw[27]);
set_ajax_obs("ajaxavgspd",clientraw[28]);
set_ajax_obs("ajaxgstspd",clientraw[93]);

  windG = clientraw[28];
  windG = windG+windunit
set_ajax_obs("ajaxwindG" ,windG);

set_ajax_obs("ajaxVentoDir",clientraw[29]);
set_ajax_obs("ajaxVentoDirTxt" ,clientraw[30]);

  VentoDirTxt = clientraw[30];
  VentoDirTxt = imagestart + imagedir + VentoDirTxt+ imageext + imageend;
set_ajax_obs("ajaxVentoDirTxtSeta" ,VentoDirTxt);

  winddirG = clientraw[30];
  winddirG = winddirG+winddirunit
set_ajax_obs("ajaxwinddirG" ,winddirG);

set_ajax_obs("ajaxbeaufort",clientraw[31]);
set_ajax_obs("ajaxavwindlastimediate10",clientraw[32]);
set_ajax_obs("ajaxavdirlastimediate10",clientraw[33]);
set_ajax_obs("ajaxavdirlastimediate10Txt",clientraw[34]);

  avdirlastimediate10Txt = clientraw[34];
  avdirlastimediate10Txt = imagestart + imagedir + avdirlastimediate10Txt+ imageext + imageend;
set_ajax_obs("ajaxavdirlastimediate10TxtSeta" ,avdirlastimediate10Txt);

set_ajax_obs("ajaxavgspeedsincereset",clientraw[35]);
set_ajax_obs("ajaxlast24houravdirday",clientraw[36]);
set_ajax_obs("ajaxlast24houravdir",clientraw[37]);
set_ajax_obs("ajaxVentoMedDirTxt",clientraw[38]);

  VentoMedDirTxt = clientraw[38];
  VentoMedDirTxt = imagestart + imagedir + VentoMedDirTxt+ imageext + imageend;
set_ajax_obs("ajaxVentoMedDirTxtSeta" ,VentoMedDirTxt);

set_ajax_obs("ajaxmaxgst",clientraw[39]);
set_ajax_obs("ajaxmaxgstt" ,clientraw[40]);
set_ajax_obs("ajaxmrecordwindgust",clientraw[41]);
set_ajax_obs("ajaxmrecordhighgustday",clientraw[42]);
set_ajax_obs("ajaxhum",clientraw[43]);
  humG = clientraw[43];
  humG = humG+humunit
set_ajax_obs("ajaxhumG" ,humG);

set_ajax_obs("ajaxHumVar",clientraw[44]);
set_ajax_obs("ajaxHumVarGif",clientraw[45]);

  HumVarGif = clientraw[45];
  HumVarGif = imagestart + imagedir + HumVarGif+ imageext + imageend;
set_ajax_obs("ajaxHumVarGifSeta" ,HumVarGif);

set_ajax_obs("ajaxhighhum",clientraw[46]);
set_ajax_obs("ajaxhighhumt",clientraw[47]);
set_ajax_obs("ajaxlowhum",clientraw[48]);
set_ajax_obs("ajaxlowhumt",clientraw[49]);
set_ajax_obs("ajaxdew" ,clientraw[50]);
set_ajax_obs("ajaxbaro",clientraw[51]);
set_ajax_obs("ajaxhighbaro",clientraw[88]);
set_ajax_obs("ajaxhighbarot",clientraw[89]);
set_ajax_obs("ajaxlowbaro",clientraw[90]);
set_ajax_obs("ajaxlowbarot",clientraw[91]);
  baroG = clientraw[51];
  baroG = baroG+barounit
set_ajax_obs("ajaxbaroG" ,baroG);

set_ajax_obs("ajaxBaroVar",clientraw[52]);
set_ajax_obs("ajaxBaroVarGif",clientraw[53]);

  BaroVarGif = clientraw[53];
  BaroVarGif = imagestart + imagedir + BaroVarGif+ imageext + imageend;
set_ajax_obs("ajaxBaroVarGifSeta" ,BaroVarGif);

set_ajax_obs("ajaxbarochange24hour",clientraw[54]);
set_ajax_obs("ajaxVPuv",clientraw[55]);
set_ajax_obs("ajaxhighuv",clientraw[56]);
set_ajax_obs("ajaxhighuvtime",clientraw[57]);
set_ajax_obs("ajaxdayrn",clientraw[58]);

  dayrnG = clientraw[58];
  dayrnG = dayrnG+rainunit
set_ajax_obs("ajaxdayrnG" ,dayrnG);

set_ajax_obs("ajaxcurrentrainratehr",clientraw[59]);
set_ajax_obs("ajaxhourrn" ,clientraw[60]);
set_ajax_obs("ajaxtotalrainlast3hours",clientraw[61]);
set_ajax_obs("ajaxtotalrainlast6hours",clientraw[62]);
set_ajax_obs("ajaxtotalrainlast24hours",clientraw[63]);
set_ajax_obs("ajaxmonthrn",clientraw[64]);
set_ajax_obs("ajaxyearrn",clientraw[65]);
set_ajax_obs("ajaxdayswithnorain",clientraw[66]);
set_ajax_obs("ajaxsunrise",clientraw[67]);
set_ajax_obs("ajaxsunset",clientraw[68]);
set_ajax_obs("ajaxmoonrise",clientraw[69]);
set_ajax_obs("ajaxmoonset" ,clientraw[70]);
set_ajax_obs("ajaxhourrnrtcolor",clientraw[71]);
set_ajax_obs("ajaxraindaycolor",clientraw[72]);
set_ajax_obs("ajaxrainhora",clientraw[73]);
set_ajax_obs("ajaxraintres",clientraw[74]);
set_ajax_obs("ajaxrainseis",clientraw[75]);
set_ajax_obs("ajaxrainvintequatro",clientraw[76]);
set_ajax_obs("ajaxrainmes",clientraw[77]);
set_ajax_obs("ajaxrainano",clientraw[78]);
set_ajax_obs("ajaxuvcolor",clientraw[79]);
set_ajax_obs("ajaxuvtxt" ,clientraw[80]);
set_ajax_obs("ajaxuvgif",clientraw[81]);

  uvgif = clientraw[81];
  uvgif = imagestart + imagedir + uvgif+ imageext + imageend;
set_ajax_obs("ajaxuvgif" ,uvgif);

set_ajax_obs("ajaxtempmaxalarm",clientraw[82]);

  tempmaxalarm = clientraw[82];
  tempmaxalarm = imagestart + imagedir + tempmaxalarm+ imageext + imageend;
set_ajax_obs("ajaxtempmaxalarmGif" ,tempmaxalarm);

set_ajax_obs("ajaxtempminalarm",clientraw[83]);

  tempminalarm = clientraw[83];
  tempminalarm = imagestart + imagedir + tempminalarm+ imageext + imageend;
set_ajax_obs("ajaxtempminalarmGif" ,tempminalarm);

set_ajax_obs("ajaxventoalarm",clientraw[84]);

  ventoalarm = clientraw[84];
  ventoalarm = imagestart + imagedir + ventoalarm+ imageext + imageend;
set_ajax_obs("ajaxventoalarmGif" ,ventoalarm);

set_ajax_obs("ajaxchuvaalarm",clientraw[85]);

  chuvaalarm = clientraw[85];
  chuvaalarm = imagestart + imagedir + chuvaalarm+ imageext + imageend;
set_ajax_obs("ajaxchuvaalarmGif" ,chuvaalarm);

set_ajax_obs("ajaxfogoalarm",clientraw[86]);

  fogoalarm = clientraw[86];
  fogoalarm = imagestart + imagedir + fogoalarm+ imageext + imageend;
set_ajax_obs("ajaxfogoalarmGif" ,fogoalarm);
set_ajax_obs("ajaxfwi",clientraw[92]);

  NowTimeColor = clientraw[94];
  NowTimeColor = imagestart + imagedir + NowTimeColor+ imageext + imageend;
set_ajax_obs("ajaxNowTimeColor" ,NowTimeColor);

// FIM DEFINIR AJAX DE CUSTOMCLIENTRAW
		
		// now ensure that the indicator flashes on every AJAX fetch
        element = document.getElementById("ajaxindicator");
		if (element) {
          element.style.color = flashcolor;
		}
		if (maxupdates > 0 && updates > maxupdates-1) { /* chg indicator to pause message */
			set_ajax_obs("ajaxindicator",langPauseMsg);
		}
		set_ajax_obs('ajaxupdatecount',updates);       /* for test pages */
		set_ajax_obs('ajaxmaxupdatecount',maxupdates); /* for test pages */

 	  } // END if(clientraw[0] = '12345' and '!!' at end)

	 } // END if (x.readyState == 4 && x.status == 200)

    } // END try

   	catch(e){}  // Mike Challis added fix to fix random error: NS_ERROR_NOT_AVAILABLE

    } // END x.onreadystatechange = function() {
    x.open("GET", url, true);
    x.send(null);

//  reset the flash colors, and restart the update unless maxupdate limit is reached

    setTimeout("reset_ajax_color('')",flashtime); // change text back to default color 

	if ( (maxupdates == 0) || (updates < maxupdates-1)) {
      setTimeout("ajaxLoader(clientrawFile + '?' + new Date().getTime())", reloadTime); // get new data 
    }
  }
} // end ajaxLoader function

//element = document.getElementById("ajaxcounter");
//if (element) {
  window.setInterval("ajax_countup()", 1000); // run the counter for seconds since update
//}

// invoke when first loaded on page
if (! ajaxLoaderInBody) { ajaxLoader(clientrawFile + '?' + new Date().getTime(), reloadTime); }


// ]]>