function hiOfferSlideshow(el){
	var _self = this;
	this.eventhandler = null;
	
	this.is_vertical = (typeof(arguments[1]) == 'undefined') ? false : arguments[1];
	
	this.version = '1.0';
	this.obj = "__O_" + "hiOfferSlideshow";
	this.el = null;
	this.el_container = null;
	this.filler = null;
	
	this.items = null;
	this.panels =  new Array();
	
	this._intv = null;
	this._intv_msec = 3000;
	this._intv_step = 0;
	this._intv_x = 0;
	
	this.baseURL = (typeof(arguments[1]) == 'undefined')
		? location.href.replace(/(.*)\/.*/g, "$1/") : arguments[1];
		
	this.url = (typeof(arguments[2]) == 'undefined')
		? '' : arguments[2];

	this.show = function(){
		var baseURL = (typeof(arguments[0]) == 'undefined')
			? this.baseURL : arguments[0];
			
		var ajax = new olAjax(baseURL);
		
		ajax.onComplete = function(text){
			if (window.DOMParser){
			  var parser = new DOMParser();
			  var xmlDoc = parser.parseFromString(text, "text/xml");
			} else {
			  var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			  xmlDoc.async = "false";
			  xmlDoc.loadXML(text); 
			} 
			if (typeof(xmlDoc)=='undefined')
				return;
			_self.items = xmlDoc.getElementsByTagName("entry");
			_self._makeall(this.el, _self.items);
			
			_self.begin();
		};

		ajax.send(this.url, this.el, "GET");
	};
	
	this.setSpeed = function(delay, stepping){
		this._intv_msec = delay_msec;
		this._intv_step = stepping;
	}
	
	this._intv_cb = function(){
		
		if ((_self._intv_x += 
				((this._intv_step > 0) ? this._intv_step : _self.panels[0].offsetWidth)
			) >= _self.panels[0].offsetWidth)
				_self._intv_x = _self.panels[0].offsetWidth - _self.el.offsetWidth;

		_self.el.style.left = (_self._intv_x) + 'px';
		
		if (_self._intv_x > 0){
			_self.filler.style.display = 'block';
			_self.filler.style.left = (0 - _self.panels[0].offsetWidth + _self._intv_x) + 'px';
		} else
			_self.filler.style.display = 'none';
	};
	
	this.begin = function(){
		_self._intv_x = _self.panels[0].offsetWidth - _self.el.offsetWidth;
		_self.start();
		_self._intv_cb();
	};
	
	this.stop = function(){
		if (this._intv == null)
			return;
		window.clearInterval(this._intv);
		this._intv = null;
	};

	this.start = function(){
		if (this._intv == null)
			this._intv = window.setInterval(this.obj + "._intv_cb()", this._intv_msec);
	};
	
	this._getTag = function(p, name){ // 08/2010 fixed version.
		var el = (typeof(arguments[2])=='undefined')
			? p.getElementsByTagName(name)	// simple
			: (typeof(p.getElementsByTagNameNS)=='undefined')
				? p.getElementsByTagName(arguments[2]+':'+name)	// old style namespace access
				: p.getElementsByTagNameNS(arguments[3], name);	// new style namespace access

		if ((typeof(el) == 'undefined') || (typeof(el[0]) == 'undefined'))
			return "";

		return (typeof(el[0].textContent) == 'undefined')
			? el[0].text : el[0].textContent;
	};

	this._makeall = function(el, items){
		for(var i=0; i<items.length; i++){
			var panel = this._makeone(items[i]);
			el.appendChild(panel);
			this.panels.push(panel);
		}
		this.filler = this._makeone(items[items.length-1]);
		this.filler.style.position = 'absolute';
		
		this.el_container.appendChild(this.filler);
		
		this.el_container.style.width =  (this.panels[0].offsetWidth * (items.length+1)) + 'px';
		//alert((this.panels[0].offsetWidth * (items.length+1)) + 'px');
		//$('debug').innerHTML = this.panels[0].offsetWidth * items.length;

	};
	this._makeone = function(item){
		var id = item.getAttribute("id");
		var title = this._getTag(item, "title", "pa", "http://peru-art.de/XML/1.0");
		var name = this._getTag(item, "title");
		var link = item.getElementsByTagName('link')[0].getAttribute('href');
		var thumbnail = this._getTag(item, "thumbnail", "pa", "http://peru-art.de/XML/1.0");
		var price = this._getTag(item, "preis", "g", "http://base.google.com/ns/1.0").replace(/\./, ',');
		var orig_price = this._getTag(item, "orig_preis", "pa", "http://peru-art.de/XML/1.0").replace(/\./, ',');

		var panel = document.createElement('div');
		panel.className = "hiOfferSlideshow_panel";
		
		panel.style.width = this.el_container.parentNode.clientWidth + 'px';
		
		if (typeof(panel.style.styleFloat) == 'undefined')
			panel.style.cssFloat = 'left';
		else
			panel.style.styleFloat = 'left';
			
		var el_header = document.createElement('div');
		el_header.className = 'hiOfferSlideshow_header';
		el_header.innerHTML = title;
		panel.appendChild(el_header);

		var el_inner = document.createElement('div');
		el_inner.className = 'hiOfferSlideshow_inner';

		el_inner.innerHTML = 
			'<center>' +
			'<table class="hiOfferSlideshow_picture" border="0" cellpadding="0" cellspacing="0"><tr>' +
			'<td class="hiOfferSlideshow_img"><a title="' + name + ' nur ' + price + ' &euro;" href="' + link + 
			'"><img src="' + thumbnail + '" border="0"></a>' +
			'</td></tr></table></center>' +
			'<div class="hiOfferSlideshow_price"><b>' + orig_price + '&nbsp;&euro;</b></div>';
		panel.appendChild(el_inner);

		this.eventhandler.observe(panel, "mouseover", function(e){_self.stop()});
		this.eventhandler.observe(panel, "mouseout",  function(e){_self.start()});
		this.eventhandler.observe(panel, "click", function(e){
			location.href = link;
		});
		
		panel.childNodes[1].style.height = parseInt(this.el_container.parentNode.clientHeight - 34) + 'px';
		return panel;
	};
	
	this.init = function(el_container){
		_self.el_container = document.createElement('div');
		_self.el_container.style.position = 'absolute';
		var w = el_container.clientWidth;
		_self.el_container.style.clip = 'rect(auto ' + w + 'px auto auto)';
		_self.el_container.style.overflow = 'hidden';
		_self.el_container.style.height = parseInt(el_container.clientHeight) + 'px';
//		_self.el_container.style.width = el_container.clientWidth + 'px';
			
		_self.el = document.createElement('div');
		_self.el.style.position = 'absolute';
		
		_self.el_container.appendChild(_self.el);
		el_container.appendChild(_self.el_container);

		this.eventhandler = new olEvent();
		eval(this.obj + " = this;");
		return this;
	};
	
	return this.init(el);
}

