var ElementMaxHeight = function() {
  this.initialize.apply(this, arguments);
}

ElementMaxHeight.prototype = {
  initialize: function(className) {
    this.elements = document.getElementsByClassName(className || 'maxheight');    
    this.textElement = document.createElement('span');
    this.textElement.appendChild(document.createTextNode('A'));
    this.textElement.style.display = 'block';
    this.textElement.style.position = 'absolute';
    this.textElement.style.fontSize = '1em';
    this.textElement.style.top = '-1000px';
    this.textElement.style.left = '-1000px';
    document.body.appendChild(this.textElement);
    this.textElementHeight = document.getDimensions(this.textElement).height;
    var __object = this;
    var __checkFontSize = this.checkFontSize;
    this.checkFontSizeInterval = window.setInterval(function() {return __checkFontSize.apply(__object)}, 480);



    this.expand();

    // Refresh elements height onResize event
    var __expand = this.expand;
    if (window.addEventListener) {
      window.addEventListener('resize', function(event) {return __expand.apply(__object, [( event || window.event)])}, false);
    } else if (window.attachEvent) {
      window.attachEvent('onresize', function(event) {return __expand.apply(__object, [( event || window.event)])});
    }
  },

  expand: function() {
    this.reset();
  	for (var i = 0; i < this.elements.length; i++) {  	
      this.elements[i].style.height = document.getDimensions(this.elements[i].parentNode).height + 'px';
  	}
  },

  reset: function() {
    for (var i = 0; i < this.elements.length; i++) {    
      this.elements[i].style.height = 'auto';
    }
  },

  checkFontSize: function() {
  	var height = document.getDimensions(this.textElement).height;
  	if(this.textElementHeight != height) {
  		this.textElementHeight = height;
  		this.expand();
  	}
  }  
}


if (!!document.evaluate) {
  document._getElementsByXPath = function(expression, parentElement) {
    var results = [];
    var query = document.evaluate(expression, parentElement || document,
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i = 0, length = query.snapshotLength; i < length; i++)
      results.push(query.snapshotItem(i));
    return results;
  }
}

document.getElementsByClassName = function(className, parentElement) {
  if (!!document.evaluate) {
    var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
    return document._getElementsByXPath(q, parentElement);
  } else {
    var children = (parentElement || document.body).getElementsByTagName('*');
    var elements = [], child;
    for (var i = 0, length = children.length; i < length; i++) {
      child = children[i];
      if (child.className.length != 0 &&
          (child.className == className ||
           child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))) {      
        elements.push(child);
      }
    }
    return elements;
  }
}

document.getDimensions = function (element) {
  var display = element.style.display;
  if (display != 'none' && display != null) { // Safari bug
    return {width: element.offsetWidth, height: element.offsetHeight};
  }

  return {width: originalWidth, height: originalHeight};
}

function visibilite(thingId)
{
var targetElement;
targetElement = document.getElementById(thingId) ;
if (targetElement.style.display == "none")
{
targetElement.style.display = "" ;
} else {
targetElement.style.display = "none" ;
}
}


	///////////////////////////////////////////////////////
	function Mef(valeur)	// pour cadrage des valeurs //
	/////////////////////////////////////////////////////
	{ 	return valeur.toFixed(2);	}
	///////////////////////////////////////////////
	function Calcul()	// calcul des échéances //
	/////////////////////////////////////////////
	{	var Af=Number(document.Saisie.Montant.value);
		if ( Af<1 )
					alert ("montant du prêt erroné");
		else	{	var Y=Number(document.Saisie.Duree.value);
					if ( Y<1 || Y>150 )
							alert("Durée erronée");
					else	{	var Ir=Number(document.Saisie.Taux.value);
								if ( Ir<1 || Ir>20 )
										alert("Taux erroné");
								else	{	var Nf = Y ;
											var Rf = (Ir / 1200);
											var P1 = Af * ( Rf / ( 1 - ( 1 / ( Math.pow ( ( 1 + Rf ), Nf ) ) ) ) ) ;
											var Pf = Math.floor ( ( P1 + 0.005 ) * 100) / 100;
											var impr=	"<"+"br />Prêt de "+
														document.Saisie.Montant.value+
														"€ sur "+
														document.Saisie.Duree.value+
														" mois, au taux de "+
														document.Saisie.Taux.value+
														"% => Echéances de " +
														Pf+
														"€ par mois<"+"br /><"+"br />";
											var Amort=new Array();
											Amort[0,1] = Af;
											var Cp=0;
											var Ci=0;
											impr+=("<"+"table border='0' cellpadding='3'>");
											impr+=("<"+"tr><"+"th>Mois</"+"th><"+"th>Année</"+"th>");
											impr+=("    <"+"th>Echéance</"+"th>");
											impr+=("    <"+"th>Principal</"+"th><"+"th>Intérêts</"+"th>");
											impr+=("    <"+"th>Reste</"+"th><"+"th>Payé</"+"th></"+"tr>");
											for ( var I=1 ; I <= Nf ; I++ )
											{	Amort[I, 2] = Amort[I - 1, 1] * Rf;
												Amort[I, 2] = Math.floor((Amort[I, 2] + 0.005) * 100) / 100;
												Amort[I, 1] = Amort[I - 1, 1] - Pf + Amort[I, 2];
												Amort[I, 1] = Math.floor ( ( Amort[I, 1] + 0.005 ) * 100 ) / 100;
												var T1 = I - Math.floor ( ( I - 1 ) / 12 ) * 12;
												var T2 = 1 + Math.floor ( ( I - 1 ) / 12 );
												impr+=("<"+"tr><"+"td>"+T1+"</"+"td>");
												impr+=("    <"+"td>"+T2+"</"+"td>");
												impr+=("    <"+"td>"+I+"</"+"td>");
												impr+=("    <"+"td>"+Mef(Pf - Amort[I, 2])+"</"+"td>");
												impr+=("    <"+"td>"+Mef(Amort[I,2])+"</"+"td>");
												impr+=("    <"+"td>"+Mef(Amort[I, 1])+"</"+"td>");
												impr+=("    <"+"td>"+Mef(Pf * I)+"</"+"td></"+"tr>");
												Cp = Cp + Pf - Amort[I, 2];
												Ci = Ci + Amort[I, 2];
											}
											Cp = Math.floor((Cp + 0.005) * 100) / 100;
											Ci = Math.floor((Ci + 0.005) * 100) / 100;
											impr+=("<"+"tr><"+"td></"+"td><"+"td></"+"td><"+"td></"+"td>");
											impr+=("    <"+"td>"+Mef(Cp)+"</"+"td>");
											impr+=("    <"+"td>"+Mef(Ci)+"</"+"td>");
											impr+=("    <"+"td></"+"td>");
											impr+=("    <"+"td>"+Mef(Cp+Ci)+"</"+"td></"+"tr>");
											impr+=("</"+"table>");
											document.getElementById("result").innerHTML=impr;
											if ( document.Saisie.imprimer.checked )
											{	window.print();	}
										}
							}
				}
	}

