ImageSlider.DataSlider = function(div) {
	this._holdFor = 2000;
	this._transitionSpeed = 'slow';
	this._dataSource = false;
	
	this._timeOut = false;
	
	if (
		div.id.match(/[a-zA-Z]/) && 
		typeof(imageSliderSettings) != 'undefined' &&
		typeof(imageSliderSettings[div.id]) != 'undefined'
	) {
		this._holdFor = imageSliderSettings[div.id].holdFor;
		this._transitionSpeed = imageSliderSettings[div.id].transitionSpeed;
		this._dataSource = imageSliderSettings[div.id].dataSource;
	}
	
	this.width = $(div).width();
	this.height = $(div).height();
	
	this._currentImage = 0;
	this._slide = (this._dataSource.getLength() > 1 ? true : false);
	
	this.setUp(div);
	if (this._slide) this._timeOut = setTimeout(this.animate.bind(this), this._holdFor);
}

ImageSlider.DataSlider.prototype.setNewDataSource = function(source) {
	this._dataSource = source;
	this.reset();
}

ImageSlider.DataSlider.prototype.getDataSource = function() {
	return this._dataSource;
}

ImageSlider.DataSlider.prototype.reset = function() {
	clearTimeout(this._timeOut);
	
	this._currentImage = 0;
	
	this._image1.style.left = this.width + 'px';
	this._image2.style.left = '0px';
	
	this._image1.setAttribute('src', this._dataSource.getNext());
	this._image2.setAttribute('src', this._dataSource.getNext());
	
	this._slide = (this._dataSource.getLength() > 1 ? true : false);
	
	if (this._slide) this._timeOut = setTimeout(this.animate.bind(this), this._holdFor);
}

ImageSlider.DataSlider.prototype.setUp = function(div) {
	this._holderDiv = document.createElement('div');
	this._holderDiv.className = 'holderDiv';
	this._holderDiv.style.width = (this.width * 2) + 'px';
	this._holderDiv.style.height = (this.height) + 'px';
	this._holderDiv.style.left = (this.width * -1) + 'px';
	
	div.appendChild(this._holderDiv);
	
	this._image1 = document.createElement('img');
	this._image1.style.width = this.width + 'px';
	this._image1.style.height = this.height + 'px';
	this._image1.style.position = 'absolute';
	this._image1.style.left = this.width + 'px';
	this._image1.style.top = '0px';
	
	this._image2 = document.createElement('img');
	this._image2.style.width = this.width + 'px';
	this._image2.style.height = this.height + 'px';
	this._image2.style.position = 'absolute';
	this._image2.style.left = '0px';
	this._image2.style.top = '0px';
	
	this._holderDiv.appendChild(this._image1);
	this._holderDiv.appendChild(this._image2);
	
	this._image1.setAttribute('src', this._dataSource.getNext());
	this._image2.setAttribute('src', this._dataSource.getNext());
}

ImageSlider.DataSlider.prototype.animate = function() {
	this._holderDiv.style.left = '0px';
	
	if (this._currentImage == 0) {
		this._image1.style.left = '0px';
		this._image2.style.left = this.width + 'px';
	} else {
		this._image1.style.left = this.width + 'px';
		this._image2.style.left = '0px';
	}
	
	$(this._holderDiv).animate({"left": "-=" + this.width + "px"}, this._transitionSpeed);
	
	if (this._currentImage == 0) {
		setTimeout(this.updateImage1.bind(this), this._transitionSpeed);
	} else {
		setTimeout(this.updateImage2.bind(this), this._transitionSpeed);
	}
	
	this._currentImage = !this._currentImage;
	
	this._timeOut = setTimeout(this.animate.bind(this), this._holdFor);
}

ImageSlider.DataSlider.prototype.updateImage1 = function() {
	this._image1.setAttribute('src', this._dataSource.getNext());
}

ImageSlider.DataSlider.prototype.updateImage2 = function() {
	this._image2.setAttribute('src', this._dataSource.getNext());
}

