/////////////////////////////////
//                             //
//   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);
}

/*function debug(msg) {
	if(location.search.indexOf('debug') != -1) {
		alert(msg);
	}
}*/


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'] = $('#efbssgal-wrapper-'+this.settings['index'])[0].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'].childNodes;
	var len = slides.length;
	var curIndex;
	var curSlide = null;
	var parentEl = this.settings['container'];
	
	var slidesContainer = document.createElement('DIV');
	var slidesCandidats = [];
	
	$(slidesContainer).css({
		position: 'relative',
		width: '100%',
		height: '100%'
	});
	
	
	for(var i = 0; i < len; i++) {
		curSlide = slides[i];
		
		if(this.isSlide(curSlide)) {
			slidesCandidats.push(curSlide);
		}
	}
	
	len = slidesCandidats.length;
	
	for(var i = 0; i < len; i++) {
		curSlide = slidesCandidats[i];
		
		//debug('Cur: '+ curSlide.tagName);
		
		if(!this.isSlide(curSlide)) {
			//debug('Skipping...');
			
			continue;
		}
		
		
		this.containerH = Math.max(this.containerH, curSlide.offsetHeight);
		this.containerW = Math.max(this.containerW, curSlide.offsetWidth);
		
		//var slideContent = parentEl.removeChild(curSlide);
		var slideContainer = document.createElement('DIV');
		
		$(slideContainer).css({
			position: 'relative',
			top: '0px',
			left: '0px',
			display: 'none',
			width: '100%'
		});
		
		slideContainer.appendChild(curSlide);
		
		slidesContainer.appendChild(slideContainer);
		
		curIndex = this.slides.length;
		this.slides[curIndex] = slideContainer;
		
		//this.setOpacity(this.slides[curIndex], 0);
		//this.slides[curIndex].style.display = 'none';
	}
	
	//alert(this.slides.length);
	
	$(document).ready(function() {
		var $parent = $(parentEl);
		
		$parent.css({
			width: $parent.width(),
			height: $parent.height(),
			overflow: 'hidden'
		});
	});
	
	parentEl.innerHTML = '';
	
	parentEl.appendChild(slidesContainer);
	
	//parentEl.style.width = this.containerW + 'px';
	//parentEl.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 && obj.tagName && obj.className) {
		//if( $.inArray(obj.tagName.toLowerCase(), this.settings.slideTags) != -1 && $.inArray(obj.className.toLowerCase(), this.settings.slideClasses) != -1) {
		
		
		
		if(this.inArray(this.settings.slideTags, obj.tagName.toLowerCase()) || inArray(this.settings.slideClasses, obj.className.toLowerCase())) {
			return true;
		} else {
			//debug('Skipping...: '+obj.tagName.toLowerCase() + ', ' + obj.className.toLowerCase());
		}
	} else {
			//debug('Skipping...: ' + obj);
		}
	return false;
}

EfSlideShow.prototype.inArray = function(arr, el) {
	for(var i = 0; i < arr.length; i++) {
		if(arr[i] == el) {
			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';
	
	if(this.slides.length < 2) {
		return false;
	}
	
	interval = setInterval(
		function() {
			if(!obj.ready) {
				clearInterval(interval);
				return false;
			}
			
			$(obj.slides[obj.currentInd]).fadeOut(1000, function() {
				var next = obj.getNextIndex();				
				$(obj.slides[next]).fadeIn(1000);
			})
		}
	, this.settings.duration);
}
EfSlideShow.prototype.next = function() {}
EfSlideShow.prototype.prev = function() {}
EfSlideShow.prototype.stop = function() {}
