var http_request;

function showHide( id )
{
	var div = document.getElementById(id);
	if( div.style.display == 'inline' )
	{
		div.style.display = 'none';
	}
	else
	{
		div.style.display = 'inline';
	}
}

function nextCat( nr, qs )
{
	// Validate first
	var donext = true;
	donext = validateQuestions( nr, qs );
	
	if( donext )
	{
		// Show next category in the menu and hide current
		var next = nr+1;
		document.getElementById('category_' + nr ).style.display='none';
		document.getElementById('category_' + next ).style.display='inline';
		//self.scrollTo(0,0);
		window.scroll(0,0);
	
		// Do trick for last menuitem who is longer
		if( document.getElementById('menukat_'+next).className == "klimakat last" )
		{
			document.getElementById('menukat_'+next).className = "klimakat currentkatlast";
		}
		else
		{
			document.getElementById('menukat_'+next).className = "klimakat currentkat";
		}
		document.getElementById('menukat_'+nr).className = "klimakat visitedkat";
	
		var total = document.getElementById('totalCats').value;
		var width = nr * 80;
		var oldwidth = document.getElementById('progresswidth').style.width;
		oldwidth = oldwidth.substring(0,oldwidth.length-2);
		//if( next == total) width = width + 21;
		if( width > oldwidth )
		{
			document.getElementById('progresswidth').style.width = width+"px";
			var procentage = 100 / (total-1) * nr;
			document.getElementById('progressprocent').innerHTML = parseInt(procentage);
		}
	}
}

function validateQuestions( category, nrofqs )
{
	var i = 1;
	var tmp = "";
	var tmparr = Array();
	var qval = "";
	var doval = 0;
	var valtype = 0;
	var cont = true;
	
	for( i=1; i<=parseInt(nrofqs); i++ )
	{
		// Check if we should validate, arg 0 is validate arg 1 is method
		tmp = document.getElementById('q_'+category+'_'+i+'_validate').value;
		tmparr = tmp.split('-');
		doval = tmparr[0];
		valtype = tmparr[1];
		intmin = parseInt( tmparr[2] );
		intmax = parseInt( tmparr[3] );
		
		if( doval == 1 )
		{
			qval = document.getElementById('q_'+category+'_'+i).value;

			if( valtype == 0 )
			{
				// required, no validation selected
				if( qval == "" )
				{
					cont = false;
					alert("Vennligst velg et svaralternativ!");
				}
			}
			else if( valtype == 1 )
			{
				qval = document.getElementById('q_'+category+'_'+i+'_hidden').value;
				// val number
				if( qval == "" )
				{
					cont = false;
					alert("Vennligst fyll inn svar!");
				}
				else if(!IsNumeric( qval ))
				{
					cont = false;
					alert("Verdien var ikke numerisk!");
				}
				else if( parseInt(qval) > intmax || parseInt(qval) < intmin )
				{
					cont = false;
					alert("Verdien "+parseInt(qval)+" var ikke innenfor "+intmin+" og "+intmax+" !" );
				}
			}
			else if( valtype == 2 )
			{
				// val string
				// alert("Verdien er ikke ren tekst!");
			}
		}
	}
	
	return cont;
}

function previousCat( nr )
{
	// We allow to go back to previous page
	var previous = nr-1;
	document.getElementById('category_' + nr ).style.display='none';
	document.getElementById('category_' + previous ).style.display='inline';
	//window.scroll(0,0);

	document.getElementById('menukat_'+previous).className = "klimakat currentkat";
	if( document.getElementById('menukat_'+nr).className == "klimakat currentkatlast" )
	{
		document.getElementById('menukat_'+nr).className = "klimakat last";
	}
	else
	{
		document.getElementById('menukat_'+nr).className = "klimakat visitedkat";
	}
}

function updateQ( inpname, co2, val)
{
	// Check textfield in general question for numeric value
	if(!IsNumeric(val))
	{
		alert("Verdien var ikke numerisk!");
	}
	else
	{
		var newval = parseInt(val) * parseFloat(co2);
		document.getElementById(inpname).value = newval;
	}
}

function updateG( inpname, co2, val)
{
	// Check textfield in general question for numeric value
	if(!IsNumeric(val))
	{
		alert("Verdien var ikke numerisk!");
	}
	else
	{
		var newval = parseInt(val) * parseFloat(co2);
		document.getElementById(inpname).value = newval;
	}
}


function IsNumeric( sText )
{
	// Validate nrs		
   	var ValidChars = "0123456789.";
   	var IsNumber=true;
   	var Char;
 
   	for (i = 0; i < sText.length && IsNumber == true; i++) 
   	{ 
    	Char = sText.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
      	{
        	IsNumber = false;
      	}
   	}
   	return IsNumber;
}

function showCars( maks, count, qnr, catnr )
{
	var i = 0;

	// Hide all
	for( i=0; i<parseInt(maks); i++ )
	{	
		document.getElementById('q_'+catnr+'_'+qnr+'_'+i+'_car').style.display = "none";
	}
	
	// Show chosen
	for( i=0; i<parseInt(count); i++ )
	{	
		document.getElementById('q_'+catnr+'_'+qnr+'_'+i+'_car').style.display = "inline";
	}

	// Reset value for de-selected cars
	for( i=parseInt(count); i<parseInt(maks); i++ )
	{	
		document.getElementById('q_'+catnr+'_'+qnr+'_'+i).value = 0;
	}

	// Recalculate total
	var total = 0;
	var tmp = 0;
	for( i=0; i<parseInt(count); i++ )
	{
		tmp = document.getElementById('q_'+catnr+'_'+qnr+'_'+i).value;	
		total = total + parseFloat(tmp);
	}
	document.getElementById('q_'+catnr+'_'+qnr).value = parseFloat(total);

	document.getElementById('q_'+catnr+'_'+qnr+'_chosennrofcars').value = count;
}

function calcCars( catnr, qnr, ant, maks )
{
	var km = document.getElementById('q_'+catnr+'_'+qnr+'_'+ant+'_km').value;
	var intmax = document.getElementById('q_'+catnr+'_'+qnr+'_maxkm').value;
	var total = 0;
	
	if(!IsNumeric(km))
	{
		alert("Vennligst oppgi Km som tall!");
	}
	else if ( km > parseInt(intmax) )
	{
		alert( "Maksimum antall km er "+intmax+" !" );
	}
	else
	{
		var lm = document.getElementById('q_'+catnr+'_'+qnr+'_'+ant+'_lm').value;
		var fuel = document.getElementById('q_'+catnr+'_'+qnr+'_'+ant+'_fuel').value;
		
		// Check if chosen fuel and l/m
		if( lm!="" && fuel!="" )
		{
			var val = parseInt(km) * ( parseFloat(lm) / 10 ) * parseFloat(fuel);
			document.getElementById('q_'+catnr+'_'+qnr+'_'+ant).value = parseInt(val);

			var total = 0;
			var tmp = 0;
			var nrofcars = document.getElementById('q_'+catnr+'_'+qnr+'_chosennrofcars').value;
			
			for(var i=0;i<parseInt(nrofcars);i++)
			{
				tmp = document.getElementById('q_'+catnr+'_'+qnr+'_'+i).value;	
				if( parseInt(tmp) > 0 )
				{
					total = total + parseFloat(tmp);
				}
			}
			document.getElementById('q_'+catnr+'_'+qnr).value = parseFloat(total);
		}
	}
}

function enablePower( enable, disable )
{
	// Switch disabled selections for powerchoice
	document.getElementById(enable).disabled = false;
	document.getElementById(disable).disabled = true;

	document.getElementById('kwh').value = 0;
	document.KlimatestForm.power.selectedIndex = 0;
}

function calcHouse()
{
		// The horror, the horror...
		// Utslipp fra hovedoppvarming // m2 * kwh_heat * heat_factor * no_wood_factor * power_factor
		var m2 = document.getElementById('m2').value;
		var kwh_heat = document.getElementById('kwh_heat').value;
		var heat_factor = document.getElementById('heat_factor').value;
		var no_wood_factor = document.getElementById('no_wood_factor').value;
		var power_factor = document.getElementById('power_factor').value;

		// Vedfyring // m2 x kw_heat x wood_co2 x wood_factor
		var wood_co2 = document.getElementById('wood_co2').value;
		var wood_factor = document.getElementById('wood_factor').value;

		// Stromforbruk utenom oppvarming // m2 * kwh_other * el * power_factor
		var kwh_other = document.getElementById('kwh_other').value;
		var el = document.getElementById('el').value;

		var mainheat = parseInt(m2) * parseFloat(kwh_heat) * parseFloat(heat_factor) * parseFloat(no_wood_factor);
		var woodheat = parseInt(m2) * parseFloat(kwh_heat) * parseFloat(wood_co2) * parseFloat(wood_factor);

		var heat = mainheat + woodheat;
		
		// Skal stromforbruk regnes ut eller er det oppgitt
		var given_kwh = document.getElementById('given_kwh').value;
		if(parseInt(given_kwh) != 0)
		{
			var other = parseFloat(given_kwh);
		}
		else
		{
			var other = parseInt(m2) * parseFloat(kwh_other) * parseFloat(el) * parseFloat(power_factor);
		}
		
		var total = heat + other;
		
		document.getElementById('heat').value = heat;
		document.getElementById('other').value = other;
		//document.getElementById('total').value = total;
		var totalid = document.getElementById('totalid').value;
		document.getElementById(totalid).value = total;
}

function updateM2( m2, maxm2 )
{
	// Make sure given m2 is numbers
	if(!IsNumeric( m2 ))
	{
		alert("m2 var ikke numerisk!");
	}
	else if ( parseInt(m2) > parseInt(maxm2) )
	{
		alert("Maksimum m2 er "+maxm2+" !");
	}
	else
	{
		document.getElementById('m2').value = parseInt(m2);
		calcHouse();
	}
}

function updateKwhs()
{
	// Adjust kwh value for heat and consumption based on house or apartment values
	var kwh_heat = 0;
	var kwh_other = 0;
	var radios = document.KlimatestForm.kwh_heat_radio;
	var radioLen = radios.length;
	for(var i = 0; i < radioLen; i++) 
	{
		if(radios[i].checked) 
		{
			kwh_heat = parseInt(radios[i].value);
			kwh_other = document.getElementById('kwh_other_'+i).value;
			kwh_other = parseInt(kwh_other);
		}
	}
	document.getElementById('kwh_other').value = kwh_other;
	document.getElementById('kwh_heat').value = kwh_heat;
	calcHouse();
}

function updateHeatfactor()
{
	// Adjust factor for chosen heatsource el./oil/ etc.
	var radios = document.KlimatestForm.heat_type;
	var radioLen = radios.length;
	var heat_factor = 0;
	for(var i = 0; i < radioLen; i++) 
	{
		if(radios[i].checked) 
		{
			heat_factor = radios[i].value;
		}
	}
	document.getElementById('heat_factor').value = parseFloat(heat_factor);
	calcHouse();
}

function enableWood()
{
	// zeroing the woodvalues first
	document.getElementById('wood_factor').value = 0;
	document.getElementById('no_wood_factor').value = 1;

	// Enable buttons
	var radios = document.KlimatestForm.wood_type;
	var radioLen = radios.length;
	for(var i = 0; i < radioLen; i++) 
	{
		if(radios[i].disabled == true) 
		{
			radios[i].disabled = false;
		}
		else
		{
			radios[i].disabled = true;
			radios[i].checked = false;
		}
	}
	calcHouse();
}

function updateWoodfactor()
{
	// Woodusage some, medium or alot   
	var radios = document.KlimatestForm.wood_type;
	var radioLen = radios.length;
	var wood_factor = 0;
	for(var i = 0; i < radioLen; i++) 
	{
		if(radios[i].checked) 
		{
			wood_factor = radios[i].value;
		}
	}
	document.getElementById('wood_factor').value = parseFloat(wood_factor);
	document.getElementById('no_wood_factor').value = 1 - parseFloat(wood_factor);
	calcHouse();
}

function updatePowerfactor( factor )
{
	document.getElementById('power_factor').value = parseFloat(factor);
	document.getElementById('given_kwh').value = 0;
	calcHouse();
}

function updateGivenpower( kwh, maxkwh )
{
	// If you know how much power you use
	if(!IsNumeric( kwh ))
	{
		alert("kwh var ikke numerisk!");
	}
	else if ( parseInt(kwh) > parseInt(maxkwh) )
	{
		alert("Maksimum kwh er "+maxkwh+" !");
	}
	else
	{
		document.getElementById('power_factor').value = 1;
		var el = document.getElementById('el').value;
		var givenpower = parseFloat(el) * parseInt( kwh);
		document.getElementById('given_kwh').value = parseFloat(givenpower);
		calcHouse();
	}
}

function validatePerson()
{
	// Make sure form is completed..
	// Nr. of people in the household is needed for calculating
	var household = document.getElementById('household').value;
	var county = document.getElementById('county').value;
	var gender = document.getElementById('gender').value;

	if( !household || !IsNumeric( household ) )
	{
		alert("Vennligst oppgi antall personer i husholdningen!");
		return false;
	}

	if( household > 0 && household < 100 )
	{
	}
	else
	{
		alert("Antall personer i husholdningen er ukorrekt!");
		return false;
	}

	if( !county || !IsNumeric( county ) )
	{
		alert("Vennligst oppgi postnr!");
		return false;
	}

	if( county > 0 && county < 10000 )
	{
	}
	else
	{
		alert("Postnr er ukorrekt!");
		return false;
	}
	
	if( !gender )
	{
		alert("Vennligst oppgi kj\370nn!");
		return false;
	}
	
	calculateTotalScore();

	return true;
	// test
	document.KlimatestForm.submit();
}


function checkZip( postnr )
{
	
	if(postnr.length == 4)
	{
		http_request = false;
	
		var url = '/lg/layout/set/ajax/vztklimatest/checkzip/';
		var parameters = 'postnr='+postnr;
	
		if (window.XMLHttpRequest) 
		{ // Mozilla, Safari,...
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) 
			{
				// set type accordingly to anticipated content type
				//http_request.overrideMimeType('text/xml');
				http_request.overrideMimeType('text/html');
			}
		} 
		else if (window.ActiveXObject) 
		{ // IE
			try 
			{
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e)
			{
				try 
				{
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} 
				catch (e) {}
			}
		}
		if (!http_request) 
		{
			alert('Kan ikke opprette XMLHTTP instansen. Bytt browser');
			return false;
		}
		
		http_request.onreadystatechange = doPHP;
		http_request.open('POST', url, true);
		http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		http_request.setRequestHeader("Content-length", postnr.length);
		http_request.setRequestHeader("Connection", "close");
		http_request.send(parameters);
	}
}

function doPHP()
{
  	if ( http_request.readyState == 4 ) 
	{
		if ( http_request.status == 200 )
	 	{
			result2 = http_request.responseText;
			result = result2.substring(0,1);
			
			if ( result == 1 )
			{
				//foundzip = true;
			}
			else
			{
				alert("Postnummeret finnes ikke!");
				//foundzip = false;
			}
		}	
  	}
}

function calculateTotalScore()
{
	// Loop all questions and calculate them
	// Calculate per category for presenting values to user
	
	var totalCats = 0;
	var qCount = 0;
	var i = 1;
	var j = 1;
	var val = 0;
	var katVal = 0;
	var katNodeid = 0;
	var katName = 0;
	var katStr = "";
	var katTotalStr = "";
	var totalVal = 0;
	var household = 1;
	var dividebyhousehold = 0;
	var doaddkats = 0;
	
	household = document.getElementById('household').value;
	totalCats = document.getElementById('totalCats').value;
	doaddkats = parseInt(totalCats) - 1;
	
	for( i=1; i<parseInt(totalCats); i++ )
	{
		qCount = document.getElementById('cat_'+i+'_qcount').value;
		katVal = 0;

		for( j=1; j<=parseInt(qCount); j++ )
		{
			val = document.getElementById('q_'+i+'_'+j).value;
			dividebyhousehold = document.getElementById('q_'+i+'_'+j+'_household').value;
			if( dividebyhousehold == 1 )
			{
				val = parseFloat(val) / parseInt(household);
			}
			katVal = katVal + parseFloat(val);
		}
		totalVal = totalVal + katVal;
		if( doaddkats >= i )
		{
			katNodeid = document.getElementById('cat_'+i+'_nodeid').value;
			katName = document.getElementById('cat_'+i+'_name').value;
			katStr = katNodeid + ';' + katName + ';' + katVal + ';;';
			katTotalStr = katTotalStr + katStr;
		}
	}
	// Sett hidden score values
	document.getElementById('hiddentotalscore').value = totalVal;
	document.getElementById('hiddencatscore').value = katTotalStr;
	
	//alert(katTotalStr);
}

function updateChoices( choice )
{
	var choices = document.getElementById('hiddenchoices').innerHTML;
	var choicesarr = choices.split(';;');
	var choicescount = choicesarr.length;
	var foundchoice = false;
	var choicesstr = "";

	if( choicesarr[0] == "" )
	{
		choicescount = 0;
	}

	for( var i=0; i<choicescount; i++ )
	{
		if( choicesarr[i] == choice )
		{
			foundchoice = true;
		}
	}
	
	if( foundchoice )
	{
		for( var i=0; i<choicescount; i++ )
		{
			if( choicesarr[i] != "" )
			{
				if( choicesarr[i] != choice )
				{
					choicesstr = choicesstr+choicesarr[i]+";;";
				}
			}
		}
	}
	else
	{
		if( choicescount > 0 )
		{
			choicesstr = choices+choice+";;";
		}
		else
		{
			choicesstr = choice+";;";
		}
	}
	document.getElementById('hiddenchoices').innerHTML = choicesstr;
} 

function findPosX(obj)
{
var curleft = 0;
if(obj.offsetParent)
	while(1) 
	{
	  curleft += obj.offsetLeft;
	  if(!obj.offsetParent)
		break;
	  obj = obj.offsetParent;
	}
else if(obj.x)
	curleft += obj.x;
return curleft;
}

function findPosY(obj)
{
var curtop = 0;
if(obj.offsetParent)
	while(1)
	{
	  curtop += obj.offsetTop;
	  if(!obj.offsetParent)
		break;
	  obj = obj.offsetParent;
	}
else if(obj.y)
	curtop += obj.y;
return curtop;
}


function genWidth()
{
	var lastSep = document.getElementById( 'sep6' );
	var lastSepX = findPosX( lastSep );
	
	var toppmenu = document.getElementById( 'toppmenu' );
	var toppmenuX = findPosX( toppmenu );
	
	var lastSepXNew = lastSepX-toppmenuX;
	var newWidth = 905-lastSepXNew;
	document.getElementById( 'menuitem7' ).style.width = newWidth + 'px';
	
}

function toggleLBox( div )
{
	if( document.getElementById(div).style.display == "none" )
	{
		document.getElementById(div).style.display = "block";
		document.getElementById('underlay').style.display='block';
	}
	else
	{
		document.getElementById(div).style.display = "none";
		document.getElementById('underlay').style.display='none';
	}
}

