//--------------------------------------------------------------------------------------

// Calendrier (c) Serge (DarkSide) - Djibouti 2002  - 

// Contact : sergebertet@voila.fr - http://www.merrouge.com/serge.htm

//

// Saisie d'une date dans un calendrier.

// ------------------------------------

// Utilisation :

// Insérer le script dans l'entête du source HTML.

// Placer, dans un formulaire nommé, le champs texte nommé destiné à recevoir la date

// avec pour évènement souris ou clavier l'appel : MyGetDate(this);

// Exemple de source HTML : 

/*



 <HTML>

 <HEAD>

 <script src="calendar.js"></script>

 </HEAD>

 <BODY>

 <form name="NomDuFormulaire">

 <input type="texte" size="10" name="DateDeDebut" onClick="MyGetDate(this);">

 <input type="texte" size="10" name="DateDeFin" onClick="MyGetDate(this);">

 </form>

 </BODY>

 </HTML>



*/

// Format de retour :

// La date renvoyée est de type texte sous la forme jj/mm/aaaa

//

// Nota : Ne fonctionne que pour Internet Explorer.

// ToDo : Rendre la fenêtre du calendrier Modale et dépendante de Opener

//

// Vous pouvez, bien sûr, utiliser ce script dans vos pages et ... 

// me donner l'adresse pour que je voies ce que ça donne et ...

// ce serait sympa de bien vouloir laisser les commentaires et ... c'est tout ... bon script.

//-------------------------------------------------------------------------------------------



function MyGetDate(champs) {

IE = !(document.all?0:1);

NS = !IE;

dest = champs;

if (IE) { 

// Taille du calendrier

  larg = 250; 

  Long = 188;

  posX = event.screenX; posY = event.screenY;

  if (posX+larg > screen.width) posX = screen.width - larg;

  if (posY+Long > screen.height) posY = screen.height - Long;

  eval("maFen = window.open('','','top='+posY+',left='+posX+',width="+larg+",height="+Long+"');");

  maFen.focus();

  dessine();

  } 

}



function dessine() {

txt = '\n\n\n<!--\n\nAuteur : DarkSide <sergebertet@voila.fr> - http://www.merrouge.com/serge.htm \n\n';

txt += 'Ce script est disponible à l\'adresse : http://www.merrouge.com/calendar.zip \n\n-->\n\n\n';

txt += '<html><head><title>Choisissez une date.</title>\n';

txt += '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n';

txt += '<script>\n';

txt += 'var now = new Date();\nIE = !(document.all?0:1);\nNS = !IE;\n';

txt += 'months = new Array(\'Janvier\',\'Février\',\'Mars\',\'Avril\',\'Mai\',\'Juin\',\'Juillet\',\'Août\',\'Septembre\',\'Octobre\',\'Novembre\',\'Décembre\');\n';

txt += 'mois = now.getMonth();\nan = now.getFullYear();\njour = now.getDate();\nvide = "...";\n \n';



// Affectation des dates aux bouttons

txt += 'function init() {\n';

txt += 'document.calendar.curMonth.value = months[mois] + " " + an;\n';

txt += 'document.calendar.curMonth.readOnly = true;\n';

txt += 'now.setMonth(mois);\n';

txt += 'now.setYear(an);\n';

txt += 'now.setDate(1);\n';

txt += 'for (i=0;i<now.getDay();i++) { eval("document.calendar.b"+0+i+".value = \' " + vide + " \' ;"); }\n';

txt += 'for (i=now.getDay();i<7;i++) {\n';

txt += '	    jour = "0"+now.getDate();\n';

txt += '		eval("document.calendar.b"+0+i+".value = \' "+jour+" \';");\n';

txt += '		now.setDate(now.getDate()+1);\n';

txt += '		}\n';

txt += 'for (j=1;j<6;j++) {\n';

txt += '	for (i=0;i<7;i++) {\n';

txt += '		if (jour==vide || now.getDate() < jour) { jour = vide; } else { jour = now.getDate(); }\n';

txt += '		if (jour < 10) { jour = "0"+jour; }\n';

txt += '		eval("document.calendar.b"+j+i+".value = \' "+jour+" \' ;");\n';

txt += '		now.setDate(now.getDate()+1);\n';

txt += '		}\n';

txt += '	}\n';

txt += '}\n\n';



// Mois suivant

txt += 'function next() {\n';

txt += 'if (mois == 11) { mois = 0; an = an + 1; } else { mois += 1; }\n';

txt += 'init();\n';

txt += '}\n\n';



// Mois précédent

txt += 'function prev() {\n';

txt += 'if (mois == 0) { mois = 11; an -= 1; } else { mois -= 1; }\n';

txt += 'init();\n';

txt += '}\n\n';



// 

txt += 'function lz(valeur) { if (valeur < 10) return("0"+valeur); else return(valeur); }\n\n';



// retour et fermeture du calendrier

txt += 'function done(but) {\n';

txt += 'txt = but.value.substr(1,2);\n';

txt += 'if (txt == vide.substr(1,2)) return;\n';



/*

   Si on veut l'année sur 2 digits, ajouter ligne suivante :

   txt += 'an = an+""; an = an.substr(2,2);'; // Y2K compliant :o) comme ils disent là-bas.

*/

txt += 'txt = an+"-"+lz(mois+1)+"-"+txt;\n';

txt += 'opener.document.' + dest.form.name + '.' + dest.name + '.value = txt;\n';

txt += 'window.close();\n';

txt += '}\n';



txt += '</script>\n</head>\n<style>\n';

txt += 'td { color: #000000; font-weight: bold; font-family : Arial; font-size:60%; text-align: center; }\n';



// Couleur des boutons

txt += 'input { cursor: hand; font-weight: bold; text-align: center; color: #000000; background-color: silver; }\n';



// Texte

txt += 'td { font-size: 14px; }\n';



// Couleurs de fond de table et de document

txt += 'body { background: white; }\n';

txt += 'table { background: #FFFFCC; }\n</style>\n';

txt += '<body leftmargin="0" topmargin="0"; onLoad="init();">\n';

txt += '<form name="calendar">\n';

txt += '<table border="0" cellspacing="0" cellpadding="0" bgcolor="#00CCFF" align=center>\n';

txt += '<tr><td>Dim</td><td>Lun</td><td>Mar</td><td>Mer</td><td>Jeu</td><td>Ven</td><td>Sam</td></tr>\n';



// Création des bouttons

for (i=0;i<6;i++) {

  txt += '<tr>\n';

  for (j=0;j<7;j++) {

	txt += '<td><input type="button" name="b'+i+j+'" onclick="done(this)"></td>\n';

    }

  txt += '</tr>\n';

  } 

txt += '<tr><td>\n';

txt += '<input type="button" name="bk" value="<< " onclick="prev()"></td><td colspan=5>\n';

txt += '<input type="text" name="curMonth" size="20">\n';

txt += '</td><td><input type="button" name="bk" value=" >>" onclick="next()">\n';

txt += '</td></tr></table></form></body>\n';



// Création de la page

txt += '<script>\n';

txt += 'init();\n';

txt += '</script></html>\n';

maFen.document.write(txt);

}


function isDateValid(chaineDate) {

 // CONTROLE LA VALIDITE D UN CHAMP DATE
 //alert(chaineDate);
 if (chaineDate == "") return false;
 var ladate = (chaineDate).split("-");

 if ((ladate.length != 3) || isNaN(parseInt(ladate[0])) || isNaN(parseInt(ladate[1])) || isNaN(parseInt(ladate[2]))) 
 		return false;

 var unedate = new Date(eval(ladate[0]),eval(ladate[1])-1,eval(ladate[2]));

 var annee = unedate.getYear();
 if ((Math.abs(annee)+"").length < 4) annee = annee + 1900;
 //return(true);
 return ((unedate.getDate() == eval(ladate[2])) && (unedate.getMonth() == eval(ladate[1])-1) && (annee == eval(ladate[0])))
 } 




