var g_pageWidth = 839;
var g_personalizedContentXML;

var agt=navigator.userAgent.toLowerCase();
var isMac = ((agt.indexOf('macintosh')!=-1))?true:false;
var isExplorer = ((agt.indexOf('msie')!=-1))?true:false;
var explorerVersion = getIEVersion( agt);
var isOpera = ((agt.indexOf('opera')!=-1))?true:false;
// var g_BasketHoverTimeout = 1800; // Millisekunden (3000 Millisekunden sind 3 Sek.)
var g_BasketHoverTimeout = 300;
var g_BasketAddHoverTimeout = 3000;
var g_runOnceBasketAdd = false;

var g_infoLayerOverrideHandleOverLap = true; // handle infolayer overlaps for IE.

// Variables for product page
currentProductNumber = "";
currentProductInfoTextId = "";
defaultProductImageUrl = "";
defaultProductPrice = "";
defaultProductPriceNet = "";

//window.onload = initAll;

function initAll()
{
    // Falls es schon aufgerufen wurde kehre zurück.
    if (arguments.callee.done) return;

    // Damit jemand *IE6 schief anguckt*  nicht versucht diese Funktion zweimal aufzurufen flagge es..
    arguments.callee.done = true;

    // Die png Bilder für IE6 darstellbar machen
    processShopPngForIE6();

    // Feststellen, ob das aufgerufene Produkt zur White Collection gehört
    checkForCollection();

    FillPreviewBasket();
    initPDSFAQ();

    // Run Flash
    if (typeof(RunPDSFlashContent) != "undefined" && RunPDSFlashContent == true)
        pdsCreateFlashContent(PDSFlashParams[0], PDSFlashParams[1], PDSFlashParams[2], PDSFlashParams[3], PDSFlashParams[4], PDSFlashParams[5]);
    else
        pdsCreateFlashMenu(PDSFlashParams[0], PDSFlashParams[1], PDSFlashParams[2], PDSFlashParams[3]);
        
	LoadFiles();

    LoadPersonalizedContent();
}

/* Flash Homepage Banner*/

var flashFallbackImage = null;
var flashHomepageBanner = null;
var flashHomepageBannerLink = null;



/* Personalized Content */

var usePersonalizedContent = false;

var currentPool = null;
var currentLanguage = null;
var currentProduct = null;
var useRecentProducts = false;
var useExtendedBasket = false;

function LoadPersonalizedContent()
{
    if (usePersonalizedContent)
    {
   
        //url zusammenfuegen
		
        var url = "/PersonalizedContent.aspx?sitemappool=" + currentPool + "&sitemaplanguage=" + currentLanguage;
        
		if (currentProduct) 
			url += "&recentarticleadd=" + escape(currentProduct);
         
        if (useRecentProducts)
			url += "&showrecentarticlelist=true";
         
		if (useExtendedBasket)
			url += "&showbasketinfo=true";

		// dieser Parameter ist immer da. Server-Code kuemmert sich darum, ob die Knote "basketadd" geschrieben werden muss.
		url += "&showbasketadd=true";

        //personalized Content laden
        ProcessPersonalizedContent(url);
		
    }
}



function positionFooter()
{
    var footer = document.getElementById("footer");
    
   // setDocumentSize();
	if (footer)
	{
		footer.innerHTML = footer.innerHTML;
	}
	
}


function containsStr(s, find) {
	return (s.indexOf(find) != -1);
}


function setPaymentFormTarget(form, ccMode, creditcardUrl, defaultUrl)
{
	// more than one payment type is available as a choice.
	if(form.paymentmethod[1])
	{
		if(form.paymentmethod[1].checked || ccMode=="direct" || form.sfpCardNumber == null) 
		{
			form.action = defaultUrl;
		}
		else
		{
			form.action = creditcardUrl;
		}
	}
  else
  {
	// this is the case where we have only one payment type.
	// and thus no radio buttons for the payment types to choose from.
	if(form.paymentmethod.value == "cc")
	{
		// credit card url to check.
		form.action = creditcardUrl;
	}
	else
	{
		// bank account
		form.action = defaultUrl;
	}
  }
	return true;
}



function FillPreviewBasket()
{
	var articlecount = GetCookieValue("shop-basket-articlecount");
    var price = GetCookieValue("shop-basket-price");
	if (articlecount == "") {
		articlecount = 0; // IE and maybe other browsers misses cookie information on first start.
	}
	if (articlecount == 0)
	{
		WriteHtmlContent("shop-basket-articlecount-inactive", articlecount);
		WriteHtmlContent("shop-basket-price-inactive", price);
		var spanBasket = document.getElementById("previewShoppingBasketInactive");
		if (spanBasket) spanBasket.style.display = "block"; 
	}

	else if (articlecount > 0)
	{
		var spanBasket = document.getElementById("previewShoppingBasketInactive");
		if (spanBasket) spanBasket.style.display = "none";
		
		WriteHtmlContent("shop-basket-articlecount-active", articlecount);
		WriteHtmlContent("shop-basket-price-active", price);
		var spanBasket = document.getElementById("previewShoppingBasketActive");
		if (spanBasket) spanBasket.style.display = "block";

		var proceedtocashierLink = document.getElementById("proceedtocashierLink");
		if (proceedtocashierLink) proceedtocashierLink.style.display = "block";

	}
		
}

function GetCookieValue(name)
{
	var i=0;
    var suche = name + "=";
	var basketText = "";
	while(i<document.cookie.length)
	{
		if(document.cookie.substring(i, i+suche.length)==suche)
		{
			var ende = document.cookie.indexOf(";", i+suche.length);
			ende = (ende>-1) ? ende : document.cookie.length;
			var cook = document.cookie.substring(i+suche.length, ende);
			basketText = unescape(cook);
			i = document.cookie.length;
		}
		i++;
	}
	return basketText;
}

function WriteHtmlContent(name, value)
{
	var divText = document.getElementById(name);
	if (divText)
	{
		divText.innerHTML = value;
	}
}

function gotoUrlNewWinSimple(s)
{
    newWin = window.open(s, "newWin" + getRandomInt(10000));
}


function gotoUrlNewWinDefaultSize(s)
{
    sWidth = 570;
    sHeight = 610;

    sWidth += 20;
    sHeight += 25;
    newWin = window.open(s, "newWin" + getRandomInt(10000), "width=" + sWidth + ",height=" + sHeight + ",left=40,top=40,dependent=yes,location=no,resizable=no,scrollbars=no,status=no");
}

function getRandomInt(max)
{
    return Math.round( Math.random() * (max-1) );
}


function SubmitBasketForm(inputfield)
{
	if(inputfield.value!="")
	{
		var editbasketscript = document.getElementById("editbasketscript"); 
		editbasketscript.value = "true";
		
		var basket = document.getElementById("formcontrol"); 
		basket.submit();
	}
}

function SubmitBasketFormPlusMinus(position, value)
{
	var editbasketscript = document.getElementById("editbasketscript"); 
	editbasketscript.value = "true";
	var plusminusposition = document.getElementById("plusminusposition"); 
	plusminusposition.value = position;
	var plusminusvalue = document.getElementById("plusminusvalue");
	if (value == 'delete')
	{
		// delete function is currently only in Porsche Design Shop available.
		var currentAmount = document.forms['basketform'].elements[position + '-amount'].value;
		if (!isNaN(currentAmount))
			plusminusvalue.value = 0-currentAmount;
		else
			plusminusvalue.value = 0;
	}
	else
		plusminusvalue.value = value;
}

function GoArticleReminder(url)
{
	var elmProductIDInputField = document.getElementById("ProductID");
	url += "&article_variantid=" + encodeURI(elmProductIDInputField.value);

	location.href = url;
}

function gotoUrlNewWinSizeScrollable(s, sWidth, sHeight)
{
    sWidth += 20;
    sHeight += 25;
    newWin = window.open(s, "newWin" + getRandomInt(10000), "width=" + sWidth + ",height=" + sHeight + ",left=40,top=40,dependent=yes,menubar=no,toolbar=no,location=no,resizable=no,scrollbars=yes,status=no");
}

function gotoUrlNewWinSizeScrollableResizeable(s, sWidth, sHeight)
{
    sWidth += 20;
    sHeight += 25;
    newWin = window.open(s, "newWin" + getRandomInt(10000), "width=" + sWidth + ",height=" + sHeight + ",left=40,top=40,dependent=yes,location=no,resizable=yes,scrollbars=yes,status=no");
}




/* is this stuff defined? */
if (!document.ELEMENT_NODE) {
	document.ELEMENT_NODE = 1;
	document.ATTRIBUTE_NODE = 2;
	document.TEXT_NODE = 3;
	document.CDATA_SECTION_NODE = 4;
	document.ENTITY_REFERENCE_NODE = 5;
	document.ENTITY_NODE = 6;
	document.PROCESSING_INSTRUCTION_NODE = 7;
	document.COMMENT_NODE = 8;
	document.DOCUMENT_NODE = 9;
	document.DOCUMENT_TYPE_NODE = 10;
	document.DOCUMENT_FRAGMENT_NODE = 11;
	document.NOTATION_NODE = 12;
}
// ** IE import node Implementierung **


document._importNode = function(node, allChildren) {
	/* find the node type to import */
	switch (node.nodeType) {
		case document.ELEMENT_NODE:
			/* create a new element */
			var newNode = document.createElement(node.nodeName);
			/* does the node have any attributes to add? */
			if (node.attributes && node.attributes.length > 0)
				/* add all of the attributes */
				for (var i = 0, il = node.attributes.length; i < il;)
					newNode.setAttribute(node.attributes[i].nodeName, node.getAttribute(node.attributes[i++].nodeName));
			/* are we going after children too, and does the node have any? */
			if (allChildren && node.childNodes && node.childNodes.length > 0)
				/* recursively get all of the child nodes */
				for (var i = 0, il = node.childNodes.length; i < il;)
					newNode.appendChild(document._importNode(node.childNodes[i++], allChildren));
			return newNode;
			break;
		case document.TEXT_NODE:
		case document.CDATA_SECTION_NODE:
		case document.COMMENT_NODE:
			return document.createTextNode(node.nodeValue);
			break;
	}
};


function ProcessPersonalizedContent(url)
{
	var req = createXMLHTTPObject();
	if (req.overrideMimeType) req.overrideMimeType('text/xml');
	// else alert("overrideMimeType nicht verfuegbar"); //debug
	
    if (!req) return;
	
	req.open("GET",url,true);	
	//req.setRequestHeader('User-Agent','XMLHTTP/1.0');
	req.onreadystatechange = function () {
		if (req.readyState != 4) return;
		if (req.status != 200 && req.status != 304) {
			return;
		}
		
		g_personalizedContentXML = req.responseXML;
		setupPersonalizedContent();
	}
	if (req.readyState == 4) return;
	req.send(null);
}

function setupPersonalizedContent()
{

	var noRecentArticles = false;
	var noBasket = false;
	var basketAdd = false;
	
	// return immediately if the personalized content could not be read.
	if (!g_personalizedContentXML) return;
	
	// Don't go further if the list of recent items is empty.
	//if (!(g_personalizedContentXML.documentElement.getElementsByTagName("recentProducts")[0]))
		noRecentArticles = true;
		
	if (!(g_personalizedContentXML.documentElement.getElementsByTagName("baskethover")[0]))
		noBasket = true;
	
	if (g_personalizedContentXML.documentElement.getElementsByTagName("basketadd")[0])
		basketAdd = true;
	
	
	// alert("noRecentArticles: " + noRecentArticles + "\nnoBasket: " + noBasket); //debug
	// alert(g_personalizedContentXML.documentElement.getElementsByTagName("baskethover")[0]); // debug
	
	if (!noRecentArticles)
	{
		var recentProductsTemp = g_personalizedContentXML.documentElement.getElementsByTagName("recentProducts")[0].childNodes[0];
		var hoversRecentPrdTemp =  g_personalizedContentXML.documentElement.getElementsByTagName("recentProductsInfo")[0];
		
		// ** recent product Artikel (hover) ** //
		if (recentProductsTemp.nodeName != "div")
			recentProductsTemp = recentProductsTemp.nextSibling;
		var recentPrdContainer = document.getElementById("containerRecentProducts");
		if (!recentPrdContainer) return;
		var recentProducts = document._importNode(recentProductsTemp, true);
		// var recentProducts = recentProductsTemp.cloneNode(true);	
		recentPrdContainer.appendChild(recentProducts);
		// hack for IE.
		if (isExplorer || isMac) 
		{
			//if (isExplorer ) alert("Explorer hier.");
			//if (isMac ) alert("Mac hier.");
			
			recentPrdContainer.innerHTML = recentPrdContainer.innerHTML;
		}
		//Mac / Safari does not show the images right away.
		
		// ** recent Product info layers **//
		var containerHoverInfo = document.getElementById("containerHoverInfo");	
		if (!containerHoverInfo) return;

		for (i=0; i<hoversRecentPrdTemp.childNodes.length; i++)
		{
			if (hoversRecentPrdTemp.childNodes[i].nodeType != document.ELEMENT_NODE) 
				continue;
			var hoversRecentPrd = document._importNode(hoversRecentPrdTemp.childNodes[i], true);
			containerHoverInfo.appendChild(hoversRecentPrd);		
		}
		// hack for IE.
		if (!document.importNode) containerHoverInfo.innerHTML = containerHoverInfo.innerHTML;
		
		// show the complete layer only if there are recent items in it,
		// and only if we have come clean so far (no problems with the connection, imported elements, all nodes found etc.)
		recentPrdContainer.style.visibility = 'visible';
		recentPrdContainer.style.display = 'block';
	}
			

	
	// setup basket hover layer
	if (!noBasket)	
	{
		var hoverBasketTemp = g_personalizedContentXML.documentElement.getElementsByTagName("baskethover")[0].childNodes[0];
		if (hoverBasketTemp.nodeType != document.ELEMENT_NODE)
			hoverBasketTemp = hoverBasketTemp.nextSibling;
		
		var hoverElem = document.getElementById("previewShoppingBasketActive");
		
		if (!hoverElem) return;

		var hoverBasket = document._importNode(hoverBasketTemp, true);
		hoverElem.appendChild(hoverBasket);

		//  the recently (just) added item
		if (basketAdd)
		{
			var hoverBasketAddTemp = g_personalizedContentXML.documentElement.getElementsByTagName("basketadd")[0].childNodes[0];
			if (hoverBasketAddTemp.nodeType != document.ELEMENT_NODE)
				hoverBasketAddTemp = hoverBasketAddTemp.nextSibling;
				
			var hoverBasketAdd = document._importNode(hoverBasketAddTemp, true);
			hoverElem.appendChild(hoverBasketAdd);

        }
		
		if (isExplorer) hoverElem.innerHTML = hoverElem.innerHTML;

        // Filter für transparente PNG einsetzen
        processPngForIE6( basketLayer ? basketLayer : getBasketHoverLayer());

		if (basketAdd)
		{			
			g_runOnceBasketAdd = true; // ensure that the just added item will be shown only once.
			enlargeBasket();  // fire both events back to back.
			condenseBasket(); // settimeout and cleartimeout routines will manage the timings anyway.
		}
	}
	
}

/* Damit der IE6 PNG mit Alphakanal im Warenkorb-Layer korrekt anzeigt, einen Filter einsetzen */
function processPngForIE6( element) {
    var basketImages = element.getElementsByTagName( "img");
    if( 6 == explorerVersion) { //
        for( var index = basketImages.length - 1; 0 <= index; index--) {
            // Das Bild selbst nicht anzeigen. Stattdessen wird in den Parent die Ausgabe eines Filters ausgegeben
            var source = basketImages[ index].getAttribute( "src");
            if( -1 != source.indexOf( "filestore")) {
                addIE6Filter( basketImages[ index], source);
            }
        }
    }
}

/* Damit der IE6 PNG mit Alphakanal auf der Übersichtsseite im Shop korrekt anzeigt, einen Filter einsetzen */
function processShopPngForIE6() {
    var parent = document.getElementById( "shoppingBasketLarge");
    if( parent) {
        processPngForIE6( parent);
    }
}

function addIE6Filter( element, source) {
    var thisParent = element.parentNode;
    thisParent.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + source + "', sizingMethod='image');";

    // Bild konnte mit Hilfe von CSS nicht ausgeblendet werden.
    thisParent.removeChild( element);

    // Damit der IE die Änderungen übernimmt
    thisParent.innerHTML = thisParent.innerHTML;
}

var basketLayer;
var basketLayerActive; // timeout-event 

function enlargeBasket()
{
	if (!basketLayer) basketLayer = getBasketHoverLayer();
	window.clearTimeout(basketLayerActive);
	setBasketSize(basketLayer, true);
}

function condenseBasket()
{
	if (!basketLayer) basketLayer = getBasketHoverLayer();
	var timeOut = g_BasketHoverTimeout;
	if (g_runOnceBasketAdd) timeOut = g_BasketAddHoverTimeout;
	basketLayerActive = window.setTimeout('setBasketSize(basketLayer, false)', timeOut);	
}

function getBasketHoverLayer()
{
	return document.getElementById("previewShoppingBasketActive");
}

function setBasketSize(elm, enlarge)
{
	if (!elm) return;

	var items = document.getElementById("hoverBasketDetailedItems"); // table of items in shopping cart
	var basketAdd = document.getElementById("basketadditem"); // block showing the just added item.
	if (!items) return;
	if (g_runOnceBasketAdd && !basketAdd) return;
	
	if (enlarge)
	{
        if (g_runOnceBasketAdd)
		{
			basketAdd.style.display = 'block';
		}
		else
		{
			items.style.display = 'block';
			if (basketAdd) basketAdd.style.display = 'none';
		}
	}
	else
	{
		if (g_runOnceBasketAdd)
		{
			basketAdd.style.display = 'none';
			g_runOnceBasketAdd = false;
		}
		else
		{
			items.style.display = 'none';			
		}
	}
}

var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
	var xmlhttp = false;
	for (var i=0;i<XMLHttpFactories.length;i++) {
		try {
			xmlhttp = XMLHttpFactories[i]();
		}
		catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}


function changeZIndexMenu(idx)
{
	elem = document.getElementById("menu");
	if(elem)
	{
		var newIndex = (idx == 1) ? 20 : 0;
		elem.style.display = "none";
		elem.style.zIndex = newIndex;
		elem.style.display = "block";
	}

}

function LoadFiles()
{
	var el = document.createElement('link');
	el.rel = 'stylesheet';
	el.type = 'text/css';
	el.href = '/Styles/PDS/thickbox.css';
	document.getElementsByTagName('head')[0].appendChild(el);	
	
	var el2 = document.createElement('script');
	el2.src = '/Script/PDS/thickbox.js';
	el2.type = 'text/javascript';	
	document.getElementsByTagName('head')[0].appendChild(el2);
}

function showPdsContact()
{	
	//tb_show(null, 'window.location.hostname/all/transitional/' + currentPool + '/PDS_contact/Contact.aspx?TB_iframe=true&height=235&width=235', false);
	//alert('host: ' + window.location.hostname + "\npool: " + currentPool + "\nprotocol: " + window.location.protocol);
	tb_show(null, window.location.protocol + '//' + window.location.hostname + '/all/transitional/' + currentPool + '/PDS_contact/Contact.aspx?TB_iframe=true&height=258&width=235', false);
}

function getWinSize(win)
{
	if(!win) win = window;
	var pos = {x:0,y:0};
	if(typeof win.innerWidth != 'undefined')
	{
		pos.w = win.innerWidth + 14;
		pos.h = win.innerHeight;
	}
	else if(win.document.body)
	{
		pos.w = parseInt(win.document.body.clientWidth) + 30;
		pos.h = parseInt(win.document.body.clientHeight);
	}
	return pos;
}


/* Ermittelt die Version des IE. von http://msdn.microsoft.com/library/?url=/workshop/author/dhtml/overview/browserdetection.asp?frame=true */
function getIEVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}
/* dummy functions to sink pdds info functions  */
function showInfo(dummy)  {}
function hideInfo(dummy)  {}