function estatesOfTheMonthObject(in_arrItems, in_strInstanceName)
{
	this.intItemStepWidth = 3;		//wie viele Einträge sollen pro Klick gescrollt werden
	this.intItemWidth = 205;			//die Breite eines Eintrags
	this.animationStepWidth = 15;	//Schrittweite der Animation
	this.animationTimeout = 10;		//Timeout der Animation in ms
	
	this.arrItems = in_arrItems;
	this.strInstanceName = in_strInstanceName;
	this.objNodeEstatesOfTheMonth = null;
	this.intCurrentIndex = 0;
	this.intDefaultX;
	this.intAnimationXEnd;
	this.bolAnimationRunning = false;
	
	this.init = function()
	{
		{
			this.objNodeEstatesOfTheMonth = document.getElementById('estatesofthemonth');
			this.intDefaultX = parseInt(this.objNodeEstatesOfTheMonth.style.left);
			this.rebuild();
		}
	}
	
	this.rebuild = function()
	{
		//Index -3 von momentanem Index suchen
		var intIndex = this.intCurrentIndex - this.intItemStepWidth;
		if (intIndex < 0)	//wenn Index kleiner Null
		{
			intIndex = this.arrItems.length + intIndex; //Umbruch auf Ende der Liste
		}
		if (intIndex >= this.arrItems.length)	//wenn Index groesser als letzter Index in Array
		{
			intIndex = intIndex - this.arrItems.length; //Umbruch auf Anfang der Liste
		}
		//Eintraege entfernen
		this.clear();
		//9 Eintraege in Scroller einhaengen
		for (var i = 0; i < 3 * this.intItemStepWidth; i++)
		{
			var objNodeItem = document.getElementById('estatesofthemonth_item_dolly_parent').firstChild.cloneNode(true);
			objNodeItem.childNodes[0].firstChild.childNodes[0].getElementsByTagName('a')[0].href = this.arrItems[intIndex]['link'];
			objNodeItem.childNodes[0].firstChild.childNodes[0].getElementsByTagName('img')[0].src = 'media/estates/' + this.arrItems[intIndex]['picture'];
			objNodeItem.childNodes[0].firstChild.childNodes[1].childNodes[0].innerHTML = this.arrItems[intIndex]['name_county'];
			objNodeItem.childNodes[0].firstChild.childNodes[2].childNodes[0].innerHTML = this.arrItems[intIndex]['size'] + ' m<sup>2</sup>';
			objNodeItem.childNodes[0].firstChild.childNodes[3].childNodes[0].innerHTML = this.arrItems[intIndex]['price'] + ' €';
			objNodeItem.childNodes[0].firstChild.childNodes[3].childNodes[1].getElementsByTagName('a')[0].href = this.arrItems[intIndex]['link'];
			this.objNodeEstatesOfTheMonth.appendChild(objNodeItem);
			intIndex++; //Index um 1 erhoehen
			if (intIndex > this.arrItems.length - 1)	//wenn am Ende der Liste
			{
				intIndex = 0;	//wieder vorne anfangen
			}
		}
	}
	
	this.clear = function()
	{
		while (this.objNodeEstatesOfTheMonth.childNodes.length > 0)
		{
			this.objNodeEstatesOfTheMonth.removeChild(this.objNodeEstatesOfTheMonth.firstChild);
		}
		this.objNodeEstatesOfTheMonth.style.left = this.intDefaultX + 'px';
	}

	this.scroll = function(in_intDirection)
	{
		if (!this.bolAnimationRunning)
		{
			this.animate(in_intDirection);
		}
	}

	this.move = function(in_intDirection)
	{
		this.intCurrentIndex += this.intItemStepWidth * in_intDirection;
		if (this.intCurrentIndex < 0)	//wenn Index kleiner Null
		{
			this.intCurrentIndex = this.arrItems.length + this.intCurrentIndex; //Umbruch auf Ende der Liste
		}
		if (this.intCurrentIndex >= this.arrItems.length)	//wenn Index groesser als letzter Index in Array
		{
			this.intCurrentIndex = this.intCurrentIndex - this.arrItems.length; //Umbruch auf Anfang der Liste
		}
		this.rebuild();
	}

	this.animate = function(in_intDirection)
	{
		this.bolAnimationRunning = true;
		this.intAnimationXEnd = parseInt(this.objNodeEstatesOfTheMonth.style.left) + this.intItemWidth * this.intItemStepWidth * in_intDirection * -1;
		this.animateStep(in_intDirection);
	}

	this.animateStep = function(in_intDirection)
	{
		if (Math.abs(parseInt(this.objNodeEstatesOfTheMonth.style.left) - this.intAnimationXEnd) == 0)
		{
			this.move(in_intDirection);
			this.bolAnimationRunning = false;
		}
		else
		{
			var intStepWidth; 
			if (Math.abs(parseInt(this.objNodeEstatesOfTheMonth.style.left) - this.intAnimationXEnd) < this.animationStepWidth * 10)
			{
				intStepWidth = Math.round(Math.abs(parseInt(this.objNodeEstatesOfTheMonth.style.left) - this.intAnimationXEnd) / 10);
				intStepWidth = intStepWidth == 0 ? 1 : intStepWidth;
			}
			else
			{
				intStepWidth = this.animationStepWidth;
			}
			this.objNodeEstatesOfTheMonth.style.left = (parseInt(this.objNodeEstatesOfTheMonth.style.left) + intStepWidth * in_intDirection * -1) + 'px';
			window.setTimeout(this.strInstanceName + ".animateStep(" + in_intDirection + ")", this.animationTimeout);
		}
	}
	
}
