//--------------------------------------------------------------------------------------------------------
<!--Globales diverses Globales diverses Globales diverses Globales diverses Globales diverses -->
<!--Globales diverses Globales diverses Globales diverses Globales diverses Globales diverses -->
<!--Globales diverses Globales diverses Globales diverses Globales diverses Globales diverses -->
<!--Globales diverses Globales diverses Globales diverses Globales diverses Globales diverses -->
<!--Globales diverses Globales diverses Globales diverses Globales diverses Globales diverses -->
var globalurldusite = 'http://www.mondirecteurmarketing.com';
var globalnombredetendances = 3;//Peut être mis à 3 ou à 4. 
var globallibelletendance1='Tendance contemporaine';
var globallibelletendance2='Tendance nature';
var globallibelletendance3='Tendance vitaminée';
var globallibelletendance4='Tendance 4';
var globallibelletendance1dansunephrase='tendance contemporaine';
var globallibelletendance2dansunephrase='tendance nature';
var globallibelletendance3dansunephrase='tendance vitaminée';
var globallibelletendance4dansunephrase='tendance 4';
var globalparametreaajouterdanslurlpourspecifierunaffichagealternatifenmodeliste='alternatif';  //A changer également dans [var:xxxxxx] sur toutes les pages ou cette variable Micrologiciel est utilisée
<!--/Globales diverses Globales diverses Globales diverses Globales diverses Globales diverses -->
<!--/Globales diverses Globales diverses Globales diverses Globales diverses Globales diverses -->
<!--/Globales diverses Globales diverses Globales diverses Globales diverses Globales diverses -->
<!--/Globales diverses Globales diverses Globales diverses Globales diverses Globales diverses -->
<!--/Globales diverses Globales diverses Globales diverses Globales diverses Globales diverses -->
//--------------------------------------------------------------------------------------------------------



//--------------------------------------------------------------------------------------------------------
<!--Fonctions spécifique à Micrologiciel Fonctions spécifique à Micrologiciel -->
<!--Fonctions spécifique à Micrologiciel Fonctions spécifique à Micrologiciel -->
<!--Fonctions spécifique à Micrologiciel Fonctions spécifique à Micrologiciel -->
<!--Fonctions spécifique à Micrologiciel Fonctions spécifique à Micrologiciel -->
<!--Fonctions spécifique à Micrologiciel Fonctions spécifique à Micrologiciel -->
var globalnomdelapagedebasedemicrologiciel='index.asp';
var globalnomdelapagepourajaxdemicrologiciel='page.asp';
var globaleregexpourdetectersiunformulaireaeteenvoye=/&FormulaireSend=[^&]*/i;//Regex évidemment dépendante du codage dans l'url par Micrologiciel du fait que le formulaire a été envoyé...
var globaleregexpourdetecterlenombredepagesduncatalogueenmodeliste=/Page_Number.*>(?:\&nbsp\;)?(?:\s)?([0-9]+)(?:\&nbsp\;)?(?:\s)?<.*Suivant/ig;//Regex évidemment dépendante du codage de ce bloc par Micrologiciel...
//Exemple page courante = page 3/4   >&nbsp;<b>4&nbsp;</b><span class="Texte_09_Pix">-Suivant&gt;
//Exemple page courante = page 4/4    345d117434414106&PageListe=2">2</a>&nbsp;<b>3&nbsp;</b><a title="Page 4" class="Texte_09_Pix" href="index.asp?ID=351&F1=f0b8292cd3f9675d3a18eea4345d117434414106&PageListe=4">4</a>&nbsp;<span class="Texte_09_Pix">-&nbsp;</span><a title="Suivant" class="Texte_09_Pix" href="index.asp?ID=351&F1=f0b8292cd3f9675d3a18eea4345d117434414106&PageListe=4">Suivant</a>
var globalparametredurldunumerodepageenmodeliste = 'PageListe';//Evidemment dépendante du codage dans l'url par Micrologiciel
//var globalmorceaudurlaajouterpourafficherunmodelisteaunepagespecifique = '&q=&PageListe=';//Evidemment dépendante du codage dans l'url par Micrologiciel
var globalmarqueurmicrologicielaucunenregistrementtrouveenmodeliste='>Aucun enreg'+'istrement trouvé<';//Evidemment dépendante du codage dans l'url par Micrologiciel

function transformerlurlenurlpourajaxdemicrologiciel(url)
{
	var regex = new RegExp(globalnomdelapagedebasedemicrologiciel,"gi");
	url=url.replace(regex, globalnomdelapagepourajaxdemicrologiciel);
	return url;
}

function nombredepagesdecatalogueenmodeliste(codehtml)
{
	var monresultat = globaleregexpourdetecterlenombredepagesduncatalogueenmodeliste.exec(codehtml);
	if (monresultat!=null) 
	{
		return monresultat[1];
	}
	else
	  return 100000;  //Esperons que ce cas n'arrive pas, mais au pire on faits ça.
}

function enmodelisteurldelapagenumero(page, urlcourante)
{
	if (urlcourante=='' || urlcourante==null)
		urlcourante=window.location.href;
	var regex = new RegExp('&'+globalparametredurldunumerodepageenmodeliste+'=[0-9]*',"gi");
	urlcourante=urlcourante.replace(regex, '&'+globalparametredurldunumerodepageenmodeliste+'='+page);
	regex = new RegExp('&amp;'+globalparametredurldunumerodepageenmodeliste+'=[0-9]*',"gi");
	urlcourante=urlcourante.replace(regex, '&amp;'+globalparametredurldunumerodepageenmodeliste+'='+page);
	regex = new RegExp('\,'+globalparametredurldunumerodepageenmodeliste+'=[0-9]*',"gi");
	urlcourante=urlcourante.replace(regex, '?'+globalparametredurldunumerodepageenmodeliste+'='+page);
	if (urlcourante.indexOf(globalparametredurldunumerodepageenmodeliste+'='+page)==-1)
	{
		if (urlcourante.indexOf('?')!=-1)
			urlcourante=urlcourante+'&'+globalparametredurldunumerodepageenmodeliste+'='+page;
		else
			urlcourante=urlcourante+'?'+globalparametredurldunumerodepageenmodeliste+'='+page;
	}
	return urlcourante;
}


function enmodelistealleralapagenumero(page, urlcourante)
{
	if (urlcourante=='' || urlcourante==null)
		urlcourante=window.location.href;

	window.location=enmodelisteurldelapagenumero(page, urlcourante);
	return true;
}



//Renvoie un tableau contenant toutes les valuers extraites du code html d'une combo box de critère dynamique
function detecterlesoptionsdelacomboboxdecriteredynamique(codehtml)
{											//Ex. : <option value="">typedeproduit</option><option  value="Accessoires déco" >Accessoires déco</option>
//<option value="">typedeproduit</option><option  value="Accessoires déco" >Accessoires déco</option><option  value="Grands stickers" >Grands stickers</option><option  value="Guides déco" >Guides déco</option><option  value="Mini stickers" >Mini stickers</option><option  value="Objets déco" >Objets déco</option><option  value="Outillage" >Outillage</option><option  value="Papiers" >Papiers</option><option  value="Pochoirs" >Pochoirs</option><option  value="Strass" >Strass</option></select>
	var monresultat;
	var monresultat2;
	var imonresultat;
//	var itableau1;
	var imonresultat2;
//	var tableau1= new Array();
	var tableaufinal= new Array();

	//|A|a|À|à|Á|á|Â|â|Ã|ã|Ä|ä|Å|å|Ā|ā|Ă|ă|Ą|ą|Ǟ|ǟ|Ǻ|ǻ|Æ|æ|Ǽ|ǽ|B|b|Ḃ|ḃ|C|c|Ć|ć|Ç|ç|Č|č|Ĉ|ĉ|Ċ|ċ|D|d|Ḑ|ḑ|Ď|ď|Ḋ|ḋ|Đ|đ|Ð|ð|Ǳ|ǲ|ǳ|Ǆ|ǅ|ǆ|E|e|È|è|É|é|Ě|ě|Ê|ê|Ë|ë|Ē|ē|Ĕ|ĕ|Ę|ę|Ė|ė|Ʒ|ʒ|Ǯ|ǯ|F|f|Ḟ|ḟ|ƒ|ﬀ|ﬁ|ﬂ|ﬃ|ﬄ|ﬅ|G|g|Ǵ|ǵ|Ģ|ģ|Ǧ|ǧ|Ĝ|ĝ|Ğ|ğ|Ġ|ġ|Ǥ|ǥ|H|h|Ĥ|ĥ|Ħ|ħ|I|i|Ì|ì|Í|í|Î|î|Ĩ|ĩ|Ï|ï|Ī|ī|Ĭ|ĭ|Į|į|İ|ı|Ĳ|ĳ|J|j|Ĵ|ĵ|K|k|Ḱ|ḱ|Ķ|ķ|Ǩ|ǩ|ĸ|L|l|Ĺ|ĺ|Ļ|ļ|Ľ|ľ|Ŀ|ŀ|Ł|ł|Ǉ|ǈ|ǉ|M|m|Ṁ|ṁ|N|n|Ń|ń|Ņ|ņ|Ň|ň|Ñ|ñ|ŉ|Ŋ|ŋ|Ǌ|ǋ|ǌ|O|o|Ò|ò|Ó|ó|Ô|ô|Õ|õ|Ö|ö|Ō|ō|Ŏ|ŏ|Ø|ø|Ő|ő|Ǿ|ǿ|Œ|œ|P|p|Ṗ|ṗ|Q|q|R|r|Ŕ|ŕ|Ŗ|ŗ|Ř|ř|ɼ|S|s|Ś|ś|Ş|ş|Š|š|Ŝ|ŝ|Ṡ|ṡ|ſ|ß|T|t|Ţ|ţ|Ť|ť|Ṫ|ṫ|Ŧ|ŧ|Þ|þ|U|u|Ù|ù|Ú|ú|Û|û|Ũ|ũ|Ü|ü|Ů|ů|Ū|ū|Ŭ|ŭ|Ų|ų|Ű|ű|V|v|W|w|Ẁ|ẁ|Ẃ|ẃ|Ŵ|ŵ|Ẅ|ẅ|X|x|Y|y|Ỳ|ỳ|Ý|ý|Ŷ|ŷ|Ÿ|ÿ|Z|z|Ź|ź|Ž|ž|Ż|ż
	//var regexpourdetecterlesoptionsdelacomboboxdecriteredynamique=/<option +value="(?: |-|'|\w)*" *>( |-|'|\w)*<\/option>/ig;//Regex évidemment dépendante du codage par Micrologiciel des combobox de critère dynamique...
//|A|a|À|à|Á|á|Â|â|Ä|ä|Æ|æ|B|b|C|c|Ç|ç|D|d|ď|ḋ|đ|E|e|È|è|É|é|Ě|ě|Ê|ê|Ë|ë|F|f|G|g|H|h|I|i|Ì|ì|Í|í|Î|î|Ĩ|ĩ|Ï|ï|J|j|K|k|M|m|N|n|Ň|ň|Ñ|ñ|O|o|Ò|ò|Ó|ó|Ô|ô|Õ|õ|Ö|ö|Ø|ø|Œ|œ|P|p|Q|q|R|r|S|s|ß|T|t|U|u|Ù|ù|Ú|ú|Û|û|Ü|ü|V|v|W|w|X|x|Y|y|Z|z
//|A|a|À|à|Á|á|Â|â|Ä|ä|Å|å|Æ|æ|B|b|C|c|Ç|ç|D|d|E|e|È|è|É|é|Ê|ê|Ë|ë|F|f|G|g|H|h|I|i|Î|î|Ï|ï|J|j|K|k|L|l|M|m|N|n|Ñ|ñ|O|o|Ò|ò|Ó|ó|Ô|ô|Õ|õ|Ö|ö|Ø|ø|P|p|Q|q|R|r|S|s|T|t|U|u|Ù|ù|Ú|ú|Û|û|Ü|ü|V|v|W|w|X|x|Y|y|Z|z
	var regexpourdetecterlesoptionsdelacomboboxdecriteredynamique=/<option +value="( |\-|\'|\w|A|a|À|à|Á|á|Â|â|Ã|ã|Ä|ä|Å|å|Ā|ā|Ă|ă|Ą|ą|Ǟ|ǟ|Ǻ|ǻ|Æ|æ|Ǽ|ǽ|B|b|Ḃ|ḃ|C|c|Ć|ć|Ç|ç|Č|č|Ĉ|ĉ|Ċ|ċ|D|d|Ḑ|ḑ|Ď|ď|Ḋ|ḋ|Đ|đ|Ð|ð|Ǳ|ǲ|ǳ|Ǆ|ǅ|ǆ|E|e|È|è|É|é|Ě|ě|Ê|ê|Ë|ë|Ē|ē|Ĕ|ĕ|Ę|ę|Ė|ė|Ʒ|ʒ|Ǯ|ǯ|F|f|Ḟ|ḟ|ƒ|ﬀ|ﬁ|ﬂ|ﬃ|ﬄ|ﬅ|G|g|Ǵ|ǵ|Ģ|ģ|Ǧ|ǧ|Ĝ|ĝ|Ğ|ğ|Ġ|ġ|Ǥ|ǥ|H|h|Ĥ|ĥ|Ħ|ħ|I|i|Ì|ì|Í|í|Î|î|Ĩ|ĩ|Ï|ï|Ī|ī|Ĭ|ĭ|Į|į|İ|ı|Ĳ|ĳ|J|j|Ĵ|ĵ|K|k|Ḱ|ḱ|Ķ|ķ|Ǩ|ǩ|ĸ|L|l|Ĺ|ĺ|Ļ|ļ|Ľ|ľ|Ŀ|ŀ|Ł|ł|Ǉ|ǈ|ǉ|M|m|Ṁ|ṁ|N|n|Ń|ń|Ņ|ņ|Ň|ň|Ñ|ñ|ŉ|Ŋ|ŋ|Ǌ|ǋ|ǌ|O|o|Ò|ò|Ó|ó|Ô|ô|Õ|õ|Ö|ö|Ō|ō|Ŏ|ŏ|Ø|ø|Ő|ő|Ǿ|ǿ|Œ|œ|P|p|Ṗ|ṗ|Q|q|R|r|Ŕ|ŕ|Ŗ|ŗ|Ř|ř|ɼ|S|s|Ś|ś|Ş|ş|Š|š|Ŝ|ŝ|Ṡ|ṡ|ſ|ß|T|t|Ţ|ţ|Ť|ť|Ṫ|ṫ|Ŧ|ŧ|Þ|þ|U|u|Ù|ù|Ú|ú|Û|û|Ũ|ũ|Ü|ü|Ů|ů|Ū|ū|Ŭ|ŭ|Ų|ų|Ű|ű|V|v|W|w|Ẁ|ẁ|Ẃ|ẃ|Ŵ|ŵ|Ẅ|ẅ|X|x|Y|y|Ỳ|ỳ|Ý|ý|Ŷ|ŷ|Ÿ|ÿ|Z|z|Ź|ź|Ž|ž|Ż|ż)*" *>( |\-|\'|\w|A|a|À|à|Á|á|Â|â|Ã|ã|Ä|ä|Å|å|Ā|ā|Ă|ă|Ą|ą|Ǟ|ǟ|Ǻ|ǻ|Æ|æ|Ǽ|ǽ|B|b|Ḃ|ḃ|C|c|Ć|ć|Ç|ç|Č|č|Ĉ|ĉ|Ċ|ċ|D|d|Ḑ|ḑ|Ď|ď|Ḋ|ḋ|Đ|đ|Ð|ð|Ǳ|ǲ|ǳ|Ǆ|ǅ|ǆ|E|e|È|è|É|é|Ě|ě|Ê|ê|Ë|ë|Ē|ē|Ĕ|ĕ|Ę|ę|Ė|ė|Ʒ|ʒ|Ǯ|ǯ|F|f|Ḟ|ḟ|ƒ|ﬀ|ﬁ|ﬂ|ﬃ|ﬄ|ﬅ|G|g|Ǵ|ǵ|Ģ|ģ|Ǧ|ǧ|Ĝ|ĝ|Ğ|ğ|Ġ|ġ|Ǥ|ǥ|H|h|Ĥ|ĥ|Ħ|ħ|I|i|Ì|ì|Í|í|Î|î|Ĩ|ĩ|Ï|ï|Ī|ī|Ĭ|ĭ|Į|į|İ|ı|Ĳ|ĳ|J|j|Ĵ|ĵ|K|k|Ḱ|ḱ|Ķ|ķ|Ǩ|ǩ|ĸ|L|l|Ĺ|ĺ|Ļ|ļ|Ľ|ľ|Ŀ|ŀ|Ł|ł|Ǉ|ǈ|ǉ|M|m|Ṁ|ṁ|N|n|Ń|ń|Ņ|ņ|Ň|ň|Ñ|ñ|ŉ|Ŋ|ŋ|Ǌ|ǋ|ǌ|O|o|Ò|ò|Ó|ó|Ô|ô|Õ|õ|Ö|ö|Ō|ō|Ŏ|ŏ|Ø|ø|Ő|ő|Ǿ|ǿ|Œ|œ|P|p|Ṗ|ṗ|Q|q|R|r|Ŕ|ŕ|Ŗ|ŗ|Ř|ř|ɼ|S|s|Ś|ś|Ş|ş|Š|š|Ŝ|ŝ|Ṡ|ṡ|ſ|ß|T|t|Ţ|ţ|Ť|ť|Ṫ|ṫ|Ŧ|ŧ|Þ|þ|U|u|Ù|ù|Ú|ú|Û|û|Ũ|ũ|Ü|ü|Ů|ů|Ū|ū|Ŭ|ŭ|Ų|ų|Ű|ű|V|v|W|w|Ẁ|ẁ|Ẃ|ẃ|Ŵ|ŵ|Ẅ|ẅ|X|x|Y|y|Ỳ|ỳ|Ý|ý|Ŷ|ŷ|Ÿ|ÿ|Z|z|Ź|ź|Ž|ž|Ż|ż)*<\/option>/ig; 
	
	var regexpourdetecterlesoptionsdelacomboboxdecriteredynamique2=/<option +value="(?: |\-|\'|\w|A|a|À|à|Á|á|Â|â|Ã|ã|Ä|ä|Å|å|Ā|ā|Ă|ă|Ą|ą|Ǟ|ǟ|Ǻ|ǻ|Æ|æ|Ǽ|ǽ|B|b|Ḃ|ḃ|C|c|Ć|ć|Ç|ç|Č|č|Ĉ|ĉ|Ċ|ċ|D|d|Ḑ|ḑ|Ď|ď|Ḋ|ḋ|Đ|đ|Ð|ð|Ǳ|ǲ|ǳ|Ǆ|ǅ|ǆ|E|e|È|è|É|é|Ě|ě|Ê|ê|Ë|ë|Ē|ē|Ĕ|ĕ|Ę|ę|Ė|ė|Ʒ|ʒ|Ǯ|ǯ|F|f|Ḟ|ḟ|ƒ|ﬀ|ﬁ|ﬂ|ﬃ|ﬄ|ﬅ|G|g|Ǵ|ǵ|Ģ|ģ|Ǧ|ǧ|Ĝ|ĝ|Ğ|ğ|Ġ|ġ|Ǥ|ǥ|H|h|Ĥ|ĥ|Ħ|ħ|I|i|Ì|ì|Í|í|Î|î|Ĩ|ĩ|Ï|ï|Ī|ī|Ĭ|ĭ|Į|į|İ|ı|Ĳ|ĳ|J|j|Ĵ|ĵ|K|k|Ḱ|ḱ|Ķ|ķ|Ǩ|ǩ|ĸ|L|l|Ĺ|ĺ|Ļ|ļ|Ľ|ľ|Ŀ|ŀ|Ł|ł|Ǉ|ǈ|ǉ|M|m|Ṁ|ṁ|N|n|Ń|ń|Ņ|ņ|Ň|ň|Ñ|ñ|ŉ|Ŋ|ŋ|Ǌ|ǋ|ǌ|O|o|Ò|ò|Ó|ó|Ô|ô|Õ|õ|Ö|ö|Ō|ō|Ŏ|ŏ|Ø|ø|Ő|ő|Ǿ|ǿ|Œ|œ|P|p|Ṗ|ṗ|Q|q|R|r|Ŕ|ŕ|Ŗ|ŗ|Ř|ř|ɼ|S|s|Ś|ś|Ş|ş|Š|š|Ŝ|ŝ|Ṡ|ṡ|ſ|ß|T|t|Ţ|ţ|Ť|ť|Ṫ|ṫ|Ŧ|ŧ|Þ|þ|U|u|Ù|ù|Ú|ú|Û|û|Ũ|ũ|Ü|ü|Ů|ů|Ū|ū|Ŭ|ŭ|Ų|ų|Ű|ű|V|v|W|w|Ẁ|ẁ|Ẃ|ẃ|Ŵ|ŵ|Ẅ|ẅ|X|x|Y|y|Ỳ|ỳ|Ý|ý|Ŷ|ŷ|Ÿ|ÿ|Z|z|Ź|ź|Ž|ž|Ż|ż)*" *>((?: |\-|\'|\w|A|a|À|à|Á|á|Â|â|Ã|ã|Ä|ä|Å|å|Ā|ā|Ă|ă|Ą|ą|Ǟ|ǟ|Ǻ|ǻ|Æ|æ|Ǽ|ǽ|B|b|Ḃ|ḃ|C|c|Ć|ć|Ç|ç|Č|č|Ĉ|ĉ|Ċ|ċ|D|d|Ḑ|ḑ|Ď|ď|Ḋ|ḋ|Đ|đ|Ð|ð|Ǳ|ǲ|ǳ|Ǆ|ǅ|ǆ|E|e|È|è|É|é|Ě|ě|Ê|ê|Ë|ë|Ē|ē|Ĕ|ĕ|Ę|ę|Ė|ė|Ʒ|ʒ|Ǯ|ǯ|F|f|Ḟ|ḟ|ƒ|ﬀ|ﬁ|ﬂ|ﬃ|ﬄ|ﬅ|G|g|Ǵ|ǵ|Ģ|ģ|Ǧ|ǧ|Ĝ|ĝ|Ğ|ğ|Ġ|ġ|Ǥ|ǥ|H|h|Ĥ|ĥ|Ħ|ħ|I|i|Ì|ì|Í|í|Î|î|Ĩ|ĩ|Ï|ï|Ī|ī|Ĭ|ĭ|Į|į|İ|ı|Ĳ|ĳ|J|j|Ĵ|ĵ|K|k|Ḱ|ḱ|Ķ|ķ|Ǩ|ǩ|ĸ|L|l|Ĺ|ĺ|Ļ|ļ|Ľ|ľ|Ŀ|ŀ|Ł|ł|Ǉ|ǈ|ǉ|M|m|Ṁ|ṁ|N|n|Ń|ń|Ņ|ņ|Ň|ň|Ñ|ñ|ŉ|Ŋ|ŋ|Ǌ|ǋ|ǌ|O|o|Ò|ò|Ó|ó|Ô|ô|Õ|õ|Ö|ö|Ō|ō|Ŏ|ŏ|Ø|ø|Ő|ő|Ǿ|ǿ|Œ|œ|P|p|Ṗ|ṗ|Q|q|R|r|Ŕ|ŕ|Ŗ|ŗ|Ř|ř|ɼ|S|s|Ś|ś|Ş|ş|Š|š|Ŝ|ŝ|Ṡ|ṡ|ſ|ß|T|t|Ţ|ţ|Ť|ť|Ṫ|ṫ|Ŧ|ŧ|Þ|þ|U|u|Ù|ù|Ú|ú|Û|û|Ũ|ũ|Ü|ü|Ů|ů|Ū|ū|Ŭ|ŭ|Ų|ų|Ű|ű|V|v|W|w|Ẁ|ẁ|Ẃ|ẃ|Ŵ|ŵ|Ẅ|ẅ|X|x|Y|y|Ỳ|ỳ|Ý|ý|Ŷ|ŷ|Ÿ|ÿ|Z|z|Ź|ź|Ž|ž|Ż|ż)*)<\/option>/i;

	//Regex évidemment dépendante du codage par Micrologiciel des combobox de critère dynamique...
	var monresultat = codehtml.match(regexpourdetecterlesoptionsdelacomboboxdecriteredynamique);
	if (monresultat!=null) 
	{
		for(imonresultat = 0; imonresultat < monresultat.length; imonresultat++)
		{
			monresultat2=regexpourdetecterlesoptionsdelacomboboxdecriteredynamique2.exec(monresultat[imonresultat]);
			if (monresultat2!=null) 
			{
					tableaufinal[tableaufinal.length]=monresultat2[1];
			}
		}
		return tableaufinal;
	}
	else
		return null;
}



<!--/Fonctions spécifique à Micrologiciel Fonctions spécifique à Micrologiciel -->
<!--/Fonctions spécifique à Micrologiciel Fonctions spécifique à Micrologiciel -->
<!--/Fonctions spécifique à Micrologiciel Fonctions spécifique à Micrologiciel -->
<!--/Fonctions spécifique à Micrologiciel Fonctions spécifique à Micrologiciel -->
<!--/Fonctions spécifique à Micrologiciel Fonctions spécifique à Micrologiciel -->
//--------------------------------------------------------------------------------------------------------





//--------------------------------------------------------------------------------------------------------
<!--Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX -->
<!--Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX -->
<!--Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX -->
<!--Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX -->
<!--Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX -->
//var globalemarqueurdebutmodeliste="#-d#d"+"-#";//Attention il faut bien faire une concaténation pour que quand cette chaîne est recherchée dans le code d'une page, elle ne soit pas trouvée... ici ! 
//var globalemarqueurfinmodeliste="#_f#f"+"_#";//Attention il faut bien faire une concaténation pour que quand cette chaîne est recherchée dans le code d'une page, elle ne soit pas trouvée... ici !
//var globalemarqueurdebutdenregistrement="$-d$d"+"-$";//Attention il faut bien faire une concaténation pour que quand cette chaîne est recherchée dans le code d'une page, elle ne soit pas trouvée... ici ! 
//var globalemarqueurfindenregistrement="$_f$f"+"_$";//Attention il faut bien faire une concaténation pour que quand cette chaîne est recherchée dans le code d'une page, elle ne soit pas trouvée... ici !
var globalemarqueurdebutmodeliste="<!--#-debutdumodeliste"+"-#-->";//Attention il faut bien faire une concaténation pour que quand cette chaîne est recherchée dans le code d'une page, elle ne soit pas trouvée... ici ! 
var globalemarqueurfinmodeliste="<!--#-findumodeliste"+"-#-->";//Attention il faut bien faire une concaténation pour que quand cette chaîne est recherchée dans le code d'une page, elle ne soit pas trouvée... ici !
var globalemarqueurdebutdenregistrement="<!--#-debutdenregistrement"+"-#-->";//Attention il faut bien faire une concaténation pour que quand cette chaîne est recherchée dans le code d'une page, elle ne soit pas trouvée... ici ! 
var globalemarqueurfindenregistrement="<!--#-findenregistrement"+"-#-->";//Attention il faut bien faire une concaténation pour que quand cette chaîne est recherchée dans le code d'une page, elle ne soit pas trouvée... ici !
<!--/Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX -->
<!--/Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX -->
<!--/Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX -->
<!--/Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX -->
<!--/Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX Requetes AJAX -->
//--------------------------------------------------------------------------------------------------------


//--------------------------------------------------------------------------------------------------------
<!--Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies -->
<!--Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies -->
<!--Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies -->
<!--Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies -->
<!--Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies -->
var globaleindice=1;
var globaletemptextespan='';
//var urltemp='';
var globalechainetemp='';
<!--/Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies -->
<!--/Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies -->
<!--/Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies -->
<!--/Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies -->
<!--/Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies Blogs et liste d'envies -->
//--------------------------------------------------------------------------------------------------------


//--------------------------------------------------------------------------------------------------------
<!--Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs -->
<!--Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs -->
<!--Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs -->
<!--Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs -->
<!--Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs -->
var globaleregexaucunenregistrementmodeliste="Aucun "+"enregistrement";//Attention il faut bien faire une concaténation pour que quand cette chaîne est recherchée dans le code d'une page, elle ne soit pas trouvée... ici !
var globalnomduparametredelapaecourantedecommentaires= 'PageListecommentaires';
var globalcouleurduboutonlistedetail='666698';
var globalcouleurduboutonlistedetailhovered = '98CB00';

var globalcouleurdeboutoncommentairesprecedentssuivants='666698';
var globalcouleurdeboutoncommentairesprecedentssuivantshovered='98CB00';

var globallibellesoyezlepremieralaisseruncommentaire = 'Soyez le premier à nous laisser un commentaire sur ce billet !!!';
var globaldemanderlemailpourlasaisieduncommentairedeblog = false;
var globallibellequestionantirobots1 = 'Question anti-robots : ';
var globallibellequestionantirobots2 = ' + ';
var globallibellequestionantirobots3 = ' ?';
var globalmessagerderreurmercidedonnerlareponsecorrectealaquestionantirobots = 'Merci de donner la réponse correcte à la question anti-robots.';

var globalnombredejourspendantlesquelsconserverlescookiesdeconnexion=91; 

var globalnomduchampidbilletdanslecatalogueblog1='C155';
var globalnomduchamptypedanslecatalogueblog1='C156';
var globalnomduchamptribilletsdanslecatalogueblog1='C157';
var globalnomduchamptitredanslecatalogueblog1='C158';
var globalnomduchampentetedanslecatalogueblog1='C159';
var globalnomduchampimage1danslecatalogueblog1='C160';
var globalnomduchampaltimage1danslecatalogueblog1='C176';
var globalnomduchamptexte1danslecatalogueblog1='C161';
var globalnomduchampimage2danslecatalogueblog1='C162';
var globalnomduchampaltimage2danslecatalogueblog1='C177';
var globalnomduchamptexte2danslecatalogueblog1='C179';
var globalnomduchampimage3danslecatalogueblog1='C164';
var globalnomduchampaltimage3danslecatalogueblog1='C178';
var globalnomduchamptexte3danslecatalogueblog1='C165';
var globalnomduchamppieddanslecatalogueblog1='C166';
var globalnomduchamptitrerssdanslecatalogueblog1='C167';
var globalnomduchampdateserveurdanslecatalogueblog1='C172';
var globalnomduchampdateclientdanslecatalogueblog1='C170';
var globalnomduchampheureclientdanslecatalogueblog1='C171';
var globalnomduchamppseudodanslecatalogueblog1='C168';
var globalnomduchampemaildanslecatalogueblog1='C169';
var globalnomduchampmessagedanslecatalogueblog1='C173';
<!--/Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs -->
<!--/Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs -->
<!--/Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs -->
<!--/Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs -->
<!--/Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs Blogs -->
//--------------------------------------------------------------------------------------------------------



//--------------------------------------------------------------------------------------------------------
<!--Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses -->
<!--Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses -->
<!--Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses -->
<!--Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses -->
<!--Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses -->
if (isie)
{
	function buttonhover(color)/*Pour corriger le bug d'IE qui ne prend pas en compte hover sur les button*/
	{
		var el=event.srcElement; 
		//alert('buttonhover');
		//alert('TEST ' + el.tagName);
		//alert('TEST ' + el.type);
		//alert('TEST ' + el.className);
		//alert('TEST ' + right(el.className, 6));
		if (el.tagName=="INPUT" && el.type=="button" && right(el.className, 6) == "pourie") /*A changer aussi dans le code des pages où les boutons sont créés*/
		{	//alert('dans');
			event.srcElement.style.backgroundColor=color;
			event.srcElement.style.cursor='pointer';
		} 
	}
}

// Retourne la chaîne val sans ses espaces
	function trim(val) 
	{
		var retour = ""
		for(i=0;i < val.length;i++)
		if(val.charAt(i) != " ") {
		retour += val.charAt(i)
		}
		return retour
	}
	function left(str, n)
	{
		if (n <= 0)
		return "";
		else if (n > String(str).length)
		return str;
		else
		return String(str).substring(0,n);
	}
	function right(str, n)
	{
		if (n <= 0)
		return "";
		else if (n > String(str).length)
		return str;
		else {
		var iLen = String(str).length;
		return String(str).substring(iLen, iLen - n);
		}
	}

	function EcrireCookie(nom, valeur)
	{
		var argv=EcrireCookie.arguments;
		var argc=EcrireCookie.arguments.length;
		var expires=(argc > 2) ? argv[2] : null;
		var path=(argc > 3) ? argv[3] : null;
		var domain=(argc > 4) ? argv[4] : null;
		var secure=(argc > 5) ? argv[5] : false;
		document.cookie=nom+"="+escape(valeur)+
		((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
		((path==null) ? "" : ("; path="+path))+
		((domain==null) ? "" : ("; domain="+domain))+
		((secure==true) ? "; secure" : "");
	}

	function getCookieVal(offset)
	{
		var endstr=document.cookie.indexOf (";", offset);
		if (endstr==-1) endstr=document.cookie.length;
		return unescape(document.cookie.substring(offset, endstr));
		}
		function LireCookie(nom)
		{
		var arg=nom+"=";
		var alen=arg.length;
		var clen=document.cookie.length;
		var i=0;
		while (i<clen)
		{
		var j=i+alen;
		if (document.cookie.substring(i, j)==arg) 
		return getCookieVal(j);
		i=document.cookie.indexOf(" ",i)+1;
		if (i==0) 
		break;
		}
		return '';
	}

	function EffaceCookie(nom)
	{
		date=new Date;
		date.setFullYear(date.getFullYear()-1);
		EcrireCookie(nom,null,date);
	}

	
	//Fonction qui renvoie le nom du jour de la semaine d'une date passée en paramètre.
	//Si aucune date n'est passée en paramètre, la fonciton prends la date courante. 
	function jourdelasemaineentoutelettre(madate)
	{
		if (madate == null)
   			madate = new Date();
		var tab_jour=new Array("dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi");
		return(tab_jour[madate.getDay()]);
	}
	//Fonctions qui renvoient la valeur indiquée par leur nom sur 2 chiffresd'une date passée en paramètre.
	//Si aucune date n'est passée en paramètre, la fonciton prends la date courante. 
	function joursurdeuxchiffres(madate)
	{
		if (madate == null)
   			madate = new Date();
		var temp = madate.getDate(); 
		if (temp<10)
			return '0'+temp;
		else
			return temp;
	}        
	function moissurdeuxchiffres(madate)
	{
		if (madate == null)
   			madate = new Date();
		var temp = madate.getMonth()+1; 
		if (temp<10)
			return '0'+temp;
		else
			return temp;
	}
	function heuresurdeuxchiffres(madate)
	{
		if (madate == null)
   			madate = new Date();
		var temp = madate.getHours(); 
		if (temp<10)
			return '0'+temp;
		else
			return temp;
	}
	function minutessurdeuxchiffres(madate)
	{
		if (madate == null)
   			madate = new Date();
		var temp = madate.getMinutes(); 
		if (temp<10)
			return '0'+temp;
		else
			return temp;
	}
	function secondessurdeuxchiffres(madate)
	{
		if (madate == null)
   			madate = new Date();
		var temp = madate.getSeconds(); 
		if (temp<10)
			return '0'+temp;
		else
			return temp;
	}

	function ajoutejours(datededepart, nombredejours)
	{
	 	return new Date(datededepart.getTime() + (1000 * 60 * 60 * 24 * nombredejours));
	}

	function removeHTMLTags(htmlString)
	{
        if(htmlString)
		{
        	var mydiv = document.createElement("div");
           	mydiv.innerHTML = htmlString;
            if (document.all) // IE Stuff
            {
                return mydiv.innerText;
            }   
            else // Mozilla does not work with innerText
            {
                return mydiv.textContent;
            }                           
      	}
   } 

	function litvariabledelurl(nomVariable, url)
	{
		
		if (url=='' || url==null)
			url=window.location.href;
		var infos = url.substring(url.indexOf("?")+1, url.length)+"&"
		if (infos.indexOf("#")!=-1)
			infos = infos.substring(0,infos.indexOf("#"))+"&"
		var variable=0
		{
			nomVariable = nomVariable + "="
			var taille = nomVariable.length
			if (infos.indexOf(nomVariable)!=-1)
				variable = infos.substring(infos.indexOf(nomVariable)+taille,infos.length).substring(0,infos.substring(infos.indexOf(nomVariable)+taille,infos.length).indexOf("&"))
		}
		return variable
	} 

	function hasClass(object, className) 
	{
		if (!object.className) return false;
		return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1);
	}

	function GetElementsWithClassName(elementName,className) 
	{
		var allElements = document.getElementsByTagName(elementName);
		var elemColl = new Array();
		for (var i = 0; i< allElements.length; i++) 
		{
	 		if (hasClass(allElements[i], className)) 
			{
		 		elemColl[elemColl.length] = allElements[i];
	 		}
		}
		return elemColl;
	}
	
	function cacherlelement(element)
	{
		if (element)
		{
			element.style.visibility = "hidden";/*Garder les 2 ligne car cette instruction dépend du browser*/
			element.style.display = "none";/*Garder les 2 ligne car cette instruction dépend du browser*/
		}
	}
	function cacherelementbyid(id)
	{
		if (document.getElementById(id))
			cacherlelement(document.getElementById(id));
	}

	//Le code suivant est une fonction qui renvoie l'objet XMLHttpRequest ou la valeur false lorsque le navigateur ne dispose pas de cette fonctionnalité. C'est aussi dans cette fonction qu'est défini le gestionnaire de changement d'état.
	//En profite pour renseigner globalelebrowsersupportelajax.
	var globalelebrowsersupportelajax;
	function getHTTPObject()
	{
	  var xmlhttp = false;
	
	  /* Compilation conditionnelle d'IE */
	  /*@cc_on
	  @if (@_jscript_version >= 5)
		 try
		 {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			globalelebrowsersupportelajax=true;
		 }
		 catch (e)
		 {
			try
			{
			   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			   globalelebrowsersupportelajax=true;
			}
			catch (E)
			{
			   xmlhttp = false;
			   globalelebrowsersupportelajax=false;
			}
		 }
	  @else
	  {
		 xmlhttp = false;
		 globalelebrowsersupportelajax=false;
	  }
	  @end @*/
	
	  /* on essaie de créer l'objet si ce n'est pas déjà fait */
	  if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
	  {
		 try
		 {
			xmlhttp = new XMLHttpRequest();
			globalelebrowsersupportelajax=true;
		 }
		 catch (e)
		 {
			xmlhttp = false;
			globalelebrowsersupportelajax=false;
		 }
	  }
	
	  //if (xmlhttp)
	  //{
	  //	 /* on définit ce qui doit se passer quand la page répondra */
	//	 xmlhttp.onreadystatechange=function()
	//	 {
	//		if (xmlhttp.readyState == 4) /* 4 : état "complete" */
	//		{
	//		   if (xmlhttp.status == 200) /* 200 : code HTTP pour OK */
	//		   {
	//			  /*
	//			  Traitement de la réponse.
	//			  Ici on affiche la réponse dans une boîte de dialogue.
	//			  */
	//			  alert(xmlhttp.responseText);
	//		   }
	//		}
	//	 }
	//  }
	  return xmlhttp;
	}
	getHTTPObject();//On l'exécute une fois pour renseigner globalelebrowsersupportelajax
	
	function ajax(url, forcerefresh, asynchronous, handler, renvoyerlecontenuhtmldelapageappellee)
	{
		var xhr_object = null;
		var parametreforcerefresh;
		
		xhr_object=getHTTPObject();
		if (!xhr_object)
			return false;
		
		//Si il a été demandé de forcer le refresh de la page, on va ajouter un parametre bidon à la fin de l'url de la requete
		if (forcerefresh)
		{
			if (url.indexOf("?")==-1)
				parametreforcerefresh="?";
			else
				parametreforcerefresh="&";
			nombrealeatoire=1+Math.floor(Math.random()*10000000001);//entre 1 et 10000000000
			parametreforcerefresh=parametreforcerefresh+'nombrealeatoireforcerefresh='+nombrealeatoire;
		}
		//alert(url+parametreforcerefresh);
		xhr_object.open("GET", url+parametreforcerefresh, asynchronous);
		if (asynchronous)
		{
			xhr_object.onreadystatechange = function()
			{
				if ( xhr_object.readyState == 4 )
				{
					//alert(left(right(xhr_object.responseText, 8000), 4000));
					handler(xhr_object.responseText);
					//return xhr_object.responseText;
				}
			}
		}
		//Dans le cas du get
		xhr_object.send(null);
		
		if (renvoyerlecontenuhtmldelapageappellee)
			return xhr_object.responseText;
	}
//--------------------------------------------------------------------------------------------------------


//--------------------------------------------------------------------------------------------------------
<!--/Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses -->
<!--/Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses -->
<!--/Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses -->
<!--/Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses -->
<!--/Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses Fonctions utiles diverses -->




//--------------------------------------------------------------------------------------------------------
<!--MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5-->
<!--MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5-->
<!--MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5-->
<!--MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5-->
<!--MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5-->
/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */

/*
 * Configurable variables. You may need to tweak these to be compatible with
 * the server-side, but the defaults work in most cases.
 */
var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */

/*
 * These are the functions you'll usually want to call
 * They take string arguments and return either hex or base-64 encoded strings
 */
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}
function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }
function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }

/*
 * Perform a simple self-test to see if the VM is working
 */
function md5_vm_test()
{
  return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";
}

/*
 * Calculate the MD5 of an array of little-endian words, and a bit length
 */
function core_md5(x, len)
{
  /* append padding */
  x[len >> 5] |= 0x80 << ((len) % 32);
  x[(((len + 64) >>> 9) << 4) + 14] = len;

  var a =  1732584193;
  var b = -271733879;
  var c = -1732584194;
  var d =  271733878;

  for(var i = 0; i < x.length; i += 16)
  {
    var olda = a;
    var oldb = b;
    var oldc = c;
    var oldd = d;

    a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
    d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
    c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
    b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
    a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
    d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
    c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
    b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
    a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
    d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
    c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
    b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
    a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
    d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
    c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
    b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);

    a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
    d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
    c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
    b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
    a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
    d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
    c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
    b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
    a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
    d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
    c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
    b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
    a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
    d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
    c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
    b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);

    a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
    d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
    c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
    b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
    a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
    d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
    c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
    b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
    a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
    d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
    c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
    b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
    a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
    d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
    c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
    b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);

    a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
    d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
    c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
    b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
    a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
    d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
    c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
    b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
    a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
    d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
    c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
    b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
    a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
    d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
    c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
    b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);

    a = safe_add(a, olda);
    b = safe_add(b, oldb);
    c = safe_add(c, oldc);
    d = safe_add(d, oldd);
  }
  return Array(a, b, c, d);

}

/*
 * These functions implement the four basic operations the algorithm uses.
 */
function md5_cmn(q, a, b, x, s, t)
{
  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}

/*
 * Calculate the HMAC-MD5, of a key and some data
 */
function core_hmac_md5(key, data)
{
  var bkey = str2binl(key);
  if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz);

  var ipad = Array(16), opad = Array(16);
  for(var i = 0; i < 16; i++)
  {
    ipad[i] = bkey[i] ^ 0x36363636;
    opad[i] = bkey[i] ^ 0x5C5C5C5C;
  }

  var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);
  return core_md5(opad.concat(hash), 512 + 128);
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations internally
 * to work around bugs in some JS interpreters.
 */
function safe_add(x, y)
{
  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * Bitwise rotate a 32-bit number to the left.
 */
function bit_rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}

/*
 * Convert a string to an array of little-endian words
 * If chrsz is ASCII, characters >255 have their hi-byte silently ignored.
 */
function str2binl(str)
{
  var bin = Array();
  var mask = (1 << chrsz) - 1;
  for(var i = 0; i < str.length * chrsz; i += chrsz)
    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
  return bin;
}

/*
 * Convert an array of little-endian words to a string
 */
function binl2str(bin)
{
  var str = "";
  var mask = (1 << chrsz) - 1;
  for(var i = 0; i < bin.length * 32; i += chrsz)
    str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
  return str;
}

/*
 * Convert an array of little-endian words to a hex string.
 */
function binl2hex(binarray)
{
  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var str = "";
  for(var i = 0; i < binarray.length * 4; i++)
  {
    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
  }
  return str;
}

/*
 * Convert an array of little-endian words to a base-64 string
 */
function binl2b64(binarray)
{
  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  var str = "";
  for(var i = 0; i < binarray.length * 4; i += 3)
  {
    var triplet = (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << 16)
                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
    for(var j = 0; j < 4; j++)
    {
      if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
      else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
    }
  }
  return str;
}
<!--/MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5-->
<!--/MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5-->
<!--/MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5-->
<!--/MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5-->
<!--/MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5-->
//--------------------------------------------------------------------------------------------------------



