// store variables to control where the popup will appear relative to the cursor position
// positive numbers are below and to the right of the cursor, negative numbers are above and to the left
var xOffset = 15;
var yOffset = 15;
var aMess2 = new Array();  //define the messages
  
  aMess2["fr_size"]					="Taille du fichier :";
  aMess2["fr_adsl_cable"]			="Adsl/Câble";
  aMess2["uk_size"]					="File size:";
  aMess2["uk_adsl_cable"]			="ISDN/Cable";
  aMess2["de_size"]					="Dateigröße:";
  aMess2["de_adsl_cable"]			="DSL/T1";
  aMess2["es_size"]					="Tamaño del fichero:";
  aMess2["es_adsl_cable"]			="RDSL/Cable";


function hideCurrentPopup() {
    // note: we've stored the currently-visible popup on the global object window.currentlyVisiblePopup
    if(window.currentlyVisiblePopup) {
	changeObjectVisibility(window.currentlyVisiblePopup, 'hidden');
	window.currentlyVisiblePopup = false;
    }
} // hideCurrentPopup


// ***********************
// hacks and workarounds *
// ***********************

// initialize hacks whenever the page loads
//window.onload = initializeHacks;

// setup an event handler to hide popups for generic clicks on the document
document.onclick = hideCurrentPopup;

function initializeHacks() {
    // this ugly little hack resizes a blank div to make sure you can click
    // anywhere in the window for Mac MSIE 5
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
	&& (navigator.platform.indexOf('Mac') != -1)
	&& getStyleObject('blankDiv')) {
	window.onresize = explorerMacResizeFix;
    }
    resizeBlankDiv();
    // this next function creates a placeholder object for older browsers
    createFakeEventObj();
}

function createFakeEventObj() {
    // create a fake event object for older browsers to avoid errors in function call
    // when we need to pass the event object to functions
    if (!window.event) {
	window.event = false;
    }
} // createFakeEventObj

function resizeBlankDiv() {
    // resize blank placeholder div so IE 5 on mac will get all clicks in window
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
	&& (navigator.platform.indexOf('Mac') != -1)
	&& getStyleObject('blankDiv')) {
	getStyleObject('blankDiv').width = document.body.clientWidth - 20;
	getStyleObject('blankDiv').height = document.body.clientHeight - 20;
    }
}

function explorerMacResizeFix () {
    location.reload(false);
}

// ************************
// layer utility routines *
// ************************

function getStyleObject(objectId) {
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) {
	// W3C DOM
	return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
	// MSIE 4 DOM
	return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
	// NN 4 DOM.. note: this won't find nested layers
	return document.layers[objectId];
    } else {
	return false;
    }
} // getStyleObject

function changeObjectVisibility(objectId, newVisibility) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.visibility = newVisibility;
	return true;
    } else {
	// we couldn't find the object, so we can't change its visibility
	return false;
    }
} // changeObjectVisibility

function getObject(objectId) {
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) {
	// W3C DOM
	return document.getElementById(objectId);
    } else if (document.all && document.all(objectId)) {
	// MSIE 4 DOM
	return document.all(objectId);
    } else if (document.layers && document.layers[objectId]) {
	// NN 4 DOM.. note: this won't find nested layers
	return document.layers[objectId];
    } else {
	return false;
    }
} // getObject

function changeObjectContent(objectId, newContent) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getObject(objectId);
    if(styleObject) {
	styleObject.innerHTML = newContent;
	return true;
    } else {
	// we couldn't find the object, so we can't change its content
	return false;
    }
} // changeObjectVisibility

function moveObject(objectId, newXCoordinate, newYCoordinate) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.left = newXCoordinate;
	styleObject.top = newYCoordinate;
	return true;
    } else {
	// we couldn't find the object, so we can't very well move it
	return false;
    }
} // moveObject

function voir_esd(tailleko,nom,eventObj,lang) 
{
  var ar = arguments;  //get arguments here

  var sfont="<font size=1 face=\"Verdana, Arial, Helvetica, sans-serif\">";
  var sfont2="div align=right><font size=1 face=\"Verdana, Arial, Helvetica, sans-serif\"";
  var dmodem = ar[0] / 7;
  var disdn = ar[0] / 16;
  var ddsl = ar[0] / 96;
  var S=(navigator.appName != 'Microsoft Internet Explorer');
//h - hours, m - minutes, hm - minutes till the hour ,s - Seconds
  h_m = Math.floor(dmodem / 3600);
  m_m = Math.floor(dmodem / 60);
  hm_m = Math.round((dmodem % 3600) / 60);
  s_m = Math.round(dmodem % 60);
  h_i = Math.floor(disdn / 3600);
  m_i = Math.floor(disdn / 60);
  hm_i = Math.round((disdn % 3600) / 60);
  s_i = Math.round(disdn % 60);
  h_d = Math.floor(ddsl / 3600);
  m_d = Math.floor(ddsl / 60);
  hm_d = Math.floor((ddsl % 3600) / 60);
  s_d = Math.round(ddsl % 60);

  if (h_m > 0) { modem = h_m + 'h:' + hm_m +'m'}
  else if (m_m > 0) {modem = m_m + 'm:' + s_m +'s'}
  else if (s_m > 0) {modem = s_m + 's'}
  else {modem = '<1s'}

  if (h_i > 0) {isd = h_i + 'h:' + hm_i +'m'}
  else if (m_i > 0) {isd = m_i + 'm:' + s_i +'s'}
  else if (s_i > 0) {isd = s_i + 's'}
  else	{isd = '<1s'}

  if (h_d > 0) {dsl = h_d + 'h:' + hm_d +'m'}
  else if (m_d > 0) {dsl = m_d + 'm:' + s_d +'s'}
  else if (s_d > 0) {dsl = s_d + 's'}
  else	{dsl = '<1s'}

  ar[0] = "<table bgcolor=#FFFFFF border=1 cellspacing=0 width=100% bordercolor=#FFFFFF bordercolordark=#C2C287 bordercolorlight=#E6E6CE><tr><td bgcolor=#E6E6CE >"+sfont+"<b>"+ar[1]+"</b></font></td></tr><tr><td><table><tr><td bgcolor=#FFFFFF colspan=2>"+sfont+"<b>"+aMess2[lang+"_size"]+" "+FormatNumber(ar[0]/1024,2,'.')+"Mo</b></font></td></tr><tr><td align=right bgcolor=#FFFFFF>"+sfont+"<b>56k</td><td align=left bgcolor=#FFFFFF><font color=red>"+modem+"</font></b><td></tr> <tr><td align=right bgcolor=#FFFFFF>"+sfont+"<b>128k</td><td align=left bgcolor=#FFFFFF><font color=red>"+isd+"</font></b><td></tr> <tr><td align=right bgcolor=#FFFFFF>"+sfont+"<b>"+aMess2[lang+"_adsl_cable"]+" 512k</td><td align=left bgcolor=#FFFFFF><font color=red>"+dsl+"</font></b><td></tr></table></td></tr></table>";

  
    if(eventObj) {
	// hide any currently-visible popups
	hideCurrentPopup();
	// stop event from bubbling up any farther
	eventObj.cancelBubble = true;
	// move popup div to current cursor position 
	// (add scrollTop to account for scrolling for IE)
	var newXCoordinate = (eventObj.pageX)?eventObj.pageX + xOffset:eventObj.x + xOffset + ((document.body.scrollLeft)?document.body.scrollLeft:0);
	var newYCoordinate = (eventObj.pageY)?eventObj.pageY + yOffset:eventObj.y + yOffset + ((document.body.scrollTop)?document.body.scrollTop:0);
	moveObject("voir_img", newXCoordinate, newYCoordinate);
	// change content
	if( changeObjectContent("voir_img", ar[0]) ) {} else { return false; } // we couldn't change content
	// and make it visible
	if( changeObjectVisibility("voir_img", 'visible') ) {
	    // if we successfully showed the popup
	    // store its Id on a globally-accessible object
	    window.currentlyVisiblePopup = "voir_img";
	    return true;
	} else {
	    // we couldn't show the popup
	    return false;
	}
    } else {
	// there was no event object, so we won't be able to position anything, so give up
	return false;
    }
  
}


function voir_aide(aide,lib,eventObj) 
{
  var ar = arguments;  //get arguments here
  var sfont="<font size=1 face=\"Verdana, Arial, Helvetica, sans-serif\">";
  
  var S=(navigator.appName != 'Microsoft Internet Explorer');

  //ar[0] = "<table border=1 cellspacing=0 width=100% bordercolor=#FFFFFF bordercolordark=#C2C287 bordercolorlight=#E6E6CE><tr><td bgcolor=#C2C287><p>"+stitre+""+ar[0]+"</span></p></td></tr><tr><td align=left bgcolor=#FFFFFF><p>"+ar[1]+"</td></tr></table>";
  ar[0] = "<table bgcolor=#FFFFFF border=1 cellspacing=0 width=100% bordercolor=#FFFFFF bordercolordark=#C2C287 bordercolorlight=#E6E6CE><tr><td bgcolor=#E6E6CE >"+sfont+"<b>"+ar[0]+"</b></font></td></tr><tr><td><table><tr><td bgcolor=#FFFFFF>"+sfont+ar[1]+"<td></tr></table></td></tr></table>";
  
  if(eventObj) {
	// hide any currently-visible popups
	hideCurrentPopup();
	// stop event from bubbling up any farther
	eventObj.cancelBubble = true;
	// move popup div to current cursor position 
	// (add scrollTop to account for scrolling for IE)
	var newXCoordinate = (eventObj.pageX)?eventObj.pageX + xOffset:eventObj.x + xOffset + ((document.body.scrollLeft)?document.body.scrollLeft:0);
	var newYCoordinate = (eventObj.pageY)?eventObj.pageY + yOffset:eventObj.y + yOffset + ((document.body.scrollTop)?document.body.scrollTop:0);
	moveObject("voir_img", newXCoordinate, newYCoordinate);
	// change content
	if( changeObjectContent("voir_img", ar[0]) ) {} else { return false; } // we couldn't change content
	// and make it visible
	if( changeObjectVisibility("voir_img", 'visible') ) {
	    // if we successfully showed the popup
	    // store its Id on a globally-accessible object
	    window.currentlyVisiblePopup = "voir_img";
	    return true;
	} else {
	    // we couldn't show the popup
	    return false;
	}
    } else {
	// there was no event object, so we won't be able to position anything, so give up
	return false;
    }

}


  function FormatNumber(Number,Decimals,Separator)
   {
     Number += ""          // Force argument to string.
     Decimals += ""        // Force argument to string.
     Separator += ""       // Force argument to string.
     if((Separator == "") || (Separator.length > 1))
        Separator = "."
     if(Number.length == 0)
        Number = "0"
     var OriginalNumber = Number  // Save for number too large.
     var Sign = 1
     var Pad = ""
     var Count = 0
     if(parseFloat(Number)){ Number = parseFloat(Number)} 
	 else {  Number = 0}
     if((parseInt(Decimals,10)) || (parseInt(Decimals,10) == 0)) {Decimals = parseInt(Decimals,10)}
	 else { Decimals = 2}
     if(Number < 0)
       {
         Sign = -1         // Remember sign of Number.
         Number *= Sign    // Force absolute value of Number.
       }
     if(Decimals < 0)
       Decimals *= -1    // Force absolute value of Decimals.
     Number = "" + Math.floor(Number * Math.pow(10,Decimals + 1) + 5)
     if((Number.substring(1,2) == '.')||((Number + '')=='NaN'))
       return(OriginalNumber)
     if(Number.length < Decimals +1) // Construct pad string.
       {
         for(Count = Number.length; Count <= Decimals; Count++)
           Pad += "0"
       }
     Number = Pad + Number // Pad number as needed.
     if(Decimals == 0){ Number = Number.substring(0, Number.length -1)} 
	 else { Number = Number.substring(0,Number.length - Decimals -1) +
          Separator +
          Number.substring(Number.length - Decimals -1,
          Number.length -1)}
     if((Number == "") || (parseFloat(Number) < 1))
        Number="0"+Number // Force leading 0 for |Number| less than 1.
     if(Sign == -1)
       Number = "-" + Number  // Set sign of number.
	   
     return(Number)
  }
