/************************************/
/* Erweiterung für JD Power 2008/03 */
/* -> Mouseovers konfiguriertbar    */
/* -> hl = "hilite"                 */
/* -> ll = "lolite"                 */
/************************************/
var g_homemenu_hl_fontcolor = "rgb(204, 0, 0)";
var g_homemenu_hl_background_color = "rgb(255,255,255)";
var g_homemenu_hl_background_color_Level5 = "rgb(255,255,255)";
var g_homemenu_ll_fontcolor_level0 = "rgb(255,255,255)";
var g_homemenu_ll_fontcolor_level1 = "rgb(0, 0, 0)";
var g_homemenu_ll_background_color = "transparent";
var g_homemenu_ll_background_image_level0 = "url(../image/arrows.gif)"; //"url(/images/arrow-white.gif)";
var g_homemenu_ll_background_image_level1 = "url(../image/arrows.gif)"; //"url(/images/arrow-gray.gif)";
var g_homemenu_ll_background_position_level0 = "210px -292px";
var g_homemenu_ll_background_position_level1 = "210px -292px";
var g_jdpowerphase = "none";
var g_kbaseClassicStyle = true; 

//var g_psyma_navi_clicked = null;

// var g_timeout = -1;
var g_timeout = 1;
/* var g_timeoutTime = 80; */
var g_timeoutTime = 250; 
var g_openZoom = 0;

var g_imageNr = 1;
var g_req;
var g_is_home = false;

var g_currentKBase = null; // KBase instance handle.

var g_pageWidth = 839;
var g_formContainerWidth = 430;
var g_timeoutHide1 = 0;
var g_timeoutHide2 = 0;
var g_timeoutHide3 = 0;
var g_timeoutHide4 = 0;
var g_timeoutHead = 0;
var g_currentNav1 = "";
var g_currentNav2 = "";
var g_currentNav3 = "";
var g_currentNav4 = "";

var g_currentHi1 = "";
var g_currentHi2 = "";
var g_currentHi3 = "";
var g_currentHi4 = "";

var G_MAXSUBLAYERS = 16;
var G_MAXITEMS_MAINNAVI = 20;

var g_blackValue = 0;
var g_blackTimeout = 0;
var g_navShadeMax = .35;

var g_currentModelLink = '';
var g_echoCount = 0;
var g_is_opera = false;
var g_is_ie = false;
var g_is_ie5 = false;
var g_is_ie5_5 = false;
var g_is_ie6 = false;
var g_is_safari = false;
var g_is_mac = false;
var g_is_linux = false;
var g_contextDebug = "";
var g_fallbackImage = "";

var g_newWinFocus;

/////////////////////////////////////////////////////////
// Homepage Menü - Position der Baureihengrafik berechnen
var g_home_modelnavi_background_xPos = 0;               // X-Position der HD Grafik für die Baureihen
var g_home_modelnavi_gridsize = 36;                     // Höheneinheit des Grids - alle 50px sitzt der Y-Achsen Nullpunkt der nächsten Baureihengrafik
var g_home_modelnavi_num_modelranges = 7;               // Anzahl Baureihen in der Grafik
var g_home_modelnavi_num_modelranges_background = g_home_modelnavi_num_modelranges + 1; // der HG der Baureihen befindet sich nach dem letzter Baureihengrafik (wird für der platzverbrauch wie eine zusätzliche Bauriehe gerechnet)
///
// Gibt die CSS background-position für eine Baureihe zurück (string).
// modelno: Position der Baureihe im Menü -> 1 = erste eingepflegte Baureihe
// hl     : true  -> die Y-Position für die Highlight/Mouse-Over Grafik der Baureihe wird zurückgegeben
//          false -> die Y-Position für die normale Grafik der Baureihe wird zurückgegeben
function get_homenavi_background_position(modelno, hl) {
    return g_home_modelnavi_background_xPos.toString() + "px" + " " + get_Background_ypos(modelno, hl).toString() + "px";
}
function get_Background_ypos(modelno, hl) {
    // Berechnung: y-Höhe des Grids*2 [noramle grafik + HL grafik] * (eingepflegte Bauriehe -1) [da die erste Baureihe den Nullpunkt bei 0 hat)
    var tmpYPos = g_home_modelnavi_gridsize * 2 * (modelno - 1)
    if (hl == true)
        tmpYPos = tmpYPos + g_home_modelnavi_gridsize; // HL-Grafik wird unter der normalen Grafik eingepflegt
    return (-1 * tmpYPos); // * -1, da das HG Bild nach Oben verschoben wird um das nächste Bild anzuzeigen
}
/////////////////////////////////////////////////////////


// test for jQuery first
if (typeof(jQuery) != 'undefined') {
    $(document).ready(function() {
        initAll();
        initAll2();
        if (typeof (wiredminds) != 'undefined' && typeof (WIREDMINDSEXEC) == 'function')
            WIREDMINDSEXEC();
        else
            log("Skipping Wiredminds.");
    });
}
else {
    log("jQuery not available. You must load the jquery core library before this document.");
}

function initAll() {

    g_is_home = $("body[class*='home']").length > 0;
    log("HOMEPAGE: " + g_is_home);
    checkKBase();

    positionFooter();

    sniffAll();
    if (g_is_home) {
        initHome();
    }


    HideIfLoggedIn("ifLoggedOut");
    ShowIfLoggedIn("ifLoggedIn");
    HideIfLoggedIn("ifmetaloggedout");
    ShowIfLoggedIn("ifmetaLoggedin");

    initGallerySubtitles();
    
    initDealerSearch();
}

function checkKBase() {
    // setup kBase link behaviour
    $('ul.galleryKBase li.kbase a,ul.knowledgeBases li.kbase a').bind('click', function(e) {
        var itemIndex = $('ul.galleryKBase li.kbase a').index($(this));
        log("kbase clicked. itemIndex: " + itemIndex);
        clickKnowledgebase($(this).attr("href"), itemIndex);
        e.preventDefault(); // don't really click on the <a>.
    });

    handleDirectKBaseUrl();
    // if there is a direct kbase query,
    // open it.
}

function handleDirectKBaseUrl() {
    var query = getQueryString();
    log(query);
    var regex = /kbase=\/(kbase|event2).aspx((\?|\&)(pool|type|lang|id|callpath|marketpool|marketlang|gtabindex|itemindex)=.*){3,10}/ig;
    if (
        query.match(regex) ) {
        var kbaseUrl = query.substring(6);
        var itemIndex = getQueryVariable('itemindex');
        if (itemIndex == '' || isNaN(parseInt(itemIndex)) || parseInt(itemIndex)<=0) {
            itemIndex = null;
        }
        else {
            itemIndex = parseInt(itemIndex)-1;
        }

        clickKnowledgebase(kbaseUrl, itemIndex);
    }
    
}

function getQueryString() {
    return window.location.search.substring(1);
}

function getQueryVariable(qv) {
    var pairs = getQueryString().split("&");
    for (i = 0; i < pairs.length; i++) {
        var pair = pairs[i].split("=");
        if (pair[0] == qv) {
            return pair[1];
        }
    }
    return '';
}


// this is a porschewebsite hack and would probably not work in other cases..
// paints a grey border below the introImage div. 
// Used by the flash videos which are triggered on the same page by a button (not hmoepage).
function setIntroImageBorder() {
    log("setIntroImageBorder entered");
	var elm = document.getElementById('introImage');
	if (elm) {
		elm.style.borderBottom = 'solid 1px #CECECE';
		elm.style.width = '615px';
	}
}



function flash_onVideoStop() {
    var divLogo = document.getElementById('porscheWappen');
    var divHomeMenuShadow = document.getElementById('homeShadow');
    var divHomeMenu = document.getElementById('homemenue');

    if (divLogo)
        divLogo.style.display = 'block';
    if (divHomeMenu)
        divHomeMenu.style.display = 'block';
    if (divHomeMenuShadow)
        divHomeMenuShadow.style.display = 'block';
}

function flash_onVideoStart() {
    var divLogo = document.getElementById('porscheWappen');
    var divHomeMenuShadow = document.getElementById('homeShadow');
    var divHomeMenu = document.getElementById('homemenue');

    if(divLogo)
        divLogo.style.display = 'none';
    if(divHomeMenu)
        divHomeMenu.style.display = 'none';
    if(divHomeMenuShadow)
        divHomeMenuShadow.style.display = 'none';
}


// finds the first Element carrying the class name and changes its visibility.
function showHideByClassName(clsName, visible)
{
	var visibility = (visible == true) ? 'visible' : 'hidden';
	var display = (visible == true) ? 'block' : 'none';
	$("." + clsName).css({
	    'visibility': visibility,
	    'display': display
	});
}

//shows Navigation bar and shopping buttons
function showHomepageNavigation()
{
	// we don't use showHideClassByName here because of speed issues in IE6..
	// document.getElementById('topnav1').parentNode.style.visibility = 'visible';
	showHideByClassName("homeNavigation", true);
	showHideByClassName('shoppingButtons', true);
	showHideByClassName("shoppingShade", true);
}


// extracts pool name from the url. 
// Use the global variable if available.
function getPoolName() {
    if (typeof (CURRENTPOOL) != "undefined" && CURRENTPOOL != '') {
        //log('CURRENTPOOL:' + CURRENTPOOL);
        //log('CURRENTLANGUAGE:' + CURRENTLANGUAGE);
        return CURRENTPOOL;
    }
    else {
        // use the (brute) force
        var url = window.location.href;
        var startIndex = url.indexOf(window.location.hostname);
        var str = url.substr(startIndex, url.length - 1);
        retVal = str.split("/")[1];
        return retVal;
    }
}

// extracts site language from the url.
// determine default language, if no language is given.
// Example: http://www.porsche.com/japan/ ,where 'jp' is the implicit language)
// Use the global variable if available.
function getPoolLang(poolName) {
    // for importer pools
    if (typeof (CURRENTLANGUAGE) != "undefined" && CURRENTLANGUAGE != '') {
        return CURRENTLANGUAGE;
    }
    else {
        // use the (brute) force
        var url = window.location.href;
        var startIndex = url.indexOf(window.location.hostname);
        var str = url.substr(startIndex, url.length - 1);
        var lang = str.split("/")[2];
        if (
		lang == "de" ||
		lang == "en" ||
		lang == "es" ||
		lang == "fr" ||
		lang == "it" ||
		lang == "jp" ||
		lang == "nl" ||
		lang == "ko" ||
		lang == "th" ||
		lang == "zh" ||
		lang == "pt" ||
		lang == "tr"
		) {
            return (lang);
        }
        else {
            // check if the market has a default lang;
            switch (poolName) {
                case "china":
                    lang = "zh";
                    break;
                case "belgium":
                    lang = "en";
                    break;
                case "korea":
                    lang = "ko";
                    break;
                case "netherlands":
                    lang = "nl";
                    break;
                case "swiss":
                    lang = "de";
                    break;
                case "taiwan":
                    lang = "zh";
                    break;
                case "thailand":
                    lang = "th";
                    break;
                case "pco":
                    lang = "de";
                    break;
                case "turkey":
                    lang = "tr";
                    break;
                default:
                    lang = "none";
                    break;
            }
            return (lang);
        }
    }
}




function fitFrameFromParent(iHeight)
{
    var elm = document.getElementById("mainframe");
    var footer = document.getElementById("footer");
    var search = document.getElementById("search");

    if (elm) {
        elm.style.height = (iHeight + 40 + 140) + "px";
        if (search) { search.style.display = "none"; }
        footer.style.bottom = "-1px";
        if (search) { search.style.display = "block"; }
    }
}


function positionFooter()
{
    var footer = document.getElementById("footer");
    var search = document.getElementById("search");
    
    if (!g_is_home) setDocumentSize();

    if (footer) { footer.style.bottom = "-1px"; }
    if (search) { search.style.bottom = "-1px"; }
}

function setDocumentSize() {
	var size = 350; //160 + 105 + 85;

	if (getPoolName() == "usa") {
	    return;
// 
//  >> not needed anymore for USA
//	    
//	    var navi = document.getElementById("sitenavigation");
//	    if (navi) {
//	        //alert(navi.offsetHeight);
//	        size = 128 + navi.offsetHeight + 24 + 20; /* = Wappen + Navi + Mindestabstand zum Footer + Hoehe Footer*/
//	        if(g_is_ie6)
//	           size += 40;
//	    }
	}
	else {
	    var elm = document.getElementsByTagName("a");

	    if (elm) {
	        for (i = 0; i < elm.length; i++) {
	            var className = elm[i].className;

	            switch (true) {
	                case containsStr(className, "navigationBelowHome"):
	                    size += 24;
	                    break;
	                case containsStr(className, "subNavigationChapter"):
	                case containsStr(className, "subSubNavigation"):
	                case containsStr(className, "subSubNavigationActive"):
	                    size += 20; // 1 line: 16, 2 lines: 31;					
	                    break;
	            }
	        }
	    }
	}

	elm = document.getElementsByTagName("div");
	
	if (elm) {
		for (i = 0; i < elm.length; i++){
		    if (elm[i].className.indexOf("content ") > -1) {
				//elm[i].style.border = "1px solid red";
				elm[i].style.minHeight = size + "px";
				elm[i].style.height = size + "px";
				break;			
			}
		}
	}
}

function containsStr(s, find) {
	if(s)return (s.indexOf(find) != -1);
}

function overHome()
{
    if (!(g_currentKBase && g_currentKBase.isOpen && g_is_safari)) {
        if (g_timeout != -1) { clearTimeout(g_timeout); }
        showNavHomeSub();
    }
}

function outHome()
{
    if (!(g_currentKBase && g_currentKBase.isOpen && g_is_safari)) {
        g_timeout = setTimeout("hideNavHomeSub()", g_timeoutTime);
    }
}

function overNavHomeSub()
{
    if (g_timeout != -1) { clearTimeout(g_timeout); }
}

function outNavHomeSub()
{
    if (g_timeout != -1) { clearTimeout(g_timeout); }
    g_timeout = setTimeout("hideNavHomeSub()", g_timeoutTime);
}

function showNavHomeSub()
{
    showLr("navigationHomeSub");
    showLr("navigationShade");
    setBackground("navigationHome", "rgb(242,242,242)");
}

function hideNavHomeSub()
{
    hideLr("navigationHomeSub");
    hideLr("navigationShade");
    setBackground("navigationHome", "rgb(255,255,255)");
}

function setBackground(id, sBack)
{
    var elm = document.getElementById(id);
    if(elm)elm.style.backgroundColor = sBack;
}

/* DIV Popup */
g_divPopupOpen = 0;
g_divPopupShadeborder = 8;
g_divPopupContentBorder = 15;
g_divPopupNaviSpace = 30;
g_divPopupHasCloseButton = false;

function openDivPopup(sUrl, imgWidth, imgHeight)
{
  if (g_divPopupOpen == 0)
  {
    g_divPopupHasCloseButton = true;
    // magic numbers follow, do not try at home
    var divHeight = imgHeight + (g_divPopupContentBorder * 2) + g_divPopupNaviSpace;
    var divWidth = imgWidth + (g_divPopupContentBorder * 2);
    var shadeHeight = imgHeight + (g_divPopupContentBorder * 2) + (g_divPopupShadeborder * 2) + g_divPopupNaviSpace + 2;
    var shadeWidth = imgWidth + (g_divPopupContentBorder * 2) + (g_divPopupShadeborder * 2) + 2;

    var elmShade = document.getElementById("divPopupShade");
    var elmDivPop = document.getElementById("divPopup");
    elmShade.className = 'bannerlibShade';
    elmDivPop.className = 'bannerlib';

    var imgX = g_pageWidth / 2 - imgWidth / 2;
    var imgY = Math.round( (viewportGetHeight() - imgHeight)/2 ) + viewportGetScrollY();

    if (imgY < 0) { imgY = 0; }
    if (imgX < 0) { imgX = 0; }

    elmShade.style.left = (imgX - g_divPopupShadeborder) + "px";
    elmShade.style.top = (imgY - g_divPopupShadeborder) + "px";
    elmShade.style.width = shadeWidth + "px";
    elmShade.style.height = shadeHeight + "px";

    elmDivPop.style.left = imgX + "px";
    elmDivPop.style.top = imgY + "px";
    elmDivPop.style.height = divHeight + "px";
    elmDivPop.style.width = divWidth + "px";

    var elmCloseButton = document.getElementById("closeButtonDivPopup");
    if (elmCloseButton) {
      elmCloseButton.style.left = (imgWidth - 19) + "px";
    }

    g_divPopupOpen = sUrl;

    prepareFillDivPopup(sUrl);
  }
}

function openDivPopupTemplate(sUrl, sType)
{
    if (g_divPopupOpen == 0)
    {
        g_divPopupHasCloseButton = true;
        var cssClassName = sType;
        var imgWidth, imgHeight;
        switch(sType)
        {
          case 'bannerlib':
            imgWidth = 758;
            imgHeight = 640;
            break;
          case 'bannerlibsky':
            imgWidth = 192;
            imgHeight = 670;
            break;
          case 'bannerlibfull':
            imgWidth = 498;
            imgHeight = 126;
            break;
          case 'bannerlibhalf':
            imgWidth = 264;
            imgHeight = 126;
            break;
          case 'bannerlibrect':
            imgWidth = 210;
            imgHeight = 216;
            break;
          case 'bannerlibmrect':
            imgWidth = 330;
            imgHeight = 316;
            break;
          case 'bannerlibpopuph':
            imgWidth = 230;
            imgHeight = 366;
            break;
          case 'bannerlibpopupr':
            imgWidth = 280;
            imgHeight = 316;
            break;
        }
        // magic numbers follow, do not try at home
        var divHeight = imgHeight;
        var divWidth = imgWidth;
        var shadeHeight = imgHeight + (g_divPopupShadeborder * 2) + 2;
        var shadeWidth = imgWidth + (g_divPopupShadeborder * 2) + 2;

        var elmShade = document.getElementById("divPopupShade");
        var elmDivPop = document.getElementById("divPopup");
        elmShade.className = cssClassName + 'Shade';
        elmDivPop.className = cssClassName;

        var imgX = g_pageWidth / 2 - imgWidth / 2;
        var imgY = Math.round( (viewportGetHeight() - imgHeight)/2 ) + viewportGetScrollY();

        if (imgY < 0) { imgY = 0; }
        if (imgX < 0) { imgX = 0; }

        elmShade.style.left = (imgX - g_divPopupShadeborder) + "px";
        elmShade.style.top = (imgY - g_divPopupShadeborder) + "px";
        elmShade.style.width = shadeWidth + "px";
        elmShade.style.height = shadeHeight + "px";

        elmDivPop.style.left = imgX + "px";
        elmDivPop.style.top = imgY + "px";
        elmDivPop.style.height = divHeight + "px";
        elmDivPop.style.width = divWidth + "px";

        var elmCloseButton = document.getElementById("closeButtonDivPopup");
        if (elmCloseButton) {
            elmCloseButton.style.left = (imgWidth - 19) + "px";
        }

        g_divPopupOpen = sUrl;

        prepareFillDivPopup(sUrl);
    }
}

function closeDivPopup()
{
    var elm = document.getElementById("divPopup");
    elm.innerHTML = "<p>&nbsp;</p>";
    elm.style.display = "none";

    hideLr("divPopupShade");
    g_divPopupOpen = 0;

    if (g_is_safari) {
        var introElm = document.getElementById("introImage");
        if (introElm) {
            introElm.style.visibility = "visible";
        }
    }
}

function prepareFillDivPopup(sUrl)
{
    if(sUrl.indexOf('?') > -1)sUrl += "&" + getCachePrevent();
    else sUrl += "?" + getCachePrevent();
    if (window.XMLHttpRequest) {
        g_req = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        g_req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    g_req.onreadystatechange = fillDivPopup;
    g_req.open("GET", sUrl, true);
    g_req.send(null);
}

function fillDivPopup()
{
    if (g_req.readyState == 4)
    {
        if (g_req.status == 200)
        {
            if (g_is_safari) {
                var introElm = document.getElementById("introImage");
                if (introElm) {
                    introElm.style.visibility = "hidden";
                }
            }

            var s = "";
        
            var elmKB = document.getElementById("divPopup");
            var divPopWidth = elmKB.style.width;
            divPopWidth = divPopWidth.replace(/px/,'');
            var divPopHeight = elmKB.style.height;
            divPopHeight = divPopHeight.replace(/px/,'');

            divPopPageHeight = divPopHeight - (2 * g_divPopupContentBorder)
            divPopPageWidth = divPopWidth - (2 * g_divPopupContentBorder)

            divPopWidth-=17;
            divPopHeight-=17;

            s += "";
            if(g_divPopupHasCloseButton == true)
            {
              s += "<div style=\"left:" + divPopWidth + "px;\" class=\"closeButton\" id=\"closeButtonDivPopup\" onclick=\"closeDivPopup();\"><img src=\"/Image/close-button.gif\" alt=\"[X]\" title=\"Close\" /></div>";
            }            
            s += g_req.responseText;
            s = replStr(s, "<content>", "");
            s = replStr(s, "</content>", "");

            var sRun = getTextBetween(s, "// <![CDATA[", "// ]]>");
            sRun = replStr(sRun, ",wmode=opaque", ",");

            elmKB.innerHTML = s;

            var elmShade = document.getElementById("divPopupShade");
            elmKB = document.getElementById("divPopup");

            if (screen.width <= 800) {
                var imgHeight = 350;
                var elmWrapper = document.getElementById("divPopupWrapper");
                elmWrapper.style.height = (imgHeight - 80) + "px";
            }

            g_maxDivPage = getMaxDivPage('page');
            for(i=1;i<=g_maxDivPage;i++)
            {
              pageElm = document.getElementById('page' + i);
              if(pageElm)
              {
                pageElm.style.width = divPopPageWidth + 'px';
                pageElm.style.height = divPopPageHeight + 'px';
              }
            }
            naviElm = document.getElementById('divPopupNavi');
            if(naviElm)
            {
              naviElm.style.top = divPopPageHeight + 'px';
              naviElm.style.left = g_divPopupContentBorder + (divPopPageWidth/2 - 90/2) + 'px';
            }

            elmKB.style.display = "block";
            elmShade.style.display = "block";

            if (sRun != "") { eval(sRun); }
        }
        else
        {
            alert("Can't retrieve XML: " + g_req.statusText);
        }
    }
}

function getMaxDivPage(sName)
{
    var max = 0;
    var testElm = null;

    do
    {
      max++;
      testElm = document.getElementById(sName + max);
    }
    while(testElm != null)
    max--;
    return max;
}

g_currentDivPage = 1;
g_maxDivPage = 0;
function prevDivPage(sName)
{
    if(g_maxDivPage == 0)
    {
      g_maxDivPage = getMaxDivPage(sName);
    }
    var n = g_currentDivPage;
    n--;
    if (n <= 0){ n = g_maxDivPage;}

    if(n != g_currentDivPage)
    {
      showLr(sName + n);
      hideLr(sName + g_currentDivPage);
    }
    g_currentDivPage = n;
    return false;
}

function nextDivPage(sName)
{
    if(g_maxDivPage == 0)
    {
      g_maxDivPage = getMaxDivPage(sName);
    }
    var n = g_currentDivPage;
    n++;
    if (n > g_maxDivPage){ n = 1; }

    if(n != g_currentDivPage && g_maxDivPage > 1)
    {
      showLr(sName + n);
      hideLr(sName + g_currentDivPage);
    }
    g_currentDivPage = n;
    return false;
}

function clickKnowledgebase(sUrl, itemIndex) {
    if (sUrl == '') return;
    log("clickKnowledgebase entered.");
    if (g_currentKBase == null || (g_currentKBase != null && !g_currentKBase.isOpen )) {
        g_currentKBase = new KBase();
    }
    if (itemIndex >= 0) g_currentKBase.currentItemIndex = itemIndex;
    g_currentKBase.open(sUrl, itemIndex);
}



function KBase() {
    var self = this;    
    this.oldModelPage = (g_kbaseClassicStyle == true); // 
    //log("oldModelPage: " + this.oldModelPage);
    this.isOpen = false;
    this.currentPool = getPoolName();
    this.currentLanguage = getPoolLang(this.currentPool);
    this.isCuttingEdge = (  this.currentPool == 'usa' ||
                            this.currentPool == 'uk' ||
                            this.currentPool == 'germany' ||
                            this.currentPool == 'france' ||
                            this.currentPool == 'spain' || 
                            this.currentPool == 'portugal' || 
                            this.currentPool == 'middle-east' || 
                            this.currentPool == 'latin-america-en' || 
                            this.currentPool == 'latin-america-es' || 
                            this.currentPool == 'belgium' ||
                            this.currentPool == 'russia' ||
                            this.currentPool == 'japan' ||
                            (this.currentPool.indexOf("pcb-") >= 0) ||
                            this.currentPool == 'australia' || 
                            this.currentPool == 'swiss'
                            );
    this.closeLabel = function() {
        var pool = this.currentPool;
        log('closeLabel // pool: ' + pool);

        // no close lable for classic KBases
        if (this.oldModelPage == true)
            return "";

        switch (pool) {
            case 'germany':
                return 'Schließen';
                break;
            case 'portugal':
                return 'Fechar';
                break;
            case 'brazil':
                return 'Fechar';
                break;
            case 'russia':
                return 'Закрыть';
                break;
            case 'france':
                return 'Fermer';
                break;
            case 'italy':
                return 'Chiudi';
                break;
            case 'latin-america-es':
            case 'spain':
                return 'Cerrar';
                break;
            case 'swiss':
                if (self.currentLanguage == 'de')
                    return 'Schließen';
                else if (self.currentLanguage == 'it')
                    return 'Chiudi';
                else if (self.currentLanguage == 'fr')
                    return 'Fermer';
                break;
            case 'canada':
                if (self.currentLanguage == 'en')
                    return 'Close';
                else if (self.currentLanguage == 'fr')
                    return 'Fermer';
                break;

            default:
                return 'Close';
                break;
        }
    }
    this.navigationBarTop = -1;
    this.navigationBarWidth = 857;
    this.navigationBarLeft = 106;
    this.flashContainerId = 'introImageKBase_flash';

    this.animateContent = function(isEnter, callback) {
        log("entering animateContent..");
        /*
        **  Animation Begin
        */
        var easing, animStartX, animEndX, transStart, transEnd;
        easing = 600;
        animStartX = 0;

        // cosmetic stuff. We'll show the bars again after the animation has ended.        
        if (isEnter) {
            animEndX = 0;
            transStart = 0.01;
            transEnd = 1.0;
        }
        else {
            if (self.prevRequested) {
                animEndX = self.contentWidth;
            }
            else {
                animEndX = -(self.contentWidth);
            }
            transStart = 1.0;
            transEnd = 0.01;
        }

        $("#knowledgeBase .animationWrapper")
            .css('opacity', transStart)
            .animate({
                opacity: transEnd,
                left: animEndX
            }, easing, 'swing', function() {

            //log("animateContent - Animation ended. Running callback : " + callback);            
                if (typeof (callback) == 'function') {
                    callback();
                }
            });
        /*
        ** Animation End
        */

    }

    this.clear = function() {
        $('#knowledgeBase').empty();
    }

    this.showLoadingScreen = function() {
        if ($('#knowledgeBase .loading').length == 0) {
            $("#knowledgeBase").append("<div class=\"loading\"></div>");
        }
        $('#knowledgeBase .loading').show();
    }

    this.hideLoadingScreen = function() {
        $("#knowledgeBase .loading").hide();
    }

    this.show = function(sUrl) {
        if (self.isCuttingEdge && self.isOpen) {
            var animStartX = self.prevRequested ? -(self.contentWidth) : self.contentWidth;

            $('#knowledgeBase .animationWrapper').css('left', animStartX + 'px');
            $("#knowledgeBaseShade, #knowledgeBase").css('visibility', 'visible');
            self.animateContent(true, null);
        }
        else {
            $('#knowledgeBase .animationWrapper').css('left', '0px');
            $("#knowledgeBaseShade,#knowledgeBase").css({ 'visibility': 'visible', 'display': 'block' });
            self.isOpen = true;
            log("kbase is open");
        }

    }

    this.prevRequested = false;
    this.nextRequested = false;

    this.contentTop = -1;
    this.contentHeight = -1;
    this.contentWidth = $('#knowledgeBase').width();

    this.currentItemIndex = 0;

    this.open = function(sUrl, itemIndex) {
        log("open - sUrl: " + sUrl);
        log("open - itemIndex: " + itemIndex);

        if (itemIndex != null && !isNaN(itemIndex)) {
            self.currentItemIndex = itemIndex;
            log('[KBase - open] self.currentItemIndex: ' + self.currentItemIndex);
        }
        if (self.isCuttingEdge) {
            if (self.isOpen) {
                // do animations
                self.animateContent(false, function() { self.showLoadingScreen(); self.retrieve(sUrl); });
            }
            else {
                self.retrieve(sUrl);
            }
        }
        else {
            self.retrieve(sUrl);
        }

    }
    
    // retrieve and show content
    this.retrieve = function(sUrl) {
        log("retrieve - sUrl: " + sUrl);
        $.ajax({
            url: sUrl,
            dataType: "html",
            success: function(data) {
                //**debug**
                //if (self.isOpen) return;
                // browser hacks
                ieToggleDropDowns(true);

                // empty current content..
                // this also clears the "loading" screen.
                self.clear();

                //attach Content
                var animationWrapper = $("<div class=\"animationWrapper\"></div>");
                //add "CLOSE" Text;
                var closestr = '';
                if (self.isCuttingEdge && !self.oldModelPage) {
                    var closetext = self.closeLabel();
                    closestr = '<span>' + closetext + '</span>';
                }
                $("<div class=\"closeButton\" id=\"closeButtonKbase\">" + closestr + "<img src=\"/Image/close-button.gif\" alt=\"[X]\" title=\"Close\" /></div>")
                    .click(self.closebuttonCallback)
                    .appendTo(animationWrapper);

                animationWrapper.appendTo('#knowledgeBase');
                $(data.replace(/\<\/?content\>/g, '')).appendTo('.animationWrapper');

                self.toggleMilkyBackground("on");

                if (self.isCuttingEdge) {
                    //$("#knowledgeBaseShade, #knowledgeBase").css('display','block');
                    $("#knowledgeBaseShade, #knowledgeBase").fadeIn(350);
                }
                else {
                    // hide content for a moment.
                    $("#knowledgeBaseShade, #knowledgeBase").css({
                        'visibility': 'hidden',
                        'display': 'block'
                    });
                }
                if (!self.oldModelPage) {
                    self.setupNavigationBar();
                }
                // content is inserted into DOM, set the dimensions accordingly
                self.adjustDimensions();

                // ta-daa!
                self.hideLoadingScreen();
                self.show(sUrl);

            },
            error: function(xhttpreq, errorTxt, exception) {
                // something went badly. Show error message..
                alert("Unable to retrieve content: " + errorTxt + ". Please try again.");
            }
        });
    }
    this.runVideo = function(sShowflashScript) { ; };
    this.stopVideo = function(sShowflashScript) { ; };

    this.closebuttonCallback = function() {
        self.close();
    }

    this.navigationElementSelector = "ul li.kbase";
    this.navigationItemCollection = null;
    this.setupNavigationBar = function() {
        if (!self.isCuttingEdge) return;

        self.navigationItemCollection = $(self.navigationElementSelector);

        if (self.navigationItemCollection.length > 1) {
            var navBlock;
            if ($('#kbNavi').length == 0) {
                log('Drawing navigation first time..');
                $('<div id=\"kbNavi\"></div>').insertBefore('#knowledgeBaseShade');
            }
            // calculate navigation bar position
            self.navigationBarTop = ($(window).height() - $('#kbNavi').height()) / 2 + viewportGetScrollY();


            $('#kbNavi')
                .css({ 'top': self.navigationBarTop + 'px',
                    'width': self.navigationBarWidth + 'px',
                    'left': self.navigationBarLeft + 'px'
                });

            // set-up next/prev links
            var prev, next;
            var prevLink = self.getPrev();
            var nextLink = self.getNext();
            var xOffset = '89px'; // $('#kbPrev').width() + 'px';
            log("xOffset: " + xOffset);

            // **
            // PREVIOUS
            //**
            if (prevLink) {
                // first time: create "previous" element
                log("prevLink found");
                var prevtitle = $(prevLink).find("span").text();
                if ($('#kbPrev').length == 0) {
                    prev = $('<div id=\"kbPrev\"><a title="' + prevtitle + '" href="javascript:void(0);"></a></div>')
                    .click(function() { self.clickPrev(); })
                    .appendTo('#kbNavi')
                    ;
                }
                else {
                    // link exists, update only its title
                    $('#kbPrev a').attr('title', prevtitle);
                }
                // finally, slide out, make it visible
                $('#kbPrev').animate({ 'left': 0 }, 200, 'swing');
            }
            else {
                // no previous link. Slide it back in 
                // remember: the animation will run only if the element exists.
                $('#kbPrev').animate({ 'left': xOffset }, 200, 'swing');
            }

            // **
            // NEXT
            // **
            if (nextLink) {
                log("nextLink found");
                // first time: create "next" element
                var nexttitle = $(nextLink).find("span").text();
                if ($('#kbNext').length == 0) {
                    next = $('<div id="kbNext"><a title="' + nexttitle + '"  href="javascript:void(0);"></a></div>')
                    .click(function() { self.clickNext(); })
                    .appendTo('#kbNavi')
                    ;
                }
                else {
                    // link exists, update only its title
                    $('#kbNext a').attr('title', nexttitle);
                }
                // slide out.
                $('#kbNext').animate({ 'right': 0 }, 200, 'swing');
            }
            else {
                // no next link. Slide it back in 
                $('#kbNext').animate({ 'right': xOffset }, 200, 'swing');
            }
        }
    }

    // private function, use getNext/getPrev instead
    // KBase
    this.getSibling = function(isNext) {        
        var nextItemIndex = self.currentItemIndex + ((isNext) ? 1 : -1);
        log("self.currentItemIndex, nextItemIndex: " + self.currentItemIndex + " , " + nextItemIndex);

        if ((nextItemIndex < 0) || (self.navigationItemCollection.length <= nextItemIndex))
            return false;

        return self.navigationItemCollection[nextItemIndex];
    }

    this.getNext = function() {
        return this.getSibling(true);
    }
    
    this.getPrev = function() {
        return this.getSibling(false);
    }

    this.clickNext = function() {
        log("clickNext.");
        self.nextRequested = true;
        self.prevRequested = false;
        log("currentItemIndex: " + self.currentItemIndex);
        $(self.navigationItemCollection[self.currentItemIndex + 1]).find('a').trigger("click");
    }

    this.clickPrev = function() {
        log("clickPrev.");
        self.prevRequested = true;
        self.nextRequested = false;
        //console.dir(self.navigationItemCollection);
        log("currentItemIndex: " + self.currentItemIndex);
        $(self.navigationItemCollection[self.currentItemIndex - 1]).find('a').trigger("click");
    }

    this.toggleMilkyBackground = function(onOff) {
        if (onOff == "on") {
            // if it's already there, back off.
            if ($('#kbaseMilkyBG').length != 0) return;
            // insert semi-transparent milky background
            $('#knowledgeBase').parent().append('<div id=\"kbaseMilkyBG\"></div>');
        }
        else {
            $('#kbaseMilkyBG').remove();
        }
    }

    this.imgWidth = 656;
    this.imgHeight = 535;
    this.minContainerHeight = 575;
    this.name = "KBASE";
    this.kbWrapperHeightDiff = 67;    // height of old kbHeading/navigation
    this.kbShadeMarginTopBottom = 16; // minimum gap between browser window top/bottom and kbase shade
    this.shadeBorderWidth = 8;             // kbase shade border width
    this.kbMagicHightModifier = 1;

    this.getContentHeight = function() {
        log("$('#knowledgebaseWrapper').outerHeight(true): " + $('#knowledgebaseWrapper').outerHeight(true));
        return ($('#knowledgebaseWrapper').outerHeight(true) + 47);
    }
    this.setKbWrapperHeight = function(kbHeight) {
        if ($("#knowledgebaseWrapper").length > 0) {
            $("#knowledgebaseWrapper").height(kbHeight - this.kbWrapperHeightDiff);
        }
    }

    this.adjustDimensions = function() {
        log("entering setKBaseDimensions");

        var maxContainerHeight, contentHeight, kbHeight, shadeHeight;

        // settings max and min height a kbase container can have.
        maxContainerHeight = $(window).height() - (2 * self.kbShadeMarginTopBottom) - (2 * self.shadeBorderWidth);
        if (maxContainerHeight < 0) maxContainerHeight = 0;

        contentHeight = this.getContentHeight();

        if ($('#' + self.flashContainerId).length > 0) {
            var flashHeight = $('#' + self.flashContainerId).attr("height");
            log("flashHeight: " + flashHeight);
            if (flashHeight != '' && typeof (flashHeight) != 'undefined') {
                contentHeight += flashHeight;
            }
        }

        // Adjust container height according to content height
        if (contentHeight > maxContainerHeight)
            kbHeight = maxContainerHeight;
        else if (contentHeight < self.minContainerHeight)
            kbHeight = self.minContainerHeight;
        else
            kbHeight = contentHeight;

        kbHeight += self.kbMagicHightModifier; // BU: don't ask why.

        shadeHeight = kbHeight + (2 * self.shadeBorderWidth);

        this.setKbWrapperHeight(kbHeight);

        var elmShade = document.getElementById("knowledgeBaseShade");
        var elmKB = document.getElementById("knowledgeBase");

        var pageWidth;
        if ($('.page').length > 0)
            pageWidth = $('.page').width();
        else
            pageWidth = $('body').width(); // Comparemodels falls into this category.

        var imgX = pageWidth / 2 - self.imgWidth / 2;
        var imgY = Math.round(($(window).height() - shadeHeight) / 2) + viewportGetScrollY() + 8;

        if (imgY < 0) { imgY = 0; }
        if (imgX < 0) { imgX = 0; }

        // set KBase container height
        if (self.isCuttingEdge && self.contentHeight != -1 && kbHeight != self.contentHeight) {
            var diffH = "+=" + (kbHeight - self.contentHeight);
            var diffT = "+=" + (imgY - self.contentTop);

            // roll the animation
            $("#knowledgeBase,#knowledgeBaseShade").animate({
                'height': diffH,
                'top': diffT
            }, 300, 'swing');
        }
        else {
            // set KBase-Shade dimensions
            elmShade.style.left = (imgX - self.shadeBorderWidth) + "px";
            elmShade.style.top = (imgY - self.shadeBorderWidth) + "px";
            elmShade.style.height = shadeHeight + "px";

            // set KBase Dimensions
            elmKB.style.left = imgX + "px";
            elmKB.style.top = imgY + "px";
            elmKB.style.height = kbHeight + "px";
        }

        self.contentTop = imgY;
        self.contentHeight = kbHeight;
    }

    this.close = function() {
        // **********************
        // Closing KBase layer
        // **********************

        // turn off milky background layer
        log("closing KBase");

        // remove navigation (prev/next)
        $('#kbNavi').remove();

        // IE Hack for dropdowns
        ieToggleDropDowns(false);

        if (self.isCuttingEdge) {
            //$("#knowledgeBaseShade, #knowledgeBase").css('display','block');
            $("#knowledgeBaseShade, #knowledgeBase").fadeOut("fast", function() {
                //$("#knowledgeBaseShade, #knowledgeBase").empty().hide();
                self.toggleMilkyBackground("off");
            });
        }
        else {
            $("#knowledgeBaseShade, #knowledgeBase").empty().hide();
            self.toggleMilkyBackground("off");
        }

        this.isOpen = false;
        //$("html").css({ "overflow-y": "scroll" });
        log("KBase.isOpen: " + this.isOpen);
    }
}

/*
GalleryPlayer Screen (03_galerie-film_03-01.jpg)

Video    : 640 x 360
A.rechts :  23
A.links  :  23
A.oben   :        48
A.unten  :        55
---------------------
           686 x 463

Player Modellstartseite (03-2_modellstartseite.jpg)

Video    : 792 x 445
*/

function VidBase(videoWidth, videoHeight, showLoadingBGI) {
    var self = this;
    self = new KBase();
    self.name = "VIDBASE";
    self.oldModelPage = false;
    self.flashContainerId = 'galleryFlashContainer_flash';

    self.containerWidth = (videoWidth != null && !isNaN(videoWidth)) ? videoWidth : 792;
    self.containerPaddingLeft = 23;
    self.containerPaddingRight = 23;
    self.imgWidth = self.containerWidth + self.containerPaddingLeft + self.containerPaddingRight;
    self.containerHeight = (videoHeight != null && !isNaN(videoHeight)) ? videoHeight : 455;
    self.containerPaddingTop = 48;
    self.containerPaddingBottom = 55;
    self.showLoadingBGI = (showLoadingBGI != null && showLoadingBGI == true) ? true : false;
    self.imgHeight = self.containerHeight + self.containerPaddingTop + self.containerPaddingBottom;
    self.minContainerHeight = self.imgHeight;
    self.kbWrapperHeightDiff = 0;
    self.kbShadeMarginTopBottom = 8;
    self.kbMagicHightModifier = 0;
    self.navigationElementSelector = "#content > .tabContent2 > ul.galleryFilms > li > a";
    self.navigationBarWidth = self.imgWidth + (self.shadeBorderWidth * 2) + (2 * 70);
    self.navigationBarLeft = 36;

    self.stopVideo = function() {
        flashPlayer_cmdStop(self.flashContainerId);
    }

    self.closebuttonCallback = function() {
        self.stopVideo();
        self.close();
    }

    self.showLoadingScreen = function() { ; }; 
    self.hideLoadingScreen = function() { ; };

    this.open = self.open;
    self.getContentHeight = function() {
        return $('#knowledgeBase').outerHeight(true);
    }

    self.getSibling = function(isNext) {
        var nextItemIndex = self.currentItemIndex + ((isNext) ? 1 : -1);
        log("self.currentItemIndex, nextItemIndex: " + self.currentItemIndex + " , " + nextItemIndex);

        if ((nextItemIndex < 0) || (self.navigationItemCollection.length <= nextItemIndex))
            return false;

        return self.navigationItemCollection[nextItemIndex];
    }

    self.clickNext = function() {
        log("clickNext.");
        self.nextRequested = true;
        self.prevRequested = false;
        self.stopVideo();
        $(self.navigationItemCollection[self.currentItemIndex + 1]).trigger("click");
    }
    self.clickPrev = function() {
        log("clickPrev.");
        self.prevRequested = true;
        self.nextRequested = false;
        self.stopVideo();
        $(self.navigationItemCollection[self.currentItemIndex - 1]).trigger("click");
    }
    self.createFlashContainer = function(targetContainerSelector) {
        var newContainer = $("<div></div>").css({
            "background-color": "white",
            "padding": self.containerPaddingTop + "px " + self.containerPaddingRight + "px " + self.containerPaddingBottom + "px " + self.containerPaddingLeft + "px",
            "height": self.containerHeight + "px",
            "width": self.containerWidth + "px"
        }).attr("id", self.flashContainerId.replace(/_flash/, ''));

        if (self.showLoadingBGI) {
            newContainer.css({
            "background-image": "url(../image/loading.gif)",
            "background-position": "center center",
            "background-repeat": "no-repeat"
            });
        }

        $(newContainer).appendTo(targetContainerSelector);
    }

    self.runVideo = function(sShowflashScript) {
        if (sShowflashScript.indexOf('show') < 0) {
            if ($("#" + self.flashContainerId).length == 0) {
                $("<div id='" + self.flashContainerId + "'></div>").appendTo($("#" + self.flashContainerId.replace(/_flash/, '')));
            }
            var params = {
                loop: "true",
                menu: "false",
                quality: "high",
                allowScriptAccess: "sameDomain",
                wmode: "transparent",
                allowfullscreen: "false"
            };
            swfobject.embedSWF(sShowflashScript, self.flashContainerId, self.containerWidth, self.containerHeight, '8', null, null, params, null); //, expressinstall, flashvars, params, attributes);
        }
        else {
            window.setTimeout("eval(" + sShowflashScript.replace(/\);/, ')') + ")", 500);
        }
    }

    self.retrieve = function(sShowflashScript) {
        log("retrieve - sUrl: " + sShowflashScript);
        ieToggleDropDowns(true);

        // empty current content..
        // this also clears the "loading" screen.
        self.clear();

        //attach Content
        var animationWrapper = $("<div class=\"animationWrapper\"></div>");
        //add "CLOSE" Text;
        var closestr = '';
        if (self.isCuttingEdge) {
            var closetext = self.closeLabel();
            closestr = '<span>' + closetext + '</span>';
        }
        $("<div class=\"closeButton\" id=\"closeButtonKbase\">" + closestr + "<img src=\"/Image/close-button.gif\" alt=\"[X]\" title=\"Close\" /></div>")
                .click(self.closebuttonCallback)
                .appendTo(animationWrapper);

        animationWrapper.appendTo('#knowledgeBase');
        $("#knowledgeBase").css({ "width": self.imgWidth + "px" });
        $("#knowledgeBaseShade").css({ "width": (self.imgWidth + 16) + "px" });

        self.createFlashContainer(".animationWrapper");

        self.toggleMilkyBackground("on");

        if (self.isCuttingEdge) {
            $("#knowledgeBaseShade, #knowledgeBase").fadeIn(350);
        }
        else {
            $("#knowledgeBaseShade, #knowledgeBase").css({
                'visibility': 'hidden',
                'display': 'block'
            });
        }

        self.setupNavigationBar();
        // content is inserted into DOM, set the dimensions accordingly
        self.adjustDimensions();

        // ta-daa!
        //self.hideLoadingScreen();
        self.show(sShowflashScript);
        this.runVideo(sShowflashScript);
    }
}


function PanoramaBase(videoWidth, videoHeight) {
    var self = this;
    self = new VidBase(videoWidth, videoHeight, true);
    self.name = "PANORAMABASE";

    this.open = self.open;
}

function getTextBetween(sAll, sStart, sEnd) {
    var sPart = "";
    var posStart = sAll.indexOf(sStart);
    var posEnd = sAll.indexOf(sEnd);
    if (posStart >= 0 && posEnd >= 0 && posEnd > posStart) {
        sPart = sAll.substring(posStart + sStart.length, posEnd);
    }
    return sPart;
}

function clickZoomable(id, imgWidth, imgHeight) {
    if (g_openZoom == 0) {
        var shadeborder = 8;

        var elmShade = document.getElementById("zoomImageShade");
        var elmImage = document.getElementById("zoomImage" + id);
        var elmCloseButton = document.getElementById("closeButton" + id);

        var imgX = g_pageWidth / 2 - imgWidth / 2;
        var imgY = Math.round((viewportGetHeight() - imgHeight) / 2) + viewportGetScrollY();

        if (imgY < 0) { imgY = 0; }
        // if (imgX < 0) { imgX = 0; }

        elmShade.style.left = (imgX - shadeborder) + "px";
        elmShade.style.width = (imgWidth + shadeborder * 2) + "px";
        elmShade.style.top = (imgY - shadeborder) + "px";
        elmShade.style.height = (imgHeight + shadeborder * 2) + "px";

        elmImage.style.left = imgX + "px";
        elmImage.style.top = imgY + "px";
        if (elmCloseButton) {
            elmCloseButton.style.left = (imgWidth - 19) + "px";
        }

        elmImage.style.display = "block";
        elmShade.style.display = "block";

        g_openZoom = id;
    }
}

function clickZoomed() {
    hideLr("zoomImageShade");
    hideLr("zoomImage" + g_openZoom);
    g_openZoom = 0;
}

function showLr(id) {
    var elm = document.getElementById(id);
    if (elm) {
        elm.style.display = "block";
    }
}

function hideLr(id) {
    var elm = document.getElementById(id);
    if (elm) {
        elm.style.display = "none";
    }
}

function toggleLr(id) {
    var elm = document.getElementById(id);
    if (!elm) return;

    if (elm.style.display != "block") showLr(id);
    else hideLr(id);
}



/* Expandable module */

function expandCollapse(id)
{
    var elm = document.getElementById("expandable_" + id);

    if (elm)
    {
        /* Hack alert -- footer will be hidden temporarily
        to recalculate bottom position correctly.
        */

        var footer = document.getElementById("footer");
        footer.style.display = "none";

        if (elm.style.height != "auto")
        {
            collapseAllElements();
            showElement(id);        
        }
        else
        {
            collapseElement(id);
        }

        positionFooter();
        footer.style.display = "block";
    }
}

function showElement(id) {
    var elm = document.getElementById("expandable_" + id);
    elm.style.height = "auto";

    var h3 = document.getElementById("expandableHead_" + id);
    if (h3) {                
        h3.style.backgroundColor = "rgb(102,102,102)";                 
        h3.style.color = "rgb(255,255,255)";              
        h3.style.backgroundImage = "url(../image/arrow-lightgray-down.gif)";            
        h3.style.backgroundPosition = "9px 9px";
    }
}

function collapseElement(id) {
    var elm = document.getElementById("expandable_" + id);
    elm.style.height = "19px";

    var h3 = document.getElementById("expandableHead_" + id);
    if (h3) {
        h3.style.backgroundColor = "rgb(204,204,204)";                
        h3.style.color = "rgb(0,0,0)";
        h3.style.backgroundImage = "url(/images/arrow-gray.gif)";          
        h3.style.backgroundPosition = "11px 7px";
    }
}

function collapseAllElements() {
    var i=1;
    do {
        var elm = document.getElementById("expandable_" + i);
        if (elm) collapseElement(i);
        i++;
    } while(elm);
}

function viewportGetHeight()
{
    var retval = 0;

    if (window.innerHeight)
        retval = window.innerHeight - 18;
    else if (document.documentElement && document.documentElement.clientHeight) 
        retval = document.documentElement.clientHeight;
    else if (document.body && document.body.clientHeight) 
        retval = document.body.clientHeight;

    return retval;    
}

function viewportGetWidth()
{
    var retval = 0;

    if (window.innerWidth)
        retval = window.innerWidth - 18;
    else if (document.documentElement && document.documentElement.clientWidth) 
        retval = document.documentElement.clientWidth;
    else if (document.body && document.body.clientWidth) 
        retval = document.body.clientWidth;

    return retval;    
}

function viewportGetScrollY()
{
    var retval = 0;

    if (typeof window.pageYOffset == "number")
        retval = window.pageYOffset;
    else if (document.documentElement && document.documentElement.scrollTop)
        retval = document.documentElement.scrollTop;
    else if (document.body && document.body.scrollTop) 
        retval = document.body.scrollTop; 
    else if (window.scrollY)
        retval = window.scrollY;

    return retval;
}

function showGalleryFlash(pool, movieFolder, bandwidth, flashParams)
{
    var elmImg = document.getElementById("galleryImage");
    if (elmImg) {
        g_fallbackImage = elmImg.src;
    }
    var url;

    if (g_kbaseClassicStyle == false) /*(pool == 'usa'
        || pool == 'germany'
        || pool == "uk"
        || pool == "spain"
        || pool == "italy"
        || pool == "france"
        || pool == "portugal"
        || pool == "belgium"
        || pool == "pbe-master"
        || (pool.indexOf("pcb-") >= 0)
        )*/ {
        log("showGalleryFlash - " + url);
        url = "/all/media/flash/galleryPlayer.swf";
        showFlash(url, "galleryFlashContainer", "792", "455", "8", "#FFFFFF",
            "loop=true,menu=true,quality=high,wmode=transparent",
            "pool=" + pool + "," + flashParams + ",autostart=false");
    }
    else {
        url = "/all/media/flash/videoplayer.swf";
        showFlash(url, "galleryContent", "595", "317", "7", "#FFFFFF",
            "loop=true,menu=true,quality=high,wmode=opaque",
            "pool=" + pool + ",id=" + movieFolder + ",bandwidth=" + bandwidth + ",eventhandler=flashEnded," + flashParams);
    }
}

function showGalleryPanoramaFlash(url, flashParams)
{
    var elmImg = document.getElementById("galleryImage");
    if (elmImg) {
        g_fallbackImage = elmImg.src;
    }
   
    showFlash(url, "galleryContent", "595", "317", "7", "#FFFFFF","loop=true,menu=true,quality=high,wmode=opaque","eventhandler=flashEnded," + flashParams);
}

function flashEnded()
{
    if (g_fallbackImage != "") {
        var elmContent = document.getElementById("galleryContent");
        elmContent.innerHTML = "<img src=\"" + g_fallbackImage + "\" alt=\"\" id=\"galleryImage\" />";
    }
}

function showFlash(url, id, width, height, version, bgcolor, playerparamstr, flashparamstr) {
    var flashElmId = id + "_flash";

    width = "" + width;
    height = "" + height;
    version = "" + version;
    
    var elm = $('#'+id).get(0) || $('.' + id).get(0);
    if (!elm) {
        return;
    }

    var flashvars = JSONify(flashparamstr);
    var params = JSONify(playerparamstr);
    var attributes = false;

    params.bgcolor = bgcolor;
    params.align = "middle";

    var expressinstall = "/all/media/flash/expressInstall.swf";
    if (g_is_home) {
        expressinstall = false;
    }

    var playFlash = true;

//    log("showFlash - " + url);

    if (g_is_home) {
        if (!swfobject.hasFlashPlayerVersion(version)) {
            // fall back to regular page (without flash)
            fallBackFromFlash(getPoolName());
            playFlash = false; // on the homepage, if flash check fails, do not attempt to run  flash..
        }
        else {
            // prepare the homepage before loading flash animation.
            //hideHomepageNavigation();
            //hideHomepageClaim();
        }
    }
    else
    {
        if ((swfobject.getFlashPlayerVersion().major+'') == '0') // no Flash installed
            playFlash = false;
    }


    // go
    if (playFlash) {
        $(elm).html("<div id=\"" + flashElmId + "\"></div>");
//        log("url: " + url); 
//        log("flashElmId: " + flashElmId); 
//        log("width: " + width); 
//        log("height: " + height); 
//        log("version: " + version); 
//        log("expressinstall: " + expressinstall); 
//        log("flashvars: " + $(flashvars)); 
//        log("params: " + $(params));
//        log("attributes: " + attributes);
        swfobject.embedSWF(url, flashElmId, width, height, version, expressinstall, flashvars, params, attributes);
    }
}

// parses an array into a json string, 
// evals it and returns an object.
function JSONify(str) {
    
    //alert("JSONify ing: " + str);
    if (str == undefined || str == null) return "{}";
    var json = "{";
    var trap = false;
    var params = str.split(",");
    for (var i = 0; i < params.length; i++) {
        var param = params[i].split("=");
        if (param[0] == undefined || param[0] == null || param[0] == "") {
            trap = true;
            continue;
        }
        else {
            if (i > 0 && !trap) {
                json += ",";
                trap = false;
            }
            json += param[0] + ":\"" + param[1] + "\"";
        }
    }
    json += "}";
    return eval('(' + json + ')');
   
}


function swfIsVideoPlayer(url) {
    var retVal = false;
    var FILENAME = 'videoplayer.swf';
    var foundSWF = url.substr(url.lastIndexOf('/') + 1);

    if (foundSWF && (foundSWF.toLowerCase() == FILENAME))
        retVal = true;

    return retVal;
}



/* Gallery module */

var g_lastNumber = 1;

function setImage(elm, n)
{
    if (g_lastNumber != n)
    {
        var lastElm = document.getElementById("thumbnail" + g_lastNumber);
        lastElm.className = "";
        lastElm.style.border = "1px solid #ccc";

        var thisElm = document.getElementById("thumbnail" + n);
        thisElm.className = "selected";
        thisElm.style.border = "1px solid rgb(204,0,0)";

        g_lastNumber = n;

        sHref = elm.href;
        document.getElementById("galleryImage").src = sHref;
        
        showGallerySubtitle(n);
        showGalleryClaim(n);
    }
    return false;
}

function setThumbnail(elm, n)
{
    if (g_lastNumber != n)
    {
        var lastElm = document.getElementById("thumbnail" + g_lastNumber);
        lastElm.className = "";
        lastElm.style.border = "1px solid #ccc";

        var thisElm = document.getElementById("thumbnail" + n);
        thisElm.className = "selected";
        thisElm.style.border = "1px solid rgb(204,0,0)";

        g_lastNumber = n;
    }

    return false;
}

function prevgalleryImage(img, imgMax)
{
    var lastElm = document.getElementById("thumbnail" + g_lastNumber);
    if (lastElm) {    
    	lastElm.className = "";
    	lastElm.style.border = "1px solid #ccc";
    }

    var n = --g_lastNumber;
    if (n < 1) { n = getMaxNumberGallery(); }

    var thisElm = document.getElementById("thumbnail" + n);
    if (thisElm) {     
	    thisElm.className = "selected";
	    thisElm.style.border = "1px solid rgb(204,0,0)";
	}

    var elm = document.getElementById("href" + n);
    sHref = elm.href;
    document.getElementById("galleryImage").src = sHref;

    g_lastNumber = n;
    
    showGallerySubtitle(n);
	showGalleryClaim(n);
	
    return false;
}

function nextgalleryImage()
{
    var lastElm = document.getElementById("thumbnail" + g_lastNumber);
    if (lastElm) {
	    lastElm.className = "";
	    lastElm.style.border = "1px solid #ccc";
    }

    var n = ++g_lastNumber;
    var max = getMaxNumberGallery();
    if (n > max) { n = 1; }

    var thisElm = document.getElementById("thumbnail" + n);
    if (thisElm) {    
	    thisElm.className = "selected";
	    thisElm.style.border = "1px solid rgb(204,0,0)";
	}

    var elm = document.getElementById("href" + n);
    sHref = elm.href;
    document.getElementById("galleryImage").src = sHref;

    g_lastNumber = n;
    
    showGallerySubtitle(n);
    showGalleryClaim(n);

    return false;
}

function initGallerySubtitles()
{
	var n = getGalleryItemNo();
	if (n == -1) n=1;
		
    var subtitles = document.getElementById("gallerySubtitles")               	
    if (subtitles) {
        showGallerySubtitle(n);
        subtitles.style.display = "block";
    }

	var claims = document.getElementById("galleryClaims")
    if (claims) {
	    showGalleryClaim(n);	        
        claims.style.display = "block";
    }
}


function getGalleryItemNo() 
{
    var no = -1;
    
    var regex = /itemindex=(\d*)/;
    var result = regex.exec(document.URL);
    
    if (result != null) { 
        no = result[1]
    }            
    
    return no;          
}

function showGallerySubtitle(n)
{
    var subtitles = document.getElementById("gallerySubtitles");

    if (subtitles) {   
		var tabSubtitles = subtitles.getElementsByTagName("div");
		 	        		
		var tab = document.getElementById("gallerySubtitlesTab" + getGallerySubtitleTabNo());
		if (tab) 
		{
			tabSubtitles = tab.getElementsByTagName("div");	
			tab.style.display = "block";				
		}

		/************************/
		/* STV: JDPower 2008-11 */
		var currentPool = getPoolName();
		var gallerySubtitleDisplayStyle = "block";
		if (currentPool == "usa"){
			if (getPageTitle() == "Gallery")
				gallerySubtitleDisplayStyle = "inline";
		}
		/************************/

		if (tabSubtitles) 
		{            
			for (var i = 0; i < tabSubtitles.length; i++) {
			    tabSubtitles[i].style.display = (i == n - 1) ? gallerySubtitleDisplayStyle : "none";				
			}
		}
    }
}
function getPageTitle() {
	for (var i = 0; i < document.getElementsByTagName('meta').length; i++) {
		if (document.getElementsByTagName('meta')[i].getAttribute('name') == 'titel') {
			pageTitle = document.getElementsByTagName('meta')[i].getAttribute('content');
}
}
}


function showGalleryClaim(n) {
    var claims = document.getElementById("galleryClaims");	   
    if (claims) 
    {    	
        var tabClaims = claims.getElementsByTagName("div");  
        
        var tab = document.getElementById("galleryClaimsTab" + getGallerySubtitleTabNo());
		if (tab) 
		{
			// zuerst nach Div suchen
			tabClaims = tab.getElementsByTagName("div");
			// 15.03.2006 by BU + MIP 
			// wenn kein <Div> vorhanden dann <Img> nehmen
			if (tabClaims.length == 0) {
				tabClaims = tab.getElementsByTagName("img");
			}
			tab.style.display = "block";				
		}

        /************************/
        /* STV: JDPower 2008-11 */
		var currentPool = getPoolName();
		var galleryClaimDisplayStyle = "block";
		if (currentPool == "usa")
		    galleryClaimDisplayStyle = "inline";
		/************************/
		
        if (tabClaims) {            
            for (var i = 0; i < tabClaims.length; i++) {
                tabClaims[i].style.display = (i == n - 1) ? galleryClaimDisplayStyle : "none";                
            }
        }
    }    
}


function getGalleryClaimTab()
{   
    var claim = document.getElementById("galleryClaims");
	return claim;	
}


function getGallerySubtitleTab()
{    
    var tab = document.getElementById("gallerySubtitles");    
    return tab;          
}


function getGallerySubtitleTabNo()
{
    var no = 1;
    
    var regex = /tabindex=(\d)/;
    var result = regex.exec(document.URL);
    
    if (result != null) { 
        no = result[1]
    }            
    
    return no;          
}

function getMaxNumberGallery()
{
    var max = 0;
    for (var i = 50; i >= 1 && max == 0; i--) {
        var testElm = document.getElementById("thumbnail" + i);
        if (testElm) {
            max = i;
            break;
        }
    }

    return max;
}

function showWallpaper(img, iWidth, iHeight)
{
    gotoUrlNewWin(img);
}


/* Open Selection Shop item in a window */
function openSelectionShopItem(dept_id, pf_id)
{
	gotoUrlNewWinSizeScrollableWithMenu('http://shop.eu.porsche.com/germany/product2.asp?dept_id=' + dept_id + '&pf_id=' + pf_id + '&comefrom=teq911', 870, 700)
}

function openPDDSShop(poolId) {
	switch (poolId) {
		case "germany":
			gotoUrlNewWinSizeScrollableWithMenuR('http://shop.porsche.com/germany/',870,700);
			break;
		
		case "usa":
			openPDDSPopup('http://shop.porsche.com/usa/',false);
			break;
		
		case "uk":
			openPDDSPopup('http://shop.porsche.com/uk/', false);
			break;
		
		case "france":
			openPDDSPopup('http://shop.porsche.com/france/', false);
			break;

		case "italy":
			openPDDSPopup('http://shop.porsche.com/italy/', false);
			break;

		case "australia":
			openPDDSPopup('http://shop.porsche.com/australia/', false);
			break;
	}
}

function openPDDSPopup(s, isRedesign) {
	var sWidth
	var sHeight;
	var sOffset;
	
	var resizable = 'no';
	var locationbar = 'no';
	var toolbar = 'no';
	var menubar = 'no';

	if (isRedesign) {
		sWidth = 890;
		sHeight = 750;
		resizable = 'yes';
		locationbar = 'yes';
		toolbar = 'yes';
		menubar = 'yes';
	}
	else {
		sWidth = 890;
		sHeight = 725;
	}
		
	
    if (screen.height < 768) {
        if (sHeight > 450) sHeight = 430;
        if (sWidth > 783) sWidth = 790;
        sOffset = 0;
    }
    else if (screen.height < 1024) {
        if (sHeight > 550) sHeight = 550;
        sOffset = 10;
    }
    else {
        sOffset = 40;
    }


    newWin = window.open(s, "newWin" + getRandomInt(10000), "width=" + sWidth + ",height=" + sHeight + ",left=40,top=40,dependent=yes,location=" + locationbar + ",menubar=" + menubar + ",toolbar=" + toolbar + ",resizable=" + resizable + ",scrollbars=yes,status=no");
}


// sMarket = Language / market version e.g. 'us' for PCNA market
// sModel = The Model typecode e.g. '987110'
// sMode = '2D', '3D' or null
function openCC(sMarketId, sModel, sMode, blnOpenWindow)
{
    var sWidth = 980;
    var sHeight = 680;
    sWidth -= g_is_ie ? 15 : 20;
    sHeight -= 25;
    var sUrl = '';
    var sHostName = '';
    var sOriginHostName = '';
    var sLang = '';
    var iViewMode=0;
	var sTestFolder = '';
    if(blnOpenWindow == null)blnOpenWindow = true;
    if(g_is_mac == true && sMode != null)sMode='2D';
	
	  switch(window.location.hostname) {
	      case "intranet.porsche.com":
		      sHostName = "http://cc.web.porsche.de";
		      sOriginHostName = "http://cc.web.porsche.de";
		      break;
        case "preview.porsche.com":
		      sHostName = "http://testarea-cc.porsche.com";
		      sOriginHostName = "http://testarea-cc.porsche.com";
			  sTestFolder = '_uat';
		      break;
        default:
		      sHostName = "http://cc.porsche.com";
		      OriginHostName = "http://origin-cc.porsche.com";
		      break;
	  }

    if(sMode == null) {
      if(sModel == null) {
        sUrl = sHostName + "/pva_new{TESTFOLDER}/ui/pva/index.jsp?sprache={LANG}&modelRange=null";
      }
      else {
        sUrl = sHostName + "/pva_new{TESTFOLDER}/colorConfigurator.do?userID={USER}&lang={LANG}&PARAM={PARAM}&ORDERTYPE={MODEL}";
      }
    }
    else {
      if(sMode == '2D')iViewMode=2;
      if(sMode == '3D')iViewMode=4;
      if(sModel == null) {
        sUrl = sHostName + "/pva_new{TESTFOLDER}/preConfiguration.do?userID={USER}&lang={LANG}&PARAM={PARAM}&PRECONFIG_ID=default&vLevel={MODE}";
      }
      else {
        sUrl = sHostName + "/pva_new{TESTFOLDER}/preConfiguration.do?userID={USER}&lang={LANG}&PARAM={PARAM}&PRECONFIG_ID=default&vLevel={MODE}";
      }
    }

    switch (sMarketId) {
        case "us":
            sUser = "US";
            sLang = "us"
            sParam = "parameter_internet_us"
			break;
            
        default:
            sUrl = sHostName + "/pva_new{TESTFOLDER}/colorConfigurator.do?userID=US&lang=us&PARAM=parameter_internet_us&ORDERTYPE=" + sModel;
            break;
    }
    if(sUrl != '') {
      sUrl = sUrl.replace(/{USER}/g, sUser);
      sUrl = sUrl.replace(/{LANG}/g, sLang);
      sUrl = sUrl.replace(/{PARAM}/g, sParam);
      sUrl = sUrl.replace(/{MODEL}/g, sModel);
      sUrl = sUrl.replace(/{MODE}/g, iViewMode);
      sUrl = sUrl.replace(/{TESTFOLDER}/g, sTestFolder);
    
    
    var screenParam = getScreenXYUrlParam();
    
    // CC Down Hack
    //sUrl = sHostName + "/maintenance/CC_down.html";
    if (sUrl && sUrl.length > 0)
    {
        sUrl += screenParam;
        sUrl += "&RT=" + new Date().getTime();
    }
      
      
      if(blnOpenWindow)gotoUrlNewWinSizeByName(sUrl, sWidth, sHeight, "PVA");
      else window.location.href=sUrl;
    }
}


/* Windows module */

function configureCar(marketId)
{
    /* For new CC inner size is important, but gotoUrlNewWinSizeByName() calcs outer size */
    var sWidth = 980;
    var sHeight = 680;
    sWidth -= g_is_ie ? 15 : 20;
    sHeight -= 25;
    var testFolder = '';

	/* R.W. Anpassung für den Intranet Server, um unterschiedliche CC URL's auszuliefern.*/
	var HostName = "";
	if (window.location.hostname == "intranet.porsche.com") {
		HostName = "http://cc.web.porsche.de";
		OriginHostName = "http://cc.web.porsche.de";
	} else if (window.location.hostname == "preview.porsche.com") {
		HostName = "http://testarea-cc.porsche.com";
		OriginHostName = "http://testarea-cc.porsche.com";
		testFolder = '_uat';
	} else {
		HostName = "http://cc.porsche.com";
		OriginHostName = "http://origin-cc.porsche.com";
	}
		
    var sUrl = '';
    switch (marketId) {
        case "de":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=de&modelRange=null";
            break;

        case "us":
            /* JDPower Test */
            sUrl = "/all/usa/startcc/default.htm?t=";
			if (window.location.hostname == "preview.porsche.com") {
				sUrl = "http://testarea-cc.porsche.com/pva_new" + testFolder + "/ui/pva/index.jsp?sprache=us";
			}
            //sUrl = HostName + "/pva_new/ui/pva/index.jsp?sprache=us&modelRange=null";
            break;

        case "ca":
            sUrl = HostName + "/pva_new" + testFolder + "/ui/pva/index.jsp?sprache=ca&modelRange=null";
            break;

        case "ca-fr":
            sUrl = HostName + "/pva_new" + testFolder + "/ui/pva/index.jsp?market=USCCF&sprache=cf&modelRange=null";
            break;

        case "fr":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=fr&modelRange=null";
            break;

        case "it":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=it&modelRange=null";
            break;

        case "en":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=en&modelRange=null";
            break;

        case "sp":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=sp&modelRange=null";
            break;

        case "mx":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=mx&modelRange=null";
            break;
            
        case "hk":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=hk&modelRange=null";
            break;
		
        case "me":
            sUrl = "/all/transitional/middle-east/models/countryselector/default.htm?t=";
            break;
		
		case "du":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=du&market=PDA&modelRange=null";
            break;
		case "ba":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=ba&market=PDB&modelRange=null";
            break;
		case "va":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=va&market=PDD&modelRange=null";
            break;
		case "kw":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=kw&market=PDK&modelRange=null";
            break;
		case "oa":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=oa&market=PDO&modelRange=null";
            break;
		case "qu":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=qu&market=PDT&modelRange=null";
            break;	
		case "ks":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=ks&market=PDS&modelRange=null";
            break;
		case "sa":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=sa&market=PDR&modelRange=null";
            break;
		
        case "jp":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=pj&modelRange=null";
            break;

        case "zh":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=cn";
            break;
        case "ce":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=ce&market=PACCE";
            break;
        case "ba":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?market=PDB&sprache=ba";
            break;
        case "va":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?market=PDD&sprache=va";
            break;
        case "kw":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?market=PDK&sprache=kw";
            break;
        case "oa":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?market=PDO&sprache=oa";
            break;
        case "qu":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?market=PDT&sprache=qu";
            break;
        case "ks":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?market=PDS&sprache=ks";
            break;
        case "cur":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=cc&customID=cur";
            break;
        case "pap":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=cc&customID=pap";
            break;
        case "bru":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=cc&customID=bru";
            break;
        case "ind":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=cc&customID=ind";
            break;
        case "mal":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=cc&customID=mal";
            break;
        case "nca":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=cc&customID=nca";
            break;
        case "sri":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=cc&customID=sri";
            break;
        case "phi":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=cc&customID=phi";
            break;
        case "du":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=du&market=PDA";
            break;
        case "sa":
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=sa&market=PDR";
            break;
		case "prt":
			sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=po";
			break;
		case "swiss-de":
			sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?market=CHSD&sprache=sd";
			break;
		case "swiss-fr":
			sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?market=CHSF&sprache=sf";
			break;
		case "swiss-it":
			sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?market=CHSI&sprache=si";
			break;
		case "bef":
			sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=cc&customID=bef";
			break;			
		case "ben":
			sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=cc&customID=ben";
			break;
	
        default:
            sUrl = HostName + "/icc_euro" + testFolder + "/ui/pva/index.jsp?sprache=" + marketId + "&modelRange=null";
            break;
    }
    
    var screenParam = getScreenXYUrlParam();
    
    if (sUrl && sUrl.length > 0)
    {
        sUrl += screenParam;
        sUrl += "&RT=" + new Date().getTime();
    }

    // CC Down Hack
    //sUrl = HostName + "/maintenance/CC_down.html";
    
    //log(sUrl);
    gotoUrlNewWinSizeByName(sUrl, sWidth, sHeight, "PVA");
}


function getScreenXYUrlParam()
{
    var clientWidth = screen.width;
    var clientHeight = screen.height;
    return  '&screen='+clientWidth+'x'+clientHeight;
}

/*
Function compareModels
Description: 
	Wrapper for compareModelMulti with empty model parameters. Is mainly used to open the CM Popup from the shopping buttons.
Input: 
	marketId: name of the market to be loaded in compare models.
Output: void
*/
function compareModels(marketId) {
	compareModelMulti(marketId, '', '', '', true);
}

/*
Function compareModelWith
Description:
	Wrapper for compareModelMulti to Open compare models tool (select page) with the given market name and two models to be compared to each other. 
Input:
	marketId: market name
	model1: First model's id.
	model2: Second model's id.	
Output: void.	
*/
function compareModelWith(marketId, model1, model2) {
	compareModelMulti(marketId, model1, model2, '', false);
}


/*
Function compareModelMulti
Description:
	Opens a popup window of variable size. 
	to load the compare models page for a given market, and three model IDs.
	The size can be adjusted for each market (pool) by setting the oneSizeFitsAll to false 
	and defining windowSizeX and windowSizeY for each pool.
Input:
	marketId: market (pool) name to be opened in the compare models tool.
	model1: First model's id.
	model2: Second model's id.	
	model3: Third model's id.
	openSelect: true if Select page is to be opened, false if compare page.
	(If further models are to be added, make the necessary changes in the url "cmUrl" and the window sizes.)
Output: void.	
*/
function compareModelMulti(marketId, model1, model2, model3, openSelect) {
	windowSizeX = 1003;
	windowSizeY = 625;
	oneSizeFitsAll = true;

	if (openSelect) 
		cmPage = "Select"
	else
		cmPage = "Compare";
		
	// make the window sizes pool dependent, if desired.
	if (!oneSizeFitsAll)
		switch (marketId) {
			case "usa":
				windowSizeX = 1003;
				windowSizeY = 625;
				break;
			case "canada":
				windowSizeX = 975;
				windowSizeY = 625;
				break;
		}
	// create the window and load the url.
	cmUrl = "/all/comparemodels/" +cmPage + ".aspx?pool=" + marketId + "&model1=" + model1 + "&model2=" + model2 + "&model3=" + model3 + "";
	gotoUrlNewWinSize(cmUrl, windowSizeX, windowSizeY);
}


function gotoUrlNewWinSimple(s)
{
    var newWin = window.open('', "newWin" + getRandomInt(10000));
    newWin.document.location = s;
}

function gotoUrlNewWin(s)
{
    sWidth = 826;
    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 gotoUrlNewWinSize(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=no,scrollbars=no,status=no");
}

	
function gotoUrlNewWinSizeCloseOnBlur(s, sWidth, sHeight)
{
    sWidth += 20;
    sHeight += 25;
    g_newWinFocus = window.open(s, "newWinCloseOnBlur", "width=" + sWidth + ",height=" + sHeight + ",left=40,top=40,location=no,resizable=no,scrollbars=no,status=no");	   	   	
    g_newWinFocus.focus();	    
    
    window.onfocus = function()
    {
    	if (g_newWinFocus)
    	{
    		g_newWinFocus.close()
    		g_newWinFocus = null;	    	
    	}
    }
}		

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,location=no,resizable=no,scrollbars=yes,status=no");
}


function gotoUrlNewWinSizeScrollableWithMenu(s, sWidth, sHeight)
{
    sWidth += 20;
    sHeight += 50;

    if (screen.height < 768) {
        if (sHeight > 450) sHeight = 430;
        if (sWidth > 783) sWidth = 790;
        sOffset = 0;
    }
    else if (screen.height < 1024) {
        if (sHeight > 550) sHeight = 550;
        sOffset = 10;
    }
    else {
        sOffset = 40;
    }

    newWin = window.open(s, "newWin" + getRandomInt(10000), "width=" + sWidth + ",height=" + sHeight + ",left=" + sOffset + ",top=" + sOffset + ",dependent=yes,location=yes,menubar=yes,toolbar=yes,resizable=no,scrollbars=yes,status=yes");
}

function gotoUrlNewWinSizeScrollableWithMenuR(s, sWidth, sHeight)
{
    sWidth += 20;
    sHeight += 50;

    if (screen.height < 768) {
        if (sHeight > 450) sHeight = 430;
        if (sWidth > 783) sWidth = 790;
        sOffset = 0;
    }
    else if (screen.height < 1024) {
        if (sHeight > 550) sHeight = 550;
        sOffset = 10;
    }
    else {
        sOffset = 40;
    }

    newWin = window.open(s, "newWin" + getRandomInt(10000), "width=" + sWidth + ",height=" + sHeight + ",left=" + sOffset + ",top=" + sOffset + ",dependent=yes,location=yes,menubar=yes,toolbar=yes,resizable=yes,scrollbars=yes,status=yes");
}


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 gotoUrlNewWinSizeCentered(s, iWidth, iHeight)
{
    iWidth += 20;
    iHeight += 25;    
    iLeft = Math.round((screen.width - iWidth) / 2);
    iTop = Math.round((screen.height - iHeight) / 2);
    newWin = window.open(s, "newWin" + getRandomInt(10000), "width=" + iWidth + ",height=" + iHeight + ",left=" + iLeft + ",top=" + iTop + ",dependent=yes,location=no,resizable=no,scrollbars=no,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");
}

function gotoUrlNewWinSizeByName(s, sWidth, sHeight, sName)
{
    sWidth += g_is_ie ? 15 : 20;
    sHeight += 25;
    newWin = window.open(s, sName, "width=" + sWidth + ",height=" + sHeight + ",left=40,top=40,dependent=yes,location=no,resizable=no,scrollbars=no,status=no");
}

function openLeanWin(sUrl, sWidth, sHeight)
{
    sWidth += 20;
    sHeight += 25;
    newWin = window.open(sUrl, "newWin" + getRandomInt(10000), "width=" + sWidth + ",height=" + sHeight + ",left=140,top=140,dependent=yes,location=no,resizable=no,scrollbars=no,status=no,menubar=no,toolbar=no");
}

function gotoUrlFullscreen(sUrl, bScroll) {
	var width = screen.width;
	var height = screen.height;
	var left = 0;
	var top = 0;
	
	if (screen.width > 1920)
	{
		width = 1920;
		height = 1200;
		left = Math.round((screen.width - width) / 2);
		top = Math.round((screen.height - height) / 2);
	}
	
    var scrollbars = 0;
    if (bScroll) scrollbars = 1;
    
	var sProps = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=" + scrollbars + ",resizable=0,left=" + left + ",top=" + top + ",width=" + (width - 10) + ",height=" + (height - 55);	
	var site = window.open(sUrl,"porschemicrosite", sProps);
	site.focus();		
}

function gotoUrlFullscreenResizable(sUrl) {
	var width = screen.width;
	var height = screen.height;
	var left = 0;
	var top = 0;
	
	if (screen.width > 1920)
	{
		width = 1920;
		height = 1200;
		left = Math.round((screen.width - width) / 2);
		top = Math.round((screen.height - height) / 2);
	}
	
	var sProps = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,left=" + left + ",top=" + top + ",width=" + width + ",height=" + height;	
	var site = window.open(sUrl,"porschemicrosite_rs", sProps);
	site.focus();
}


function openDealerLocator(refForm, sWidth, sHeight, sName, sUrl, windowoptions) {
    if (!sUrl) sUrl = "";

    var topOffset = 40;

    if (sHeight > (self.screen.availHeight + topOffset - 40)) {
        sHeight = self.screen.availHeight - 40;
        topOffset = 0;
    }
    var options = "width=" + sWidth + ",height=" + sHeight + ",left=40,top=" + topOffset + ",dependent=yes,location=no,resizable=no,scrollbars=no,status=no";
    if (windowoptions) options = windowoptions;
    newWin = window.open(sUrl, sName, options);

    if (refForm) {
        refForm.target = sName;
        return true;
    }
    newWin.focus();
}

function openModelAdvisor(siteId)
{
	var iWidth = 831;
	var iHeight = 503;
	window.open("/all/modeladvisor/" + siteId + ".aspx", "newWin" + getRandomInt(10000) , "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,left=" + Math.round((screen.width - iWidth) / 2) + ",top=" + Math.round((screen.height - iHeight) / 2) + ",,width=" + iWidth + ",height=" + iHeight);
}



function getRandomInt(max)
{
    return Math.round( Math.random() * (max-1) );
}


/* Ad-Tracker module */

function getAdTrackerNumber()
{
    var axel = Math.random() + "";
    var a = axel * 10000000000000;
    return a;
}



/* Home module */

function initHome() {
    log("initHome running");
    // teaser bar scroller
    setupTeaserbar();

    if (!g_is_ie) {
        // FF 3.x opacity+cleartype bugfix
        $('.subnav,.topnavlink').each(function() {
            $(this).append('&#160;');
        });
    }
}

function bannerLinkToHi(sId) {
    var elm = document.getElementById(sId);
    if (elm) {
        elm.style.color = "#c00";
        //elm.style.backgroundImage = "url(/images/arrow-red.gif)";
        elm.style.backgroundPosition = "210px -142px;";
    }
}

function bannerLinkToLo(sId) {
    var elm = document.getElementById(sId);
    if (elm) {
        elm.style.color = "rgb(102,102,102)";
        //elm.style.backgroundImage = "url(/images/arrow-gray.gif)";
        elm.style.backgroundPosition = "210px -292px;";
    }
}

function navShadeIn(level) {

    if (level == 1) {
        if (g_timeoutHide1 != 0) { clearTimeout(g_timeoutHide1); }
    }
    else if (level == 2) {
        if (g_timeoutHide1 != 0) { clearTimeout(g_timeoutHide1); }
        if (g_timeoutHide2 != 0) { clearTimeout(g_timeoutHide2); }
    }
    else if (level == 3) {
        if (g_timeoutHide1 != 0) { clearTimeout(g_timeoutHide1); }
        if (g_timeoutHide2 != 0) { clearTimeout(g_timeoutHide2); }
        if (g_timeoutHide3 != 0) { clearTimeout(g_timeoutHide3); }
    }
}

function navShadeOut(level) {

    if (level == 1) {
        g_timeoutHide1 = setTimeout("hideNav(1,\"" + g_currentNav1 + "\",\"" + g_currentHi1 + "\")", g_timeoutTime);
    }
    else if (level == 2) {
        g_timeoutHide1 = setTimeout("hideNav(1,\"" + g_currentNav1 + "\",\"" + g_currentHi1 + "\")", g_timeoutTime);
        g_timeoutHide2 = setTimeout("hideNav(2,\"" + g_currentNav2 + "\",\"" + g_currentHi2 + "\")", g_timeoutTime);
    }
    else if (level == 3) {
        g_timeoutHide1 = setTimeout("hideNav(1,\"" + g_currentNav1 + "\",\"" + g_currentHi1 + "\")", g_timeoutTime);
        g_timeoutHide2 = setTimeout("hideNav(2,\"" + g_currentNav2 + "\",\"" + g_currentHi2 + "\")", g_timeoutTime);
        g_timeoutHide3 = setTimeout("hideNav(3,\"" + g_currentNav3 + "\",\"" + g_currentHi3 + "\")", g_timeoutTime);
    }
}

function overNav(level, sName, sSelf) {
    if (level == 0 || level == "0") {
        //echo("level in 0");

        if (g_timeoutHide1 != 0) { clearTimeout(g_timeoutHide1); }

        hideSubLayers(g_currentNav1);
        loliteLr(level, g_currentHi1);

        if (g_currentNav1 != "") { hideSubLayers(g_currentNav1); }
        if (g_currentHi1 != "") { loliteLr(level, g_currentHi1); }

        showNav(level + 1, sName, sSelf);
        g_currentNav1 = sName;
        g_currentHi1 = sSelf;
    }
    else if (level == 1 || level == "1") {
        //echo("level in 1");

        if (g_timeoutHide1 != 0) { clearTimeout(g_timeoutHide1); }
        if (g_timeoutHide2 != 0) { clearTimeout(g_timeoutHide2); }

        if (g_currentNav2 != "") { hideSubLayers(g_currentNav2); }
        if (g_currentHi2 != "") { loliteLr(level, g_currentHi2); }

        showNav(level + 1, sName, sSelf);
        g_currentNav2 = sName;
        g_currentHi2 = sSelf;
    }
    else if (level == 2 || level == "2") {
        //echo("level in 2");

        if (g_timeoutHide1 != 0) { clearTimeout(g_timeoutHide1); }
        if (g_timeoutHide2 != 0) { clearTimeout(g_timeoutHide2); }
        if (g_timeoutHide3 != 0) { clearTimeout(g_timeoutHide3); }

        if (g_currentNav3 != "") { hideSubLayers(g_currentNav3); }
        if (g_currentHi3 != "") { loliteLr(level, g_currentHi3); }

        showNav(level + 1, sName, sSelf);
        g_currentNav3 = sName;
        g_currentHi3 = sSelf;
    }
    else if (level == 3 || level == "3") {
        //echo("level in 3");

        if (g_timeoutHide1 != 0) { clearTimeout(g_timeoutHide1); }
        if (g_timeoutHide2 != 0) { clearTimeout(g_timeoutHide2); }
        if (g_timeoutHide3 != 0) { clearTimeout(g_timeoutHide3); }
        if (g_timeoutHide4 != 0) { clearTimeout(g_timeoutHide4); }

        if (g_currentNav4 != "") { hideSubLayers(g_currentNav4); }

        showNav(level + 1, sName, sSelf);
        g_currentNav4 = sName;
    }
}

function loadImage(sName, sUrl)
{ 
    var elem = document.getElementById(sName + "_image");
    if (elem) elem.src = sUrl;
}

function outNav(level) {
    if (level == 0 || level == "0") {
        //echo("level out 0");
        g_timeoutHide1 = setTimeout("hideNav(1,\"" + g_currentNav1 + "\",\"" + g_currentHi1 + "\")", g_timeoutTime);
    }
    else if (level == 1 || level == "1") {
        //echo("level out 1");
        g_timeoutHide1 = setTimeout("hideNav(1,\"" + g_currentNav1 + "\",\"" + g_currentHi1 + "\")", g_timeoutTime);
        g_timeoutHide2 = setTimeout("hideNav(2,\"" + g_currentNav2 + "\",\"" + g_currentHi2 + "\")", g_timeoutTime);
    }
    else if (level == 2 || level == "2") {
        //echo("level out 2");
        g_timeoutHide1 = setTimeout("hideNav(1,\"" + g_currentNav1 + "\",\"" + g_currentHi1 + "\")", g_timeoutTime);
        g_timeoutHide2 = setTimeout("hideNav(2,\"" + g_currentNav2 + "\",\"" + g_currentHi2 + "\")", g_timeoutTime);
        g_timeoutHide3 = setTimeout("hideNav(3,\"" + g_currentNav3 + "\",\"" + g_currentHi3 + "\")", g_timeoutTime);
    }
    else if (level == 3 || level == "3") {
        //echo("level out 3");
        g_timeoutHide1 = setTimeout("hideNav(1,\"" + g_currentNav1 + "\",\"" + g_currentHi1 + "\")", g_timeoutTime);
        g_timeoutHide2 = setTimeout("hideNav(2,\"" + g_currentNav2 + "\",\"" + g_currentHi2 + "\")", g_timeoutTime);
        g_timeoutHide3 = setTimeout("hideNav(3,\"" + g_currentNav3 + "\",\"" + g_currentHi3 + "\")", g_timeoutTime);
        g_timeoutHide4 = setTimeout("hideNav(4,\"" + g_currentNav4 + "\",\"" + g_currentHi4 + "\")", g_timeoutTime);
    }
    else {
        //echo("level out is else: " + level);
    }
}

function dimHeadline(doOn)
{         
    var elem = document.getElementById("homeHead");
    
    if (elem) {
		// wtf?
        // if (parseInt(elem.style.top.replace(/px/, ""),10) > 88) {   
            
                if (doOn)
                {
                    elem.style.MozOpacity = ".99";
                    elem.style.Opacity = "1.00";
                    elem.style.opacity = "1.00";
                    elem.style.filter = "alpha(opacity=100)";
                }
                else
                {
                    elem.style.MozOpacity = ".40";
                    elem.style.Opacity = ".40";
                    elem.style.opacity = ".40";
                    elem.style.filter = "alpha(opacity=40)";
                }
        //}
    }
}

function showNav(level, sName, sSelf)
{
    dimHeadline(false);
    hiliteLr(level - 1, sSelf);
    var foundOne = showSubLayers(sName);
    if (foundOne) {
        showLr("navshade" + level);
    }
    else {
        hideLr("navshade" + level);
    }
}

function hideNav(level, sName, sSelf)
{
    if (level == 1) { g_timeoutHide1 = 0; g_currentNav1 = ""; g_currentSelf1 = ""; dimHeadline(true); }
    if (level == 2) { g_timeoutHide2 = 0; g_currentNav2 = ""; g_currentSelf2 = ""; }
    if (level == 3) { g_timeoutHide3 = 0; g_currentNav3 = ""; g_currentSelf3 = ""; }
    if (level == 4) { g_timeoutHide4 = 0; g_currentNav4 = ""; }

    loliteLr(level - 1, sSelf);
    hideLr("navshade" + level);
    hideSubLayers(sName);
}

function fadeAllOut(elem)
{
  if(elem == undefined)
    return;

  if(g_jdpowerphase == "none")
   return;

  var ID = elem.id
  var i = 0;
  var which = parseInt(ID.replace('link', '').replace('topnav', ''));
  for (; i <= G_MAXITEMS_MAINNAVI; i++)
  {
    if((i <= 7) && (which != i))
    {
      fadeOut('topnavlink' + i.toString());
    }
    if((i >= 8) && (which != i))
      fadeOut('topnavlink' + i.toString());
  }
}
function fadeAllIn(elem)
{
  if(elem == undefined)
    return;

  if(g_jdpowerphase == "none")
   return;

  var ID = elem.id
  var i = 0;
  var which = parseInt(ID.replace('link', '').replace('topnav', ''));
  for (; i <= G_MAXITEMS_MAINNAVI; i++)
  {
    if((i <= 7) && (which != i))
    {
      fadeIn('topnavlink' + i.toString());
    }
    if((i >= 8) && (which != i))
      fadeIn('topnavlink' + i.toString());
  }
}
function fadeOut(ID)
{
  var elem = document.getElementById(ID);
  if(elem)
  {
    elem.style.MozOpacity = ".5"; 
    elem.style.Opacity = ".5"; 
    elem.style.opacity = ".5"; 
    elem.style.filter = "Alpha(opacity=100, finishopacity=100, style=2)";
  }
}
function fadeIn(ID)
{
  var elem = document.getElementById(ID);
  if(elem)
  {
    elem.style.MozOpacity = "1.00"; // hack around weeeiiird bug which causes "1" to break NS7.02
    elem.style.Opacity = "1.00"; 
    elem.style.opacity = "1.00"; 
    elem.style.filter = "Alpha(opacity=100, finishopacity=100, style=2)";
  }
}

function hiliteLr(level, sName)
{
    var elem = document.getElementById(sName);
    if (elem)
    {
        if (level == 0 || level == "0")
        {
            //////////////////////
            var itemNo = parseInt(sName.replace('topnavlink', '').replace('topnav', ''));
            if (itemNo >= 8)
            {
                elem.style.backgroundColor = g_homemenu_hl_background_color_Level5;
            }
            else
            {
                elem.style.backgroundColor = g_homemenu_hl_background_color;
            }
            if ((g_jdpowerphase == "200803") && (itemNo <= 7))
            {
                var topNavi = document.getElementById("topnav" + itemNo.toString()); 
                topNavi.style.backgroundPosition = get_homenavi_background_position(g_home_modelnavi_num_modelranges_background, true); //"0px -550px";
                elem.style.backgroundPosition = get_homenavi_background_position(itemNo, true); //img;
            }
            else
            {
                elem.style.color = g_homemenu_hl_fontcolor; 
                if (! (elem.className.indexOf("final") >= 0) )
                {
                    //elem.style.backgroundImage = "url(/images/arrow-red.gif)";
                    elem.style.backgroundPosition = "210px -142px";
                }
            }
            fadeAllOut(elem);
            //////////////////////
        }
        else
        {
            elem.style.color = g_homemenu_hl_fontcolor; //"rgb(204, 0, 0)";
            elem.style.backgroundColor = "#FFFFFF";
            if (! (elem.className.indexOf("final") >= 0) )
            {
                //elem.style.backgroundImage = "url(/images/arrow-red.gif)";
                elem.style.backgroundPosition = "210px -142px";
            }

            elem.style.MozOpacity = ".99"; // hack around weeeiiird bug which causes "1" to break NS7.02
            elem.style.Opacity = "1.00"; 
            elem.style.opacity = "1.00"; 
            elem.style.filter = "alpha(opacity=100)";
        }
    }
}

function loliteLr(level, sName)
{
    var elem = document.getElementById(sName);
    if (elem)
    {
        if (level == 0 || level == "0")
        {

            //////////////////////
            var itemNo = parseInt(sName.replace('topnavlink', '').replace('topnav', ''));
	    if (itemNo >= 8)
            {
                elem.style.backgroundColor = g_homemenu_ll_background_color; 
            }
			
            if ((g_jdpowerphase == "200803") && (itemNo <= 7))
            {
                var topNavi = document.getElementById("topnav" + itemNo.toString()); // NOP
                topNavi.style.backgroundPosition = get_homenavi_background_position(g_home_modelnavi_num_modelranges_background, false); //"0px -500px";
                elem.style.backgroundPosition = get_homenavi_background_position(itemNo, false);
            }
            else
            {
                elem.style.color = g_homemenu_ll_fontcolor_level0; 
                elem.style.backgroundColor = g_homemenu_ll_background_color; 
                if (! (elem.className.indexOf("final") >= 0) )
                {
                    //elem.style.backgroundImage = g_homemenu_ll_background_image_level0;
                    elem.style.backgroundPosition = g_homemenu_ll_background_position_level0;
                }
            }
            fadeAllIn(elem);
            //////////////////////
        }
        else
        {
            elem.style.color = g_homemenu_ll_fontcolor_level1;
            elem.style.backgroundColor = "#FFFFFF";
            if (! (elem.className.indexOf("final") >= 0) )
            {
                //elem.style.backgroundImage = g_homemenu_ll_background_image_level1;
                elem.style.backgroundPosition = g_homemenu_ll_background_position_level1;
            }

            elem.style.MozOpacity = ".86";
            elem.style.Opacity = ".86"; 
            elem.style.opacity = ".86"; 
            elem.style.filter = "alpha(opacity=86)";
        }
    }
}

function showSubLayers(sName)
{
    var i = 0;
    var foundOne = false;

    for (i = 1; i <= G_MAXSUBLAYERS; i++)
    {
        var s = "nav_" + sName + "_" + i;
        var elem = document.getElementById(s);
        if (elem)
        {
            foundOne = true;
        }
        else
        {
            break;
        }

        showLr(s);
    }

    return foundOne;
}

function hideSubLayers(sName)
{
    var i = 0;
    var foundOne = false;

    for (i = 1; i <= G_MAXSUBLAYERS; i++)
    {
        var s = "nav_" + sName + "_" + i;
        var elem = document.getElementById(s);
        if (elem)
        {
            foundOne = true;
        }
        else
        {
            break;
        }

        hideLr(s);
    }

    return foundOne;
}

function echo(s)
{
    /*
    var elDebug = document.getElementById("debug");
    elDebug.innerHTML = "<div><span>" + (++g_echoCount) + ".</span> " + s + "</div>" + elDebug.innerHTML;
    */
    log(s);
}

function setModel(s)
{
    g_currentModelLink = s;
}

function gotoModel()
{
    if (g_currentModelLink != '')
    {
        gotoUrl(g_currentModelLink);
    }
}

function gotoUrl(s)
{
    //g_psyma_navi_clicked = true;
    document.location.href = s;
}

function gotoUrlDropDown(e)
{
	if (e.options)
	{
		var url = e.options[e.options.selectedIndex].value;
		if(url != '')gotoUrl(url);			
	}
}

function gotoUrlTimeout(s, timeout)
{
  setTimeout("gotoUrl('" + s + "')", timeout)
}
function nogo()
{
    //
}

function selectAllInput(elm)
{
    if (elm)
    {
        elm.focus();
        elm.select();
    }
}

function changedCountry(elmThis)
{
    if (document.getElementById)
    {
        var sUrl = elmThis.value;

        if (sUrl != "")
        {
            document.location.href = sUrl;
        }
    }
}

function sniffAll()
{
    /* JavaScript Browser Sniffer
       Eric Krok, Andy King, Michel Plungjan Jan. 31, 2002
       see http://www.webreference.com/ for more information
       This program is free software */

    var agt=navigator.userAgent.toLowerCase();
    var appVer = navigator.appVersion.toLowerCase();

    var is_minor = parseFloat(appVer);
    var is_major = parseInt(is_minor);

    var is_opera = (agt.indexOf("opera") != -1);

    /*
    var is_opera6 = (agt.indexOf("opera 6") != -1 || agt.indexOf("opera/6") != -1);
    var is_opera7 = (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1);
    var is_opera6up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4 && !is_opera5);
    var is_opera7up = (is_opera && !is_opera2 && !is_opera3 && !is_opera4 && !is_opera5 && !is_opera6);
    */

    var iePos  = appVer.indexOf('msie');
    if (iePos !=-1) {
       is_minor = parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)));
       is_major = parseInt(is_minor);
    }

	
    var is_konq = false;
    var kqPos   = agt.indexOf('konqueror');
    if (kqPos !=-1) {                 
       is_konq  = true;
       is_minor = parseFloat(agt.substring(kqPos+10,agt.indexOf(';',kqPos)));
       is_major = parseInt(is_minor);
    }

    var is_getElementById   = (document.getElementById) ? "true" : "false";
    var is_getElementsByTagName = (document.getElementsByTagName) ? "true" : "false";
    var is_documentElement = (document.documentElement) ? "true" : "false";

    var is_safari = ((agt.indexOf('safari')!=-1)&&(agt.indexOf('mac')!=-1))?true:false;
    var is_khtml  = (is_safari || is_konq);

    var is_gecko = ((!is_khtml)&&(navigator.product)&&(navigator.product.toLowerCase()=="gecko"))?true:false;
    var is_gver  = 0;
    if (is_gecko) is_gver=navigator.productSub;

    var is_moz   = ((agt.indexOf('mozilla/5')!=-1) && (agt.indexOf('spoofer')==-1) &&
                    (agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1)  &&
                    (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)     &&
                    (is_gecko) && 
                    ((navigator.vendor=="")||(navigator.vendor=="Mozilla")));

	var is_mac = ((agt.indexOf('macintosh')!=-1))?true:false;
	var is_linux = (navigator.platform.toLowerCase().indexOf('linux')!=-1)?true:false;
	var is_win = (navigator.platform.toLowerCase().indexOf('win')!=-1)?true:false;
	
    if (is_moz) {
       var is_moz_ver = (navigator.vendorSub)?navigator.vendorSub:0;
       if(!(is_moz_ver)) {
           is_moz_ver = agt.indexOf('rv:');
           is_moz_ver = agt.substring(is_moz_ver+3);
           is_paren   = is_moz_ver.indexOf(')');
           is_moz_ver = is_moz_ver.substring(0,is_paren);
       }
       is_minor = is_moz_ver;
       is_major = parseInt(is_moz_ver);
    }

    var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)
                && (!is_khtml) && (!(is_moz)));

    if ((navigator.vendor)&&
        ((navigator.vendor=="Netscape6")||(navigator.vendor=="Netscape"))&&
        (is_nav)) {
       is_major = parseInt(navigator.vendorSub);
       is_minor = parseFloat(navigator.vendorSub);
    }

    var is_nav2 = (is_nav && (is_major == 2));
    var is_nav3 = (is_nav && (is_major == 3));
    var is_nav4 = (is_nav && (is_major == 4));
    var is_nav4up = (is_nav && is_minor >= 4); 
    var is_navonly  = (is_nav && ((agt.indexOf(";nav") != -1) ||
                          (agt.indexOf("; nav") != -1)) );

    var is_nav6   = (is_nav && is_major==6);
    var is_nav6up = (is_nav && is_minor >= 6);

    var is_nav5   = (is_nav && is_major == 5 && !is_nav6);
    var is_nav5up = (is_nav && is_minor >= 5);

    var is_nav7   = (is_nav && is_major == 7);
    var is_nav7up = (is_nav && is_minor >= 7);

    var is_ie   = ((iePos!=-1) && (!is_opera) && (!is_khtml));
    var is_ie3  = (is_ie && (is_major < 4));

    var is_ie4   = (is_ie && is_major == 4);
    var is_ie4up = (is_ie && is_minor >= 4);
    var is_ie5   = (is_ie && is_major == 5);
    var is_ie5up = (is_ie && is_minor >= 5);
    
    var is_ie5_5  = (is_ie && (agt.indexOf("msie 5.5") !=-1));
    var is_ie5_5up =(is_ie && is_minor >= 5.5);
    
    var is_ie6   = (is_ie && is_major == 6);
    var is_ie6up = (is_ie && is_minor >= 6);

	// OS
	g_is_win = is_win;
	g_is_mac = is_mac;
	g_is_linux = is_linux;
	
    g_is_ie = is_ie;
    g_is_opera = is_opera;
    g_is_ie5 = is_ie5;
    g_is_ie5_5 = is_ie5_5;
    g_is_ie6 = is_ie6;
    g_is_safari = is_safari;
}



/* Module Motorschaubild */

function showDetail(item) {
    getDiagramDetail(item).style.display = "block";
}
    
function hideDetail(item) {
    getDiagramDetail(item).style.display = "none";
}    
    
function getDiagramDetail(item) {
    return document.getElementById("engineDiagramDetail" + item.getAttribute("id").substr(17,2));
}

function switchDiagramPage()
{
   var page1 = document.getElementById("engineDiagramPage1");     
   var page2 = document.getElementById("engineDiagramPage2");
     
   if (page1 && page2) {
        var show2ndPage = ((page1.style.display == "") || (page1.style.display == "block"));
        
        var control = document.getElementById("engineDiagramControl");
                
        if (show2ndPage) {
                page1.style.display = "none";
                page2.style.display = "block";
                control.innerHTML = "<a href=\"javascript:switchDiagramPage();\">&lt; 2/2</a>";
        } else {
                page1.style.display = "block";
                page2.style.display = "none";
                control.innerHTML = "<a href=\"javascript:switchDiagramPage();\">1/2 &gt;</a>";                
        }
   } 
}

var g_currentDiagramPage = 1;

function nextDiagramPage(diagramID)
{
	showDiagramPage(g_currentDiagramPage + 1, diagramID);
}
function previousDiagramPage(diagramID)
{
	showDiagramPage(g_currentDiagramPage - 1, diagramID);
}
function showDiagramPage(pageToDisplay, diagramID)
{
	if(!pageToDisplay)
		pageToDisplay = 1;
	if(!diagramID)
		diagramID = "";

    var pageToShow = null;
    var pageCount = 1;
    var page = document.getElementById(diagramID + "Page" + pageCount);
    while(page){
        pageCount++;
        page = document.getElementById(diagramID + "Page" + pageCount);
    }
    var maxPages = pageCount - 1;

	var pageToHide = document.getElementById(diagramID + "Page" + g_currentDiagramPage);
	if(pageToHide)
		pageToHide.style.display = "none";

	pageToShow = document.getElementById(diagramID + "Page" + pageToDisplay);
	if(pageToShow)
		pageToShow.style.display = "block";

	var pages = pageToDisplay + "&#160;/&#160;" + maxPages;
	var previous = (pageToDisplay == 1) ? "&#160;" : "&#160;&#160;&lt;&#160;&#160;";
	var next = (pageToDisplay == maxPages) ? "&#160;&#160;&#160;&#160;&#160;&#160;" : "&#160;&#160;&gt;&#160;&#160;";
	var control = document.getElementById(diagramID + "Control");
	if(control)
	{
		if(maxPages == 1)
			control.innerHTML = previous + pages + next;
		else if (pageToDisplay == maxPages)
			control.innerHTML = "<a href=\"javascript:previousDiagramPage('" + diagramID + "');\">" + previous + "</a>" + pages + next;
		else if(pageToDisplay == 1)
			control.innerHTML = previous + pages + "<a href=\"javascript:nextDiagramPage('" + diagramID + "');\">" + next + "</a>";
		else
			control.innerHTML = "<a href=\"javascript:previousDiagramPage('" + diagramID + "');\">" + previous + "</a>"
							 + pages
							 + "<a href=\"javascript:nextDiagramPage('" + diagramID + "');\">" + next + "</a>";

		g_currentDiagramPage = pageToDisplay;
	}
}
  
/* Module Image Switch */

function updateImageSwitch(elm, state)
{
	var elmChild = null;
	
	if (elm.childNodes[0].style != undefined) {
		elmChild = elm.childNodes[0];
	} else {
		elmChild = elm.childNodes[1];
	}

    switch (state) {
        case "active":    

            var i = 1;
            do {
                var elmInactive = document.getElementById("switchImage" + i);
                if (elmInactive != null) {
                    updateImageSwitch(elmInactive, "inactive");
                }
                i++;
            } while (elmInactive != null)

            elm.style.color = "rgb(204,0,0)";
            elm.style.background = "white url(/images/arrow-red.gif) no-repeat left 3px";
            elmChild.style.display = "block";                      
            break;
        case "inactive":
            elm.style.color = "rgb(102,102,102)";
            elm.style.background = "white url(/images/arrow-gray.gif) no-repeat left 3px";
            elmChild.style.display = "none";                                      
    }
}

/* Macht ein Redirect zur Value des ausgewählten Elements der angegebenen Select Box */
function RedirectToOptionValue(name)
{
  obj = document.getElementById(name);
  if(obj)
  {
    link = obj.options[obj.selectedIndex].value;
    if(link.length > 0)
    {
      document.location.href = link;
    }
  }
}


/* SSO Cookie Check (to support caching) */

function ShowIfLoggedIn(id)
{
    if ( isLoggedIn() ) {
        var elm = document.getElementById(id);
        if (elm) {
            elm.style.display = "inline";
        }
    }
}

function HideIfLoggedIn(id)
{
    if ( isLoggedIn() ) {
        var elm = document.getElementById(id);
        if (elm) {
            elm.style.display = "none";
        }
    }
}

function isLoggedIn()
{
    var status = getCookie("SSO_LOGIN");
    if (status == null || status=='false') { status = false; }
    return status;
}

function getCookie(name)
{
    var thisCookie = document.cookie;
    var index = thisCookie.indexOf(name + "=");
    if (index == -1) return null;
    index = thisCookie.indexOf("=", index) + 1;
    var endstr = thisCookie.indexOf(";", index);
    if (endstr == -1) endstr = thisCookie.length;
    return unescape(thisCookie.substring(index, endstr));
}

function replStr(str,oldStr,newStr)
{ var strPos=str.indexOf(oldStr);
  return (strPos>=0) ?
    str.substring(0,strPos) + newStr +
       replStr( str.substring(strPos +
       oldStr.length), oldStr, newStr ) :
    str
}

function gotoUrlIE(url) 
{
    ;
}

function submitSDSTrainingSearchForm()
{
	var sfsForm = document.getElementById("SDSTrainingSearchForm");
	if (sfsForm.month.options.selectedIndex != 0)
		sfsForm.submit();
}

//
// Function ieToggleDropDowns: 
//
// Description: Toggles dropdown visibility in case of a dynamic layer 
// covering them pops up, and has a z-index higher than these. IE does not handle them correctly.
//
// Input: 
// 		strAttr: String Array, whose elements are the <DIV> id's to toggle. See function: getListIEDropDowns() 
//		boolHide: Boolean toggle. true, if the layer should be made visible, false otherwise.
// Returns : none.
function ieToggleDropDowns(boolHide) {
	// collection of dropdowns
    var strArr = getListIEDropDowns();
	if (strArr.length > 0) {
		for (i=0; i < strArr.length; i++) {
			dd = document.getElementById(strArr[i]);
			if (dd) 
				if (boolHide) 
				{
					dd.style.visibility = 'hidden'
				}
				else
				{
					dd.style.visibility = 'visible';
				}
		}
	}
}

//
// Function getListIEDropDowns():
//
// Description: Builds an array of Dropdowns whose visibility should be toggled 
// in case of a dynamic layer covering them.
// Input: none.
// Returns: String array of <DIV> id's.
function getListIEDropDowns() {
	return (new Array("monthDropDown", "modelprice", "modelpower"));
}


function showGalleryQuicktime(src) {
    g_fallbackImage = $('#galleryImage').attr('src');
	showQuicktime(src, 'galleryContent', '595', '317');
}


function showQuicktime(src, layer , width, height)
{
	var elm = document.getElementById(layer);
	if (elm && isQTInstalled())
	{
		var qtstring = '';
		qtstring += '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" width="'+width+'" height="'+height+'" id="galleryQuicktimeMovie">' 
		qtstring += '<param name="src" value="'+src+'"><embed height='+height+' width='+width+' src="'+src+'" type="video/quicktime" pluginspage="www.apple.com/quicktime/download" enablejavascript="true" name="galleryQuicktimeMovie" />'
		qtstring += '</object>'
		
		elm.innerHTML = qtstring;
	}
}


function showFullscreenQuicktime(src)
{
    if (isQTInstalled())
	{
		sWidth = window.screen.availWidth;
		sHeight = window.screen.availHeight;
		var doc = window.open("/all/transitional/all/panoramaPopup/panoramaPopup.asp?qt=" + src, "newWin" + getRandomInt(10000), "width=" + sWidth + ",height=" + sHeight + ",left=0,top=0,dependent=yes,location=no,resizable=yes,scrollbars=no,status=no");			
		doc.focus();
	}
}

function showFullscreenQuicktimeObject(src)
{
    if (isQTInstalled())
	{
		sWidth = window.screen.availWidth;
		sHeight = window.screen.availHeight;
		var doc = window.open("/all/transitional/all/panoramaPopup/objectPopup.asp?qt=" + src, "newWin" + getRandomInt(10000), "width=" + sWidth + ",height=" + sHeight + ",left=0,top=0,dependent=yes,location=no,resizable=yes,scrollbars=no,status=no");			
		doc.focus();
	}
}
function showPanoramaPopup(pool, id, lang, panoramaversion, width, height, callpath)
{
	sWidth = window.screen.availWidth;
	sHeight = window.screen.availHeight;
	
	if(width && width > 0)
	{
		sWidth = width;		
	}
	
	if(height && height > 0)
	{
		sHeight = height;		
	}
	
	var url = "/panoramaPopup.aspx?Pool=" + pool + "&ID=" + id + "&Lang=" + lang + "&Panoramaversion=" + panoramaversion;	
	if (callpath && callpath.length > 0)
	{
		url += "&callpath=" + callpath;
	}
	
	var doc = window.open(url , "newWin" + getRandomInt(10000), "width=" + sWidth + ",height=" + sHeight + ",left=0,top=0,dependent=yes,location=no,resizable=yes,scrollbars=no,status=no");			
	doc.focus();
}
function writePopupQuicktimeObject(src,width,height)
{
    if (isQTInstalled())
	{
		var s = '';								
	
		var sWidth = '100%';
		var sHeight = '100%';
	
		var divWidth = "100%";
		var divHeight = "87%";
		
		if (width && width > 0)
		{
			sWidth = width;
			divWidth = width;
		}
		
		if (height && height > 0)
		{			
			sHeight = height + 15;
			divHeight = height + 15;
			
			if ( viewportGetHeight() > (sHeight + 50) )
			{
			  spacerHeight = (viewportGetHeight() - sHeight) * 0.43;					  
			  s += '<div style="height: ' + spacerHeight + 'px; width:100%; font-size:1px;"></div>\n';
			}
			else
			{
			  document.body.style.overflow = 'auto';
			}			
		}	
		
		s += '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" width="'+sWidth+'" height="'+sHeight+'" codebase="http://www.apple.com/qtactivex/qtplugin.cab" id="quicktimePlugin">';
		s += '	<param name="scale" value="tofit"><param name="controller" value="true"><param name="cache" value="false"><param name="bgcolor" value="#E9E9E9"><param name="volume" value="30"><param name="kioskmode" value="false"><param name="moviename" value="spincontrolled">';
		s += '	<param name="src" value="'+src+'">';
		s += '	<embed src="'+src+'" ';
		s += '		width="'+sWidth+'" ';
		s += '		height="'+sHeight+'" ';
		s += '		type="video/quicktime" ';
		s += '		controller="true"';
		s += '		cache="false" ';
		s += '		volume="30"';
		s += '		kioskmode="false"';
		s += '		scale="tofit" ';
		s += '		pluginspage="http://www.apple.com/quicktime/download/" ';
		s += '		bgcolor="#E9E9E9"';
		s += '		moviename="spincontrolled"';
		s += '		/>';
		s += '</object>';
		
		var elm = document.getElementById('panorama');	
		if(elm)
		{
			elm.style.width = divWidth;
			elm.style.height = divHeight;		
			elm.innerHTML = s;
		}			
		
	}
	else
	{
		document.getElementById('noPlugin').style.display = 'block';
		document.getElementById('claim').style.display = 'none';
	}	
}
function myreplace(text,from,to) 
{
	ti = text.indexOf(from);
	text = text.substring(0,ti)+to+text.substr(ti+from.length);
	
	return text;
} 
function writePopupFlashObject(src,width,height)
{	
	if (swfobject.hasFlashPlayerVersion("6"))
	{
		var sWidth = '100%';
		var sHeight = '100%';
		
		var divWidth = '100%';
		var divHeight = '87%';
		
		if (width && width > 0)
		{
			sWidth = width;
			divWidth = width;
		}
		
		if (height && height > 0)
		{
			sHeight = height;
			divHeight = height;
		}

		var elm = document.getElementById('panorama');	
		if(elm)
		{
			elm.style.width = divWidth;
			elm.style.height = divHeight;
		}	
			
		// show flash
		showFlash(src, 'panorama', sWidth, sHeight, 6, '#E9E9E9', 'loop=true,menu=true,quality=high,wmode=opaque', null)
		
	}
	else
	{
		document.getElementById('noPlugin').style.display = 'block';
		document.getElementById('claim').style.display = 'none';
	}	
}
// gehört zu jeder gescheiten JS-Bibliothek.
function trim(str)
{
 	return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

/* Toggleable language selector */

function writeLanguageSelector(pool, codes, texts, urls, selectedCode, containerId, defaultText)
{
    if (document.addEventListener) 
    {
			document.addEventListener("DOMFocusIn", langSelectorCheckBlur, true);
	}
	document.onmousedown = langSelectorCheckBlur;
	listId = 'HomeLangSelect';
	var i;
	var selectedIndex = 0;
	
	for (i=0; i<codes.length; i++)
	{
	    if (codes[i] == selectedCode) 
	    {
	        selectedIndex = i;
	        break;
	    }
	}
	var html = "";
	html += "<div class=\"langSelect\" onclick=\"toggleLr('" + listId + "')\">\n";
	html += "<div id='langSelectDiv'><div type=\"text\" class=\"langSelectCurrent\">" + (defaultText == undefined ? texts[selectedIndex] : defaultText)  + "</div>\n";
	html += "<div class=\"langSelectArrow\"></div></div>\n";
	html += "</div>\n";
	
	html += "<ul id=\"" + listId + "\" class=\"langSelectList\">\n";
	for (i=0; i< codes.length; i++)
	{
	    html += "<li onmouseover=\"mOverLangList(this, '"+ pool + "');\" onmouseout=\"mOutLangList(this, '"+ pool + "');\"><a href=\"" + urls[i] + "\">" + texts[i] + "</a></li>\n";
	}
	html += "</ul>\n";
	
	var container = document.getElementById(containerId);
	container.innerHTML = html;
}

function mOverLangList(elm, pool)
{
    if (!elm) return;
    poolid = pool.toLowerCase();
    switch(poolid)
    {
        case 'pco':
            elm.style.backgroundColor = '#E9E9E9';
			break;
        default:
            elm.style.backgroundColor = '#E9E9E9';
			break;
    }
}


function mOutLangList(elm, pool)
{
    if (!elm) return;
    poolid = pool.toLowerCase();
    switch(poolid)
    {
        case 'pco':
            elm.style.backgroundColor = '#FFFFFF';
			break;
        default:
            elm.style.backgroundColor = '#FFFFFF';
			break;
    }
}

if (window.Node && Node.prototype && !Node.prototype.contains) 
{
    Node.prototype.contains = function (arg)
    {
	    return !!(this.compareDocumentPosition(arg) & 16);
	};
}

function langSelectorCheckBlur(e)
{
    element = document.getElementById("langSelectDiv");	
	dropdownList = document.getElementById("HomeLangSelect");
	e = e || window.event;
	var target = e.target || e.srcElement || false;
	if (!target) {
		return;
	}

	if (target == element || element.contains(target) || target == dropdownList || dropdownList.contains(target)) 
	{		
	}
	else
	{
		hideLr("HomeLangSelect");
	}
	
}

function checkClassic(data)
{
	var now = new Date();
	var result = new Array();
	
	// wenn das Produktionsjahr länger als 10 Jahre zurückliegt, und im 11. Jahr schon August ist, dann kommt der wagen zu Classic
	for(i = 0; i < data.length; i++)
	{
		var diff = now.getFullYear() - data[i][3];
		if(diff > 10)
		{
			if(diff == 11 && now.getMonth() < 8) {}
			else result.push(data[i]);
		}
	}
	return result;	
}

/* Start dealer search */
function porscheCenterSearchHandleError(errCode, errorMessage, fallBackMessage, searchBlockShadowId) {
    preInitPorscheCenterSearch(searchBlockShadowId);
    var msg;
    if (errorMessage && trim(errorMessage) != '') {
        msg = errorMessage;
        log("INFO: Text \"" + errCode + "\" gefunden.");
    }
    else {
        msg = fallBackMessage; // fallback error message.
        log("FEHLER: Text \"" + errCode + "\" nicht gefunden! Falls zurück auf den generischen Text '" + escape(fallBackMessage) + "'");
    }
    $("<p class=\"error\"></p>").text(msg).appendTo("#porscheCenterSearchResults");    
}


function preInitPorscheCenterSearch(searchBlockShadowId) {

    //$("a.homeHead, #p_searchSite *").fadeTo(150, 0.3);
    setupFadeEffectsDealerSearch(true);
    
    var currentPool = getPoolName();
    // handle intro-facts
    if ($(".introFacts").length > 0) {
        // stretch the result container downwards
        //$("#porscheCenterSearchResults").css("height", "259px");
    }
    // set initial height;
    if (currentPool == 'usa') {
        // "loading.." Gif animation.
        $("#porscheCenterSearchResults").addClass("loading");
    }
    
    
}

function setupFadeEffectsDealerSearch(fadeIn) {
    var currentPool = getPoolName();
    var fadeFactor = (fadeIn ? 0.3 : 1.0);
    var fadeSpeed = 150;
    var elements;
    if (currentPool == 'usa') {
        elements = "a.homeHead";
    }
    else {
        elements = "a.homeHead, #p_searchSite *";
    }
    $(elements).fadeTo(fadeSpeed, fadeFactor);
}

// initDealerSearchbox helper function
function initPorscheCenterResultsDisplay(searchBlockId) {
    // hide introfacts elements
    $('.introFactsShade, .introFactsContent').hide();
    // cancel the "loading.." sequence.
    $('#porscheCenterSearchResults').removeClass('loading');
    // make site search almost almost transparent 
    //to draw the focus on the center search.
    $('#porscheCenterSearchResults').show();
    // setup region click sensing to close the window when clicked "outside".
    handleClickOutside($("#" + searchBlockId), "PCSearchClickedOutsideEvents(\"" + searchBlockId + "\")", true);
    //$(".porscheCenterSearchBG").show();
}

function PCSearchClickedOutsideEvents() {
    var currentPool = getPoolName();
    // reset heights
    //$("#porscheCenterSearchResults").css("height", "auto");
    // reset site search visibility
    setupFadeEffectsDealerSearch(false);
    // hide result container.
    $('#porscheCenterSearchResults').hide();
    // if they are available, re-display intro-facts elements.
    $('.introFactsShade, .introFactsContent').show();

}

function handleClickOutside(obj, doEvent, bindOnce) {
    
    var elm;
    if (obj.length && obj.length > 0)
        elm = obj[0];
    else
        elm = obj;
  
    //
    // *******************************
    //  click management 
    // ******************************* 
    //
    $(document).click(function(e) { // when anywhere in the doc is clicked
        var clickedOutside = true; // start searching assuming we clicked outside
        $(e.target).parents().andSelf().each(function() { // search parents and self
            // if the original element selector is the click's target or a parent of the target
            // we have not clicked outside the box
            if (this == elm) {
                clickedOutside = false; // found
                log("ClickedOutside = false. Returning..")
                return false; // stop searching
            }
        });
        if (clickedOutside) {
            log("ClickedOutside = true. executing " + doEvent);
            eval(doEvent);
            //$(elm).fadeOut("fast");
            if (bindOnce) {
                // unbind this listener, we're done with it
                $(document).unbind('click', arguments.callee);
            }
        }
    });
}

function setupDealerSearchFormSubmitEvent(searchBlockId, baseURL) {
    if (getPoolName() == 'usa') return;
    // bind form submit event
    $("#porscheCenterSearchForm").submit(function() {
        log("Porsche Center search form submitted");
        var searchKeywords = $("#" + searchBlockId + " .searchfield").val();
        log("searching for: " + searchKeywords);
        openDealerLocator(null, 980, 725, 'dealer', baseURL + "?geoip=true&searchKey=" + encodeURIComponent(searchKeywords));
        PCSearchClickedOutsideEvents();
        return false;
    });
}

function getPoolLangUrl(pool, lang) {
    return (lang != 'none') ? pool + '/' + lang : pool;
}



// dealer search box on the homepage
function initDealerSearch() {
    if (getPoolName() != 'usa') return;
    log("getPoolName(): " + getPoolName());

    log("initPCNADealerSearchbox() entered.");
    var pool = getPoolName();
    var lang = getPoolLang(pool);
    var resultCount = 2; // how many results maximum.
    var baseURL = "/all/dealer2/" + getPoolLangUrl(pool, lang) + "/";

    // Setup Dealer Vicinity Search
    var searchBlockId = "dealersearch";
    var searchBlockShadowId = "dealersearchShadow";


    //var searchFieldBGColor = $("#dealersearch .searchfield").css("background-color"); // initial background color
    $("#dealersearch .zipcode").click(function() {
        log("dealer zipcode clicked");

    }).focus(function() {
        log("#" + searchBlockId + " .zipcode gotFocus");
        $(this).addClass('focused');
        // empty default value
        if (this.value == this.defaultValue) {
            this.value = "";
        }
        // initialize search results container
        var searchResultContainer = $("#porscheCenterSearchResults");


        if (searchResultContainer.length == 0) {
            log("First time call. setting up searchResultContainer");
            // layout setup
            $("<div id=\"porscheCenterSearchResults\"><ul></ul></div>").appendTo("#" + searchBlockId);

            // title
            var title = "<h5>" + $("input[name='porscheCentersNearYou']").val() + "</h5>";
            $("<p></p>").html(title).prependTo("#porscheCenterSearchResults");

            preInitPorscheCenterSearch(searchBlockShadowId);

            //load and display results
            var searchUrl = "/all/dealer2/search.aspx?siteid=" + pool + "&market=" + pool + "&language=" + lang + "&mode=nearestbyip&locationtype=centre&maxresults=" + resultCount;

            $("body").css("cursor", "progress");
            $.ajax({
                url: searchUrl,
                dataType: "xml",
                success: function(data) {
                    // process resulting html here
                    var dealersFound = false;
                    $(data).find('#dealerNonHTML dealer').each(function() {
                        // raise flag "at least one dealer found!"
                        if (!dealersFound) dealersFound = true;
                        // Porsche center URL (Google Porsche Center Search)
                        var pcUrl = "";
                        if (pool == "usa") {
                            pcUrl = $(this).find('dealerlink').text();
                        }
                        else {
                            pcUrl = "/all/dealer2/" + getPoolLangUrl(pool, lang) + "/location.aspx?locationId=" + $(this).attr("nr") + "&locationtype=centre";
                        }
                        // build Porsche center link
                        var link = $("<a href=\"" + pcUrl + "\" class=\"porscheCenterLink\">" + $(this).find('name').text() + "</a>");
                        
                        // wrap link in <li> and append the whole thing to the <ul>.
                        $("<li></li>")
                        .hover(function() { $(this).addClass('focused'); }, function() { $(this).removeClass('focused'); })
                        .append(link).appendTo('#porscheCenterSearchResults ul');
                        // setup porsche center link click function.
                        // (yes, we can refer to an object after inserting it into the dom)
                        $(link).click(function() {
                            /* Porsche center link Click events */
                            try {
                                //click_track('Klick-Startseite/Suchformular/Händlersuche');
                                click_track('Klick-Startseite/Search/Dealer');
                            }
                            catch (e) {
                                log("FEHLER: WIREDMINDS tracking gescheitert. Auf DEV-Server kann man diesen Fehler ignorieren.");
                            }


                            var winOptions = false;
                            if (pool == 'usa') {
                                winOptions = "left=40,top=40,dependent=yes,location=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes,menubar=yes,directories=yes,personalbar=yes";
                            }
                            log("winOptions: " + winOptions);
                            openDealerLocator(null, 980, 725, 'dealer', pcUrl, winOptions);
                            return false; // we don't want to open the link in the current window.
                        });
                    }); //.each
                    if (!dealersFound) {
                        // We could not find any dealers,
                        // display an appropriate message
                        log("No centers found");
                        porscheCenterSearchHandleError('noCentersFound', $("input[name='noCentersFound']").val(), "NO PORSCHE CENTERS FOUND.");
                    }
                    else {
                        $(".porscheCenterSearchBG").css("height", "60px"); /* STV: Hompage IE 7 */
                    }
                }, //success: function(data)
                error: function(request, error) {
                    log("HTTP-FEHLER: Typ '" + error + "'");

                    porscheCenterSearchHandleError('errorInProcess', $("input[name='errorInProcess']").val(), "HTTP-ERROR.", searchBlockShadowId);
                },
                complete: function() {
                    $("body").css("cursor", "default");
                    preInitPorscheCenterSearch(searchBlockShadowId);
                    initPorscheCenterResultsDisplay(searchBlockId);
                }
            }); // $.ajax

        }
        else {
            log("Search container exists");
            preInitPorscheCenterSearch(searchBlockShadowId);

            initPorscheCenterResultsDisplay(searchBlockId);
        }

    }).blur(function() {
        // reset default value if lost focus
        $(this).removeClass('focused');
        if (!this.value.length) {
            this.value = this.defaultValue;
        }
        log("haendler suchbox: blur");

    });
    return false;
}


// Quicktime detection script
function isQTInstalled() {
    var qtInstalled = false;
    qtObj = false;
    if (navigator.plugins && navigator.plugins.length) {
        for (var i = 0; i < navigator.plugins.length; i++) {
            var plugin = navigator.plugins[i];
            if (plugin.name.indexOf("QuickTime") > -1) {
                qtInstalled = true;
            }
        }
    } else {
        execScript('on error resume next: qtObj = IsObject(CreateObject("QuickTimeCheckObject.QuickTimeCheck.1"))', 'VBScript');
        qtInstalled = qtObj;
    }
    return qtInstalled;
}


// Console logging for firebug.
// keep it silent on other browsers.
function log(str) {
    try {
        console.log(str);
    }
    catch (e) {
    }
}
// Class Hashtable
function Hashtable() {
    this.length = 0;
    this.items = new Array();
    for (var i = 0; i < arguments.length; i += 2) {
        if (typeof (arguments[i + 1]) != 'undefined') {
            this.items[arguments[i]] = arguments[i + 1];
            this.length++;
        }
    }

    this.removeItem = function(in_key) {
        var tmp_value;
        if (typeof (this.items[in_key]) != 'undefined') {
            this.length--;
            tmp_value = this.items[in_key];
            delete this.items[in_key];
        }

        return tmp_value;
    }

    this.getItem = function(in_key) {
        return this.items[in_key];
    }

    this.setItem = function(in_key, in_value) {
        if (typeof (in_value) != 'undefined') {
            if (typeof (this.items[in_key]) == 'undefined') {
                this.length++;
            }

            this.items[in_key] = in_value;
        }

        return in_value;
    }

    this.hasItem = function(in_key) {
        return typeof (this.items[in_key]) != 'undefined';
    }
}
// Ziel URL für button.swf
function getButtonTarget() {
    return buttonTarget;
}

function getCachePrevent() {
    return "rand=" + escape(Math.round(Math.random() * 10000));
}

function conditionLinkFix(ids) {
    var conditionMatched = window.location.href.match(/_.+_/ig);
    var elmIds = ids.split(/[\s,;]+/);
    $.each(elmIds, function() {
        if (!conditionMatched) $("#" + this).css({ 'left': '-10000px', 'visibility': 'hidden' });
    });
}

/* ** 200803.js ********************************************************************************** */
/* Style Variablen für Hauptnavi überschreiben */
g_homemenu_hl_fontcolor = "#CC0000"; //"rgb(204, 0, 0)";
g_homemenu_hl_background_color = "transparent";
g_homemenu_hl_background_color_Level5 = "#FFFFFF";
g_homemenu_ll_fontcolor_level0 = "#000000";
g_homemenu_ll_fontcolor_level1 = "#000000";
g_homemenu_ll_background_color = "#eef2f5";
g_homemenu_ll_background_image_level0 = "url(../image/arrow-black.gif)";
g_homemenu_ll_background_image_level1 = "url(../image/arrow-black.gif)";
g_homemenu_ll_background_position_level0 = "210px -592px";
g_homemenu_ll_background_position_level1 = "210px -592px";
g_jdpowerphase = "200803";

/* Hauptmenü: Anzahl der Menüeinträge in Subnavi erhöhen */
G_MAXSUBLAYERS = 18;


// 15.04.2010 miki: JS 4 Sharebar
// JScript source code
function sharethis(href, encoding) {
    var link;
    if (encoding == null)
        link = href.replace('URL', encodeURIComponent(document.location.toString()));
    else
        link = href.replace('URL', document.location.toString());

    link = link.replace('TITEL', document.title);

    window.open(link, 'share');
}

jQuery(document).ready(function () {
    jQuery(".sharelayer").hide();
    jQuery(".followlayer").hide();

    jQuery(".sharing").hover(
    function () {
        jQuery(".sharelayer,.followlayer").fadeIn(100);

    },
    function () {
        jQuery(".sharelayer,.followlayer").fadeOut(100);
    }
    );

});



/*END DEALER SEARCH */
// Wiredminds tracking
function click_track(value) {
    // trackt einen Besucher Klick
    if (g_is_home) {   // wm_cd1= value;
        try {
            wiredminds.count(value);
        }
        catch (e) {
            log("wiredminds tracking gescheitert! Value: " + value);
        }

    }
}

/*******************************************************************************************************************************/

///* START: JQuery */
//$(document).ready(function() {
//    initAll2();
//});

function initAll2() {
    $("#navigation-sitemap-link").mouseover(function() { showSitemap(); });
    //$("#navigation-modelrangeoverview-link").mouseover(function() { showModels(); })
    $("#navigation-modelrangeoverview-link, #navigation-wappen, #navigation-sub, #navigation-bluebox, #footer, #content").mouseover(function() { showContent(); });
    $("#metamyporsche, #metalogin, #metasitesearch, #metadealersearch").mouseover(function() { activeMetaDrop(this); });

    checkLoginError();
    initInfoLayerClueTip();
    
}

var g_destroyOldTeaserBar = false;
function setupTeaserbar() {
    if (g_destroyOldTeaserBar) {
        $('#teaserbarNavLeft,#teaserbarNavRight,#teaserBarWrapper').remove();
        $('.innerContent').append('<a class="prevPage browse left disabled" id="teaserbarNavLeft" /><div id="teaserBarWrapper" /><a class="nextPage browse right" id="teaserbarNavRight" />');
    }
    
    $('ul.teaserBar').addClass('items').appendTo('#teaserBarWrapper').show();
    $('#teaserBarWrapper').addClass('scrollable').scrollable({ "clickable": false, "size": (4), "speed": 300 }); //$("#clone").scrollable({ "clickable": true, "size": (4), api: true });
    $('#teaserbarNavLeft').click(function() {
        click_track('Klick-Startseite/Teaser/Previous Teaser');
    });
    $('#teaserbarNavRight').click(function() {
        click_track('Klick-Startseite/Teaser/Next Teaser');
    });
}

/* For compatibility with the older version */
function moveTeaserbar() {
    g_destroyOldTeaserBar = true;
}

function showContent() {
    $("#navigation-sitemap, #navigation-sitemap-shadow, #navigation-modelrangeoverview, #navigation-modelrangeoverview-shadow").hide();
    $("#navigation-modelrangeoverview-link, #navigation-sitemap-link, #navigation-sub, #navigation-bluebox, #menu1, #footer").removeClass("fadeout"); //.css("opacity", "1.0");
    $("#metamyporschecontainer, #metalogincontainer, #metasitesearchcontainer, #metadealersearchcontainer").hide();
    $("#metamyporsche, #metalogin, #metasitesearch, #metadealersearch").parent().removeClass("active");
    $("#metamyporsche, #metalogin").parent().removeClass("activeborderleft");
    $("#metadealersearch").removeClass("activeborderright");
    if (g_is_ie6) {
        ieToggleDropDowns(getListIEDropDowns(), false);
    }
}
function hideContent(element) {
    //$("#navigation-sub, #navigation-bluebox, #footer, #menu1" + element).addClass("fadeout"); 
}
function showSitemap() {
    $("#navigation-sitemap-link").removeClass("fadeout");
    $("#navigation-modelrangeoverview, #navigation-modelrangeoverview-shadow").hide();
    hideContent(", #navigation-modelrangeoverview-link");
    var height = 0 + $("#navigation-sitemap").height();
    height = height + 32 // padding top + bottom;
    //$("#navigation-sitemap-shadow").height(height);
    $("#navigation-sitemap-shadow, #navigation-sitemap").show();
    //$("#navigation-sitemap").show();
}
function showModels() {
    // wenn "Modelle" = aktiver Menüpunkt, dann nicht das Flyout-Script ausführen
    if (!$("#navigation-modelrangeoverview-link").hasClass("active")) {
        $("#navigation-modelrangeoverview-link").removeClass("fadeout");
        $("#navigation-sitemap, #navigation-sitemap-shadow").hide();
        hideContent(", #navigation-sitemap-link");
        var height = 0 + $("#navigation-modelrangeoverview").height();
        height = height + 32 // padding;
        //        $("#navigation-modelrangeoverview-shadow").height(height);
        $("#navigation-modelrangeoverview-shadow").show();
        $("#navigation-modelrangeoverview, #navigation-modelrangeoverview-shadow").show();
    }
    else {
        showContent();
    }
}

function activeMetaDrop(element) {

    //drops ausblenden
    //$("#metamyporschecontainer, #metalogincontainer, #metasitesearchcontainer, #metadealersearchcontainer").hide();
    $('#metadrops .metacontainer').hide();
    $("#metamyporsche, #metalogin, #metasitesearch, #metadealersearch").parent().removeClass("active");
    $("#metamyporsche, #metalogin").parent().removeClass("activeborderleft");
    $("#metadealersearch").removeClass("activeborderright");

    if (g_is_ie6) {
        if (element.id == 'metalogin' || element.id == 'metadealersearch')
            ieToggleDropDowns(getListIEDropDowns(), true);
        else
            ieToggleDropDowns(getListIEDropDowns(), false);
    }

    // wenn element an erster Stelle steht wird ein Border eingeblendet
    if ($(element).hasClass("metafirst")) {
        $(element).parent().addClass("activeborderleft");
    }
    //wenn es dealersearch ist 
    if ($(element).hasClass("metadealersearch")) {
        $(element).addClass("activeborderright");
    }

    $(element).parent().addClass("active");

    var container = element.id + "container";
    $("#" + container).show();

}

function checkLoginError() {
    var errorcode = getUrlParamValue('error');
    if (errorcode == 1 || errorcode == 2) {
        $("#metalogincontent").addClass("errorCon");
        $("#metaloginshadow").addClass("errorSha");
        $("#metalogincontainer").show();
        $("#metalogin").addClass("activeborderleft");

        if (errorcode == 1)
            $("#metaloginerror1").show();
        if (errorcode == 2)
            $("#metaloginerror2").show();
    }
}

var g_clueTip_ModelLayer_TimeoutId = null;
var g_clueTip_ModelLayer_TimeoutMillisec = 1000;

function initInfoLayerClueTip() {
    if ($('a.modelLink').length == 0) return;
    $('a.modelLink').cluetip({
        width: 369 //466
                              , height: 'auto' //SELECT_INFOLAYER_HEIGHT
                              , positionBy: 'mouse' // can be  'auto', 'mouse', 'bottomTop', 'fixed'
                              , fx: {
                                  open: 'fadeIn', // can be 'show' or 'slideDown' or 'fadeIn'
                                  openSpeed: 'fast'
                              }
                              , local: true
                              , cursor: 'pointer'
                              , showTitle: false
                              , dropShadow: false
                              , topOffset: 40
                              , leftOffset: 15
                              , sticky: true
                              , mouseOutClose: true
        //, onShow: clueTipModelLayerSetTimeout
                              , onShow: clueTipModelLayerClearTimeout
                              , onClose: clueTipModelLayerClearTimeout

                              , hoverIntent: {
                                  sensitivity: 7
                                  , interval: 75
                              }
                              , closeText: ''
    });

    //                          $('#cluetip').hover(
    //                            function() {
    //                                log("ct mouseover");
    //                            }, 
    //                            function() {
    //                                log("ct mouseout");
    //                                $(this).hide();
    //                            }
    //                          );
    //

    //$('#cluetip').mouseover(clueTipModelLayerClearTimeout);
    $('#cluetip').bind('mouseenter', clueTipModelLayerClearTimeout);
    $('a.modelLink, a.modelLink img').mouseout(clueTipModelLayerSetTimeout);
    $('a.modelLink, a.modelLink img').bind('mouseenter', clueTipModelLayerClearTimeout);
    //                          $('a.modelLink, a.modelLink img, a.modelLink span').mouseout(clueTipModelLayerSetTimeout);
    //                          $('a.modelLink img, a.modelLink span').bind('mouseenter', function() { $('#cluetip').show(); });
    //                          $('a.modelLink, a.modelLink img, a.modelLink span').bind('mouseenter', clueTipModelLayerClearTimeout);
    $('ul.layerlinks li').hover(function() { $(this).addClass('layerlinkhover') }, function() { $(this).removeClass('layerlinkhover') });
}


function clueTipModelLayerSetTimeout() {
    clueTipModelLayerClearTimeout();
    g_clueTip_ModelLayer_TimeoutId = window.setTimeout("$('#cluetip').hide()", g_clueTip_ModelLayer_TimeoutMillisec);
    //log("cluetip timeout set to " + g_clueTip_ModelLayer_TimeoutMillisec);
}
function clueTipModelLayerClearTimeout() {
    window.clearTimeout(g_clueTip_ModelLayer_TimeoutId);
    //log("cluetip timeout cleared!");
}

/* END: JQuery */


function switchFooter() {
    var elem = document.getElementById("ifLoggedOut");
    var elem2 = document.getElementById("ifLoggedIn");

    if (elem && elem2) {
        elem.style.display = (elem.style.display == 'inline' || elem.style.display == '') ? 'none' : 'inline';
        elem2.style.display = (elem.style.display == 'inline') ? 'none' : 'inline';
    }
    //wechsel Loginstatus in der meta Navi
    var elem3 = document.getElementById("ifmetaLoggedOut");
    var elem4 = document.getElementById("ifmetaLoggedIn");

    if (elem3 && elem4) {
        elem3.style.display = (elem3.style.display == 'inline' || elem3.style.display == '') ? 'none' : 'inline';
        elem4.style.display = (elem3.style.display == 'inline') ? 'none' : 'inline';
    }
}
/* ModelFilter */
function filter() {
    var val1 = (document.getElementById("modeltype")            == null) ? '' : document.getElementById("modeltype").value;
    var val2 = (document.getElementById("modeldrivetrain")      == null) ? '' : document.getElementById("modeldrivetrain").value;
    var val3 = (document.getElementById("modelprice")           == null) ? '' : document.getElementById("modelprice").value;
    var val4 = (document.getElementById("modelpower")           == null) ? '' : document.getElementById("modelpower").value;
    var val5 = (document.getElementById("modelfuelconsumption") == null) ? '' : document.getElementById("modelfuelconsumption").value;

    for (var i in tmpHashtable.items) {
        var element = document.getElementById(i);
        if (!element)
            continue;
        var code = tmpHashtable.items[i];
        i = "#" + i;
        if (!$(i).hasClass("fadeout"))
            $(i).addClass("fadeout");

        var c1 = code.slice(0, 1); var c2 = code.slice(1, 2); var c3 = code.slice(2, 3); var c4 = code.slice(3, 4); ; var c5 = code.slice(4, 5);
        var w1 = val1; var w2 = val2; var w3 = val3; var w4 = val4; var w5 = val5;

        if (val1 == '' || val1 == 0) w1 = c1;
        if (val2 == '' || val2 == 0) w2 = c2;
        if (val3 == '' || val3 == 0) w3 = c3;
        if (val4 == '' || val4 == 0) w4 = c4;
        if (val5 == '' || val5 == 0) w5 = c5;

        if (w1 == c1 && w2 == c2 && w3 == c3 && w4 == c4 && (w5 == c5 || c5 == 9)) {
            $(i).removeClass("fadeout");
        }
    }
}
function filterreset() {
    if (document.getElementById("modeltype") != null)
        document.getElementById("modeltype").selectedIndex = 0;
    if (document.getElementById("modeldrivetrain") != null)
        document.getElementById("modeldrivetrain").selectedIndex = 0;
    if (document.getElementById("modelprice") != null)
        document.getElementById("modelprice").selectedIndex = 0;
    if (document.getElementById("modelpower") != null)
        document.getElementById("modelpower").selectedIndex = 0;
    if (document.getElementById("modelfuelconsumption") != null)
        document.getElementById("modelfuelconsumption").selectedIndex = 0;
}


/* START DEALER SEARCH */



/* END DEALER SEARCH */

//Parameter aus Url auslesen |erwartet parametername|liefert wert des Parameters
function getUrlParamValue(parametername) {
    parametername = parametername.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");

    var regexpQ = "[\\?&]" + parametername + "=([^&#]*)";
    var regexp = new RegExp(regexpQ);
    var paramValue = regexp.exec(window.location.href);

    if (paramValue == null)
        return "";
    else
        return paramValue[1];
}


/* image gallery */
var WIDTH = 1162; //height preview image
var HEIGHT = 600; //height preview image
var M_WIDTH = 11; //min height preview image
var M_HEIGHT = 6; //min height preview image
var Z_WIDTH = 3000; //height zoomed image
var Z_HEIGHT = 1560; //height zoomed image
var scrollerInit = false;
var scrollerItemsDone = false;

function scaleImage() {
    var oWidth = WIDTH;
    var oHeight = HEIGHT;
    var containerHeight = $(window).height() - 137 // -> IE6 = 0px: $("#imageZoom").height();
    containerHeight = (containerHeight < M_HEIGHT) ? M_HEIGHT : containerHeight;
    $("#imageZoom").css("width", $(window).width());
    $("#imageZoom").css("height", containerHeight);
    var newWidth = oWidth * (containerHeight / oHeight) + 1.00;
    newWidth = (newWidth < M_WIDTH) ? M_WIDTH : newWidth;
    var newWidthStr = parseInt(newWidth.toString()) + "px";
    var marginStr = "-" + parseInt((newWidth / 2).toString()) + "px";
    if ($("#previewImage").attr("src").indexOf('filetype=normal') > -1) {
        $("#previewImage").css({ "width": newWidthStr, "height": containerHeight + "px" });
        $("#previewImage").css({ position: "absolute", "left": "50%", "margin-left": marginStr });
    }
}

function copyItems() {
    if (scrollerItemsDone == false) {
        scrollerItemsDone = true;
        $(".tabContent2 ul li").each(function() {
            var listItem = jQuery(this);
            if (listItem.children("h3").length == 0) {
                listItem.clone().appendTo($("#triggers")).children().attr("href", "#");
            }
        });
        $("#triggers li a").each(function() {
            jQuery(this).click(function() {
                var REL = jQuery(this).attr("rel");
                $("#previewImage").trigger("swap", [REL]);
            });
        });
        $("#clone").addClass("scrollable");
        $("#clone").css("width", (4 * 177));
        $("#clone").scrollable({ "clickable": true, "size": (4), api: true });
    }
}
function openOverlay(scrollerItems, scrollIndex) {
    copyItems();
    $("html").css("overflow-y", "hidden");
    if (($.browser.msie == true) && ($.browser.version < 7.0)) {
        $(window).scrollTop(0);
    }
    $("#overlayTest, #gallery, #teaserBG, #imageZoom, #imgClose, #closeBar, #closeText").show();
    $("#clone").scrollable().click(scrollIndex);
    scaleImage();
}
function closeOverlay() {
    $("#overlayTest, #gallery, #teaserBG, #imageZoom, #imgClose, #closeBar, #closeText").hide();
    $("html").css("overflow-y", "scroll");
    $("#previewImage").trigger("swap", "/images/transparent/trans.gif");
}
function initScroller() {
    $(".tabContent2 ul li a").each(function() {
        var itemlink = jQuery(this);
        itemlink.attr("rel", itemlink.attr("href"));
        itemlink.attr("href", "#");
        jQuery(this).click(function() {
            var REL = jQuery(this).attr("rel");
            $("#previewImage").trigger("swap", [REL]);
            var scrollIndex = $(".tabContent2 ul li a").index(jQuery(this)); //.index();
            log("scrollIndex: " + scrollIndex);
            openOverlay(4, scrollIndex);
        });
    });
}
function addOverlay() {
    var closeBtn = "";
    if (getPoolName() == "germany") {
        closeBtn = "<span id='closeText' style='display: none;z-index:1001;line-height:30px;position:absolute;right:59px;font-size:11px;color:#848484;'>Schließen</span><img id='imgClose' alt='close' title='Galerie schließen.' height='13' width='13' src='/images/close-button.gif' />";
    }
    else {
        closeBtn = "<span id='closeText' style='display: none;z-index:1001;line-height:30px;position:absolute;right:59px;font-size:11px;color:#848484;'>Close</span><img id='imgClose' alt='close' title='Click to close gallery.' height='13' width='13' src='/images/close-button.gif' />";
    }
    jQuery("body").prepend("<div id='overlayTest'></div><div id='closeBar'></div>" + closeBtn + "<div id='imageZoom'><img id='previewImage' alt='zoom' style='' src='/images/transparent/trans.gif' /></div><div class='simple_overlay' id='gallery'><!-- 'previous page' action --> <a class='prevPage browse left' id='prevPage'></a><div id='clone'><ul id='triggers' class='galleryPictures8 items'></ul></div><!-- 'next page' action --> <a class='nextPage browse right' id='nextPage'></a></div><div id='teaserBG'></div>");
}
function adjustHeightFeatures() {
    var innerHeight = 0;
    var minHeight = 328;
    $(".tabContent2").children().each(function() {
        innerHeight += jQuery(this).height();
    });

    if ((innerHeight < minHeight) || (innerHeight < ($(window).height() - 360))) {
        $(".tabContent2").css({ "overflow": "visible", "height": "auto" });
    }
    else {
        if ($(".tabContent2").height() > ($(window).height() - 710)) {
            $(".tabContent2").css({ "overflow-y": "scroll", "overflow-x": "visible" });
            if (($(window).height() - 380) < minHeight) {
                $(".tabContent2").height(minHeight);
            }
            else {
                $(".tabContent2").height($(window).height() - 380);
            }
        }
    }
}
$(document).ready(function() {
    if (jQuery("ul.modelHeader").length != 0) {
        jQuery(".introImage").append("<div id='teasershadow' style='background-color:white;height:135px;left:271px;opacity:0.3;filter:alpha(opacity=30);position:absolute;top:408px;width:792px;'></div>");
    }
    if (jQuery(".tabContent2 .galleryKBase").length != 0) {
        $(".tabContent2").append($(".related"));
    }
    if ($(".tabContent2 .MRfeatures").length != 0) {
        adjustHeightFeatures();
        $("body").bind("resize", adjustHeightFeatures);
    }
    if (jQuery("ul.galleryPictures").length != 0) {
        addOverlay();
        initScroller();
        $("body").bind("resize", scaleImage);
        $("#overlayTest, #imgClose").click(function() { closeOverlay(); });
        $("#imageZoom").miniZoomPan({
            sW: WIDTH,
            sH: HEIGHT,
            lW: Z_WIDTH,
            lH: Z_HEIGHT,
            loaderContent: "<img src='/images/loading4.gif' style='width: 16px; height: 16px;' />",
            callback: function() { scaleImage(); }
        });
        if (($.browser.msie == true) && ($.browser.version < 7.0)) {
            $("#overlayTest, #closeBar, #imgClose, #imageZoom, #gallery, #teaserBG").addClass("ie6fixedposition");
        }
    }
    if (jQuery("ul.galleryWallpapers").length != 0) {
        jQuery("#wallpaperDownloads").bind('swapUrl', function(evt, uri, e, ofs, pos) {
            jQuery(this).children("li").children("a").each(function() {
                var attrID = jQuery(this).attr("id");
                var wpUrl = uri.replace(/preview.jpg/, "wallpaper-" + attrID + ".jpg").replace(/filetype=preview/, 'filetype=' + attrID);
                jQuery(this).attr("href", wpUrl);
            });
            jQuery(this).css("top", (ofs.top + 80) + "px");
            jQuery(this).css("left", (pos.left + 100) + "px");
            jQuery(this).show();
        });
        jQuery("#wallpaperDownloads").mouseleave(function() {
            jQuery(this).hide();
        });
        jQuery("ul.galleryWallpapers li").each(function() {
            jQuery(this).mouseenter(function(e) {
                var stringURL = jQuery(this).children("a").children("img").attr("src");
                var ofs = jQuery(this).offset();
                var pos = jQuery(this).position();
                var ofsLeft = this.offsetLeft;
                var ofsTop = this.offsetTop;
                jQuery("#wallpaperDownloads").trigger("swapUrl", [stringURL, e, ofs, pos]);
            })
        });
    }
});

// ...
function mr_getFlashMovie(movieName) { var isIE = navigator.appName.indexOf("Microsoft") != -1; return (isIE) ? window[movieName] : document[movieName]; }
/* Events: werden vom Player aufgerufen */
function flashPlayer_onStart() {
    // wird vom Flash Player aufgerufen nachdem der Start Button geklickt wurde
    //console.log("flashPlayer_onStart");
    jQuery("#teasershadow, ul.modelHeader").hide();
    jQuery("#stopMovie").show();
}
function flashPlayer_onStop() {
    // wird vom Flash Player aufgerufen nachdem der Stopp Button geklickt wurde
    //console.log("flashPlayer_onStop");
    jQuery("#teasershadow, ul.modelHeader").show();
    jQuery("#stopMovie").hide();
}
function flashPlayer_onPause() {
    // wird vom Flash Player aufgerufen nachdem der Pause Button geklickt wurde, bzw das Video im Flash angehalten wurde
    //console.log("flashPlayer_onPause");
}
function flashPlayer_onPlay() {
    // wird vom Flash Player aufgerufen nachdem der Play Button geklickt wurde, bzw das Video im Flash fortgeetzt wurde
    //console.log("flashPlayer_onPlay");
    jQuery("#teasershadow, ul.modelHeader").hide();
    jQuery("#stopMovie").show();
}
/* Steuerung: wird vom HTML aus aufgerufen */
function flashPlayer_cmdStart() {
    // der Flash Player startet das Video
    //console.log("flashPlayer_cmdStart");
}
/*function flashPlayer_cmdStop() {
// der Flash Player beendet das Video
//console.log("flashPlayer_cmdStop");
mr_getFlashMovie("introFlash_flash").flashPlayer_cmdStop();
}*/
function flashPlayer_cmdStop(sFlashObjID) {
    // der Flash Player beendet das Video
    //console.log("flashPlayer_cmdStop");
    if ((sFlashObjID == null) || (sFlashObjID == ''))
        sFlashObjID = "introFlash_flash";

    if (document.getElementById(sFlashObjID)) {
        if (typeof (document.getElementById(sFlashObjID).flashPlayer_cmdStop) == "function")
            mr_getFlashMovie(sFlashObjID).flashPlayer_cmdStop();
    }
}
function flashPlayer_cmdPause() {
    // der Flash Player hält das aktuell geladene Video an
    //console.log("flashPlayer_cmdPause");
}
function flashPlayer_cmdPlay() {
    // der Flash Player setzt das aktuell geladene Video fort
    //console.log("flashPlayer_cmdPlay");
}

function runExternalScript(url, supportsHttps) {
    var curProtocol = (("https:" == document.location.protocol) && supportsHttps) ? "https://" : "http://";
    $("<script></script>")
		.attr({
            'src': curProtocol + url,
			'type': 'text/javascript'
		})
		.appendTo('body');
}
function track(trackingURL) {
//takes an imageURL 2 load a TrackingImg

    $("<div style=\"position:absolute;\"><img src=\"" + trackingURL + "\"  style=\"display:none !important;width:1px; height:1px;\" /></div>").appendTo('body');

}
