var checkboxHeight = "18";
var radioHeight = "18";
var selectWidth = "113";

/* No need to change anything after this */

document.write('<style type="text/css">input.styled { display: none; } select.styled { position: relative; width: ' + selectWidth + 'px; opacity: 0; z-index: 5; }</style>');

var Custom = {
	init: function() {
		var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active;
		for(a = 0; a < inputs.length; a++) {
			if((inputs[a].type == "checkbox" || inputs[a].type == "radio") && inputs[a].className == "styled") {
				span[a] = document.createElement("span");
				span[a].className = inputs[a].type;

				if(inputs[a].checked == true) {
					if(inputs[a].type == "checkbox") {
						position = "0 -" + (checkboxHeight*2) + "px";
						span[a].style.backgroundPosition = position;
					} else {
						position = "0 -" + (radioHeight*2) + "px";
						span[a].style.backgroundPosition = position;
					}
				}
				inputs[a].parentNode.insertBefore(span[a], inputs[a]);
				inputs[a].onchange = Custom.clear;
				span[a].onmousedown = Custom.pushed;
				span[a].onmouseup = Custom.check;
				document.onmouseup = Custom.clear;
			}
		}
		inputs = document.getElementsByTagName("select");
		for(a = 0; a < inputs.length; a++) {
			if(inputs[a].className == "styled") {
				option = inputs[a].getElementsByTagName("option");
				active = option[0].childNodes[0].nodeValue;
				textnode = document.createTextNode(active);
				for(b = 0; b < option.length; b++) {
					if(option[b].selected == true) {
						textnode = document.createTextNode(option[b].childNodes[0].nodeValue);
					}
				}
				span[a] = document.createElement("span");
				span[a].className = "select";
				span[a].id = "select" + inputs[a].name;
				span[a].appendChild(textnode);
				inputs[a].parentNode.insertBefore(span[a], inputs[a]);
				inputs[a].onchange = Custom.choose;
			}
		}
	},
	pushed: function() {
		element = this.nextSibling;
		if(element.checked == true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 -" + checkboxHeight*3 + "px";
		} else if(element.checked == true && element.type == "radio") {
			this.style.backgroundPosition = "0 -" + radioHeight*3 + "px";
		} else if(element.checked != true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 -" + checkboxHeight + "px";
		} else {
			this.style.backgroundPosition = "0 -" + radioHeight + "px";
		}
	},
	check: function() {
		element = this.nextSibling;
		if(element.checked == true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 0";
			element.checked = false;
		} else {
			if(element.type == "checkbox") {
				this.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
			} else {
				this.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
				group = this.nextSibling.name;
				inputs = document.getElementsByTagName("input");
				for(a = 0; a < inputs.length; a++) {
					if(inputs[a].name == group && inputs[a] != this.nextSibling) {
						inputs[a].previousSibling.style.backgroundPosition = "0 0";
					}
				}
			}
			element.checked = true;
		}
	},
	clear: function() {
		inputs = document.getElementsByTagName("input");
		for(var b = 0; b < inputs.length; b++) {
			if(inputs[b].type == "checkbox" && inputs[b].checked == true && inputs[b].className == "styled") {
				inputs[b].previousSibling.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
			} else if(inputs[b].type == "checkbox" && inputs[b].className == "styled") {
				inputs[b].previousSibling.style.backgroundPosition = "0 0";
			} else if(inputs[b].type == "radio" && inputs[b].checked == true && inputs[b].className == "styled") {
				inputs[b].previousSibling.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
			} else if(inputs[b].type == "radio" && inputs[b].className == "styled") {
				inputs[b].previousSibling.style.backgroundPosition = "0 0";
			}
		}
	},
	choose: function() {
		option = this.getElementsByTagName("option");
		for(d = 0; d < option.length; d++) {
			if(option[d].selected == true) {
				document.getElementById("select" + this.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue;
			}
		}
	}
}
window.onload = Custom.init;


/* Detta script finns att hämta på http://www.jojoxx.net och
   får användas fritt så länge som dessa rader står kvar. */

function gfxSCheckboxToggle(checkboxobj,imgobj,offSrc,onSrc)
{
	if (!offSrc)
	{
	var offSrc = '/_img/small_checkbox_0.gif';
	}
	if (!onSrc)
	{
	var onSrc = '/_img/small_checkbox_1.gif';
	}
	if (document.images)
	{
	imgobj.src = (checkboxobj.checked==false) ? onSrc:offSrc;
	checkboxobj.checked = (checkboxobj.checked==true) ? false:true;
	}
}

function gfxCheckboxToggle(checkboxobj,imgobj,offSrc,onSrc)
{
	if (!offSrc)
	{
	var offSrc = '/_img/checkbox_0.gif';
	}
	if (!onSrc)
	{
	var onSrc = '/_img/checkbox_1.gif';
	}
	if (document.images)
	{
	imgobj.src = (checkboxobj.checked==false) ? onSrc:offSrc;
	checkboxobj.checked = (checkboxobj.checked==true) ? false:true;
	}
}

function PopUp(url, name, width, height)
{
window.open(url, name, "channelmode=no, directories=no, fullscreen=no,"+" height="+height+", location=no, menubar=no,"+" resizable=no, scrollbars=yes, status=no, width="+width+", left= "+(((screen.width-width)/2)-15)+", top= "+(screen.height-height)/3);
return false
}

function showImage(ImageName)
{
var imgMain = document.getElementById("ImgMain");
	if(ImageName)
	{
	imgMain.src = ImageName;
	}
}

function markText(id)
{
var myField = document.getElementById(id);
	if (myField.value == myField.defaultValue)
	{
	myField.focus();
	var valueLenght = myField.value.length;
		//IE support
		if (document.selection)
		{
		var sel = document.selection.createRange();
			if (myField.createTextRange)
			{
			var range = myField.createTextRange();
			/*alert(valueLenght);*/
			range.collapse(true);
			range.moveStart('character',0); 
			range.moveEnd('character',(valueLenght)); 
			range.select(); 
			}
		}
		//MOZILLA/NETSCAPE support
		else if (myField.selectionStart || myField.selectionStart == '0')
		{
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		myField.setSelectionRange(0,valueLenght);
		}
	}
}

function insertAtCursor(myField, myValue)
{
	//IE support
	if (document.selection)
	{
	myField.focus();
	sel = document.selection.createRange();
	sel.text = myValue;
	}
	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0')
	{
	var startPos = myField.selectionStart;
	var endPos = myField.selectionEnd;
	myField.value = myField.value.substring(0, startPos)
	+ myValue
	+ myField.value.substring(endPos, myField.value.length);
	}
	else
	{
	myField.value += myValue;
	}
}

function doGetCaretPosition(ctrl)
{
var CaretPos = 0;
	// IE Support
	if (document.selection) 
	{
	ctrl.focus();
	var Sel = document.selection.createRange ();
	var Sel2 = Sel.duplicate();
	Sel2.moveToElementText(ctrl);
	var CaretPos = -1;
		while(Sel2.inRange(Sel))
		{
		Sel2.moveStart('character');
		CaretPos++;
		}
	}
	// Firefox support
	else if (ctrl.selectionStart || ctrl.selectionStart == '0')
	{
	CaretPos = ctrl.selectionStart;
	}
return (CaretPos);
}

function insertTag(tagCode)
{
var myField = document.form.page_content;
var myTagOpen = '[' + tagCode + ']';
var myTagClose = '[/' + tagCode + ']';
var pos = doGetCaretPosition(myField);
var pos = Math.floor(myTagOpen.length + pos);

	//IE support
	if (document.selection)
	{
	myField.focus();
	var sel = document.selection.createRange();

	sel.text = myTagOpen + sel.text + myTagClose;

		if (myField.createTextRange)
		{
		var range = myField.createTextRange(); 
		range.collapse(true);
		range.moveStart('character',pos); 
		range.moveEnd('character',0); 
		range.select(); 
		}
	}
	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0')
	{
	mozWrap(myField, myTagOpen, myTagClose); 
		if (myField.setSelectionRange)
		{
		myField.focus();
		myField.setSelectionRange(pos,pos); 
		}
	}
	else
	{
	myField.value += myTagOpen + myTagClose;
	}
}

// From http://www.massless.org/mozedit/ 
function mozWrap(txtarea, open, close) 
{ 
   var selLength = txtarea.textLength; 
   var selStart = txtarea.selectionStart; 
   var selEnd = txtarea.selectionEnd; 
   if (selEnd == 1 || selEnd == 2) 
      selEnd = selLength; 
   var s1 = (txtarea.value).substring(0,selStart); 
   var s2 = (txtarea.value).substring(selStart, selEnd) 
   var s3 = (txtarea.value).substring(selEnd, selLength); 
   txtarea.value = s1 + open + s2 + close + s3; 
   return; 
}


<!-- 
// bbCode control by 
// subBlue design 
// www.subBlue.com 

// Startup variables
var imageTag = false; 
var theSelection = false; 

// Check for Browser & Platform for PC & IE specific bits 
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html 

var clientPC = navigator.userAgent.toLowerCase(); // Get client info 
var clientVer = parseInt(navigator.appVersion); // Get browser version 

var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1) 

&& (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1) 

&& (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1)); 

var is_moz = 0; 

var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1)); 
var is_mac = (clientPC.indexOf("mac")!=-1); 



// Helpline contents
b_help = "Fet text: **text**"; 
i_help = "Länk till uppslagsord: [[Utombordare]]"; 

// Definiera bbCode-taggar
bbcode = new Array(); 
bbtags = new Array(
		  '**'
		, '**'
	
		, '[['
		, ']]'
		
		, '=='
		, '=='
		
		, '[[Fil:'
		, ']]'
);
imageTag = false; 

// Shows the help contents in the helpline window 
function helpline(help)
{ 
document.form.helpbox.value = eval(help + "_help"); 
}

// Replacement for arrayname.length property 
function getarraysize(thearray)
{
	for (i = 0; i < thearray.length; i++)
	{
	if ((thearray[i] == "undefined") || (thearray[i] == "") || (thearray[i] == null)) 
	return i; 
	}
return thearray.length; 
} 

// Replacement for arrayname.push(value) not implemented in IE until version 5.5 
// Appends element to the array 
function arraypush(thearray,value)
{ 
thearray[ getarraysize(thearray) ] = value;
}

// Replacement for arrayname.pop() not implemented in IE until version 5.5 
// Removes and returns the last element of an array 
function arraypop(thearray)
{ 
thearraysize = getarraysize(thearray); 
retval = thearray[thearraysize - 1]; 
delete thearray[thearraysize - 1]; 
return retval; 
} 

function bbstyle(bbnumber)
{ 
var txtarea = document.form.page_content; 

donotinsert = false; 
theSelection = false;
bblast = 0; 

	if (bbnumber == -1)
	{ // Stäng alla öppna taggar och standard knappnamnen
		while (bbcode[0])
		{ 
		butnumber = arraypop(bbcode) - 1; 
		txtarea.value += bbtags[butnumber + 1]; 
		buttext = eval('document.form.addbbcode' + butnumber + '.value'); 
		eval('document.form.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"'); 
		}
	imageTag = false; // All tags are closed including image tags :D 
	txtarea.focus(); 
	return;
	}

	if ((clientVer >= 4) && is_ie && is_win)
	{
	theSelection = document.selection.createRange().text; // Hämta text-markeringen
	
		if (theSelection)
		{ 
		// Lägg till taggar runt markeringen
		document.selection.createRange().text = bbtags[bbnumber] + theSelection + bbtags[bbnumber+1]; 
		txtarea.focus(); 
		theSelection = ''; 
		return;
		} 
	
	}
	else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0)) 
	{
	mozWrap(txtarea, bbtags[bbnumber], bbtags[bbnumber+1]); 
	return; 
	}

	// Find last occurance of an open tag the same as the one just clicked 
	for (i = 0; i < bbcode.length; i++)
	{
		if (bbcode[i] == bbnumber+1)
		{
		bblast = i; 
		donotinsert = true; 
		} 
	} 

	// Stäng alla öppna taggar upp till den just klickade & standard knapp namnen 
	if (donotinsert)
	{
		while (bbcode[bblast])
		{ 
		butnumber = arraypop(bbcode) - 1; 
		txtarea.value += bbtags[butnumber + 1]; 
		buttext = eval('document.form.addbbcode' + butnumber + '.value'); 
		eval('document.form.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"'); 
		imageTag = false; 
		} 
	/*txtarea.focus(); */
	return;
	}
	else
	{
	// ÖPPNA TAG:
	
		if (imageTag && (bbnumber != 14))
		{
		// Stänger bild-tag innan vi lägger till annan
		txtarea.value += bbtags[15]; 
		lastValue = arraypop(bbcode) - 1;   // Remove the close image tag from the list 
		document.form.addbbcode14.value = "Img";   // Return button back to normal state 
		imageTag = false; 
		} 
	
	// Öppna tag:
	insertAtCursor(document.forms['form'].elements['page_content'],bbtags[bbnumber]);
	
	/*txtarea.value += bbtags[bbnumber];*/
	if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag 
	arraypush(bbcode,bbnumber+1); 
	eval('document.form.addbbcode'+bbnumber+'.value += "*"'); 
	//      alert(eval('document.form.addbbcode' +bbnumber+ '.value')); 
	txtarea.focus();
    var startPos = txtarea.selectionStart;
    var endPos = txtarea.selectionEnd;
	txtarea.setSelectionRange(startPos,endPos);
	return false;
	}

} 
