/////////////////////////////////
//                             //
//   Author: Gritsay Yevgeniy  //
//   yevgen_grytsay@mail.ru    //
//     Requires ABC-0.0.5      //
//                             //
/////////////////////////////////
function EfSlideShow(settings) {
	if (parent.document.getElementById('templateframe')) {
		return false;
	}
	this.init(settings);
}


EfSlideShow.prototype.assignSettings = function(settings) {
	for(var s in settings) {
		if( typeof this.settings[s] != 'undefined' ) {
			this.settings[s] = settings[s];
		}
	}
	
	// container name: 	efbtgal-<imgsrc>
	this.settings['container'] = ABC.$('efbssgal-wrapper-'+this.settings['index']).getElementsByTagName('TBODY')[0].getElementsByTagName('TR')[0].getElementsByTagName('TD')[0];
}

EfSlideShow.prototype.init = function(settings) {	
	this.slides		= [];
	this.ready		= true;	
	this.timeout	= null;
	this.containerH	= 0;
	this.containerW	= 0;
	this.currentInd	= 0;
	
	this.settings = {
		transDuration	: 1000,
		duration		: 3000,
		index			: 1,
		play			: true,
		slideTags		: ['table'],
		slideClasses	: ['t1']
	}
	
	// Компенсируем время перехода
	//this.settings.duration += 2 * this.settings.transDuration;
	
	//this.initErrorFnc();
	//alert('test');
	this.assignSettings(settings);
	if(!this.settings['container']) {
		return false;	
	}
	
	this.initSlides();
	if(this.slides.length == 0) {
		return false;	
	}
	
	if(this.settings.play) {
		this.play();	
	}
}

EfSlideShow.prototype.initSlides = function() {
	//var slides = this.settings['container'].getElementsByTagName('TABLE');
	var slides = this.settings['container'].childNodes;
	var len = slides.length;
	var curIndex;
	
	for(var i = 0; i < len; i++) {
		if(!this.isSlide(slides[i])) {
			continue;	
		}
		
		curIndex = this.slides.length;
		this.slides[curIndex] = slides[i];
		this.containerH = Math.max(this.containerH, slides[i].offsetHeight);
		this.containerW = Math.max(this.containerW, slides[i].offsetWidth);
		
		this.setOpacity(this.slides[curIndex], 0);
		this.slides[curIndex].style.display = 'none';
	}
	
	this.settings['container'].style.width = this.containerW + 'px';
	this.settings['container'].style.height = this.containerH + 'px';
}

EfSlideShow.prototype.getNextIndex = function() {
	if( (this.currentInd + 1) == this.slides.length ) {
		return (this.currentInd = 0);
	} else {
		return ++this.currentInd;
	}
}

EfSlideShow.prototype.setOpacity = function(el, newOpacity) {
	
	if(document.all && !self.opera) {
		el.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+(newOpacity*100)+")";		
	} else {
		el.style.opacity = newOpacity;
	}	
}


EfSlideShow.prototype.isSlide = function(obj) {
	if(obj.tagName) {
		if( ABC.inArray(this.settings.slideTags, obj.tagName.toLowerCase()) && ABC.inArray(this.settings.slideClasses, obj.className.toLowerCase()) ) {
			return true;
		}
	}	
	return false;
}

EfSlideShow.prototype.error = function(msg) {
	window.status = msg;
}

EfSlideShow.prototype.initErrorFnc = function() {
	if(console.log) {
		this.error = console.log;
	}
}

EfSlideShow.prototype.play = function() {
	var obj = this;
	
	this.slides[this.currentInd].style.display = 'block';
	obj.setOpacity(this.slides[this.currentInd], 1);
	
	if(this.slides.length < 2) {
		return false;
	}
	
	interval = setInterval(
		function() {
			if(!obj.ready) {
				clearInterval(interval);
				return false;
			}
			
			ABC.hide(obj.slides[obj.currentInd], 50, 
				function(obj) {
					var next = obj.getNextIndex();
					obj.slides[next].style.display = 'block';
					ABC.show(obj.slides[next], 50);
				}
			, obj);
			
			//obj.slides[obj.currentInd].style.display = 'none';
			
			//obj.setOpacity(obj.slides[obj.currentInd], 0);
			
			/*var next = obj.getNextIndex();
			obj.slides[next].style.display = 'block';
			ABC.show(obj.slides[next], 100);*/
		}
	, this.settings.duration);
}
EfSlideShow.prototype.next = function() {}
EfSlideShow.prototype.prev = function() {}
EfSlideShow.prototype.stop = function() {}
