// DEFINE var array_keys_chiffres = ['1','2','3','4','5','6','7','8','9','0']; var array_keys_ponctuations = ['.','-','_','#','@']; var array_keys_minuscules = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; var array_keys_majuscules = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']; /* FONCTIONS */ function getUrlParameters() { var sPageURL = window.location.search.substring(1), sURLVariables = sPageURL.split('&'), sParameterName, params = [], i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); params[sParameterName[0]] = (sParameterName[1] === undefined) ? true : decodeURIComponent(sParameterName[1]); } return params; } function getUrlParameter(sParam) { var sPageURL = window.location.search.substring(1), sURLVariables = sPageURL.split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]); } } return false; } function beep(duration, frequency, volume, type, callback) { console.log("beep"); var audioCtx = new (window.AudioContext || window.webkitAudioContext || window.audioContext); var oscillator = audioCtx.createOscillator(); var gainNode = audioCtx.createGain(); oscillator.connect(gainNode); gainNode.connect(audioCtx.destination); if(volume) gainNode.gain.value = volume; if(frequency) oscillator.frequency.value = frequency; if(type) oscillator.type = type; if(callback) oscillator.onended = callback; oscillator.start(audioCtx.currentTime); oscillator.stop(audioCtx.currentTime + ((duration || 500) / 1000)); } function number_format(number, decimals, dec_point, thousands_sep) { number = (number + '') .replace(/[^0-9+\-Ee.]/g, ''); var n = !isFinite(+number) ? 0 : +number, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, dec = (typeof dec_point === 'undefined') ? '.' : dec_point, s = '', toFixedFix = function(n, prec) { var k = Math.pow(10, prec); return '' + (Math.round(n * k) / k) .toFixed(prec); }; // Fix for IE parseFloat(0.55).toFixed(0) = 0; s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)) .split('.'); if (s[0].length > 3) { s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); } if ((s[1] || '') .length < prec) { s[1] = s[1] || ''; s[1] += new Array(prec - s[1].length + 1) .join('0'); } return s.join(dec); } function initFiltreInputNumber() { iptsInt = $(".inputIntNumber"); iptsFloat = $(".inputFloatNumber"); if(iptsInt.length>0) initIntInput(iptsInt); if(iptsFloat.length>0) initFloatInput(iptsFloat); } function initIntInput(elem) { elem.unbind('keypress').keypress( function(event) { keys = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57]; if(event.keyCode==13) $(this).blur(); if(jQuery.inArray(event.keyCode,keys)==-1) event.preventDefault(); }); } function initIntInputWithLimits(elem, min, max) { elem.unbind('keypress').keypress( function(event) { keys = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57]; if(event.keyCode==13) { $(this).blur(); if(parseInt($(this).val()>max)) $(this).val(max); else if(parseInt($(this).val()0) event.preventDefault(); }).keyup( function(event) { if(event.keyCode==188 && $(this).val().indexOf('.')==-1) { var pos = $(this)[0].selectionStart; $(this).val( $(this).val().replace(",",".") ); $(this)[0].setSelectionRange(pos,pos); } }); } function initEdiTable(elem,beforeFct,callbacbFct) { elem.unbind('dblclick').dblclick( function(e) { var cell = $(this); if(cell.parent().parent().find('.ediTabling').length>0 || cell.hasClass('ediTabling') || cell.hasClass('disabled')) return; var origVal = cell.html(); cell.attr('orig_val',origVal); cell.addClass('ediTabling'); if(beforeFct) beforeFct(cell,e); ipt = $(""); ipt.val(origVal); cell.html("").append(ipt); ipt.focus(function() { $(this).select(); }); ipt.blur( function(e) { val = $(this).val(); if(cell.hasClass('int')) val = parseInt(val); if(cell.hasClass('float')) { dec_max = parseInt(cell.attr('float_dec')); dec_max = (!isNaN(dec_max) && dec_max>0) ? dec_max : 2; dec = 2; if(dec_max>=3) { for(i = 3; i<=dec_max; i++) { x = Math.pow(10, (i-1)); if(parseInt(((val*x) - parseInt(val*x))*10)>0) dec = i; } } val = parseFloat(val).toFixed(dec); } $(this).remove(); cell.removeClass('ediTabling').removeAttr('orig_val').html(val); clbFctReturn = false; if(callbacbFct) clbFctReturn = callbacbFct(cell,e); if(!clbFctReturn) { var nextFocus = false; cell.parent().find('.ediTable').each( function(n,e) { if( $(this).attr('id') == cell.attr('id') ) nextFocus = new Array(); else if(nextFocus && nextFocus.length==0) nextFocus = $(this); }); if(nextFocus && nextFocus.length>0) nextFocus.dblclick(); } //else console.log("cancel NextFocus"); }); ipt.keypress( function(event) { if(event.keyCode==13) $(this).blur(); }); if(cell.hasClass('int')) initIntInput(ipt); if(cell.hasClass('float')) initFloatInput(ipt); if(cell.hasClass('center')) ipt.addClass('center'); if(cell.hasClass('align_right')) ipt.addClass('align_right'); ipt.focus(); }); } function initUpperCaseInput(elem,beforeFct,callbacbFct) { elem.keyup( function(event) { if(beforeFct) beforeFct(elem,event); ignoreKeys = [8, 16, 46, 20, 37, 38, 39, 40]; if(jQuery.inArray(event.keyCode,ignoreKeys)!=-1) return; pos = getCursorPosition($(this)); $(this).val( $(this).val().toUpperCase() ); setCursorPosition($(this),pos); if(callbacbFct) callbacbFct(elem,event); }); } function initFirstUpperCaseInput(elem,beforeFct,callbacbFct) { elem.keyup( function(event) { if(beforeFct) beforeFct(elem,event); ignoreKeys = [8, 16, 46, 20, 37, 38, 39, 40]; if(jQuery.inArray(event.keyCode,ignoreKeys)!=-1) return; pos = getCursorPosition($(this)); $(this).val($(this).val().substr(0,1).toUpperCase() + $(this).val().substring(1)); setCursorPosition($(this),pos); if(callbacbFct) callbacbFct(elem,event); }); } function initTelInput(elem,feedback) { elem.intlTelInput({ validationScript: "libs/intl-tel-input/build/js/isValidNumber.js", preferredCountries : ['fr'], nationalMode: false }); if(feedback===true) { elem.blur(function() { if ($.trim($(this).val())) { if ($(this).intlTelInput("isValidNumber")) { $(this).parent().parent().addClass('has-success'); $(this).parent().parent().find(".form-control-feedback").removeClass('glyphicon-warning-sign').addClass('glyphicon-ok').removeClass('hide'); } else { $(this).parent().parent().addClass('has-warning'); $(this).parent().parent().find(".form-control-feedback").addClass('glyphicon-warning-sign').removeClass('glyphicon-ok').removeClass('hide'); } } }).keydown(function() { $(this).parent().parent().removeClass('has-success').removeClass('has-warning'); $(this).parent().parent().find(".form-control-feedback").addClass('hide'); }); } } function initEmailInput(elem) { elem.blur( function(event) { checkEmail($(this)); }).keydown(function() { $(this).parent().removeClass('has-success').removeClass('has-warning'); $(this).parent().find(".form-control-feedback").addClass('hide'); }).keyup(function() { $(this).val( $(this).val().toLowerCase() ); }); } function checkEmail(e) { if ($.trim(e.val())) { if (validateEmail(e.val())) { e.parent().addClass('has-success'); e.parent().find(".form-control-feedback").removeClass('glyphicon-warning-sign').addClass('glyphicon-ok').removeClass('hide'); } else { e.parent().addClass('has-warning'); e.parent().find(".form-control-feedback").addClass('glyphicon-warning-sign').removeClass('glyphicon-ok').removeClass('hide'); } } } function formatFileSize(s) { s = parseFloat(s); if(s<=1024) { return "1 ko"; } else { s = s/1024; if(s<=1024) { return Math.round(s) + " ko"; } else { s = s/1024; return Math.round(s) + " Mo"; } } } function getCursorPosition(elem) { var el = elem.get(0); var pos = 0; if('selectionStart' in el) { pos = el.selectionStart; } else if('selection' in document) { el.focus(); var Sel = document.selection.createRange(); var SelLength = document.selection.createRange().text.length; Sel.moveStart('character', -el.value.length); pos = Sel.text.length - SelLength; } return pos; } function setSelectionRange(elem, selectionStart, selectionEnd) { elem = elem.get(0); if(elem.setSelectionRange) { elem.focus(); elem.setSelectionRange(selectionStart, selectionEnd); } else if (elem.createTextRange) { var range = elem.createTextRange(); range.collapse(true); range.moveEnd('character', selectionEnd); range.moveStart('character', selectionStart); range.select(); } } function setCursorPosition(elem, pos) { setSelectionRange(elem, pos, pos); } var PRINT_MOIS_COURT = ['null','janv.','fév.','mars','avril','mai','juin','juil.','août','sept.','oct.','nov.','déc.']; var PRINT_MOIS = ['null','janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre']; var PRINT_JOUR_INI = ['D.','L.','Ma.','Me.','J.','V.','S.']; var PRINT_JOUR_COURT = ['dim.','lun.','mar.','mer.','jeu.','ven.','sam.']; var PRINT_JOUR = ['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi']; function formatDate(original, originalFormat, destinationFormat, moment) { // DEFAULT VALUE if(!original) original = ""; if(!originalFormat) originalFormat = "mysql_datetime"; if(!destinationFormat) destinationFormat = "datetime"; if(!moment) moment = "start"; var infos = false; if(original!='' && parseInt(original)!=0) { switch(originalFormat) { case 'date': // "DD/MM/YYYY" infos = new Object(); infos.tm_hour = 0; infos.tm_min = 0; infos.tm_sec = 0; infos.tm_mday = parseInt(original.substr(0,2)); infos.tm_mon = parseInt(original.substr(3,2)); infos.tm_year = parseInt(original.substr(6,4)); break; case 'datetime': // "DD/MM/YYYY - HH:MM" infos = new Object(); infos.tm_hour = parseInt(original.substr(13,2)); infos.tm_min = parseInt(original.substr(16,2)); infos.tm_sec = 0; infos.tm_mday = parseInt(original.substr(0,2)); infos.tm_mon = parseInt(original.substr(3,2)); infos.tm_year = parseInt(original.substr(6,4)); break; case 'mysql_date': // "YYYY-MM-DD" infos = new Object(); infos.tm_hour = 0 infos.tm_min = 0 infos.tm_sec = 0; infos.tm_mday = parseInt(original.substr(8,2)); infos.tm_mon = parseInt(original.substr(5,2)); infos.tm_year = parseInt(original.substr(0,4)); break; case 'mysql_datetime': // "YYYY-MM-DD HH:MM:SS" infos = new Object(); infos.tm_hour = parseInt(original.substr(11,2)); infos.tm_min = parseInt(original.substr(14,2)); infos.tm_sec = parseInt(original.substr(17,2)); infos.tm_mday = parseInt(original.substr(8,2)); infos.tm_mon = parseInt(original.substr(5,2)); infos.tm_year = parseInt(original.substr(0,4)); break; default: return; } if(originalFormat=="date" || originalFormat=="mysql_date") { if(moment=="start") { infos.tm_hour = 0; infos.tm_min = 0; infos.tm_sec = 0; } else { infos.tm_hour = 23; infos.tm_min = 59; infos.tm_sec = 59; } } } else { return; } // FORMAT NUMBER infos.tm_hour = '%02d'.sprintf(infos.tm_hour); infos.tm_min = '%02d'.sprintf(infos.tm_min); infos.tm_sec = '%02d'.sprintf(infos.tm_sec); infos.tm_mday = '%02d'.sprintf(infos.tm_mday); infos.tm_mon = '%02d'.sprintf(infos.tm_mon); infos.tm_year = '%04d'.sprintf(infos.tm_year); switch(destinationFormat) { case 'date': // "%d/%m/%Y" return infos.tm_mday+"/"+infos.tm_mon+"/"+infos.tm_year; break; case 'strdate': // "%Y-%m-%d" return infos.tm_year+"-"+infos.tm_mon+"-"+infos.tm_mday; break; case 'datetime': // "%d/%m/%Y - %H:%M" return infos.tm_mday+"/"+infos.tm_mon+"/"+infos.tm_year+" - "+infos.tm_hour+":"+infos.tm_min; break; case 'print_datetime': // "%d/%m/%Y %H:%M" return infos.tm_mday+" "+PRINT_MOIS_COURT[parseInt(infos.tm_mon)]+" "+infos.tm_year+" à "+infos.tm_hour+"h"+infos.tm_min; break; case 'mysql_date': // "%Y-%m-%d" return infos.tm_year+"-"+infos.tm_mon+"-"+infos.tm_mday; break; case 'mysql_datetime': //"%Y-%m-%d %H:%M:%S" return infos.tm_year+"-"+infos.tm_mon+"-"+infos.tm_mday+" "+infos.tm_hour+":"+infos.tm_min+":"+infos.tm_sec; break; case 'timestamp': //timestamp return java_mktime(parseInt(infos.tm_year), parseInt(infos.tm_mon), parseInt(infos.tm_mday), parseInt(infos.tm_hour), parseInt(infos.tm_min), parseInt(infos.tm_sec)); break; default: return ""; } } function getTodayDate(format) { let now = new Date(); return formatDate(now, format); } function parseDate(dateStr, format) { date = false; if(dateStr == "") return date; switch(format) { case 'yyyy-mm-dd' : { d=dateStr.split("-"); if(d.length==3) date = new Date(d[0], d[1] - 1, d[2]); } break; case 'yyyy-dd-mm' : { d=dateStr.split("-"); if(d.length==3) date = new Date(d[0], d[2] - 1, d[1]); } break; case 'dd/mm/yyyy' : { d=dateStr.split("/"); if(d.length==3) date = new Date(d[2], d[1] - 1, d[0]); } break; case 'mm/dd/yyyy' : { d=dateStr.split("/"); if(d.length==3) date = new Date(d[2], d[0] - 1, d[1]); } break; } return date; } function formatDate(date, format) { dateStr = ''; if(!date instanceof Date || !date>0) return dateStr; var yyyy = date.getFullYear(); var mm = String(date.getMonth()+1).padStart(2, "0"); var dd = String(date.getDate()).padStart(2, "0"); switch(format) { case 'yyyy-mm-dd' : dateStr = yyyy+"-"+mm+"-"+dd; break; case 'yyyy-dd-mm' : dateStr = yyyy+"-"+dd+"-"+mm; break; case 'dd/mm/yyyy' : dateStr = dd+"/"+mm+"/"+yyyy; break; case 'mm/dd/yyyy' : dateStr = mm+"/"+dd+"/"+yyyy; break; } return dateStr; } function switchDateFormat(dateStr, fromFormat, toFormat) { var date = parseDate(dateStr, fromFormat); if(!date instanceof Date || !date>0) return ''; return formatDate(date, toFormat); } function java_mktime(year, month, day, hour, minutes, secondes) { return new Date(year, month - 1, day, hour, minutes, secondes, 0).getTime() / 1000; } function getNbJourOuvrePeriode(d,f) { var nbj = 0; if(d.isSame(f) && !d.isFerie() && d.day()!=0 && d.day()!=6) nbj=1; else { while(d.isBefore(f)) { if(!d.isFerie() && d.day()!=0 && d.day()!=6) nbj++; d.add(1, 'days'); } if(!f.isFerie() && f.day()!=0 && f.day()!=6) nbj++; } return nbj; } function rgb2hex(rgb) { if (/^#[0-9A-F]{6}$/i.test(rgb)) return rgb; rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); function hex(x) { return ("0" + parseInt(x).toString(16)).slice(-2); } return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]); } function nl2br (str, is_xhtml) { var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '
' : '
'; return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2'); } function replaceAll(string, find, replace) { return string.replace(new RegExp(find, 'g'), replace); } // VALIDATION function validateEmail(email) { if(email.length<6) return false; var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; if( !emailReg.test( email ) ) { return false; } else { return true; } } function validatePwd(p, minLength, minUpperCase, minLowerCase, minNumber, minSpecial) { var anUpperCase = /[A-Z]/; var aLowerCase = /[a-z]/; var aNumber = /[0-9]/; var aSpecial = /[!|@|#|$|%|^|&|*|(|)|-|_]/; if(p.length < minLength) return false; var numUpper = 0; var numLower = 0; var numNums = 0; var numSpecials = 0; for(var i=0; i0) txt = txt.replace(' ',''); result.filtre = txt; result.test = false; result.parse = new Object(); result.format = ""; result.error = false; if(txt.length>=0) { var sexTxt = txt.substring(0,1); var sex = parseInt(sexTxt); result.parse.sex = sexTxt; result.rest = txt; if(sex==1 || sex==2 || sex==3 || sex==4 || sex==7 || sex==8) { // TEST SEX => 1er chiffre = 1(M), 2(F), 3(M-entranger en cours) ou 4(F-entranger en cours), 7(M-temp), 8(F-temp) result.format = sexTxt + " "; result.rest = txt.substring(1); if(txt.length>=3) { var annee = txt.substr(1,2); result.parse.annee = annee; if(annee.indexOf("A")==-1 && annee.indexOf("B")==-1) { result.format = result.format + annee + " "; result.rest = txt.substring(3); if(txt.length>=5) { var moisTxt = txt.substr(3,2); var mois = parseInt(moisTxt); result.parse.mois = moisTxt; if(mois>=1 && mois<=12) { // TEST MOIS => 4 + 5ème chiffre entre 1 & 12 result.format = result.format + moisTxt + " "; result.rest = txt.substring(5); if(txt.length>=10) { // A: FRANCAIS METROPOLE var deptA = txt.substr(5,2); // de 01 à 95 ou 2A ou 2B var comAtxt = txt.substr(7,3); var comA = parseInt( comAtxt ); // de 001 à 990 // B: FRANCAIS OUTREMER var deptBtxt = txt.substr(5,3); var deptB = parseInt( deptBtxt ); // de 970 à 989 var comBtxt = txt.substr(8,2); var comB = parseInt( comBtxt ); // de 01 à 90 // C: FRANCAIS NE A L'ETRANGER var deptCtxt = txt.substr(5,2); var deptC = parseInt( deptCtxt ); // = 99 var comCtxt = txt.substr(7,3); var comC = parseInt( comCtxt ); // de 001 à 990 result.error = 'deptCom'; if( ((parseInt(deptA)>0 && parseInt(deptA)<=95) || deptA=='2A' || deptA=='2B') && ( comA>0 && comA<=990 ) ) { // TEST DEPT/COM A result.error = false; result.parse.deptCom = "a"; result.parse.dept = deptA; result.parse.com = comAtxt; result.format = result.format + deptA + " " + comAtxt + " "; } else if( (deptB>=970 && deptB<=989) && ( comB>0 && comB<=90 ) ) { // TEST DEPT/COM B result.error = false; result.parse.deptCom = "b"; result.parse.dept = deptBtxt; result.parse.com = comBtxt; result.format = result.format + deptBtxt + " " + comBtxt + " "; } else if( deptC==99 && ( comC>0 && comC<=990 ) ) { // TEST DEPT/COM C result.error = false; result.parse.deptCom = "c"; result.parse.dept = deptCtxt; result.parse.com = comCtxt; result.format = result.format + deptCtxt + " " + comCtxt + " "; } if(!result.error) { // RESULT TEST DEPT/COM result.rest = txt.substring(10); if(txt.length>=13) { var naisTxt = txt.substr(10,3); var nais = parseInt( naisTxt ); result.parse.nais = naisTxt; result.error = 'naissance'; if(nais>=1 && nais<=999) { // TEST NAISSANCE result.format = result.format + naisTxt + " "; result.rest = txt.substring(13); if(txt.length==15) { var keyTxt = txt.substr(13,2); var key = parseInt( keyTxt ); result.parse.key = keyTxt; var nir = txt.substr(0,13); result.parse.nirTxt = nir; if(nir.indexOf("A")>0) nir = parseInt( nir.replace('A','0') ) - 1000000; else if(nir.indexOf("B")>0) nir = parseInt( nir.replace('B','0') ) - 2000000; else nir = parseInt( nir ); result.parse.nir = nir; result.parse.correctKey = 97-(nir%97); if( key==result.parse.correctKey ) { result.format = result.format + keyTxt; result.test = true; result.rest = ""; } else result.error = 'key'; } else result.error = 'length'; } else result.error = 'naissance'; } else result.error = 'length'; } else result.error = 'deptCom'; } else result.error = 'length'; } else result.error = 'mois'; } else result.error = 'length'; } else result.error = 'annee'; } else result.error = 'length'; } else result.error = 'sex'; } else result.error = 'length'; return result; } function validateNumCS(txt) { var result = new Object(); result.ipt = txt; while(txt.indexOf(' ')>0) txt = txt.replace(' ',''); result.filtre = txt; result.test = false; result.format = ""; result.rest = txt; result.error = false; if(!txt.length>=1) result.error = 'length'; else { var l = txt.substr(0,1); var regex = new RegExp(/([^A-Za-z\-])/); if (regex.test (l)) result.error = 'l'; else { result.format = l.toUpperCase(); result.rest = txt.substr(1); regex = new RegExp(/([^0-9\-])/); if(txt.length>1 && regex.test (result.rest)) result.error = 'caract'; else { if(!txt.length>=3) result.error = 'length'; else { result.format = result.format + " " + txt.substr(1,2); result.rest = txt.substr(3); if(!txt.length>=5) result.error = 'length'; else { result.format = result.format + " " + txt.substr(3,2); result.rest = txt.substr(5); if(txt.length!=7) result.error = 'length'; else { result.format = result.format + " " + txt.substr(5,2); result.rest = ""; result.test = true; } } } } } } return result; } function validateNumCNI(txt) { var result = new Object(); result.ipt = txt; txt = txt.replace(new RegExp(' ', 'g'), ''); result.filtre = txt; result.test = false; result.format = ""; result.rest = txt; result.error = false; if(txt.length<2) result.error = 'length'; else { // ANNEE var annee = txt.substr(0,2); result.annee = annee; var regex = new RegExp(/([^0-9\-])/); if(regex.test(annee)) result.error = 'annee'; else { result.annee = parseInt(annee); result.format = annee; result.rest = txt.substr(2); if(txt.length<4) result.error = 'length'; else { // MOIS var moisTxt = txt.substr(2,2); var mois = parseInt(moisTxt); result.mois = moisTxt; if(!(mois>=1 && mois<=12) || regex.test(mois)) result.error = 'mois'; else { result.format = result.format + " " + moisTxt; result.rest = txt.substr(4); // DEPT if(txt.length<6) result.error = 'length'; else { var deptTxt = txt.substr(4,2).toUpperCase(); var dept = parseInt(deptTxt); result.dept = deptTxt; if(!((dept>=1 && dept<=95) || deptTxt=="2A" || deptTxt=="2B" || dept==97)) result.error = 'dept'; else { result.format = result.format + " " + deptTxt; result.rest = txt.substr(6); // SERVICE if(txt.length<7) result.error = 'length'; else { var srvTxt = txt.substr(6,1); result.srv = srvTxt; result.format = result.format + " " + srvTxt; result.rest = txt.substr(7); // NUM ATTRIB if(txt.length<12) result.error = 'length'; else { var attribTxt = txt.substr(7,5); if(regex.test(attribTxt)) result.error = 'attrib'; else { result.format = result.format + " " + attribTxt; result.rest = txt.substr(12); // KEY if(txt.length!=13) result.error = 'length'; else { var key = txt.substr(12,1); result.key = key; var correctKey = calculCNIkey(result.format); result.correctKey = correctKey; if(regex.test(key) || parseInt(key)!=correctKey) result.error = 'key'; else { result.format = result.format + " " + key; result.rest = ""; result.test = true; } } } } } } } } } } } return result; } function calculCNIkey(cniFormat) { var cni = cniFormat.replace(new RegExp(' ', 'g'), ''); var factors = [7, 3, 1]; var result = 0; var regex = new RegExp(/([0-9\-])/); for(var i=0 ; i=33) && (num <=47)) || ((num >=58) && (num <=64))) { return true; } if (((num >=91) && (num <=96)) || ((num >=123) && (num <=126))) { return true; } return false; } function checkNumber(num) { if ((num >=48) && (num <=57)) { return true; } else { return false; } } function checkUppercase(num) { if ((num >=65) && (num <=90)) { return true; } else { return false; } } function copyTextToClipboard(text) { $("body").append(""); $("#temp").val(text).select(); document.execCommand("copy"); $("#temp").remove(); } function copyHTMLToClipboard(htmlText) { var copyDiv = document.createElement('div'); copyDiv.contentEditable = true; document.body.appendChild(copyDiv); copyDiv.innerHTML = htmlText; copyDiv.unselectable = "off"; copyDiv.focus(); document.execCommand('SelectAll'); document.execCommand("Copy", false, null); document.body.removeChild(copyDiv); } // TABLE SORTABLE var tableSortableFixHelper = function(e, ui) { ui.children().each(function() { $(this).width($(this).width()); }); return ui; }; // PHOTO FORM function initPhotoForm(div, calbckURL, defaultPhotoURL) { var photoPreview = div.find("div.photoPreview"); var photoIptFile = div.find("input[name=photoFile]"); var btnResetPhoto = div.find("button.btnResetPhoto"); // OPEN FILE EXPLORER photoPreview.unbind('click').click( function(event) { event.preventDefault(); photoIptFile.click(); }); // AUTO UPLOAD ON FILE CHANGE photoIptFile.change( function() { oldFile = $(this).attr("file"); file = $(this)[0].files[0]; if(typeof(file)=="undefined") return false; type = file.type; name = file.name; size = formatFileSize(file.size); if(type=="image/png" || type=="image/jpeg" || type=="image/jpg") { photoPreview.css('background-image',"url(img/wait.svg)"); uploadTmpPhotoFile(div, file, oldFile, calbckURL); } else { alert("ERREUR : format de fichier non-admis... ("+type+")"); } }); // RESET PHOTO btnResetPhoto.click( function(e) { e.preventDefault(); photoIptFile.attr("file", "").attr("nom", ""); photoPreview.css('background-image', "url('"+defaultPhotoURL+"')"); btnResetPhoto.addClass('hide'); }); } function uploadTmpPhotoFile(div, file, oldFile, calbckURL) { if(file.size>0) { var photoPreview = div.find("div.photoPreview"); var photoIptFile = div.find("input[name=photoFile]"); var btnResetPhoto = div.find("button.btnResetPhoto"); var data = new FormData(); data.append('action', 'upload_tmp_file'); data.append('tmp_file', file); data.append('old_file', oldFile); data.append('nohist', true); $.ajax({ url: calbckURL, data: data, cache: false, contentType: false, processData: false, type: 'POST', success: function(txt){ //console.log(txt); if(txt=="error") { alert("ERREUR : un problème est survenue durant le chargement de la photo..."); } else { datas = JSON.parse(txt); //console.log(datas); photoIptFile.attr("file", datas.dir+datas.tmp).attr("nom", datas.tmp); photoPreview.css('background-image', "url('"+datas.prw+"&size=230')"); btnResetPhoto.removeClass('hide'); } } }); } } function getUrlParameters() { var sPageURL = window.location.search.substring(1), sURLVariables = sPageURL.split('&'), sParameterName, params = [], i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); params[sParameterName[0]] = (sParameterName[1] === undefined) ? true : decodeURIComponent(sParameterName[1]); } return params; } function getUrlParameter(sParam) { var sPageURL = window.location.search.substring(1), sURLVariables = sPageURL.split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]); } } return false; } function beep(duration, frequency, volume, type, callback) { // console.log("beep"); var audioCtx = new (window.AudioContext || window.webkitAudioContext || window.audioContext); var oscillator = audioCtx.createOscillator(); var gainNode = audioCtx.createGain(); oscillator.connect(gainNode); gainNode.connect(audioCtx.destination); if(volume) gainNode.gain.value = volume; if(frequency) oscillator.frequency.value = frequency; if(type) oscillator.type = type; if(callback) oscillator.onended = callback; oscillator.start(audioCtx.currentTime); oscillator.stop(audioCtx.currentTime + ((duration || 500) / 1000)); } function round_number(number, decimals) { if(!decimals>0) return Math.round(number); number = parseFloat(number); mux = decimals * 10; n = Math.round(number * mux); return n / mux; } function number_format(number, decimals, dec_point, thousands_sep) { number = (number + '') .replace(/[^0-9+\-Ee.]/g, ''); var n = !isFinite(+number) ? 0 : +number, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), sep = (typeof thousands_sep === 'undefined') ? '' : thousands_sep, dec = (typeof dec_point === 'undefined') ? '.' : dec_point, s = '', toFixedFix = function(n, prec) { var k = Math.pow(10, prec); return '' + (Math.round(n * k) / k) .toFixed(prec); }; // Fix for IE parseFloat(0.55).toFixed(0) = 0; s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)) .split('.'); if (s[0].length > 3) { s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); } if ((s[1] || '') .length < prec) { s[1] = s[1] || ''; s[1] += new Array(prec - s[1].length + 1) .join('0'); } return s.join(dec); }