var bokstaver = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function koda(indata) {
	var utdata = "";
	var tecken1, tecken2, tecken3;
	var kod1, kod2, kod3, kod4;
	var i = 0;

	do {
		tecken1 = indata.charCodeAt(i++);
		tecken2 = indata.charCodeAt(i++);
		tecken3 = indata.charCodeAt(i++);

		kod1 = tecken1 >> 2;
		kod2 = ((tecken1 & 3) << 4) | (tecken2 >> 4);
		kod3 = ((tecken2 & 15) << 2) | (tecken3 >> 6);
		kod4 = tecken3 & 63;

		if (isNaN(tecken2)) {
			kod3 = kod4 = 64;
		} else if (isNaN(tecken3)) {
			kod4 = 64;
		}

		output = output + bokstaver.charAt(kod1) + bokstaver.charAt(kod2)
				+ bokstaver.charAt(kod3) + bokstaver.charAt(kod4);
	} while (i < indata.length);

	return utdata;
}

function avkoda(indata) {
	var utdata = "";
	var tecken1, tecken2, tecken3;
	var kod1, kod2, kod3, kod4;
	var i = 0;

	indata = indata.replace(/[^A-Za-z0-9\+\/\=]/g, "");

	do {
		kod1 = bokstaver.indexOf(indata.charAt(i++));
		kod2 = bokstaver.indexOf(indata.charAt(i++));
		kod3 = bokstaver.indexOf(indata.charAt(i++));
		kod4 = bokstaver.indexOf(indata.charAt(i++));

		tecken1 = (kod1 << 2) | (kod2 >> 4);
		tecken2 = ((kod2 & 15) << 4) | (kod3 >> 2);
		tecken3 = ((kod3 & 3) << 6) | kod4;

		utdata = utdata + String.fromCharCode(tecken1);

		if (kod3 != 64) {
			utdata = utdata + String.fromCharCode(tecken2);
		}
		if (kod4 != 64) {
			utdata = utdata + String.fromCharCode(tecken3);
		}
	} while (i < indata.length);

	return utdata;
}

function ajax(metod, url, lage, visa_data, laddningstext, element) {
	var httpdata = null;

	if (window.XMLHttpRequest) {
		try {
			httpdata = new XMLHttpRequest();
		} catch (e) {
			httpdata = false;
		}
	} else {
		if (window.ActiveXObject) {
			try {
				httpdata = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					httpdata = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
					httpdata = false;
				}
			}
		}
	}

	if (visa_data == true) {
		httpdata.onreadystatechange = function() {
			if (laddningstext != "" && laddningstext != null) {
				document.getElementById(element).innerHTML = laddningstext;
			}
			if (httpdata.readyState == 4) {
				if (httpdata.status == 200) {
					document.getElementById(element).innerHTML = avkoda(unescape(httpdata.responseText));
				} else {
					document.getElementById(element).innerHTML = "Åtgärden kunde inte utföras.";
				}
			}
		}
	}

	httpdata.open(metod, url, lage);
	httpdata.setRequestHeader("If-Modified-Since",
			"Sat, 1 Jan 2000 00:00:00 GMT");
	httpdata.send(null);

	if (visa_data != true) {
		return avkoda(unescape(httpdata.responseText));
	} else {
		return true;
	}
}

function fokusera(element, typ) {
	if (typ == "rodmarkera") {
		document.getElementById(element).style.border = '1px solid #dd0000';
	}
	document.getElementById(element).focus();
}

function popup(url, fonsternamn, bredd, hojd) {
	var x = parseInt(window.screen.width) / 2 - (bredd / 2);
	var y = parseInt(window.screen.height) / 2 - (hojd / 2);
	var popup = window.open(url, fonsternamn, 'left=' + x + ',top=' + y + ',toolbar=no,menubar=no,location=no,resizable=no,status=no,width='	+ bredd + ',height=' + hojd + ',scrollbars=yes');
}

markerad = false;
function markera(formular) {
	var aa = document.getElementById(formular);
	if (markerad == false) {
		markerad = true
	} else {
		markerad = false
	}

	for ( var i = 0; i < aa.elements.length; i++) {
		aa.elements[i].checked = markerad;
	}
}

function urlencode(str) {
	// http://kevin.vanzonneveld.net
	// + original by: Philip Peterson
	// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// + input by: AJ
	// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// % note: info on what encoding functions to use from:
	// http://xkr.us/articles/javascript/encode-compare/
	// * example 1: urlencode('Kevin van Zonneveld!');
	// * returns 1: 'Kevin+van+Zonneveld%21'
	// * example 2: urlencode('http://kevin.vanzonneveld.net/');
	// * returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
	// * example 3:
	// urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
	// * returns 3:
	// 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'

	var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];
	var ret = str.toString();

	var replacer = function(search, replace, str) {
		var tmp_arr = [];
		tmp_arr = str.split(search);
		return tmp_arr.join(replace);
	};

	// The histogram is identical to the one in urldecode.
	histogram['!'] = '%21';
	histogram['%20'] = '+';

	// Begin with encodeURIComponent, which most resembles PHP's encoding
	// functions
	ret = ret.replace("/", "%_");
	ret = encodeURIComponent(ret);

	for (search in histogram) {
		replace = histogram[search];
		ret = replacer(search, replace, ret) // Custom replace. No regexing
	}

	// Uppercase for full PHP compatibility
	return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
		return "%" + m2.toUpperCase();
	});

	return ret;
}

function visa_dolj(css_id) {
	if (document.getElementById(css_id).style.display == '') {
		document.getElementById(css_id).style.display = 'none';
	} else {
		document.getElementById(css_id).style.display = '';
	}
	return true;
}

function hamta_statistik() {
	new Ajax.Request(
			"/ajax/statistik/",
			{
				onSuccess : function(transport) {
					document.getElementById('besoksstatistik').innerHTML = transport.responseText;
				}
			});
}

function hamta_kommentarsinfo() {
	new Ajax.Request(
			"/ajax/kommentarsinfo/",
			{
				onSuccess : function(transport) {
					var kommentarsinfo = transport.responseText;
					if (kommentarsinfo != "") {
						kommentarsinfo = kommentarsinfo.split("|");
						document.getElementById('signatur').value = kommentarsinfo[0];
						document.getElementById('url').value = kommentarsinfo[1];
						document.getElementById('spara').checked = true;
					}
				}
			});
}

function enterpost(evt, formular) {
	var char_code = (evt.which) ? evt.which : event.keyCode
	if (char_code == "13") {
		document.getElementById(formular).submit();
	}
}

function kodstatus(kod) {
	new Ajax.Request(
			"/ajax/sakerhetskod/kod-" + kod,
			{
				onSuccess : function(transport) {
					if (transport.responseText == "OK!") {
						document.getElementById('kodstatus').innerHTML = ":-)";
					} else {
						document.getElementById('kodstatus').innerHTML = "";
					}
				}
			});
}

function bildbeskrivning(filnamn) {
	filnamn = filnamn.replace("/bildbeskrivning/filnamn-", "");
	var bildbeskrivning = "";
	new Ajax.Request("/ajax/bildbeskrivning/filnamn-" + filnamn, {
				asynchronous: false,
				onSuccess : function(transport) {
					bildbeskrivning = transport.responseText;
				}
			});

	return bildbeskrivning;
}