function setImg(e,s) {
	e.src = s;
}

function toggleImg(e) {
	var eImg = e.getElementsByTagName("img")[0];
	var eImgSrc = eImg.src.substring(0,(eImg.src.length - 4));
	if (eImgSrc.indexOf("_grau") == -1) {
		eImgSrc += "_grau.png";
		setImg(eImg,eImgSrc);
	} else {
		eImgSrc = eImgSrc.substring(0,(eImgSrc.length - 5)) + ".png";
		setImg(eImg,eImgSrc);
	}
}

function AjaxObject(url) {                                           // This is the object constructor
	var that=this;                                                    // A workaround for some javascript idiosyncrocies
	var updating = false;                                             // Set to true if this object is already working on a request
	this.callback = function() {}                                     // A post-processing call -- a stub you overwrite.

	this.update = function(passData, method) {                        // Initiates the server call.
		if (!method) { method = "POST"; }
		if (updating==true) { return false; }                          // Abort if we're already processing a call.
//		updating=true;                                                 // Set the updating flag.
		var AJAX = null;                                               // Initialize the AJAX variable.
		try {
			AJAX = new XMLHttpRequest();
		} catch (trymicrosoft) {
			try {
				AJAX = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (othermicrosoft) {
				try {
					AJAX = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (failed) {
					AJAX = null;
				}
			}
		}
		if (AJAX==null) {                                              // If we couldn't initialize Ajax...
			alert("Ihre Browser unterstützt kein AJAX.");               // Sorry msg.                                              
			return false                                                // Return false (WARNING - SAME AS ALREADY PROCESSING!)
		} else {
			AJAX.onreadystatechange = function() {                      // When the browser has the request info..
				if (AJAX.readyState==4 || AJAX.readyState=="complete") { //   see if the complete flag is set.
					if (AJAX.status == 200) {
						that.data = AJAX.responseText.replace(/^\s*([\S ]+)\s*$/,'$1'); //   It is, so put the new data in the object's layer
						that.responseText = AJAX.responseText;
						that.responseXML = AJAX.responseXML;
						delete AJAX;                                       //   delete the AJAX object since it's done.
						updating=false;                                    //   Set the updating flag to false so we can do a new request
						that.callback();                                   //   Call the post-processing function.
					} else {
						// AJAX response error
						alert("Fehler in AJAX Antwort.");
					}
				}                                                        // End Ajax readystate check.
			}                                                           // End create post-process fucntion block.
			var timestamp = new Date();                                 // Get a new date (this will make the url unique)
			if (method == 'POST') {
				AJAX.open(method, urlCall, true);                        // Open the url this object was set-up with.
				AJAX.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				AJAX.setRequestHeader('Content-length', passData.length);
				AJAX.send(passData);
			} else {
				var uri=urlCall+'?'+passData+'&timestamp='+(timestamp*1); // Append date to url (so the browser doesn't cache the call)
				AJAX.open(method, uri, true);                             // Open the url this object was set-up with.
				AJAX.send(null);                                          // Send the request.
			}
			return true;                                                // Everything went a-ok.
		}                                                              // End Ajax setup aok if/else block                 
	}
	
	// This area set up on constructor calls.
	var urlCall = url;                                                // Remember the url associated with this object.
}                                                                    // End AjaxObject

var fades		= new Array (0,  0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1);
var fades_to	= new Array ();

function addWakoItem (bestellnr, objBtn, objDiv) {
	var a = new AjaxObject ('/warenkorb/additem_ajax.cfm');
	a.callback = addWakoItemResponse;
	a.bestellnr = bestellnr;
	a.update ('bestellnr=' + bestellnr, 'GET');

	// Div einblenden
	objDiv = document.getElementById('div_titel' + bestellnr);
	//objDiv.style.top = (getPosY(objDiv) - 75) + 'px';
	setOpacity('div_titel' + bestellnr, fades[0], 'block');
	for (i = 1; i < fades.length; i++) {
		window.setTimeout('setOpacity(\'div_titel' + bestellnr + '\', ' + fades[i] + ', \'block\', true);', 40 * i);
	}
}
function addWakoItemResponse () {
	var xml = this.responseXML;
	if (xml) {
		if (getNodeValue(xml, 'result') == 'success') {
//			alert ('Es befinden sich ' + getNodeValue(xml, 'wako_items') + ' Artikel in Ihrem Warenkorb');
			document.getElementById('div_titel' + this.bestellnr).innerHTML = getNodeValue(xml, 'html');
			var wl = parent.document.getElementById('wakolink');
			if (!wl) {
				var wl = document.getElementById('wakolink');
			}
			if (wl) {
				var anz = getNodeValue(xml, 'wako_items');
				if (anz == 0) {
					wl.innerHTML = 'Warenkorb (noch leer)';
				} else {
					wl.innerHTML = 'Warenkorb (' + anz + ')';
				}
			}
		} else {
			document.getElementById('div_titel' + this.bestellnr).innerHTML = '<strong>Fehler:<br/></strong>' + getNodeValue(xml, 'html');
		}
	} else {
		document.getElementById('div_titel' + this.bestellnr).innerHTML = 'Der Titel konnte nicht in den Warenkorb gelegt werden.';
	}
	if (fades_to[this.bestellnr]) {
		window.clearTimeout(fades_to[this.bestellnr]);
	}
	fades_to[this.bestellnr] = window.setTimeout('startFadeoutAjaxResponse(\'div_titel' + this.bestellnr + '\');', 5000);
}

function addBookmark (bestellnr) {
	var a = new AjaxObject ('/merken.cfm');
	a.callback = addBookmarkResponse;
	a.bestellnr = bestellnr;
	a.update ('bestellnr=' + bestellnr, 'GET');

	// Div einblenden
	objDiv = document.getElementById('div_titel' + bestellnr);
	objDiv.innerHTML = 'Der Titel wird hinzugef&uuml;gt...';
	//objDiv.style.top = (getPosY(objDiv) - 75) + 'px';
	setOpacity('div_titel' + bestellnr, fades[0], 'block');
	for (i = 1; i < fades.length; i++) {
		window.setTimeout('setOpacity(\'div_titel' + bestellnr + '\', ' + fades[i] + ', \'block\', true);', 40 * i);
	}
}
function addBookmarkResponse () {
	var xml = this.responseXML;
	if (xml) {
		if (getNodeValue(xml, 'result') == 'success') {
			document.getElementById('div_titel' + this.bestellnr).innerHTML = getNodeValue(xml, 'html');
			/*document.getElementById('bookmark_titel' + this.bestellnr).style.display = 'inline';*/
			var pbtd = parent.document.getElementById('bookmarktd_titel' + this.bestellnr);
			if (pbtd) {
				pbtd.innerHTML = '<div class="buch_merken_i">&nbsp;</div>';
			}
			var btd = document.getElementById('bookmarktd_titel' + this.bestellnr);
			if (btd) {
				btd.innerHTML = '<div class="buch_merken_i">&nbsp;</div>';
			}
			var bl = parent.document.getElementById('bookmarklink');
			if (!bl) {
				var bl = document.getElementById('bookmarklink');
			}
			if (bl) {
				var anz = getNodeValue(xml, 'bookmarks');
				if (anz == 0) {
					bl.innerHTML = 'Merkzettel (noch leer)';
				} else {
					bl.innerHTML = 'Merkzettel (' + anz + ')';
				}
			}
			var bt = document.getElementById('bookmark_titel' + this.bestellnr);
			if (bt) {
				setOpacity('bookmark_titel' + this.bestellnr, fades[0], 'inline');
				for (i = 1; i < fades.length; i++) {
					window.setTimeout('setOpacity(\'bookmark_titel' + this.bestellnr + '\', ' + fades[i] + ', \'inline\', true);', 40 * i);
				}
			} else {
				bt = parent.document.getElementById('bookmark_titel' + this.bestellnr);
				if (bt) {
					bt.style.display = 'inline';
				}
			}
		} else {
			document.getElementById('div_titel' + this.bestellnr).innerHTML = '<strong>Fehler:<br/></strong>' + getNodeValue(xml, 'html');
		}
	} else {
		document.getElementById('div_titel' + this.bestellnr).innerHTML = 'Der Titel konnte nicht auf Ihre Mekrliste gesetzt werden.';
	}
	if (fades_to[this.bestellnr]) {
		window.clearTimeout(fades_to[this.bestellnr]);
	}
	fades_to[this.bestellnr] = window.setTimeout('startFadeoutAjaxResponse(\'div_titel' + this.bestellnr + '\');', 5000);
}


function startFadeoutAjaxResponse(id) {
	objDiv = document.getElementById(id);
	setOpacity(objDiv, fades[fades.length - 1], 'block');
	for (i = 1; i < fades.length; i++) {
		var disp = 'block';
		if (i == fades.length - 1) {
			disp = 'none';
		}
		window.setTimeout('setOpacity(\'' + id + '\', ' + fades[fades.length - i] + ', \'' + disp + '\', false);', 40 * i);
	}
}

function setOpacity (obj, opacity, display, fadein) {
	if (typeof obj != 'object') {
		obj = document.getElementById(obj);
	}
	if (fadein == true || obj.style.display == 'block') {
		obj.style.opacity = opacity;
		obj.style.MozOpacity = opacity;
		obj.style.KhtmlOpacity = opacity;
		obj.style.filter = 'alpha(opacity=' + (opacity * 100) + ')';
		obj.style.display = display;
	}
}





// Für XML auslesen
function getNode (obj, tagname, index_no) {
	if (!index_no) {
		index_no = 0;
	}
	if (!obj.getElementsByTagName(tagname) || obj.getElementsByTagName(tagname).length < index_no) {
		return;
	}
	return obj.getElementsByTagName(tagname)[index_no];
}
function getNodeValue (obj, tagname, index_no) {
	var node = getNode(obj, tagname, index_no);
	if (node) {
		return node.firstChild.nodeValue;
	}
}


// Elemente Anhand von ID oder Name auslesen
function $ (id) {
	return document.getElementById(id);
}
function _ (name, obj) {
	if (typeof obj != 'object') {
		obj = document;
	}
	return obj.getElementsByName(name);
}


// Positionen und Maße eines Elements auslesen
// Parameter: ID oder Object
function getPosX(obj) {
	var ret=0;
	if (typeof obj != 'object') {
		obj = $(obj);
	}
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			ret += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	} else if (obj.x) {
		ret += obj.x;
	}
	return ret;
}
function getPosY(obj) {
	var ret=0;
	if (typeof obj != 'object') {
		obj = $(obj);
	}
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			ret += obj.offsetTop;
			obj = obj.offsetParent;
		}
	} else if (obj.y) {
		ret += obj.y;
	}
	return ret;
}
function getHeight(obj) {
	var ret=0;
	if (typeof obj != 'object') {
		obj = $(obj);
	}
	if (obj.offsetHeight) {
		return obj.offsetHeight;
	}
}
function getWidth(obj) {
	var ret=0;
	if (typeof obj != 'object') {
		obj = $(obj);
	}
	if (obj.offsetWidth) {
		return obj.offsetWidth;
	}
}