/**
* -------------------------------------------------------------------
*
* Stellt ein Objekt bereit, welches in der Lage ist, beliebige
* Objekte in einem Endlosslider darzustellen.
*
* -------------------------------------------------------------------
*
* @author jw
* @version 0.1
* @copyright GPL
*/
dbgline = 0;
function ObjectSlider(Node,Objects)
{
	var __self=this;
	this.Node = Node;
	this.objects = Objects;
	this.maxObjects = __self.objects.length;
	this.CoreDOM = dojo.byId(Node);
	this.curPos = 1;
	this.isSliding = 0;
	this.NodeWidth = 152;
	this.direction = 'next';
	this.enableDebug = 0;
	console.log(this.CoreDOM);
	/**
	* -------------------------------------------------------------------
	*
	* Diese Funktion erstellt debugausgaben, wenn this.enableDebug==1
	* verhält sich nahezu analog zu LogDebug aus Perl
	* -------------------------------------------------------------------
	*
	* @author jw
	* @param string debugname Bezeichner
	* @param string debugdata Wert
	* @return boolean true
	*/
	this.debug = function(debugname,debugdata)
	{
		if (this.enableDebug == 1)
		{
			var dbg;
			var dbgcontent;

			if (typeof(dojo.query('#DebugWindow')[0]) == 'undefined')
			{
				dbgmax = document.createElement('div');
				dbgmax.setAttribute('id','DebugWindowMax');
				dbgmax.innerHTML = '[+]';
				dbgmax.style.width = "20px";
				dbgmax.style.height = "15px";
				dbgmax.style.position = "absolute";
				dbgmax.style.right = "30px";
				dbgmax.style.top = "10px";
				dbgmax.style.cursor = "pointer";
				dbgmax.style.display = "none";

				dbgmax.setAttribute('onclick','this.style.display = "none";document.getElementById("DebugWindowMin").style.display="block";document.getElementById("DebugWindow").style.height="250px";');

				dbgmin = document.createElement('div');
				dbgmin.setAttribute('id','DebugWindowMin');
				dbgmin.innerHTML = '[-]';
				dbgmin.style.width = "20px";
				dbgmin.style.height = "15px";
				dbgmin.style.position = "absolute";
				dbgmin.style.right = "30px";
				dbgmin.style.top = "10px";
				dbgmin.style.cursor = "pointer";
				dbgmin.style.zIndext = "99999";

				dbgmin.setAttribute('onclick','this.style.display = "none";document.getElementById("DebugWindowMax").style.display="block";document.getElementById("DebugWindow").style.height="30px";');


				dbgcontent = document.createElement('pre');
				dbgcontent.setAttribute('id','DebugWindowContent');


				dbgcontent.style.width = "95%";
				dbgcontent.style.color = "black";
				dbgcontent.style.overflow = "auto";
				dbgcontent.style.height = "240px";
				//dbgcontent.style.fontFamily = 'Courier, "Courier New", monospace';
				//dbgcontent.style.fontSize = "10px";
				dbgcontent.style.lineHeight = "normal";

				dbg = document.createElement('div');
				dbg.setAttribute('id','DebugWindow');
				dbg.style.background = "red";
				dbg.style.height = "250px";
				dbg.style.position = "fixed";
				dbg.style.bottom = "0px";
				dbg.style.width = "100%";
				dbg.style.padding = "10px 5px 0px 5px";
				dbg.style.borderTop = "2px solid black";
				dbg.style.opacity = ".75";

				dbg.appendChild(dbgcontent);

				dbg.appendChild(dbgmin);
				dbg.appendChild(dbgmax);
				dojo.query('body')[0].appendChild(dbg);

			}
			else
			{

			}
			strdbgline = '0001';
			if(dbgline < 10)
			{
				strdbgline = '000' + dbgline;  
			}
			else if (dbgline < 100)
			{
				strdbgline = '00' + dbgline;    
			}
			else if (dbgline < 1000)
			{
				strdbgline = '0' + dbgline;    
			}
			else
			{
				strdbgline = dbgline;      
			}
			s = ""+debugdata;
			s = s.replace(/&/g,'&amp;');
			s = s.replace(/"/g,'&quot;');
			s = s.replace(/</g,'&lt;');
			s = s.replace(/>/g,'&gt;');
			s = s.replace(/'/g,'&apos;');
			document.getElementById('DebugWindowContent').innerHTML += strdbgline + " : "+debugname + " : " + s + "<br />";
			dbgline++;

			document.getElementById('DebugWindowContent').scrollTop = document.getElementById('DebugWindowContent').scrollHeight;
		}
	}
	
	this.setDirection = function(direction)
	{
		this.direction = direction;
		return false;
	}
	
	this.init = function()
	{
		var totalWidth = 0;
		if (__self.objects.length > 0)
		{
			var max = __self.objects.length;
			__self.debug("Max Objects",max);
			for (var i=0;i<max;i++)
			{
				__self.debug("create Object",i);
				var CurObj = __self.objects[i];
				dojo.xhrGet({
					url: epages.vars.BaseUrl+'?ObjectID='+CurObj+'&ChangeAction=BlockMonitor&ViewAction=ICViewCrossSelling',
					handleAs: 'text',
					load: function (data)
					{
						var CurObjIndex = dojo.query('div.ListItemProduct',this.CoreDOM).length;
						var newNode = dojo.create('div',{id:__self.CoreDOM.id+'img'+CurObjIndex,className:"ListItemProduct FloatLeft"},__self.CoreDOM);
						newNode.innerHTML = data;
						dojo.parser.parse(newNode);
						__self.debug("Loaded Data","<pre>"+data+"</pre>");
					},
					error: function(data)
					{
						__self.debug("Error","<pre>"+data+"</pre>");
					}
					
				});
				totalWidth += __self.NodeWidth;
			}
//			dojo.create('div',{className:"ClearBoth MinimizeHeight"},__self.CoreDOM);
		}
		if (__self.objects.length > 3)
		{
			dojo.style(__self.CoreDOM,"left","-" + __self.NodeWidth + "px");
		}
		dojo.style(__self.CoreDOM,"width",totalWidth+"px");
		dojo.query("div.Control span",this.CoreDOM.parentNode.parentNode).onclick(
			function(e)
			{
				dojo.stopEvent(e);
				var Elem = e.currentTarget;
				if (typeof(Elem) == 'undefined')
				{	
					Elem = e.srcElement;
				}
				__self.direction = dojo.attr(Elem,"icdir");
				__self.slide();
			}
		);		
	}
	
	this.slide = function()
	{
		if(dojo.query('div.ListItemProduct',this.CoreDOM).length > 5)
		{
			if(__self.isSliding == 0)
			{
				var myCurDirection = __self.direction;
				__self.isSliding = 1;
				if(myCurDirection == 'next')
				{
					var NewPosition = (dojo.coords(__self.CoreDOM).l - __self.NodeWidth).toString();
				}
				else
				{
					console.log("curLeft", dojo.coords(__self.CoreDOM).l);
					//var NewPosition = (dojo.coords(__self.CoreDOM).l + __self.NodeWidth).toString();
					var NewPosition = dojo.coords(__self.CoreDOM).l;
					console.log("newPos",NewPosition);
					dojo.style(__self.CoreDOM,'left',NewPosition+NewPosition+"px");
				}
				dojo.fx.slideTo({
					node: __self.CoreDOM,
					top: (dojo.coords(__self.CoreDOM).t).toString(),
					left: NewPosition,
					unit: "px",
					duration: 1000,
					easing: dojo.fx.easing['linear'],
					onBegin: function()
					{
						if(myCurDirection == 'prev') {
							var nodes = dojo.query('[id^="'+__self.CoreDOM.id+'img"]',__self.CoreDOM);
							var LastSliderNode = nodes[nodes.length -1];
							dojo.place(LastSliderNode,__self.CoreDOM,"first")
						}
					},
					onEnd: function() {
						var nodes = dojo.query('[id^="'+__self.CoreDOM.id+'img"]',__self.CoreDOM);
						var FirstSliderNode = nodes[0];
						if(myCurDirection == 'next') {
							dojo.place(FirstSliderNode,__self.CoreDOM,"last");
						}
						dojo.style(__self.CoreDOM, 'left' , ' -152px');
						__self.isSliding = 0;
						//slide();
					}
				}).play();
			}
		}
	}
	this.init();
};

