var Prototype = { Version: '1.5.1.1', emptyFunction: function() { }};
var Class = {create: function() {return function() { this.initialize.apply(this, arguments); };}};
Object.extend = function(destination, source) {for (var property in source) destination[property] = source[property];return destination;};
Function.prototype.bind = function(object) {var __method = this;return function() {return __method.apply(object, arguments);};};
if (!Array.prototype.forEach) {Array.prototype.forEach = function(fn, bind){for(var i = 0; i < this.length ; i++)fn.call(bind, this[i], i);};};
Array.prototype.each = Array.prototype.forEach;
String.prototype.camelize = function(){return this.replace(/-\D/gi, function(match){return match.charAt(match.length - 1).toUpperCase();});};
var $A = function(iterable) {var nArray = [];for (var i = 0; i < iterable.length; i++)nArray.push(iterable[i]);return nArray;};
function $() {if (arguments.length == 1) return get$(arguments[0]);var elements = [];$c(arguments).each(function(el){elements.push(get$(el));});return elements;function get$(el){if (typeof el == 'string') el = document.getElementById(el);return el;};};
if (!window.Element) var Element = {};
Object.extend(Element, {
remove: function(element) {
element = $(element);
element.parentNode.removeChild(element);
},
hasClassName: function(element, className) {
element = $(element);
return !!element.className.match(new RegExp("\\b"+className+"\\b"));
},
addClassName: function(element, className) {
element = $(element);
if (!Element.hasClassName(element, className)) element.className = (element.className+' '+className);
},
include: function(pattern) {
return this.indexOf(pattern) > -1;
},
removeClassName: function(element, className) {
element = $(element);
if (Element.hasClassName(element, className)) element.className = element.className.replace(className, '');
}
});
document.getElementsByClassName = function(className){
var elements = [];
var all = document.getElementsByTagName('*');
$A(all).each(function(el){
if (Element.hasClassName(el, className))
elements.push(el);
});
return elements;
};
var Ajax = {
getTransport: function() {
return Try.these(
function() {return new XMLHttpRequest();},
function() {return new ActiveXObject('Msxml2.XMLHTTP');},
function() {return new ActiveXObject('Microsoft.XMLHTTP');}
) || false;
},
activeRequestCount: 0
}
Ajax.Responders = {
responders: [],
_each: function(iterator) {
this.responders._each(iterator);
},
register: function(responder) {
if (!this.include(responder))
this.responders.push(responder);
},
unregister: function(responder) {
this.responders = this.responders.without(responder);
},
dispatch: function(callback, request, transport, json) {
this.each(function(responder) {
if (typeof responder[callback] == 'function') {
try {
responder[callback].apply(responder, [request, transport, json]);
} catch (e) {}
}
});
}
};
var $break = {}, $continue = new Error('"throw $continue" is deprecated, use "return" instead');
Object.extend(Array.prototype, {
_each: function(iterator) {
for (var i = 0, length = this.length; i < length; i++)
iterator(this[i]);
},
clone: function() {
return [].concat(this);
}
});
var Try = {
these: function() {
var returnValue;
for (var i = 0, length = arguments.length; i < length; i++) {
var lambda = arguments[i];
try {
returnValue = lambda();
break;
} catch (e) {}
}
return returnValue;
}
};
var Enumerable = {
each: function(iterator) {
var index = 0;
try {
this._each(function(value) {
iterator(value, index++);
});
} catch (e) {
if (e != $break)
throw e;
 }
return this;
},
include: function(object) {
var found = false;
this.each(function(value) {
if (value == object) {
found = true;
throw $break;
}
});
return found;
}
}
Object.extend(Ajax.Responders, Enumerable);
Ajax.Responders.register({
onCreate: function() {
Ajax.activeRequestCount++;
},
onComplete: function() {
Ajax.activeRequestCount--;
}
});
Ajax.Base = function() {};
Ajax.Base.prototype = {
setOptions: function(options) {
this.options = {
method: 'post',
asynchronous: true,
contentType: 'application/x-www-form-urlencoded',
encoding: 'UTF-8',
parameters: ''
};
Object.extend(this.options, options || {});
this.options.method = this.options.method.toLowerCase();
if (typeof this.options.parameters == 'string')
this.options.parameters = this.options.parameters.toQueryParams();
}
}
Ajax.Request = Class.create();
Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
Object.extend(Object, {
clone: function(object) {
return Object.extend({}, object);
}
});
Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
_complete: false,
initialize: function(url, options) {
this.transport = Ajax.getTransport();
this.setOptions(options);
this.request(url);
},
evalJSON: function() {
try {
var json = this.getHeader('X-JSON');
return json ? json.evalJSON() : null;
} catch (e) { return null }
},
request: function(url) {
this.url = url;
this.method = this.options.method;
var params = Object.clone(this.options.parameters);
this.parameters = params;
if (params = Hash.toQueryString(params)) {
if (this.method == 'get')
this.url += (this.url.include('?') ? '&' : '?') + params;
else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
params += '&_=';
}
try {
if (this.options.onCreate)
this.options.onCreate(this.transport);
Ajax.Responders.dispatch('onCreate', this, this.transport);
this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous);
if(this.options.asynchronous)
setTimeout(function() { this.respondToReadyState(1); }.bind(this), 10);
this.transport.onreadystatechange = this.onStateChange.bind(this);
this.setRequestHeaders();
this.body = this.method == 'post' ? (this.options.postBody || params) : null;
this.transport.send(this.body);
if (!this.options.asynchronous && this.transport.overrideMimeType)
this.onStateChange();
} catch (e) {
this.dispatchException(e);
}
},
onStateChange: function() {
var readyState = this.transport.readyState;
if (readyState > 1 && !((readyState == 4) && this._complete))
this.respondToReadyState(this.transport.readyState);
},
setRequestHeaders: function() {
var headers = {
'X-Requested-With': 'XMLHttpRequest',
'X-Prototype-Version': Prototype.Version,
'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
};
if (this.method == 'post') {
headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : '');
if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
headers['Connection'] = 'close';
}
if(typeof this.options.requestHeaders == 'object') {
var extras = this.options.requestHeaders;
if(typeof extras.push == 'function')
for(var i = 0, length = extras.length; i < length; i += 2)
headers[extras[i]] = extras[i+1];
else
$H(extras).each(function(pair) { headers[pair.key] = pair.value });
}
for(var name in headers)
this.transport.setRequestHeader(name, headers[name]);
},
success: function() {
return !this.transport.status || (this.transport.status >= 200 && this.transport.status < 300);
},
respondToReadyState: function(readyState) {
var state = Ajax.Request.Events[readyState];
var transport = this.transport, json = this.evalJSON();
if (state == 'Complete') {
try {
this._complete = true;
 (this.options['on' + this.transport.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(transport, json);
} catch (e) {
this.dispatchException(e);
}
var contentType = this.getHeader('Content-type');
if(contentType && contentType.strip().match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
this.evalResponse();
}
try {
(this.options['on' + state] || Prototype.emptyFunction)(transport, json);
Ajax.Responders.dispatch('on' + state, this, transport, json);
} catch (e) {
this.dispatchException(e);
}
if (state == 'Complete') {
this.transport.onreadystatechange = Prototype.emptyFunction;
}
},
getHeader: function(name) {
try {
return this.transport.getResponseHeader(name);
} catch (e) { return null; }
},
evalResponse: function() {
try {
return eval((this.transport.responseText || '').unfilterJSON());
} catch (e) {
this.dispatchException(e);
}
},
dispatchException: function(exception) {
(this.options.onException || Prototype.emptyFunction)(this, exception);
Ajax.Responders.dispatch('onException', this, exception);
}
});
Object.extend(String.prototype, {
include: function(pattern) {
return this.indexOf(pattern) > -1;
},
strip: function() {
return this.replace(/^\s+/, '').replace(/\s+$/, '');
}
});
var Hash = function(object) {
if(object instanceof Hash)
this.merge(object);
 else
 Object.extend(this, object || {});
};
Object.extend(Hash, {
toQueryString: function(obj) {
var parts = [];
parts.add = arguments.callee.addPair;
this.prototype._each.call(obj, function(pair) {
if (!pair.key) return;
var value = pair.value;
if (value && typeof value == 'object') {
if (value.constructor == Array)
value.each(function(value) { parts.add(pair.key, value); });
return;
}
parts.add(pair.key, value);
});
return parts.join('&');
}
});

Object.extend(Hash.prototype, {
_each: function(iterator) {
for (var key in this) {
var value = this[key];
if(value && value == Hash.prototype[key])
continue;
var pair = [key, value];
pair.key = key;
pair.value = value;
iterator(pair);
}
}
});
Hash.toQueryString.addPair = function(key, value, prefix) {
key = encodeURIComponent(key);
if (value === undefined)
this.push(key);
else
this.push(key + '=' + (value == null ? '' : encodeURIComponent(value)));
};

Xerces = Class.create();
Xerces.prototype = {
initialize: function() {
},
Create: function(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
},
Read: function(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
},
Erase: function(name) {
this.Create(name,"",-1);
},
Find: function(name) {
var nameEQ = name + "=";
var xer = this.Read('xerces');
if(xer) {
var ca = xer.split('|');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
}
return null;
},
Edit: function(name, val) {
var nameEQ = name + '=';
var x = this.Read('xerces');
var s = '';
if(x) {
var ca = x.split('|');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) {
var v = nameEQ+val+'|';
s += v;
} else {
s += c;
s += '|';
}
}
}
this.Create('xerces', s, 1);
}
};
function Laufband(lfbContainer, einstellungen){
	this.lfbWeite=einstellungen.lfbWeite?einstellungen.lfbWeite:170;
	this.effDauer=einstellungen.effDauer?einstellungen.effDauer:680;
	this.autobewegen=einstellungen.autobewegen?einstellungen.autobewegen:false;
	this.lfbintervall=einstellungen.lfbintervall?einstellungen.lfbintervall:5000;
	this.autolfbAngabe=einstellungen.autolfbAngabe?einstellungen.autolfbAngabe:"vor";
	this.aktualisierungsRate=einstellungen.aktualisierungsRate?einstellungen.aktualisierungsRate:40;
	this.anzahlBilder=einstellungen.anzahlBilder?einstellungen.anzahlBilder:6;
	this.anzahlSichtbBilder=einstellungen.anzahlSichtbBilder?einstellungen.anzahlSichtbBilder:3;
	this.buttonVor=null;
	this.buttonZurueck=null;
  this.zeitabstand=null;
	this.lfb=null;
	this.autoZeit=null;
	this.pos=0;
	this.posAbstand=0;
	this.lfbLaeuft=false;
	this.diaCnt = 0;
	if(lfbContainer && $(lfbContainer)){this.lfb=$(lfbContainer);
		if($(this.lfb).style.left){this.posAbstand=Math.round(Math.abs(parseInt($(this.lfb).style.left.replace(/px/gi, "")) / this.lfbWeite));
		}else{this.posAbstand=0;}
		if(this.autobewegen){this.autoZeit=setTimeout(function(){this.autoLfb(true);}.bind(this), this.lfbintervall);
			ereignisHandler(this.lfb,"mouseover",function(){this.autoLfbStop();}.bind(this));
			ereignisHandler(this.lfb,"mouseout",function(){this.autoLfb();}.bind(this));}		
		this.buttonZurueck=$(this.lfb.id+"_zurueck");this.buttonVor=$(this.lfb.id+"_vor");}	
  	
	this.autoLfb=function(bewegEs){
    
    //alert(jQuery("#preis0").text());

    if(this.pruefeEinstellung && !this.lfbLaeuft){
			if(bewegEs){this.dia(this.autolfbAngabe);}
			this.autoZeit=setTimeout(function(){this.autoLfb(true);}.bind(this),this.lfbintervall);
		}
	}
	this.pruefeEinstellung=function(){if(!this.lfb){return false}if(!this.lfbintervall-this.effDauer>1){return false}
		if(this.anzahlBilder==0||this.anzahlSichtbBilder==0){return false}
		return true;}
	this.verschiebung=function(richtung){if(this.pruefeEinstellung){
			if(!this.lfbLaeuft){}else{			
				if(this.pos<this.lfbWeite){var verschiebungWeite=Math.round((this.lfbWeite*this.aktualisierungsRate)/this.effDauer);
					this.pos += verschiebungWeite;this.pos=this.pos>this.lfbWeite?this.lfbWeite:this.pos;
					switch(richtung){case "vor":$(this.lfb).style.left="-"+(this.posAbstand*this.lfbWeite+this.pos)+"px";break;
						case "zurueck":$(this.lfb).style.left="-"+(this.posAbstand*this.lfbWeite-this.pos)+"px";break;
						default:break;}
					this.zeitabstand=setTimeout(function(){this.verschiebung(richtung);}.bind(this),this.aktualisierungsRate);	
				}
				else{switch(richtung){case "vor":this.posAbstand++;break;
						case "zurueck":this.posAbstand--;break;
						default:break;}
					this.lfbLaeuft=false;clearTimeout(this.zeitabstand);this.aktLaufbandElemente();
				}}}}
	this.autoLfbStop=function(){if(this.autoZeit)clearTimeout(this.autoZeit);}
	this.justierePosition=function(){$(this.lfb).style.left="-"+(this.posAbstand*this.lfbWeite)+"px";this.pos=0;}
  this.dia=function(richtung){var lfbGueltig=false;
		if(this.pruefeEinstellung && !this.lfbLaeuft){
			switch(richtung){
        case "vor":
          if (this.anzahlBilder > 1
          && this.diaCnt + 1 < this.anzahlBilder) {
              this.diaCnt++;
              jQuery('#subline').html(
                "<a href=\'javascript:setArtikel(\"" + jQuery("#id" + this.diaCnt).text() + "\",\"" + jQuery("#kat" + this.diaCnt).text() + "\")\' style=\"text-decoration:none;color:white;\" title=\"" + jQuery("#name" + this.diaCnt).text() + "\" target=\'_top\'>"
                 + jQuery("#name" + this.diaCnt).text() +
                "</a>"                 
              );
              jQuery('#subline1').html(
                "<a href=\'javascript:setArtikel(\"" + jQuery("#id" + this.diaCnt).text() + "\",\"" + jQuery("#kat" + this.diaCnt).text() + "\")\' style=\"text-decoration:none;color:white;\" title=\"" + jQuery("#name" + this.diaCnt).text() + "\" target=\'_top\'>"              
                + jQuery("#preis" + this.diaCnt).text() + " &euro;" + 
                "</a>"
              );
          }
          if(this.posAbstand+this.anzahlSichtbBilder < this.anzahlBilder){lfbGueltig = true;}break;
				case "zurueck":
          if (this.anzahlBilder > 1
          && this.diaCnt > 0) {
              this.diaCnt--;
              jQuery('#subline').html(
                "<a href=\'javascript:setArtikel(\"" + jQuery("#id" + this.diaCnt).text() + "\",\"" + jQuery("#kat" + this.diaCnt).text() + "\")\' style=\"text-decoration:none;color:white;\" title=\"" + jQuery("#name" + this.diaCnt).text() + "\" target=\'_top\'>"
                 + jQuery("#name" + this.diaCnt).text() +
                "</a>"                 
              );              
              jQuery('#subline1').html(
                "<a href=\'javascript:setArtikel(\"" + jQuery("#id" + this.diaCnt).text() + "\",\"" + jQuery("#kat" + this.diaCnt).text() + "\")\' style=\"text-decoration:none;color:white;\" title=\"" + jQuery("#name" + this.diaCnt).text() + "\" target=\'_top\'>"              
                + jQuery("#preis" + this.diaCnt).text() + " &euro;" + 
                "</a>"
              );                      
          }
          if(this.posAbstand > 0){lfbGueltig = true;}break;
				default:break;}}
		if(lfbGueltig){this.lfbLaeuft=true;this.zeitabstand=setTimeout(function(){this.verschiebung(richtung);}.bind(this),this.aktualisierungsRate);}
	}
	this.aktLaufbandElemente=function(){this.justierePosition();
		if(this.buttonVor){if(this.posAbstand+this.anzahlSichtbBilder==this.anzahlBilder){$(this.buttonVor).className+=" inactive";this.autolfbAngabe="zurueck";}
			else{$(this.buttonVor).className=this.buttonVor.className.replace(/ inactive/gi, "");}}
		if(this.buttonZurueck){if(this.posAbstand == 0){$(this.buttonZurueck).className+=" inactive";this.autolfbAngabe="vor";}
			else{$(this.buttonZurueck).className = this.buttonZurueck.className.replace(/ inactive/gi, "");
}}}}
function ereignisHandler(element, eventTyp, funktion, benutzeSicherung){if (element.addEventListener){element.addEventListener(eventTyp, funktion, benutzeSicherung);return true;}
	else if (element.attachEvent){var ret=element.attachEvent('on' + eventTyp, funktion);return ret;}
	else {element['on' + eventTyp]=funktion;}}