// =====================================================================
// $Revision: 1.4 $

var ws_SS_collection = new Array();

function wsSlideshow() {
	var args = wsSlideshow.arguments; var len = args.length;
	
	 // object attributes - ok to set directly
	this._obj_photo		  = args[0]; // required
	this.photoData		  = args[1]; // required
	this.photoPos	      = len > 2 ? args[2] : 0;
	this.display_time     = len > 3 ? args[3] : 5;
	this.photo_name		  = len > 4 ? args[4] : 'unknownPhoto';
	this.transition_span_name = len > 5 ? args[5] : 5;
	this.title_name		  = len > 6 ? args[6] : '';
	this.caption_name 	  = len > 7 ? args[7] : '';
	this.time_select_name = len > 8 ? args[8] : 'slidetimeselect';
	this.time_timer_name  = len > 9 ? args[9] : 'slidetimer';
	this.time_form_name   = len > 10 ? args[10] : 'slideform';		
	
	 // object state
	this._init       = 0;
	this._is_playing = 0;
	this._class_id   = ws_SS_ClassAddSlide(this);
	this._d          = typeof(debug)!="undefined" && ( typeof(debug_which)=="undefined" || debug_which.indexOf("wsSlideshow")!=-1 );
}

wsSlideshow.prototype.Init = function () {
	if ( this._init ) { return; }
	var args = arguments; var len = args.length;
	
	this._is_playing = len > 0 ? args[0] : this._is_playing;

	if ( document.getElementById ) {
		this._supports_gebi = 1;
		this._elem_slidetimeselect = document.getElementById(this.time_select_name);
		this._elem_slidetimer      = document.getElementById(this.time_timer_name);
		this._elem_transition_span = document.getElementById(this.transition_span_name);
		this._elem_title_div = document.getElementById(this.title_name);
		this._elem_caption_div = document.getElementById(this.caption_name);
		this._elem_photo = document.getElementById(this.photo_name);
	}
	else if ( eval("document."+this.time_form_name) ) {
		if ( this._d ) { debug += "[wsSlideshow] Form " + this.time_form_name + " found.\n"; }
		this._suppors_direct = 1;
		this._elem_slidetimeselect = eval("document."+this.time_form_name+"."+this.time_select_name);
		this._elem_slidetimer      = eval("document."+this.time_form_name+"."+this.time_timer_name);
		this._elem_transition_span = eval("document.all."+this.transition_span_name);
		this._elem_title_div = eval("document.all."+this.title_name);
		this._elem_caption_div = eval("document.all."+this.caption_name);
		this._elem_photo = eval("document.all."+this.photo_name);
	}

	btn_play.Init(); btn_pause.Init(); btn_prev.Init(); btn_next.Init();
	
	var slide = this;
	var d = this._d;
	if ( this._elem_slidetimeselect ) { this._elem_slidetimeselect.onchange   = function() { slide.SetTime(this.options[this.selectedIndex].value); this.blur(); }; }
	if ( this.btn_play._good )  { this.btn_play.obj_photo.elem_photo.onclick  = function() { slide.Play(); }; }
	if ( this.btn_pause._good ) { this.btn_pause.obj_photo.elem_photo.onclick = function() { slide.Pause(); }; }
	if ( this.btn_prev._good )  { this.btn_prev.obj_photo.elem_photo.onclick  = function() { slide.btn_prev.Activate(); slide.PrevSlide(); }; }
	if ( this.btn_next._good )  { this.btn_next.obj_photo.elem_photo.onclick  = function() { slide.btn_next.Activate(); slide.NextSlide(); }; }
	
	var e = this._elem_slidetimeselect;	
	for (var i=0; i<e.options.length; i++) {
		if (e.options[i].value == this.display_time) {
			e.selectedIndex=i; 
			break;
		}
	}
	
	this._time_left = this.display_time;
	this._init = 1;
	this.DisplayTimeLeft();

	if ( this._is_playing ) { this._is_playing = 0; this.Play(); }
	else                    { this._is_playing = 1; this.Pause(); }
	setInterval( "ws_SS_ClassMoveTimer("+this._class_id+");", 1000*1);
}

wsSlideshow.prototype.Play = function () {
	if ( ! this._is_playing ) {
		this._is_playing = 1;
		this.btn_play.Activate();
		this.btn_pause.Deactivate();
	}
}

wsSlideshow.prototype.Pause = function () {
	if ( this._is_playing ) {
		this._is_playing = 0;
		this.btn_pause.Activate();
		this.btn_play.Deactivate();
		this.DisplayTimeLeft();
	}
}

wsSlideshow.prototype.SetButtons = function () {
	var args = arguments; var len  = args.length;	
	this.btn_play  = len > 0 ? args[0] : undefined;
	this.btn_pause = len > 1 ? args[1] : undefined;
	this.btn_prev  = len > 2 ? args[2] : undefined;
	this.btn_next  = len > 3 ? args[3] : undefined;		
}

wsSlideshow.prototype.SetSelectName = function (n) { this.time_select_name = n; }
wsSlideshow.prototype.SetTimerName = function (n) { this.time_timer_name = n; }
wsSlideshow.prototype.SetTime = function (t) { this.display_time = this._time_left = t; this.DisplayTimeLeft(); }

wsSlideshow.prototype.NextSlide = function () {
	this.photoPos = (this.photoPos + 1) % this.photoData.length;
	this.btn_next.Deactivate();
	this.ChangePhoto();
}

wsSlideshow.prototype.PrevSlide = function () {
	this.photoPos = (this.photoPos - 1 + this.photoData.length) % this.photoData.length;
	this.btn_prev.Deactivate();
	this.ChangePhoto();
}

ChangePhotoDone = function (cid) {
	this_obj_slide = ws_SS_collection[cid];
	
	if (this_obj_slide.title_name.length)
		this_obj_slide._elem_title_div.innerHTML="&nbsp;";
	if (this_obj_slide.caption_name.length)
		this_obj_slide._elem_caption_div.innerHTML="&nbsp;";

	hasFilter = this_obj_slide._elem_transition_span && this_obj_slide._elem_transition_span.filters && 
		this_obj_slide._elem_transition_span.filters[0];

	if (hasFilter)
		this_obj_slide._elem_transition_span.filters[0].apply();

	if (this_obj_slide.title_name.length)
		this_obj_slide._elem_title_div.innerHTML=this_obj_slide.photoData[this_obj_slide.photoPos][3]+"&nbsp;";
	if (this_obj_slide.caption_name.length)
	{
		var caption = this_obj_slide.photoData[this_obj_slide.photoPos][4];
		if (caption.length)
			caption += " - ";
		caption += "photo "+(this_obj_slide.photoPos+1)+" sur "+this_obj_slide.photoData.length;
		this_obj_slide._elem_caption_div.innerHTML=caption+"&nbsp;";
	}
	
	this_obj_slide._elem_photo.src=this_obj_slide.photoData[this_obj_slide.photoPos][0];	
	this_obj_slide._elem_photo.width=this_obj_slide.photoData[this_obj_slide.photoPos][1];
	this_obj_slide._elem_photo.height=this_obj_slide.photoData[this_obj_slide.photoPos][2];

	this_obj_slide._obj_photo.SetAbsSize(this_obj_slide._elem_photo.width, this_obj_slide._elem_photo.height);
	this_obj_slide._obj_photo.Resize();

	if (hasFilter)
		this_obj_slide._elem_transition_span.filters[0].play();
	this_obj_slide._changingPhoto = 0;
}

wsSlideshow.prototype.ChangePhoto = function () {
	this._changingPhoto = 1;
	if (arguments.length)
		this.photoPos=arguments[0];
		
	if (this.title_name.length)
		this._elem_title_div.innerHTML="Chargement de la photo, veuillez patienter S.V.P...";
	if (this.caption_name.length)
		this._elem_caption_div.innerHTML="&nbsp;";

	temp = new Image();
	temp.onload = new Function("ChangePhotoDone("+this._class_id+");");

	temp.src = this.photoData[this.photoPos][0];
}

wsSlideshow.prototype.DisplayTimeLeft = function () {
	if ( this._elem_slidetimer ) { this._elem_slidetimer.value = this._time_left; }
}

wsSlideshow.prototype.MoveTimer = function () {
	this.DisplayTimeLeft();
	if ((this._time_left == 0) && this._is_playing) {
		this.NextSlide();
		this._time_left = this.display_time;
	}
	else if ( this._is_playing && !this._changingPhoto) {
		this._time_left--;
	}	
}


// wsSlideshow Class Methods

function ws_SS_ClassMoveTimer(cid) {ws_SS_collection[cid].MoveTimer(); }
function ws_SS_ClassAddSlide(obj)  {var id = ws_SS_collection.length; ws_SS_collection[id] = obj; return id; }
