// var allNews est déclarée dans news.js, généré par index.php
var newsIndex   = -1;
var newsBgColor = 100;
var timer       = null;
var fadingTimer = null;



function getElement( id )
{
	var element = null;
	if( document.getElementById )   // this is the way the standards work
	{
		element = document.getElementById( id );
	}
	else if( document.all )         // this is the way old msie versions work
	{
		element = document.all[ id ];
	}
	else if( document.layers )      // this is the way nn4 works
	{
		element = document.layers[ id ];
	}
	return element;
}



function setNewsBgColor( delta )
{
	var newsDiv = getElement( "news" );
	newsBgColor += delta;
	if( newsBgColor == 0 )
	{
		newsDiv.innerHTML = allNews[newsIndex].xhtml;
		delta = 4;
	}
	else
	{
		v = 255.0 * newsBgColor / 100.0;
		c = parseInt( v );
		newsDiv.style.backgroundColor = "rgb("+c+","+c+","+c+")";
	}
	if( newsBgColor < 100 )
	{
		fadingTimer = setTimeout( "setNewsBgColor(" + delta + ")", 20 );
	}
	else
	{
		newsDiv.style.backgroundColor = "lightgray";
		timer = setTimeout( "changeNews(1)", 10000 );
	}
}



function changeNews( sens )
{
	if( fadingTimer )
	{
		clearTimeout( fadingTimer );
	}
	if( timer )
	{
		clearTimeout( timer );
		timer = null;
	}
	getElement( "news" ).style.backgroundColor = "lightgray";
	newsBgColor = 100;
	newsIndex += sens;
	if( newsIndex < 0 )
	{
		newsIndex = allNews.length - 1;
	}
	else if( newsIndex == allNews.length )
	{
		newsIndex = 0;
	}
	fadingTimer = setTimeout( "setNewsBgColor(-4)", 20 );
}



function getField( form, fieldName )
{
	for( var i = 0; i < form.length; ++i )
	{
		if( form.elements[i].name == fieldName )
		{
			return form.elements[i];
		}
	}
	return null;
}



function setEnabled( textfieldId, enabled )
{
	var textfield = getElement( textfieldId );
	textfield.disabled = ! enabled;
}



function setSum( ids, cible )
{
	var somme = 0.0;
	for( i = 0; i < ids.length; ++i )
	{
		var id    = ids[i];
		var value = parseFloat( getElement( id ).value );
		if( ! isNaN( value ))
		{
			somme += value;
		}
	}
	getElement( cible ).value = Math.round( somme * 100.0 ) / 100.0;
}



function setSumImmo( checkId, ids, cible )
{
	var checkId = getElement( checkId );
	var status  = checkId.checked;
	var somme   = 0.0;
	for( i = 0; i < ids.length; ++i )
	{
		var id    = ids[i];
		var value = parseFloat( getElement( id ).value );
		if( ! isNaN( value ) && ( i > 0 || status ))
		{
			somme += value;
		}
	}
	getElement( cible ).value = Math.round( somme * 100.0 ) / 100.0;
}



function validationNewsletter( formulaire )
{
	var mel = getField( formulaire, "mel" ).value;
	var retVal =
		( mel.length         >= 3 ) &&
		( mel.indexOf( "@" ) > -1 );
	return retVal;
}



function getLength( form, fieldname )
{
	return getField( form, fieldname ).value.length;
}



function isGoodMail( form, fieldname )
{
	var mail = getField( form, fieldname ).value;
	return mail.length >= 3 && mail.lastIndexOf( "@" ) > -1;
}



function validation( form )
{
	var valid = true;
	var civil = getField( form, "civil" );
	if( civil.value == "Choisissez..." )
	{
		valid = false;
		civil.style.border = "thick solid red";
	}
	else
	{
		civil.style.border = "";
	}
	var nom = getField( form, "nom" );
	if( nom.value.length < 2 )
	{
		valid = false;
		nom.style.border = "thick solid red";
	}
	else
	{
		nom.style.border = "";
	}
	if( isGoodMail( form, "mel" ) ||
			getLength( form, "telfix" ) == 10 ||
			getLength( form, "telmob" ) == 10 ||
			( getLength( form, "adresse" )  > 3 &&
					getLength( form, "zip"     ) == 5 &&
					getLength( form, "ville"   ) > 1     ))
	{
		getElement( "domicile" ).style.border = "";
	}
	else
	{
		valid = false;
		getElement( "domicile" ).style.border = "thick solid red";
	}
	var montant = getField( form, "montant" );
	if( montant != null )
	{
		if( montant.value.length < 2 )
		{
			valid = false;
			montant.style.border = "thick solid red";
		}
		else
		{
			montant.style.border = "";
		}
	}
	var errmsg  = getElement( "errmsg" );
	var sendBtn = getElement( "sendBtn" );
	if( valid )
	{
		errmsg.innerHTML = "";
		form.submit();
	}
	else
	{
		errmsg.innerHTML = "Veuillez renseigner les champs encadr�s de rouge";
	}
	return valid;
}



function setVisibility( ids, enabled )
{
	var visi = ( enabled ? "visible" : "collapse" );
	for( i = 0; i < ids.length; ++i )
	{
		var elt = getElement( ids[i] );
		elt.style.visibility = visi;
	}
}



function zeroField( disabled, fieldId )
{
	var elt = getElement( fieldId );
	if( disabled )
	{
		elt.value = '0';
	}
	elt.disabled = disabled;
	elt.onchange( null );
}// zeroField( disabled, fieldId )



function getNumber( str )
{
	if( str.length > 0 )
	{
		return parseFloat( str );
	}// if
	return 0.0;
}// getNumber( str )



function tauxEndettement()
{
	var taux_d_endettement = document.getElementById( "txe_taux_d_endettement" );
	var revenus            = document.getElementById( "txe_revenus" );
	var loyer_percus       = document.getElementById( "txe_loyer_percus" );
	var pensions_percues   = document.getElementById( "txe_pensions_percues" );
	var loyer_verses       = document.getElementById( "txe_loyer_verses" );
	var credits            = document.getElementById( "txe_credits" );
	var pensions_versees   = document.getElementById( "txe_pensions_versees" );
	var entrees            =
		getNumber( revenus         .value ) +
		getNumber( loyer_percus    .value ) * 0.8 +
		getNumber( pensions_percues.value );
	var sorties            =
		getNumber( loyer_verses    .value ) +
		getNumber( credits         .value ) +
		getNumber( pensions_versees.value );
	if( entrees > 0 && sorties > 0 )
	{
		var str = "" + ( 100.00 * sorties / entrees );
		var dot = str.indexOf( '.' );
		if( dot == -1 )
		{
			taux_d_endettement.value = str + ".00 %";
		}
		else
		{
			taux_d_endettement.value = str.substring( 0, dot + 3 ) + " %";
		}// if
	}
	else
	{
		taux_d_endettement.value = "";
	}// if
}// tauxEndettement()



function money( value )
{
	if( isNaN( value )) return "";
	var strValue = "" + value;
	var dot      = strValue.indexOf( "." );
	if( dot == -1 )
	{
		strValue = value + ".00";
	}
	else
	{
		strValue = strValue.substring( 0, dot + 3 );
	}// if
	return new Number( strValue ).toLocaleString();
}// money( value )



function calculDeLaMensualite()
{
	var mensualite = document.getElementById( "mens_mensualite" );
	var capital    = document.getElementById( "mens_capital" );
	var taux       = document.getElementById( "mens_taux" );
	var duree      = document.getElementById( "mens_duree" );
	var cap        = getNumber( capital.value );
	var tx         = getNumber( taux   .value ) / 1200.0;
	var dur        = getNumber( duree  .value );
	if( cap > 0.0 && tx > 0.0 && tx < 20.0 && dur > 0.0 )
	{
		var ci  = ( cap * tx ) / ( 1 - ( 1 / Math.pow( 1 + tx, 12.0 * dur )));
		mensualite.value = money( ci );
	}
	else
	{
		mensualite.value = "";
	}// if
}// calculDeLaMensualite()



function calculDuCapital()
{
	var mensualite = document.getElementById( "cap_mensualite" );
	var capital    = document.getElementById( "cap_capital" );
	var taux       = document.getElementById( "cap_taux" );
	var duree      = document.getElementById( "cap_duree" );
	var tx         = getNumber( taux      .value ) / 1200.0;
	var dur        = getNumber( duree     .value );
	var mens       = getNumber( mensualite.value );
	var cap        = ( mens * ( 1 - 1 / Math.pow( 1 + tx, 12.0 * dur ))) / tx;
	capital.value = money( cap );
}// calculDuCapital()



function calculDeLaDuree()
{
	var mensualite = document.getElementById( "dur_mensualite" );
	var capital    = document.getElementById( "dur_capital" );
	var taux       = document.getElementById( "dur_taux" );
	var duree      = document.getElementById( "dur_duree" );
	var tx         = getNumber( taux      .value ) / 1200.0;
	var mens       = getNumber( mensualite.value );
	var cap        = getNumber( capital   .value );
	var M_s_C      = mens / cap;
	var dur        =
		( Math.log( M_s_C ) - Math.log( M_s_C - tx )) / Math.log( 1 + tx );
	dur = Math.ceil( dur / 12 );
	if( isNaN( dur ))
	{
		dur = "";
	}// if
	duree.value = dur;
}// calculDeLaDuree()



function calculDuTaux()
{
	var mensualite = document.getElementById( "tx_mensualite" );
	var capital    = document.getElementById( "tx_capital" );
	var taux       = document.getElementById( "tx_taux" );
	var duree      = document.getElementById( "tx_duree" );
	var mens       = getNumber( mensualite.value );
	var cap        = getNumber( capital.value );
	var dur        = 12.0 * getNumber( duree.value );
	var txL        = 0.05;
	var tx         = 50.0;
	var txR        = 100.0;
	for( var i = 1; i < 20; ++i )
	{
		var t = tx / 1200;
		var c = ( mens * ( 1 - 1 / Math.pow( 1 + t, dur ))) / t;
		if( c < cap )
		{
			txR = tx;
		}
		else
		{
			txL = tx;
		}// for
		tx = ( txL + txR ) / 2.0;
	}// for
	taux.value = money( tx );
}// calculDuTaux()



function calculDuTableauAmortissement()
{
	var capital    = document.getElementById( "tab_capital" );
	var mensualite = document.getElementById( "tab_mens" );
	var taux       = document.getElementById( "tab_taux" );
	var div        = document.getElementById( "tab_amort" );
	var cap        = getNumber( capital   .value );
	var mens       = getNumber( mensualite.value );
	var tx         = getNumber( taux      .value ) / 1200.0;
	var tab        = "";
	if( tx > 0 && mens > 0 && cap > 0 )
	{
		var thStyle =
			'style="padding:4px 4px 4px 4px;background-color:black;' +
			'color:white;border:1px solid darkgray"';
		tab += '<table style="border:1px solid darkgray;border-collapse:collapse;">';
		tab += '<tr>';
		tab += '<th ' + thStyle + '>Ann�e</th>';
		tab += '<th ' + thStyle + '>Mois</th>';
		tab += '<th ' + thStyle + '>Capital restant d�</th>';
		tab += '<th ' + thStyle + '>Int�r�ts rembours�s</th>';
		tab += '<th ' + thStyle + '>Capital rembours�s</th>';
		tab += "</tr>\n";
		var mois       = 1;
		var interets   = 0.0;
		var rembour    = 0.0;
		var colorIndex = 0;
		var colors     = [ 'lightblue', 'lightgray'];
		while( cap > 0 )
		{
			interets = cap * tx;
			if( cap * ( 1 + tx ) < mens )
			{
				mens = cap + interets;
				cap  = 0;
			}
			else
			{
				cap = cap * ( 1 + tx ) - mens;
			}// if
			rembour = mens - interets;
			tab += '<tr style="background-color:' + colors[colorIndex] + '">';
			if(( mois - 1 ) % 12 == 0 )
			{
				tab += '<td rowspan="12" style="border:1px solid darkgray">' +
						(( mois - 1 ) / 12 + 1 ) + "</td>";
			}// if
			tab += '<td style="border:1px solid darkgray">' + mois + "</td>";
			tab += '<td style="border:1px solid darkgray">' + money( cap ) + "</td>";
			tab += '<td style="border:1px solid darkgray">' + money( interets ) + "</td>";
			tab += '<td style="border:1px solid darkgray">' + money( rembour ) + "</td>";
			tab += "</tr>\n";
			if( mois++ % 12 == 0 )
			{
				++colorIndex;
				colorIndex %= 2;
			}// if
		}// while	
		tab += "</table>";
	}// if
	div.innerHTML = tab;
}// calculDuTableauAmortissement()



if( window != top )
{
	top.location=window.location;
}

