
var isDOM_elements = (document.getElementById ? true : false);
var isIE4_elements = ((document.all && !isDOM_elements) ? true : false);
var isNS4_elements = (document.layers ? true : false);
var isDyn_elements = (isDOM_elements || isIE4_elements || isNS4_elements);			

window.onload = myMenuPage;
window.onerror = myErrorPage;
window.onresize = mySizePage;

function myErrorPage(message, url, line){
status = line +'-'+url+':'+message;
return true;
} 

var myWidth_elements = null;
var myHeight_elements = null;

function mySizePage() {
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth_elements = window.innerWidth;
    myHeight_elements = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth_elements = document.documentElement.clientWidth;
    myHeight_elements = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth_elements = document.body.clientWidth;
    myHeight_elements = document.body.clientHeight;
  }
  myPageReformat();
}

function myPageReformat() {
  
  // width
  getSty_elements('boutonOpac').width = (myWidth_elements*0.90)+'px';
  getSty_elements('titreTopTab').width = (myWidth_elements*0.88)+'px';
  getSty_elements('textOpacBox').width = (myWidth_elements*0.88)+'px';
  getSty_elements('linkTopTab').width = (myWidth_elements*0.88)+'px';
  getSty_elements('titreBottomTab').width = (myWidth_elements*0.88)+'px';
  //height
  getSty_elements('boutonOpac_content').height = (myHeight_elements*0.73)+'px';
  getSty_elements('textOpacBox').height = (myHeight_elements*0.62)+'px';
  getSty_elements('titreBottomTab').marginTop = (myHeight_elements*0.70)+'px';
}


function myMenuPage(){
	mySizePage();
	var topMenu = ''
	+'<nobr>'
	+'<a href="'+topTabTitreArr[1][2]+'"><img onMouseOver="menuOver(this.id);" onMouseOut="menuOut(this.id);" src="bout1_off.png" id="bout1" name="bout1" border=0 style="display:yes"></a>'
	+'<a href="'+topTabTitreArr[2][2]+'"><img onMouseOver="menuOver(this.id);" onMouseOut="menuOut(this.id);" src="bout2_off.png" id="bout2" name="bout2" border=0 style="display:yes"></a>'
	+'<img src="bout_historique.png" border=0 style="display:yes; margin-left:70px;" >'
	+'<a href="'+topTabTitreArr[3][2]+'"><img onMouseOver="menuOver(this.id);" onMouseOut="menuOut(this.id);" src="bout3_off.png" id="bout3" name="bout3" border=0 style="display:yes"></a>'
	+'<a href="'+topTabTitreArr[4][2]+'"><img onMouseOver="menuOver(this.id);" onMouseOut="menuOut(this.id);" src="bout4_off.png" id="bout4" name="bout4" border=0 style="display:yes"></a>'
	+'<a href="'+topTabTitreArr[5][2]+'"><img onMouseOver="menuOver(this.id);" onMouseOut="menuOut(this.id);" src="bout5_off.png" id="bout5" name="bout5" border=0 style="display:yes"></a>'
	+'<a href="'+topTabTitreArr[9][2]+'"><img onMouseOver="menuOver(this.id);" onMouseOut="menuOut(this.id);" src="bout9_off.png" id="bout9" name="bout9" border=0 style="display:yes"></a>'
	+'</nobr>'	
	+'';
	
	var downMenu = ''
	+'<nobr>'
	+'<a href="'+topTabTitreArr[7][2]+'"><img onMouseOver="menuOver(this.id);" onMouseOut="menuOut(this.id);" src="bout7_off.png" id="bout7" name="bout7" border=0 style="display:yes"></a>'
	+'<a href="'+topTabTitreArr[8][2]+'"><img onMouseOver="menuOver(this.id);" onMouseOut="menuOut(this.id);" src="bout8_off.png" id="bout8" name="bout8" border=0 style="display:yes"></a>'
	+'<a href="'+topTabTitreArr[6][2]+'"><img onMouseOver="menuOver(this.id);" onMouseOut="menuOut(this.id);" src="bout6_off.png" id="bout6" name="bout6" border=0 style="display:yes"></a>'
	+'</nobr>'
	'';
	
	getRef_elements('menuTop').innerHTML = topMenu;
	getRef_elements('menuDown').innerHTML = downMenu;
	
	for (i = 1; i < topTabTitreArr.length; i++) {
	if (topTabTitreArr[i][0]=='non') getSty_elements('bout'+i).display = 'none';
	}
	
	if (numero_page!=0) {
	getRef_elements('titreTopTab').innerHTML = topTabTitreArr[numero_page][1];
	getRef_elements('bout'+numero_page).src = 'bout'+numero_page+'_on.png';
	getSty_elements('menu').display = 'block';
	}
	else {
		for (i = 1; i < topTabTitreArr.length; i++) {
		if (topTabTitreArr[i][0]=='non') {getSty_elements('bout'+i).display = 'inline';} else {getSty_elements('bout'+i).display = 'none';}
		}	
		getSty_elements('menu').display = 'block';
	}
} 

function getRef_elements(id) {
 if (isDOM_elements) return document.getElementById(id);
 if (isIE4_elements) return document.all[id];
 if (isNS4_elements) return document.layers[id];
}

function getSty_elements(id) {
 return (isNS4_elements ? getRef_elements(id) : getRef_elements(id).style);
}

var timeoutBout = null;
function menuOver(id) {
	clearTimeout(timeoutBout);
	for (i = 1; i < topTabTitreArr.length; i++) {
		if (id=='bout'+i) var headTextNum = i;
		getRef_elements('bout'+i).src = 'bout'+i+'_off.png';
	}
	getRef_elements(id).src = id+'_on.png';
	getRef_elements('titreHeader').innerHTML = topTabTitreArr[headTextNum][1];

}


function menuOut(id) {
	
	timeoutBout = window.setTimeout(function(){
	getRef_elements('bout'+numero_page).src = 'bout'+numero_page+'_on.png';	
	getRef_elements('titreHeader').innerHTML = '';
	},800);
	
	getRef_elements(id).src = id+'_off.png';
}

var timeoutAlt=null;
function overAlt(txt) {
	clearTimeout(timeoutAlt);
	if (txt=='') {
		timeoutAlt = window.setTimeout(function(){
			getRef_elements('titreHeader').innerHTML = '';
			getRef_elements('titreBottomTab').innerHTML = '';
		},1000); 
	return false;
	}
	else {
	getRef_elements('titreHeader').innerHTML = '<strong>&laquo; '+txt+' &raquo;</strong>';
	getRef_elements('titreBottomTab').innerHTML = '<strong>&laquo; '+txt+' &raquo;</strong>';
	}
}















//-------------------------------------
// Ajax related variables
//-------------------------------------
var oAjaxRequest	= null;				// Ajax Request Object
var oAjaxData		= null;				// Ajax Response Data
var oAjaxDiv		= null;				// Ajax Response Div ID

//--------------------------------------
// Sends a Ajax request
//--------------------------------------
function ajaxSendRequest(sRequest) {

	// Check for existing requests
	if ((oAjaxRequest != null) && (oAjaxRequest.readyState != 0) && (oAjaxRequest.readyState != 4) ) {
		oAjaxRequest.abort();
	}

	// Reset current Ajax objects
	oAjaxRequest	= null;
	oAjaxData		= null;

	// Instantiate object for Firefox, Nestcape, etc.
	try {
		oAjaxRequest = new XMLHttpRequest();
	} catch(ex) {

		// Instantiate object for Internet Explorer
		try {
			oAjaxRequest = new ActiveXObject("Msxml2.XMLHTTP.6.0");
		} catch(ex) {
			try {
				oAjaxRequest = new ActiveXObject("Msxml2.XMLHTTP.3.0");
			} catch(ex) {
				try {
					oAjaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
				} catch(ex) {
					try {
						oAjaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
					} catch(ex) {
						alert(
							"ERROR: This browser does not support Ajax XMLHttpRequest()!\n" +
							"Module: ajaxSendRequest()\n"
						);
						return false;
					}
				}
			}
		}
	}
	
	// Assign state handler callback
	oAjaxRequest.onreadystatechange = ajaxResponseCallback;

	// Open socket connection
	oAjaxRequest.open('GET',sRequest,true);
	oAjaxRequest.send(null);
}

//--------------------------------------
// Callback function for the Ajax call.
// This will parse the data according to the caller type.
//--------------------------------------
function ajaxResponseCallback() {

	// If the request is completed
	if (oAjaxRequest.readyState == 4) {

		// If status == 200 continue
		if (oAjaxRequest.status == 200) {

			oAjaxData = oAjaxRequest.responseText;
			
			
			// JSON File?
			if (oAjaxData.substr(0,8) == "var json") {
				loadJson();
				
			} else {
				
				// Process the Station Details
				doGetFileDetails();
			}

		} else {
			alert(
				"ERROR: Failed to get Ajax Response from Server!\n" +
				"Module: MapAjax.ajaxResponseCallback()\n" +
				"Response: " + oAjaxRequest.responseText + "\n" +
				"Details: " + oAjaxRequest.statusText
			);
		}
	}
}







//--------------------------------------
// Sends a Ajax request news
//--------------------------------------
function ajaxNewsSendRequest(sRequest,sDiv) {

	// Affectation DIV
	oAjaxDiv = sDiv;
	
	// Check for existing requests
	if ((oAjaxRequest != null) && (oAjaxRequest.readyState != 0) && (oAjaxRequest.readyState != 4) ) {
		oAjaxRequest.abort();
	}

	// Reset current Ajax objects
	oAjaxRequest	= null;
	oAjaxData		= null;

	// Instantiate object for Firefox, Nestcape, etc.
	try {
		oAjaxRequest = new XMLHttpRequest();
	} catch(ex) {

		// Instantiate object for Internet Explorer
		try {
			oAjaxRequest = new ActiveXObject("Msxml2.XMLHTTP.6.0");
		} catch(ex) {
			try {
				oAjaxRequest = new ActiveXObject("Msxml2.XMLHTTP.3.0");
			} catch(ex) {
				try {
					oAjaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
				} catch(ex) {
					try {
						oAjaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
					} catch(ex) {
						alert(
							"ERROR: This browser does not support Ajax XMLHttpRequest()!\n" +
							"Module: ajaxSendRequest()\n"
						);
						return false;
					}
				}
			}
		}
	}
	
	// Assign state handler callback
	oAjaxRequest.onreadystatechange = ajaxNewsCallback;

	// Open socket connection
	oAjaxRequest.open('GET',sRequest,true);
	//oAjaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; Charset=iso-8859-1"); 
	oAjaxRequest.send(null);
}


function ajaxNewsCallback() {

	// If the request is completed
	if (oAjaxRequest.readyState == 4) {

		// If status == 200 continue
		if (oAjaxRequest.status == 200) {

			oAjaxData = oAjaxRequest.responseText;
			
			
			// JSON File?
			if (oAjaxData.substr(0,8) == "var json") {
				loadJson();
				
			} else {
				
				// Process the Station Details
				newsGetFileDetails();
			}

		} else {
			alert(
				"ERROR: Failed to get Ajax Response from Server!\n" +
				"Module: MapAjax.ajaxResponseCallback()\n" +
				"Response: " + oAjaxRequest.responseText + "\n" +
				"Details: " + oAjaxRequest.statusText
			);
		}
	}
}		



function newsGetFileDetails() {
getRef_elements(oAjaxDiv).innerHTML = ''+oAjaxData+''
getSty_elements(oAjaxDiv).width = '95%'
}

// Fin sends a Ajax request news
//--------------------------------------










//--------------------------------------
// Loads fichier text NAO
//--------------------------------------
function doGetFileDetails() {
getRef_elements('dataTextFile').innerHTML = '<pre>'+oAjaxData+'</pre>'
}

//--------------------------------------
// Loads the json file that holds the station data
// into a javascript array
//--------------------------------------
function loadJson() {

	if (oAjaxData != "") {
		
		eval(oAjaxData);
		
		if (json != null) {
			if (oGMap != null) {

				setMapInfo("" + json.length + " active stations reporting");

				showStatusText("Creating Station Map ...");
				oMapClusterManager = new MapClusterManager(json);

				// Delete the temp json array
				json = [];
				json = null;

			} else {
				alert("Map Error:\nGoogle Maps not loaded! Check your Browser settings.");
			}
		} else {
			alert("Map Error:\nMap Station data corrupt! json.eval() failed.");
		}
	} else {
		alert("Map Error:\nCould not load Map Station data!");
	}
}

//--------------------------------------
// Process the Station Details
//--------------------------------------
function doGetStationDetails() {
var dar,sHtml,sLink,sUnits,iAgeDisplay;
var iAgeHours,iAgeDays,sUserName,sStationName,dtDateUploaded,sOutsideTemp
var sOutsideHumidity,sWindSpeed,sWindDirection,sBarometer,sBarTrend;

	if (oAjaxData != "NODATA") {

		dar	= oAjaxData.split('|');
		if (dar.length > 0) {

			iAgeHours			= parseInt(dar[0]);
			iAgeDays			= parseInt(dar[1]);
			sUserName			= dar[2];
			sStationName		= dar[3];
			dtDateUploaded		= dar[4];
			sOutsideTemp		= dar[5];
			sOutsideHumidity	= dar[6];
			sWindSpeed			= dar[7];
			sWindDirection		= dar[8];
			sBarometer			= dar[9];
			sBarTrend			= dar[10];
			
			sLink = "<a href=\"http://www.weatherlink.com/user/" + sUserName + "\" target=\"_blank\">";
			sLink += sStationName + "<\/a>";
			
			sHtml = "<table cellspacing=0 cellpadding=0>" +
					"<tr><td><font size=1>&nbsp;</font><\/td><td><font size=1>&nbsp;</font><\/td><\/tr>" +
					"<tr><td>Station:&nbsp;<\/td><td>" + sLink + "<\/td><\/tr>";

			if ((iAgeDays == 0) && (iAgeHours < 2)) {

				sHtml +=
					"<tr><td>Temperature:&nbsp;<\/td><td>" + sOutsideTemp + "<\/td><\/tr>" +
					"<tr><td>Humidity:&nbsp;<\/td><td>" + sOutsideHumidity + "<\/td><\/tr>" +
					"<tr><td>Wind:&nbsp;<\/td><td>" + sWindSpeed + " " + sWindDirection + "<\/td><\/tr>" +
					"<tr><td>Barometer:&nbsp;<\/td><td>" + sBarometer + " - " + sBarTrend + "<\/td><\/tr>" +
					"<\/table>";
			} else {
				
				sUnits		= "Days";
				iAgeDisplay	= iAgeDays;
				
				if (iAgeDays == 0) {
					sUnits = "hours";
					if (iAgeHours == 1) { sUnits = "hour"; }
					iAgeDisplay = iAgeHours;
				} else {
					if (iAgeDays == 1) { sUnits = "day"; }
				}
				
				sHtml +=
					"<tr><td>Last Update:&nbsp;<\/td><td>" + iAgeDisplay + " " + sUnits + " ago<\/td><\/tr>" +
					"<\/table>";
			}
		}

	} else {
		sHtml = "No current Station Data available!";
	}

	// Open the Map Info Window with the Stations details
	if (oInfoWindowLoc != null) {
		oGMap.openInfoWindowHtml(oInfoWindowLoc, sHtml);
	}

}

