/********************************************************************/
// general functions
/********************************************************************/

// address flash movie for external interface in action script
function thisMovie( movieName )
{
    if ( navigator.appName.indexOf("Microsoft") != -1 )
    {
        return window[movieName];
    }
    else
    {
        return document[movieName];
    }
}


function openRecommendForm( webpage )
{
	WEBROOT = document.getElementById("logo").getElementsByTagName("a")[0].href;
	var recommendWin = window.open( WEBROOT + 'seite_empfehlen?page=' + webpage, 'recommendform', 'left=100, top=100, width=400, height=600, scrollbars=no, location=no, toolbar=no, status=yes' );
}


function openPrintWin ( url )
{
	var w = 660;
	var h = 660;
	var printwin = window.open( url, "printwin", "toolbar=yes,menubar=yes,status=0,scrollbars=1,width=" + w + ",height=" + h + ",resizable=0,top=100,left=100" );
	printwin.focus();
}


// navigation
function naviHover ()
{
	// IE6-workaround
	if ( document.all && document.getElementById )
	{
		var naviDiv = document.getElementById('navigation');
		if ( naviDiv )
		{
			var aULs = naviDiv.getElementsByTagName("ul");
			var naviElms = [];
			for (var i=0, nElm; nElm=aULs[i]; i+=1) {
				if (/(^| )navi( |$)/.test(nElm.className)) {
					naviElms.push(nElm);
				}
			}
			for ( var i=0; i<naviElms.length; i++ )
			{
				var navRoot = naviElms[i];
				for ( var j=0; j<navRoot.childNodes.length; j++ )
				{
					node = navRoot.childNodes[j];
					if ( node.nodeName == "LI" )
					{	// aenderungen fuer alle <LI>
						node.onmouseover = function () {
							this.className += " over";
						};
						node.onmouseout = function () {
							this.className = this.className.replace(" over", "");
						};
					}
				}
			}
		}
	}
}

$(document).ready(function() {

	var WEBROOT = $("#logo a:first").attr("href");

	/* fancybox */
	$("a.slideshow").fancybox();

	var simProdElm = document.getElementById("similar-products");
	if (!simProdElm) { return; }

	findPos = function(obj) {
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			do {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
			} while (obj = obj.offsetParent);
		}
		return [curleft,curtop];
	};


	var langKey = document.documentElement.getAttribute("xml:lang");
	var dataURL = WEBROOT + "static.products-ajax.php";
	var idTpl = "product-range-";

	var rangeUl = function(create) {
		create = create || false;

		var rangeUlId = "product-range-tables";

		var rangeUl = document.getElementById(rangeUlId);
		if (!rangeUl && create) {
			rangeUl = document.createElement("ul");
			simProdElm.appendChild(rangeUl);
			rangeUl.id = rangeUlId;
			rangeUl.add = function(num, heading, tableHTML) {
				var liElm = document.createElement("li");
				liElm._num = num;
				liElm.id = idTpl + num;
				liElm.innerHTML = tableHTML;
				liElm.insertBefore(heading, liElm.firstChild);
				var append = true;
				if (rangeUl.childNodes.length > 0) {
					var beforeElm = rangeUl.firstChild;
					while (beforeElm._num < num) {
						beforeElm = beforeElm.nextSibling;
						if (!beforeElm) { break; }
					}
					append = false;
				}
				if (append) {
					rangeUl.appendChild(liElm);
				}
				else {
					rangeUl.insertBefore(liElm, beforeElm);
				}
				$(liElm).hide().slideDown("slow", function() {
					window.scrollTo(0, findPos(liElm)[1]);
				});
			};

			rangeUl.get = function(num) {
				var elm = null;
				for (var i=0, child; child=rangeUl.childNodes[i]; i+=1) {
					if (child._num === num) {
						elm = child;
						break;
					}
				}
				return elm;
			}
		}

		return rangeUl;
	}

	var ajaxHandler = function(table) {
		var thumb = $(".productThumb", simProdElm).get(this._num);

		var prodTitle = thumb.getElementsByTagName("h4")[0].firstChild.data.replace(/^\s+|\s+$/, "");
		var prodImg = thumb.getElementsByTagName("img")[0].cloneNode(true);

		var productThumb = this._aElm.parentNode;
		while (!$(productThumb).hasClass("productThumb")) {
			productThumb = productThumb.parentNode;
		}
		$(productThumb).addClass("inactive");

		var heading = document.createDocumentFragment();
		heading.appendChild(prodImg);
		heading.appendChild(document.createElement("h4"));
		heading.lastChild.appendChild(document.createTextNode(prodTitle));
		rangeUl(true).add(this._num, heading, table);
	};

	var setupLinks = function(rangeMsg) {
		var rangeLinkTpl = document.createDocumentFragment();
		rangeLinkTpl.appendChild(document.createTextNode(" "));
		rangeLinkTpl.appendChild(document.createElement("a"));
		rangeLinkTpl.lastChild.appendChild(document.createTextNode("> "+rangeMsg[langKey]));

		var num = 0;
		$(".productThumb", simProdElm).each(function() {
			this._num = num;
			$("a", this).each(function() {
				this._num = num;
			});
			num += 1;
		});


		var links = $("a", simProdElm);
		var rangeLink;
		for (var i=0, link; link=links[i]; i+=1) {
			if (link.getElementsByTagName("img").length === 0) {
				link._toDetailPage = true;
				rangeLink = rangeLinkTpl.cloneNode(true);
				rangeLink.lastChild._num = link._num;
				rangeLink.lastChild._prodId = link.href.match(/\d+$/)[0];
				rangeLink.lastChild._toDetailPage = false;
				rangeLink.lastChild.href = "#" + idTpl + link._num;
				link.parentNode.appendChild(rangeLink);
			}
			else {
				link._toDetailPage = true;
				//link._prodId = link.href.match(/\d+$/)[0];
				//link.href = "#" + idTpl + link._num;
			}
		}

		$(simProdElm).bind("click", function(event) {

			var target = event.target;
			while (target !== simProdElm && (typeof target.href === "undefined" || target.nodeName === "IMG" /* IE */)) {
				target = target.parentNode;
			}
			if (target === simProdElm || target._toDetailPage) { return; }

			if (!rangeUl() || !rangeUl().get(target._num)) {
				event.preventDefault();
				event.stopPropagation();
				jQuery.ajax({
					beforeSend : function(request) {
						this._num = target._num;
						this._aElm = target;
					},
					data : {"id" : target._prodId, "lang" : langKey},
					success : ajaxHandler,
					url : dataURL
				});
			}

		});
	};

	jQuery.getJSON(dataURL, {}, setupLinks);
});

// Aktives Ziel
$(document).ready(function() {
	var hash = window.location.hash.replace(/^#/, '');
	var targetElm = document.getElementById(hash);
	if (!document.getElementById("sale-items")) { return; }
	else if (targetElm) {
		targetElm.parentNode.className += " hash-target";
	}
});
