// decrypt helper function
function decryptCharcode(n,start,end,offset){
  n = n + offset;
  if (offset > 0 && n > end){
    n = start + (n - end - 1);
  } 
  else if (offset < 0 && n < start){
    n = end - (start - n - 1);
  }
  return String.fromCharCode(n);
}

// decrypt string
function decryptString(enc,offset){
  var dec = "";
  var len = enc.length;
  for(var i=0; i < len; i++){
    var n = enc.charCodeAt(i);
    if (n >= 0x2B && n <= 0x3A)	{
      dec += decryptCharcode(n,0x2B,0x3A,offset);	// 0-9 . , - + / :
    } 
    else if (n >= 0x40 && n <= 0x5A){
      dec += decryptCharcode(n,0x40,0x5A,offset);	// A-Z @
    } 
    else if (n >= 0x61 && n <= 0x7A){
      dec += decryptCharcode(n,0x61,0x7A,offset);	// a-z
    } 
    else {
      dec += enc.charAt(i);
    }
  }
  return dec;
}

// decrypt spam-protected emails
function linkTo_UnCryptMailto(s){
  location.href = decryptString(s,-2);
}

// ueberprueft die gueltigkeit einer e-mail
function parseMail(str) {
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|\s/; // not valid
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; // valid
	if (!reg1.test(str) && reg2.test(str)) return true;
	return false;
}