var config = new Array();
var ready = true;
$(document).ready(function(){
for(key in config)
{
if(key=='')continue;
$("form[rel='"+key+"']").submit(function() {
fsubmit(key);
return false;
});
}
});
function fsubmit(key)
{
//$("form[@name='"+key+"'] *").removeClass("error");
$("form[@name='"+key+"'] *").css('background','');
eval('validate_showErrorMethod = validate_'+key+'_showErrorMethod;');
if (validate_showErrorMethod.indexOf("#")!= -1) {
$(validate_showErrorMethod+" > *").remove("*");
$(validate_showErrorMethod).html('');
$(validate_showErrorMethod).css('display','');
}
var res = new Array(0);
res = checkForm(key);
for (element in res) {
if (element.length > 0) {
var tttt = 11;
displayErrors(res, key);break;
}
}
if (tttt != 11) {
eval('validate_sendMethod = validate_'+key+'_sendMethod;');
if (validate_sendMethod == 'ajax') {
post(key);
}
else {
$("form[name='"+key+"']").submit();
}
}
}
function post(fName) {
if (ready) {
var b = $("form[@name='"+fName+"'] input, form[@name='"+fName+"'] textarea, form[@name='"+fName+"'] select");
var newstr = "";
b.each(function() {
if ($(this).val() == "") {
$(this).val("");
}
newstr += this.name + '=' + $(this).val() + '&';
});
newstr += 'ajax=true';
newstr += '&formName='+fName;
$.ajax({
type: "POST",
url: $("form[name='"+fName+"']").attr('action'),
data: newstr,
success: function(msg){
if (msg.match('@s@'))
{
$("#loadbutton").show();
$("#preloader").hide();
var text1 = msg.replace(/@s@/g,'');
eval('validate_showErrorMethod = validate_'+fName+'_showErrorMethod;');
eval('validate_lastaction = validate_'+fName+'_lastaction;');
if (validate_showErrorMethod.match("#"))
{
$(validate_showErrorMethod).html(text1);
}else{
alert(text1)
};
if(validate_lastaction=='hide')
{
$("form[rel='"+fName+"']").css('display','none');
}
ready = false;
setTimeout('readyFalse()', 15000);
}
else {
var src = $("captcha", msg).text();
src = "/libs/imgcode/"+src+".jpg";
document.getElementById("captcha").src = src;
text1 = $("errors", msg).text();
$('#cap-error').slideDown(500);
$('#cap-error').html(text1);
$(validate_showErrorMethod).html('');
//$(validate_showErrorMethod).html(text1);
$("#loadbutton").show();
$("#preloader").hide();
eval('validate_showErrorMethod = validate_'+fName+'_showErrorMethod;');
if (validate_showErrorMethod.indexOf("#")!= -1) {
text1 = ""+text1+"
";
$(text1).appendTo(validate_showErrorMethod);
}
else {
alert(text1);
}
}
}
});
$("#preloader").show();
$("#loadbutton").hide();
}
else {
eval('validate_showErrorMethod = validate_'+fName+'_showErrorMethod;');
if (validate_showErrorMethod.indexOf("#")!= -1) {
$("
Слишком частое отправление запроса, подождите, пожалуйста
").appendTo(validate_showErrorMethod); } else { alert("Слишком частое отправление запроса, подождите, пожалуйста"); } } } function readyFalse() { ready = true; } function displayErrors(array, formName) { eval('validate_highlight = validate_'+formName+'_highlight;'); eval('validate_showErrorMethod = validate_'+formName+'_showErrorMethod;'); if (validate_highlight) { highlight(array, formName); } if (validate_showErrorMethod == "alert") { alertError(array); } if (validate_showErrorMethod.indexOf("#")!= -1) { showErrorInDiv(array, validate_showErrorMethod); } } function highlight(array, formName) { for (field in array) { for (error in array[field]) { // errorclass $("form[@name='"+formName+"'] *[name='"+field+"']").css('background','#FFFCC6 '); } } } function alertError(array) { var string = ""; out: for (field in array) { for (error in array[field]) { var newError = getError(error, array[field]['caption'], array[field][error]); string += newError+"\n"; continue out; } } alert(string); } function showErrorInDiv(array, id) { var string = ""; out: for (field in array) { for (error in array[field]) { var newError = getError(error, array[field]['caption'], array[field][error]); $('#'+field+'-error').html(newError); $('#'+field+'-error').slideDown(500); //string += ""+newError+"
"; //if(newError=='') continue out; } } $(id).append(string); } function getError($errorType, $fieldName, $value) { switch ($errorType) { case "maxlength": $string = "У поля «"+$fieldName+"» превышена максимальная длина - "+$value; break; case "minlength": $string = "Поле «"+$fieldName+"» - недостаточно символов"; break; case "email": $string = "Поле «"+$fieldName+"» заполнено неверно"; break; case "noempty": $string = "Поле «"+$fieldName+"» обязательно для заполнения"; break; case "nonumber": $string = "Поле «"+$fieldName+"» не должно содержать цифры"; break; case "numberonly": $string = "Поле «"+$fieldName+"» должно содержать только цифры"; break; case "captcha": $string = "В поле «"+$fieldName+"» введен неверный код"; break; default: $string = "Ошибка"; } return $string; } //Проверка формы //formName - имя формы function checkForm(formName) { var res; var error = new Array(0); var newArr = config[formName]; field = '1'; for(elem in newArr) { res = checkField(elem, newArr[elem], formName); field = elem; for (what in res) { if (what.length > 0) { error[elem] = new Array(); error[elem] = res; field = ''; error[elem]['caption'] = newArr[elem]['caption']; } else { delete error[elem]; field = ''; } } if(field !== '' && field!==1)$('#'+elem+'-error').slideUp(500); } return error; } //Проверяет Field //field - имя поля //value - массив с ограничителями и их значения //formName - имя формы function checkField(field, value, formName) { var error2 = new Array(0); var res; var newArr = value; for (var handler in newArr) { if (handler != 'caption') { functionName = "check_"+handler; res = eval(functionName+"('"+field+"','"+ newArr[handler]+"','"+ formName+"')"); if (!res) { error2[handler] = newArr[handler]; } else { delete error2[handler]; } } } return error2; } /*Обработчики*/ function check_maxlength(field, value, formName) { try{ var string = $("#"+field+"").val(); }catch(e){ var string = $("#"+field+"").html(); } if (string.length > parseInt(value)) { return false; } return true; } function check_captcha(field, value, formName) { return true; } /*Min-lenght validation*/ function check_minlength(field, value, formName) { try{ var string = $("#"+field+"").val(); }catch(e){ var string = $("#"+field+"").html(); } if (string.length < parseInt(value)) { return false; } return true; } /*Only numbers validation*/ function check_numberonly(field, value, formName) { try{ var string = $("#"+field+"").val(); }catch(e){ var string = $("#"+field+"").html(); } var reg = new RegExp("[^0-9]+", 'i'); var result = reg.test(string); if (result) { return false; } return true; } /*No numbers validation*/ function check_nonumber(field, value, formName) { try{ var string = $("#"+field+"").val(); }catch(e){ var string = $("#"+field+"").html(); } var reg = new RegExp("[0-9]", 'i'); var result = reg.test(string); if (result) { return false; } return true; } /*Only numbers and symbols validation*/ function check_numberandsimbols(field, value, formName) { try{ var string = $("#"+field+"").val(); }catch(e){ var string = $("#"+field+"").html(); } var reg = new RegExp("[^0-9-_+@\s]", 'i'); var result = reg.test(string); if (!result) { return false; } return true; } /*E-mail validation*/ function check_email(field, value, formName) { try{ var string = $("#"+field+"").val(); }catch(e){ var string = $("#"+field+"").html(); } return string.trim() == '' || string.match(/^[\w\.\-]+@[\w\.\-]+\.[a-zA-Z]{2,}$/i)? true : false; } /*No empty validation*/ function check_noempty(field, value, formName) { try{ var string = $("#"+field+"").val(); }catch(e){ var string = $("#"+field+"").html(); } if (string.length < 1) { return false; } return true; } /*checkbox validation*/ function check_checkbox(field, value, formName) { var string = $("#"+field+"").attr('checked'); if (!string) { return false; } return true; }