// Fonction pour décoder les adresses email inscrite dans le html
// source : http://www.sloppycode.net/code-snippets/javascript/mailto-spam.aspx
// http://rumkin.com/tools/mailto_encoder/simple.php

 
//RunEncode('golfcapdagde@wanadoo.fr');
 
 
function RunEncode(mail, texte)
{
    Error = Check_InvalidEmail(mail);
    if (Error != "")
    {
        alert("You didn't fill in a proper email address!\n" + Error);
        return;
    }

    LinkText = mail;
    if (texte != null && texte != "")
    {
        LinkText = texte;
    }
    
    document.write(EncodeEmail(mail, LinkText));
}

function EncodeEmail(str, ltstr)
{
    doneStr = "<a href=\"mailto:" + str + "\">" + ltstr + "</a>";

    loc = 0;
    LetterList = "";
    while (loc < doneStr.length)
    {
	l = doneStr.slice(loc, loc+1);
	if (LetterList.indexOf(l) == -1)
	{
	    p = Rand(LetterList.length + 1);
	    LetterList = LetterList.slice(0, p) + l +
		LetterList.slice(p, LetterList.length + 1);
	}
	loc ++;
    }
	
    LetterListEscaped = LetterList;
	
    // At this point there should only be at most one \ and "
    // in LetterList and LetterListEscaped
    p = LetterListEscaped.indexOf("\\");
    if (p != -1)
    {
	LetterListEscaped = LetterListEscaped.slice(0, p) + "\\" +
	    LetterListEscaped.slice(p, LetterListEscaped.length);
    }
    p = LetterListEscaped.indexOf("\"");
    if (p != -1)
    {
	LetterListEscaped = LetterListEscaped.slice(0, p) + "\\" +
	    LetterListEscaped.slice(p, LetterListEscaped.length);
    }
	
    doneStr2 = "<script type=\"text/javascript\" language=\"javascript\">\n";
    doneStr2 += "<!--\n";
    doneStr2 += "ML=\"" + LetterListEscaped + "\";\n";
    doneStr2 += "MI=\"";
	
    loc = 0;
    while (loc < doneStr.length)
    {
	p = LetterList.indexOf(doneStr.slice(loc, loc+1));
	p += 48;
	doneStr2 += String.fromCharCode(p);
	loc ++;
    }
	
    doneStr2 += "\";\n";
    doneStr2 += "OT=\"\";\n";
    doneStr2 += "for(j=0;j<MI.length;j++){\n";
    doneStr2 += "OT+=ML.charAt(MI.charCodeAt(j)-48);\n";
    doneStr2 += "}document.write(OT);\n";
    doneStr2 += "// --></scr" + "ipt>\n";
    doneStr2 += "<nosc" + 
        "ript>You need JavaScript to see my email address</nosc" + "ript>";
    
    return doneStr2;
}

// Check for an empty email address, and one that doesn't have an @ symbol.
function Check_InvalidEmail(str)
{
    if (str == "" || str == null)
        return "Email address field was empty.";
    if (str.indexOf("@") == -1)
        return "No @ symbol found, which is necessary for email address";
    return "";
}


function Rand(maxPlusOne)
{
    return Math.floor(Math.random() * maxPlusOne);
}




//Fonctions qui retourne la position d'un élément 
// getAnchorPosition(anchorname)
//   This function returns an object having .x and .y properties which are the coordinates
//   of the named anchor, relative to the page.
function getAnchorPosition(anchorname) {	
	// This function will return an Object with x and y properties
	var useWindow=false;
	var coordinates=new Object();
	var x=0,y=0;
	// Browser capability sniffing
	var use_gebi=false, use_css=false, use_layers=false;
	if (document.getElementById) { use_gebi=true; }
	else if (document.all) { use_css=true; }
	else if (document.layers) { use_layers=true; }
	// Logic to find position
 	if (use_gebi && document.all) {
		x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
		y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
		}
	else if (use_gebi) {
		var o=document.getElementById(anchorname);
		
		x=AnchorPosition_getPageOffsetLeft(o);
		y=AnchorPosition_getPageOffsetTop(o);
		}
 	else if (use_css) {
		x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);
		y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);
		}
	else if (use_layers) {
		var found=0;
		for (var i=0; i<document.anchors.length; i++) {
			if (document.anchors[i].name==anchorname) { found=1; break; }
			}
		if (found==0) {
			coordinates.x=0; coordinates.y=0; return coordinates;
			}
		x=document.anchors[i].x;
		y=document.anchors[i].y;
		}
	else {
		coordinates.x=0; coordinates.y=0; return coordinates;
		}
	coordinates.x=x;
	coordinates.y=y;	
	return coordinates;
	}

// getAnchorWindowPosition(anchorname)
//   This function returns an object having .x and .y properties which are the coordinates
//   of the named anchor, relative to the window
function getAnchorWindowPosition(anchorname) {
	var coordinates=getAnchorPosition(anchorname);
	var x=0;
	var y=0;
	if (document.getElementById) {
		if (isNaN(window.screenX)) {
			x=coordinates.x-document.body.scrollLeft+window.screenLeft;
			y=coordinates.y-document.body.scrollTop+window.screenTop;
			}
		else {
			x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
			y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
			}
		}
	else if (document.all) {
		x=coordinates.x-document.body.scrollLeft+window.screenLeft;
		y=coordinates.y-document.body.scrollTop+window.screenTop;
		}
	else if (document.layers) {
		x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;
		y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;
		}
	coordinates.x=x;
	coordinates.y=y;
	return coordinates;
	}

// Functions for IE to get position of an object
function AnchorPosition_getPageOffsetLeft (el) {
	var ol=el.offsetLeft;
	while ((el=el.offsetParent) != null) { ol += el.offsetLeft; }
	return ol;
	}
function AnchorPosition_getWindowOffsetLeft (el) {
	return AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;
	}	
function AnchorPosition_getPageOffsetTop (el) {
	var ot=el.offsetTop;
	while((el=el.offsetParent) != null) { ot += el.offsetTop; }
	return ot;
	}
function AnchorPosition_getWindowOffsetTop (el) {
	return AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;
	}
