/*
 * Santander Formel 1 Tippspiel Scripting
 * - Nachladen von SwfObject,
 * - Nachladen der jQuery-Bibliothek (wenn notwendig),
 * - Flash-Versionskontrolle 
 *   (Abbruch ohne passende Flash-Version),
 * - Aufbau der benötigten DOM-Strukturen,
 * - Erzeugen eingekapselter Stylesheet-Anpassungen,
 * - Laden der Flash-Elemente 'mainbanner' und 'racecar',
 * - Positionierung des racecar-Elements durch
 *   Aufrufe aus dem mainbanner-SWF
 */
 
// element-id des banner-containers:
var rbf1_tippbanner_base = 'rbf1_tippbanner';

// click-url/target (racecar und mainbanner werden verlinkt):
var rbf1_clickurl = 'http://tippspiel.im-spiele.de/gp2010/santander/home';
var rbf1_clicktarget = '_blank';

// flash-version (string mit major.minor.release, z.B. '9.0.0'):
rbf1_flash_version_str = '9.0.0';

// debug?
var rbf1_debug_flag = false;

// element-abmessungen:

	// mainbanner (breite/hoehe des flashs):
	var rbf1_mainbanner_width = 207;
	var rbf1_mainbanner_height = 138;
	
	// racecar (breite/hoehe des flashs):
	var rbf1_racecar_width = 181;
	var rbf1_racecar_height = 51;
	
	// racetrack (maske fuer das racecar, liegt im body-tag):
	var rbf1_racetrack_width = 912;
	var rbf1_racetrack_height = rbf1_racecar_height;
	var rbf1_racetrack_offset_x = (rbf1_racetrack_width - rbf1_mainbanner_width) * -1 ; // x-offset vom mainbanner aus
	var rbf1_racetrack_offset_y = rbf1_mainbanner_height - rbf1_racecar_height + 25; // y-offset vom mainbanner aus
	
// --ende element-abmessungen

// element-positionskorrekturen:
	
	// main banner: x/y-offset:
	var rbf1_pos_mainbanner_x = -18;
	var rbf1_pos_mainbanner_y = 0;	
	
// -- ende element-positionskorrekturen

// start/stop und in/out-positionen fuer das racecar:
	
	var rbf1_racecar_out_left = (rbf1_racecar_width * -1) - 5;
	var rbf1_racecar_out_right = rbf1_racetrack_width + 5;
	var rbf1_racecar_stopover = rbf1_racetrack_width - rbf1_mainbanner_width - 51;
	
// -- ende start/stop und in/out-positionen fuer das racecar:

// ordnername/pfad fuer die elements/scripts:
var rbf1_tippbanner_dir = rbf1_tippbanner_base;

// abweichender pfad fuer die beiden swf-dateien (zum besseren include
// waehrend der entwicklung:
var rbf1_path_swf_mainbanner = '../../media/flash/f1_tippspiel/TeaserFormel1MainBanner.swf';
var rbf1_path_swf_racecar = '../../media/flash/f1_tippspiel/TeaserFormel1Racecar.swf';

// erzeugen des local connection-identifikators fuer flash:
var rbf1_lc_date = new Date; var rbf1_lc_id;
try{ rbf1_lc_id = ('t' + rbf1_lc_date.getTime() + '_' + navigator.appVersion).split(' ').join('');} catch(err){	rbf1_lc_id = '_' + rbf1_lc_date.getTime(); }

// globale objecte fuer flashvars und params (fuer swfobject):
var rbf1_flashvars_global = {
	lc_id: rbf1_lc_id,
	rc_out_left: rbf1_racecar_out_left,
	rc_out_right: rbf1_racecar_out_right,
	rc_stopover: rbf1_racecar_stopover,
	banner_clickurl: rbf1_clickurl,
	banner_clicktarget: rbf1_clicktarget,
	use_debug: rbf1_debug_flag ? 'yes' : 'no'
};
var rbf1_params_global = {
	menu: "false",
	scale: "noScale",
	allowFullscreen: "true",
	allowScriptAccess: "always",
	wmode: "transparent"
};

// jquery noconflict-variable (gekapselte jquery-instanz nach der initialisierung):
var $rbf1;

// init flag:
rbf1_init_done = false;

// element-id fuer die mainbanner- und racecar-elemente sowie den container, der das racecar maskiert:
var rbf1_tippbanner_mainbanner = rbf1_tippbanner_base + '_mainbanner';
var rbf1_tippbanner_racecar = rbf1_tippbanner_base + '_racecar';
var rbf1_tippbanner_ractrack = rbf1_tippbanner_base + '_racetrack';

// swfobject laden:
try{
	var dump_swf = swfobject;
} catch(e){
var rbf1_script_swfobject = document.createElement('script');
    rbf1_script_swfobject.setAttribute('type', 'text/javascript');
    rbf1_script_swfobject.setAttribute('src', '../../media/flash/kartenkarussell/swfobject.js');
    rbf1_script_swfobject.onload = rbf1_script_swfobject.onreadystatechange = function(){ rbf1_checkloaded('swfobject');	};
 		document.getElementById(rbf1_tippbanner_base).appendChild(rbf1_script_swfobject);
}

// jquery laden (falls nicht schon verfügbar):
try{
	var dump_jq = jQuery;
} catch(e){
	var rbf1_script_jquery = document.createElement('script');
	    rbf1_script_jquery.setAttribute('type', 'text/javascript');
	    rbf1_script_jquery.setAttribute('src', '../../media/javascript/jquery.js');
	    rbf1_script_jquery.onload = rbf1_script_jquery.onreadystatechange = function(){ rbf1_checkloaded('jquery');	};
	 		document.getElementById(rbf1_tippbanner_base).appendChild(rbf1_script_jquery);
}

// swfobject und jquery in der sseite vorhanden (script-include, kein laden wie oben):
if(dump_swf && dump_jq){
	//swfobject.addLoadEvent(rbf1_checkloaded);
		rbf1_checkloaded();
}

// swfobject und jQuery geladen?
function rbf1_checkloaded(who){
		
	// alles geladen?
	try{
		if(!jQuery) return false;
		if(!swfobject) return false;
	} catch(err){
		return false;
	}
	
	// init speichern:
	if(rbf1_init_done == true) return true;
	rbf1_init_done = true;
	
	// flash vorhanden. da jquery geladen ist, wird eingekapselter selektor erzeugt:
	$rbf1 = jQuery;
	
	if(swfobject.hasFlashPlayerVersion(rbf1_flash_version_str)){
			
	// weiter wenn das dom wirklich ganz sicher fertig ist:
		swfobject.addDomLoadEvent(function(){
			$rbf1(document).ready(function(){
	       rbf1_run_banner();
	    });
	  });

		
	} else {
			
		// kein flash oder version zu alt: noflash-image schreiben:
		var noflash_html = new Array;
		    noflash_html.push('<a style="position: relative;" onfocus="this.blur();" href="' + rbf1_clickurl + '" target="' + rbf1_clicktarget + '">');
		    noflash_html.push('<img id="rbf1_noflash_image" src="../../media/flash/f1_tippspiel/formel1_teaser_noflash.gif" width="' + rbf1_mainbanner_width + '" height="' + rbf1_mainbanner_height + '" alt="" border="0" />');
		    noflash_html.push('</a>');
		document.getElementById(rbf1_tippbanner_base).innerHTML = noflash_html.join('');
		
		// einbinden der positionskorrekturen des main banners:
		$rbf1('#rbf1_noflash_image').css('position', 'relative');
		$rbf1('#rbf1_noflash_image').css('left', rbf1_pos_mainbanner_x + 'px');
		$rbf1('#rbf1_noflash_image').css('top', rbf1_pos_mainbanner_y + 'px');
		
	}
		
}

// laden der banner und start der animationen:
function rbf1_run_banner(){
	
	// relative position for tipbanner_base:
	$rbf1('#' + rbf1_tippbanner_base).css('position', 'relative');
		
	// erzeugen des swf-containers fuer das mainbanner-element:
	$rbf1('#' + rbf1_tippbanner_base).append('<div id="' + rbf1_tippbanner_mainbanner + '"></div>');
	
	// attributes-object fuer mainbanner-swfobject:
	var rbf1_attributes_mainbanner = { };
	
	// aufbau des swfobjects zum laden der mainbanner-datei:
	swfobject.embedSWF(rbf1_path_swf_mainbanner, rbf1_tippbanner_mainbanner, rbf1_mainbanner_width, rbf1_mainbanner_height, rbf1_flash_version_str, null, rbf1_flashvars_global, rbf1_params_global, rbf1_attributes_mainbanner);
	
	// einbinden der positionskorrekturen des main banners:
	$rbf1('#' + rbf1_tippbanner_mainbanner).css('position', 'absolute');
	$rbf1('#' + rbf1_tippbanner_mainbanner).css('left', rbf1_pos_mainbanner_x + 'px');
	$rbf1('#' + rbf1_tippbanner_mainbanner).css('top', rbf1_pos_mainbanner_y + 'px');
	
	// berechnen der absoluten positionen fuer den racetrack-div:
	var rbf1_racetrack_x = $rbf1('#' + rbf1_tippbanner_mainbanner).offset().left + rbf1_racetrack_offset_x;
	var rbf1_racetrack_y = $rbf1('#' + rbf1_tippbanner_mainbanner).offset().top + rbf1_racetrack_offset_y;
	
	// erzeugen des maskierenden containers fuer das racecar-swf innerhalb des body-tags:
	$rbf1('body').append('<div id="' + rbf1_tippbanner_ractrack + '"></div>');
	$rbf1('#' + rbf1_tippbanner_ractrack).css('position', 'absolute');
	$rbf1('#' + rbf1_tippbanner_ractrack).css('top', rbf1_racetrack_y + 'px');
	$rbf1('#' + rbf1_tippbanner_ractrack).css('left', rbf1_racetrack_x + 'px');
	$rbf1('#' + rbf1_tippbanner_ractrack).css('width', rbf1_racetrack_width + 'px');
	$rbf1('#' + rbf1_tippbanner_ractrack).css('height', rbf1_racetrack_height + 'px');
	$rbf1('#' + rbf1_tippbanner_ractrack).css('overflow', 'hidden');
	
	// erzeugen des swf-containers fuer das racecar-element:
	$rbf1('#' + rbf1_tippbanner_ractrack).append('<div id="' + rbf1_tippbanner_racecar + '"></div>');
	
	// attributes-object fuer mainbanner-swfobject:
	var rbf1_attributes_racecar = { };
	
	// aufbau des swfobjects zum laden der mainbanner-datei:
	swfobject.embedSWF(rbf1_path_swf_racecar, rbf1_tippbanner_racecar, rbf1_racecar_width, rbf1_racecar_height, rbf1_flash_version_str, null, rbf1_flashvars_global, rbf1_params_global, rbf1_attributes_racecar);
	
	// einbinden der positionskorrekturen des main banners:
	$rbf1('#' + rbf1_tippbanner_racecar).css('position', 'absolute');
	$rbf1('#' + rbf1_tippbanner_racecar).css('left', rbf1_racecar_stopover + 'px');
	$rbf1('#' + rbf1_tippbanner_racecar).css('top', '0px');
	
	// browser-weiche: netscape/firefox-browser erfordern neuausrichtung der sfw-container zur laufzeit.
	if(navigator.appName.toLowerCase() != 'netscape'){
		// onResize-handler zur neupositionierung des racetracks:
		$rbf1(window).resize(function() {
		  
		  // berechnen der absoluten positionen fuer den racetrack-div:
			var rbf1_racetrack_x = $rbf1('#' + rbf1_tippbanner_mainbanner).offset().left + rbf1_racetrack_offset_x;
			var rbf1_racetrack_y = $rbf1('#' + rbf1_tippbanner_mainbanner).offset().top + rbf1_racetrack_offset_y;
			$rbf1('#' + rbf1_tippbanner_ractrack).css('top', rbf1_racetrack_y + 'px');
			$rbf1('#' + rbf1_tippbanner_ractrack).css('left', rbf1_racetrack_x + 'px');
			
		});
	}
}

// methode zum setzen der racecar-positionen aus dem mainbanner-swf heraus:
function rbf1_swfset_racecar_x(x){
	
	if(x == rbf1_racecar_out_left || navigator.appName.toLowerCase() != 'netscape'){
		
		// einfaches x-update:
		$rbf1('#' + rbf1_tippbanner_racecar).css('left', x + 'px');
		
	} else {
		
		// handling firefox-browser: anpassen der flash-container-positionen zur laufzeit:
	
		// berechnen der absoluten positionen fuer den racetrack-div:
		var rbf1_racetrack_x = $rbf1('#' + rbf1_tippbanner_mainbanner).offset().left + rbf1_racetrack_offset_x;
		var rbf1_racetrack_y = $rbf1('#' + rbf1_tippbanner_mainbanner).offset().top + rbf1_racetrack_offset_y;
		
		var fix_left = (rbf1_racetrack_x + x);
		if(fix_left < rbf1_racetrack_x){
			fix_left = rbf1_racetrack_x;
			$rbf1('#' + rbf1_tippbanner_racecar).css('left', x + 'px');
		} else if(fix_left > rbf1_racetrack_x + rbf1_racetrack_width - rbf1_racecar_width){
			fix_left = rbf1_racetrack_x + rbf1_racetrack_width - rbf1_racecar_width;
			$rbf1('#' + rbf1_tippbanner_racecar).css('left', (x - rbf1_racetrack_width + rbf1_racecar_width) + 'px');
		} else {
			$rbf1('#' + rbf1_tippbanner_racecar).css('left', 0 + 'px');
		}			
		$rbf1('#' + rbf1_tippbanner_ractrack).css('top', rbf1_racetrack_y + 'px');
		$rbf1('#' + rbf1_tippbanner_ractrack).css('left', fix_left + 'px');
		$rbf1('#' + rbf1_tippbanner_ractrack).css('width', (rbf1_racecar_width) + 'px');
	}

}
