function getStyle(el, cssprop){
 if (el.currentStyle) //IE
  return el.currentStyle[cssprop]
 else if (document.defaultView && document.defaultView.getComputedStyle) //Firefox
  return document.defaultView.getComputedStyle(el, "")[cssprop]
 else //try and get inline style
  return el.style[cssprop]
}

function getMargins(el){
	var left = parseInt(getStyle(el,'marginLeft'));
	var right = parseInt(getStyle(el,'marginRight'));
	// For IE :(
	if( ''+left == 'NaN' ){
		left = 0;
	}
	if( ''+right == 'NaN' ){
		right = 0;
	}
	return right+left;
}

var changeState = true;

function ContentSlider( params )
{
	this.config['id'] = params['id']; 
	this.config['duration'] = params['duration'] || '1500'; 
	this.config['transition'] = params['transition'] || 'circ:out';
	this.slide_count = params['jumps'] || 3;
	this.getElements();
}

ContentSlider.prototype.config = new Array(); 
ContentSlider.prototype.element_count = 0;
ContentSlider.prototype.slide_count = 3;
ContentSlider.prototype.slide_pos = 0;
ContentSlider.prototype.slide_width = 0;
ContentSlider.prototype.slide_element = '';
ContentSlider.prototype.slide_max = 0;

ContentSlider.prototype.getElements = function()
{
	this.slide_element = document.getElementById( this.config['id'] );
	if( this.slide_element == null ){
		alert( 'Kein Silderelement mit der ID '+this.config['id']+' gefunden.' );
		return;
	}
	var sliderWidth = 0;
	var hasNext = true;
	var count = 0;
	while( hasNext )
	{
		el = this.slide_element.getElementsByTagName('div')[count];
		if( el != null ){
			count++;
			//if( el.parentNode.id == this.config['id'] )slidenews_element
			if( el.className == "slidenews_element" )
			{
				//alert( el.parentNode.id);
				this.element_count++;
				var margin = getMargins(el);
				sliderWidth += el.offsetWidth + margin;
			}
			
		}else{
			hasNext = false;
		}
	}
	if( this.element_count == 0 || sliderWidth == 0 ){
		alert( 'Keine Elemente im Silderelement mit der ID '+this.config['id']+' gefunden.\n\rOder die Elemente haben keine Breite.' );
		return;
	}
	this.slide_width = sliderWidth;
	this.slide_element.style.width = sliderWidth+'px';
	this.slide_max = (-1) * (this.slide_width - this.slide_width/this.element_count*this.slide_count);
	//alert('sliderwidth: '+this.slide_element.style.width+'\n\relementcount: '+this.element_count);
}

ContentSlider.prototype.next = function()
{
	
	var slideX = this.slide_pos - this.slide_width/this.element_count*this.slide_count;
	if( this.slide_max > slideX ){
		slideX = this.slide_max;
	}
	this.slide(	slideX );
}

ContentSlider.prototype.prev = function()
{
	var slideX = this.slide_pos + this.slide_width/this.element_count*this.slide_count;
	if( this.slide_pos == 0 ){
		return;
	}else if( slideX > 0 ){
		slideX = 0;
	}
	this.slide( slideX );
}

ContentSlider.prototype.slide = function(x )
{
	if(changeState != true){
		return;
	}else{
		changeState = false;
	}
	var myEffect = new Fx.Morph( this.slide_element, {duration: this.config['duration'], transition: this.config['transition'], onComplete: setState});
		myEffect.start({
			'left':[this.slide_pos, x]
		});	
	this.slide_pos = x;
}

function setState()
{
	changeState = true;
}