﻿var Subscribe = Class.create();
Subscribe.prototype =
 { initialize: function() {
     this.applicationRoot = applicationRoot;
     this.sForm = $('SubscribeForm');
     this.sDiv = $('SubscribeDiv');
     this.sMsg = $('subscribeMsg'); this.emailF = $("fEmail");
     this.nameF = $("fName"); this.addressF = $("fAddress");
     this.commentF = $("fComments"); this.emailT = "Ваш e-mail*";
     this.nameT = "Ваше имя*"; this.addressT = "Куда везти?*";
     this.commentT = "Почему именно мне?!";
 },
     swapForm: function(mode) {
         this.sForm.style.visibility = (mode) ? 'visible' : 'hidden';
         this.sMsg.style.visibility = (mode) ? 'visible' : 'hidden'; this.sDiv.style.visibility = (mode) ? 'visible' : 'hidden'; this.sForm.style.zIndex = '2000'; this.sDiv.style.zIndex = '2000'; this.sMsg.style.zIndex = '2000'; $("sImg").style.zIndex = '5000'; this.emailF.value = "Ваш e-mail*"; this.nameF.value = "Ваше имя*"; this.addressF.value = "Куда везти?*"; this.commentF.value = "Почему именно мне?!";
     }, clearField: function(field, text) { if (field.value == text) field.value = ""; },
     validateForm: function() {
         this.clearField(this.emailF, "Ваш e-mail*");
         this.clearField(this.nameF, "Ваше имя*");
         this.clearField(this.addressF, "Куда везти?*");
         this.clearField(this.commentF, "Почему именно мне?!");
         var email = this.emailF.value;
         var name = this.nameF.value;
         var address = this.addressF.value;
         var comments = this.commentF.value;
         var re1 = /^[^\.\s]([a-z0-9_-](\.[^\.@\s])*)+@[a-z0-9_-]+\.([a-z]{2,4})$/i;
         var re2 = /^([\s]+||[\s?])$/gim;
         var matchEmail = re1.test(email);
         this.emailF.parentNode.lastChild.style.visibility =
             (!matchEmail || email.match(re2) || email == "") ? "visible" : "hidden";
         this.nameF.parentNode.lastChild.style.visibility = (name == "" || name.match(re2)) ? "visible" : "hidden";
         this.addressF.parentNode.lastChild.style.visibility = (address == ""
         || address.match(re2)) ? "visible" : "hidden";
         if (!matchEmail || email.match(re2) || email == "" || name == "" || name.match(re2)
	             || address == "" || address.match(re2))
             return;
         this.sDiv.style.visibility = "hidden";
         this.sMsg.style.visibility = "visible";
         this.sMsg.innerHTML = "<img src='/Images/preload.gif' style='margin: 100px 0 0 0px' />";

         var args = {
             method: "post", parameters: "email=" + email + "&name=" + name + "&address=" +
		             address + "&comments=" + comments + "&nocache=" + Math.random(1048576),
             onSuccess: this.onSubscribed.bind(this), onFailure: this.onError.bind(this)
         };
      
         var ar = new Ajax.Request(applicationRoot + "/subscribe/", args);
     },

     onSubscribed: function(request, headers) {
         this.addText("Вы успешно подписались на нашу рассылку. Спасибо!");
     },
     onError: function() {
         var content = e.message;
         this.addText(content);
     },
     addText: function(content) {
         this.sMsg.innerHTML = "";
         var text = document.createElement("span");
         text.appendChild(document.createTextNode(content));
         this.sMsg.appendChild(text);
     }
 } 
