//validate form submission
function validateLeadAff(lead, form_id, requireZip, requireAddress, requireService)
{
	if(form_id==0) form_id = ""; 
	//make sure encrypted user id set
	var userId = lead.nx_e_userId;
	if(userId && userId.value !="")
	{
		return validateLead(lead, form_id, requireZip, requireAddress, requireService);
	}

	return false; //no userid for some odd reason
	
}
function validateLead(lead, form_id, requireZip, requireAddress, requireService) {
	var reason = "";
	
	if(requireService)
		reason += validateService(document.getElementById('service_type')); 
	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 (requireZip){
		reason += validateZip(document.getElementById('zip'+form_id).value, document.getElementById('zip_label'+form_id));
	}

/*	var zip = document.getElementById('zip'+form_id); 
	if (zip){
		reason += validateZip(zip.value, document.getElementById('zip_label'+form_id));
	}  
*/
	if(requireAddress)
	{
		var address = lead.address;
		if(!address.value) {
			 var lbl = document.getElementById('address_label'+form_id);
			 lbl.style.color='Red';
			 reason += "your address\n";
		}
	} 
	
	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));
	}
	//validate the question
	reason+=validateQuestions(lead, 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 || str == "") {
        lbl.style.color = 'Red'; 
        error = "your name\n";
    } else {
        lbl.style.color = 'Black';
    }
    return error;
}

function trim(s)
{
	if(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) {
    var error = "";
    if (fld.value.length == 0) { 
        error = "Please select the service you need\n"
    } else {
    }
    return error;  
}

/* form functions */
function autoTab(field1, len, field2) {
	if (document.getElementById(field1).value.length == len) {
		if (document.getElementById(field2))
			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;
}

function validateQuestions(lead, form_id)
{
 	 var errorMsg = ""; 
         //if we have a task id then check it's value
	 if(document.getElementById('task_id'+form_id))
	 {
		if(document.getElementById('task_id' + form_id).value =="")
		{
			errorMsg = "an answer for each of the required questions";
			document.getElementById('label_task'+form_id).style.color = 'red'; 
		}else{
			document.getElementById('label_task'+form_id).style.color = 'black'; 
		}			
	 }

	  for (var i = 0; i < lead.elements.length; ++i) { 
      	  	var eleName = lead.elements[i].name; 
    		 //see if name is question 
    		 //this is a question
    		 var question_id = eleName.substr(9,eleName.length-10); 
		 if(eleName.substr(0, 8)=="question" && lead.elements[i].className=="required" && lead.elements[i].value=="")
		 {
			errorMsg = "an answer for each of the required questions"; 
							
			document.getElementById('label_question_'+question_id).style.color = 'red'; 
         	 } else if(eleName.substr(0,8)=="question" && lead.elements[i].className=="required" && lead.elements[i].value!="")
		 {
			document.getElementById('label_question_'+question_id).style.color = 'black'; 
		 }
				 
	}
	 return errorMsg; 		
}

