function set_cookie ( cookie_name, cookie_value,
    lifespan_in_days, valid_domain )
{
    // http://www.thesitewizard.com/javascripts/cookies.shtml
    var domain_string = valid_domain ?
                       ("; domain=" + valid_domain) : '' ;
    document.cookie = cookie_name +
                       "=" + encodeURIComponent( cookie_value ) +
                       "; max-age=" + 60 * 60 *
                       24 * lifespan_in_days +
                       "; path=/" + domain_string ;
}

function get_cookie ( cookie_name )
{
    // http://www.thesitewizard.com/javascripts/cookies.shtml
    var cookie_string = document.cookie ;
    if (cookie_string.length != 0) {
        var cookie_value = cookie_string.match (
                        '(^|;)[\s]*' +
                        cookie_name +
                        '=([^;]*)' );
        return decodeURIComponent ( cookie_value[2] ) ;
    }
    return '' ;
}

function delete_cookie ( cookie_name, valid_domain )
{
    // http://www.thesitewizard.com/javascripts/cookies.shtml
    var domain_string = valid_domain ?
                       ("; domain=" + valid_domain) : '' ;
    document.cookie = cookie_name +
                       "=; max-age=0; path=/" + domain_string ;
}


/*
This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Original:  Scriptbreaker (pieterpareit@hotmail.com)
Original:  http://www24.brinkster.com/scriptbreaker/home.htm)
*/
var counter=0;

function deleteRow(r)
{
	var indx=document.getElementById('row'+ r).rowIndex;

	document.getElementById("myTable").getElementsByTagName("TBODY")[0].deleteRow(indx);
}

var husno = 1;
var brfno = 1;


function getHelp(taxunit)
{
	var helptext;

	if (taxunit==1)
	{
		if (document.getElementById("help1")!=null) return;  // already set
		helptext='<span class="helptext" id="help1"><h1>Hus</h1>'+
			'<h2>Namn</h2>Valfritt namn på huset (behöver inte fyllas i).'+
			'<h2>Byggår</h2>Ange husets byggår. Är huset inte färdigbyggd betalar du statlig fastighetskatt på 1 procent. De första fem åren betalar du ingen fastighetsavgift, sedan betalar du halv fastighetsavgift på 0.375 procent och när huset är tio år eller äldre betalar du full fastighetsavgift på 0.75 procent (dock max 6000 kronor)'+
			'<h2>Husets taxeringsvärde</h2>Ange husets taxeringsvärde här. Taxeringsvärdet har du antingen från ditt fastighetstaxeringsbesked från skatteverket eller så kan du hämta det på <a href="http://minfastighet.lantmateriet.se" target="_NEW">"Min Fastighet"</a> som är en jättebra tjänst från lanmäteriverket. Använd din e-legitimation för att logga in.' +
			'<h2>Markens taxeringsvärde</h2>Ange markens taxeringsvärde här. Om du har flera hus på samma tomt så skall du ange ange markens hela värde på det huset som har högst taxeringsvärde. Ange noll kronor på alla andra hus.'+
			'<h2>Ägarandel</h2>Ange hur mycket av denna taxeringsenhet som du äger i procent'+
			'<h2>Raddera rad</h2>Klicka på krysset för att radera denna rad.'
		;
	} else {
		if (document.getElementById("help2")!=null) return;  // already set
		helptext='<span class="helptext2" id="help1"><h1>Lägenhet</h1>'+
			'<h2>Namn</h2>Valfritt namn på lägenheten (behöver inte fyllas i).'+
			'<h2>Byggår</h2>Ange bostasrättsföreningens eller hyresfastighetens byggår. De första fem åren betalar du ingen fastighetsavgift, sedan betalar du halv fastighetsavgift på 0.2 procent och när huset är tio år eller äldre betalar du full fastighetsavgift på 0.4 procent (dock max 1200 kronor)'+
			'<h2>Husets taxeringsvärde</h2>Ange bostadsrättsföreningens eller hyreskgästföreninges taxeringsvärde här. Taxeringsvärdet hittar du i årsredovisningen för din förening. Kontakta din förening eller hyresvärd om du är osäker.' +
			'<h2>Markens taxeringsvärde</h2>Ange markens takeringsvärde här om den anges separat i årsredovisningen annars skriv 0 kronor.'+
			'<h2>Andelstal</h2>Ange hur stor del just din lägenhet utgör av hela bostadsrättsföreningen eller hyresfastigheten. Detta står på ditt köpekontrakt för din bostadsrätt. Kontakta din förening eller hyresvärd om du är osäker. Använd . som decimalpunkt. '+
			'<h2>Ägarandel</h2>Ange hur mycket av denna taxeringsenhet som du äger eller hyr i procent.'+
			'<h2>Raddera rad</h2>Klicka på krysset för att radera denna rad.'
		;
	}
	if (document.getElementById('helpon').checked) // only if help is on
		document.getElementById('myspan').innerHTML = helptext; 
}

function addRowToTable(id, taxunit, usetestdata)
{

	function addOption(choice, value)
	{
		var option1 = document.createElement("option");
		option1.setAttribute("value", value);
		option1.appendChild(document.createTextNode(choice));
		input1.appendChild(option1);
		return option1;
	}

	function addTextInput(name, defaultvalue, size, style)
	{
		td1 = document.createElement("TD");
		var input1 = document.createElement("input");
		input1.setAttribute("type", "text");
		input1.setAttribute("name", name);
		input1.setAttribute("value", defaultvalue);
		input1.setAttribute("size", size);
		input1.setAttribute("style", style);
		td1.appendChild(input1);
		return td1;
	}

	counter++;
    var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
    var row = document.createElement("TR");
	row.setAttribute("id", "row"+counter);
	row.setAttribute("onclick", "getHelp("+taxunit+")");
	var td1 = document.createElement("TD");
	switch (taxunit)
	{
	case  1: // hus
		td1.appendChild(document.createTextNode("Hus"));
		row.appendChild(td1);
		row.appendChild(addTextInput("ahus"+husno, "Hus "+ husno, 20, "text-align:left;"));
		td1 = document.createElement("td");
		input1 = document.createElement("select");
		input1.setAttribute("name", "housebuildyear"+husno);
		input1.appendChild(addOption("År 1999 el. äldre", 1));	
		input1.appendChild(addOption("År 2000-2004", 2));	
		input1.appendChild(addOption("År 2005-2009", 3));	
		input1.appendChild(addOption("Ej färdigbyggt", 4));	
		td1.appendChild(input1);
		row.appendChild(td1);
		row.appendChild(addTextInput("hustaxvalue"+husno, usetestdata?Math.round(Math.random()*600+1)*10000:"", 9));
		row.appendChild(addTextInput("hustomttaxvalue"+husno, usetestdata?Math.round(Math.random()*200+1)*10000:"", 9));
		td1 = document.createElement("TD");
		var input1 = document.createTextNode("&nbsp");
		row.appendChild(td1);
		row.appendChild(addTextInput("husowerpart"+husno, "100", 3));
		husno++;
		break;
	case 2: 
		td1.appendChild(document.createTextNode("Lägenhet"));
		row.appendChild(td1);
		row.appendChild(addTextInput("abrf"+brfno, "Lägenhet "+ brfno, 20, "text-align:left;"));
		td1 = document.createElement("td");
		input1 = document.createElement("select");
		input1.setAttribute("name", "brfbuildyear"+brfno);
		input1.appendChild(addOption("År 1999 el. äldre", 1));	
		input1.appendChild(addOption("År 2000-2004", 2));	
		input1.appendChild(addOption("År 2005-2009", 3));	
		td1.appendChild(input1);
		row.appendChild(td1);
		row.appendChild(addTextInput("brftaxvalue"+brfno, usetestdata?Math.round(Math.random()*600+1)*100000:"", 9));
		row.appendChild(addTextInput("brftomttaxvalue"+brfno, usetestdata?Math.round(Math.random()*200+1)*100000:"",9));
		row.appendChild(addTextInput("andeltal"+brfno, usetestdata?Math.round(Math.random()*600+1)/10000:"", 6));
		row.appendChild(addTextInput("brfowerpart"+brfno, "100", 3));
		brfno++;
		break;


	default:
		td1.appendChild(document.createTextNode("default"));
	
	}
    td1 = document.createElement("TD");
	td1.setAttribute("style", "text-align:center;");
	var myLink = document.createElement("A");
	myLink.setAttribute("href", "javascript:deleteRow("+counter+")");
	myLink.appendChild(document.createTextNode("X"));
	td1.appendChild(myLink);
    row.appendChild(td1);
	tbody.appendChild(row);
}

function removeRowFromTable(id, rown)
{
	var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
	var lastRow = tbody.rows.length;
	if (lastRow > 2 && rown==null) tbody.deleteRow(lastRow - 1);
	else tbody.deleteRow(this.rowIndex);
}


function addRowListeners() {
/* Use this function as a common event listener for each row. */
	function showRowNum() {
	/* Check that the rowIndex property is
	* supported before trying to use it.
	*/
	if('number' == typeof this.rowIndex) {
		removeRowFromTable('myTable', this.rowIndex)
		}
	}
	/* Check that the getElementById method is
	* supported before trying to use it.
	*/
	if(document.getElementById) {
		/* Change the string, 'myTable', to reflect the actual id. */
		var table = document.getElementById('myTable'), rows;
		/* Ensure a reference was obtained and
		* that we can access the rows.
		*/
		if(table && (rows = table.rows)) {
			/* Add the listener to each row in the table. */
			for(var i = 0, n = rows.length; i < n; ++i) {
				rows[i].onclick = showRowNum;
			}
		}
	}
}
var http_request = false;
function makePOSTRequest(url, parameters) {
	http_request = false;
	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('Cannot create XMLHTTP instance');
		 return false;
	}
  
	  http_request.onreadystatechange = alertContents;
	  http_request.open('POST', url, true);
	  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	  http_request.setRequestHeader("Content-length", parameters.length);
	  http_request.setRequestHeader("Connection", "close");
	  http_request.send(parameters);
}

function alertContents() {
  if (http_request.readyState == 4) {
	 if (http_request.status == 200) {
		//alert(http_request.responseText);
		result = http_request.responseText;
		document.getElementById('myspan').innerHTML = result;            
	 } else {
		alert('There was a problem with the request.');
	 }
  }
}

function get(obj) {
  var poststr = "mytextarea1=" + encodeURI( document.getElementById("mytextarea1").value ) +
				"&mytextarea2=" + encodeURI( document.getElementById("mytextarea2").value );
  makePOSTRequest('post.php', poststr);
}
var http_request = false;
function makePOSTRequest(url, parameters) {
  http_request = false;
  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('Cannot create XMLHTTP instance');
	 return false;
  }
  
  http_request.onreadystatechange = alertContents;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);
}

function alertContents() {
  if (http_request.readyState == 4) {
	 if (http_request.status == 200) {
		//alert(http_request.responseText);
		result = http_request.responseText;
		document.getElementById('myspan').innerHTML = result;            
	 } else {
		alert('There was a problem with the request.');
	 }
  }
}

function get(obj) {
  var poststr = createString();
  makePOSTRequest('servercode.php', poststr);
 // alert(poststr);
}
function strncmp ( str1, str2, lgth ) {
	// http://kevin.vanzonneveld.net
	// +      original by: Waldo Malqui Silva
	// +         input by: Steve Hilder
	// +      improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +       revised by: gorthaur
	// + reimplemented by: Brett Zamir
	// *     example 1: strncmp('aaa', 'aab', 2);
	// *     returns 1: 0
	// *     example 2: strncmp('aaa', 'aab', 3 );
	// *     returns 2: -1

	var s1 = (str1+'').substr(0, lgth);
	var s2 = (str2+'').substr(0, lgth);

	return ( ( s1 == s2 ) ? 0 : ( ( s1 > s2 ) ? 1 : -1 ) );
}

function createString() {
	var str = "";
	var x=document.getElementsByTagName("input");
	var y=document.getElementsByTagName("select");
	j=0;
	for (var i=0; i<x.length; i++)
	{
		if (i>0) {
			str+="&";
			if (strncmp(x[i-1].name, "abrf", 4)==0 || strncmp(x[i-1].name, "ahus", 4)==0) // previous was husname
			{
				str+=y[j].name + "=" +encodeURI( y[j][y[j].selectedIndex].value)+"&";
				j++;
			}
		}
		str+=x[i].name + "=" +encodeURI( x[i].value);
	}
//		alert(str);
	return str;

}

