function validateForm(form) {
  var formValidationResult;
  if (form.id=='orderForm'){
	  formValidationResult = validateName(form) & validateEmail(form) & validatePhone(form) & validateService(form) & validateTerm(form);
  }
  if (form.id=='applicantForm'){
	  formValidationResult = validateName(form) & validateEmail(form) & validateICQ(form) & validateSpec(form) & validateAttach(form) &  validateDescription(form) & validateResume(form);
  }
  if (form.id=='feedbackForm'){
	  formValidationResult = validateName(form) & validateEmail(form) & validateDescription(form);
  }
  if (formValidationResult == 0){show('all_errors');} else {hide('all_errors');}
  return (formValidationResult == 1);
}

function validateName(form){
	var isValid = true;
	var field = form.elements['Name'].value;
	
	field = trim(field);
	if (field.length == 0){
		isValid = false;
		show('err_name');
		show('err_name_invalid');
		hide('err_name_valid')
	} else { hide('err_name'); hide('err_name_invalid'); show('err_name_valid');}
	
	return isValid;
}

function validateEmail(form){
	var isValid = true;
	var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var field = form.elements['email'].value;
	
	if (field.match(emailRegEx)) {
        isValid = true;
		hide('err_email');
		hide('err_email_invalid');
		show('err_email_valid');
    } else {
        isValid = false;
		show('err_email');
		show('err_email_invalid');
		hide('err_email_valid');
    }
	
	return isValid;
}

function validatePhone(form){
	var isValid = true;
	var phoneRegEx = /^(\+?)[\(?|\)?|\d*|\s?|\-?]*\d+$/;
	var field = form.elements['phone'].value;
	
	if (field.match(phoneRegEx)) {
        isValid = true;
		hide('err_phone');
		hide('err_phone_invalid');
		show('err_phone_valid');
    } else {
        isValid = false;
		show('err_phone');
		show('err_phone_invalid');
		hide('err_phone_valid');
    }
	return isValid;
}

function validateICQ(form){
	var isValid = true;
	var phoneRegEx = /^(\d*)[\(?|\)?|\d*|\s?|\-?]*\d+$/;
	var field = form.elements['icq'].value;
	
	if (field.match(phoneRegEx)) {
        isValid = true;
		hide('err_icq');
		hide('err_icq_invalid');
		show('err_icq_valid');
    } else {
        isValid = false;
		show('err_icq');
		show('err_icq_invalid');
		hide('err_icq_valid');
    }
	return isValid;
}

function validateAttach(form){
	var isValid = true;
	var attach = '';
	
	if (form.elements['exp1'].checked){
		attach = form.elements['file_1'].value +
				 form.elements['file_2'].value +
				 form.elements['file_3'].value +
				 form.elements['file_4'].value +
				 form.elements['file_5'].value;
		if (attach.length == 0){
			isValid = false;
			show('err_attach');
			show('err_attach_invalid');
			hide('err_attach_valid');
		} else {
			hide('err_attach');
			hide('err_attach_invalid');
			show('err_attach_valid');
		}
	} else {
		hide('err_attach');
		hide('err_attach_valid');
		hide('err_attach_invalid');
	}
	return isValid;
}

function validateService(form){
	var isValid = true;
	var perevod;
	
	if (form.elements['service1'].checked) {
	    if (form.elements['lang_from'].value.length == 0){
			isValid = false;
		} else {
			if (form.elements['lang_to'].value.length == 0){
				isValid =  false;
			} else {
			    if (form.elements['topic'].value.length == 0){
					isValid =  false;
				} else {
					hide('err_service1');
				}
			}
		}
		if(!isValid){
			show('err_service1');
			show('err_service_invalid');
			hide('err_service_valid');
			hide('err_service2');
			hide('err_service3');
		} else {
			show('err_service_valid');
			hide('err_service_invalid');
		}
	}
	
	if (form.elements['service2'].checked) {
		
		isValid = form.elements['t1'].checked || form.elements['t2'].checked || form.elements['t3'].checked || form.elements['t4'].checked;
		if (isValid){
			hide('err_service1');
			hide('err_service2');
			hide('err_service3');
			hide('err_service_invalid');
			show('err_service_valid');
		} else {
			show('err_service2');
			show('err_service_invalid');
			hide('err_service_valid');
			hide('err_service1');
			hide('err_service3');	
		}
		
    } else {
		hide('err_service2');
	}

	if (form.elements['service3'].checked) {
        isValid = form.elements['t5'].checked || form.elements['t6'].checked;
		if (isValid){
			hide('err_service1');
			hide('err_service2');
			hide('err_service3');
			hide('err_service_invalid');
			show('err_service_valid');
		} else {
			show('err_service3');
			hide('err_service1');
			hide('err_service2');
			show('err_service_invalid');
			hide('err_service_valid');

		}
    } else {
		hide('err_service3');
	}

	return isValid;
}

function validateSpec(form){
	var isValid = true;
	isValid = form.elements['t1'].checked || form.elements['t2'].checked || form.elements['t3'].checked || form.elements['t4'].checked;
	if (isValid){
		hide('err_spec');
		hide('err_spec_invalid');
		show('err_spec_valid');
	} else {
		show('err_spec');
		show('err_spec_invalid');
		hide('err_spec_valid');
	}
	return isValid;
}

function validateTerm(form){
	var isValid = true;
	var field = form.elements['term'].value;
	
	field = trim(field);
	if (field.length == 0){
		isValid = false;
		show('err_term');
		show('err_term_invalid');
		hide('err_term_valid');
	} else {
		hide('err_term');
		hide('err_term_invalid');
		show('err_term_valid');
	}
	
	return isValid;
}

function validateResume(form){
	var isValid = true;
	var field = form.elements['resume'].value;
	
	field = trim(field);
	if (field == ''){
		isValid = false;
		show('err_resume');
		show('err_resume_invalid');
		hide('err_resume_valid');
	} else { 
		hide('err_resume');
		hide('err_resume_invalid');
		show('err_resume_valid');
	}
	
	return isValid;
}

function validateDescription(form){
	var isValid = true;
	var field = form.elements['job_description'].value;
	
	field = trim(field);
	if (field.length == 0){
		isValid = false;
		show('err_description');
		show('err_description_invalid');
		hide('err_description_valid');
	} else { 
		hide('err_description');
		hide('err_description_invalid');
		show('err_description_valid');
	}
	
	return isValid;
}

// Trim whitespace from left and right sides of s.
function trim(s) {
	return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}
