function MWisDateValid(d) {
      // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
      // Le séparateur est défini dans la variable separateur      
      var separateur="/"; // separateur entre jour/mois/annee
      var j=(d.substring(0,2));
      var m=(d.substring(3,5));
      var a=(d.substring(6));
      var ok=1;
      if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {
          ok=0;
      }
      if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {
          ok=0;
      }
      if ( ((isNaN(a))) && (ok==1) ) {
          ok=0;
      }
      if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==1) ) {
          ok=0;
      }
      if (ok==1) {
         var d2=new Date(a,m-1,j);
         j2=d2.getDate();
         m2=d2.getMonth()+1;
         a2=d2.getFullYear();
         if (a2<=100) {a2=1900+a2}
         if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
            ok=0;
         }
      }
      return ok;
   }
   
//## Différence entre strDate1 et strDate2

function MWstrDateDiff(strDate1,strDate2,pattern){ // JJ/MM/AAAA
    var temp=(strDate1).split("/");
    var Date1 = new Date(parseInt(temp[2]), parseInt(temp[1]), parseInt(temp[0]));
    temp=(strDate2).split("/");
    var Date2 = new Date(parseInt(temp[2]), parseInt(temp[1]), parseInt(temp[0]));
    var diffpattern;
    var diff=(Date1-Date2);
    switch (i){ 
		case "d" :  // Day
			diffpattern=diff/86400000;
		break; 
		case "s" :  // seconde
			diffpattern=diff/1000;
		break;
		case "m" :  // minute
			diffpattern=diff/60000;
		break;
		case "h" :  // hour
			diffpattern=diff/3600000;
		break;
		default :
			diffpattern=diff;
		break;
	}    
    return diffpattern;
}
//## Différence entre Date1 et Date2

function DateDiff(Date1,Date2,pattern){ // JJ/MM/AAAA
	var diffpattern;
	var diff=(Date1-Date2);
	switch (i){ 
		case "d" :  // Day
			diffpattern=diff/86400000;
		break; 
		case "s" :  // seconde
			diffpattern=diff/1000;
		break;
		case "m" :  // minute
			diffpattern=diff/60000;
		break;
		case "h" :  // hour
			diffpattern=diff/3600000;
		break;
		default :
			diffpattern=diff;
		break;
	}		
	
    return diffpattern
}


function MWisFloatValid(chaineFloat){
    var myRE = new RegExp("(\\d+\\.?\\d*)", "gi");
    var results = chaineFloat.match(myRE);
    if (results!=null){
        if (results.length>0){
            return true;
        }else{
            return false;
        }
     }
     else{
        return false;
     }
}
function MWisStrNotNull(str){
    //alert('MWisStrNotNull');
    var myRE = new RegExp("(\\S+)", "gi");
    var results = str.match(myRE);
    if (results!=null){
        if (results.length>0){
            return true;
        }else{
            return false;
        }
     }
     else{
        return false;
     }
}

function MWControlField(str,typecontrole){
//alert('MWControlField');
switch (typecontrole) 
        { 
          case 'strnotnull' : 
            return MWisStrNotNull(str);
          break;         
          default :
            return false;              
          break;         
        }

}

function MWControlForm(){
    //alert('MWControlForm');
    MWGlobalLog.Init();    
    var FormElements=document.forms[0].elements;
    var result2=null;
    var isOneSelect=false;
    var intest=false;
    var returnresult=false;
    var isothertest=true;
    var testvalue=null;
    var isMWField=false;
    var inmsg='';    
    for (var j2=0;j2<=FormElements.length-1;j2++){        
        var myRE = new RegExp("(Customer_\\S+)", "gi");
        var results = FormElements[j2].id.match(myRE);
        if (results!=null){
            if (results.length>0)
            {
                isMWField=true;
                testvalue=FormElements[j2].getAttribute('test');
                if (testvalue!=null){
                    myRE = new RegExp("(\\|)", "gi");
                    result2 = testvalue.match(myRE);
                    if (result2!=null){
                        if (result2.length>0)
                        {
                           tsplit=testvalue.split("|");                           
                           for (var z2=0;z2<=tsplit.length-1;z2++){ 
                            intest=MWControlField(FormElements[z2].value,tsplit[z2]);
                            if (!intest){                               
                                inmsg=FormatError(tsplit[z2]);
                                MWGlobalLog.Add(inmsg);                                
                            }
                            isothertest=(isothertest &&  intest);
                           }
                           
                        }else{
                           intest=MWControlField(FormElements[j2].value,testvalue);
                           if (!intest){                            
                            inmsg=FormatError(testvalue);
                            MWGlobalLog.Add(inmsg);  
                           }
                           isothertest=(isothertest &&  intest);                           
                        }                        
                    }else{
                           intest=MWControlField(FormElements[j2].value,testvalue);
                           
                           if (!intest){                            
                            inmsg=FormatError(testvalue);
                            MWGlobalLog.Add(inmsg); 
                           }
                           isothertest=(isothertest &&  intest);  
                    }                   
                }          
            }
       
         }
         // cas particulier pour le roomprofile sans affectation de passager
        if (!isOneSelect){
	    var idtemp= FormElements[j2].id.replace(/\\s*/gi,"");		
            var myRE = new RegExp("(\\S+_\\S+_RoomProfile_.*_Select)", "gi");
            var results = idtemp.match(myRE);
            if (results!=null){
		//alert('idtemptest:' +  idtemp);
                if (results.length>0){
                   // if (FormElements[j2].options[FormElements[j2].selectedIndex].value){
                   // alert(FormElements[j2].id + '-' + FormElements[j2].options[FormElements[j2].selectedIndex].value );  
                    if (FormElements[j2].options[FormElements[j2].selectedIndex].value!='0'){
                        isOneSelect=true;
                    }          
                }           
             }
         }
        if (isMWField){
            MWGlobalLog.Display(document.getElementById(FormElements[j2].getAttribute("error")));
            MWGlobalLog.Init();
        }
    }
    if (!isOneSelect){
        inmsg=FormatError('isOneSelect');
    }else{
        inmsg='';
    }
    MWGlobalLog.Add(inmsg); 
    MWGlobalLog.Display(document.getElementById("RoomProfile_Error"));
    MWGlobalLog.Init();
    
   
    //alert('isOneSelect:'+isOneSelect+ ' --isothertest:'+ isothertest);
    returnresult=(isOneSelect && isothertest);        
    return returnresult;
}
function MWlog(){
    this.msg;   
    this.countRecurs=0;
    this.Add = function Add(str){  
        //alert('MWlog:ADD');        
       if (this.msg==''){
            this.msg= this.msg + str;
        }else{
            this.msg=this.msg + '<br>' + str;
        }         
    }
    this.Init = function Init(){
       //alert('MWlog:INIT');    
       this.msg='';
    }
    this.Display = function Display(elem){
        //alert('MWlog:Display');
        if (elem!=null){
                elem.innerHTML="";
        }         
        if  (this.msg!=''){
            var oImg = document.createElement("img");   
            var oElem=elem.appendChild(oImg); 
            oElem.setAttribute("src","img/alert.jpg");
            oElem.setAttribute("border","0");
            oElem.setAttribute("alt",this.msg);
        }
    }    
}
function FormatError(typecontrole){
    //alert('FormatError:'+typecontrole)
    switch (typecontrole) 
        { 
          case 'strnotnull' : 
            //alert('cas1');
            return 'ce champs est obligatoire';
          break;
          case 'isOneSelect' :
            //alert('cas2'); 
            return 'Vous devez choisir au moins une chambre';
          break;          
          default :
            //alert('cas3');
            return 'erreur inconnue';              
          break;         
        }

}

var MWGlobalLog=new MWlog();
MWGlobalLog.Init();
