////////////////////////////////////////////////////////////////////////
// Script : consttools.js
// Author : Sghaier Mahmoud  Email:technique.icare@planet.tn
// Purpose: common function and procedure for constitution front-office
// /////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////
// PupUp Centered win
//////////////////////////////////////////////////////

function PopUpWin(filename,cMyWidth,cMyHeight) {
  //var cMyWidth=600
  //var cMyHeight=550
  //half the screen width minus half the new window width (plus 5 pixel borders).
  iMyWidth = (window.screen.width/2) - (parseInt((cMyWidth/2)) + 10);
  //half the screen height minus half the new window height (plus title and status bars).
  iMyHeight = (window.screen.height/2) - (parseInt((cMyHeight/2)) + 10);
  //Open the window.
  win2 = window.open(filename,null,"status=no,height="+cMyHeight+",width="+cMyWidth+",resizable=no,left=" + iMyWidth + ",top=" + iMyHeight + ",screenX=" + iMyWidth + ",screenY=" + iMyHeight + ",toolbar=no,menubar=no,scrollbars=no,location=no,directories=no");
  win2.focus();
  return win2;
}

//////////////////////////////////////////////////////
// Calcualte capital
//////////////////////////////////////////////////////

function CalculateFullValue()
{
 var valeur = document.all.frmstep2.frmVNASTE.value ;
 var nbrparts = document.all.frmstep2.frmNBASTE.value ;
 document.all.frmstep2.frmCPSSTE.value = valeur*nbrparts
 
if ( Currentcodetc == 1 ) // check this only if SA 1
{
 document.all.frmstep2.frmNASSTE.value = nbrparts;
 var valeur = document.frmstep2.frmCPLFSTE.options[document.frmstep2.frmCPLFSTE.options.selectedIndex].value ;
 if ( valeur=='all' ||  valeur=='-1') 
  {  document.all.frmstep2.frmCPLSTE.value= document.all.frmstep2.frmCPSSTE.value }
 else
  {  document.all.frmstep2.frmCPLSTE.value= parseInt(parseInt(document.all.frmstep2.frmCPSSTE.value)*eval(valeur)) }
}
 
}

//////////////////////////////////////////////////////
// Calcualte capital à liberer
//////////////////////////////////////////////////////

function CalculateCPL()
{
 var valeur = document.frmstep2.frmCPLFSTE.options[document.frmstep2.frmCPLFSTE.options.selectedIndex].value ;
 if ( valeur=='all' ||  valeur=='-1' ) 
  {  document.all.frmstep2.frmCPLSTE.value= document.all.frmstep2.frmCPSSTE.value }
 else
  {  document.all.frmstep2.frmCPLSTE.value= parseInt(parseInt(document.all.frmstep2.frmCPSSTE.value)*eval(valeur)) }
 
}

//////////////////////////////////////////////////////
// Calculate Capital social ASSOCIE PH
//////////////////////////////////////////////////////
function CalculatePhValue(formname)
{
 var valeur = formname.frmVNASTEHidden.value ;
 var nbrparts = formname.frmNPARTPPHY.value ;
 formname.frmVPARTPPHY.value = valeur*nbrparts
}

//////////////////////////////////////////////////////
// Calculate Capital social ASSOCIE PM
//////////////////////////////////////////////////////
function CalculatePmValue(formname)
{
 var valeur = formname.frmVNASTEHidden.value ;
 var nbrparts = formname.frmNPARTPMRL.value ;
 formname.frmVPARTPMRL.value = valeur*nbrparts
}

//////////////////////////////////////////////////////
// Verify personne physique
//////////////////////////////////////////////////////
function verifPPH(formname)
{

var nowdate,datecmp,datecmp2;
var npidlen;
nowdate = new Date() ;

if ( typeof(formname.frmreadonlyPPHY)=='undefined') 
{
if (formname.frmNOMPPHYFR.value =='') { ms ('Nom manquant') ; formname.frmNOMPPHYFR.focus() ; return false ; }
if (formname.frmPNOMPHYFR.value =='') { ms ('Prénom manquant') ; formname.frmPNOMPHYFR.focus() ; return false ; }
if (formname.frmCODNAT.options[formname.frmCODNAT.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez la nationalité') ; formname.frmCODNAT.focus() ; return false ; }

if (checkDate(formname.frmDNSPPHY)==false) { ms ('Date de naissance manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDNSPPHY.focus() ; return false ; }
datecmp = new Date(ConvertDate(formname.frmDNSPPHY.value))
if ( datecmp > nowdate ) { ms ('Date de naissance invalide ( doit être antérieure à la date du jour ) !') ; formname.frmDNSPPHY.focus() ; return false ; }
if ( ( typeof(formname.frmNPARTPPHY) != 'undefined') || (typeof(formname.frmNPARTPMRL)!= 'undefined') ) 
{ if (  calcAge(datecmp) > 150  ) { ms ('Date de naissance invalide, maximum 150 ans !') ; formname.frmDNSPPHY.focus() ; return false ; } }
else
{ if ( ( calcAge(datecmp)  < 20)  || ( calcAge(datecmp) > 150 ) ) { ms ('Date de naissance invalide, age minimum 20 ans et maximum 150 ans !') ; formname.frmDNSPPHY.focus() ; return false ; }  }

if (formname.frmLNSPPHYFR.value =='') { ms ('Lieu de naissance manquant') ; formname.frmLNSPPHYFR.focus() ; return false ; }
if (formname.frmCODECV.options[formname.frmCODECV.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez l\'état civil !') ; formname.frmCODECV.focus() ; return false ; }

 //alert (typeof(formname.frmCODQUA.length));
 //alert (typeof(formname.frmCODQUA.options));
 //alert ( formname.frmCODQUA.disabled );
// return;

if (typeof(formname.frmCODQUA) != 'undefined' )
{
  if   ( typeof(formname.frmCODQUA.options) =='object' ) // if no hidden value 
  {
     if (formname.frmCODQUA.options[formname.frmCODQUA.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez la qualité !') ; formname.frmCODQUA.focus() ; return false ; }   
  }
}
if (formname.frmCODPID.options[formname.frmCODPID.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez le type de la pièce d\'identité !') ; formname.frmCODPID.focus() ; return false ; }

if (formname.frmCODPID.options[formname.frmCODPID.options.selectedIndex].value=='1' )
 {  npidlen = 8 ; } else {  npidlen = 6 ; }  
if ( npidlen == 8 )
{
 if (formname.frmNPIPPHY.value.length != npidlen ) { ms ('N° de pièce d\'identité manquant ou invalide \n ( '+npidlen+' chiffres )') ; formname.frmNPIPPHY.focus() ; return false ; }
}
else
{
 if (formname.frmNPIPPHY.value.length < npidlen ) { ms ('N° de pièce d\'identité manquant ou invalide \n ( minimum '+npidlen+' chiffres )') ; formname.frmNPIPPHY.focus() ; return false ; }
}

 ////////////////////////////////////////////////////
 /// Verify npid duplication depending on age

 if ( typeof(formname.frmNPARTPMRL) != 'undefined' || typeof(formname.frmNPARTPPHY) != 'undefined' ) 
 {
  var CINTOCMP = formname.frmNPIPPHY.value ;
  var CUREENTCODPP = formname.frmCODPPHY.value ;
  var NPIELEM = window.opener.document.all.frmNPI;
  var DNSELEM = window.opener.document.all.frmDNS;
  var CODPPELEM = window.opener.document.all.frmCODPP;
  
  if ( typeof(NPIELEM) != 'undefined' ) 
  {
    if ( typeof(NPIELEM.length) == 'undefined' ) 
    {
    var datcmp = new Date(ConvertDate(DNSELEM.value))
    if ( ( calcAge(datecmp) >= 20) && (NPIELEM.value == CINTOCMP) && ( CODPPELEM.value !=CUREENTCODPP) )
          { ms ('Le numéro de la pièce d\'identité existe déjà !');  
            formname.frmNPIPPHY.focus();
            return false; } 
    } 
    else
    {
    for ( i=0 ; i<NPIELEM.length ; i++)
        { 
        var datcmp = new Date(ConvertDate(DNSELEM[i].value))
        if ( ( calcAge(datecmp) >= 20) && (NPIELEM[i].value == CINTOCMP) && ( CODPPELEM[i].value !=CUREENTCODPP) )
           { ms ('Le numéro de la pièce d\'identité existe déjà !');  
             formname.frmNPIPPHY.focus();
             return false; } 
        }
     } 
  }
  
  
  }
  /////////////////////////////////////////////

if (checkDate(formname.frmDPIPPHY)==false) { ms ('Date de la pièce d\'identité manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDPIPPHY.focus() ; return false ; }
datecmp2 = new Date(ConvertDate(formname.frmDPIPPHY.value))
if ( datecmp2 > nowdate ) { ms ('Date de la pièce d\'identité invalide ( doit être antérieure à la date du jour ) !') ; formname.frmDPIPPHY.focus() ; return false ; }
if ( datecmp2 <= datecmp ) { ms ('Date de la pièce d\'identité invalide ( doit être postérieure à la date de naissance ) !') ; formname.frmDPIPPHY.focus() ; return false ; }

if (formname.frmLPIPPHYFR.value== '') { ms ('Lieu de délivrance de la pièce d\'identité manquant') ; formname.frmLPIPPHYFR.focus() ; return false ; }
if (formname.frmCODPAYS.options[formname.frmCODPAYS.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez le pays !') ; formname.frmCODPAYS.focus() ; return false ; }
if (formname.frmVILPPHYFR.value== '') { ms ('Ville manquante') ; formname.frmVILPPHYFR.focus() ; return false ; }


// coordonnes tunisien test code postal
if (formname.frmCODPAYS.options[formname.frmCODPAYS.options.selectedIndex].text.indexOf('Tun') != -1 ) 
{
  cpok = false ;
  for (i=0 ; i<CP.length ; i++ )
   {
    //alert (parseInt(formname.frmCPSPHY.value,10)+':'+CP[i]);
    
    if ( parseInt(formname.frmCPSPHY.value) == CP[i] ) { cpok = true; break ;}
   }
  if (!cpok) { ms ('Code postal Tunisien invalide') ; formname.frmCPSPHY.focus() ; return false ; }    
 }
 else 
 {  if (formname.frmCPSPHY.value== '') { ms ('Code postal manquant') ; formname.frmCPSPHY.focus() ; return false ; } }  
 
if (formname.frmCPSPHY.value== '') { ms ('Code postal manquant') ; formname.frmCPSPHY.focus() ; return false ; }
if (formname.frmADRPPHYFR.value== '') { ms ('Adresse manquante') ; formname.frmADRPPHYFR.focus() ; return false ; }
if (formname.frmTELPPHY.value== '') { ms ('N° de téléphone manquant') ; formname.frmTELPPHY.focus() ; return false ; }
//if ( typeof(LBLASS) != 'undefined' && typeof(formname.frmNPARTPPHY) == 'undefined' )
// test changed for all non read only step 1 dec
if ( CurrentStep == 1 )
{  if (!checkEmail(formname.frmEMAILPPHY.value)) { ms ('Email manquant ou invalide') ; formname.frmEMAILPPHY.focus() ; return false ; }}

} // end read only false
if ( typeof(LBLASS) == 'undefined' && typeof(formname.frmNPARTPPHY) != 'undefined' ) 
  {
  var strtitle,strtitle2,strtitle3,maxparrest;
if ( Currentcodetc == 0 ) 
    { 
    strtitle = 'Total des parts prises en charge > nbre de parts de la société !' ; 
    strtitle1 = 'Total des parts prises en charge > nbre de parts restantes de la société !' ; 
    strtitle2 = 'Champ nombre de parts sociales vide'; 
    strtitle3 = 'Un associé ne peut pas avoir la totalité des parts!'; 
    maxparrest = 1;
    }
     
if ( Currentcodetc == 2 ) 
  {
   strtitle = 'Total des actions prises en charge > nbre d\'actions de la société !' ; 
   strtitle1 = 'Total des actions prises en charge > nbre d\'actions restantes de la société !' ; 
   strtitle2 = 'Champ nombre d\'actions vide'; 
   strtitle3 = 'Un souscripteur ne peut pas avoir la totalité des actions!';
   maxparrest = 6; 
   }
if (parseInt(formname.frmNPARTPPHY.value,10) == 0 || isNaN(parseInt(formname.frmNPARTPPHY.value,10)) ) { ms (strtitle2) ; formname.frmNPARTPPHY.focus() ; return false ; }
  // parts ste
  var PartTotal = parseInt(formname.frmNBASTEHidden.value,10)  ;
  if (parseInt(formname.frmNPARTPPHY.value,10) > PartTotal ) { ms (strtitle) ; formname.frmNPARTPPHY.focus() ; return false ; }
  if (parseInt(formname.frmNPARTPPHY.value,10) > PartTotal-maxparrest ) { ms (strtitle3) ; formname.frmNPARTPPHY.focus() ; return false ; }
  // parts rest ass/quota
  var oldpart = parseInt(formname.frmHNPARTPPHY.value,10) ;
  if (isNaN(oldpart)) {oldpart=0;} // if add new
  var PartTotalAss = PartTotal-(parseInt(window.opener.document.all.frmTotalNbrPart.value,10)-oldpart) ;
  if (parseInt(formname.frmNPARTPPHY.value,10) > PartTotalAss ) { ms (strtitle1) ; formname.frmNPARTPPHY.focus() ; return false ; }
 }
// mnd 
if  ( typeof(formname.frmCODQUA)!= 'undefined' ) 
 {
  if   (  typeof(formname.frmCODQUA.options) =='object' ) // if no hidden value
  {
   if  (formname.frmCODQUA.options[formname.frmCODQUA.options.selectedIndex].mnd=='oui')
    {
    if (formname.frmORGMNDFR.value== '') { ms ('Organisme d\'authentification manquant') ; formname.frmORGMNDFR.focus() ; return false ; }
    if (formname.frmREFMNDFR.value== '') { ms ('Référence du mandat manquant') ; formname.frmREFMNDFR.focus() ; return false ; }
    if (checkDate(formname.frmDATMND)==false) { ms ('La date du mandat est manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDATMND.focus() ; return false ; }
    datecmp = new Date(ConvertDate(formname.frmDATMND.value))
    if ( datecmp > nowdate ) { ms ('La date du mandat est invalide ( doit être antérieure à la date du jour ) ! ') ; formname.frmDATMND.focus() ; return false ; }
    if (checkDate(formname.frmDEFMND)==false) { ms ('Date effet du mandat manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDEFMND.focus() ; return false ; }
    } 
  }
} 

 return true
}

//////////////////////////////////////////////////////
// Verify personne morale
//////////////////////////////////////////////////////
function verifPM(formname)
{
if ( typeof(formname.frmreadonlyPMRL)=='undefined') 
{
 if (formname.frmRSPMRFR.value =='') { ms ('Raison sociale manquante') ; formname.frmRSPMRFR.focus() ; return false ; }
 if (formname.frmCODFJS.options[formname.frmCODFJS.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez la forme juridique !') ; formname.frmCODFJS.focus() ; return false ; }

 if (formname.frmCODNATPM.options[formname.frmCODNATPM.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez la nationalité') ; formname.frmCODNATPM.focus() ; return false ; }
 if (parseInt(formname.frmCPSPMR.value,10) < 1000 || isNaN(parseInt(formname.frmCPSPMR.value,10)) || IsLng(parseInt(formname.frmCPSPMR.value,10))==false ) { ms ('Capital social invalide') ; formname.frmCPSPMR.focus() ; return false ; }
 if (formname.frmMFPMRL.value =='') { ms ('N°  de matricule fiscal manquant (format XXXXXX/X)') ; formname.frmMFPMRL.focus() ; return false ; }
 if (formname.frmMFPMRL.value.length != 8 || formname.frmMFPMRL.value.substring(6,7) != '/' ) { ms ('N°  de matricule fiscal invalide (format XXXXXX/X)') ; formname.frmMFPMRL.focus() ; return false ; }
 if ( ! VerifMF(formname.frmMFPMRL.value) ) { ms ('Verifier votre Matricule Fiscal!') ; formname.frmMFPMRL.focus() ; return false ; }


 
 if (formname.frmRCPMRL.value =='') { ms ('N°  de registre de commerce manquant') ; formname.frmRCPMRL.focus() ; return false ; }

 if (formname.frmADRPMRFR.value== '') { ms ('Adresse personne morale manquante') ; formname.frmADRPMRFR.focus() ; return false ; }
 if (formname.frmCODPAYSPM.options[formname.frmCODPAYSPM.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez le pays !') ; formname.frmCODPAYSPM.focus() ; return false ; }
 if (formname.frmVILPMRLFR.value== '') { ms ('Ville personne morale manquante') ; formname.frmVILPMRLFR.focus() ; return false ; }
 if (formname.frmCPPMR.value== '') { ms ('Code postal personne morale manquant') ; formname.frmCPPMR.focus() ; return false ; }
}
if ( Currentcodetc == 0 || Currentcodetc == 2 ) // check this only if SARL/ SA STEP 2
{
 var strtitle,strtitle2,strtitle3,maxparrest;
  if ( Currentcodetc == 0 ) { 
    strtitle = 'Total des parts prises en charge > nbre de parts de la société !' ; 
    strtitle1 = 'Total des parts prises en charge > nbre de parts restantes de la société !' ; 
    strtitle2 = 'Champ nombre de parts sociales vide'; 
    strtitle3 = 'Un associé ne peut pas avoir la totalité des parts!'; 
    maxparrest = 1;
    } 
  if ( Currentcodetc == 2 ) {
   strtitle = 'Total des actions prises en charge > nbre d\'actions de la société !' ; 
   strtitle1 = 'Total des actions prises en charge > nbre d\'actions restantes de la société !' ; 
   strtitle2 = 'Champ nombre d\'actions vide'; 
   strtitle3 = 'Un souscripteur ne peut pas avoir la totalité des actions!';
   maxparrest = 6; 
   }
  
 if (parseInt(formname.frmNPARTPMRL.value,10) == 0 || isNaN(parseInt(formname.frmNPARTPMRL.value,10))) { ms (strtitle2) ; formname.frmNPARTPMRL.focus() ; return false ; }
 // parts ste
  var PartTotal = parseInt(formname.frmNBASTEHidden.value,10)  ;
  if (parseInt(formname.frmNPARTPMRL.value,10) > PartTotal ) { ms (strtitle) ; formname.frmNPARTPMRL.focus() ; return false ; }
  if (parseInt(formname.frmNPARTPMRL.value,10) > PartTotal-maxparrest ) { ms (strtitle3) ; formname.frmNPARTPMRL.focus() ; return false ; }
 // parts rest ass/quota
 var oldpart = parseInt(formname.frmHNPARTPMRL.value,10) ;
 if (isNaN(oldpart)) {oldpart=0;}
 var PartTotalAss = PartTotal-(parseInt(window.opener.document.all.frmTotalNbrPart.value,10)-oldpart) ;
 if (parseInt(formname.frmNPARTPMRL.value,10) > PartTotalAss ) { ms (strtitle1) ; formname.frmNPARTPMRL.focus() ; return false ; }
}
if (verifPPH(formname)==false) return false; 
return true
}

//////////////////////////////////////////////////////
// Verify Société
//////////////////////////////////////////////////////
function verifSTE(formname)
{
var nowdate,datecmp
nowdate = new Date() ;
if ( Currentcodetc < 2 ) // SARL SUARL SA STEP 1
{
 if (formname.frmRSSTEFR.value =='') { ms ('Raison sociale manquante') ; formname.frmRSSTEFR.focus() ; return false ; }
 if (formname.frmDNMSTEFR.value =='') { ms ('Dénomination manquante') ; formname.frmDNMSTEFR.focus() ; return false ; }
 if (formname.frmADRSTEFR.value =='') { ms ('Adresse prévue du siège manquante') ; formname.frmADRSTEFR.focus() ; return false ; }
 if (formname.frmCODDLG.options[formname.frmCODDLG.options.selectedIndex].value=='-1' ) { ms ('Délégation prévue du siège manquante') ; formname.frmCODDLG.focus() ; return false ; }
 if (formname.frmCPTSTE.options[formname.frmCPTSTE.options.selectedIndex].value=='-1' ) { ms ('Ville prévue du siège manquante') ; formname.frmCPTSTE.focus() ; return false ; }
 if (formname.frmOBJSTEFR.value =='') { ms ('Objet manquant') ; formname.frmOBJSTEFR.focus() ; return false ; }
 if (formname.frmOBJSTEFR.value.length >255) { ms ('Le champ Objet doit être inférieur à 256 caractères ! ') ; formname.frmOBJSTEFR.focus() ; return false ; }
}

if ( Currentcodfjs==3 && Currentcodetc==1 ) //  SA STEP 1 / epargne

{
 if (formname.frmAPESTE.options[formname.frmAPESTE.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez une option pour l\'Appel public à l\'épargne') ; formname.frmAPESTE.focus() ; return false ; }
 if (formname.frmOCSSTE.options[formname.frmOCSSTE.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez une option pour la clôture anticipée de souscription') ; formname.frmOCSSTE.focus() ; return false ; }
}

if ( Currentcodfjs==1 || Currentcodfjs==2 ) //  SUARL SARL
 {
 if ( Currentcodfjs == 1 ) // SARL
   { 
   if (parseInt(formname.frmNBASTE.value,10) < 2 || isNaN(parseInt(formname.frmNBASTE.value,10)) ) { ms ('Nombre de parts sociales invalide ( Minimum 2 )') ; formname.frmNBASTE.focus() ; return false ; }
   //if (parseInt(formname.frmVNASTE.value,10) < 5 || isNaN(parseInt(formname.frmVNASTE.value,10)) || ( parseInt(formname.frmVNASTE.value,10) % 5 !=0) ) { ms ('Valeur nominale d\'une part invalide ( Minimum 5 TND ou multiple de 5 TND )') ; formname.frmVNASTE.focus() ; return false ; }
   } //SUARL 
  if (parseInt(formname.frmCPSSTE.value,10) < 1000 || isNaN(parseInt(formname.frmCPSSTE.value,10)) || IsLng(parseInt(formname.frmCPSSTE.value,10))==false ) { ms ('Capital social invalide ( Minimum 1000 TND )') ; formname.frmCPSSTE.focus() ; return false ; } 
  }
else // SA 
{
 if ( Currentcodetc==1  ) // SA STEP 1
 {
  if (parseInt(formname.frmNBASTE.value,10) < 7 || isNaN(parseInt(formname.frmNBASTE.value,10)) ) { ms ('Nombre d\'actions invalide ( Minimum 7 )') ; formname.frmNBASTE.focus() ; return false ; }
  //if (parseInt(formname.frmVNASTE.value,10) < 5 || isNaN(parseInt(formname.frmVNASTE.value,10)) || ( parseInt(formname.frmVNASTE.value,10) % 5 !=0) ) { ms ('Valeur nominale d\'une action invalide ( Minimum 5 TND ou multiple de 5 TND )') ; formname.frmVNASTE.focus() ; return false ; }
  if ( formname.frmAPESTE.options.selectedIndex ==1 )
     {
     if (parseInt(formname.frmCPSSTE.value,10) < 50000 || isNaN(parseInt(formname.frmCPSSTE.value,10)) || IsLng(parseInt(formname.frmCPSSTE.value,10))==false ) { ms ('Capital social invalide ( Minimum 50 000 TND avec appel public à l\'épargne )') ; formname.frmCPSSTE.focus() ; return false ; }
     }
   else
     {
     if (parseInt(formname.frmCPSSTE.value,10) < 5000 || isNaN(parseInt(formname.frmCPSSTE.value,10)) || IsLng(parseInt(formname.frmCPSSTE.value,10))==false ) { ms ('Capital social invalide ( Minimum 5 000 TND )') ; formname.frmCPSSTE.focus() ; return false ; }
     }
  if ( isNaN(parseInt(formname.frmCPLSTE.value,10)) ) { ms ('Capital à libérer invalide') ; formname.frmCPLSTE.focus() ; return false ; }
  if (formname.frmCPLFSTE.options[formname.frmCPLFSTE.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez le capital à libérer !') ; formname.frmCPLFSTE.focus() ; return false ; }
  if ( isNaN(parseInt(formname.frmNASSTE.value,10)) ) { ms ('Nombre d\'actions à souscrire invalide') ; formname.frmNASSTE.focus() ; return false ; }
  //if (parseInt(formname.frmCPLSTE.value,10) < (parseInt(formname.frmCPSSTE.value,10)/4) || parseInt(formname.frmCPLSTE.value,10) > parseInt(formname.frmCPSSTE.value,10) ) { ms ('Capital à libérer invalide ( Minimum 1/4 du capital social )') ; formname.frmCPLSTE.focus() ; return false ; }
  if (parseInt(formname.frmNASSTE.value,10) > parseInt(formname.frmNBASTE.value,10) ) { ms ('Nombre d\'actions à souscrire invalide (Maximum le nombre total d\'actions)') ; formname.frmNASSTE.focus() ; return false ; }
 }
}
if ( Currentcodetc < 2 )  // SARL SUARL SA STEP 1
 {
 if ( parseInt(formname.frmDURSTE.value,10) < 1 || parseInt(formname.frmDURSTE.value,10) > 99  || isNaN(parseInt(formname.frmDURSTE.value,10))) { ms ('Durée société invalide : maximum 99 ans') ; formname.frmDURSTE.focus() ; return false ; }
 if (checkDateJJMM(formname.frmDCBSTE)==false) { ms ('Date de clôture du bilan manquante ou invalide - Format : JJ/MM') ; formname.frmDCBSTE.focus() ; return false ; }
 }

if (Currentcodfjs!=3 || Currentcodetc==3 ) // SARL, SUARL, SA STEP 3
{
  if ( isNaN(parseInt(formname.frmESSSTE.value,10))) { ms ('Effectif salarié invalide') ; formname.frmESSSTE.focus() ; return false ; }
  if (formname.frmCODRINV.options[formname.frmCODRINV.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez le régime d\'investissement !') ; formname.frmCODRINV.focus() ; return false ; }
}
if (Currentcodfjs!=3 || Currentcodetc==3 ) // SARL, SUARL, SA STEP 3
{
  if (formname.frmCODACT.options[formname.frmCODACT.options.selectedIndex].value=='-1' ) { ms ('Activité principale manquante') ; formname.frmCODACT.focus() ; return false ; }

  if (formname.frmLEXSTEFR.value =='') { ms ('Adresse du Lieu d\’exercice de l\’activité  manquante') ; formname.frmLEXSTEFR.focus() ; return false ; }
  if (formname.frmCODDLGA.options[formname.frmCODDLGA.options.selectedIndex].value=='-1' ) { ms ('Délégation du Lieu d\’exercice de l\’activité manquante') ; formname.frmCODDLGA.focus() ; return false ; }
  if (formname.frmCPTSTEA.options[formname.frmCPTSTEA.options.selectedIndex].value=='-1' ) { ms ('Ville du Lieu d\’exercice de l\’activité manquante') ; formname.frmCPTSTEA.focus() ; return false ; }
}
if ( Currentcodetc<2 ) // SARL SUARL SA STEP 1
{
 if (formname.frmCODBNQ.options[formname.frmCODBNQ.options.selectedIndex].value=='-1' ) { ms ('Sélectionnez l\'établissement financier !') ; formname.frmCODBNQ.focus() ; return false ; }
 if (formname.frmRIBBNQ1.value.length != 2 || formname.frmRIBBNQ2.value.length != 3 || formname.frmRIBBNQ3.value.length != 11 || formname.frmRIBBNQ4.value.length != 2 ) { ms ('RIB manquant ou invalide ( 20 chiffres )') ; formname.frmRIBBNQ1.focus() ; return false ; }
 if ( Currentcodetc==0 ) // SARL SUARL 
 {
   if (formname.frmRDBBNQFR.value.length < 4 ) { ms ('Référence d\'attestation bancaire manquante ou invalide') ; formname.frmRDBBNQFR.focus() ; return false ; }
   if (checkDate(formname.frmDDBBNQ)==false) { ms ('Date d\'attestation bancaire manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDDBBNQ.focus() ; return false ; }
    datecmp = new Date(ConvertDate(formname.frmDDBBNQ.value))
   if ( datecmp > nowdate ) { ms ('Date d\'attestation bancaire invalide ( doit être antérieure à la date du jour ) !') ; formname.frmDDBBNQ.focus() ; return false ; }
 }
 if (formname.frmADRBNQFR.value =='') { ms ('Adresse établissement financier manquante') ; formname.frmADRBNQFR.focus() ; return false ; }
 if (formname.frmCODDLGBNQ.options[formname.frmCODDLGBNQ.options.selectedIndex].value=='-1' ) { ms ('Délégation établissement financier manquante') ; formname.frmCODDLGBNQ.focus() ; return false ; }
 if (formname.frmCPTBNQ.options[formname.frmCPTBNQ.options.selectedIndex].value=='-1' ) { ms ('Ville établissement financier manquante') ; formname.frmCPTBNQ.focus() ; return false ; }
}
if ( Currentcodetc==2 ) // SA STEP 2
{
 if (formname.frmRDBBNQFR.value.length < 4 ) { ms ('Référence d\'attestation bancaire manquante ou invalide') ; formname.frmRDBBNQFR.focus() ; return false ; }
 if (checkDate(formname.frmDDBBNQ)==false) { ms ('Date d\'attestation bancaire manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDDBBNQ.focus() ; return false ; }
 datecmp = new Date(ConvertDate(formname.frmDDBBNQ.value))
 if ( datecmp > nowdate ) { ms ('Date d\'attestation bancaire invalide ( doit être antérieure à la date du jour ) !') ; formname.frmDDBBNQ.focus() ; return false ; }
 // exp jort
 var datecmpexp = new Date(ConvertDate(formname.frmDATEXPJORT.value))  
 if ( datecmp < datecmpexp ) { ms ('Date d\'attestation bancaire invalide doit être postérieur La date de publication JORT  !') ; formname.frmDDBBNQ.focus() ; return false ; }

 
 if (checkDate(formname.frmDDFBNQ)==false) { ms ('Date de disponibilité de fonds manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDDFBNQ.focus() ; return false ; }
 datecmp = new Date(ConvertDate(formname.frmDDFBNQ.value))
 if ( datecmp > nowdate ) { ms ('Date de disponibilité de fonds invalide ( doit être antérieure à la date du jour ) ') ; formname.frmDDFBNQ.focus() ; return false ; }
 if (formname.frmRDFBNQFR.value.length < 4 ) { ms ('Référence d\'attestation de disponibilité de fonds manquante ou invalide') ; formname.frmRDFBNQFR.focus() ; return false ; }
 
 if ( isNaN(parseInt(formname.frmMTDSTE.value,10)) ) { ms ('Montant de disponibilité de fonds manquant ou invalide') ; formname.frmMTDSTE.focus() ; return false ; }
 if ( parseInt(formname.frmMTDSTE.value,10) >= parseInt(formname.frmCPLSTEHidden.value,10) ) { ms ('Montant de disponibilité de fonds invalide ( Doit être inférieur au capital liberé )') ; formname.frmMTDSTE.focus() ; return false ; }             
}

// commisaire au compte  // SARL SUARL SA STEP 3
if ( Currentcodetc==0 || Currentcodetc==3 )
{
 if (parseInt(formname.frmCPSSTE.value,10) >= 20000 ) 
 { 
   if (formname.frmRSNOM1.value =='') { ms ('Nom et Prénom / Raison Sociale du commisaire aux comptes manquante ') ; formname.frmRSNOM1.focus() ; return false ; }
   if (formname.frmCINRC1.value =='') { ms ('N° CIN / N° Registre de commerce du commisaire aux comptes manquant ou invalide') ; formname.frmCINRC1.focus() ; return false ; }
   if (formname.frmNINSC1.value =='') { ms ('N° d\'inscription du commisaire aux comptes manquant') ; formname.frmNINSC1.focus() ; return false ; }
   if (formname.frmADR1.value =='') { ms ('Adresse du commisaire aux comptes manquante') ; formname.frmADR1.focus() ; return false ; }
 }
}
return true
}

//////////////////////////////////////////////////////
// Verify avantages et condition ETAP 1 SA
//////////////////////////////////////////////////////
function verifAVTCON(formname)
{

if (formname.frmAVPSTEFR.value =='') { ms ('Avantages particuliers pour souscripteur manquants') ; formname.frmAVPSTEFR.focus() ; return false ; }
if (formname.frmAVPSTEFR.value.length >255) { ms ('Le champ \'Avantages particuliers pour souscripteur\' doit être inférieur à 256 caractères ! ') ; formname.frmAVPSTEFR.focus() ; return false ; }

if (formname.frmAGCSTECheck.checked == false)
 {
  if (parseInt(formname.frmAGCSTENotHidden.value,10) == 0 || isNaN(parseInt(formname.frmAGCSTENotHidden.value,10))) 
  {  ms ('Le champ Minimum d\'actions est invalide') ; 
     formname.frmAGCSTENotHidden.focus() ; 
     return false ;
  }
  if ( parseInt(formname.frmAGCSTENotHidden.value,10) < parseInt(formname.frmANBASTEHidden.value,10)*0.667 ) 
  {  ms ('Le Quorum legal n\'est pas atteint : (Minimum 2/3 du nbre d\'actions)') ; 
     formname.frmAGCSTENotHidden.focus() ; 
     return false ;
  }
  formname.frmAGCSTE.value = formname.frmAGCSTENotHidden.value;
 }
else 
{ formname.frmAGCSTE.value='-1' }

if (formname.frmMAGCSTFR.value =='') { ms ('Modalités de convocations manquants') ; formname.frmMAGCSTFR.focus() ; return false ; }
if (formname.frmLAGCSTEFR.value =='') { ms ('Lieu de l\'Assemblée Générale Constitutive manquant') ; formname.frmLAGCSTEFR.focus() ; return false ; }

if (formname.frmRBNSTEFR.value =='') { ms ('Répartitions des bénéfices manquants') ; formname.frmRBNSTEFR.focus() ; return false ; }
if (formname.frmRBNSTEFR.value.length >255) { ms ('Le champ \'Répartitions des bénéfices\' doit être inférieur à 256 caractères ! ') ; formname.frmRBNSTEFR.focus() ; return false ; }

if (formname.frmMCRSTEFR.value =='') { ms ('Modalités de constitution des réserves manquants') ; formname.frmMCRSTEFR.focus() ; return false ; }
if (formname.frmMCRSTEFR.value.length >255) { ms ('Le champ \'Modalités de constitution des réserves\' doit être inférieur à 256 caractères ! ') ; formname.frmMCRSTEFR.focus() ; return false ; }

//if (formname.frmBLSTEFR.value =='') { ms ('Boni de liquidation manquant') ; formname.frmBLSTEFR.focus() ; return false ; }
//if (formname.frmBLSTEFR.value.length >255) { ms ('Le champ \'Boni de liquidation\' doit être inférieur à 256 caractères ! ') ; formname.frmBLSTEFR.focus() ; return false ; }

return true
}

//////////////////////////////////////////////////////
// Verify références actes ETAP 2/3 SA
//////////////////////////////////////////////////////
function verifREFACT(formname)
{
nowdate = new Date() ;

if ( Currentcodetc==2 && typeof(formname.frmAPESTESTATE) == 'undefined' ) 
{
if (formname.frmIPNQASTE.value =='') { ms ('Intitulé du quotidien en langue arabe manquant') ; formname.frmIPNQASTE.focus() ; return false ; }
if (checkDate(formname.frmDPNQASTE)==false) { ms ('Date du quotidien en langue arabe manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDPNQASTE.focus() ; return false ; }
  datecmp = new Date(ConvertDate(formname.frmDPNQASTE.value)) ;
  if ( datecmp > nowdate ) { ms ('Date du quotidien en langue arabe invalide ( doit être antérieure à la date du jour )!') ; formname.frmDPNQASTE.focus() ; return false ; }

if ( formname.frmNPNQASTE.value == '') 
  {  ms ('Le numéro du quotidien en langue arabe invalide') ; 
     formname.frmNPNQASTE.focus() ; 
     return false ;
  }
 if (formname.frmIPNQLSTE.value =='') { ms ('Intitulé du quotidien en autre langue manquant') ; formname.frmIPNQLSTE.focus() ; return false ; }
if (checkDate(formname.frmDPNQLSTE)==false) { ms ('Date du quotidien en autre langue manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDPNQLSTE.focus() ; return false ; }
  datecmp = new Date(ConvertDate(formname.frmDPNQLSTE.value)) ;
  if ( datecmp > nowdate ) { ms ('Date du quotidien en autre langue invalide ( doit être antérieure à la date du jour ) !') ; formname.frmDPNQLSTE.focus() ; return false ; }
if ( formname.frmNPNQLSTE.value == '' ) 
  {  ms ('Le numéro du quotidien en autre langue invalide') ; 
     formname.frmNPNQLSTE.focus() ; 
     return false ;
  }
}

if ( Currentcodetc==3 )
{
if (checkDate(formname.frmDAGCSTE)==false) { ms ('Date de l\'Assemblé Générale Constitutive (PV)  manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDAGCSTE.focus() ; return false ; }
  datecmp = new Date(ConvertDate(formname.frmDAGCSTE.value)) ;
  if ( datecmp > nowdate ) { ms ('Date de l\'Assemblé Générale Constitutive (PV) invalide ( doit être antérieure à la date du jour ) !') ; formname.frmDAGCSTE.focus() ; return false ; }

if (checkDate(formname.frmDPCASTE)==false) { ms ('Date du Conseil d\'Administration (PV) invalide - Format : JJ/MM/AAAA') ; formname.frmDPCASTE.focus() ; return false ; }
  datecmp = new Date(ConvertDate(formname.frmDPCASTE.value)) ;
  if ( datecmp > nowdate ) { ms ('Date du Date du Conseil d\'Administration (PV) invalide ( doit être antérieure à la date du jour ) !') ; formname.frmDPCASTE.focus() ; return false ; }
} 

return true
}

//////////////////////////////////////////////////////
// Verify ASS/SOUS
//////////////////////////////////////////////////////
function verifASS(formname)
{
if (Currentcodetc == 2 )
{ 
 if (parseInt(formname.frmTotalAss.value,10) < 7 )  { ms ('Il faut au moins 7 souscripteurs !') ; return false ; }
 if ( typeof(formname.frmASSERR) != 'undefined' )  { ms ('Existence d\’un souscripteur ayant un nombre d\’actions nul !') ; return false ; }
 if (parseInt(formname.frmTotalNbrPart.value,10) != parseInt(formname.frmPartSte.value,10))  { ms ('Vérifier le total des actions') ; return false ; }
 if (parseInt(formname.frmTotalNbrPart.value,10) > parseInt(formname.frmPartSte.value,10) )  { ms ('Vérifier le total d\'actions !') ; return false ; }
}
else
{
if (parseInt(formname.frmTotalAss.value,10) < 2)  { ms ('Il faut au moins 2 associés !') ; return false ; }
if ( typeof(formname.frmASSERR) != 'undefined' )  { ms ('Existence d\’un associé ayant un nombre de parts nul !') ; return false ; }
if (parseInt(formname.frmPartSte.value,10) != parseInt(formname.frmTotalNbrPart.value,10) )  { ms ('Vérifier le total des parts sociales !') ; return false ; }
}

return true
}

//////////////////////////////////////////////////////
// Verify DIR/ADMIN/FOND
//////////////////////////////////////////////////////
function verifDIR(formname)
{
var strMsTitle
if (Currentcodetc == 0) strMsTitle = 'Il faut au moins un dirigeant' ;
if (Currentcodetc == 1) strMsTitle = 'Il faut au moins un fondateur' ;
if (Currentcodetc == 3) strMsTitle = 'Il faut au moins un administrateur' ;

if (parseInt(formname.frmTotalDir.value,10) < 1)  { ms (strMsTitle) ; return false ; }

if ((Currentcodfjs == 1) && (parseInt(formname.frmTotalDir.value,10) >= 1) ) 
 {
  var QUAELEM = document.all.frmCODQUA;
  var QUABOOL = false ;
  if (typeof(QUAELEM.length)!='undefined')
    {
    for ( i=0 ; i<QUAELEM.length ; i++)
        {  if (QUAELEM[i].value == '1') { QUABOOL=true ; break; } }
    }
  else
    {
    if (QUAELEM.value == '1') { QUABOOL=true; }
    }  
    
  if  (!QUABOOL)  
      { ms ('Il faut ajouter un gérant pour la société !');  
        return false; 
      } 
  }
  return true ;
}

//////////////////////////////////////////////////////
// Verify ATT/AUTH
//////////////////////////////////////////////////////
function verifATT(formname)
{
var nowdate,datecmp
nowdate = new Date() ;
  if ( formname.frmCODORGH.value == '24' )
  {
   if ( formname.frmREFATTDP.value.length < 8 || formname.frmREFATTDP.value.indexOf('DC',0)==-1  ) { ms ('Référence attestation manquante ou invalide') ; formname.frmREFATTDP.focus() ; return false ; }
  }
    else
  {
   if ( formname.frmREFATTDP.value.length < 8  ) { ms ('Référence attestation manquante ou invalide') ; formname.frmREFATTDP.focus() ; return false ; }
  }  
  if (checkDate(formname.frmDATATTDP)==false) { ms ('Date attestation manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDATATTDP.focus() ; return false ; }
datecmp = new Date(ConvertDate(formname.frmDATATTDP.value))
  if ( datecmp > nowdate ) { ms ('Date attestation invalide ( doit être antérieure à la date du jour ) !') ; formname.frmDATATTDP.focus() ; return false ; }
  
if (typeof(formname.frmTotalAuth)!='undefined')
{
 var countAuth = parseInt(formname.frmTotalAuth.value,10)
  
 for ( i = 1 ;  i <= countAuth ;  i++ )
  {
  var Ref=eval('formname.frmREFDCLFR'+i)
  var Dat=eval('formname.frmDATDCLP'+i)
  if (Ref.value =='') { ms ('Référence autorisation manquante') ; Ref.focus() ; return false ; }
  if (checkDate(Dat)==false) { ms ('Date autorisation manquante ou invalide - Format : JJ/MM/AAAA') ; Dat.focus() ; return false ; }
  datecmp = new Date(ConvertDate(Dat.value))
  if ( datecmp > nowdate ) { ms ('Date autorisation invalide ( doit être antérieure à la date du jour ) !') ; Dat.focus() ; return false ; }
  }
 } 
return true
}

//////////////////////////////////////////////////////
// Verify DOCUMENTS/MANDATS
//////////////////////////////////////////////////////
function verifDOCMND(formname)
{
var nowdate,datecmp
nowdate = new Date() ;

var passDocTest=true
var passMndTest=true

if (typeof(formname.frmCountDoc)!='undefined') 
 { var CountDoc = parseInt(formname.frmCountDoc.value,10); } else {passDocTest = false }
 if (typeof(formname.frmCountMnd)!='undefined') 
 { var CountMnd = parseInt(formname.frmCountMnd.value,10); } else {passMndTest = false }

// documents test
if (passDocTest)
 {
for ( i = 1 ;  i <= CountDoc ;  i++ )
   { 
   OptionElement = eval('formname.frmDOCMODENV'+i);
   HiddenFileNameElement = eval('formname.frmFileName'+i);
  if (typeof(OptionElement.options) != 'undefined')
      {
     if (OptionElement.options[OptionElement.options.selectedIndex].value=='Pièce électronique')
      {if (HiddenFileNameElement.value=='') {alert ('Envoyez la pièce électronique !'); OptionElement.focus();  return false; } }
      else {if (OptionElement.options[OptionElement.options.selectedIndex].value=='-1') {alert ('Sélectionnez le mode d\'envoi '); OptionElement.focus();  return false;}}
    }
   }  
 } 

// mandats test
if (passMndTest)
 {
for ( i = 1 ;  i <= CountMnd ;  i++ )
   { 
   OptionElement = eval('formname.frmMNDMODENV'+i);
   HiddenFileNameElement = eval('formname.frmMndFileName'+i);
  if (typeof(OptionElement.options) != 'undefined')
      {
     if (OptionElement.options[OptionElement.options.selectedIndex].value=='Pièce électronique')
      {if (HiddenFileNameElement.value=='') {alert ('Envoyez la pièce électronique !'); OptionElement.focus();  return false; } }
      else {if (OptionElement.options[OptionElement.options.selectedIndex].value=='-1') {alert ('Sélectionnez le mode d\'envoi '); OptionElement.focus();  return false;}}
    }
   }  
 } 
if (Currentcodfjs != 3) 
 {
  if (checkDate(formname.frmDAGCSTE)==false) { ms ('Date d\'effet du statut manquante ou invalide - Format : JJ/MM/AAAA') ; formname.frmDAGCSTE.focus() ; return false ; }
  datecmp = new Date(ConvertDate(formname.frmDAGCSTE.value))
  if ( datecmp > nowdate ) { ms ('Date d\'effet du statut invalide ( doit être antérieure à la date du jour ) !') ; formname.frmDAGCSTE.focus() ; return false ; }
  }
return true
}

//////////////////////////////////////////////////////
// Verify pay
//////////////////////////////////////////////////////
function verifPAY(formname)
{
if ( typeof(formname.frmPAYED) != 'undefined' ) return true ;
var testbool=false;
var a = document.all.item("frmModePay");

if ( typeof(formname.frmAPESTEFLAG) == 'undefined' ) {

for (i=0; i<a.length; i++) 
    {  
      if (a(i).checked) {testbool=true} 
    }
if (testbool == false) 
  { 
  alert ('Veuillez choisir le mode de paiment svp!');
  return false ; 
  }
}  

if (formname.frmAcceptDec.checked ==false) { ms ('Veuillez cocher la mention \'Je certifie sincères et véritables les informations fournies\' ') ; formname.frmAcceptDec.focus() ; return false ; }

return true
}

//////////////////////////////////////////////////////
// help window 
//////////////////////////////////////////////////////
function GetHelp(ScriptName)
{
var HELPpage,winlink
if ( ScriptName=='ConstSARL.asp' ) HELPpage='SARL';
if ( ScriptName=='ConstSUARL.asp' ) HELPpage='SUARL';
if ( ScriptName=='ConstSADP.asp') HELPpage='SADP';
if ( ScriptName=='ConstSADS.asp' ) HELPpage='SADS';
if ( ScriptName=='ConstSADC.asp') HELPpage='SADC';
winlink = 'help\\win'+HELPpage+CurrentStep+'.htm'
//alert (winlink);
PopUpWin(winlink,640,550);
}
//////////////////////////////////////////////////////
// Alert replacement
//////////////////////////////////////////////////////
function ms(ms)
{
alert(ms)
}

//////////////////////////////////////////////////////
// IsLng function long number tester 
// as vbscript IsLng -2147483648 to 2147483647)
//////////////////////////////////////////////////////
function IsLng(thisNumber)
// long number tester as vbscript IsLng -2147483648 to 2147483647)
{
if ( thisNumber >= -2147483648 && thisNumber <= 2147483647 ) { return true; }
else { return false; }
}

//////////////////////////////////////////////////////
// is digit function
//////////////////////////////////////////////////////
function IsDigit()
{return ((event.keyCode >= 48) && (event.keyCode <= 57))}

//////////////////////////////////////////////////////
// is arabic ( ignore arabic Unicode char )
//////////////////////////////////////////////////////
function IsArabic()
{
 //window.status = event.keyCode ;
return ((event.keyCode >= 32) && (event.keyCode <= 255))
}

//////////////////////////////////////////////////////
// isLatin ( ignore latin Unicode char )
//////////////////////////////////////////////////////
function IsLatin()
{
return ( event.keyCode >= 255 || ((event.keyCode >= 32) && (event.keyCode <= 32))  || ((event.keyCode >= 48) && (event.keyCode <= 57))  ) ;
}

//////////////////////////////////////////////////////
// checkEmail ( Email validator )
//////////////////////////////////////////////////////

function checkEmail(email) {
AtPos = email.indexOf("@")
StopPos = email.lastIndexOf(".")

if (email == ""){ return false;}
if (AtPos == -1 || StopPos == -1) { return false;}
if (StopPos < AtPos) { return false;}
if (StopPos - AtPos == 1) { return false;}
return true;
}

//function checkEmail(MyValue)
//{
//var filter= new RegExp("/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i");
//if (filter.test(MyValue)) { return true; }
//else { return false ; }
//}

//////////////////////////////////////////////////////
// VerifMF ( Matricule fiscale validator )
//////////////////////////////////////////////////////

function VerifMF (prmmf) {

var KValues = 'ABCDEFGHJKLMNPQRSTVWXYZ';
var myN   	= parseInt(prmmf.split('/')[0], 10);	// extract mf n
var myNS    = prmmf.split('/')[0]; // extract mf str
var myK   	= prmmf.split('/')[1];  // extract key
var X       = 0;
var ckey,cpos;

if (myN == 'NaN' || myN==0) { return false;  }

for ( i=1 ; i<7 ; i++ )
    { X=X+(7-i)*parseInt(myNS.substring(i-1,i)); }

// key position
cpos =( X % 23 ) + 1;
// select key
ckey = KValues.substring(cpos-1,cpos);
//alert(ckey);
if ( ckey != myK ) { return false;  }
return true;
}


//////////////////////////////////////////////////////
// Get Age from from JS date object
//////////////////////////////////////////////////////

function makeDaysOfMonth(){
  var i = 0;
  this[i++] = 0; // dummy
  this[i++] = 31;
  this[i++] = 29;
  this[i++] = 31;
  this[i++] = 30;
  this[i++] = 31;
  this[i++] = 30;
  this[i++] = 31;
  this[i++] = 31;
  this[i++] = 30;
  this[i++] = 31;
  this[i++] = 30;
  this[i  ] = 31;
  this.length = i;
}

function calcAge(DateObj){
  var t, mon, day, year, DD, MM, YY, age;     	
  var MTB = new makeDaysOfMonth();
  YY   = DateObj.getFullYear();	// year of birth (4 digits)
  MM   = DateObj.getMonth()+1;	// month of birth (1-12)
  DD   = DateObj.getDate();	    // date of birth (1-31)
  if (MTB[MM] < DD || DD < 1) return -1;
  t    = new Date();	       // get current date
  year = t.getFullYear();	   // get year of current
  mon  = t.getMonth() + 1;	   // get month of current
  day  = t.getDate();	       // get date of current
  if (MM == 2 && DD == 29){	   // check leap year
    if (!(((YY % 4 == 0) && (YY % 100 != 0)) || (YY % 400 == 0))){
      //alert("The year " +YY+ " ends at 28th of "+MM+" month\nPlease check the date.");
      return -1;
    }
  }
  age = year - YY;
  if ((MM > mon) || (MM == mon && day < DD)) age --;

  return age;
}

//////////////////////////////////////////////////////
// Date checker check MM/JJ/AAAA or MM-JJ-AAAA
//////////////////////////////////////////////////////

function isLeapYear (Year) { 
	if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) { 
		return (true);
	} else 
	{ return (false) 
	}
}

function checkDate(objName){
	//variable declarations!
	var mValues = "312831303130313130313031"
	var alertMsg = ""
	var forFocus = "document.certificate."+objName+".focus()"
	var wrongDate = true
	var args = checkDate.arguments

	//get the no. of arguments passed to this function
	myValue = objName.value		// date value entered

	// check & extract separator
    if   (myValue.indexOf('-')!=-1) {separ = '-';}
     else 
     { 
       if (myValue.indexOf('/')!=-1) {separ = '/';} 
         else { return false; }
         }
         
    myDD   	= parseInt(myValue.split(separ)[0], 10);	// extract Date
	myMM   	= parseInt(myValue.split(separ)[1], 10);  // extract Month
	myYYYY	= parseInt(myValue.split(separ)[2], 10) ;	// extract Year
	
	if (myYYYY < 1850 ){
		return false
	}

	if ( (isNaN(myDD)) || (isNaN(myMM)) || ( isNaN(myYYYY)) ){
		return false
	}

	// if year is less than 1850 dont accept the entry!
	if ( (myMM > 12) || (myMM <= 0) ){
		return false
	}
	var lastDate = 0

	if (myMM == 2){
		if (isLeapYear(myYYYY)) {
			lastDate = 29
		}
		else{
			lastDate = 28
		}
	} 
	else {
		lastDate = mValues.substring((myMM-1)*2, (myMM-1)*2+2)
	}

	if ( (myDD > lastDate) || (myDD <=0) ){
		return false
	}
	return true
}
//////////////////////////////////////////////////////////////
//Check date JJ/MM 
/////////////////////////////////////////////////////////////

function checkDateJJMM(objName){
	
    var mValues = "312931303130313130313031"
	myValue = objName.value		// date JJMM value entered

	// check & extract separator
    if   (myValue.indexOf('-')!=-1) {separ = '-';}
     else 
     { 
       if (myValue.indexOf('/')!=-1) {separ = '/';} 
         else { return false; }
         }
         
    myDD   	= parseInt(myValue.split(separ)[0], 10);	// extract Date
	myMM   	= parseInt(myValue.split(separ)[1], 10);  // extract Month
	
	if ( (isNaN(myDD)) || (isNaN(myMM)) ){ return false }

	// if mm is more than 12 dont accept the entry!
	if ( (myMM > 12) || (myMM <= 0) ){
		return false }

	// check day of month
	lastDate = mValues.substring((myMM-1)*2, (myMM-1)*2+2)
	if ( (myDD > lastDate) || (myDD <=0) ){ return false; }

	
}

//////////////////////////////////////////////////////////////
// Convert date from JJ/MM/AAAA to MM/JJ/AAAA (Js date parser Format)
// Must be passed to Date checker
/////////////////////////////////////////////////////////////
function ConvertDate(strDateValue){
	// check & extract separator
    if   (strDateValue.indexOf('-')!=-1) {separ = '-';}
     else 
     { if (strDateValue.indexOf('/')!=-1) {separ = '/';}  }

    DD   	= parseInt(strDateValue.split(separ)[0], 10);	// extract Date
	MM   	= parseInt(strDateValue.split(separ)[1], 10);  // extract Month
	YYYY	= parseInt(strDateValue.split(separ)[2], 10) ;	// extract Year
	
	return MM+separ+DD+separ+YYYY
}

//////////////////////////////////////////////////////
// Check mandat for declarant, personne morale associé 
//////////////////////////////////////////////////////
 function CheckQUA(optionElement)
 {
  //alert (optionElement.options[optionElement.options.selectedIndex].mnd)
  if (optionElement.options[optionElement.options.selectedIndex].mnd=='oui')
  { 
  MandatDiv.style.display = '' ;
  if (typeof(LBLASS)!='undefined')
   {
    LBLASS.style.color = '#666666';
    document.forms[0].frmASS.disabled = true;
    document.forms[0].frmASS.checked = false;
    document.forms[0].frmASS.value = 'False';
   } 
  }
  else
  { 
  MandatDiv.style.display = 'none' ;
  if (typeof(LBLASS)!='undefined')
   {
    LBLASS.style.color = '#000000';
    document.forms[0].frmASS.disabled = false;
    document.forms[0].frmASS.checked = false;
    document.forms[0].frmASS.value = 'True';
   }
  }
 } 

/////////////////////////////////////////////////////
// Check AGC Tout les actionnaires Checkbox
//////////////////////////////////////////////////////
 function CheckCONAGC()
 {
    if ( document.forms[0].frmAGCSTECheck.checked )
     {
     document.forms[0].frmAGCSTENotHidden.style.backgroundColor = '#aaaaaa';
     document.forms[0].frmAGCSTENotHidden.value = '' ;
     //document.forms[0].frmAGCSTENotHidden.onkeypress='event.returnValue=IsDigit();'
     }
    else
      {
      document.forms[0].frmAGCSTENotHidden.style.backgroundColor = '#ffffff';
      document.forms[0].frmAGCSTENotHidden.value = '0' ;
      //document.forms[0].frmAGCSTENotHidden.event.onkeypress=event.returnValue=false;
     }
 } 
 
//////////////////////////////////////////////////////
// Change to uploadmode
//////////////////////////////////////////////////////
 function ChangeEnvMode(theIndex,suffix)
 {
  OptionElement = eval('document.all.frm'+suffix+'MODENV'+theIndex);
  UploadElement = eval('document.all.'+suffix+'upload'+theIndex);
  if (OptionElement.options[OptionElement.options.selectedIndex].value=='Pièce électronique')
  { UploadElement.style.display = '' }
  else
  { UploadElement.style.display = 'none' }
 } 

//////////////////////////////////////////////////////
// Delete CIN for Etranger
//////////////////////////////////////////////////////
function ChangePid(theIndex)
{
 var SelectElementValue,i;
 SelectElementValue = theIndex.options[theIndex.options.selectedIndex].text ;
 do
	{
   	for (i=0;i<document.all.frmCODPID.options.length;i++) 
		{document.all.frmCODPID.options.remove(i);}
	}  
 while (document.all.frmCODPID.options.length !=0); 

 if ( SelectElementValue.indexOf('Tun')==-1)
 { 
   sOption = document.createElement("OPTION");
   document.all.frmCODPID.options.add(sOption);
   sOption.text='Passeport';
   sOption.value=2;
  }
 else
  {
  sOption = document.createElement("OPTION");
  document.all.frmCODPID.options.add(sOption);
  sOption.text='[ Séléction ]';
  sOption.value=-1;
  sOption.selected=true;
   
  sOption = document.createElement("OPTION");
  document.all.frmCODPID.options.add(sOption);
  sOption.text='Carte d\'identité nationale';
  sOption.value=1;
  
  sOption = document.createElement("OPTION"); 
  document.all.frmCODPID.options.add(sOption);
  sOption.text='Passeport';
  sOption.value=2;
  }
} 

//////////////////////////////////////////////
// Change Vil,Gvt listing on changing gouv
//////////////////////////////////////////////
function CollectGvrArray(GvrOptionElement,DLGinput,VILinput)
{	
selDLG = eval('document.all.frm'+DLGinput);
selVIL = eval('document.all.frm'+VILinput);
GvtElementName = GvrOptionElement.name;
Gvtindex = GvtElementName.substring(GvtElementName.length-1,GvtElementName.length)
val = parseInt(GvrOptionElement.options[GvrOptionElement.options.selectedIndex].value,10);
var i;
		             
// remove options CODDLG 
do
	{
   	for (i=0;i<selDLG.options.length;i++) 
		{selDLG.options.remove(i);}
	}     
while (selDLG.options.length !=0);
		             
	sOption = document.createElement("OPTION");
	selDLG.options.add(sOption);
	sOption.text='[ Délégation ]';
	sOption.value=-1;
	sOption.selected=true;
	for (i=0;i<DLGCODGVR.length;i++) 
	{
		if (DLGCODGVR[i] == val)
			{
			 sOption = document.createElement("OPTION");
			 selDLG.options.add(sOption);
			 sOption.text=DLGTITLE[i];
			 sOption.value=CODDLG[i];
             } 
    }
// remove options CPVIL 
do
	{
   	for (i=0;i<selVIL.options.length;i++) 
		{selVIL.options.remove(i);}
	}     
while (selVIL.options.length !=0);
		             
	sOption = document.createElement("OPTION");
	selVIL.options.add(sOption);
	sOption.text='[ Ville ]';
	sOption.value=-1;
	sOption.selected=true;
	for (i=0;i<VILCODGVR.length;i++) 
	{
		if (VILCODGVR[i] == val)
			{
			 sOption = document.createElement("OPTION");
			 selVIL.options.add(sOption);
			 sOption.text=VILTITLE[i];
			 sOption.value=CPVIL[i];
             } 
    }
    // erase cpfield
    CpElement = eval('document.all.frmCODVIEW'+Gvtindex);
    CpElement.value='';
}
//////////////////////////////////////////////
// view CP on Changing Vil
//////////////////////////////////////////////

function ViewCP(VilOptionElement,Gvtindex)
{
var CpElement = eval('document.all.frmCODVIEW'+Gvtindex);
var CpElementValue = VilOptionElement.options[VilOptionElement.options.selectedIndex].value;
if (CpElementValue=='-1') CpElementValue='';
CpElement.value = CpElementValue ;

}

//////////////////////////////////////////////
// Change SACT,ACT listing on changing DOMACT
//////////////////////////////////////////////
function CollectSACTArray()
{	
selSACT = document.all.frmCODSACT;
selACT = document.all.frmCODACT;
val = parseInt(document.all.frmCODDACT.options[document.all.frmCODDACT.options.selectedIndex].value,10);
var i;
		             
// remove options SACT 
do
	{
   	for (i=0;i<selSACT.options.length;i++) 
		{selSACT.options.remove(i);}
	}     
while (selSACT.options.length !=0);
		             
	sOption = document.createElement("OPTION");
	selSACT.options.add(sOption);
	sOption.text='[ Secteur d\’activité ]';
	sOption.value=-1;
	sOption.selected=true;
	for (i=0;i<CODDACT.length;i++) 
	{
		if (CODDACT[i] == val)
			{
			 sOption = document.createElement("OPTION");
			 selSACT.options.add(sOption);
			 sOption.text=SACTTIT[i];
			 sOption.value=CODSACT[i];
             } 
    }
// remove options ACT 
do
	{
   	for (i=0;i<selACT.options.length;i++) 
		{selACT.options.remove(i);}
	}     
while (selACT.options.length !=0);
		             
	sOption = document.createElement("OPTION");
	selACT.options.add(sOption);
	sOption.text='[ Activité ]';
	sOption.value=-1;
	sOption.selected=true;
}

//////////////////////////////////////////////
// Change ACT listing on changing SACT
//////////////////////////////////////////////
function CollectACTArray()
{	
selACT = document.all.frmCODACT;
val = parseInt(document.all.frmCODSACT.options[document.all.frmCODSACT.options.selectedIndex].value,10);
var i;
		             
// remove options SACT 
do
	{
   	for (i=0;i<selACT.options.length;i++) 
		{selACT.options.remove(i);}
	}     
while (selACT.options.length !=0);
		             
	sOption = document.createElement("OPTION");
	selACT.options.add(sOption);
	sOption.text='[ Activité ]';
	sOption.value=-1;
	sOption.selected=true;
	for (i=0;i<CODSACTA.length;i++) 
	{
		if (CODSACTA[i] == val)
			{
			 sOption = document.createElement("OPTION");
			 selACT.options.add(sOption);
			 sOption.text=ACTTIT[i];
			 sOption.value=CODACT[i];
             } 
    }
}

//////////////////////////////////////////////////////
// Verify translation
//////////////////////////////////////////////////////
function verifTrans(formname)
{

if ( CurrentState != 'ADMIN' )
{
//dec
if  ( typeof(formname.all.frmNOTRAD) != 'undefined' ) 
 { 
  if  ( formname.all.frmNOTRAD[0].checked == false &&  formname.all.frmNOTRAD[1].checked == false ) { ms ('Veuillez choisir une option Oui/Non svp ! ') ; formname.all.frmNOTRAD[0].focus() ;return false ; }
  if  ( formname.all.frmNOTRAD[1].checked == true ) return true ; 
  }
}

if (formname.frmNOMPPHYAR.value =='') { ms ('Nom manquant') ; formname.frmNOMPPHYAR.focus() ; return false ; }

if (formname.frmPNOMPHYAR.value =='') { ms ('Prénom manquant') ; formname.frmPNOMPHYAR.focus() ; return false ; }
if (formname.frmLNSPPHYAR.value =='') { ms ('Lieu de naissance manquant') ; formname.frmLNSPPHYAR.focus() ; return false ; }
if (formname.frmLPIPPHYAR.value== '') { ms ('Lieu de délivrance de la pièce d\'identité manquant') ; formname.frmLPIPPHYAR.focus() ; return false ; }
if (formname.frmADRPPHYAR.value== '') { ms ('Adresse manquante') ; formname.frmADRPPHYAR.focus() ; return false ; }
if (formname.frmVILPPHYAR.value== '') { ms ('Ville manquante') ; formname.frmVILPPHYAR.focus() ; return false ; }


if  (typeof(formname.frmORGMNDAR) != 'undefined') 
{ 
   if (formname.frmORGMNDAR.value== '') { ms ('Organisme d\'authentification manquant') ; formname.frmORGMNDAR.focus() ; return false ; }
}

if ( Currentcodfjs == 3 && Currentcodetc == 2 && typeof(formname.frmAPESTESTATE) == 'undefined' )  
{  // SA STEP 2 
 if (formname.frmIPNQASTEAR.value =='') { ms ('Intitulé du quotidien en langue arabe manquant') ; formname.frmIPNQASTEAR.focus() ; return false ; }
 if (formname.frmIPNQLSTEAR.value =='') { ms ('Intitulé du quotidien en autre langue manquant') ; formname.frmIPNQLSTEAR.focus() ; return false ; }
}

// ste
if ( Currentcodfjs < 3 || Currentcodetc==1 )  {  // SARL // SUARL // SA STEP 1 
 if (formname.frmRSSTEAR.value =='') { ms ('Raison sociale manquante') ; formname.frmRSSTEAR.focus() ; return false ; }
 if (formname.frmDNMSTEAR.value =='') { ms ('Dénomination manquante') ; formname.frmDNMSTEAR.focus() ; return false ; }
 if (formname.frmADRSTEAR.value =='') { ms ('Adresse prévue du siège manquante') ; formname.frmADRSTEAR.focus() ; return false ; }
 if (formname.frmOBJSTEAR.value =='') { ms ('Objet manquant') ; formname.frmOBJSTEAR.focus() ; return false ; }
 if (formname.frmOBJSTEAR.value.length >255) { ms ('Le champ Objet doit être inférieur à 256 caractères ! ') ; formname.frmOBJSTEAR.focus() ; return false ; }
 if (formname.frmADRBNQAR.value =='') { ms ('Adresse établissement financier manquante') ; formname.frmADRBNQAR.focus() ; return false ; }

 if ( Currentcodetc==1 )  {  // SA STEP 1
  if (formname.frmAVPSTEAR.value =='') { ms ('Avantages particuliers pour souscripteur manquants') ; formname.frmAVPSTEAR.focus() ; return false ; }
  if (formname.frmAVPSTEAR.value.length >255) { ms ('Le champ \'Avantages particuliers pour souscripteur\' doit être inférieur à 256 caractères ! ') ; formname.frmAVPSTEAR.focus() ; return false ; }

  if (formname.frmMAGCSTAR.value =='') { ms ('Modalités de convocations manquants') ; formname.frmMAGCSTAR.focus() ; return false ; }
  if (formname.frmLAGCSTEAR.value =='') { ms ('Lieu de l\'Assemblée Générale Constitutive manquant') ; formname.frmLAGCSTEAR.focus() ; return false ; }

  if (formname.frmRBNSTEAR.value =='') { ms ('Répartitions des bénéfices manquants') ; formname.frmRBNSTEAR.focus() ; return false ; }
  if (formname.frmRBNSTEAR.value.length >255) { ms ('Le champ \'Répartitions des bénéfices\' doit être inférieur à 256 caractères ! ') ; formname.frmRBNSTEAR.focus() ; return false ; }

  if (formname.frmMCRSTEAR.value =='') { ms ('Modalités de constitution des réserves manquants') ; formname.frmMCRSTEAR.focus() ; return false ; }
  if (formname.frmMCRSTEAR.value.length >255) { ms ('Le champ \'Modalités de constitution des réserves\' doit être inférieur à 256 caractères ! ') ; formname.frmMCRSTEAR.focus() ; return false ; }

  //if (formname.frmBLSTEAR.value =='') { ms ('Boni de liquidation manquant') ; formname.frmBLSTEAR.focus() ; return false ; }
  //if (formname.frmBLSTEAR.value.length >255) { ms ('Le champ \'Boni de liquidation\' doit être inférieur à 256 caractères ! ') ; formname.frmBLSTEAR.focus() ; return false ; }
 }
}
if ( Currentcodfjs == 1 || Currentcodetc== 2 )  {  // SARL // SA STEP 2

// pm ass
if (typeof(formname.frmTotalPMASS)!='undefined')
{
 var countpm = parseInt(formname.frmTotalPMASS.value,10)
  
 for ( i = 1 ;  i <= countpm ;  i++ )
  {
  var RS=eval('formname.frmRSPMRAR'+i)
   if (RS.value =='') { ms ('Raison sociale de l\'associé manquante') ; RS.focus() ; return false ; }
   }
 } 

// ph ass 
if (typeof(formname.frmTotalPHASS)!='undefined')
{
 var countph = parseInt(formname.frmTotalPHASS.value,10)
  
 for ( i = 1 ;  i <= countph ;  i++ )
  {
  var NOM=eval('formname.frmNOMPPHYAR'+i)
  var PRENOM=eval('formname.frmPNOMPHYAR'+i)
  
  if (typeof(NOM)!='undefined')
   {
    if (NOM.value =='') { ms ('Nom de l\'associé manquant') ; NOM.focus() ; return false ; }
    if (PRENOM.value =='') { ms ('Prénom de l\'associé manquant') ; PRENOM.focus() ; return false ; }
   }
   }
 } 
} // SARL 

if ( Currentcodfjs == 1 || Currentcodetc == 1 || Currentcodetc== 3 )  {  // SARL SA STEP 1&3
   var strdirTitle
   if (Currentcodetc == 0) strdirTitle = 'dirigeant' ;
   if (Currentcodetc == 1) strdirTitle = 'fondateur' ;
   if (Currentcodetc == 3) strdirTitle = 'administrateur' ;
 if ( Currentcodfjs == 3 )  {  // SA  

  // dir/fnd/adm/ pm 
  if (typeof(formname.frmTotalPMDIR)!='undefined')
  {
   var countpm = parseInt(formname.frmTotalPMDIR.value,10)
    
   for ( i = 1 ;  i <= countpm ;  i++ )
    {
    var RS=eval('formname.frmRSPMRAR'+i)
     if (RS.value =='') { ms ('Raison sociale du '+strdirTitle+' manquante') ; RS.focus() ; return false ; }
     }
   } 
} // end SA

// dir/fnd/adm/ ph
if (typeof(formname.frmTotalPHDIR)!='undefined')
{
 var countdir = parseInt(formname.frmTotalPHDIR.value,10)
  
 for ( i = 1 ;  i <= countdir ;  i++ )
  {
  var NOM=eval('formname.frmNOMPPHYARDIR'+i)
  var PRENOM=eval('formname.frmPNOMPHYARDIR'+i)
  
  if (typeof(NOM)!='undefined')
   {
    if (NOM.value =='') { ms ('Nom du '+strdirTitle+' manquant') ; NOM.focus() ; return false ; }
    if (PRENOM.value =='') { ms ('Prénom du '+strdirTitle+' manquant') ; PRENOM.focus() ; return false ; }
   }
   }
 } 
} // END SARL SA STEP 1
return true
}
