// JavaScript Document function jfContactForm(path) { this.path = path; this.fieldsJQ = {}; this.fieldsSpan = {}; var self = this; this.success(); $('#jf_cf .required').each(function(){ var field = $(this); self.fieldsJQ[field.attr('name')] = $(this); self.fieldsSpan[field.attr('name')] = $('span.' + field.attr('name')); $(this).blur(function(){ self.checkFieldAJAX(field.attr('name'), field.val()); }); }); element = $('#jf_cf_submit'); element.click(function(){ self.sendForm(); return false; }); var element = $('#jf_cf_button_show'); element.click(function(){ return false; }); } jfContactForm.prototype.success = function() { if($('#jf_cf_success').val() == 1) { $('#jf_cf').hide(); $('#jf_cf_button_show').show().click(function(){ $('#jf_cf_button_show').hide(); $('#jf_cf_information').remove(); $('#jf_cf').show(); }); } } jfContactForm.prototype.sendForm = function() { var form_field = 'jf_countdown_action=send'; var self = this; $('#jf_cf .required').each(function(){ var field = $(this); form_field = form_field + '&' + field.attr('name') + '=' + field.val(); }); $.ajax({ type: "POST", data: form_field, cach: false, dataType: "json", url: this.path + "/contact-form-ajax.php", beforeSend: function(){ $('#jf_cf').append('
'); }, complete: function() { $('#preloader').remove(); }, error: function() { $('#preloader').remove(); window.alert('Error.'); }, success: function(data) { self.setFields(data.fields_value, data.fields_message, data.fields_style); switch(data.status) { case 2: // error, not properly filled in form fields break; case 3: // correctly fill in the form break; case 4: // message is sent self.message(data.message, data.style); $('#jf_cf_success').val(1); self.success(); self.clearForm(); break; case 5: // error, message is not dispatched self.message(data.message, data.style); break; } } }); } jfContactForm.prototype.message = function(message, style) { $('#jf_cf_information').remove(); $('

').addClass(style).text(message).attr('id', 'jf_cf_information').insertBefore('#jf_cf'); } jfContactForm.prototype.clearForm = function() { for(name in this.fieldsJQ) { this.fieldsJQ[name].val(''); this.fieldsSpan[name].hide(); } } jfContactForm.prototype.setFields = function(fields_value, fields_message, fields_style) { for(name in fields_value) { this.fieldsJQ[name].val(fields_value[name]); if(fields_message[name] && fields_style[name]) { this.messageField(name, fields_message[name], fields_style[name]); } } } jfContactForm.prototype.messageField = function(name, message, style) { if(style != null) { this.fieldsJQ[name].siblings('span').text(message).addClass(style).show(); this.fieldsSpan[name].text(message).addClass(style).show(); } else { this.fieldsSpan[name].hide(); } } jfContactForm.prototype.checkFieldAJAX = function(name, value) { var self = this; $.ajax({ type: "POST", data: "jf_countdown_action=check_field_ajax&jf_field_name=" + name + "&jf_field_value=" + value, cash: false, dataType: "json", url: this.path + "/contact-form-ajax.php", success: function(data) { self.messageField(name, data.message, data.style); } }); }