
function validateRadio(field) {

	var radio_choice = false;

	for (i = 0; i < field.length; i++) {
	   if (field[i].checked) radio_choice = true; 
	}

    return radio_choice;
}

function checkMandatory(fields) {

	var ret = true;
	for (i = 0; (i<fields.length)&&ret; i++) {
		field = document.getElementById(fields[i]);
        if(field.type.indexOf("radio") >= 0) { ret = validateRadio(field); continue; }
		if (field.value.length > 0) ret = ret && true;
		else ret = ret && false;
	}
    if(ret == false)
        alert("Please fill out all mandatory fields.");

    return ret;
}

function checkEmailFields(fields) {

    var invalidFields = "";
	var ret = true;
	for (i = 0; i < fields.length; i++) {
		field = document.getElementById(fields[i]);
                ret = echeck(field.value);
		if (ret == false) return ret;
	}
    return ret;
}

function echeck(str) {

	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1) {
	   alert("Invalid E-mail address.");
	   return false;
	}
	
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) {
	   alert("Invalid E-mail address.");
	   return false;
	}
	
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) {
	    alert("Invalid E-mail address.");
	    return false;
	}
	
	 if (str.indexOf(at,(lat+1))!=-1) {
	    alert("Invalid E-mail address.");
	    return false;
	 }
	
	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) {
	    alert("Invalid E-mail address.");
	    return false;
	 }
	
	 if (str.indexOf(dot,(lat+2))==-1) {
	    alert("Invalid E-mail address.");
	    return false;
	 }
	
	 if (str.indexOf(" ")!=-1) {
	    alert("Invalid E-mail address.");
	    return false;
	 }
	
	  return true;
}

function checkCrawlers(allFields) {

    badNames = new Array("http");
    badFields = new Array();
    var bFirstError = true;
    var ret = true;
    var err_mes = "";

    for (i = 0; i<allFields.length; i++) {
        field = document.getElementById(allFields[i]);
        for(j=0; (j<badNames.length)&&ret; j++)
             if(field.value.indexOf(badNames[j]) >= 0) {
                   if(bFirstError == true) {
                         if(ret == false) err_mes += "\n";
                         err_mes += "URLS not permitted in field(s).\n";
                         ret = ret && false;
                         bFirstError = false;
                   }
             }
    }

    if(ret == false)
       alert(err_mes);

    return ret;
}

function validate(form) {

//object_explorer("form",form);
  var allFields = new Array();
  var mandatoryFields = new Array();
  var emailFields = new Array();
  var ret = true;

  var inputs = form.getElementsByTagName('input');
  for (fieldname in inputs) {
        if(document.getElementById(fieldname) != null && 
           document.getElementById(fieldname).type != 'button' &&
           document.getElementById(fieldname).type != 'submit' &&
           document.getElementById(fieldname).type != 'reset' && 
           document.getElementById(fieldname).type != 'hidden') {
               name = document.getElementById(fieldname).name;
               allFields.push(fieldname);
               if(name.indexOf("mand_") == 0) mandatoryFields.push(fieldname);
               if(name.indexOf("email") >= 0 && 
                  document.getElementById(fieldname).value.length >0) emailFields.push(fieldname);
        }
  }

  var textareas = form.getElementsByTagName('textarea');
  for (fname in textareas) {
        if(document.getElementById(fname) != null &&
           document.getElementById(fname) != 'length') {
          allFields.push(fname);
          if(name.indexOf("mand_") == 0) mandatoryFields.push(fname);
          if(name.indexOf("email") >= 0 &&
             document.getElementById(fname).value.length >0) emailFields.push(fname);
        }
 }

  ret = checkMandatory(mandatoryFields);
  if(ret == false) return ret;

  ret = checkEmailFields(emailFields);
  if(ret == false) return ret;

  ret = checkCrawlers(allFields);

  return ret;
}

function object_explorer(name,obj) {

  if(!obj){alert(name+' object missing from browser');return;}
  msg=name+' object info:\n';
  for (propname in obj) if(typeof obj[propname]==='string'){
    msg+=propname+": "+obj[propname]+"\n";}
//  alert(msg);
  top.wnd=window.open('','win');
  top.wnd.document.writeln(msg);
  top.wnd.document.close();

}

