var omemreg = /^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i;


function isValidEmail(email)
{
    if (omemreg.exec(email))
        return(true);

    return(false);
}


function isNotEmail(www)
{
    return(! isValidEmail(www));
}

function isNotEmailRequired(st)
{
  return(isNotBlank(st) && ! isValidEmail(st));
}

function isNotBlank(st)
{
  st = st.replace(/^[ \t]+/, '');
  st = st.replace(/[ \t]+$/, '');

  return(st.length > 0);
}

function validateField(msg, field, vfunc)
{
    var f = $(field);

    if (vfunc(f.value))
    {
        unnotify(f);
        return(true);
    }
    else
    {
        notify(msg, f);
        f.focus();
        return(false);
    }
}


function notify(msg, field)
{
    var notId = field.id + "Notify";
    var notField = $(notId);

    var txt = "<p class='validationerror' id='" + notId + "'>" + msg + "</p>";
    
    if (notField)
    {
        notField.replace(txt);
    }
    else
    {
        new Insertion.After(field, txt);
    }

    new Effect.Highlight(notId);

}

function unnotify(field)
{
    var notId = field.id + "Notify";
    var notField = $(notId);

    if (notField)
    {
        notField.remove();
    }
}

function cleanWww(uri)
{
    var result = uri;

    result = result.replace(/^[ \t]+/, '');
    result = result.replace(/[ \t]+$/, '');

    if (isValidEmail(result))
    {
        return(result);
    }

    if ((result.toLowerCase() == "none") || 
        (result.toLowerCase() == "n/a")  ||
	(result.toLowerCase() == "n.a.") ||
	(result.toLowerCase() == "na"))
      {
	result = "";
      }

    if (result == '')
    {
        return(result);
    }

    if (result.substring(0, 4) != 'http')
    {
        result = 'http://' + result;
    }

    result = result.replace(/\\/, "/");

    result = result.replace(/ /, '%20');
    result = result.replace(/[<>].*$/, '');

    return(result);
}

function addValidator(fieldid, validFunc, msg)
{
  var els = window.document.getElementsByClassName('submitter');

  for (var en = 0; en < els.length; ++en)
    {
      var el = $(els[en]);   // get extended element

      el.observe('click',
		 function(event) {
		   if (! validateField(msg, fieldid, validFunc))
		     {
		       Event.stop(event);
		       return(false);
		     }

		   return(true);
		 }
		);
    }
}
