function setError(field, errorLabel, errorMsg, errorClass){
  if(typeof(errorClass) == 'undefined'){
    errorClass = 'red';
  }
  errorLabel.className = errorClass;
  errorLabel.innerHTML = errorMsg;
  var fieldParent = field.parentNode;
  fieldParent.className = 'DEFfieldInputTextRedError';
}

function setSimpleError(errorLabel, errorMsg, errorClass){
  if(typeof(errorClass) == 'undefined'){
    errorClass = 'red';
  }
  errorLabel.className = errorClass;
  errorLabel.innerHTML = errorMsg;
}

function unsetError(field, errorLabel){
  errorLabel.className = '';
  errorLabel.innerHTML = '';
  field.parentNode.className = 'DEFfieldInputTextLight';
}

function unsetSimpleError(errorLabel){
  errorLabel.className = '';
  errorLabel.innerHTML = '';
}

function trim(string) {
	return string.replace(/^\s+|\s+$/g,"");
}

function validateEmail(fieldname){
  var emailField = document.getElementById(fieldname);
  var email = emailField.value;
  var emailErrorMsg = document.getElementById(fieldname + 'msg');
  var invalidChars = " /:,;";

  // Add country selector validation after changes in HTML!
	
  if (email == "") { // if empty;
    setError(emailField, emailErrorMsg, 'Please fill out this field!');
    return false;
  }
  for (var k=0; k<invalidChars.length; k++) { // if contains bad characters;
    var badChar = invalidChars.charAt(k);
    if (email.indexOf(badChar) > -1) {
	  setError(emailField, emailErrorMsg, 'E-mail address contains invalid characters!');
	  return false;
    }
  }
  var atPos = email.indexOf("@",1);
  if (atPos == -1) { // if does not have @ symbol;
    setError(emailField, emailErrorMsg, 'E-mail address is in invalid format!');
    return false;
  }
  if (email.indexOf("@",atPos+1) != -1) { // if has more than one @ symbol;
    setError(emailField, emailErrorMsg, 'E-mail address is in invalid format!');
    return false;
  }
  var periodPos = email.indexOf(".",atPos);
  if (periodPos == -1) { // if does not have period;
    setError(emailField, emailErrorMsg, 'E-mail address is in invalid format!');
    return false;
  }
  if (periodPos+3 > email.length)	{ // if have not at least 2 characters after period;
    setError(emailField, emailErrorMsg, 'E-mail address is in invalid format!');
    return false;
  }
  setError(emailField, emailErrorMsg, 'Your e-mail address will be Your username', 'information');
  emailField.parentNode.className = 'DEFfieldInputTextLight';
  return true;
}

function validateFieldSimple(fieldName){
  var field = document.getElementById(fieldName);
  if(typeof(field) == 'undefined'){
    return false;
  }
  var value = field.value;
  var errorMsg = document.getElementById(fieldName + 'msg');

  if(value == ''){
    setError(field, errorMsg, 'Please fill out this field!');
    return false;
  }
  unsetError(field, errorMsg);
  return true;
}

function validateCountry(fieldname){
  var country = document.getElementById(fieldname);
  var countryError = document.getElementById(fieldname + 'msg');
  if(country.value < 1){
    setSimpleError(countryError, 'Please select a country!', 'redCombobox');
	return false;
  }
  unsetSimpleError(countryError);
  return true;
}

function validatePassword1(){
  var passField = document.getElementById('regpassword1');
  var password1 = passField.value;
  var passErrorMsg = document.getElementById('regpassword1msg');

  if(password1 == ''){
    setError(passField, passErrorMsg, 'Please fill out this field!');
    return false;
  }
  if(password1.length < 6){
    setError(passField, passErrorMsg, 'Password must be at least 6 characters long!');
    return false;
  }
  unsetError(passField, passErrorMsg);
  return true;
}

function validatePassword2(){
  var passField = document.getElementById('regpassword2');
  var password1 = document.getElementById('regpassword1').value;
  var password2 = passField.value;
  var passErrorMsg = document.getElementById('regpassword2msg');
  if(password1 != password2){
    setError(passField, passErrorMsg, 'Entered password does not match first password!');
    return false;
  }
  unsetError(passField, passErrorMsg);
  return true;
}

function validateEditPassword1(){
  var passField = document.getElementById('regpassword1');
  var password1 = passField.value;
  var passErrorMsg = document.getElementById('regpassword1msg');

  if(password1 == ''){
    return true; // to remain password unchanged, user can leave password fields empty;
  }
  if(password1.length < 6){
    setError(passField, passErrorMsg, 'Password must be at least 6 characters long!');
    return false;
  }
  unsetError(passField, passErrorMsg);
  return true;
}

function validateEditPassword2(){
  var passField = document.getElementById('regpassword2');
  var password1 = document.getElementById('regpassword1').value;
  var password2 = passField.value;
  var passErrorMsg = document.getElementById('regpassword2msg');
  if(password1 == ''){
    return true;
  }
  if(password1 != password2){
    setError(passField, passErrorMsg, 'Entered password does not match first password!');
    return false;
  }
  unsetError(passField, passErrorMsg);
  return true;
}

function validateAgreement(){
  var chkbox = document.getElementById('licenseAgreed');
  if(chkbox.value != '1'){
    return false;
  }
  return true;
}

function validateTextarea(fieldname){
  var textarea = document.getElementById(fieldname);
  var textareaError = document.getElementById(fieldname + 'msg');
  if(trim(textarea.value).length < 1){
    setSimpleError(textareaError, 'Please fill out this field!');
	return false;
  }
  unsetSimpleError(textareaError);
  return true;
}


function validateRegForm(){
  var formValid = true;
  
  formValid = formValid & validateEmail('regemail');
  formValid = formValid & validateFieldSimple('regname');
  formValid = formValid & validateFieldSimple('regsurname');
  formValid = formValid & validateFieldSimple('regcompany');
  formValid = formValid & validateCountry('regcountry');
  formValid = formValid & validateFieldSimple('regphone');
  formValid = formValid & validateFieldSimple('regaddress');
  formValid = formValid & validatePassword1();
  formValid = formValid & validatePassword2();
  formValid = formValid & validateAgreement();
  if(formValid == true){
    document.getElementById('formsRegistration').submit();
  }
  return formValid;
}

function validateEditForm(){
  var formValid = true;
  formValid = formValid & validateEmail('regemail');
  formValid = formValid & validateFieldSimple('regname');
  formValid = formValid & validateFieldSimple('regsurname');
  formValid = formValid & validateFieldSimple('regcompany');
  formValid = formValid & validateCountry('regcountry');
  formValid = formValid & validateFieldSimple('regphone')
  formValid = formValid & validateFieldSimple('regaddress');
  formValid = formValid & validateEditPassword1();
  formValid = formValid & validateEditPassword2();
  if(formValid == true){
    document.getElementById('formsRegistration').submit();
  }
  return formValid;
}

function validateContacts(){
  var formValid = true;
  formValid &= validateFieldSimple('conname');
  var tmp = validateEmail('conemail');
  if(tmp){
    unsetError(document.getElementById('conemail'), document.getElementById('conemailmsg'));
  }
  formValid &= tmp;
  formValid &= validateFieldSimple('conphone');
  formValid &= validateTextarea('concomment');
  if(formValid == true){
    document.getElementById('concheckbox').value = 'valid';
	document.getElementById('contactForm').submit();
  }
  return formValid;
}

function validateReqLic(){
  var formValid = true;
  var tmp = validateEmail('reqemail');
  if(tmp){
    unsetError(document.getElementById('reqemail'), document.getElementById('reqemailmsg'));
  }
  formValid &= tmp;
	//alert(formValid ? 'true' : 'false');
	if(formValid == true){
		document.getElementById('contactForm').submit();
	}
  return formValid;
}