/* $Id: module-img-viewer-class-imageset.js 16503 2009-10-01 08:48:43Z jcwiklinski $ */
/**
Copyright (C) 2003-2009 AJLSM, Anaphore
Voir le fichier LICENCE
**/
/* Ce fichier de configuration fait partie de la distribution standard
de Pleade. Vous pouvez le modifier à votre guise. */
/**
	Classe PivImageSet.

	Cette classe représente les informations sur les différentes versions
	d'une image dans une série.
*/

// Création de la classe
var PivImageSet = Class.create();		// Utilitaire de la librairie Prototype
PivImageSet.prototype = {
	initialize: function(baseUrl, config) {
		this.versions = new Array();
		this.baseUrl = baseUrl;
		if ( config ) {
			this.no = config.no;
			if ( config.versions ) {
				config.versions.each(this._initVersion(this));
			}
			if (!this.getDefaultVersion()) this.setDefaultVersion(this.versions[0]);
			if (!this.getOriginalVersion()) this.setOriginalVersion(this.versions[this.versions.length-1]);
			if ( config.mosaic ) {
				this.mosaic = new PivMosaic(config.mosaic, this);
			}
		}
	},

	_initVersion: function(set) {
		return function(v) {
			var newV = new PivImageVersion(set.baseUrl, v);
			if (newV.getRole() == "default") set.setDefaultVersion(newV);
			if (newV.getRole() == "original") set.setOriginalVersion(newV);
			if ( newV.getRole() != 'miniature' )
				set.addVersion(newV);
		}
	},

	addVersion: function(v) {
		this.versions.push(v);
		var size = this.versions;
	},

	setDefaultVersion: function(v) {
		this.defaultVersion = v;
	},

	setOriginalVersion: function(v) {
		this.originalVersion = v;
	},

	getDefaultVersion: function() {
		return this.defaultVersion;
	},
	
	getOriginalVersion: function() {
		return this.originalVersion;
	},
	
	/**
	*	Retourne la liste des versions, sous la forme d'un vecteur d'objets
	*	PivImageVersion.
	*/
	getVersions: function() {
		return this.versions;
	},
	
	getMosaic: function() {
		return this.mosaic;
	},
	
	hasMosaic: function() {
		if (this.mosaic) return true;
		else return false;
	},
	
	setCurrentVersion: function(v) {
		this.currentVersion = v;
	},
	
	getCurrentVersion: function() {
		return this.currentVersion;
	},
	
	getOriginalRegion: function(region) {
		// On attend des propriétés x1, y1, x2, y2 dans region
		// On doit déterminer le ration entre la version affichée et l'originale
		var r = this.getCurrentVersion().getWidth() / this.getOriginalVersion().getWidth();
		return {x1: region.x1 / r, y1: region.y1 / r, x2: region.x2 / r, y2: region.y2 / r};
	},

	identify: function() {
		return "Classe PivImageSet";
	}
}
