| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- function showContactForm(){
- clearContactErrors();
- document.getElementById('contact_menu').style.display = "block";
- document.getElementById('contact_progress').style.display = "none";
- document.getElementById('contact_confirmation').style.display = "none";
- document.getElementById('contact_bg').style.opacity = "0.6";
- document.getElementById('contact_bg').style.display = "block";
- document.getElementById('contact').style.display = "block";
- }
- function closeContactForm(){
- document.getElementById('contact_bg').style.opacity = "0.0";
- document.getElementById('contact_bg').style.display = "none";
- document.getElementById('contact').style.display = "none";
- }
- function clearContactErrors(){
- document.getElementById('sender_name_error').style.opacity = "0";
- document.getElementById('sender_email_error').style.opacity = "0";
- document.getElementById('text_error').style.opacity = "0";
- }
- function contactSuccess(){
- clearContactErrors();
- document.getElementById('contact_sender_name').value = "";
- document.getElementById('contact_sender_email').value = "";
- document.getElementById('contact_text').value = "";
- document.getElementById('contact_menu').style.display = "none";
- document.getElementById('contact_progress').style.display = "none";
- document.getElementById('contact_confirmation').style.display = "block";
- }
- function contactError(response){
- document.getElementById('contact_menu').style.display = "block";
- document.getElementById('contact_progress').style.display = "none";
- document.getElementById('contact_confirmation').style.display = "none";
- var errors = JSON.parse(response.replace(/\s/g, '')).response.errors
- for (let i = 0; i < errors.length; i++) {
- if (errors[i] === "INVALID_EMAIL"){
- document.getElementById('sender_email_error').style.display = "inline";
- }
- if (errors[i] === "INVALID_TEXT"){
- document.getElementById('text_error').style.display = "inline";
- }
- }
-
- }
- function sendMessage(e) {
- // Prevent form submit
- if (e.preventDefault) e.preventDefault();
- // Hide previously shown errors
- clearContactErrors();
- // Validate fields
- var success = true;
- var sender_name = document.getElementById('contact_sender_name').value;
- var sender_email = document.getElementById('contact_sender_email').value;
- var text = document.getElementById('contact_text').value;
-
- // Sender name is always OK
- // Sender email has to look like an email
- const res = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
- if (res.test(String(sender_email).toLowerCase()) === false){
- success = false;
- document.getElementById('sender_email_error').style.opacity = "1";
- }
- // Text needs to have something
- if (text.length < 1){
- success = false;
- document.getElementById('text_error').style.opacity = "1";
- }
- if (success === false){
- return false;
- }
-
- // Send request
- var url = "/contact/";
- var xhr = new XMLHttpRequest();
- xhr.open("POST", url, true);
- //xhr.setRequestHeader("Content-Type", "application/json");
- xhr.onreadystatechange = function () {
- if (xhr.readyState === 4) {
- if (xhr.status === 200){
- contactSuccess();
- }
- else{
- contactError(xhr.responseText)
- }
- }};
- xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
- xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
- datastring =
- 'authenticity_token=' + encodeURI(document.getElementById('authenticity_token').value) +
- '&sender_name=' + encodeURI(sender_name) +
- '&sender_email=' + encodeURI(sender_email) +
- '&text=' + encodeURI(text)
- document.getElementById('contact_menu').style.display = "none";
- document.getElementById('contact_progress').style.display = "block";
- document.getElementById('contact_confirmation').style.display = "none";
- xhr.send(datastring);
- // You must return false to prevent the default form behavior
- return false;
- }
|