// 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); } }