var B_open = 0;
var I_open = 0;
var BLOCK_open = 0;

var bbtags   = new Array();

// Determine browser type and stuff.
// Borrowed from http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html

var myAgent   = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);

var is_ie   = ((myAgent.indexOf("msie") != -1)  && (myAgent.indexOf("opera") == -1));
var is_nav  = ((myAgent.indexOf('mozilla')!=-1) && (myAgent.indexOf('spoofer')==-1)
                && (myAgent.indexOf('compatible') == -1) && (myAgent.indexOf('opera')==-1)
                && (myAgent.indexOf('webtv') ==-1)       && (myAgent.indexOf('hotjava')==-1));

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

function stacksize(thearray) {
	for (i = 0 ; i < thearray.length; i++ ) {
		if ( (thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined') ) {
			return i;
		}
	}
	return thearray.length;
}

function pushstack(thearray, newval) {
	arraysize = stacksize(thearray);
	thearray[arraysize] = newval;
}

function popstack(thearray) {
	arraysize = stacksize(thearray);
	theval = thearray[arraysize - 1];
	delete thearray[arraysize - 1];
	return theval;
}

function closeall(id) {
	var obj_ta = document.GetElementById(id);
	if (bbtags[0]) {
		while (bbtags[0]) {
			tagRemove = popstack(bbtags)
			obj_ta.value += "[/" + tagRemove + "]";
		}
	}
	bbtags = new Array();
	obj_ta.focus();
}

function simpletag(id,thetag) {
	var tagOpen = eval(thetag + "_open");
	if (tagOpen == 0) {
		if(doInsert(id,"[" + thetag + "]", "[/" + thetag + "]", true)){
			eval(thetag + "_open = 1");
			pushstack(bbtags, thetag);
		}
	}
	else {
		// Find the last occurance of the opened tag
		lastindex = 0;
		for (i = 0 ; i < bbtags.length; i++ ) {
			if ( bbtags[i] == thetag ) {
				lastindex = i;
			}
		}
		// Close all tags opened up to that tag was opened
		while (bbtags[lastindex]) {
			tagRemove = popstack(bbtags);
			doInsert(id,"[/" + tagRemove + "]", "", false)
			eval(tagRemove + "_open = 0");
		}
	}
}

function tag_list(id) {
	var listvalue = "init";
	var thelist = "[LIST]\n";
	while ( (listvalue != "") && (listvalue != null) ) {
		listvalue = prompt("Typ een lijst item. Laat leeg of klik op Annuleren om de lijst af te sluiten.", "");
		if ( (listvalue != "") && (listvalue != null) ) {
			thelist = thelist+"[*]"+listvalue+"\n";
		}
	}
	doInsert(id,thelist + "[/LIST]", "", false);
}

function tag_url(id) {
	if (document.selection.type == "Text") {
		var enterURL   = prompt("Typ de url in", "http://");
		if (!enterURL) {
			alert("Fout! Geen geldige url opgegeven.");
			return;
		}
		var enterTarget   = prompt("Geef een doelnaam op als u wilt dat de link opent in een nieuw venster.", "");
		if (enterTarget != null && enterTarget != "") {
			enterURL += ":" + enterTarget
		}	
		doInsert(id,"[URL:"+enterURL+"]","[/URL]" , false);
	} else {
		alert("Selecteer eerst de tekst die gelinkt moet worden");
		return;
	}
}

function tag_image(id) {
	var enterImage   = prompt("Typ de bestandsnaam van het plaatje, eventueel voorafgegaan door het pad.", "");
	if (!enterImage) {
		alert("Fout! Geen geldige bestandsnaam opgegeven.");
		return;
	}
	var enterAlign   = prompt("Geef de uitlijning op van het plaatje: left, right, of laat het leeg / klik op Annuleren.", "");
	var enterBorder  = prompt("Geef aan hoe dik de rand om het plaatje moet zijn. Typ 0 of laat leeg / klik op Annuleren als u geen rand om het plaatje wilt.", "");
	if (enterAlign != null && enterAlign != "") {
		enterImage += ":" + enterAlign
		if (enterBorder != null && enterBorder != "") {
			enterImage += ":" + enterBorder
		}
	} else if (enterBorder != null && enterBorder != "") {
			enterImage += "::" + enterBorder
		}
	doInsert(id,"[IMG:" + enterImage + "]", "", false);
}

function tag_email(id) {
	var sel = document.selection;
	var rng = sel.createRange();
	var emailAddress = prompt("Typ het emailadres", rng.text);
	if (!emailAddress) { 
			alert("Error! Geen geldig emailadres opgegeven.");
			return;
	}
	doInsert(id,"[EMAIL:"+emailAddress+"]", "[/EMAIL]", false);
}

//--------------------------------------------
// GENERAL INSERT FUNCTION
//--------------------------------------------
// ibTag: opening tag
// ibClsTag: closing tag, used if we have selected text
// isSingle: true if we do not close the tag right now
// return value: true if the tag needs to be closed later

//

function doInsert(id,ibTag, ibClsTag, isSingle) {
	var isClose = false;
	var obj_ta = eval("document.all."+id);
	if ( (myVersion >= 4) && is_ie && is_win) { // Ensure it works for IE4up / Win only
		if(obj_ta.isTextEdit){ // this doesn't work for NS, but it works for IE 4+ and compatible browsers
			obj_ta.focus();
			var sel = document.selection;
			var rng = sel.createRange();
			rng.colapse;
			if((sel.type == "Text" || sel.type == "None") && rng != null){
				if(ibClsTag != "" && rng.text.length > 0)
					ibTag += rng.text + ibClsTag;
				else if(isSingle)
					isClose = true;
				rng.text = ibTag;
			}
		} else {
			if(isSingle)
				isClose = true;
			obj_ta.value += ibTag;
		}
	} else {
		if(isSingle)
			isClose = true;
		obj_ta.value += ibTag;
	}
	obj_ta.focus();
	// clear multiple blanks
	// obj_ta.value = obj_ta.value.replace(/  /, " ");
	return isClose;
}	

