﻿var ContactForm = {

  formId: null,

  init: function () {

    $$('#contactBtns .btn3-mail').addEvent('click', function () {
      _gaq.push(['_trackPageview', 'mail-sent']);
    });

    var closeBtn = $$('#contactForm input[type="reset"]');
    if (closeBtn != null) {
      closeBtn.addEvent('click', ContactForm.closeForm);
    }

    var callElm = $('contact-by-phone');
    if (callElm != null) {
      // IE
      callElm.addEvent('click', function () { ContactForm.showHidePhoneCall($(this).checked); });
      ContactForm.showHidePhoneCall(callElm.checked);
    }
  },

  initJobForm: function () {

  },

  showHidePhoneCall: function (checked) {

    var phoneCallElm = $('frm1-group1');
    phoneCallElm.setStyle('display', checked ? 'block' : 'none');

    var form = document.getElementById(ContactForm.formId);
    var vfeName = ContactForm.getValidatorsForElementName(form.groups[form.validators[0].id]);
    var emlVal = vfeName['email'];
    var phVal = vfeName['phone'];

    phVal.showMessage(checked);
    emlVal.showMessage(!checked);
  },

  sugarValidateGroup: function (gValidator) {
    var vfeName = ContactForm.getValidatorsForElementName(gValidator.vForm.groups[gValidator.id]);
    var emlVal = vfeName['webtolead_email1'];
    var phVal = vfeName['phone_mobile'];

    var isValid;

    isValid = ContactForm.validateIfValueIsSet(emlVal);
    isValid = isValid && ContactForm.validateIfValueIsSet(phVal);

    return isValid;
  },

  validateGroup: function (gValidator) {

    var vfeName = ContactForm.getValidatorsForElementName(gValidator.vForm.groups[gValidator.id]);
    var emlVal = vfeName['email'];
    var phVal = vfeName['phone'];

    var isValid;
    if ($('contact-by-phone').checked == false) {

      isValid = ContactForm.validateIfValueIsSet(phVal);
      isValid = isValid && emlVal.isValid();
    }
    else {

      isValid = ContactForm.validateIfValueIsSet(emlVal);
      isValid = isValid && phVal.isValid();
    }

    return isValid;
  },

  validateJobGroup: function (gValidator) {

    var vfeName = ContactForm.getValidatorsForElementName(gValidator.vForm.groups[gValidator.id]);
    var emlVal = vfeName['email'];
    var phVal = vfeName['phone'];
    var cvVal = vfeName['cv'];

    var isValid = true;

    if (cvVal.getElementValue() == '') {
      cvVal.showError(true);
      var isValid = false;
    } else {
      cvVal.showError(false);
    }

    emlValIsSet = emlVal.getElementValue() != '';
    phValIsSet = phVal.getElementValue() != '';
    if (emlValIsSet == false && phValIsSet == false) {

      emlVal.showError(true);
      return false;
    }

    if (emlValIsSet) {
      var ev = emlVal.isValid();
      isValid = ev;
      emlVal.showError(!ev);
    } else {
      emlVal.showError(false);
    }

    if (phValIsSet) {
      var pv = phVal.isValid();
      isValid = isValid && pv;
      phVal.showError(!pv);
    } else {
      phVal.showError(false);
    }

    return isValid;
  },

  validateIfValueIsSet: function (validator) {

    if (validator.getElementValue() != '') {
      return validator.isValid(validator);
    } else {
      validator.showError(false);
    }

    return true;
  },

  getValidatorsForElementName: function (validators) {

    var res = {};
    for (var i = 0; i < validators.length; i++) {
      var validator = validators[i];
      res[validator.elementName] = validator;
    }

    return res;
  }
}
