/* ------------------------------------------ */
/* - (c) Vincent Fontaine && Arnaud Cebollada */
/* ------------------------------------------ */
/* - Version 1.2                              */
/* ------------------------------------------ */
function DateSlider(id) {
	this.width='600';
	this.height='60';

	this.slider_div=id; // id de la DIV qui doit contenir le flash
	this.d1='';
	this.d2='';
	this.extreme_d1='';  // le slider ne pourra jamais aller plus loin à gauche
	this.extreme_d2='';  // le slider ne pourra jamais aller plus loin à droite
	this.instance=''; // nom de l'instance du slider
	this.flash=''; // object DOM du flash

	this.xmlfile = 'xml2.xml?d1=2009-01-01&d2=2009-05-25';

	// adresse du fichier XML (local ou HTTP) utilisé pour l'update
	this.xmlupdt = 'xml2.xml?{d1}&{d2}';

	this.config = 'sweDateslider.xml'; // parametres de langues

	this.days_minimum=33; // nombre de jours minimum visible dans le slider
	this.days_visibility=50; // afficher les numéros des jours en bas jusqu'à 48 jours visibles
	this.days_monthghost=90; // les mois sont sélectionnables à partir de 90 jours visibles

	this.color_lite_days = '0x' + '00929F'; // jours en gris clair non sélectionnés
	this.color_dark_days = '0x' + '00929F'; // jours plus foncés (Lundi, premiers du mois etc..)
	this.color_selected_day = '0x' + '00929F'; // jours sélectionnés en bleu (73AEDF)
	this.color_dark_selected_day = '0x' + '00929F'; // jours sélectionnés en bleu plus foncé (336699)
	this.color_ghost = '0x' + '8A0346'; // couleur du fantome

	this.opacity_selector = 85; // opacité de la baque du sélecteur
	this.opacity_ghost = 8; // opacité de la baque du sélecteur
	this.opacity_cursors = 40; // opacité des curseurs

	var that = this;
	// ---------------------------------------------------------
	// Méthodes de la classe
	// ---------------------------------------------------------
	this.Display = function() {
		//alert(this.instance);

		flash_id = 'flash_'+that.slider_div;
		flash_width = that.width;
		flash_height = that.height;

		div_id = that.slider_div;

		var FlashVars = {
			"instance" : that.instance,		
			"d1" : that.d1,		
			"d2" : that.d2,		
			"extreme_d1" : that.extreme_d1,		
			"extreme_d2" : that.extreme_d2,		
			"xmlfile" : that.xmlfile,		
			"xmlupdt" : that.xmlupdt,		
			"config" : that.config,		
			"days_minimum" : that.days_minimum,		
			"days_visibility" : that.days_visibility,		
			"days_monthghost" : that.days_monthghost,		
			"color_lite_days" : that.color_lite_days,		
			"color_dark_days" : that.color_dark_days,		
			"color_selected_day" : that.color_selected_day,		
			"color_dark_selected_day" : that.color_dark_selected_day,		
			"color_ghost" : that.color_ghost,		
			"opacity_selector" : that.opacity_selector,		
			"opacity_ghost" : that.opacity_ghost,		
			"opacity_cursors" : that.opacity_cursors		
		};

		var FlashParams = {
			"quality":"high",
			"wmode":"window",
			"bgcolor": "#E8E8E8",
			"salign":"t",
			"devicefont":"false",
			"menu":"false",
			"allowFullScreen":"false",
			"allowScriptAccess":"sameDomain"
		};

		myKernel = new SWFInject(div_id, 'js/swelen_dateslider9.swf', flash_id, flash_width, flash_height, 8, FlashParams, FlashVars);

		// récupérer l'object flash dans le DOM de la page (Document Object Model)
		this.flash = '';
		if (document.getElementById(flash_id)) { this.flash=document.getElementById(flash_id); }
		
	}

	// injecter d1 et d2 dans le flash
	// Communication JS -> Flash
	this.SetPeriode = function(new_d1, new_d2) {
		if (this.flash=='') {alert('Unable to find DateSlider Object'); }
		obj = this.flash;
		obj.recadrage_dynamique(new_d1, new_d2);
	}


	this.LoadChunk = function(xml_d1, xml_d2) {
		if (this.flash=='') {alert('Unable to find DateSlider Object'); }
		obj = this.flash;
		obj.RefreshXML(xml_d1, xml_d2);
	}

	// ---------------------------------------------------------
	// Communication Flash -> JS
	// ---------------------------------------------------------
	this.onChange = function(d1, d2) {
	    // Cette fonction est appelée par le flash en fonction de la variable instance
	    // par exemple dans notre cas, instance peut prendre 2 valeurs : 'mySlider1' ou 'mySlider2'
	    //	""+instance+".onChange(d1, d2, nbdays);"
	}

	this.onComplete = function(d1, d2) {
		// Cette fonction est appelée par le flash en fonction de la variable instance
		// par exemple dans notre cas, instance peut prendre 2 valeurs : 'mySlider1' ou 'mySlider2'
		//	""+instance+".onChange(d1, d2, nbdays);"
	}
	// ---------------------------------------------------------

	return this;

}
