if( typeof( HTMLElement ) != "undefined" )
	{
	HTMLElement.prototype.__defineSetter__("innerText", function (sText_old) {
		var sText = new String( sText_old );
		this.innerHTML = sText.replace(/\&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
	});
	HTMLElement.prototype.__defineGetter__("innerText", function () {
		var r = this.ownerDocument.createRange();
		r.selectNodeContents(this);
		return r.toString();
	});

	HTMLElement.prototype.__defineGetter__("outerHTML", function () {
		var _emptyTags = {
			"IMG":   true,
			"BR":    true,
			"INPUT": true,
			"META":  true,
			"LINK":  true,
			"PARAM": true,
			"HR":    true
			};
		var attrs = this.attributes;
		var str = "<" + this.tagName;
		for (var i = 0; i < attrs.length; i++)
			str += " " + attrs[i].name + "=\"" + attrs[i].value + "\"";

		if (_emptyTags[this.tagName])
			return str + ">";

		return str + ">" + this.innerHTML + "</" + this.tagName + ">";
	});
	HTMLElement.prototype.__defineSetter__("outerHTML", function (sHTML) {
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var df = r.createContextualFragment(sHTML);
		this.parentNode.replaceChild(df, this);
	});
}

function hasAttribute( objet, nom_attribut )
{
	var retour = false;

	if( document.all )
		{
		if( nom_attribut == "class" )
			nom_attribut = "className";
		}
	else if( nom_attribut == "className" )
		nom_attribut = "class";

	try // code compatible DOM
		{
		retour = objet.hasAttribute( nom_attribut );
		}
	catch( ex ) // patch fait pour IE
		{
		if( typeof( objet[nom_attribut] ) != "undefined" )
			retour = true;
		else
			retour = false;
		}
	return retour;
}
function getAttribute( objet, nom_attribut )
{
	var retour = null;

	if( document.all )
		{
		if( nom_attribut == "class" )
			nom_attribut = "className";
		}
	else if( nom_attribut == "className" )
		nom_attribut = "class";

	try
		{
		retour = objet.getAttribute( nom_attribut );
		}
	catch( ex )
		{
		if( typeof( objet[nom_attribut] ) != "undefined" )
			retour = objet[nom_attribut];
		else
			retour = null;
		}
	return retour;
}
function setAttribute( objet, nom_attribut, valeur )
{
	if( document.all )
		{
		if( nom_attribut == "class" )
			nom_attribut = "className";
		}
	else if( nom_attribut == "className" )
		nom_attribut = "class";

	try
		{
		objet.setAttribute( nom_attribut, valeur );
		}
	catch( ex )
		{
		objet[nom_attribut] = valeur;
		}
	return true;
}

function getElementsByAttribute( nom_attribut, valeur )
{
	var tabRetour = new Array();
	var tabTmp = new Array();

	tabTmp = document.body.getElementsByTagName( "*" );
	j=0;
	for (i=0; i<tabTmp.length; i++)
		if( hasAttribute( tabTmp[i], nom_attribut ) )
			if( ( typeof( valeur ) == "undefined" )
				|| ( getAttribute( tabTmp[i], nom_attribut ) == valeur ) ) 
				{
				tabRetour[j] = tabTmp[i];
				j++;
				}

	return tabRetour; 
}
function ajouter_evenement( objet, evenement, fonction )
{
	if( document.all )
		objet.attachEvent( 'on' + evenement, fonction );
	else
		objet.addEventListener( evenement, fonction, false );

	return 0;
}
function remplir_a_2_chiffres( nombre )
{
	if( nombre > 9 )
		return nombre;
	else
		return "0" + nombre;
}

function heure__mettre_a_jour()
{
	var liste_des_heures = getElementsByAttribute( "className", "heure" );

	for( var num_heure = 0 ; num_heure<liste_des_heures.length ; num_heure++ )
		{
		var ma_date = new Date();
		var format_de_l_heure;

		if( !hasAttribute( liste_des_heures[num_heure], "heure__format_de_l_heure" ) )
			setAttribute( liste_des_heures[num_heure], "heure__format_de_l_heure", liste_des_heures[num_heure].innerText );

		format_de_l_heure = getAttribute( liste_des_heures[num_heure], "heure__format_de_l_heure" );
		ma_date.setTime( ma_date.getTime() + 60000 * ( 60 * getAttribute( liste_des_heures[num_heure], "heure__decalage" ) + ma_date.getTimezoneOffset() ) );
		heure = "";
		for( var num=0 ; num<format_de_l_heure.length ; num++ )
			{
			if( format_de_l_heure.substr( num, 1 ) != "%" )
				heure += format_de_l_heure.substr( num, 1 )
			else
				{
				num++;
				switch( format_de_l_heure.substr( num, 1 ) )
					{
					// %h : affiche les heures (mode 24h) avec le moins de chiffre possible (ex : "1" pour 1h, "14" pour 14h)
					case "h" :
						heure += ma_date.getHours();
						break;
	
					// %H : affiche les heures (mode 24h) avec deux chiffres (ex : "01" pour 1h, "14" pour 14h)
					case "H" :
						heure += remplir_a_2_chiffres( ma_date.getHours() );
						break;
	
					// %t : affiche les heures (mode 12h) avec le moins de chiffre possible (ex : "1" pour 1h, "2" pour 14h)
					case "t" :
						if( ma_date.getHours() < 12 )
							heure += ma_date.getHours();
						else
							heure += ma_date.getHours()-12;
						break;
	
					// %T : affiche les heures (mode 12h) avec deux chiffres (ex : "01" pour 1h, "02" pour 14h)
					case "T" :
						if( ma_date.getHours() < 12 )
							heure += remplir_a_2_chiffres( ma_date.getHours() );
						else
							heure += remplir_a_2_chiffres( ma_date.getHours()-12 );
						break;
	
					// %m : affiche les minutes avec le moins de chiffre possible (ex : "1" pour 1mn, "14" pour 14mn)
					case "m" :
						heure += ma_date.getMinutes();
						break;
	
					// %M : affiche les minutes avec deux chiffres (ex : "01" pour 1mn, "14" pour 14mn)
					case "M" :
						heure += remplir_a_2_chiffres( ma_date.getMinutes() );
						break;
	
					// %s : affiche les secondes avec le moins de chiffre possible (ex : "1" pour 1s, "14" pour 14s)
					case "s" :
						heure += ma_date.getSeconds();
						break;
	
					// %S : affiche les secondes avec deux chiffres (ex : "01" pour 1s, "14" pour 14s)
					case "S" :
						heure += remplir_a_2_chiffres( ma_date.getSeconds() );
						break;
	
					// %a : affiche am ou pm en fonction de l'heure
					case "a" :
						if( ma_date.getHours() < 12 )
							heure += "am";
						else
							heure += "pm";
						break;
	
					// %A : affiche AM ou PM en fonction de l'heure
					case "A" :
						if( ma_date.getHours() < 12 )
							heure += "AM";
						else
							heure += "PM";
						break;
					}
				}
			}
		liste_des_heures[num_heure].innerText = heure;
		}
	setTimeout( "heure__mettre_a_jour()", 60000 );
}




ajouter_evenement( window, 'load', heure__mettre_a_jour );