var cooDate = new Date(3000,1,1);

var cars={
	kleinwagen:		[6,4.3],
	kompaktklasse:	[7.5,5.5],
	mittelklasse:	[8.1,6.2],
	oberklasse:		[9.7,7.2],
	luxusklasse:	[16.1,0],
	sportwagen:		[11.9,0],
	van:			[9.4,6.7],
	transporter:	[13.7,9.6],
	tonner:			[0,15],
	gelandewagen:	[11.9,9.1]
};

var textes = 
{
	de: 
	{
	 	header: 		{text:'CO<sub>2</sub>-Rechner'},
		close: 			{text:'schliessen'},
		carTypeLabel: 	{text:'Fahrzeugtyp'},
		yourType	: 	{text:'Selbsteingabe'},
		car1: 			{text:'Kleinwagen'},
		car2: 			{text:'Kompaktklasse'},
		car3: 			{text:'Mittelklasse'},
		car4: 			{text:'Oberklasse'},
		car5: 			{text:'Luxusklasse'},
		car6: 			{text:'Sportwagen'},
		car7: 			{text:'Van'},
		car8: 			{text:'Transporter'},
		car9: 			{text:'7 1/2 Tonner'},
		car10: 			{text:'Geländewagen'},
		benzinLabel:	{text:'Benzin'},
		dieselLabel:	{text:'Diesel'},
		fuelConsum: 	{text:'Verbrauch'},
		km100: 			{text:'l pro 100 km'},
		distance: 		{text:'Strecke'},
		co2Consum: 		{text:'Ihr CO<sub>2</sub> Verbrauch beträgt'},
		infoText:		{text:'<strong>Ferienauto.de</strong> hat anhand der gängigsten Fahrzeugtypen den durchschnittlichen CO<sub>2</sub>-Verbrauch ermittelt.<br />Einzelwerte können davon abweichen. Bitte wenden Sie sich mit Fragen und Anregungen an Ferienauto.de, Philipp G. Schwarz, Badstraße 18, 90762 Fürth, Deutschland, <a href="mailto:info@ferienauto.de">info@ferienauto.de</a>'}
	},
	
	en: 
	{
	 	header: 		{text:'CO<sub>2</sub>-Calculator'},
		close: 			{text:'close'},
		carTypeLabel: 	{text:'Car category'},
		yourType	: 	{text:'Your type'},
		car1: 			{text:'Small car'},
		car2: 			{text:'Compact'},
		car3: 			{text:'Intermediate'},
		car4: 			{text:'Fullsize'},
		car5: 			{text:'Luxury car'},
		car6: 			{text:'Sports car'},
		car7: 			{text:'Mini van'},
		car8: 			{text:'Van'},
		car9: 			{text:'Truck'},
		car10: 			{text:'Suv'},
		benzinLabel:	{text:'Petrol'},
		dieselLabel:	{text:'Diesel'},
		fuelConsum: 	{text:'Consumption'},
		km100: 			{text:'l per 100 km'},
		distance: 		{text:'Distance'},
		co2Consum: 		{text:'Your CO<sub>2</sub> consumption amounts to'},
		infoText:		{text:'We ascertained the CO<sub>2</sub> consumption for each car category according to the most common vehicles per category. The consumption levels for a specific car might deviate. Please do not hesitate to contact us if any questions arise. (Ferienauto.de, Philipp G. Schwarz, Badstraße 18, 90762 Fürth, Deutschland, <a href="mailto:info@ferienauto.de">info@ferienauto.de</a>'}		
	}	
}


var fuel_cons=[26.5,29,66];


function toNumber(num)
{
	return num.replace(".","");
}

function toFormatNumbar(obj)
{
	
	if (obj.value.indexOf(",")>-1) {
		bef_point=obj.value.substr(0,obj.value.indexOf(","));
		bef_point=getTrueNumber(bef_point);
		after_point=obj.value.substr(obj.value.indexOf(",")+1);
		
		obj.value=bef_point+","+after_point;
	} else {
		obj.value=getTrueNumber(obj.value);
	}
}

function setCookie (name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}

function switchLanguage(lang) 
{
	var langObj=textes[lang];
	var cls=document.getElementById("carType").className;
	var carType=cls.substring(0,cls.indexOf(" "));
	for (var prop in langObj)
	{
		if (document.getElementById(prop) && langObj[prop].text)
		document.getElementById(prop).innerHTML=langObj[prop].text;
	}
	document.getElementById("carType").innerHTML=langObj[carType].text;
	setCookie ("co2lang",lang,cooDate,"/");
	return false
}

function init() {
	
	var lang=getCookie("co2lang");
	if (lang==null)	lang="de";

	document.getElementById("carType").className="car1 kleinwagen";
	document.getElementById("carType").innerHTML=textes[lang].car1.text;
	if (document.getElementById("car1type")) document.getElementById("car1type").checked=true;
	switchLanguage(lang);
	
	var type=getType();
	var fuel=getFuel();
	document.getElementById('L100').value=String(cars[type][fuel]).replace(".",",");
	toFormatNumbar(document.getElementById('L100'));

	
	document.getElementById('diesel').disabled=false;
	document.getElementById('benzin').disabled=false;
	document.getElementById('benzin').checked=true;
	document.getElementById('diesel').checked=false;
	document.getElementById('strecke').value="100";
	document.getElementById('verbrauch').innerHTML="0";
	calculate(document.getElementById("carType"));
}


jsHover = function() {
	var dd=document.getElementById("drop-down");
	if (dd)
	{
		dd.onmouseover=function() {  this.className+="jshover"; }
		dd.onmouseout=function() { this.className=this.className.replace("jshover", "");}
		document.getElementById("carType").onclick=showList;
		document.getElementById("arrow").onclick=showList;
		var lis = document.getElementById("list").getElementsByTagName("LI");	
		for (var i=0, len=lis.length; i<len; i++) {
			lis[i].onmouseover=function() { this.className+=" jshover"; }
			lis[i].onmouseout=function() { this.className=this.className.replace(" jshover", "");}
			lis[i].onclick=function() { 
				document.getElementById("carType").innerHTML=this.innerHTML;
				document.getElementById("carType").className=this.id+" "+this.className;
				document.getElementById("list").style.display="none";
				calculate(document.getElementById("carType"));
			}
		}
	}
}

function chooseType (obj) {
	var id=obj.value.substr(0,obj.value.indexOf(" "));
	document.getElementById("carType").innerHTML=document.getElementById(id+"type").value;
	document.getElementById("carType").className=obj.value
	calculate(document.getElementById("carType"));
}

function getType() {
	var type=document.getElementById('carType').className.replace(" jshover","");
	return type.substr(type.indexOf(" ")+1);
}

function getFuel() {
	var fuel=0;
	if (document.getElementById('diesel').checked) fuel=1
	return fuel
}

function calculate (obj) {
	var lang=getCookie("co2lang");
	if (lang==null)	lang="de";
	
	if (obj.id=="L100") {
		checkInput (obj);
		var id=document.getElementById("carType").className.substr(0,document.getElementById("carType").className.indexOf(" "));
		if (document.getElementById(id+"type")) document.getElementById(id+"type").checked=false;
		
		document.getElementById("carType").innerHTML=textes[lang].yourType.text;
		document.getElementById("carType").className="yourType selbsteingabe";
		document.getElementById('benzin').disabled=false;
		document.getElementById('diesel').disabled=false;

		
	}
	if (obj.id=="strecke") checkInput (obj);
	
	var type=getType();
	
	if (obj.id=="carType") {
		if (cars[type][0]==0) {
			document.getElementById('benzin').disabled=true;
			document.getElementById('diesel').checked=true;
		} else {
			document.getElementById('benzin').disabled=false;
		}
		if (cars[type][1]==0) {
			document.getElementById('diesel').disabled=true;
			document.getElementById('benzin').checked=true;
		} else {
			document.getElementById('diesel').disabled=false;
		}
	}
	
	var fuel=getFuel();
	
	var km=toNumber(document.getElementById('strecke').value).replace(",",".");
	
	if (type!="selbsteingabe" && type!="") {
		document.getElementById('L100').value=String(cars[type][fuel]).replace(".",",");
		result=String(fuel_cons[fuel]*cars[type][fuel]*km/1000);	
	} else {
		var L100=toNumber(document.getElementById('L100').value);
		result=String(fuel_cons[fuel]*Number(L100.replace(",","."))*km/1000);	
	}
	
	if (result.indexOf(".")>-1) {
		bef_point=result.substr(0,result.indexOf("."));
		bef_point=getTrueNumber(bef_point);
		after_point=result.substr(result.indexOf(".")+1,2);
		
		if (after_point.length<2) after_point+="0";
		
		document.getElementById('verbrauch').innerHTML=bef_point+","+after_point;
	} else {
		document.getElementById('verbrauch').innerHTML=getTrueNumber(result);
	}
	
}

function checkInput (obj) {
	obj.value=obj.value.replace(/[^0-9.,]+/,"");
	obj.value=obj.value.replace(".",",");
}

function addLoadEvent (func) {
	var oldonload = window.onload;   
	if (typeof window.onload != 'function') 
	{  window.onload = func;  } 
	else 
	{ window.onload = function() {
		oldonload(); func(); 
		} 
	}
}

function getTrueNumber(num)
{
	var newNum=num;
	for (i=num.length-3; i>=1; i=i-3)
	{
		if (i>=1)
		newNum=insertString(newNum,i,".");
	}
	return newNum
}

function insertString(mainStr,pos,insertStr)
{
	var before=mainStr.substr(0,pos);
	var after=mainStr.substr(pos);
	return before+insertStr+after;
}

function showList () {
	var list=document.getElementById('list');
	if (list.style.display=="none" || list.style.display=="")
		list.style.display="block";
	else
		list.style.display="none";
		
	var curId=document.getElementById('carType').className.replace(" jshover","");
	curId=curId.substr(0,curId.indexOf(" "));
	var lis = document.getElementById("list").getElementsByTagName("LI");	
    for (var i=0; i<lis.length; i++) {
		if (lis[i].id==curId) lis[i].style.display="none"; else lis[i].style.display="";
		
	}
}

function showInfo() {
	if (document.getElementById('popup').style.display=='none' || document.getElementById('popup').style.display=='')
		document.getElementById('popup').style.display='block'; 
	else 
		document.getElementById('popup').style.display='none'; 
	return false;
}
/*--------------------- Run ----------------------*/
addLoadEvent (jsHover);
addLoadEvent (init);

