// Scripts für FAQ inspired by Thierry Koblentz - www.TJKDesign.com

/*
	Dieses Script stellt die Aufklappfunktion des FAQs zur Verfügung.

	Das FAQ muß mit DL angelegt werden. Die Fragen stehen in den DT-Elementen,
	die Antwort in den DD-Elementen. Nur ein DD pro DT wird unterstützt.

	Steht beim Client kein JavaScript zur Verfügung, wird das FAQ komplett
	ausgeklappt angezeigt.

	Autor: Michael Vogt, freelance media
 */


// Die zuletzt geöffnete Frage
var lastOpenedQuestion;
var lastOpenedAnswer;

var flashProxy;
var uid;

var PDS_SEARCH_DEFAULTTEXT;
var noticeLayerClosedByUser = false;
/*
	Erweitert die Fragen mit Hyperlinks, und blendet die Antworten aus.
 */
function pdsSetupFaq( faqList) {
	if( document.getElementById( faqList)) {
		if( document.getElementById && document.getElementsByTagName) {
			var orderFaqQuestions = document.getElementById( faqList).getElementsByTagName('dt');
			var orderFaqAnswers = document.getElementById( faqList).getElementsByTagName('dd');
		}
		for( var i = 0; i < orderFaqQuestions.length; i++) {
			var zContentorder = orderFaqQuestions[i].innerHTML;
			var zHreforder = "<a href='#' onclick=\"pdsDoToggle( '" + faqList + "'," + i + ");return false\" title='Antwort anzeigen'>";

			orderFaqQuestions[i].innerHTML = zHreforder + zContentorder + "</a>";
			orderFaqQuestions[i].className='closequestion';
			orderFaqAnswers[i].className = 'hideanswer';
		}
	}
}


/*
	Fügt in das Suchfeld einen Focus- und Blurhandler ein, der die Schriftfarbe
	entsprechend der Eingabe setzt.
*/
function pdsHandleQueryColor(white) {
	var query = document.getElementById("query");

    if( query) {
		var value = query.value;
		if( PDS_SEARCH_DEFAULTTEXT != value) {
            query.style.color = "#fff";
            if( white) {
                query.style.color = "#000";
            }
		}

		query.onfocus = pdsSetColorWhite;
		query.onblur = pdsSetColorTitan;

        // Für die White Collection soll die Textfarbe Schwarz sein
        if( white) {
            query.onfocus = pdsSetColorBlack;
        }
    }
}

function pdsHandleMarketSelector(white) {
    var marketSelectItem = document.getElementById('selectMarketListItem');
    var globeImg = document.getElementById('globe');

    // Layer der Marktauswahl
    var marketList = document.getElementById('marketList');

    if (marketList) 
        if (white)
            marketList.style.backgroundColor = '#FFFFFF';
        else
            marketList.style.backgroundColor = '#000000';

    // Globus
    if (white)
        globeImg.src='/images/pds/selectmarket/white_out.gif';
    else
        globeImg.src='/images/pds/selectmarket/black_out.gif';

    //if (isExplorer) globeImg.src = globeImg.src;
            
    
    marketSelectItem.onmouseover = function() {
        if (white)
            globeImg.src='/images/pds/selectmarket/white_over.gif';
        else
            globeImg.src = '/images/pds/selectmarket/black_over.gif';

        marketList.style.display = 'block';
    }

    marketSelectItem.onmouseout = function() {
        if (white)
            globeImg.src='/images/pds/selectmarket/white_out.gif';
        else
            globeImg.src = '/images/pds/selectmarket/black_out.gif';

        marketList.style.display = 'none';
    }

    globeImg.onmouseover = function() {
        //marketList.style.overflow = 'visible';
        // marketList.style.display= 'block';
        
    }

    globeImg.onmouseout = function() {
        //marketList.style.overflow = 'visible';
        marketList.style.display = 'none';
    }
    
    
}




/*
	Fügt in das Suchfeld einen Focus- und Blurhandler ein, der die Schriftfarbe
	entsprechend der Eingabe setzt.
*/
function pdsHandleSearchHighlight() {
	var searchButton = document.getElementById( "dosearch");
    var body = document.getElementsByTagName( "body")[ 0];

    if( searchButton) {
		searchButton.onmouseover = pdsSetWhiteHighlight;
		searchButton.onmouseout = pdsClearHighlight;

        if( "whitecollection" == body.getAttribute( "id")) {
            searchButton.onmouseover = pdsSetBlackHighlight;
        }
    }
}


/*
	Wird bei window.onload aufgerufen
 */
function initPDSFAQ() {
	// 'Flip-Flop's initialisieren
	
	var pdsFAQFlipFlops = ["faqproducts", "faqordering", "faqpricesdelivery", "faqsendback"];
	for( var ff = 0; ff < pdsFAQFlipFlops.length; ff++) {
		pdsSetupFaq(pdsFAQFlipFlops[ff]);
	}
    
    // white collection?
    var body = document.getElementsByTagName( "body")[ 0];
    var white = "whitecollection" == body.getAttribute( "id");
    
	// Handler für Schriftfarbe einsetzen
	pdsHandleQueryColor(white);
    
    //Handler für das Warnungs-Layer
    //pdsHandleWarningLayer(white);
    
    // Marktauswahl (Weltkugel) initialisieren.
    pdsHandleMarketSelector(white);
    
	// Handler für den Suchen-Button einsetzen
	pdsHandleSearchHighlight();

	// click-Handler der Links der class="opennewwindow" setzen, daß ein neues Fenster geöffnet wird
	pdsRegisterNewWindowClick();
        

    // Initiate Flashproxy
    initFlashProxy();
}


function initFlashProxy() {
	// alert("initFlashProxy");
	uid = new Date().getTime();
	flashProxy = new FlashProxy(uid, '/all/media/flash/pds/JavaScriptFlashGateway.swf');
}


/*
	Wird bei window.onload aufgerufen. Überprüft ob die Seite die angezeigt werden soll zu einer
	Collection gehöhrt, und schaltet entsprechend um.
 */
function checkForCollection() {
    var url = window.location.pathname;
    var items = url.split( "/");
    var body = document.getElementsByTagName( "body")[ 0];
    var isWhite = false;
    
    if ("p0999" == items[2]) {
        isWhite = true;
        body.setAttribute( "id", "whitecollection");
        pdsSwitchLogoForIE();
    }
    pdsHandleWarningLayer(isWhite);
}

function pdsHandleWarningLayer(white) {
    var url = window.location.href;
    //alert(url);
    var winSize = getWindowSize();
    
    if (url.indexOf("shownotice=1") != -1)
    {
        var noticeLayer = document.getElementById("pdsOutsiderWarning");
        
        
        if (noticeLayer && !noticeLayerClosedByUser)
        {
            // move node to body, make it absolute;
            var body = document.getElementsByTagName("body")[0];
            body.appendChild(noticeLayer.parentNode.removeChild(noticeLayer));
            initOverlay();
            
            var _left = parseInt((winSize.x - 494)/2);
            if (_left <= 0) _left = 0;

            var _top = parseInt((winSize.y - 300) / 2 - 50);
            if (_top <= 0) _top = 0;

            noticeLayer.style.left = (_left) + "px";
            noticeLayer.style.top = (_top) + "px";
            
            var closeBtn = document.getElementById("closeBtn");
            
            
            if (white)
            //paint it white
            {
                noticeLayer.className = 'white';
                if (closeBtn) closeBtn.src="/images/pds/close_white.gif";
            }
            else
            {
                noticeLayer.removeAttribute('class');
                if (closeBtn) closeBtn.src="/images/pds/close.gif";
            }

            $(".exploreBtn:first").click(closeOutsiderNotice).hover(function() { $(this).css("cursor", "pointer") }, function() { $(this).css("cursor", "auto") });
            
            // display layer
            // noticeLayer.style.display = 'block';
            $(noticeLayer).fadeIn("fast");
        }
    }
    
}

function closeOutsiderNotice() {
    $("#pdsOutsiderWarning").fadeOut("fast", function() { $('#TB_overlay,#TB_HideSelect').remove(); });
//    if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
//        $("body", "html").css({ height: "auto", width: "auto" });
//        $("html").css("overflow", "");
//    }
//    document.onkeydown = "";
    document.onkeyup = "";
    noticeLayerClosedByUser = true;
    //return false;
}

function initOverlay() {
    if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
        $("body", "html").css({ height: "100%", width: "100%" });
        $("html").css("overflow", "hidden");
        if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
            $("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
        }
    } else {//all others
        if (document.getElementById("TB_overlay") === null) {
            $("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
        }
    }

    if (tb_detectMacXFF()) {
        $("#TB_overlay").addClass("TB_overlayMacFFBGHack"); //use png overlay so hide flash
    } else {
        $("#TB_overlay").addClass("TB_overlayBG"); //use background and opacity
    }
    

}


/*
	Schaltet den Zustand der angeklickten Frage um
 */
function pdsDoToggle(id, index) {
	var questions = document.getElementById( id).getElementsByTagName('dt');
	var answers = document.getElementById(id).getElementsByTagName('dd');

	if( lastOpenedAnswer && lastOpenedAnswer != answers[index]) {
		lastOpenedQuestion.className = 'closequestion';
		lastOpenedAnswer.className = 'hideanswer';
	}
	questions[index].className=('closequestion' == questions[index].className)?'openquestion':'closequestion';
	lastOpenedQuestion = questions[index];

	answers[index].className = ( 'hideanswer' == answers[index].className) ? 'showanswer' : 'hideanswer';
	lastOpenedAnswer = answers[index];
	
}


/*
	Blendet das Element mit der ID infoId ein. Wird z.B. verwendet,
	um auf der Kundendatenseite des Bestellprozesses die
	Datenschutzerklärung anzuzeigen
 */
function pdsOpenInfo( infoId) {
	var info = document.getElementById( infoId);
	if( info) {
		info.style.display = "block";
	}
}

/*
	Blendet das Element mit der ID infoId aus.
 */
function pdsCloseInfo( infoId) {
	var info = document.getElementById( infoId);
	if( info) {
		info.style.display = "none";
	}
}


/*
	Blendet die Vorschau des Porsche Drivers Selection Store ein.
*/
function pdsShowPddsPreview() {
    $("pddspreview").fadeIn("fast");
}

/*
	Blendet die Vorschau des Porsche Drivers Selection Store aus.
*/
function pdsHidePddsPreview() {
    $("pddspreview").fadeOut("fast");
}

	


function pdsCreateFlashMenu(flashLayer, pool, language, xmlFilePath) {
	if( document.getElementById(flashLayer)) {
    
		var params = {
			wmode:"transparent",			
			allowscriptaccess:"sameDomain"			
		};
		
		var flashvars = {
			pool:pool,
			language:parseLanguage(language),			
			xmlfilepath:xmlFilePath,
			IcId:uid,
			expressinstallxmlpath:"/all/media/flash/pds/expressinstall"
		};
		
		if (swfobject.hasFlashPlayerVersion('9.0.0'))		
			swfobject.embedSWF("/all/media/flash/pds/pd_shop_menu_standalone.swf", flashLayer, "220", "572", "9.0.0", false, flashvars, params, false);					
		//else
			//swfobject.embedSWF("/all/media/flash/pds/expressinstall/expressinstall.swf", flashLayer, "808", "572", "6.0.79", false, flashvars, params, false);
		
	}
}

function pdsCreateFlashContent(flashLayer, pool, language, categoryId, articleId, xmlFilePath) {
	if(document.getElementById(flashLayer)) {
    
		var params = {
			wmode:"opaque",
			scale:"noscale",
			allowscriptaccess:"sameDomain",
			bgcolor:"#000000"
		};
		
		var flashvars = {
			pool:pool,
			language:parseLanguage(language),
			category:categoryId,
			article:articleId,
			path:"/all/media/flash/pds/",
			xmlfilepath:xmlFilePath,
			IcId:uid,
			expressinstallxmlpath:"/all/media/flash/pds/expressinstall"
		};
		
		if (swfobject.hasFlashPlayerVersion('9.0.0'))
			swfobject.embedSWF("/all/media/flash/pds/pd_shop_items.swf", flashLayer, "808", "572", "9.0.0", false, flashvars, params, false);
		else
			document.getElementById(flashLayer).style.display = "block";
		//else
			//swfobject.embedSWF("/all/media/flash/pds/expressinstall/expressinstall.swf", flashLayer, "808", "572", "6.0.79", false, flashvars, params, false);		
	}	
}

/*
	Eventhandler. Setzt die Textfarbe des aufrufenden Objekts auf Weiß
 */
function pdsSetColorWhite() {
	this.style.color = "#fff";
	//this.focus();
	this.select();


}

/*
	Eventhandler. Setzt die Textfarbe des aufrufenden Objekts auf Titan,
	wenn ein Suchbegriff eingegeben wurde.
 */
function pdsSetColorTitan() {
	var value = this.value;
	if( PDS_SEARCH_DEFAULTTEXT == value) {
		this.style.color = "#847a6c";
	}
    unselect(this);
}

/*
	Eventhandler. Setzt die Textfarbe des aufrufenden Objekts auf Weiß
 */
function pdsSetColorBlack() {
    this.style.color = "#000";
    //this.focus();
    this.select();
}

function unselect(input)
{
    if(typeof input.selectionStart != 'undefined')
    {
        //alert("hier");
        input.selectionStart = 0;
        input.selectionEnd = 0;
    }
}

/*
	Eventhandler. Setzt das Bild des aufrufenden Objekts auf Weiß
 */
function pdsSetWhiteHighlight() {
	this.src = '/images/pds/pfeil_weiss_gross.gif';
}


/*
	Eventhandler. Setzt das Bild des aufrufenden Objekts auf Schwarz
 */
function pdsSetBlackHighlight() {
	this.src = '/images/pds/pfeil_schwarz_gross.gif';
}


/*
	Eventhandler. Setzt das Bild des aufrufenden Objekts auf Titan,
 */
function pdsClearHighlight() {
	this.src = '/images/pds/pfeil_titan_gross.gif';
}


/*
	Fügt in die Elemente mit der class="opennewwindow" (sinnvollerweise Hyperlink-Elemente)
	einen onclick-Handler ein, daß bei klick ein neues Fenster geöffnet wird
*/
function pdsRegisterNewWindowClick() {
	var externalLinks = document.getElementsByTagName( "a");
	if( externalLinks) {
		for( var index = 0; index < externalLinks.length; index++) {
			var thisLink = externalLinks[ index];
			if( -1 != thisLink.className.indexOf( "opennewwindow")) {
				thisLink.onclick = pdsOpenNewWindowHandler;
			}
		}
	}
}


/*
	Funktion der onclick-Handler für Links die ein neues Fenster öffnen sollen
*/
function pdsOpenNewWindowHandler() {
	gotoUrlNewWinSimple( this);
	return false;
}


/*
  Höhe des Flash Movies anpassen
*/
function pdsResizeFlash( height) 
{
    var flashItems = document.getElementById("flashitems");
    //var flashMovie = flashItems.getElementsByTagName("embed")[0]; // mozilla

    //if (!flashMovie)
	//{
		//flashMovie = flashItems.getElementsByTagName("object")[0]; // ie
    //}

	//if (flashMovie)
	//{
        flashItems.height = height + "px";
      //  flashMovie.height = height;
	//}
	positionFooter();
}

// call this function to stop the flash animation, and close the navigation menu etc.
function pdsFlashLostFocus()
{
    if( flashProxy) {
        flashProxy.call('outsideFlashAS');
    }
}

function pdsFlashGotFocus()
{
    if( flashProxy) {
        flashProxy.call('insideFlashAS');
    }
}


// Aufrufe zum Wechseln der Kollektionsfarbe



/*
    Der IE hat ein Problem damit, wenn zwei getUrl-Aufrufe hintereinander aus Flash
    ausgeführt werden - egal ob mit oder ohne proxy. Deshalb werden hier die zwei
    Funktionen zusammengeführt.
 */
function pdsResizeAndSwitch( size, collection, param1) {
	if ( param1 === undefined ) {
		param1 = 'off';
	}
    pdsResizeFlash( size);
    if( "whitecollection" == collection) {
        pdsSwitchToWhiteCollection(param1);
    } else {
        pdsSwitchToDefaultCollection(param1);
    }
}

/*
	Schaltet die Darstellung der Seite für die White Collection um.
	// todo: Prüfen, ob es möglich ist, vor dem Umschalten die Einträge zu speichern, damit die Werte nicht
	// hier hardcoded werden müssen
*/
function pdsSwitchToWhiteCollection(param1) {

	if ( param1 == 'off' ) {
		$('body').css('background-image', 'none');
	}
	else if (param1 == 'on') {		
		$('body').css('background-image', '');
	}
	
    // ID setzen, aufgrund derer die Darstellung der Elemente umgeschaltet wird
    var body = document.getElementsByTagName( "body")[ 0];
    body.setAttribute( "id", "whitecollection");

    pdsSwitchLogoForIE();

    // Textfarbe beim Editieren des Suchbegriffs auf schwarz setzen
    var query = document.getElementById("query");
    query.onfocus = pdsSetColorBlack;

    // Farbe des Highlights der Suchtaste auf Schwarz umstellen
    var doSearch = document.getElementById( "dosearch");
    doSearch.onmouseover = pdsSetBlackHighlight;
    
    // Die Weltkugel und die Hintergrundfarbe des Navi Layers auf weiß setzen
    pdsHandleMarketSelector(true);
    
    // Warnungs-Layer
////    pdsHandleWarningLayer(true);

    // Icon für den Warenkorb auf weiß setzen
    var imgs = document.getElementsByTagName( "img");
    for( var index = 0; index < imgs.length; index++) {
        if( "basketIcon" == imgs[ index].className) {
            imgs[ index].src = "/images/pds/warenkorb_weiss_outline.jpg";
        }
    }
}

/*
	Schaltet die Darstellung der Seite wieder so um, wie als default definiert
*/
function pdsSwitchToDefaultCollection(param1) {

	if ( param1 == 'off' ) {
		$('body').css('background-image', 'none');
	}
	else {		
		$('body').css('background-image', '');		
	}
	
    var body = document.getElementsByTagName( "body")[ 0];
    body.removeAttribute( "id");

    pdsSwitchLogoForIE();

    // Textfarbe beim Editieren des Suchbegriffs auf Weiß setzen
    var query = document.getElementById("query");
    query.onfocus = pdsSetColorWhite;

    // Farbe des Highlights der Suchtaste auf Weiß umstellen
    var doSearch = document.getElementById( "dosearch");
    doSearch.onmouseover = pdsSetWhiteHighlight;

    // Die Weltkugel und die Hintergrundfarbe des Navi Layers auf schwarz  setzen
    pdsHandleMarketSelector(false);

    // Warnungs-Layer
////    pdsHandleWarningLayer(false);
    
    // Icon für den Warenkorb auf schwarz setzen
    var imgs = document.getElementsByTagName("img");
    for( var index = 0; index < imgs.length; index++) {
        if( "basketIcon" == imgs[ index].className) {
            imgs[ index].src = "/images/pds/warenkorb_outline.jpg";
        }
    }
}


function pdsSwitchLogoForIE() {
    // Logo Umstellen
    // Sollte eigentlich auch per JavaScript möglich sein, IE hat sich aber gewehrt
    if( isExplorer) {
        var screenLogo = document.getElementById("screenlogo");
        screenLogo.parentNode.innerHTML = screenLogo.parentNode.innerHTML;		
   }
}

function pdsSwitchBackgroundForIE() {
	if( isExplorer) {
		//$('body').css('background-image', 'url(../../images/pds/background_highlights.jpg)');
		setTimeout(function() {$('body').css('background-image', ''); }, 1000);
	}
}

function parseLanguage(language) {
    var lang = (language == 'none' ? '' : language);
    return lang;

}


function getWindowSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  var size = new Object();
  size.x = myWidth;
  size.y = myHeight;
  return size;
}

function tb_detectMacXFF() {
    var userAgent = navigator.userAgent.toLowerCase();
    if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox') != -1) {
        return true;
    }
}
