function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

rnd.today=new Date()
rnd.seed=rnd.today.getTime()
 
function rnd() {
	rnd.seed = (rnd.seed*9301+49297) % 233280
	return rnd.seed/(233280.0);
};
 
function rand(number) {
	return Math.ceil(rnd()*number);
};
 
function munge(address) 
{
	address = address.toLowerCase()
	coded = ""
 
	linktext = address; //(document.mungeForm.linkInput.value.length==0 ? linktext="\"+link+\"" : linktext=document.mungeForm.linkInput.value)
 
	unmixedkey = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
	inprogresskey = unmixedkey
	mixedkey=""
	unshuffled = 62
	for (i = 0; i <= 62; i++) {
		ranpos = rand(unshuffled) - 1
		nextchar = inprogresskey.charAt(ranpos)
		mixedkey += nextchar
		before = inprogresskey.substring(0,ranpos)
		after = inprogresskey.substring(ranpos+1,unshuffled)
		inprogresskey = before+after
		unshuffled -= 1
	}
	cipher = mixedkey
 
	shift = address.length
 
    txt =	'<script type=\"text/javascript\" language=\"javascript\">\n' +
        	'<!-'+'-\n' +
            '// Email obfuscator script 2.1 by Tim Williams, University of Arizona\n' +
            '// Random encryption key feature by Andrew Moulden, Site Engineering Ltd\n' +
            '// This code is freeware provided these four comment lines remain intact\n' +
            '// A wizard to generate this code is at http://www.jottings.com/obfuscator/\n'
 
    for (j=0; j<address.length; j++) {
			if (cipher.indexOf(address.charAt(j)) == -1 ) {
				chr = address.charAt(j)
				coded += address.charAt(j)
			}
			else {
				chr = (cipher.indexOf(address.charAt(j)) + shift) % cipher.length
				coded += cipher.charAt(chr)
			}
    }
 
	txt +=	'{ coded = \"' + coded + '\"\n' +
		'  key = "'+cipher+'"\n'+
		'  shift=coded.length\n'+
		'  link=""\n'+
		'  for (i=0; i<coded.length; i++) {\n' +
		'    if (key.indexOf(coded.charAt(i))==-1) {\n' +
		'      ltr = coded.charAt(i)\n' +
		'      link += (ltr)\n' +
		'    }\n' +
		'    else {     \n'+
		'      ltr = (key.indexOf(coded.charAt(i))-shift+key.length) % key.length\n'+
		'      link += (key.charAt(ltr))\n'+
		'    }\n'+
		'  }\n'+
		'document.write("<a href=\'mailto:"+link+"\'>'+linktext+'</a>")\n' +
		'}\n'+
       	'//-'+'->\n' +
       	'<' + '/script><noscript>Sorry, you need Javascript on to email me.' +
		'<'+'/noscript>\n'
    return txt;
}


function source()
{
location="view-source:" + window.location.href
}


