0
1
Fork 0
hedera-web-mindshore/web/forms/cms/contact/contact.js

77 lines
1.5 KiB
JavaScript

Vn.Contact = new Class
({
Extends: Vn.Form
,activate: function ()
{
var self = this;
var form = this.$('contact-form').onsubmit = function ()
{ self.onSubmit (); return false; };
this.refreshCaptcha ();
}
,refreshCaptcha: function ()
{
var url = 'forms/cms/contact/captcha.php';
this.$('captcha-img').src = url +'?'+ new Date ().getTime ();
}
,onSubmit: function ()
{
var form = this.$('contact-form');
var request = new Vn.FormRequest ();
request.send (form, this.onResponse.bind (this));
}
,onResponse: function (response)
{
var form = this.$('contact-form');
if (response)
{
form.reset ();
Htk.Toast.showMessage (_('DataSentSuccess'));
}
else
Htk.Toast.showError (_('ErrorSendingData'));
form['captcha'].value = '';
this.refreshCaptcha ();
}
});
Vn.FormRequest = new Class
({
send: function (form, callback)
{
var formData = '';
var elements = form.elements;
for (var i = 0; i < elements.length; i++)
if (elements[i].name)
formData += elements[i].name +'='+
encodeURIComponent (elements[i].value) +'&';
var request = new XMLHttpRequest ();
request.open (form.method, form.action, true);
request.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');
request.onreadystatechange = this.onSend.bind (this, request, callback);
request.send (formData);
}
,onSend: function (request, callback)
{
if (request.readyState != 4)
return;
if (request.status == 200)
callback (eval (request.responseText));
else
callback (null);
}
});