jQuery(function(){
jQuery("#ajaxform").validate({
rules: {
sender: {
required: true,
minlength: 3
},
email: {
required: true,
email: true
},
title: {
required: true
},
message: {
required: true
}
},
messages: {
sender: {
required: 'Имя не должно быть пустым',
minlength: 'Имя должно содержать минимум 3 символа'
},
email: {
required: 'Мыло не должно быть пустым',
email: 'E-mail адрес должен быть корректен'
},
title: {
required: 'Тема не должна быть пустой'
},
message: {
required: 'Сообщение не должно быть пустым'
}
},
success: function(label) {
label.html('OK').removeClass('error').addClass('ok');
setTimeout(function(){
label.fadeOut(500);
}, 2000)
},
submitHandler: function(form) {
var dataString = jQuery(form).serialize();
var options = {
type: "POST",
data: dataString,
dataType: "html",
beforeSend: preSubmit,
success: afterAjax,
error: errorAjax,
timeout: 7000
};
jQuery.ajax(options);
// !!! Важно !!!
// всегда возвращаем false, чтобы предупредить стандартные
// действия браузера (переход на страницу form.php)
return false;
}
});
//also - setup modal window with 'sending message' status
jQuery('#sendingMessage').jqm({overlay: 75, overlayClass: 'sqlOverlay', modal: true});
});
function preSubmit(xhr) {jQuery('#sendingMessage').jqmShow();}
function afterAjax(responseText, statusText) {
var ret = eval("(" + responseText + ")");
switch (ret.code) {
case -1: // field(s) missing
setSendingMessageDIV(-1,0,'Вы заполнили не все поля формы!
Вернитесь к редактированию.');
break;
case -2: // captcha test fail
setSendingMessageDIV(-1,0,'Сервер сомневается - человек ли вы? :)
Попробуйте отправить сообщение еще раз.
На этот раз уделите особое внимание капча-тесту!');
break;
case -3: // error while sending mail
setSendingMessageDIV(-1,0,'Произошла внутренняя ошибка сервера в момент отправки e-mail сообщения.
Вернитесь к сообщению и попробуйте отправить его еще раз через 1 минуту.');
break;
case 0: // OK - message sended by mail
setSendingMessageDIV(1,0,'Ваше сообщение успешно отправлено, спасибо Вам за него!
Домой? Или, быть может, еще одно сообщение?');
break;
default: // general error - timeout exceeding?
errorAjax();
}
}
function errorAjax(statusText) {
setSendingMessageDIV(-1,0,'Сервер не отвечает!
Вернитесь к сообщению и попробуйте отправить его еще раз через 1 минуту.');
}
/* config new state for DIV sendingMessage */
/* parameters: */
//bkColor: -1(set Error color)\0(set normal(grey) color)\1(set OK color); foreground color will be also set accordingly
//bkImage: 0 or miss(remove "ajax-wait" clock image)\any value(restore "ajax-wait" clock image)
//txt: any string(new text for DIV)\miss or empty(restore standart message - "Please, wait...")
function setSendingMessageDIV(bkColor,bkImage,txt){
sm=document.getElementById('sendingMessage');
switch (bkColor) {
case -1: sm.style.backgroundColor='#f5d6d7';sm.style.color='#c81925'; break;
case 0: sm.style.backgroundColor='#ebedf2';sm.style.color='#222'; break;
case 1: sm.style.backgroundColor='#deefca';sm.style.color='#577530'; break;}
if(bkImage) {sm.style.backgroundImage='';sm.style.paddingLeft=95+"px";sm.style.width=600+"px";} else {sm.style.backgroundImage='none';sm.style.paddingLeft=15+"px";sm.style.width=700+"px";}
if(txt) {sm.innerHTML=txt;} else {sm.innerHTML='Ваше сообщение отправляется. Одну секунду...';}
}
/* prepare 'contactform' to new edition session */
/* set focus to 'sender' field (for non-logged user) or to 'title' (for logged user) */
/* parameters: */
//clear: 0 or miss(reserve field's current values)\any value(clear form)
function resetForm(clear){
snd=document.getElementById('sender');
tlt=document.getElementById('title');
if(snd) {snd.focus();}else{tlt.focus();}
if(clear){
document.getElementById('title').value='';
document.getElementById('message').value='';
if(document.getElementById('email')) {document.getElementById('email').value='';}
if(snd) {snd.value='';}
}
}