function jumpToManufacturer(inId){

	yValueManufacturerTable = Position.page($(inId))[1];
	yValueContent = Position.page($('ContentInput'))[1];
	pixelToScroll = yValueManufacturerTable - yValueContent;
	heightContent = getHoehe('ContentInput');
	sliderRange = heightContent/slideRangeDivider;
	/*Die "200" ist die Höhe des Elements #Content.contentUebersicht */
	slider1.setValue((sliderRange*pixelToScroll)/(heightContent-200));
}


function initScrollbar(){

	//alert($('Content').scrollTop);
	//Damit beim Neuladen der Scrollbar, der scrollbare Inhalt wieder nach oben gescrollt ist (Ausgangsposition)
	$('Content').scrollTop = 0;

	/* Höhe des kompletten Inhalts */
	hoehe = getHoehe('ContentInput');
	
	/* Auf der Compare-Seite -> Scrollbar wird je nach länge des tatsächlichen Inhalts skaliert */
	if($('ScrollTrack').hasClassName('scrolltrackVergleichMobil') || $('ScrollTrack').hasClassName('scrolltrackDownload') ){

		/* unangepasste Höhe der ScrollHandle */
		hoeheScrollhandle = getHoehe('ScrollHandle');

		/* Höhe des (sichtbaren) Content-Bereichs */
		hoeheContentBereich = getHoehe('Content');
		/*alert("ContentBereich "+hoeheContentBereich+" / ContentInput "+hoehe);*/
		/*Die Scrollhandle an die Höhe des zu scrollenden Contents anpassen*/
		$('ScrollHandle').style.height = (((hoeheContentBereich/hoehe)*hoeheScrollhandle)+15)+"px";
	}

	slideRangeDivider = 20;
	/* Je größer sliderRange -> feinere Abschnitte -> langsamer aber genauer Scrollen (mit dem Mousewheel)
	   Je höher der scrollbare Bereich, desto größer sliderRange */
	sliderRange = hoehe/slideRangeDivider;

	// Scroll-Slider wird instanziiert
	slider1 = new Control.Slider('ScrollHandle', 'ScrollTrack', {
		axis: 'vertical',
		range: $R(0, sliderRange),
		onSlide: function(v) { scrollVertical(v, $('Content'), slider1);  slider1Value = v; },
		onChange: function(v) { scrollVertical(v, $('Content'), slider1); slider1Value = v; }
	});

	//alert(hoehe+" "+sliderRange);

	//Zum Scrollen des Elements
	function scrollVertical(value, element, slider) {
		//alert(element.scrollTop);
		element.scrollTop = Math.round(value/slider.maximum*(hoehe-element.offsetHeight));
	}

	// wenn nicht gesrcollt werden muss -> ausblenden
	if (hoehe < $('Content').offsetHeight) {
		slider1.setDisabled();
		$('Scrollbar').hide();
	}


	/* Ab hier folgt der Code für die Mouswheel-Scroll-Funktion */
	function handle(delta) {
		slider1.setValueBy(-delta);
	}

	/** Event Handler für das Scrolling per Mausrad */
	function wheel(event){

		var delta = 0;
		if (!event) /* For IE. */
			event = window.event;
		if (event.wheelDelta) { /* IE/Opera. */
			delta = event.wheelDelta/120;
			if (window.opera)
				delta = delta;
		} else if (event.detail) { /** Mozilla case. */
			delta = -event.detail/3;
		}
		if (delta)
			handle(delta);
		if (event.preventDefault)
			event.preventDefault();

		event.returnValue = false;
	}

	// Mozilla
	Event.observe('Content', 'DOMMouseScroll', wheel);
	Event.observe('Scrollbar', 'DOMMouseScroll', wheel);

	// IE/Opera
	Event.observe('Content', 'mousewheel', wheel);
	Event.observe('Scrollbar', 'mousewheel', wheel);

	/* Diese Variablen enthalten den momentanen Scroll-Wert der Slider. Initialisierung mit Wert 0 */
	slider1Value = 0;
	sliderValue = 0;

	function scroll(direction){

		if (direction == "stop"){
			try {
				clearInterval(steppingInterval);
			} catch (e){

			}
		}else if (direction == "up"){
			steppingInterval = window.setInterval("slider1.setValue(slider1Value - 1);", 30); /* letzter Parameter bestimmt die Größe  der Schrittfolgen */
		}else if (direction == "down"){
			steppingInterval = window.setInterval("slider1.setValue(slider1Value + 1);", 30); /* letzter Parameter bestimmt die Größe der Schrittfolgen */
		}
	}

	/* Wenn der Browser scrollHeight oder offsetHeight nicht richtig annimmt -> Scrollbar ausblenden und eine normale Scrollbar verwenden */
	if ($('Content').scrollTop == $('Content').offsetHeight){

		slider1.setDisabled();
		$('Scrollbar').hide();
		$('Content').addClassName('normalScrollbars');
	}

	/* Events für den ScrollDown-Button */
	$('Btn_ScrollDown').onmousedown = function(){
		scroll('down');
	}
	$('Btn_ScrollDown').onmouseup = function(){
		scroll('stop');
	}
	$('Btn_ScrollDown').onmouseout = function(){
		scroll('stop');
	}

	/* Events für den ScrollUp-Button */
	$('Btn_ScrollUp').onmousedown = function(){
		scroll('up');
	}
	$('Btn_ScrollUp').onmouseup = function(){
		scroll('stop');
	}
	$('Btn_ScrollUp').onmouseout = function(){
		scroll('stop');
	}

}//Ende Fkt initScrollbar()


function reInitScrollbar(insliderValue){

	/* Höhe des kompletten Inhalts */
	hoehe = getHoehe('ContentInput');

	/* Auf der Compare-Seite -> Scrollbar wird je nach länge des tatsächlichen Inhalts skaliert */
	if($('ScrollTrack').hasClassName('scrolltrackVergleichMobil')){

		/* unangepasste Höhe der ScrollHandle */
		hoeheScrollhandle = getHoehe('ScrollHandle');

		/* Höhe des (sichtbaren) Content-Bereichs */
		hoeheContentBereich = getHoehe('Content');

		/*alert("ContentBereich "+hoeheContentBereich+" / ContentInput "+hoehe);*/
		/*Die Scrollhandle an die Höhe des zu scrollenden Contents anpassen*/
		$('ScrollHandle').style.height = (((hoeheContentBereich/hoehe)*hoeheScrollhandle)+15)+"px";
	}

	slideRangeDivider = 20;
	/* Je größer sliderRange -> feinere Abschnitte -> langsamer aber genauer Scrollen (mit dem Mousewheel)
	   Je höher der scrollbare Bereich, desto größer sliderRange */
	sliderRange = hoehe/slideRangeDivider;

	// Scroll-Slider wird instanziiert
	slider1 = new Control.Slider('ScrollHandle', 'ScrollTrack', {
		axis: 'vertical',
		range: $R(0, sliderRange),
		sliderValue:insliderValue,
		onSlide: function(v) { scrollVertical(v, $('Content'), slider1);  slider1Value = v; },
		onChange: function(v) { scrollVertical(v, $('Content'), slider1); slider1Value = v; }
	});

	//Zum Scrollen des Elements
	function scrollVertical(value, element, slider) {
		//alert(element.scrollTop);
		element.scrollTop = Math.round(value/slider.maximum*(hoehe-element.offsetHeight));
	}

	// wenn nicht gesrcollt werden muss -> ausblenden
	if (hoehe < $('Content').offsetHeight) {
		slider1.setDisabled();
		$('Scrollbar').hide();
	}

	/* Ab hier folgt der Code für die Mouswheel-Scroll-Funktion */
	function handle(delta) {
		slider1.setValueBy(-delta);
	}

	/** Event Handler für das Scrolling per Mausrad */
	function wheel(event){

		var delta = 0;
		if (!event) /* For IE. */
			event = window.event;
		if (event.wheelDelta) { /* IE/Opera. */
			delta = event.wheelDelta/120;
			if (window.opera)
				delta = delta;
		} else if (event.detail) { /** Mozilla case. */
			delta = -event.detail/3;
		}
		if (delta)
			handle(delta);
		if (event.preventDefault)
			event.preventDefault();

		event.returnValue = false;
	}

	// Mozilla
	Event.observe('Content', 'DOMMouseScroll', wheel);
	Event.observe('Scrollbar', 'DOMMouseScroll', wheel);

	// IE/Opera
	Event.observe('Content', 'mousewheel', wheel);
	Event.observe('Scrollbar', 'mousewheel', wheel);

	function scroll(direction){

		if (direction == "stop"){
			try {
				clearInterval(steppingInterval);
			} catch (e){

			}
		}else if (direction == "up"){
			steppingInterval = window.setInterval("slider1.setValue(slider1Value - 1);", 30); /* letzter Parameter bestimmt die Größe  der Schrittfolgen */
		}else if (direction == "down"){
			steppingInterval = window.setInterval("slider1.setValue(slider1Value + 1);", 30); /* letzter Parameter bestimmt die Größe der Schrittfolgen */
		}
	}

	/* Wenn der Browser scrollHeight oder offsetHeight nicht richtig annimmt -> Scrollbar ausblenden und eine normale Scrollbar verwenden */
	if ($('Content').scrollTop == $('Content').offsetHeight){

		slider1.setDisabled();
		$('Scrollbar').hide();
		$('Content').addClassName('normalScrollbars');
	}

	/* Events für den ScrollDown-Button */
	$('Btn_ScrollDown').onmousedown = function(){
		scroll('down');
	}
	$('Btn_ScrollDown').onmouseup = function(){
		scroll('stop');
	}
	$('Btn_ScrollDown').onmouseout = function(){
		scroll('stop');
	}

	/* Events für den ScrollUp-Button */
	$('Btn_ScrollUp').onmousedown = function(){
		scroll('up');
	}
	$('Btn_ScrollUp').onmouseup = function(){
		scroll('stop');
	}
	$('Btn_ScrollUp').onmouseout = function(){
		scroll('stop');
	}

}//Ende Fkt initScrollbar()




function initSlider(){

	// Scroll-Slider wird instanziiert
	slider2 = new Control.Slider('SlideHandle', 'SlideTrack', {
		axis: 'horizontal',
		range: $R(-20,20),
		sliderValue: 0.1,
		onSlide: function(v) { /*slider2Value = v; */},
		onChange: function(v) { /*alert("Wert: "+v);*/}
	});

	slider2.setValue(0);	/* Explizit den Startwert 0 gesetzt (für Opera) -> löst onChange-Event aus  */


}//Ende Fkt initSlider()



/* Funktion zum aktivieren/deaktivieren einer Gruppe bestimmter Checkboxen -> 1.Parameter: Checkbox, die geklickt wird // 2. Parameter: ID der Tabelle, innerhalb derer sich die zu de-/aktivierenden Checkboxes befinden */
function selectGroup(param, id){

	var checkboxes = document.getElementById(id).getElementsByTagName("input");
	var isChecked = param.checked;

	for(var i=0; i<checkboxes.length; i++){
		if(checkboxes[i].type == "checkbox"){
			if (isChecked == true)
				checkboxes[i].checked = true;
			else
				checkboxes[i].checked = false;
		}
	}
}


/* Funktion zum aktivieren aller Manufacturer-Checkboxen (benötigt bei einem Reload!) */
function checkManufacturers(){

	var checkboxes = document.getElementById("ContentHeader").getElementsByTagName("input");

	for(var i=0; i<checkboxes.length; i++){
				checkboxes[i].checked = true;
	}
}



//Fkt, um die aktuelle Höhe des Elements abzufragen
function getHoehe(objid){
//alert(objid);
  if (window.getComputedStyle){
	obj=document.getElementById(objid);
	//obj.style.bgcolor = '#ff0000';
	wert = (document.defaultView.getComputedStyle(obj,"").getPropertyValue('height'));
	wert = wert.substr(0, (wert.length-2)); /* "px" am Ende wird abgeschnitten */
	return wert;

  }else{//getComputedStyle wird durch den Browser NICHT unterstützt.

	dimensions = $(objid).getDimensions();
	return(dimensions.height);
  }
}


function switchDisplay (id, elem){

	/*
	De-activate the onclick event of the link.
	When checked -> jumpToManufacturer()
	When unchecked -> return false
	*/
	if(elem.checked == true){
		$(id+'_link').onclick = function(){ jumpToManufacturer(id); };
		$(id+'_link').style.cursor = 'pointer';
	}else{
		$(id+'_link').onclick = function(){ return false; };
		$(id+'_link').style.cursor = 'default';
	}



	var display = document.getElementById(id).style.display;
	if (display == "none"){
		$(id).show();
	}
	else{
		$(id).hide();
	}


	try{
		neueHoeheContentInput = parseInt(getHoehe('ContentInput'));
		neueHoeheContent = parseInt(getHoehe('Content'));
	}catch(e){
		neueHoeheContentInput = getHoehe('ContentInput');
		neueHoeheContent = getHoehe('Content');
	}

	//scrollbar wieder einblenden/asblenden, falls nötig
	if (neueHoeheContentInput > neueHoeheContent){
		//alert("Wird eingeblendet ("+neueHoeheContentInput+ " ist groesser " +neueHoeheContent+ ")");
		$('Scrollbar').show();
	}else{
		//alert("Wird ausgeblendet ("+neueHoeheContentInput+ " ist kleiner " +neueHoeheContent+ ")");
		$('Scrollbar').hide();
	}


	//Delete all events that were binded with Event.obeserve
	Event.unloadCache();

	sliderRange = getHoehe('ContentInput')/slideRangeDivider;

	/*Durch die Funktion reInitScrollbar bleibt der Scrollzustand bestehen*/
	//reInitScrollbar(slider1Value);

	/*Durch die Funktion initScrollbar wird wieder an den obersten Punkt gescrollt*/
	initScrollbar();

}



/* Fkt zum Einblenden des Detail-Layers */
function fadeDetail(param1){

	$('ErrorDisplay').hide();

	if (param1 == "in"){
		$("Details").show();
		new Effect.Appear('FadingLayer', {to: 0.7});
	}
	if (param1 == "out"){
		new Effect.Fade('FadingLayer');
		/*$("Details").hide();*/
		new Effect.Fade('Details');
	}

}



/*  Fkt, die zuerst per AJAX die entprechenden Daten anfordert, in den Details-Layer einsetz und diesen dann einblendet */
function showDetail(param,inLanguage){

	/*if($('Link_Downloads')){
		var boxId = $('Link_Downloads').name;
		$('Link_Downloads').href = "/downloadsPhone/"+param+"/"+boxId;
	}*/

	fadeDetail("in");
	$('DetailsInhalt').innerHTML = $('LoadingScreen').innerHTML;
	new Ajax.Request(
			'/model_compare/modelData/'+param+'/?lang='+inLanguage, // Skript, welches das Ergebnis (in HTML) zurückliefert
			{
				onSuccess: function(t) {
					$('DetailsInhalt').innerHTML = t.responseText;
				}
			});
}


function displayErrors(e,inSuiteId,inCategoryId,inErrorType,inLanguage){

   if ($('ErrorDisplay').display == "block"){
		$('ErrorDisplay').hide();
		return;
	}

	if (window.event){
		//Berechnung des X-Wertes unter Berücksichtigung der aktuellen Viewport-Größe:
		x = (Event.pointerX(window.event) - (getViewport().width/2) + 720);
		y = Event.pointerY(window.event);
	} else{
		x = (Event.pointerX(e) - (getViewport().width/2) + 720);
		y = Event.pointerY(e);
	}


    $('ErrorDisplay').style.top = (y+10) + "px";
    $('ErrorDisplay').style.left = (x-370) + "px";

	new Ajax.Updater("TestError", '/displayErrors/'+inSuiteId+'/'+inCategoryId+'/'+inErrorType+'/'+inLanguage, {
            onSuccess:function(response){
				new Effect.Appear('ErrorDisplay',{duration:0.4, to: 0.99});
		}
    });
}



function showDownloadLicence(inFilename){
	if ($('DownloadLicence').display == "block"){
		$('DownloadLicence').hide();
		return;
	}

	$('DownloadLink').onclick = function(){window.open(inFilename,'downloadwindow','status=0,toolbar=0,menubar=1,width=600,height=300,resizable=1');};

	new Ajax.Updater("DownloadLicenceContent", '/downloads/downloadLicence', {
            onSuccess:function(response){
				$('DownloadLicence').show();
				if($('FadingLayer')){
					new Effect.Appear('FadingLayer',{duration:0.4, to: 0.7});
				}
		}
    });
}


function hideDownloadLicence(){
		$('DownloadLicence').hide();
		if($('FadingLayer')){
			new Effect.Fade('FadingLayer',{duration:0.4});
		}
}


function showImpressum(){

	if ($('DownloadLicence').display != "none"){
		$('DownloadLicence').hide();
	}

	if ($('Impressum').display == "block"){
		$('Impressum').hide();
		return;
	}

	new Ajax.Updater("ImpressumContent", '/frontend/impressum', {
            onSuccess:function(response){
				$('Impressum').show();
				if($('FadingLayer')){
					new Effect.Appear('FadingLayer',{duration:0.4, to: 0.7});
				}
		}
    });
}


function hideImpressum(){
		$('Impressum').hide();
		if($('FadingLayer')){
			new Effect.Fade('FadingLayer',{duration:0.4});
		}
}



function showMobileMusicLayer(p_inhalt){

	if ($('DownloadLicence').display != "none"){
		$('DownloadLicence').hide();
	}

	if ($('Impressum').display == "block"){
		$('Impressum').hide();
		return;
	}

	$('MobileMusicLayerContent').innerHTML = $(p_inhalt).innerHTML;
	$('MobileMusicLayer').show();
	//new Effect.Appear('MobileMusicLayer',{duration:0.8, to: 0.99});
	new Effect.Appear('FadingLayer',{duration:0.4, to: 0.7});

}


function hideMobileMusicLayer(){
		$('MobileMusicLayer').hide();
		if($('FadingLayer')){
			new Effect.Fade('FadingLayer',{duration:0.4});
		}
}


function showBoxSelect(p_id, p_cradle, introdateweek, introdateyear){
	if ($('BoxSelect').display == "block"){
		$('BoxSelect').hide();
		return;
	}

	new Ajax.Updater("BoxSelectContent", '/frontend/boxSelection?p_id='+p_id+'&cradle_support='+p_cradle+'&intro_date_week='+introdateweek+'&intro_date_year='+introdateyear, {
            onSuccess:function(response){
				new Effect.Appear("FadingLayer",{to:0.7, duration:0.4});
				/*new Effect.Fade("ContentArea",{from:1.0,to:0.4});*/
				$('BoxSelect').show();
		}
    });
}


function hideBoxSelect(){
		new Effect.Fade("BoxSelect");
		new Effect.Fade("FadingLayer");
}


//Funktion, die die momentane Größe des Viewports zurückgibt
function getViewport(){
	var viewport = {x:0,y:0,width:0,height:0};

	if (typeof window.scrollX != 'undefined'){
		viewport.x = window.pageXOffset;
		viewport.y = window.pageYOffset;
		viewport.width = window.innerWidth;
		viewport.height = window.innerHeight;
		return viewport;
	}else{
		if (document.documentElement && (typeof document.documentElement.scrollLeft != 'undefined') && (document.documentElement.scrollLeft != 0)){
			viewport.x = document.documentElement.scrollLeft;
			viewport.y = document.documentElement.scrollTop;
			viewport.width = document.documentElement.clientWidth;
			viewport.height = document.documentElement.clientHeight;
			return viewport;
		}else{
			if (document.body && (typeof document.body.scrollLeft != 'undefined')){
				viewport.x = document.body.scrollLeft;
				viewport.y = document.body.scrollTop;

				if (document.compatMode == "CSS1Compat"){
					viewport.width = document.body.parentNode.clientWidth;
					viewport.height = document.body.parentNode.clientHeight;
				}else{
					viewport.width = document.body.clientWidth;
					viewport.height = document.body.clientHeight;
				}
				return viewport;

			}
		}
	}
	return null;

}


/* Zum Vergrößern der Car-Images (bei mouseover) */
function zoom (element, param){

	element.style.position = "relative";

	if (param=="in"){
		//alert(element.height);
		element.height = element.height+8;
		element.width = element.width+20;
	}else if (param=="out"){
		element.height = element.height-8;
		element.width = element.width-20;
	}

}


/* Um die Tooltips ein- und auszublenden */
function displayTooltip(param1, param2){

	if (param2=="in"){
		$(param1).show();
		document.body.style.cursor = 'pointer';

	}else if(param2=="out"){
		$(param1).hide();
		document.body.style.cursor = 'auto';
	}

}


function displayTooltipWithMousePos(param1, param2, event){

	mouseX = Event.pointerX(event);
	mouseY = Event.pointerY(event);

	if (param2=="in"){

		$(param1).style.left = (mouseX)+"px";
		$(param1).style.top = (mouseY+20)+"px";
		$(param1).show();
		document.body.style.cursor = 'pointer';

	}else if(param2=="out"){
		$(param1).hide();
		document.body.style.cursor = 'auto';
	}

}


function submitPhoneModelSelection(inMode){
	$('mode').value = inMode;
	$('phone_model_selection').submit();
}


function showError(){
	new Effect.Fade("ContentArea",{from:1.0,to:0.4});
	new Effect.Appear('Error',{duration:0.3});
}

function closeError(){
	new Effect.Shrink("Error",{duration:0.3});
	new Effect.Appear('ContentArea',{duration:0.3});

}

function isPhoneSelected(){
  var theElements = $('phone_model_selection').elements;

  for (i = 0; i < theElements.length;i++){
  	if (theElements[i].name.indexOf("data") != -1){
		if (theElements[i].type == "checkbox"
			&& theElements[i].checked == true){

			return true;
		}
	}


  }

	return false;

}

function submitSelectedPhones(){
	if (isPhoneSelected() == false){
		showError();
		return;
	}

	$('phone_model_selection').submit();

}

function changeLanguage(p_chosenLang){

	if (window.location.href.indexOf("lang=") != -1){
		/*replace language value in current URL*/
		url = window.location.href;
		beginNumber = url.indexOf("lang=");
		endNumber = beginNumber+7;
		beginString = url.substr(0,beginNumber);
		endString = url.substr(endNumber,url.length);
		newLocation = beginString+"lang="+p_chosenLang+endString;
		window.location.href = newLocation;
	}else{
		/*append language to URL*/
		if (window.location.href.indexOf("?") != -1){
			/* append with "&" at the end of URL */
			window.location.href = window.location.href+"&lang="+p_chosenLang;
		}else{
			/* append with "?" at the end of URL */
			window.location.href = window.location.href+"?lang="+p_chosenLang;
		}
	}
}


function highlight(action,obj){

	if(action=="on"){
		obj.src = obj.src.replace(/.jpg/g, "_over.jpg");
	}
	if(action=="off"){
		obj.src = obj.src.replace(/_over.jpg/g, ".jpg");
	}

}



var Flash = Class.create();
Flash.prototype = {
		initialize: function(){
			this.Flash = this;
			this.CSSId = 'flashMessage';

		},
		show : function(){
			new Effect.Appear(this.CSSId);
			this.timer=setTimeout(function(){

				flash.hide();
				},1500);
		},
		hide : function(){
 			new Effect.Fade(this.CSSId,{
 			duration:1.0,
				from: 1.0, to: 0.0,
				fps:80
			});
			clearTimeout(this.timer);
			return false;
		}
};


function toggleSpecOptions(elem){

	if(elem.value == "false"){
		$('SpecificOptions').show();
	}else{
		/* uncheck all checkboxes */
		checkboxes = $('SpecificOptions').getElementsByTagName('input');
		for(var i = 0; i < checkboxes.length; i++) {
			if(checkboxes[i].checked == true){
				checkboxes[i].checked = false;
			}
		}

		$('SpecificOptions').hide();
	}

}


function selectAllPhones(param){

	checkboxes = $('SpecificOptions').getElementsByTagName('input');

	var isChecked = param.checked;

	for(var i=0; i<checkboxes.length; i++){
		if(checkboxes[i].type == "checkbox"){
			if (isChecked == true)
				checkboxes[i].checked = true;
			else
				checkboxes[i].checked = false;
		}
	}
}


function createPhoneModelSelect(inPhoneId){

	if(inPhoneId == ""){
		$('DownloadPhoneSelect').hide();
		return false;
	}

	new Ajax.Updater("DownloadPhoneSelect", '/downloads/downloadsPhoneSelect/'+inPhoneId, {
            onSuccess:function(response){
				$('DownloadPhoneSelect').show();
		}
    });
}


function goToPhoneDownloads(){

	window.location.href = "/downloadsPhone/"+$("DownloadChoicePhone").value;

}


function showCompatibleCarModels(e,inCarrierId,inLanguage,boxId){

   if ($('CompatibleCarsDisplay').display == "block"){
		$('CompatibleCarsDisplay').hide();
		return;
	}

	if (window.event){
		//Berechnung des X-Wertes unter Berücksichtigung der aktuellen Viewport-Größe:
		x = (Event.pointerX(window.event) - (getViewport().width/2) + 720);
		y = Event.pointerY(window.event);
	} else{
		x = (Event.pointerX(e) - (getViewport().width/2) + 720);
		y = Event.pointerY(e);
	}


    $('CompatibleCarsDisplay').style.top = (y-20) + "px";
    $('CompatibleCarsDisplay').style.left = (x-380) + "px";

	new Ajax.Updater("TestError", '/showCompatibleCars/'+inCarrierId+'/'+boxId+'?lang='+inLanguage, {
            onSuccess:function(response){
				new Effect.Appear('CompatibleCarsDisplay',{duration:0.4, to: 0.99});

		}
    });

}


var leftChars;


function charCounter(textInput, maxChars, counterOutput) {

   var inputField = $(textInput);
   var outputField = $(counterOutput);

   if (inputField != null) {
      if (inputField.value.length <= maxChars) {
         leftChars = maxChars - inputField.value.length;
      }else{
         inputField.value = inputField.value.substring(0, maxChars);
         leftChars = maxChars - inputField.value.length;
	  }
   }

   if (leftChars == null) {
      charsCount = maxChars - inputField.value.length;
   }else{
	  charsCount = leftChars;
   }

	outputField.innerHTML = charsCount;

}


function openDownload(adress){

	if($('LicenceAccepted').checked == true){
		window.open(adress, "download", "width=600,height=400,menubar=yes");
	}else{
		return false;
	}

}


var flash = new Flash();

