/*
    This file is part of JonDesign's SmoothGallery v1.2.

    JonDesign's SmoothGallery is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    JonDesign's SmoothGallery is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with JonDesign's SmoothGallery; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

    Main Developer: Jonathan Schemoul (JonDesign: http://www.jondesign.net/)
    Contributed code by:
    - Christian Ehret (bugfix)
	- Nitrix (bugfix)
	- Valerio from Mad4Milk for his great help with the carousel scrolling and many other things.
	- Archie Cowan for helping me find a bugfix on carousel inner width problem.
	Many thanks to:
	- The mootools team for the great mootools lib, and it's help and support throughout the project.
*/


// declaring the class
var gallery = new Class({
	initialize: function(element, carouselElt, options) {
		this.setOptions({
		  carouselAutohide: false, 
			showArrows: true,
			showCarousel: true,
			showInfopane: false,
			embedLinks: true,
			fadeDuration: 500,
			timed: false,
			delay: 9000,
			preloader: true,
			/* Data retrieval */
			manualData: [],
			populateFrom: false,
			populateData: true,
			destroyAfterPopulate: true,
			elementSelector: "div.imageElement",
			titleSelector: "h3",
			/*[mod]*/
			idSelector: "h4",
			subtitleSelector: "p",
			linkSelector: "a.open",
			imageSelector: "img.full",
			thumbnailSelector: "img.thumbnail",
			/* InfoPane options */
			slideInfoZoneOpacity: 0.7,
			slideInfoZoneSlide: true,
			/* Carousel options */
			carouselMinimizedOpacity: 0.9,
			carouselMinimizedHeight: 20,
			carouselMaximizedOpacity: 0.9,
			thumbHeight: 75,
			thumbWidth: 100,
			thumbSpacing: 5,
			thumbOpacity: 0.6,
			textShowCarousel: 'Photos',
			showCarouselLabel: false,
			useThumbGenerator: false,
			thumbGenerator: 'resizer.php',
			useExternalCarousel: false,
			carouselElement: false,
			activateCarouselScroller: true,
			/* CSS Classes */
			baseClass: 'jdGallery',
			withArrowsClass: 'withArrows',
			/* Plugins: HistoryManager */
			useHistoryManager: false,
			galType:"vo",
			customHistoryKey: false
		}, options);
		this.fireEvent('onInit');
		this.currentIter = 0;
		this.lastIter = 0;
		this.maxIter = 0;
		this.galleryElement = element;
		this.carouselElt = carouselElt;
		this.galleryData = this.options.manualData;
		this.galleryInit = 1;
		this.galleryElements = Array();
		this.thumbnailElements = Array();
		this.galleryElement.addClass(this.options.baseClass);
		// [mod]
		this.maxVehicTip = 2;
		
		this.populateFrom = element;
		if (this.options.populateFrom)
			this.populateFrom = this.options.populateFrom;		
		if (this.options.populateData)
			this.populateData();
		element.style.display="block";
		
		if (this.options.useHistoryManager)
			this.initHistory();
		
		/*if (this.options.embedLinks)
		{
			this.currentLink = new Element('a').addClass('open').setProperties({
				href: '#',
				title: ''
			}).injectInside(element);
			if ((!this.options.showArrows) && (!this.options.showCarousel))
				this.galleryElement = element = this.currentLink;
			else
				this.currentLink.setStyle('display', 'none');
		}*/
		
		this.constructElements();
		if ((this.galleryData.length>1)&&(this.options.showArrows))
		{
			var leftArrow = new Element('a').addClass('left').addEvent(
				'click',
				this.prevItem.bind(this)
			).injectInside(element);
			var rightArrow = new Element('a').addClass('right').addEvent(
				'click',
				this.nextItem.bind(this)
			).injectInside(element);
			this.galleryElement.addClass(this.options.withArrowsClass);
		}
		this.loadingElement = new Element('div').addClass('loadingElement').injectInside(element);
		if (this.options.showInfopane) this.initInfoSlideshow();
		if (this.options.showCarousel) this.initCarousel();
		this.doSlideShow(1);
	},
	populateData: function() {
		currentArrayPlace = this.galleryData.length;
		options = this.options;
		var data = this.galleryData;
		this.populateFrom.getElements(options.elementSelector).each(function(el) {
			elementDict = {
				image: el.getElement(options.imageSelector).getProperty('src'),
				number: currentArrayPlace,
				/*[mod]*/
				idVehicule: el.getElement(options.idSelector).innerHTML
			};
			//alert(elementDict.image);
			
			if ((options.showInfopane) | (options.showCarousel)) {
				if (!el.getElement(options.titleSelector)) var temptitle = "";
				else var temptitle = el.getElement(options.titleSelector).innerHTML;
				if (!el.getElement(options.subtitleSelector)) var tempsubtitle = "";
				else var tempsubtitle = el.getElement(options.subtitleSelector).innerHTML;

        Object.extend(elementDict, {
					title: temptitle,
					description: tempsubtitle					
				});
			}
			if (options.embedLinks)
				Object.extend(elementDict, {
					link: el.getElement(options.linkSelector).href||false,
					linkTitle: el.getElement(options.linkSelector).title||false
				});
			if ((!options.useThumbGenerator) && (options.showCarousel))
				Object.extend(elementDict, {
					thumbnail: el.getElement(options.thumbnailSelector).src,
					titre: el.getElement(options.thumbnailSelector).title
				});
			else if (options.useThumbGenerator)
				Object.extend(elementDict, {
					thumbnail: options.thumbGenerator + '?imgfile=' + elementDict.image + '&max_width=' + options.thumbWidth + '&max_height=' + options.thumbHeight
				});
			
			data[currentArrayPlace] = elementDict;
			currentArrayPlace++;
			if (this.options.destroyAfterPopulate)
				el.remove();
		});
		this.galleryData = data;
		this.fireEvent('onPopulated');
	},
	constructElements: function() {
	//alert('dans constructElement');
		el = this.galleryElement;
		this.maxIter = this.galleryData.length;
		var currentImg;
/*		for(i=0;i<this.galleryData.length;i++)
		{
			var currentImg = new Fx.Style(
				new Element('div').addClass('slideElement').setStyles({
					'position':'absolute',

					'backgroundImage':"url('" + this.galleryData[i].image + "')",
					'opacity':'0'
				}).injectInside(el),
				'opacity',
				{duration: this.options.fadeDuration}
			);
			this.galleryElements[parseInt(i)] = currentImg;
		}*/
	},
	destroySlideShow: function(element) {
		var myClassName = element.className;
		var newElement = new Element('div').addClass('myClassName');
		element.parentNode.replaceChild(newElement, element);
	},
	startSlideShow: function() {
		this.fireEvent('onStart');
		this.loadingElement.style.display = "none";
		this.lastIter = this.maxIter - 1;
		this.currentIter = 0;
		this.galleryInit = 0;
/*		this.galleryElements[parseInt(this.currentIter)].set(1);*/
		if (this.options.showInfopane)
			this.showInfoSlideShow.delay(1000, this);
		this.prepareTimer();
		if (this.options.embedLinks)
			this.makeLink(this.currentIter);
	},
	nextItem: function() {
		this.fireEvent('onNextCalled');
		this.nextIter = this.currentIter+1;
		if (this.nextIter >= this.maxIter)
			this.nextIter = 0;
		this.galleryInit = 0;
		this.goTo(this.nextIter);
	},
	prevItem: function() {
		this.fireEvent('onPreviousCalled');
		this.nextIter = this.currentIter-1;
		if (this.nextIter <= -1)
			this.nextIter = this.maxIter - 1;
		this.galleryInit = 0;
		this.goTo(this.nextIter);
	},
	goTo: function(num) {
		this.clearTimer();
		if (this.options.embedLinks)
			this.clearLink();
		if (this.options.showInfopane)
		{
			this.slideInfoZone.clearChain();
			this.hideInfoSlideShow().chain(this.changeItem.pass(num, this));
		} else
			this.changeItem.delay(500, this, num);
		if (this.options.embedLinks)
			this.makeLink(num);
		this.prepareTimer();
					// mod ringerge.org
          if (this.options.carouselAutohide) {
                this.fireEvent('onHideCarousel');
          }
          // mod ringerge.org		
		/*if (this.options.showCarousel)
			this.clearThumbnailsHighlights();*/
	},
	changeItem: function(num) {
		this.fireEvent('onStartChanging');
		this.galleryInit = 0;
		if (this.currentIter != num)
		{
			for(i=0;i<this.maxIter;i++)
			{
				if ((i != this.currentIter)) this.galleryElements[i].set(0);
			}
			if (num > this.currentIter) this.galleryElements[num].custom(1);
			else
			{
				this.galleryElements[num].set(1);
				this.galleryElements[this.currentIter].custom(0);
			}
			this.currentIter = num;
		}
		this.doSlideShow.bind(this)();
		this.fireEvent('onChanged');
	},
	clearTimer: function() {
		if (this.options.timed)
			$clear(this.timer);
	},
	prepareTimer: function() {
		if (this.options.timed)
			this.timer = this.nextItem.delay(this.options.delay, this);
	},
	doSlideShow: function(position) {
		if (this.galleryInit == 1)
		{
			imgPreloader = new Image();
			imgPreloader.onload=function(){
				this.startSlideShow.delay(10, this);
			}.bind(this);
			imgPreloader.src = this.galleryData[0].image;
		} else {
			if (this.options.showInfopane)
			{
				if (this.options.showInfopane)
				{
					this.showInfoSlideShow.delay((500 + this.options.fadeDuration), this);
				} else
					if ((this.options.showCarousel)&&(this.options.activateCarouselScroller))
						this.centerCarouselOn(position);
			}
		}
	},
	initCarousel: function () {
		var carouselElement;
		if (!this.options.useExternalCarousel)
		{
			//var carouselContainerElement = new Element('div').addClass('carouselContainer').injectInside(this.galleryElement);
			var carouselContainerElement = new Element('div').addClass('carouselContainer').injectInside(this.carouselElt);
			this.carouselContainer = new Fx.Styles(carouselContainerElement, {transition: Fx.Transitions.expoOut});
			this.carouselContainer.normalHeight = carouselContainerElement.offsetHeight;
			this.carouselContainer.set({'opacity': this.options.carouselMinimizedOpacity, 'top': (this.options.carouselMinimizedHeight - this.carouselContainer.normalHeight)});
			/*this.carouselBtn = new Element('a').addClass('carouselBtn').setProperties({
				title: this.options.textShowCarousel
			}).setHTML(this.options.textShowCarousel).injectInside(carouselContainerElement);
			
			this.carouselBtn.addEvent(
				'click',
				function () {
					this.carouselContainer.clearTimer();
					this.toggleCarousel();
				}.bind(this)
			);*/
			this.carouselActive = false;
	
			carouselElement = new Element('div').addClass('carousel').injectInside(carouselContainerElement);
			this.carousel = new Fx.Styles(carouselElement);
		} else {
			carouselElement = this.options.carouselElement.addClass('jdExtCarousel');
		}
		this.carouselElement = new Fx.Styles(carouselElement, {transition: Fx.Transitions.expoOut});
		this.carouselElement.normalHeight = carouselElement.offsetHeight;
		if (this.options.showCarouselLabel)
			this.carouselLabel = new Element('p').addClass('label').injectInside(carouselElement);
		carouselWrapper = new Element('div').addClass('carouselWrapper').injectInside(carouselElement);
		this.carouselWrapper = new Fx.Styles(carouselWrapper, {transition: Fx.Transitions.expoOut});
		this.carouselWrapper.normalHeight = carouselWrapper.offsetHeight;
		this.carouselInner = new Element('div').addClass('carouselInner').injectInside(carouselWrapper);
		if (this.options.activateCarouselScroller)
		{
			this.carouselWrapper.scroller = new Scroller(carouselWrapper, {
				area: 100,
				velocity: 0.2
			})
			
			this.carouselWrapper.elementScroller = new Fx.Scroll(carouselWrapper, {
				duration: 400,
				onStart: this.carouselWrapper.scroller.stop.bind(this.carouselWrapper.scroller),
				onComplete: this.carouselWrapper.scroller.start.bind(this.carouselWrapper.scroller)
			});
		}
		this.constructThumbnails();
		this.carouselInner.normalWidth = ((this.maxIter * (this.options.thumbWidth + this.options.thumbSpacing + 2))+this.options.thumbSpacing) + "px";
		
		// mod ringerge.org
		if (!this.options.useExternalCarousel) {
			this.carouselInner.style.width = this.carouselInner.normalWidth;
		}
		// this.carouselInner.style.width = this.carouselInner.normalWidth;
		// mod ringerge.org

	},
	toggleCarousel: function() {
		if (this.carouselActive)
			this.hideCarousel();
		else
			this.showCarousel();
	},
	showCarousel: function () {
		this.fireEvent('onShowCarousel');
		this.carouselContainer.custom({
			'opacity': this.options.carouselMaximizedOpacity,
			'top': 0
		}).addEvent('onComplete', function() { this.carouselActive = true; this.carouselWrapper.scroller.start(); }.bind(this));
	},
	hideCarousel: function (galtype) {
	// mod ringerge.org
	if (this.carouselContainer) {
		this.fireEvent('onHideCarousel');
		var targetTop = this.options.carouselMinimizedHeight - this.carouselContainer.normalHeight;
		this.carouselContainer.custom({
			'opacity': this.options.carouselMinimizedOpacity,
			'top': targetTop
		}).addEvent('onComplete', function() { this.carouselActive = false; this.carouselWrapper.scroller.stop(); }.bind(this));
	} // mod ringerge.org
	},
	constructThumbnails: function () {
		element = this.carouselInner;
		for(i=0;i<this.galleryData.length;i++)
		{
			var elem = new Element ('div').addClass("thumbnail").setStyles({
					//backgroundImage: "url('" + this.galleryData[i].thumbnail + "')",
					//backgroundPosition: "center center",
					//backgroundRepeat: 'no-repeat',
					marginLeft: this.options.thumbSpacing + "px",
					width: this.options.thumbWidth + "px",
					height: this.options.thumbHeight + "px"
				});
				
			var img = new Element ('img').setStyles({
					marginLeft: this.options.thumbSpacing + "px"
			});
			img.src = this.galleryData[i].thumbnail;
			img.alt = this.galleryData[i].alt;
			img.title = this.galleryData[i].title;		

			elem = elem.appendChild(img);
			
			var currentImg = new Fx.Style(elem.injectInside(element), "opacity", {duration: 200}).set(options.thumbOpacity);

			currentImg.element.addEvents({
				'mouseover': function (myself) {						
					//this.style.cursor = 'pointer';
					//$ES(".carouselInner img")[myself.relatedImage.number].style.cursor = "pointer";
					myself.clearTimer();
					myself.custom(0.99);
					if (this.options.showCarouselLabel)
						$(this.carouselLabel).setHTML('<span class="number">' + (myself.relatedImage.number + 1) + "/" + this.maxIter + ":</span> " + myself.relatedImage.title);
					this.showTip(myself.relatedImage.number);								
				}.pass(currentImg, this),
				'mouseout': function (myself) {
					myself.clearTimer();
					myself.custom(options.thumbOpacity);							
				}.pass(currentImg, this),
				'click': function (myself) {
/* ********************************************************************************************************************************************** */
                		/*[mod]*/
                		this.show(myself.relatedImage.number);
		       		//this.goTo(myself.relatedImage.number);

				}.pass(currentImg, this)
			});
			
			currentImg.relatedImage = this.galleryData[i];
			this.thumbnailElements[parseInt(i)] = currentImg;
		}
	}, /*[mod]*/
	show: function(num){			
    		//alert("id="+ this.galleryData[num].idVehicule +" link= /index.php?id=54&id_vehicule=" + this.galleryData[num].idVehicule + "&no_cache=1");    		
     		//this.lightbox.open.pass(num, this.lightbox);
     		//alert(this.galleryData[num].idVehicule);
     		//window.location = "index.php?id=54&id_vehicule=" + this.galleryData[num].idVehicule + "&no_cache=1";
     		
    	},
/* ********************************************************************************************************************************************** */
    	setGalTypeSmooth: function(galType){
		//alert(galType);myself.relatedImage.number
		//this.galTypeSmooth = galType;
		if(galType == "vn"){ 
			var modeleTab = new Array();
			var oldWidth;
			var i=0;
			var elVisible = new Array();
			var elRemise = new Array();
			var elNum = new Array();
			var	marqueTab = new Array();
			var	modelTab = new Array();
	
			$ES(".carouselInner img").each(function(el,index) {
				this.galleryData[index].modeleUni = 0;				
				el.style.visibility = "hidden";
				oldWidth = el.style.width;
				el.style.width = "0px";

				var reg_remise=new RegExp("[_.]+", "g");
				var tableau_remise=el.src.split(reg_remise);
				var remise = tableau_remise[tableau_remise.length-2];
				
				var reg=new RegExp("[-]+", "g");
				var tableau=el.title.split(reg);
				var modele = tableau[0]+tableau[1];			
				//console.info(modele);				

				var modeleUni = 1;
				var j=0;
				for(j=0;j<i;j++){
					if(modeleTab[j]){
						//console.info("double-deb");
						if(modeleTab[j]==modele){
								/*if(elRemise[j]<remise){
									elVisible[j].style.visibility = "hidden";
									elVisible[j].style.width = "0px";
									modeleTab[j]=modele;
									elVisible[j]=el;
									elNum[j]=index;
									el.style.visibility = "visible";
									el.style.width = oldWidth;
									elRemise[j] = remise;
									console.info("elRemise[j]<remise");
								}*/
								modeleUni = 0;
								this.galleryData[elNum[j]].modeleUni = 0;	
	
								el.style.cursor = 'pointer';
								this.galleryData[elNum[j]].modeleTab[this.galleryData[elNum[j]].modeleTab.length] = el;
								
								//elVisible[j].style.border = "1px solid #000";
								//console.info(modele," ",remise,"%");
								/*
								//add the first
								if(eldoubleModel.length==0){
										eldouble[eldouble.length] = elVisible[j];
										eldoubleModel[eldoubleModel.length] = modeleTab[j];	
								}

								*/			
								//add this elt in the tab		
								//eldouble[eldouble.length] = el;
								//eldoubleModel[eldoubleModel.length] = modele;			
						}
					}else{
						break;
					}
				}
				
				if(modeleUni==1){
					elNum[i]=index;
					this.galleryData[index].modeleTab = new Array();
					this.galleryData[index].modeleUni = 1;	
				    modeleTab[i]=modele;
					marqueTab[i] = tableau[0];
					modelTab[i] = tableau[1].substring(1,tableau[1].length);
					elVisible[i]=el;
					el.style.visibility = "visible";
					el.style.width = oldWidth;
					elRemise[i] = remise;
				    i++;					
				}

			}.bind(this));		
			this.carouselInner.normalWidth = ((i * (this.options.thumbWidth + this.options.thumbSpacing + 2))+this.options.thumbSpacing) + 20 + "px";

			elVisible.each(function(el,index) {
				if (this.galleryData[elNum[index]].modeleUni == 1){
					elVisible[index].addEvent('mouseover', function(e){	 
						this.hideTip();	
					}.bind(this));
				}else{
						var eltip = new Element ('div').addClass("tip").setStyles({
							//width: this.options.thumbWidth + 10 + "px",
							//height: this.options.thumbHeight + 10 +"px",
							margin: "0px",
							padding: "5px 5px 5px 0px",
							position: "absolute",
							top: this.options.thumbSpacing + this.options.thumbHeight + "px",
							left:"40px",
							backgroundColor:"#3f6199",
							zIndex:"100",
							display: "none"
						});
						eltip.id = "tip_"+elNum[index];			
						//console.info("id:",eltip.id);
						var lien;
						var num = index;
						this.galleryData[elNum[index]].modeleTab.each(function(item, index){						

							if(index<this.maxVehicTip){
								//console.info("add double tip");
								eltip.appendChild(item);
								item.setStyles({
									width: this.options.thumbWidth/1.5 + "px",
									height: this.options.thumbHeight/1.5 + "px",
									visibility : "visible"
								});
							}else{
								if(!lien){
									//alert("lien");									
									lien = new Element ('a').addClass("tip_nxt");
									lien.href =	"#";
									lien.appendChild(document.createTextNode(">"));
									eltip.appendChild(lien);	
			
									var form = new Element ("form").addClass("tip_form_nxt");
									form.id = "tip_form_nxt";
									form.name = "rech";
									form.action = "index.php?id=65&no_cache=1";
									form.method = "POST";
									form.name = "formulaire";

									var selectRecherche = new Element('input');
									selectRecherche.name = "recherche";
									selectRecherche.type="hidden";
									selectRecherche.value="1";

									var selectMarque = new Element('input');
									selectMarque.name = "marque";
									selectMarque.type="hidden";
									selectMarque.value= marqueTab[num];

									var selectModele = new Element('input');
									selectModele.name = "modele";
									selectModele.type="hidden";
									selectModele.value= modelTab[num];													 	

									var selectTri = new Element('input');
									selectTri.name = "tri";
									selectTri.type="hidden";
									selectTri.value="taux_remise";
			
									form.appendChild(selectMarque);
									form.appendChild(selectModele);
									form.appendChild(selectTri);
									form.appendChild(selectRecherche);

									eltip.appendChild(form);

									lien.addEvent('click', function(e){	
										//console.info("sub",document.getElement("#tip_form_nxt")); 
										form.submit();							
									}.bind(this));

								}		
							}
						}.bind(this));

						this.hideTip();
						eltip.addEvent('mouseleave', function(e){	 
							this.hideTip();	
						}.bind(this));

						this.carouselElt.getParent().appendChild(eltip);
					//}

				}
			}.bind(this));

			if (!this.options.useExternalCarousel) {
				this.carouselInner.style.width = this.carouselInner.normalWidth;
			}
		}
		this.hideTip();
	},
	clearThumbnailsHighlights: function()
	{
		for(i=0;i<this.galleryData.length;i++)
		{
			this.thumbnailElements[i].clearTimer();
			this.thumbnailElements[i].custom(0.2);
		}
	},
	changeThumbnailsSize: function(width, height)
	{
		for(i=0;i<this.galleryData.length;i++)
		{
			this.thumbnailElements[i].clearTimer();
			this.thumbnailElements[i].element.setStyles({
				//'width': width + "px",
				//'height': height + "px"
				height: "100px"
			});
		}
	},
	centerCarouselOn: function(num) {
		if (!this.carouselWallMode)
		{
			var carouselElement = this.thumbnailElements[num];
			var position = carouselElement.element.offsetLeft + (carouselElement.element.offsetWidth / 2);
			var carouselWidth = this.carouselWrapper.element.offsetWidth;
			var carouselInnerWidth = this.carouselInner.offsetWidth;
			var diffWidth = carouselWidth / 2;
			var scrollPos = position-diffWidth;
			this.carouselWrapper.elementScroller.scrollTo(scrollPos,0);
		}
	},
	initInfoSlideshow: function() {
		/*if (this.slideInfoZone.element)
			this.slideInfoZone.element.remove();*/
		this.slideInfoZone = new Fx.Styles(new Element('div').addClass('slideInfoZone').injectInside($(this.galleryElement))).set({'opacity':0});
		var slideInfoZoneTitle = new Element('h2').injectInside(this.slideInfoZone.element);
		var slideInfoZoneDescription = new Element('p').injectInside(this.slideInfoZone.element);
		this.slideInfoZone.normalHeight = this.slideInfoZone.element.offsetHeight;

		this.slideInfoZone.element.setStyle('opacity',0);
	},
	changeInfoSlideShow: function()
	{
		this.hideInfoSlideShow.delay(10, this);
		this.showInfoSlideShow.delay(500, this);
	},
	showInfoSlideShow: function() {
		this.fireEvent('onShowInfopane');
		this.slideInfoZone.clearTimer();
		element = this.slideInfoZone.element;
		// mod ringerge.org
		this.title = this.galleryData[this.currentIter].title;
		this.description = this.galleryData[this.currentIter].description;
		
		if (this.title!='&nbsp;' && this.title!='' ) {
      element.getElement('h2').setHTML(this.galleryData[this.currentIter].title);
  		element.getElement('p').setHTML(this.galleryData[this.currentIter].description);
  		if(this.options.slideInfoZoneSlide)
  			this.slideInfoZone.custom({'opacity': [0, this.options.slideInfoZoneOpacity], 'height': [0, this.slideInfoZone.normalHeight]});
  		else
  			this.slideInfoZone.custom({'opacity': [0, this.options.slideInfoZoneOpacity]});    
    }
		// mod ringerge.org		
		
		
		if (this.options.showCarousel)
			this.slideInfoZone.chain(this.centerCarouselOn.pass(this.currentIter, this));
		return this.slideInfoZone;
	},
	hideInfoSlideShow: function() {
		this.fireEvent('onHideInfopane');
		this.slideInfoZone.clearTimer();
		if(this.options.slideInfoZoneSlide)
			this.slideInfoZone.custom({'opacity': 0, 'height': 0});
		else
			this.slideInfoZone.custom({'opacity': 0});
		return this.slideInfoZone;
	},
	makeLink: function(num) {
		this.currentLink.setProperties({
			href: this.galleryData[num].link,
			title: this.galleryData[num].linkTitle
		})
		if (!((this.options.embedLinks) && (!this.options.showArrows) && (!this.options.showCarousel)))
			this.currentLink.setStyle('display', 'block');
	},
	clearLink: function() {
		this.currentLink.setProperties({href: '', title: ''});
		if (!((this.options.embedLinks) && (!this.options.showArrows) && (!this.options.showCarousel)))
			this.currentLink.setStyle('display', 'none');
	},
	/* Plugins: HistoryManager */
	initHistory: function() {
		this.fireEvent('onHistoryInit');
		this.historyKey = this.galleryElement.id + '-picture';
		if (this.options.customHistoryKey)
			this.historyKey = this.options.customHistoryKey();
		this.history = HistoryManager.register(
			this.historyKey,
			[1],
			function(values) {
				if (parseInt(values[0])-1 < this.maxIter)
					this.goTo(parseInt(values[0])-1);
			}.bind(this),
			function(values) {
				return [this.historyKey, '(', values[0], ')'].join('');
			}.bind(this),
			this.historyKey + '\\((\\d+)\\)');
		this.addEvent('onChanged', function(){
			this.history.setValue(0, this.currentIter+1);
		}.bind(this));
		this.fireEvent('onHistoryInited');
	}
});
gallery.implement(new Events);
gallery.implement(new Options);

/* All code copyright 2006 Jonathan Schemoul */
