function med_carousel(objConf)
{

	var _this = this;
	this.button_next;
	this.button_back;
	this.content;
	this.cduplicate;
	this.cduplicatestatic;
	this.cmain;
	this.content_width = 0;
	this.currentIndex = 0;
	this.scrollOffset = 0;
	this.wasInit = false;
	this.arrPositions = Array();
	this.freqInterval;
	this.movable = false;
	this.defaultVal = function(desiredVal, defaultVal){return(desiredVal)?desiredVal:defaultVal;};
	
	this.id_back = this.defaultVal(objConf.id_back,'c_back');
	this.id_main = this.defaultVal(objConf.id_main,'c_main');
	this.id_next = this.defaultVal(objConf.id_next,'c_next');
	this.id_outer = this.defaultVal(objConf.id_outer,'c_outer');
	this.class_label = this.defaultVal(objConf.class_label,'c_label');
	this.items = this.defaultVal(objConf.items,{});
	this.skin = this.defaultVal(objConf.skin,'img/carouselskin/');
	this.speed = this.defaultVal(objConf.speed,2);
	//this.visibleAtOnce = this.defaultVal(objConf.visibleAtOnce, 2);
	this.stepsize = this.defaultVal(objConf.stepsize,3);
	this.imgstyle = this.defaultVal(objConf.imgstyle, {padding: '9px 0 0 0'});
	this.imgspace = this.defaultVal(objConf.imgspace, 9);
	this.button_width = this.defaultVal(objConf.button_width, 21);
	this.frequency = this.defaultVal(objConf.frequency, 0);
	this.transition = this.defaultVal(objConf.transition, function(x){return x;});
	this.init = function()
	{
		var back = $(_this.id_back);
		new Image().src = _this.skin+'left-onclick.gif';
		_this.button_back = new Image();
		_this.button_back.src = _this.skin+'left.gif';
		_this.button_back.id = _this.id_back+'_button';
		back.observe('mousedown',function(e){
			_this.button_back.src = _this.skin+'left-onclick.gif';
		});
		back.observe('click',function(e){
			_this.button_back.src = _this.skin+'left.gif';
			if(_this.freqInterval)
			{
				clearInterval(_this.freqInterval);
			}
			_this.move(_this.stepsize*-1);
		});
		back.observe('mouseout',function(e){
			_this.button_back.src = _this.skin+'left.gif';
		});
		back.update(_this.button_back);
		
		var next = $(_this.id_next)
		new Image().src = _this.skin+'right-onclick.gif';
		_this.button_next = new Image();
		_this.button_next.src = _this.skin+'right.gif';
		_this.button_next.id = _this.id_next+'_button';
		next.observe('mousedown',function(e){
			_this.button_next.src = _this.skin+'right-onclick.gif';
		});
		next.observe('click',function(e){
			_this.button_next.src = _this.skin+'right.gif';
			if(_this.freqInterval)
			{
				clearInterval(_this.freqInterval);
			}
			_this.move(_this.stepsize);
		});
		next.observe('mouseout',function(e){
			_this.button_next.src = _this.skin+'right.gif';
		});
		next.update(_this.button_next);
		_this.init_carousel();
	};
	
	this.init_carousel = function()
	{
		var container;
		if(!(container = $(this.id_main))||this.wasInit||!this.items.length)return;
		this.wasInit = true;
		container.update('<div id="'+this.id_main+'_content"></div>');
		this.content = $(this.id_main+'_content');
		this.content.insert('<div id="'+this.id_main+'_cmain"></div><div id="'+this.id_main+'_cduplicate"></div><div id="'+this.id_main+'_cduplicate2"></div>');
		this.cmain = $(this.id_main+'_cmain');
		this.cduplicate = $(this.id_main+'_cduplicate');
		this.cduplicatestatic = $(this.id_main+'_cduplicate2');
		var parentDimensions = $(this.id_outer).getDimensions();
		container.setStyle({
				overflow: 'hidden',
				position:'absolute',
				height: parentDimensions.height+'px', 
				left: this.button_width+'px', 
				width:(parentDimensions.width-(this.button_width*2))+'px'
		});
		
		if(this.items.length > this.stepsize)
		{
			
			for(var i=0;i<this.items.length;i++)
			{
				// CAROUSELBAR1
				var tmpl = '<h3><a href="'+this.items[i].url+'">'+this.items[i].title+'</a></h3><div class="news-latest-date">'+this.items[i].date+'</div><p class="bodytext">'+this.items[i].description+'</p>';
				this.cmain.insert('<div id="'+this.id_main+'_img_'+i+'" style="position:absolute; left:'+this.content_width+'px; width:'+this.items[i].width+'px;"></div>');
				$(this.id_main+'_img_'+i).insert(tmpl);

			    
                // CAROUSELBAR2	
				this.cduplicate.insert('<div id="'+this.id_main+'_img_'+i+'_d" style="position:absolute; left:'+this.content_width+'px; width:'+this.items[i].width+'px;"></div>');
				$(this.id_main+'_img_'+i+'_d').insert(tmpl);
							
				// CAROUSELBAR3
				this.cduplicatestatic.insert('<div id="'+this.id_main+'_img_'+i+'_d2" style="position:absolute; left:'+this.content_width+'px; width:'+this.items[i].width+'px;"></div>');
				$(this.id_main+'_img_'+i+'_d2').insert(tmpl);
				
				
				
				this.arrPositions.push(this.content_width-this.imgspace);
				this.content_width += this.items[i]['width']+this.imgspace+2;
			}
			this.movable = true;
			this.content.setStyle({position: 'absolute', width: (this.content_width*3)+'px'});
			this.cmain.setStyle({position: 'absolute', left: '0px', width: this.content_width+'px'});
			this.cduplicate.setStyle({position: 'absolute', left: this.content_width+'px', width:this.content_width+'px'});
			this.cduplicatestatic.setStyle({position: 'absolute', left: (-this.content_width)+'px', width:this.content_width+'px'});
			if(this.frequency)
			{
				this.freqInterval = setInterval (this.onTimeout,this.frequency*1000);
			}
		}else{
			for(var i=0;i<this.items.length;i++)
			{
				var tmpl = '<h3><a href="'+this.items[i].url+'">'+this.items[i].title+'</a></h3><div class="news-latest-date">'+this.items[i].date+'</div><p class="bodytext">'+this.items[i].description+'</p>';
				
				this.cmain.insert('<div id="'+this.id_main+'_img_'+i+'" style="position:absolute; left:'+this.content_width+'px; width:'+this.items[i].width+'px;"></div>');
				$(this.id_main+'_img_'+i).insert(tmpl);
				
				this.arrPositions.push(this.content_width-this.imgspace);
				this.content_width += this.items[i]['width']+this.imgspace;
			}
			this.cmain.setStyle({position: 'absolute', left: (-this.arrPositions[0])+'px', width: this.content_width+'px'});
			this.movable = false;
		}
		
		this.move(0, true);
	}
	
	this.bannerclick = function(e)
	{
		var el = e.element();
		if($(el).alt)document.location.href=$(el).alt;
	}
	
	this.onTimeout = function()
	{
		_this.move(_this.stepsize);
	}
	
	this.move = function(steps, noAnimation)
	{
		if(!this.movable)return;
		if((this.currentIndex + steps < 0))
		{
			this.currentIndex = this.arrPositions.length + (this.currentIndex + steps);
			this.scrollOffset--;
			this.cduplicate.style.left = this.cmain.style.left;
			var oldX = this.cmain.positionedOffset();
			this.cmain.setStyle({left:(oldX.left-this.content_width)+'px'});
			this.cduplicatestatic.setStyle({left:(oldX.left-(this.content_width*2))+'px'});
			//alert(this.cmain.getStyle('left').substr(0,this.cmain.getStyle('left').lastIndexOf('px')));
		}else if(this.currentIndex + steps > this.arrPositions.length-1)
		{
			this.currentIndex = steps +(this.currentIndex-this.arrPositions.length);
			this.scrollOffset++;
			this.cduplicate.style.left = this.cmain.style.left;
			var oldX = this.cmain.positionedOffset();
			this.cmain.setStyle({left:(oldX.left+this.content_width)+'px'});
			this.cduplicatestatic.setStyle({left:(oldX.left+(this.content_width*2))+'px'});
			//alert(oldX+' '+(oldX+this.content_width));
		}else{
			this.currentIndex += steps;
		}
		//this.content.setStyle({left: -this.arrPositions[this.currentIndex]+'px'});
		var newX = -((this.scrollOffset*this.content_width)+this.arrPositions[this.currentIndex]);
		if(noAnimation)
		{
			this.content.setStyle({left:newX+'px'});
		}else{
			new Effect.Move(this.content,{x: newX, mode: 'absolute', duration: this.speed, transition: this.transition});
		}
	};
}
