/*=====================

	cms4d imagslider1 control für nextshop® CMS
	v1.0, 15.08.2007
	©2007 Tanyel Dogan, alle Rechte vorbehalten

	Horizontale scrollbare Bildergalerie mit zoom in neuem Fenster

=====================*/
var cms4d_imageslider1_reverse = true;
var slider_stop = false;

function cms4d_imageslider1_control(ctrlid, imagelist_repeat)
{
	this.ctrlid = ctrlid;
	this.moveable = true;
	this.direction = -1;
	this.speedfactor = 1;
	this.speed = 2;

	this.slider_container = null;
	this.slider = null;
	this.imgtable = null;

	this.slider_ok = true
	if(document.documentElement)
	{
		this.slider_container = document.getElementById(this.ctrlid + '_slider_container');
		this.slider = document.getElementById(this.ctrlid + '_slider');
		this.imgtable = document.getElementById(this.ctrlid + '_imgtable');
	}
	else
	{
		this.slider_ok = false;
	}

	if(this.slider_container == null || this.slider == null || this.imgtable == null)
	{
		this.slider_ok = false;
	}

	//---

	//Standardmässig wird die Anzahl aller durch HTML vorgegebenen Tabellenzellen mit
	//Galeriebildern 0 mal dupliziert, so dass alle Bilder nur 1 mal im Slider vorkommen.
	//Es kann jedoch eine Vervielfachung der tatsächlich geladenen Bilder über den
	//Modulparameter "imagelist_repeat" gesteuert werden.
	if(this.slider_ok == true)
	{
		try
		{
			var myrow = this.imgtable.rows[0];
			var org_cellcount = myrow.cells.length;
			for(var r = 0; r < imagelist_repeat; r++)
			{
				for(var i = 0; i < org_cellcount; i++)
				{
					var org_cell = myrow.cells[i];
					var new_cell = document.createElement('td');
					new_cell.innerHTML = org_cell.innerHTML;
					myrow.appendChild(new_cell);
				}
			}
		}
		catch(ex){}
	}

	//---

	this.smv = function(is_moveable, d, sf, buttonobj)
	{
		cms4d_imageslider1_reverse = false;

		try
		{
			this.moveable = is_moveable;
			this.direction = d;
			this.speedfactor = sf;
			if(buttonobj != null)
			{
				if(is_moveable == 1)
				{
					buttonobj.style.backgroundColor = 'rgb(198,225,170)';
				}
				else
				{
					buttonobj.style.backgroundColor = 'transparent';
				}
			}
		}
		catch(ex){}
	}

	this.zm = function(id)
	{
		try
		{
			zoom(id);
		}
		catch(ex){}
	}

	this.do_status = function(s)
	{
		var ausgabe = document.getElementById(this.ctrlid + '_ausgabe');
		if(ausgabe != null)
		{
			ausgabe.value = s;
		}
	}



	this.do_interval = function()
	{
		if(this.slider_ok != true || this.moveable != true) return;


		var slider_container_width = this.slider_container.offsetWidth;
		//BEACHTE: wg. Fehlern im NS7 muss für den slider-DIV eine feste Pixelbreite vorgegeben werden (s.CSS).
		//Stattdessen wird hier untergeordnete die aktuelle Breite der Tabelle ausgemessen, die die Bilder enthält.
		var slider_width = this.imgtable.offsetWidth;

		var old_x = this.slider.offsetLeft;
		var new_x = old_x + (this.direction * this.speed * this.speedfactor);

		//Überschreitung verhindern
		var xmin = slider_container_width - slider_width;
		var xmax = 0;
		if(new_x < xmin)
		{
			new_x = xmin;
			if(this.speed == 2 && cms4d_imageslider1_reverse == true)
			{
				this.direction = 1;
				slider_stop = true;
				setTimeout('go_slider()',2000);
			}
		}
		if(new_x > xmax)
		{
			new_x = xmax;
			if(this.speed == 2 && cms4d_imageslider1_reverse == true)
			{
				this.direction = -1;
				slider_stop = true;
				setTimeout('go_slider()',2000);
			}
		}

		if(slider_stop == false) this.slider.style.left = new_x + 'px';
	}

	var func_str = this.ctrlid + '.do_interval()';
	this.interval = setInterval(func_str, 40);
}

function go_slider()
{
	slider_stop = false;	
}
