function GetLoc( id ){	if( i18n[id] == undefined ) return '***To loc: '+id+'***';	return i18n[id];}function valid_email( email ){	var reg= /^(.)+([\.-]?(.)+)*@(.)+([\.-]?(.)+)*(\.(.){2,})+$/;		return reg.test( email );}function is_number( field ){	a = field.value;	if( a.length < 1 ) return false;	if( isNaN( a ) ) return false;		return true;}function setCookie(iName, iValue){	var today = new Date(), expires = new Date();	expires.setTime(today.getTime() + (365*24*60*60*1000));	document.cookie = iName + "=" + iValue + ";expires=" + expires.toGMTString() + ';path=/';}function getCookie(iName){	var oRegex = new RegExp("(?:; )?" + iName + "=([^;]*);?");	if( oRegex.test(document.cookie) )	{		return decodeURIComponent(RegExp["$1"]);	}	else	{		return null;	}}function ReplaceImageExtension( element, ext1, ext2 ){	var ex = new RegExp( '.'+ext1, 'g' );	element.src = element.src.replace( ex, '.'+ext2 );}function ImageToAnim( element ){	ReplaceImageExtension( element, 'png', 'gif' );}function AnimToImage( element ){	ReplaceImageExtension( element, 'gif', 'png' );}function CreateAjax(){	var ajax;	try //Firefox	{		ajax = new XMLHttpRequest();	}	catch(Eff)	{		try //Internet Explorer		{			ajax = new ActiveXObject( "Msxml2.XMLHTTP" );		}		catch(Eie1)		{			try //Internet Explorer 2e version			{				ajax = new ActiveXObject( "Microsoft.XMLHTTP" );			}			catch(Eie2)			{				alert( GetLoc('fr.tvpaint.js.os.prices.xmlhttp.notsupported') );				return 0;			}		}	}		return ajax;}function open_ext_link(){    var liens = document.getElementsByTagName('a');    // On récupère tous les liens (<a>) du document dans une variable (un array), ici liens.    // Une boucle qui parcourt le tableau (array) liens du début à la fin.    for (var i = 0 ; i < liens.length ; ++i)	{         // Si les liens ont un nom de class égal à lien_ext, alors on agit.        if (liens[i].className == 'external')		{            liens[i].title = 'Open a new window';            // Au clique de la souris.            liens[i].onclick = function()				{					window.open(this.href);					return false; // On ouvre une nouvelle page ayant pour URL le href du lien cliqué et on inhibe le lien réel.				};        }    }}/****  Javascript sprintf*  http://www.webtoolkit.info/****/sprintfWrapper = {    init : function () {        if (typeof arguments == 'undefined') { return null; }        if (arguments.length < 1) { return null; }        if (typeof arguments[0] != 'string') { return null; }        if (typeof RegExp == 'undefined') { return null; }        var string = arguments[0];        var exp = new RegExp(/(%([%]|(\-)?(\+|\x20)?(0)?(\d+)?(\.(\d)?)?([bcdfosxX])))/g);        var matches = new Array();        var strings = new Array();        var convCount = 0;        var stringPosStart = 0;        var stringPosEnd = 0;        var matchPosEnd = 0;        var newString = '';        var match = null;        while (match = exp.exec(string)) {            if (match[9]) { convCount += 1; }            stringPosStart = matchPosEnd;            stringPosEnd = exp.lastIndex - match[0].length;            strings[strings.length] = string.substring(stringPosStart, stringPosEnd);            matchPosEnd = exp.lastIndex;            matches[matches.length] = {                match: match[0],                left: match[3] ? true : false,                sign: match[4] || '',                pad: match[5] || ' ',                min: match[6] || 0,                precision: match[8],                code: match[9] || '%',                negative: parseInt(arguments[convCount]) < 0 ? true : false,                argument: String(arguments[convCount])            };        }        strings[strings.length] = string.substring(matchPosEnd);        if (matches.length == 0) { return string; }        if ((arguments.length - 1) < convCount) { return null; }        var code = null;        var match = null;        var i = null;        for (i=0; i<matches.length; i++) {            if (matches[i].code == '%') { substitution = '%' }            else if (matches[i].code == 'b') {                matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(2));                substitution = sprintfWrapper.convert(matches[i], true);            }            else if (matches[i].code == 'c') {                matches[i].argument = String(String.fromCharCode(parseInt(Math.abs(parseInt(matches[i].argument)))));                substitution = sprintfWrapper.convert(matches[i], true);            }            else if (matches[i].code == 'd') {                matches[i].argument = String(Math.abs(parseInt(matches[i].argument)));                substitution = sprintfWrapper.convert(matches[i]);            }            else if (matches[i].code == 'f') {                matches[i].argument = String(Math.abs(parseFloat(matches[i].argument)).toFixed(matches[i].precision ? matches[i].precision : 6));                substitution = sprintfWrapper.convert(matches[i]);            }            else if (matches[i].code == 'o') {                matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(8));                substitution = sprintfWrapper.convert(matches[i]);            }            else if (matches[i].code == 's') {                matches[i].argument = matches[i].argument.substring(0, matches[i].precision ? matches[i].precision : matches[i].argument.length)                substitution = sprintfWrapper.convert(matches[i], true);            }            else if (matches[i].code == 'x') {                matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));                substitution = sprintfWrapper.convert(matches[i]);            }            else if (matches[i].code == 'X') {                matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));                substitution = sprintfWrapper.convert(matches[i]).toUpperCase();            }            else {                substitution = matches[i].match;            }            newString += strings[i];            newString += substitution;        }        newString += strings[i];        return newString;    },    convert : function(match, nosign){        if (nosign) {            match.sign = '';        } else {            match.sign = match.negative ? '-' : match.sign;        }        var l = match.min - match.argument.length + 1 - match.sign.length;        var pad = new Array(l < 0 ? 0 : l).join(match.pad);        if (!match.left) {            if (match.pad == '0' || nosign) {                return match.sign + pad + match.argument;            } else {                return pad + match.sign + match.argument;            }        } else {            if (match.pad == '0' || nosign) {                return match.sign + match.argument + pad.replace(/0/g, ' ');            } else {                return match.sign + match.argument + pad;            }        }    }}sprintf = sprintfWrapper.init;