//validate form submission
 
function validateLead(lead, form_id) {
var reason = "";
/*  reason += validateService(document.getElementById('service_type'),document.getElementById('service_type_label')); */
	reason += validateName(lead.f_name, document.getElementById('f_name_label'+form_id));
	reason += validatePhone(lead.n_phone1,lead.n_phone2,lead.n_phone3,document.getElementById('phone_label'+form_id));
/*  if (document.getElementById('email_label'+form_id) == 'true'){ */
	reason += validateEmail(lead.email, document.getElementById('email_label'+form_id));
/*  } */
	if (document.getElementById('zip'+form_id) == 'true'){
		reason += validateZip(lead.zip.value, document.getElementById('zip_label'+form_id));
	}
	if (document.getElementById('alternate_label'+form_id)&& 
	   ((document.getElementById('d_phone1').value!='')||(document.getElementById('d_phone2').value!='')||(document.getElementById('d_phone3').value!=''))){
		reason += validatePhone(lead.d_phone1,lead.d_phone2,lead.d_phone3,document.getElementById('alternate_label'+form_id));
	}
  if (reason != "") {
    alert("In order to be contacted please fill in:\n"+reason);
    return false;
  }
  disableSubmit(lead);
  return true;
}

function validateZip(fld,lbl) {
    var error = "";
    if (fld == "") {
        error = "your zip code\n";
        lbl.style.color = 'Red';
    } else if (isNaN(fld)) {
        error = "your zip code correctly\n";
        lbl.style.color = 'Red';
	} else if (!(fld.length == 5)) {
        error = "your zip code correctly\n";
        lbl.style.color = 'Red';
    } else {
		lbl.style.color = 'Black';
	}
    return error;
}

function validateName(fld,lbl) {
    var error = "";
	var str=trim(fld.value);
	if (str == "") {
        lbl.style.color = 'Red'; 
        error = "your name\n";
    } else {
        lbl.style.color = 'Black';
    }
    return error;
}

function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
}

function validateEmail(fld,lbl) {
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   
    if (fld.value == "") {
        lbl.style.color = 'Black';
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        lbl.style.color = 'Red';
        error = "your email correctly\n";
	} else if (fld.value.match(illegalChars)) {
        lbl.style.color = 'Red';
        error = "your email correctly\n";
    } else {
        lbl.style.color = 'Black';
    }
    return error;
}

function validatePhone(fld1,fld2,fld3,lbl) {
    var error = "";
	var fld = fld1.value + fld2.value + fld3.value;
	var stripped = fld.replace(/[\(\)\.\-\ ]/g, '');
	var alt="";
	if (lbl.id=="alternate_label") alt="alternate ";
	
	if (fld == "") {
        error = "your phone number\n";
        lbl.style.color = 'Red';
    //} else if (isNaN(parseInt(stripped))) {
	} else if (!isInteger(stripped)) {
        error = "your "+alt+"phone number correctly\n";
        lbl.style.color = 'Red';
	} else if (!(stripped.length == 10)) {
        error = "your "+alt+"phone number correctly\n";
        lbl.style.color = 'Red';
    } else {
		lbl.style.color = 'Black';
	}
    return error;
}

function validateService(fld,lbl) {
    var error = "";
    if (fld.value.length == 0) {
        lbl.style.color = 'Red'; 
        error = "Please select the service you need\n"
    } else {
        lbl.style.color = 'Black';
    }
    return error;  
}

/* form functions */
function autoTab(field1, len, field2) {
	if (document.getElementById(field1).value.length == len) {
		document.getElementById(field2).focus();
		}
}

function disableSubmit(form) {
	var send_button;
	send_button = form.cmdSubmitRequest;
	send_button.style.visibility="hidden";
	return true;
}

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
