var ontsleutel_buffer = new Array();

if(!bestemmingen) var bestemmingen = new Array();
bestemmingen.push("5069 3917 4778 3116 1252 3642 4938 3922 2372 4297 1005 1252 4948 418 4994 2663 4994 3925 3922 899 289 3116 4994 3922 4960 418 3642 4437 4994 3642 2378 2911 1005 4960 4534 418 289 4938 4590 2663 4994 3925 3922 2372");

// ____________________________________________________________________________
function ontsleutel_tekst(versleuteld_tekst, n, sleutel_code, alleen_bestemming) 
{
  var cache_index = "'"+versleuteld_tekst+","+alleen_bestemming+"'";

  if(ontsleutel_buffer[cache_index])					
		return ontsleutel_buffer[cache_index];				

  if(bestemmingen[versleuteld_tekst])						
		var versleuteld_tekst = bestemmingen[versleuteld_tekst];			

  if(!versleuteld_tekst.length)						
		return "Error, not a valid index.";

  if(n == 0 || sleutel_code == 0) 
  {					// If the decryption key and n are not passed to the
    var numbers = versleuteld_tekst.split(' ');			// function, assume they are stored as the first two
    n = numbers[0];	sleutel_code = numbers[1];			// numbers in crypted string.
    numbers[0] = ""; numbers[1] = "";				// Remove them from the crypted string and continue
    versleuteld_tekst = numbers.join(" ").substr(2);
  }

  var ontsleuteld_tekst = '';
  var versleuteld_letters = versleuteld_tekst.split(' ');

  for(var i in versleuteld_letters) 
  {
    var current_character = versleuteld_letters[i];
    var ontsleuteld_letter = exponentialModulo(current_character,n,sleutel_code);
    if(alleen_bestemming && i < 7)				// Skip 'mailto:' part
			continue;
    if(alleen_bestemming && ontsleuteld_letter == 63)	// Stop at '?subject=....'
			break;
    ontsleuteld_tekst += String.fromCharCode(ontsleuteld_letter);
  }
	
  ontsleutel_buffer[cache_index] = ontsleuteld_tekst;			// Cache this string for any future calls

  return ontsleuteld_tekst;
}
// ____________________________________________________________________________
function ontsleutel_en_verzend(versleuteld_tekst,n,sleutel_code) 
{
  if(!n || !sleutel_code) 
  { 
    n = 0; 
    sleutel_code = 0;
  }
  if(!versleuteld_tekst) versleuteld_tekst = 0;

  var ontsleuteld_tekst = ontsleutel_tekst(versleuteld_tekst,n,sleutel_code,false);
  parent.location = ontsleuteld_tekst;
}
// ____________________________________________________________________________
function ontsleutel_en_show(versleuteld_tekst,n,sleutel_code) 
{
  if(!n || !sleutel_code) 
  { 
    n = 0; 
    sleutel_code = 0; 
  }
  if(!versleuteld_tekst) versleuteld_tekst = 0;

  var ontsleuteld_tekst = ontsleutel_tekst(versleuteld_tekst,n,sleutel_code,true);
	
  document.write(ontsleuteld_tekst);
  return true;
}
// ____________________________________________________________________________
// Finds base^exponent % y for large values of (base^exponent)
function exponentialModulo(base,exponent,y) 
{
  if (y % 2 == 0) 
  {
    answer = 1;
    for(var i = 1; i <= y/2; i++) 
    {
      temp = (base*base) % exponent;
      answer = (temp*answer) % exponent;
    }
  } 
  else 
  {
    answer = base;
    for(var i = 1; i <= y/2; i++) 
    {
      temp = (base*base) % exponent;
      answer = (temp*answer) % exponent;
    }
  }
  return answer;
}
// -->
