function trim(string) {
  return string.replace (/(^\s+)|(\s+$)/g, "");
 }

 function validEmail (mail) {
  return (new RegExp ("^[_.0-9a-z-]+@([0-9a-z][0-9a-z_-]+.)+[a-z]{2,4}$").test(mail) ? 1 : 0);
 }

 function validURL (url) { //https, http и ftp; 
  var template = /^(?:(?:https?|http|ftp):\/\/(?:[a-z0-9_-]{1,32}(?::[a-z0-9_-]{1,32})?@)?)?(?:(?:[a-z0-9-]{1,128}\.)+(?:com|net|org|mil|edu|arpa|ru|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?!0[^.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?:\/[a-z0-9.,_@%&?+=\~\/-]*)?(?:#[^ \'\"&<>]*)?$/i;
  var regex = new RegExp (template);
  return (regex.test(url) ? 1 : 0);
 }

 function Generate (mail) {
  var mail=trim(document.genform.mail.value);
  if (mail=="") {
   window.alert ("Адрес E-mail пуст!");
   return;
  }
  if (!validEmail(mail)) {
   window.alert ("Адрес E-mail невалиден!");
   return;
  }
  var result="",c;
  for (var k=0; k<mail.length; k++) {
   c=mail.charCodeAt(k);
   if (c<10) c="00"+c;
   else if (c<100) c="0"+c;
   result = c + result;
  }
  document.genform.result.value=result;
 }

 function Email (s) {
  var code="";
  for (var k=0; k<s.length; k+=3) {
   code = String.fromCharCode(s.substring(k,k+3)) + code;
  }
//  window.alert ("Получен E-mail:\n"+code);
  return code;
 }

 function GetEmail (s) {
  var code="";
  for (var k=0; k<s.length; k+=3) {
   code = String.fromCharCode(s.substring(k,k+3)) + code;
  }
  window.open("mailto:" + code);
 }

 function CheckURL() {
  var url = document.urlform.url.value;
  if (url.indexOf("://")==-1) url="http://"+url; //при необходимости дописываем в начало адреса "http://"
  if (!validURL(trim(url))) window.alert ("Неверно!");
  else window.open (url);
 }
