// Indixes für die Arrays moDivisionImages, moCountryListImages, moScrollDownImages, -> moScrollUpImages, moNavigationOverImages
var COUNTRYLIST_INDEX_AUTO = 0;
var COUNTRYLIST_INDEX_MOTO = 1;	
var COUNTRYLIST_INDEX_MARINE = 2;
var COUNTRYLIST_INDEX_ATV = 3;

// Indixes für das Array 'moGlobalImprintImages'
var NAVIGATION_INDEX_GLOBAL_SUZUKI_OVER = 0;
var NAVIGATION_INDEX_GLOBAL_SUZUKI_OUT = 1;
var NAVIGATION_INDEX_IMPRINT_OVER = 2;
var NAVIGATION_INDEX_IMPRINT_OUT = 3;

// 
var NAVIGATION_SQUARE_LARGE_HEIGHT = 79;
//
var NAVIGATION_SQUARE_SMALL_HEIGHT = 79;
//
var NAVIGATION_SQUARE_HEIGHT = NAVIGATION_SQUARE_LARGE_HEIGHT;

var IMAGE_SIZE = 'large';
var COUNTRY_LIST_MIN_TOP = -124;
var CONTENT_WIDTH = 710;
var CONTENT_HEIGHT = 450;

var moCountryListImages = new Array();
var moScrollUpImages = new Array();
var moScrollDownImages = new Array();
var moAnimationImages = new Array();
var moNavigationOutImages = new Array();
var moNavigationOverImages = new Array();
var moDivisionImages = new Array();
var moGlobalImprintImages = new Array();

var mbDivisionImagesLoaded = false;
var mtAktContent = '';
var gtImageMode = "large";






function cCountryListManager() 
{	
	/* ********************************************************************************************************************************* */
	/*						variables 																*/
	/* ********************************************************************************************************************************* */
	// Division die aktuell angezeigt wird
	var mtCurrentDisplayedDivision = '';
	
	/* ********************************************************************************************************************************* */
	/*						methods 																*/
	/* ********************************************************************************************************************************* */
	this.handleMouseOverDivision = function(ptDivision) {
        if(mbDivisionImagesLoaded == false) {   
            return;
        }
        	    
		mtCurrentDisplayedDivision = ptDivision;
	
		showDivision(mtCurrentDisplayedDivision);	
	}
	
	this.handleMouseOutDivision = function()  {
        if(mbDivisionImagesLoaded == false) {   
            return;
        }
	
		hideDivision(mtCurrentDisplayedDivision);		
	}
	
	this.handleMouseOverContent = function(poEvent) {		
		if (!poEvent) {			
			if (window.event) {
				poEvent = window.event;
			}
		}
	
		if(mtCurrentDisplayedDivision == '') {
			return false;
		}
		
		if(isMouseOverCountryImage(poEvent) == true) {
			return false;
		}
		
		showDivision(mtCurrentDisplayedDivision);	
	}
	
	this.handleMouseOutContent = function(poEvent) {	
		if (!poEvent) {			
			if (window.event) {
				poEvent = window.event;
			} 
		}	
	
		if(mtCurrentDisplayedDivision == '') {
			return false;
		}
				
		if(isMouseOverCountryImage(poEvent) == true) {
			return false;
		}		
				
		hideDivision(mtCurrentDisplayedDivision);		
	}
		
	this.handleMouseOverGlobalImprint = function(ptDivision) {   		
		var liIndex =  getIndexForNavigationName(ptDivision + 'Over');
		if(liIndex < 0) {
			return;
		}
		
		if( moGlobalImprintImages[liIndex].complete == true) {
			document.getElementById('imgNavigation'+ptDivision).src = moGlobalImprintImages[liIndex].src;
		}
	}
	
	this.handleMouseOutGlobalImprint = function(ptDivision) {   		
		var liIndex =  getIndexForNavigationName(ptDivision + 'Out');
		if(liIndex < 0) {
			return;
		}
		
		if( moGlobalImprintImages[liIndex].complete == true) {
			document.getElementById('imgNavigation'+ptDivision).src = moGlobalImprintImages[liIndex].src;
		}
	}
	
	
	/* ********************************************************************************************************************************* */
	/*						helper methods 																*/
	/* ********************************************************************************************************************************* */
	
	// IE und Opera interpretieren das überfahren eines Links in der ImageMap als mouseOver-Event für das jeweilige Länderbild. Daher dieser workaround
	function isMouseOverCountryImage(poEvent) {
				
		if(!(BrowserInformation.isIE() == true || (BrowserInformation.isOpera() == true && BrowserInformation.getVersion() == 8.0))) {		
			return false;
		}	
				
		var liBottomTolerance = 5;
		
		if(document.getElementById('content').offsetParent) {	

			var liLeftPos 	= parseInt(document.getElementById('content').offsetParent.offsetLeft);
			var liTopPos 	= parseInt(document.getElementById('content').offsetParent.offsetTop);		
			var liRightPos 	= liLeftPos + CONTENT_WIDTH;
			var liBottomPos = liTopPos + CONTENT_HEIGHT;
																	
			var liMousePosX = -1;
			var liMousePosY = -1;
			
			if(poEvent) {
				liMousePosX = poEvent.clientX;
				liMousePosY = poEvent.clientY;
			} else {			
				if (miMousePosX < 0 || miMousePosY < 0) {
					return false;
				}
				liMousePosX = miMousePosX;
				liMousePosY = miMousePosY;
			}
						
			if(	liMousePosX >= liLeftPos && liMousePosX <= liRightPos && liMousePosY >= liTopPos && liMousePosY <= (liBottomPos-liBottomTolerance)) {				
				return true;
			} else {			
				return false;
			}
			
		} else {
			// sicherheitshalber wird 'false' zurück geliefert
			return true;
		}
	}
	
	function showDivision(ptDivision) 
	{
		if (mbDivisionImagesLoaded == false) {
			return;
		}

		var liCountrylistIndex = getIndexForDivisionName(ptDivision);		
		if (liCountrylistIndex < 0) {
			return;
		}
		
	    // Länderliste in Ursprungsposition setzen
	    if(mtAktContent != ptDivision) {
	        mtAktContent = ptDivision;
	        document.getElementById('listOne_img').style.top = "0px";   
	    }
	    
		// Division-Bild in der Navigation anpassen
		var loImageNode = document.getElementById('imgNavigation'+ptDivision);
		loImageNode.src = moNavigationOverImages[liCountrylistIndex].src;
		
		// Hintergrund der Länderliste anpassen				
		var loCountryListPanelNode = document.getElementById('countryListPanel');
		loCountryListPanelNode.className = "countryListPanel countryListPanel_" + ptDivision;	
		
		// ImageMap anpassen
		var loListOneImg = document.getElementById('listOne_img');
						
		loListOneImg.src = moCountryListImages[liCountrylistIndex].src;
		loListOneImg.useMap = "#country_list_" + ptDivision.toLowerCase() + "_" + gtImageMode.toLowerCase();
		
		// Größe der anzuzeigen Länderlsite ermitteln
		COUNTRY_LIST_MIN_TOP = CONTENT_HEIGHT-NAVIGATION_SQUARE_HEIGHT-moCountryListImages[liCountrylistIndex].height;

		// Bestimemn, ob Scrollpfeile angezeigt werden müssen oder nicht
        if(moCountryListImages[liCountrylistIndex].height > (CONTENT_HEIGHT-NAVIGATION_SQUARE_HEIGHT))
        {
            // die Länderliste muss scrollbar sein
            document.getElementById('scroll_up').src = moScrollUpImages[liCountrylistIndex].src;
            document.getElementById('scroll_down').src = moScrollDownImages[liCountrylistIndex].src;
            document.getElementById('contentCountryScroll').style.display = 'block';
        }
        else
        {
            document.getElementById('scroll_up').src = '';
            document.getElementById('scroll_down').src = '';
            document.getElementById('contentCountryScroll').style.display = 'none';
        }

		// Länderliste anzeigen
		var loContentNode = document.getElementById('content');
		var loContentCountryNode = document.getElementById('contentCountry');
		
		
		loContentNode.style.display = 'none';		
		loContentCountryNode.style.display = 'block';
		loContentCountryNode.style.backgroundImage = "url(" + moDivisionImages[liCountrylistIndex].src + ")";
					
		// stop slideshow
		ImageRandomizer.pause();
	}
	
	function hideDivision(ptDivision) 
	{
		if (mbDivisionImagesLoaded == false) {
			return;
		}
		
		var liCountrylistIndex = getIndexForDivisionName(ptDivision);
		if (liCountrylistIndex < 0) {
			return;
		}
			
		// change navigation item
		var loImageNode = document.getElementById('imgNavigation'+ptDivision);		
		loImageNode.src = moNavigationOutImages[liCountrylistIndex].src;
				
		// show country list
		var loContentNode = document.getElementById('content');
		var loContentCountryNode = document.getElementById('contentCountry');
		
		loContentNode.style.display = 'block';		
		loContentCountryNode.style.display = 'none';
		
		// stop slideshow
		ImageRandomizer.resume();
	}
	
	
	function getIndexForDivisionName(ptDivisionName) {
	
		var ltName = ptDivisionName.toLowerCase();
		
		if (ltName == 'auto') {
			return COUNTRYLIST_INDEX_AUTO;
		} else if (ltName == 'moto') {
			return COUNTRYLIST_INDEX_MOTO;
		} else if (ltName == 'marine') {
			return COUNTRYLIST_INDEX_MARINE;
		} else if (ltName == 'atv') {
			return COUNTRYLIST_INDEX_ATV;
		} else {
			return -1;
		}
	}
	
	function getIndexForNavigationName(ptDivisionName) {
	
		var ltName = ptDivisionName.toLowerCase();
		
		if (ltName == 'globalout') {
			return NAVIGATION_INDEX_GLOBAL_SUZUKI_OUT;
		} else if (ltName == 'globalover') {
			return NAVIGATION_INDEX_GLOBAL_SUZUKI_OVER;
		} else if (ltName == 'imprintout') {
			return NAVIGATION_INDEX_IMPRINT_OUT;
		} else if (ltName == 'imprintover') {
			return NAVIGATION_INDEX_IMPRINT_OVER;
		} else {
			return -1;
		}
	
	}
}

function cImageRandomizer() 
{
    
	/* ********************************************************************************************************************************* */
	/*						constants 																*/
	/* ********************************************************************************************************************************* */
	// each time specification is done in milliseconds
	
	var TIME_TO_NEXT_IMAGE = 3000;		// duration of an image of the slideshow is displayed. (including time to fade in and fade out)
	var LOGO_TIME_NEXT_IMAGE = 3000;	// duration the logo is displayed (including time to fade in and fade out)
	
	var TIME_TO_FADE_IN = 700;			// duration for fade-in effect
	var FADE_IN_STEPS = 10;				// number of step the fade-in effect will be devided in
	
	var TIME_TO_FADE_OUT = 700;			// duration for fade-out effect
	var FADE_OUT_STEPS = 10;			// number of step the fade-out effect will be devided in
	var FADE_OUT_TOLERANCE = 200;		// because processing take some time, calculate some extra time to be able to finish fade-out effect in time	
	
	var SHOW_LOGO_EACH_IMAGE = 5;		// determine how often the logo will be shown. Currently every fifth image....
	
	var IMAGE_HOME = './images/';		// relative path to the image base directory
	var IMAGE_SLIDESHOW_HOME = IMAGE_HOME + 'slideshow/';		// relative path to the folder which contains all images for the slideshow
	var IMAGE_ANIMATION_HOME = IMAGE_HOME + 'animation/'; 		// relative path to the folder which contains the images for the animation to simulate fade-in and fade-out effect.
	var IMAGE_COUNTRY_HOME = IMAGE_HOME + 'countrylist/';       // relative path to the folder which contains all images for the country list
	
	var SLIDESHOW_CONFIG_FILE_NAME = 'slideshow.xml';		// file name of the slideshow configuration file
	
	var FADE_IN = 1;
	var FADE_OUT = 0;
	
	var aktOpacity = 100;
    var MAX_OPACITY = 120;
    var MIN_OPACITY = -120;
    var opacityStep = -1;
    	
	/* ********************************************************************************************************************************* */
	/*						variables 																*/
	/* ********************************************************************************************************************************* */
	// two-dimensional array. Index of first dimension determine the category. Index of second dimension contains the image path
	var maMap = new Array();
	
	// path to Suzuki logo
	var mtSuzukiLogo = "";
		
	// some browser doesn't supported fade-in/-out effects via javascript. Use images instead
	var mbUseImageAnimation = false;
	
	// some browser doesnt' support fade-in/-out effects via Javascript and doesn't support transparent image. Turn all effects of that stuff...
	var mbNoEffects = false;
	
	// signalizes that the current image is the first image. This means that the user just have entered the page
	var mbIsFirstImageOnPageLoad = true;
	
	// determine the sequence of the categories which are displayed
	// 0 = auto, 1 = moto, 2 = marine, 3=atv
	var maCategoryCycle = new Array(0,1,3,2);
	
	// internal counter to determine which category have to be displayed and when the logo have to be shown
	var miImageCount = 0;
	var miCategoryCount = 0; 
	
	// determine which image size have to be used
	var mbUseSmallImages = false;
	
	// number of images which should be preloaded
	var miImagesToPreload = 0;
		
	var sliderTimer = null;
	
	
	/* ********************************************************************************************************************************* */
	/*						methods 																*/
	/* ********************************************************************************************************************************* */			
	/**
	* 
	*/
	this.start = function() {
	
		// da für folgenden Browser keine reibungslose Unterstütztung der MouseOver, MouseOut, Scroll, useMap oder Slideshow Funktionen vorhanden ist, wird auf die NON-JavaScript Version gewechselt		
		if( (BrowserInformation.isOpera() && BrowserInformation.getVersion() > 0.0 && BrowserInformation.getVersion() < 9.3) || 
			BrowserInformation.isNetscape() ||
			(BrowserInformation.isIE() && BrowserInformation.getVersion() == 5.0) ) {
			document.location.href = './index_nojs.htm';
			return;
		}		
		
		document.getElementById('navigationImprint').href = 'javascript:openImprint()';		
		
		// No-JavaScript Bild ausblenden
		document.getElementById('contentNoJavaScript').style.display = 'none';
		
		// Bildschirmauflöschung und Browserabhängigkeiten auswerten
		determineSystem();	
		setUpContentArea();
		
		//  Inhaltsbereich zunächst ausblenden							
		document.getElementById('contentImgCover').style.display = 'none';
		document.getElementById('contentImageAnimation').style.display = 'none';
		document.getElementById('contentImg').style.display = 'none';
		document.getElementById('content').style.display = 'block';			
		document.getElementById('content').style.backgroundColor = '#000000';		
		document.getElementById('loading').style.display = 'block';
		
		// TODO LÖSCHEN	    
	    //mbUseImageAnimation = true;
	    // TODO END-LÖSCHEN		
		
		// Bilder laden
		loadImages();		
	}
	
	
	/**
	* 
	*/
	this.startSlideshow = function() 
	{
		//  Inhaltsbereich wieder ausblenden: je nach Modus entsprechende Bereiche ein- bzw. ausblenden
		document.getElementById('loading').style.display = 'none';
		
		document.getElementById('content').style.display = 'block';
		document.getElementById('content').style.backgroundColor = '';
		
		//document.getElementById('logoTopRight').style.display = 'block';	
		document.getElementById('contentImg').style.display = 'block';
		
		// Animations-Bereich resetten
		if(mbNoEffects == true) 
		{
			document.getElementById('contentImgCover').style.display = 'none';
			document.getElementById('contentImageAnimation').style.display = 'none';

		} 
		else 
		{
			if(mbUseImageAnimation == true) 
			{	
				document.getElementById('contentImgCover').style.display = 'none';
				document.getElementById('contentImageAnimation').style.display = 'block';
			} 
			else 
			{
				document.getElementById('contentImgCover').style.display = 'block';
				document.getElementById('contentImageAnimation').style.display = 'none';
			}
		}
				
		// NoScript-Bereich ausblenden
		if(document.getElementById('contentNoJavaScript')) {			
			document.getElementById('contentNoJavaScript').style.display = 'none';
		}
			
		// starten ....
		//ImageRandomizer.setRandomImage();
		
		if(mbUseImageAnimation)
		{
		    document.getElementById('contentImageAnimation').src = IMAGE_ANIMATION_HOME + IMAGE_SIZE + '/100.png';
		}
		else
		{
		    var lobjNode = document.getElementById('contentImgCover');
		    lobjNode.style.opacity = 1.0;
		    lobjNode.style.MozOpacity = 1.0;
		    lobjNode.style.KHTMLOpacity = 1.0;  // Older Mozilla and Firefox
		    lobjNode.style.filter = "alpha(opacity=100)";
        }
        
		sliderTimer = setInterval('ImageRandomizer.setRandomImage()', TIME_TO_FADE_OUT/FADE_OUT_STEPS);		
	}
	
	
	
	/**
	 *
	 */
	this.pause = function() 
	{
		if(sliderTimer)
		{
		    clearInterval(sliderTimer);
		}
	}
	
	/**
	 *
	 */
	this.resume = function() 
	{	
		sliderTimer = setInterval('ImageRandomizer.setRandomImage()', TIME_TO_FADE_OUT/FADE_OUT_STEPS);
	}

	this.setRandomImage = function() 
	{
	    var doBreak = true;
		var lobjContentImgCoverNode = document.getElementById('contentImgCover');
		
		var liNewOpacity = 0;

		
		if(opacityStep == 1)
		{
	        aktOpacity += FADE_OUT_STEPS;
	        if(aktOpacity >= MAX_OPACITY)
	        {
	            opacityStep = -1;
	            doBreak = false;
	        }
		}
		else
		{
	        aktOpacity -= FADE_OUT_STEPS;

	        if(aktOpacity <= MIN_OPACITY)
	        {
	            opacityStep = 1;
	        }
		}

        if(!mbUseImageAnimation)
        {
            if(aktOpacity > 100)
            {
	            liNewOpacity = 1.0;
	        }		    
	        else if(aktOpacity < 0)
	        {
	            liNewOpacity = 0.0;
	        }
	        else
	        {
	            liNewOpacity = aktOpacity/100;
	        }    
        
		    lobjContentImgCoverNode.style.opacity =  liNewOpacity;
		    lobjContentImgCoverNode.style.MozOpacity = liNewOpacity;
		    lobjContentImgCoverNode.style.KHTMLOpacity = liNewOpacity;  // Older Mozilla and Firefox
        }
        
        if(aktOpacity > 100)
        {
            if(mbUseImageAnimation)
            {
	            document.getElementById('contentImageAnimation').src = IMAGE_ANIMATION_HOME + IMAGE_SIZE + '/100.png';
	        }
	        else
	        {
	            lobjContentImgCoverNode.style.filter = "Alpha(opacity=" + 100 + ")";
	        }
	    }		    
	    else if(aktOpacity < 0)
	    {
            if(mbUseImageAnimation)
            {
		        document.getElementById('contentImageAnimation').src = IMAGE_ANIMATION_HOME + IMAGE_SIZE + '/0.png';
		    }
		    else
		    {
	            lobjContentImgCoverNode.style.filter = "Alpha(opacity=" + 0 + ")";
	        }
	    }
	    else
	    {
            if(mbUseImageAnimation)
            {
		        document.getElementById('contentImageAnimation').src = IMAGE_ANIMATION_HOME + IMAGE_SIZE + '/' + aktOpacity+'.png';
		    }
		    else
		    {
	            lobjContentImgCoverNode.style.filter = "Alpha(opacity=" + aktOpacity + ")";
	        }
	    }    
		
		if(doBreak)
		{
		    return;
		}
				
	    
				
		miImageCount += 1;
		
		// neues Bild speichern. jedes 4. Bild Suzuki Logo anzeigen
		if(miImageCount >= SHOW_LOGO_EACH_IMAGE) 
		{
			miImageCount = 0;
			
			// kleines Logo rechts-oben ausblenden
			document.getElementById('logoTopRight').style.display = 'none';
			
			// Logo anzeigen
			document.getElementById('contentImg').src = mtSuzukiLogo;
		}
		else 
		{
			// neues Bild zufällig aus dem Pool der aktuellen Kategorie wählen						
			var laImageList = maMap[maCategoryCycle[miCategoryCount]];							
			var liRandomNumber = Math.floor(laImageList.length * (Math.random ()));
			document.getElementById('contentImg').src = laImageList[liRandomNumber].src;
										
			// interne Datenstruktur aktualisieren
			if(miCategoryCount < maCategoryCycle.length - 1) 
			{
				miCategoryCount += 1;
			} 
			else 
			{
				miCategoryCount = 0;
			}
			
			// für das erste Bild nach dem großem Logo wird das kleine Logo mit in den fade-in Effekt einbezogen
			if(mbIsFirstImageOnPageLoad == true) 
			{
				document.getElementById('logoTopRight').style.zIndex = '20';
				mbIsFirstImageOnPageLoad = false;
			} 
			else 
			{
				if(miImageCount == 1) 
				{
					document.getElementById('logoTopRight').style.zIndex = '6';
					//document.getElementById('content').style.zIndex = 'none';
				}
			}
			
			// kleines Logo rechts-oben anzeigen
			document.getElementById('logoTopRight').style.display = 'block';		
		}
	}	
	
	
	/**
	*
	*/
	function loadImages() 
	{
	    // Divisionsbilder laden
		moDivisionImages[COUNTRYLIST_INDEX_AUTO] = new Image();
		moDivisionImages[COUNTRYLIST_INDEX_AUTO].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/Auto.jpg';
		
		moDivisionImages[COUNTRYLIST_INDEX_MOTO] = new Image();
		moDivisionImages[COUNTRYLIST_INDEX_MOTO].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/Moto.jpg';

		moDivisionImages[COUNTRYLIST_INDEX_MARINE] = new Image();
		moDivisionImages[COUNTRYLIST_INDEX_MARINE].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/Marine.jpg';

		moDivisionImages[COUNTRYLIST_INDEX_ATV] = new Image();
		moDivisionImages[COUNTRYLIST_INDEX_ATV].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/ATV.jpg';
	
        // Länder-Bilder laden	
		moCountryListImages[COUNTRYLIST_INDEX_AUTO] = new Image();
		moCountryListImages[COUNTRYLIST_INDEX_AUTO].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/country_list_auto.gif';
		
		moCountryListImages[COUNTRYLIST_INDEX_MOTO] = new Image();
		moCountryListImages[COUNTRYLIST_INDEX_MOTO].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/country_list_moto.gif';

		moCountryListImages[COUNTRYLIST_INDEX_MARINE] = new Image();
		moCountryListImages[COUNTRYLIST_INDEX_MARINE].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/country_list_marine.gif';

		moCountryListImages[COUNTRYLIST_INDEX_ATV] = new Image();
		moCountryListImages[COUNTRYLIST_INDEX_ATV].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/country_list_atv.gif';
	

        // Scrollpfeile laden
		moScrollUpImages[COUNTRYLIST_INDEX_AUTO] = new Image();
		moScrollUpImages[COUNTRYLIST_INDEX_AUTO].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/scroll_up_auto.gif';
		
		moScrollUpImages[COUNTRYLIST_INDEX_MOTO] = new Image();
		moScrollUpImages[COUNTRYLIST_INDEX_MOTO].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/scroll_up_moto.gif';

		moScrollUpImages[COUNTRYLIST_INDEX_MARINE] = new Image();
		moScrollUpImages[COUNTRYLIST_INDEX_MARINE].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/scroll_up_marine.gif';

		moScrollUpImages[COUNTRYLIST_INDEX_ATV] = new Image();
		moScrollUpImages[COUNTRYLIST_INDEX_ATV].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/scroll_up_atv.gif';

		moScrollDownImages[COUNTRYLIST_INDEX_AUTO] = new Image();
		moScrollDownImages[COUNTRYLIST_INDEX_AUTO].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/scroll_down_auto.gif';
		
		moScrollDownImages[COUNTRYLIST_INDEX_MOTO] = new Image();
		moScrollDownImages[COUNTRYLIST_INDEX_MOTO].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/scroll_down_moto.gif';

		moScrollDownImages[COUNTRYLIST_INDEX_MARINE] = new Image();
		moScrollDownImages[COUNTRYLIST_INDEX_MARINE].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/scroll_down_marine.gif';

		moScrollDownImages[COUNTRYLIST_INDEX_ATV] = new Image();
		moScrollDownImages[COUNTRYLIST_INDEX_ATV].src = IMAGE_HOME + 'countrylist/' + IMAGE_SIZE + '/scroll_down_atv.gif';

        
        // Navigationsbilder laden
		moNavigationOutImages[COUNTRYLIST_INDEX_AUTO] = new Image();
		moNavigationOutImages[COUNTRYLIST_INDEX_AUTO].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Out/Auto.gif';
		
		moNavigationOutImages[COUNTRYLIST_INDEX_MOTO] = new Image();
		moNavigationOutImages[COUNTRYLIST_INDEX_MOTO].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Out/Moto.gif';

		moNavigationOutImages[COUNTRYLIST_INDEX_MARINE] = new Image();
		moNavigationOutImages[COUNTRYLIST_INDEX_MARINE].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Out/Marine.gif';

		moNavigationOutImages[COUNTRYLIST_INDEX_ATV] = new Image();
		moNavigationOutImages[COUNTRYLIST_INDEX_ATV].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Out/ATV.gif';

		moNavigationOverImages[COUNTRYLIST_INDEX_AUTO] = new Image();
		moNavigationOverImages[COUNTRYLIST_INDEX_AUTO].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Over/Auto.gif';
		
		moNavigationOverImages[COUNTRYLIST_INDEX_MOTO] = new Image();
		moNavigationOverImages[COUNTRYLIST_INDEX_MOTO].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Over/Moto.gif';

		moNavigationOverImages[COUNTRYLIST_INDEX_MARINE] = new Image();
		moNavigationOverImages[COUNTRYLIST_INDEX_MARINE].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Over/Marine.gif';

		moNavigationOverImages[COUNTRYLIST_INDEX_ATV] = new Image();
		moNavigationOverImages[COUNTRYLIST_INDEX_ATV].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Over/ATV.gif';
		
		// Global und Imprint Bilder laden
		moGlobalImprintImages[NAVIGATION_INDEX_GLOBAL_SUZUKI_OVER] = new Image();
		moGlobalImprintImages[NAVIGATION_INDEX_GLOBAL_SUZUKI_OVER].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Over/Global.gif';
		
		moGlobalImprintImages[NAVIGATION_INDEX_GLOBAL_SUZUKI_OUT] = new Image();
		moGlobalImprintImages[NAVIGATION_INDEX_GLOBAL_SUZUKI_OUT].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Out/Global.gif';

		moGlobalImprintImages[NAVIGATION_INDEX_IMPRINT_OVER] = new Image();
		moGlobalImprintImages[NAVIGATION_INDEX_IMPRINT_OVER].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Over/Imprint.gif';
		
		moGlobalImprintImages[NAVIGATION_INDEX_IMPRINT_OUT] = new Image();
		moGlobalImprintImages[NAVIGATION_INDEX_IMPRINT_OUT].src = IMAGE_HOME + 'navigation/' + IMAGE_SIZE + '/Out/Imprint.gif';

		
        if(mbUseImageAnimation)
        {
            moAnimationImages = new Array();
            for(var i=0; i<11; i++)
            {
                moAnimationImages[i] = new Image();
                moAnimationImages[i].src = IMAGE_ANIMATION_HOME + IMAGE_SIZE + '/' + 100*i + '.png';
            }
        }
        
	
		// interne Datenstruktor initialisieren
		maMap[0] = new Array();		// Index 0	=> 	auto
		maMap[1] = new Array();		// Index 1	=>	motorbike
		maMap[2] = new Array();		// Index 2 	=>	marine
		maMap[3] = new Array();		// Index 3 	=> 	atv 
	
	
	    
	
		// AJAX Request stellen
		var lobjHTTPRequest = null;
			
		try 
		{
			lobjHTTPRequest = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch(e1) 
		{
			try 
			{
				lobjHTTPRequest = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch(e2) 
			{
				try 
				{
					lobjHTTPRequest = new XMLHttpRequest();
				} 
				catch(e3) 
				{
					alert("instantiate HTTP Request failed.")
					return;
				}				
			}
		}
		
		//  Bilder auslesen (synchroner Aufruf)
		lobjHTTPRequest.open("GET", IMAGE_SLIDESHOW_HOME + SLIDESHOW_CONFIG_FILE_NAME, false);					
		lobjHTTPRequest.send(null);
		
		// aus der HTTP-Response automatisch generierter DOM
		var lobjHTTPResponse = lobjHTTPRequest.responseXML; 

		if(!lobjHTTPResponse || !lobjHTTPResponse.documentElement) 
		{ 
			// sofern der Standardprozess nicht funktioniert hat, versuchen Browser-eigene Methoden zu verwenden
			if(window.ActiveXObject) { 
				// Msxml COM Object verwenden (IE)
				lobjHTTPResponse = new ActiveXObject("Msxml2.DOMDocument");
				lobjHTTPResponse.loadXML(lobjHTTPRequest.responseText);
			} else if (DOMParser) { 
				// Gecko DOM-Parser verwenden
				lobjHTTPResponse = new DomParser().parseFromString(lobjHTTPRequest.responseText, "text/xml");
			}
		}
		
		// endgültig aufgeben: ....... :-(
		if(!lobjHTTPResponse || !lobjHTTPResponse.documentElement) 
		{ 
			mbNoEffects = true;
			return;
		}
		
		// Array aller Bilder, die ins Preloading mit einbezogen werden sollen
		var loPreloadImageList = new Array();
		
		// Logo-Bild separat speichern und sofort anzeigen
		mtSuzukiLogo = IMAGE_HOME + lobjHTTPResponse.getElementsByTagName('logo')[0].firstChild.nodeValue;	
		
		loPreloadImageList[0] = new Array(mtSuzukiLogo);
		
		// Bilder der jeweiligen Category einlesen
		if(lobjHTTPResponse.getElementsByTagName('auto').length == 1) 
		{
		
			loadImagesXML_LoadCategory(lobjHTTPResponse.getElementsByTagName('auto')[0], 0, loPreloadImageList)
		}
		if(lobjHTTPResponse.getElementsByTagName('moto').length == 1) 
		{
			loadImagesXML_LoadCategory(lobjHTTPResponse.getElementsByTagName('moto')[0], 1, loPreloadImageList)
		}
		if(lobjHTTPResponse.getElementsByTagName('marine').length == 1) 
		{
			loadImagesXML_LoadCategory(lobjHTTPResponse.getElementsByTagName('marine')[0], 2, loPreloadImageList)
		}
		if(lobjHTTPResponse.getElementsByTagName('atv').length == 1) 
		{
			loadImagesXML_LoadCategory(lobjHTTPResponse.getElementsByTagName('atv')[0], 3, loPreloadImageList)
		}

		// Bilder u.a. für die Slideshow bereits jetzt vollständig laden
		miImagesToPreload = loPreloadImageList.length;
		
		for(liPreloadImageCount=0; liPreloadImageCount<loPreloadImageList.length; liPreloadImageCount++) 
		{
			var laCurrentImageConfig = loPreloadImageList[liPreloadImageCount];
					
			var loCurrentImage = new Image();
			//loCurrentImage.onLoad = onPreloadComplete();
			loCurrentImage.src = laCurrentImageConfig[0];

			if(laCurrentImageConfig.length == 3) 
			{
				// Image Objekt für die Slideshow merken
				maMap[laCurrentImageConfig[1]][laCurrentImageConfig[2]] = loCurrentImage;
			} 
			else 
			{
				// Logo
				//document.getElementById('contentImg').src = mtSuzukiLogo
			}
		}
		
		setTimeout('ImageRandomizer.checkCompleteState()', 50);
	}
	
	
	/**
	*
	*/
	function loadImagesXML_LoadCategory(pobjCategoryNode, piCategoryIndex, poPreloadImageList) 
	{
		var ltCategorySubfolder = pobjCategoryNode.getAttribute('subfolder');	
		var laImageNodeList = pobjCategoryNode.getElementsByTagName('image');			
		
		for(var liImagePos=0; liImagePos<laImageNodeList.length; liImagePos++) 
		{						
			poPreloadImageList[poPreloadImageList.length] = new Array(IMAGE_SLIDESHOW_HOME+ltCategorySubfolder+"/"+laImageNodeList[liImagePos].firstChild.nodeValue, piCategoryIndex, liImagePos);
		}
	}

	
	/**
	* überprüft, ob alle Bilder geladen wurden
	*/
	this.checkCompleteState = function() 
	{
		var liNoLoadedCount = 0;
		
	    //if(!mbDivisionImagesLoaded)
	    
		//  überprüfen, ob die Bilder für die Länderliste geladen wurden
        if(!mbDivisionImagesLoaded)
        {
            liNoLoadedCount = 1;
            if(moDivisionImages[COUNTRYLIST_INDEX_ATV].complete)
            {
                if(moDivisionImages[COUNTRYLIST_INDEX_AUTO].complete)
                {
                    if(moDivisionImages[COUNTRYLIST_INDEX_MOTO].complete)
                    {
                        if(moDivisionImages[COUNTRYLIST_INDEX_MARINE].complete)
                        {
                            if(moCountryListImages[COUNTRYLIST_INDEX_ATV].complete)
                            {
                                if(moCountryListImages[COUNTRYLIST_INDEX_AUTO].complete)
                                {
                                    if(moCountryListImages[COUNTRYLIST_INDEX_MOTO].complete)
                                    {
                                        if(moCountryListImages[COUNTRYLIST_INDEX_MARINE].complete)
                                        {
                                            if(moScrollUpImages[COUNTRYLIST_INDEX_ATV].complete)
                                            {
                                                if(moScrollUpImages[COUNTRYLIST_INDEX_AUTO].complete)
                                                {
                                                    if(moScrollUpImages[COUNTRYLIST_INDEX_MOTO].complete)
                                                    {
                                                        if(moScrollUpImages[COUNTRYLIST_INDEX_MARINE].complete)
                                                        {
                                                            if(moScrollDownImages[COUNTRYLIST_INDEX_ATV].complete)
                                                            {
                                                                if(moScrollDownImages[COUNTRYLIST_INDEX_AUTO].complete)
                                                                {
                                                                    if(moScrollDownImages[COUNTRYLIST_INDEX_MOTO].complete)
                                                                    {
                                                                        if(moScrollDownImages[COUNTRYLIST_INDEX_MARINE].complete)
                                                                        {
                                                                            liNoLoadedCount = 0;
                                                                            mbDivisionImagesLoaded = true;
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        
		// überprüfen, ob die Bilder für die Navigationseinträge "Global Suzuki" und "Imprint / Legal Disclaimer" geladen wurden
        if(liNoLoadedCount == 0)
        {
		    liNoLoadedCount = 1;
		    if(moGlobalImprintImages[NAVIGATION_INDEX_GLOBAL_SUZUKI_OUT].complete)
		    {
		        if(moGlobalImprintImages[NAVIGATION_INDEX_GLOBAL_SUZUKI_OVER].complete)
		        {
		            if(moGlobalImprintImages[NAVIGATION_INDEX_IMPRINT_OUT].complete)
		            {
		                if(moGlobalImprintImages[NAVIGATION_INDEX_IMPRINT_OVER].complete)
		                {
		                    liNoLoadedCount = 0;
		                    
		                }
		            }
		        }
		    }
        }        
        
		// überprüfen, ob alle Bilder für die Slideshow geladen wurde
		if(liNoLoadedCount == 0)
		{
		    for(var liCatCount=0; liCatCount<maMap.length; liCatCount++) 
		    {
			    for(var liImgCount=0; liImgCount<maMap[liCatCount].length; liImgCount++) 
			    {			
				    if(maMap[liCatCount][liImgCount].complete == false) 
				    {
					    liNoLoadedCount = 1;
					    break;
				    } 
			    }
		    }
        }
		
		// überprüfen, ob die Bilder in der Navigation für die Divisions geladen wurden
		if(liNoLoadedCount == 0)
		{
		    liNoLoadedCount = 1;
		    if(moNavigationOutImages[COUNTRYLIST_INDEX_ATV].complete)
		    {
		        if(moNavigationOutImages[COUNTRYLIST_INDEX_AUTO].complete)
		        {
		            if(moNavigationOutImages[COUNTRYLIST_INDEX_MOTO].complete)
		            {
		                if(moNavigationOutImages[COUNTRYLIST_INDEX_MARINE].complete)
		                {
		                    liNoLoadedCount = 0;
		                }
		            }
		        }
		    }
        }

		if(liNoLoadedCount == 0)
		{
		    liNoLoadedCount = 1;
		    if(moNavigationOverImages[COUNTRYLIST_INDEX_ATV].complete)
		    {
		        if(moNavigationOverImages[COUNTRYLIST_INDEX_AUTO].complete)
		        {
		            if(moNavigationOverImages[COUNTRYLIST_INDEX_MOTO].complete)
		            {
		                if(moNavigationOverImages[COUNTRYLIST_INDEX_MARINE].complete)
		                {
		                    liNoLoadedCount = 0;
		                }
		            }
		        }
		    }
        }

        if(mbUseImageAnimation)
        {			
		    if(liNoLoadedCount == 0)
		    {
                for(var i=0; i<11; i++)
                {				
                    if(moAnimationImages[i].complete == false)
                    {
                        liNoLoadedCount = 1;
                        break;
                    }
                }
            }
        }
		
		
		if(liNoLoadedCount > 0) 
		{
			setTimeout('ImageRandomizer.checkCompleteState()', 200);
		} 
		else 
		{
		    //alert(mbDivisionImagesLoaded);
		    //alert(liNoLoadedCount);
			mbSlideshowStarted = true;

		    var loImageNode = document.getElementById('imgNavigationAuto');
		    loImageNode.src = moNavigationOutImages[COUNTRYLIST_INDEX_AUTO].src;

		    loImageNode = document.getElementById('imgNavigationMoto');
		    loImageNode.src = moNavigationOutImages[COUNTRYLIST_INDEX_MOTO].src;

		    loImageNode = document.getElementById('imgNavigationMarine');
		    loImageNode.src = moNavigationOutImages[COUNTRYLIST_INDEX_MARINE].src;

		    loImageNode = document.getElementById('imgNavigationATV');
		    loImageNode.src = moNavigationOutImages[COUNTRYLIST_INDEX_ATV].src;
		    

            document.getElementById('imgNavigationGlobal').src = moGlobalImprintImages[NAVIGATION_INDEX_GLOBAL_SUZUKI_OUT].src;
			document.getElementById('imgNavigationImprint').src = moGlobalImprintImages[NAVIGATION_INDEX_IMPRINT_OUT].src;
			
			
			if(mbUseImageAnimation)
			{
			    miImageCount = 0;			    			 
			}
			
			setTimeout('ImageRandomizer.startSlideshow()', 100);			
		}
	}
	
	
	/**
	*
	*/
	function determineSystem() 
	{
		// Bildschirmgröße
		if(screen.width == 800) 
		{
			if(screen.height == 600) 
			{
				mbUseSmallImages = true;
			}
		} 
	
		// Browser-weiche
		var mtUserAgent = navigator.userAgent;
	
		if (mtUserAgent.indexOf("Opera") != -1)
		{
			if(mtUserAgent.indexOf("8.5") != -1) 	
			{
				FADE_OUT_TOLERANCE = FADE_OUT_TOLERANCE + 50
				TIME_TO_FADE_OUT = TIME_TO_FADE_OUT + 50;
				mbUseImageAnimation = true; 
			}
			
			if(mtUserAgent.indexOf("8.0") != -1) 
			{
				TIME_TO_FADE_OUT = TIME_TO_FADE_OUT + 50;
				TIME_TO_FADE_IN = TIME_TO_FADE_IN - 50;
				FADE_OUT_TOLERANCE = FADE_OUT_TOLERANCE + 50
				mbUseImageAnimation = true; 
			}
		}
		else if(mtUserAgent.indexOf("Netscape") != -1)
		{
			mbUseImageAnimation = true;
			FADE_OUT_TOLERANCE = FADE_OUT_TOLERANCE + 100;
		}
		else if (mtUserAgent.indexOf("MSIE") != -1)
		{
		    if(mtUserAgent.indexOf("5.5") != -1) 
		    {
				mbNoEffects = true;
			}
			if(mtUserAgent.indexOf("5.0") != -1) 	
			{
				mbNoEffects = true;
			}
			
			if(mtUserAgent.toLowerCase().indexOf("mac") != -1) 	
			{
				mbNoEffects = true;
			}
		}
		else if (mtUserAgent.indexOf("Firefox") != -1)
		{
			if(mtUserAgent.indexOf("1.0") != -1)
			{
				FADE_OUT_TOLERANCE = FADE_OUT_TOLERANCE + 75;
				mbUseImageAnimation = true;
			}
		}
		
		
		// je nach Modus entsprechende Bereiche ein- bzw. ausblenden
		if(mbNoEffects == true) 
		{
			document.getElementById('contentImgCover').style.display = 'none';
			document.getElementById('contentImageAnimation').style.display = 'none';
		} 
		else 
		{
			if(mbUseImageAnimation == true) 
			{	
				document.getElementById('contentImgCover').style.display = 'none';
				document.getElementById('contentImageAnimation').style.display = 'block';
			} 
			else 
			{
				document.getElementById('contentImgCover').style.display = 'block';
				document.getElementById('contentImageAnimation').style.display = 'none';
			}
		}
	}
	
	
	/**
	*
	*/	
	function setUpContentArea() 
	{
		if(mbUseSmallImages == true) 
		{
			// Pfad zur Slideshow Konfigurationsdatei setzen
			IMAGE_SLIDESHOW_HOME += 'small/';
			IMAGE_SIZE = 'small';
			CONTENT_HEIGHT = 300;
			CONTENT_WIDTH  = 474;
			NAVIGATION_SQUARE_HEIGHT = NAVIGATION_SQUARE_SMALL_HEIGHT;
			gtImageMode = "small";
		} 
		else 
		{
			// Pfad zur Slideshow Konfigurationsdatei setzen
			IMAGE_SLIDESHOW_HOME += 'large/';
			gtImageMode = "large";
			return;
		}
		
		document.getElementById('content').style.width = CONTENT_WIDTH+'px';
		document.getElementById('content').style.height = CONTENT_HEIGHT+'px';
		
		// Haupt-Element ausrichten
		document.getElementById('main').style.marginLeft = '-230px';
		document.getElementById('main').style.width = CONTENT_WIDTH+'px';
		document.getElementById('main').style.height = CONTENT_HEIGHT+'px';
		
		// CSS animierte Effekte
		document.getElementById('contentImgCover').style.width = CONTENT_WIDTH+'px';
		document.getElementById('contentImgCover').style.height = CONTENT_HEIGHT+'px';
		
		// PNG animierte Effekte
		document.getElementById('contentImageAnimation').style.width = CONTENT_WIDTH+'px';
		document.getElementById('contentImageAnimation').style.height = CONTENT_HEIGHT+'px';
		
		// Bilder
		document.getElementById('contentImg').style.width = CONTENT_WIDTH+'px';
		document.getElementById('contentImg').style.height = CONTENT_HEIGHT+'px';
		
		document.getElementById('contentCountry').style.width = CONTENT_WIDTH+'px';
		document.getElementById('contentCountry').style.height = CONTENT_HEIGHT+'px';
		
				
		// Länderliste Höhe
		document.getElementById('auto_listOne').style.height = CONTENT_HEIGHT-NAVIGATION_SQUARE_SMALL_HEIGHT +'px';
		
		document.getElementById('countryListPanel').style.width = '118px';
		document.getElementById('countryListPanel').style.height = '300px';
		
		
        // ScrollDown Bild
        document.getElementById('scroll_down').style.top = '275px';
                
        document.getElementById('imgNavigationGlobal').style.left = '391px';
        document.getElementById('imgNavigationGlobal').style.top = '0px';

        document.getElementById('imgNavigationImprint').style.left = '374px';
        document.getElementById('imgNavigationImprint').style.top = '40px';

		// kleines Logo verschieben
		document.getElementById('logoTopRight').src = 'images/logoclaim_small.jpg';
		document.getElementById('logoTopRight').style.left = ' 409px';
		document.getElementById('logoTopRight').style.width = '65px';
		document.getElementById('logoTopRight').style.height = '130px';
		
		// Navigation nach oben verschieben
		document.getElementById('navigation').style.top = CONTENT_HEIGHT+'px';
		//document.getElementById('navigation').style.width = CONTENT_WIDTH+'px';
		
		// Impressum nach untern verschieben
		/*document.getElementById('imprint').style.top = '385px';
		document.getElementById('imprint').style.width = CONTENT_WIDTH+'px';
		document.getElementById('imprint').getElementsByTagName('a')[0].style.marginLeft = '324px';*/
		
		// loading-Grafik ausrichten
		document.getElementById('loading').style.top = '137px';
		
		
		// Pfiele zum scrollen entsprechend positionieren
		document.getElementById('scroll_up').style.left = '23px';
		document.getElementById('scroll_down').style.left = '23px';
	}
}



function cBrowserInformation() 	{

	this.isIE = function() {
		return (getUserAgent().indexOf("msie") != -1) && !this.isOpera();	
	}
	
	this.isNetscape = function() {
		return (getUserAgent().indexOf("netscape") != -1);	
	}
	
	this.isOpera = function() {
		return (getUserAgent().indexOf("opera") != -1);	
	}
		
	this.getVersion = function() {		
		var ltUserAgent = getUserAgent();
	
	
		if (this.isIE()) {
			if(ltUserAgent.indexOf("5.0") != -1)  {
				return 5.0;
			} else {
				return 0.0;
			}
		} else if (this.isOpera()) {
			if(ltUserAgent.indexOf("8.0") != -1)  {
				return 8.0;				
			} else if(ltUserAgent.indexOf("8.5") != -1)  {
				return 8.5;			
			} 
			
			if (ltUserAgent.indexOf("/") != -1 ) {
				try {
					var lfVersion = parseFloat(ltUserAgent.split("/")[1].split(" ")[0]);
					return lfVersion;
				} catch (e) {
					return 0.0;
				}
			}
		
			return 0.0;
			
		} else {
			return 0.0;
		}	
	}
		
	function getUserAgent() {
		return navigator.userAgent.toLowerCase();
	}
}



