/**************************************************/
/* Ce fichier javascript ne sert qu'a valider les */
/* prono en CREATION de proposition par les       */
/* joueur
/* Script Reserve aux Prono DIVISIONS             */
/* version 1.0.0.0                                */
/**************************************************/

var cstePronoMoreBack=4;
var cstePronoClassement=1;
var cstePronoRencontre=2;
/*********************************************/
/* Verifier que le champ est bien un chiffre */
/* return: vrai si le champ est valide       */
/*********************************************/
function isNum(field) {
	var valid = "0123456789"
	var temp;
	for (var i=0; i<field.value.length; i++) {
		temp = "" + field.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1")
			return (false)
	}
	return (true)
}

/****************************************************/
/* Fonction qui verifie la validite d un format date*/
/****************************************************/
function verif_date(field)
{
var regex = new RegExp("[/-]");
var date = (field).split(regex)

var nbJours = new Array('',31,28,31,30,31,30,31,31,30,31,30,31);
var result = true;

if ( date['2']%4 == 0 && date['2']%100 > 0 || date['2']%400 == 0 )
nbJours['2'] = 29;

if( isNaN(date['2']) )
result=false;

if ( isNaN(date['1']) || date['1'] > 12 || date['1'] < 1 )
result=false;

if ( isNaN(date['0']) || date['0'] > nbJours[Math.round(date['1'])] || date['0'] < 1 )
result=false;

return result;
}

/***********************************************/
/* Controle si le format de l heure est valide */
/***********************************************/
function verif_time(field){
var regex = new RegExp("[:]");
var heure = (field).split(regex)
var result = true;


if ( isNaN(heure['0']) || heure['0'] > 23 || heure['0'] < 0 )
result=false;

if ( isNaN(heure['1']) || heure['1'] > 59 || heure['1'] < 0 )
result=false;

if ( isNaN(heure['2']) || heure['2'] > 59 || heure['2'] < 0 )
result=false;

return result;
}

/*************************************************************/
/* Fonction de controle si le prono de div a bien ete saisis */
/* Submit le form si tout est OK                             */
/*************************************************************/
function valideGrillePronoDivision() {
if(valideGrille()){
  /* controle si en moreback on a bien mis 9 */
  field=eval("document."+formNamePronoSegmentGeneral+".type_prono");
  field2=eval("document."+formNamePronoSegmentGeneral+"."+formNbLigneProno);
  if((field.value==cstePronoMoreBack) && (field2.value!=9)){ 
    alert('Attention: Un prono MoreBack doit comporter 9 ligne seulement !');
    field2.focus();
    return false;
  }
  /* je controle si lorque le prono est de type classement si le nombre de participant a trouver */
  /* est bien 6. En fait on informe le joueur juste au cas ous il se tromperait */
  if((field.value==cstePronoClassement) && (field2.value!=6)){ 
    alert('Attention: Un prono classement doit porter sur les 6 premiers seulement !');
    field.focus();
    return false;
  }  
  if(valideDateDiff()==false){
    
     return false;
  }
  /* Soumission du formulaire */
  eval("document."+formNamePronoSegmentGeneral+".submit()");
  }
}

/***************************************************************************************************************/
/* Fonction qui controle des parties commune de formulaire entre celui de type COupe et celui de type Division */
/* @return true si aucun probleme n'a ete detecté                                                              */
/***************************************************************************************************************/
function valideGrille() {
 var field
 var field2
/*********************************************************Partie heure et date OUVERTURE *****************************************************************/
/* Controle si date ouverture est servie*/
field=eval("document."+formNamePronoSegmentGeneral+"."+formDateOuverture)
if(field.value.length<1) {
  alert("Attention : Une date ouverture est obligatoire !");
  field.focus();
  return false;
}
/* Controle si heure ouverture est servie*/
field=eval("document."+formNamePronoSegmentGeneral+"."+formHeureOuverture)
if(field.value.length<1) {
  alert("Attention : Une heure d ouverture est obligatoire !");
  field.focus();
  return false;
}
/* Verification format date d ouverture */
field=eval("document."+formNamePronoSegmentGeneral+"."+formDateOuverture)
if(!verif_date(field.value)){
  alert("Attention : Date ouverture invalide !");
  field.focus();
  return false;
}
/* Verification format heure d ouverture */
field=eval("document."+formNamePronoSegmentGeneral+"."+formHeureOuverture)
if(!verif_time(field.value)){
  alert("Attention : Heure ouverture invalide !");
  field.focus();
  return false;
}


/*********************************************************Partie heure et date FERMETURE *****************************************************************/
/* Controle si date fermeture eest servie */
field=eval("document."+formNamePronoSegmentGeneral+"."+formDateFermeture)
if(field.value.length<1) {
  alert("Attention : Une date fermeture est obligatoire !");
  field.focus();
  return false;
}
/* Controle si heure de fermeture est servie */
field=eval("document."+formNamePronoSegmentGeneral+"."+formHeureFermeture)
if(field.value.length<1) {
  alert("Attention : Une heure de fermeture est obligatoire !");
  field.focus();
  return false;
}
/* Verification format date de fermeture */
field=eval("document."+formNamePronoSegmentGeneral+"."+formDateFermeture)
if(!verif_date(field.value)){
  alert("Attention : Date fermeture invalide !");
  field.focus();
  return false;
}
/* Verification format heure d ouverture */
field=eval("document."+formNamePronoSegmentGeneral+"."+formHeureFermeture)
if(!verif_time(field.value)){
  alert("Attention : Heure fermeture invalide !");
  field.focus();
  return false;
}
/*********************************************************Partie lignes de detail *****************************************************************/
/* Controle si ligne de detail servi ! */
 field=eval("document."+formNamePronoSegmentGeneral+"."+formNbLigneProno)
 if(field.value.length<1) {
   alert("Attention : Un nombre de ligne est obligatoire !");
   field.focus();
   return;
}
/* Controle si ligne de detail numerique  ! */
if (!isNum(field)) {
  alert("Attention : Un nombre de ligne est un chiffre !");
  field.focus();
  return false;
}

return true;
}


/* verifier que le champ n est pas null */
/* return vrai si null                 */
function isNull(field) {
 if(field.value.length<=0) {
  return (true);
  }
return (false);
}

/******************************************/
/* Valide la partie detail d'un prono en  */
/* mode creation. Valable pour les coupes */                        
/* mais aussi pour les pronos de division */
/* Controle que les equipes saisies pour  */
/* les rencontres ne soinet pas en double */
/******************************************/
function valideDetailCreationPronoListeRef() {
  var top_or
  top_or=0
  var i, j, val_pos_i,field
  // contrôle
  nbLigne=eval("document."+formNamePronoSegmentGeneral+"."+formNbLigneProno+".value");
  for(i = 1; i<=(nbLigne)*2; i++ ) {
	val_pos_i =eval("document."+formNamePronoSegmentGeneral+".libelle_equipe" + i+ ".selectedIndex"); 
	if (top_or!=1){
	  for (j = 1; j<= i-1; j++){
		if (eval("document."+formNamePronoSegmentGeneral+".libelle_equipe"+ j+ ".selectedIndex") == val_pos_i){
	   	 alert("Participant duplique");
    	 field=eval("document."+formNamePronoSegmentGeneral+".libelle_equipe"+ i);
    	 field.focus();
	     return;
		}
	  }
	}
  }
  
  eval("document."+formNamePronoSegmentGeneral+".submit()");
  return;
}
function valideDetailCreationPronoNoListeRef() {
    nbLigne=eval("document."+formNamePronoSegmentGeneral+"."+formNbLigneProno+".value");
    for(i = 1; i<=(nbLigne*2); i++ ) {
      field=eval("document."+formNamePronoSegmentGeneral+".libelle_equipe"+ i);
      if(isNull(field)){
		field.focus();
		field.select();
		alert('Saisir un nom d équipe ou de participant !');
		return false;
      }
    }
    //Faire le submit
  eval("document."+formNamePronoSegmentGeneral+".submit()");
  return;    
}

/*************************************************************************/
/* Cette fonction verifie que le delai est bien respecté. les joueurs    */
/* ne peuvant pas proposer des pronos                                    */
/* dont l'intervalle entre la date d'ouberture et fermeture est<48h      */
/*************************************************************************/
function valideDateDiff() {
date1 = new Date();
date2 = new Date();
diff  = new Date();

//alert(eval("document."+formNamePronoSegmentGeneral+"."+formDateOuverture+".value"));
//alert(eval("document."+formNamePronoSegmentGeneral+"."+formHeureOuverture+".value"));
var tabDateOuverture  = eval("document."+formNamePronoSegmentGeneral+"."+formDateOuverture+".value").split("-");
var tabHeureOuverture = eval("document."+formNamePronoSegmentGeneral+"."+formHeureOuverture+".value").split(":");

var tabDateFermeture  = eval("document."+formNamePronoSegmentGeneral+"."+formDateFermeture+".value").split("-");
var tabHeureFermeture = eval("document."+formNamePronoSegmentGeneral+"."+formHeureFermeture+".value").split(":");


date1temp = new Date(tabDateOuverture[2],tabDateOuverture[1],tabDateOuverture[0],tabHeureOuverture[0],tabHeureOuverture[1],tabHeureOuverture[2]);

date1.setTime(date1temp.getTime());


date2temp = new Date(tabDateFermeture[2],tabDateFermeture[1],tabDateFermeture[0],tabHeureFermeture[0],tabHeureFermeture[1],tabHeureFermeture[2]);
date2.setTime(date2temp.getTime());

// sets difference date to difference of first date and second date

diff.setTime(date2.getTime()- date1.getTime()  );

timediff = diff.getTime();
if(timediff>0){
  
   weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));
  timediff -= weeks * (1000 * 60 * 60 * 24 * 7);

  days = Math.floor(timediff / (1000 * 60 * 60 * 24)); 
  timediff -= days * (1000 * 60 * 60 * 24);

  hours = Math.floor(timediff / (1000 * 60 * 60)); 
  timediff -= hours * (1000 * 60 * 60);

  mins = Math.floor(timediff / (1000 * 60)); 
  timediff -= mins * (1000 * 60);

  secs = Math.floor(timediff / 1000); 
  timediff -= secs * 1000;

//  alert( weeks + " weeks, " + days + " days, " + hours + " hours, " + mins + " minutes, and " + secs + " seconds");
  if((days<=1) && (hours<23)){
    alert('Date de fermeture de votre prono trop courte');
    return false;
  }
}
else{
  alert('Date fermeture antérieur a date ouverture !');
  return false;
}
return true;
}

