//////////////////////////
// © 2009 Teemu Alapoikela 

dojo.require("dojo._base.html");
function validateForm() {    
  //haetaan tarvittavat elementit
  var theForm = dojo.byId("contactform");
  var theSubmit = dojo.byId("contactformsubmit");
  var theNotify = dojo.query(".beingsent");
  var txtInputs = dojo.query("#contactform .txtinput");
  var inputName = dojo.byId("palaute-nimi");
  var inputMail = dojo.byId("palaute-email");
  var inputPhone = dojo.byId("palaute-puh");
  var inputArea = dojo.byId("palaute-area");
  
  //oletusarvot
  formOk = false;
  nameValidated = false;
  mailValidated = false;
  phoneValidated = false;
  areaValidated = false;
  inputNameTouched = false;
  inputMailTouched = false;
  inputPhoneTouched = false;
  inputAreaTouched = false;
  inputNameClicked = false;
  
  originalValues = [];
  dojo.forEach(txtInputs, function(e) {
    originalValues.push(e.value);
    //console.log(originalValues);
  });
  
  //tyhjennetään ensimmäisellä klikkauskerralla
  txtInputs.onclick(function() {
    if (this == inputName && inputNameTouched == false) {
      inputName.value = "";
    }
    if (this == inputPhone && inputPhoneTouched == false) {
      inputPhone.value = "";
    }
    if (this == inputMail && inputMailTouched == false) {
      inputMail.value = "";
    }
    if (this == inputArea && inputAreaTouched == false) {
      inputArea.value = "";
    }
  });
  
  //palautetaan oletusarvot jos mitään ei oltu kirjoitettu tai jos kenttä jäi tyhjäksi
  txtInputs.onblur(function(){
    if (this.value == "") {
      for (var i = 0; i < originalValues.length; i++) {
        if (this == txtInputs[i]) {
          this.value = originalValues[i];
        }
      }
    }
  });
  
  //kuunnellaan tekstikenttiä
  txtInputs.onkeyup(function(){
    if (this == inputPhone) {
      inputPhoneTouched = true;
      inputPhone.value = inputPhone.value.replace(/\D+/,"");
    }
    if (this == inputName) {
      inputNameTouched = true;
      inputName.value = inputName.value.replace(/[^a-z åäöïüëÿäéñóíèìò]+/i,"");
      inputName.value = inputName.value.replace(/\s\s+/," ");
    }
    if (this == inputMail) {
      inputMailTouched = true;
      inputMail.value = inputMail.value.replace(/\s$/,"");
    }
    if (this == inputArea) {
      inputAreaTouched = true;
      inputArea.value = inputArea.value.replace(/<|>/,"");
    }
    //resetoidaan statet
    nameValidated = false;
    mailValidated = false;
    phoneValidated = false;
    areaValidated = false;
    ////console.log("ennen: ", nameValidated, mailValidated, phoneValidated);
    //console.log(inputNameTouched, inputPhoneTouched, inputMailTouched, inputAreaTouched);
    if (inputName.value.length < 2 || inputNameTouched == false) {nameValidated = false;}
    else {nameValidated = true;}

    if (/^.+@.+\..+$/.test(inputMail.value) && inputMailTouched == true) {mailValidated = true; }
    else {mailValidated = false;}          

    if (/^\d{6,}$/.test(inputPhone.value) && inputPhoneTouched == true) {phoneValidated = true;}
    else {phoneValidated = false;}

    if (inputArea.value.length > 10 && inputAreaTouched == true) {areaValidated = true;}
    else {areaValidated = false;}
    
    if (mailValidated == true) {dojo.addClass(inputMail,"validated");}
    else {dojo.removeClass(inputMail, "validated");}
    if (nameValidated == true) {dojo.addClass(inputName,"validated");}
    else {dojo.removeClass(inputName, "validated");}
    if (phoneValidated == true) {dojo.addClass(inputPhone,"validated");}
    else {dojo.removeClass(inputPhone, "validated");}
    if (areaValidated == true) {dojo.addClass(inputArea,"validated");}
    else {dojo.removeClass(inputArea, "validated");}
    
    ////console.log("jalkeen: ", nameValidated, mailValidated, phoneValidated);
    if (nameValidated == true && mailValidated == true && phoneValidated == true && areaValidated == true) {
      formOk = true; 
    }
    else {
      formOk = false; 
    }
  });
  
  theSubmit.onmouseover = function() {  
    if (formOk == false && (inputNameTouched == true || inputPhoneTouched == true || inputMailTouched == true || inputAreaTouched == true)) {
      alert("Täytäthän kaikki kentät. Tekstikenttä muuttuu vihreäksi, kun se on hyväksytty. Viestin minimipituus on 10 merkkiä.");
    }
  }
  
  dojo.connect(theForm, "onsubmit", function(e) {
    e.preventDefault();
    if (formOk = true) {
      dojo.style(theSubmit,"display", "none");
      console.log(theNotify[0]);
      dojo.style(theNotify[0],"display", "inline");
      var xhrArgs = {
        form: theForm,
        load: function(data) {
          theNotify[0].innerHTML = "<div id=\"response\"><h4>Viestisi l&auml;hetettiin onnistuneesti.</h4><p>Olemme sinuun pikaisesti yhteydess&auml; asian tiimoilta.</p></div>"
        },
        error: function(err) {
          console.log(err);
          dojo.style(theSubmit,"display", "inline");
          theNotify[0].innerHTML = "Viestin l&auml;hetyksess&auml; tapahtui virhe. Yrit&auml; uudestaan. Ongelman toistuessa ota yhteyttä: yritystuki@tietoverkkopalvelut.fi."
        }
      };
      var deferred = dojo.xhrPost(xhrArgs);
    }
  }); 
}
dojo.addOnLoad(function(){
  if (window.location.pathname == "/fi/yhteystiedot") {
    validateForm();
  }
});
