230 lines
7.8 KiB
JavaScript
Executable File
230 lines
7.8 KiB
JavaScript
Executable File
// Critical error, when exception is captured
|
|
var critical_error = 'Critical error : The script has generated an error. Our team was informed.';
|
|
// Regular exp to use
|
|
var field_format = {
|
|
'last_name': /^[a-zA-Z., -]{1,35}$/,
|
|
'first_name': /^[a-zA-Z., -]{1,35}$/,
|
|
'company': /^[a-zA-Z0-9.,& -]{0,35}$/,
|
|
'address': /^[a-zA-Z0-9.,& -]{0,250}$/,
|
|
'city': /^[a-zA-Z -]{1,35}$/,
|
|
'zipcode': /^[a-zA-Z0-9-]{1,12}$/,
|
|
'email': /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/,
|
|
'pseudo': /^[a-z0-9]{1,9}$/,
|
|
'id': /^[0-9]{1,11}$/,
|
|
'template': /^[a-zA-Z]{0,20}$/,
|
|
'password': /^[^'"]{4,15}$/,
|
|
'new_password1': /^[^'"]{4,15}$/,
|
|
'new_password2': /^[^'"]{4,15}$/,
|
|
'subject': /^[a-z0-9éèàçù].{4,99}$/i, // 5 to 100 chars, begining with an alphanumeric one
|
|
'message': /^[a-z0-9éèàçù].{4,499}$/mi, // 5 to 500 chars, begining with an alphanumeric one, multiline
|
|
'url': /^(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&\/~\+#]*[\w\-\@?^=%&\/~\+#])?$/i,
|
|
'frequency': /^[0-9]{1,11}$/,
|
|
'first_start': /^[0-9]{1,11}$/,
|
|
'user_folder': /^\/{1}([a-z0-9_-]*\.?[a-z0-9_-]*\/{1})?$/i,
|
|
'host': /^([a-z0-9]([a-z0-9\-]{0,61}[a-z0-9])?\.)+[a-z]{2,6}$/i,
|
|
'sql_def_host': /^([a-z0-9]([a-z0-9\-]{0,61}[a-z0-9])?\.)+[a-z]{2,6}$/i,
|
|
'sql_def_user': /^[a-z0-9]{1,9}$/,
|
|
'sql_def_pwd': /^[^'"]{4,15}$/
|
|
}
|
|
// Relatives paths
|
|
var rel_path = {
|
|
0: '.',
|
|
1: '..',
|
|
2: '../..'
|
|
}
|
|
|
|
// Adding the 'trim' method to class String
|
|
String.prototype.trim = function()
|
|
{
|
|
return this.replace(/(^\s*)|(\s*$)/g,'');
|
|
}
|
|
|
|
function checkRequiredState(field)
|
|
{
|
|
var id=field.id.toLowerCase();
|
|
// If the field ID doesn't start with 'req', this field is not required
|
|
// We can stop here and return true
|
|
if (id.indexOf('req_')!=0) return true;
|
|
var ftype=field.type;
|
|
var fval=$('#'+id).val();
|
|
fval.trim();
|
|
if ((ftype == 'text') || (ftype == 'password') || (ftype == 'textarea')) {
|
|
if (fval=='') return false;
|
|
} else if (ftype == 'select-one') {
|
|
if (fval == '') return false;
|
|
if (parseInt(fval) == -1) return false;
|
|
} else if (ftype == 'checkbox') {
|
|
if (field.checked == false) return false;
|
|
} else {
|
|
// If we come here, the field type hasn't been trated yet
|
|
// Returning false for security
|
|
return false;
|
|
}
|
|
// If we come here, the field is ok
|
|
return true;
|
|
}
|
|
|
|
function checkFieldFormat(field)
|
|
{
|
|
var id=field.id.toLowerCase();
|
|
var fval=$('#'+id).val();
|
|
// If the field is empty and not required, we don't have to make the verification
|
|
if ((fval=='') && (id.indexOf('req_')!=0)) return true;
|
|
if (typeof(field_format[id])!='undefined') {
|
|
if ( field_format[id].exec(fval) ) return true;
|
|
else return false;
|
|
} else if ( id.indexOf('_usrfldr') != -1) {
|
|
if ( field_format['user_folder'].exec(fval) ) return true;
|
|
else return false;
|
|
} else if (id.indexOf('req_')==0) {
|
|
id=id.substr(4);
|
|
if ( typeof(field_format[id])!='undefined') {
|
|
if ( field_format[id].exec(fval) ) return true;
|
|
else return false;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function validateForm( form_id , relativePath)
|
|
{
|
|
var all_is_ok = true;
|
|
// Closing the results area
|
|
$('#result_datas').slideUp('slow');
|
|
$('#result_datas > p').each(function() { $('#'+this.id).slideUp(); });
|
|
|
|
$('#'+form_id+' :input').each(
|
|
function ()
|
|
{
|
|
var field_id=this.id;
|
|
if (( this.type != 'button' ) && ( this.type != 'radio' ) && (this.type != 'hidden')) {
|
|
var is_ok=checkRequiredState(this);
|
|
if (is_ok==false) {
|
|
all_is_ok=false;
|
|
$('#err_'+field_id+'_missing').slideDown('slow');
|
|
$('#err_'+field_id).slideUp('slow');
|
|
} else {
|
|
$('#err_'+field_id+'_missing').slideUp('slow');
|
|
if ((this.type!='checkbox') && (this.type!='select-one')) {
|
|
is_ok=checkFieldFormat(this);
|
|
if (is_ok==false) {
|
|
all_is_ok=false;
|
|
$('#err_'+field_id).slideDown('slow');
|
|
} else {
|
|
$('#err_'+field_id).slideUp('slow');
|
|
}
|
|
}
|
|
}
|
|
var css_class1 = (is_ok==true?'success':'error');
|
|
var css_class2 = (is_ok==true?'error':'success');
|
|
|
|
if (this.type != 'checkbox') {
|
|
css_class1 = 'b' + css_class1;
|
|
css_class2 = 'b' + css_class2;
|
|
field_id = '#' + field_id;
|
|
} else {
|
|
field_id = '#lbl_' + field_id;
|
|
}
|
|
if ($(field_id).hasClass(css_class2)) $(field_id).removeClass(css_class2);
|
|
if (! $(field_id).hasClass(css_class1)) $(field_id).addClass(css_class1);
|
|
}
|
|
});
|
|
// If there was errors at verification time, we stop here
|
|
if (all_is_ok==false) {
|
|
$('#result_datas').slideDown('slow');
|
|
return false;
|
|
}
|
|
if (relativePath==undefined) {
|
|
relativePath=0;
|
|
} else if (typeof(rel_path[relativePath])=='undefined') {
|
|
relativePath=0;
|
|
}
|
|
var strurl=rel_path[relativePath];
|
|
strurl += '/ajax.php?frm_id=' + form_id;
|
|
// Executing the request
|
|
var frm_datas = $('#'+form_id+' :input').serialize();
|
|
$.ajax({
|
|
url: strurl,
|
|
data: frm_datas,
|
|
type: 'POST',
|
|
start: $('#'+ form_id +' :input').attr('disabled','disabled'),
|
|
error: function(responseText) { alert(critical_error);},
|
|
success: function(responseText){displayFormResults( form_id, responseText);},
|
|
});
|
|
}
|
|
|
|
function displayFormResults(form_id,responseText)
|
|
{
|
|
var hide_form=true;
|
|
|
|
if (responseText == 'critical_error') {
|
|
alert(critical_error);
|
|
return;
|
|
}
|
|
responseText = eval(responseText);
|
|
// If the first code is 1, we can hide the form
|
|
// Elsewhere, we do not hide it
|
|
if (responseText[0]!=1) hide_form=false;
|
|
|
|
for (var i = 1; i < responseText.length; i++)
|
|
{
|
|
if ( isNaN(responseText[i]))
|
|
$('#'+responseText[i]).slideDown();
|
|
else
|
|
$('#ret_code_'+responseText[i]).slideDown();
|
|
}
|
|
if ( hide_form ) {
|
|
$('#'+form_id+'_container').slideUp("slow", function(){$('#result_datas').slideDown("slow");});
|
|
} else {
|
|
$('#'+form_id+' select,input,textarea').attr('disabled','');
|
|
$('#result_datas').slideDown("slow");
|
|
}
|
|
}
|
|
|
|
function doSingleRequest(reqID, value, onSuccess, onFailure, relativePath)
|
|
{
|
|
// Checking values of callbacks
|
|
if (onSuccess == undefined || onSuccess == '') {
|
|
alert('onSuccess callback undefined !');
|
|
return false;
|
|
}
|
|
if (onFailure == undefined || onSuccess == '') {
|
|
alert('onFailure callback undefined !');
|
|
return false;
|
|
}
|
|
|
|
if (relativePath==undefined) {
|
|
relativePath=0;
|
|
} else if (typeof(rel_path[relativePath])=='undefined') {
|
|
relativePath=0;
|
|
}
|
|
|
|
var strurl=rel_path[relativePath];
|
|
strurl += '/ajax.php?frm_id=' + reqID;
|
|
var datas='value=' + value;
|
|
$.ajax({
|
|
url: strurl,
|
|
data: datas,
|
|
type: 'POST',
|
|
error: function(responseText) { alert(critical_error);},
|
|
success: function(responseText){displaySingleRequestResults( responseText, onSuccess, onFailure);},
|
|
});
|
|
}
|
|
|
|
function displaySingleRequestResults(results, onSuccess, onFailure)
|
|
{
|
|
if (results == 'critical_error') {
|
|
alert(critical_error);
|
|
return;
|
|
}
|
|
results = eval(results);
|
|
// If the first code is 1, we call the onSuccess function
|
|
// Elsewhere, we call the onFailure function
|
|
if (results[0]==1) {
|
|
onSuccess(results);
|
|
} else {
|
|
onFailure(results);
|
|
}
|
|
} |