function is_RIO(sRio, sMsisdn){ if(sRio.length !=12) return false; var sOperateur=sRio.substr(0, 2); var sTypeContrat=sRio.substr(2, 1); var sRefClient=sRio.substr(3, 6); if(sTypeContrat!="P" && sTypeContrat!="E") return false; var sOrdre="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+"; var nRes=new Array(0, 0, 0); var sTmp=sOperateur+sTypeContrat+sRefClient+sMsisdn; for(n=0;n<19;n++) { var nPos=sOrdre.indexOf(sTmp.substr(n, 1)); nRes[0]=(nRes[0]+nPos)%37; nRes[1]=((2*nRes[1])+nPos)%37; nRes[2]=((4*nRes[2])+nPos)%37; } var sCleCalculee=sOrdre.substr(nRes[0],1)+sOrdre.substr(nRes[1],1)+sOrdre.substr(nRes[2],1); if(sRio.substr(9)!=sCleCalculee) return false; return true; }