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 macrotag(id,thetag) 
{
	doInsert(id,"[" + thetag + "]", "", true);
}

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);
}





//--------------------------------------------
// 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 InsertCode( id, Code)
{
	var obj = document.getElementById( id );
	obj.focus();
	var sel = document.selection;
	var rng = sel.createRange();
	obj.value += Code;
	obj.focus();
	// clear multiple blanks
	// obj_ta.value = obj_ta.value.replace(/  /, " ");
	return true;
}	

	
function doInsert(id,ibTag, ibClsTag, isSingle) {
	var isClose = false;
//	var obj_ta = eval("document.all."+id);
	var obj_ta = document.getElementById( 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 ( is_nav ) // Ensure it works for Mozilla firefox / Win only
	{
		if(obj_ta.selectionStart || (obj_ta.selectionStart == '0')) 
		{  		
			var before = obj_ta.value.substring(0,obj_ta.selectionStart);
		    var after = obj_ta.value.substring(obj_ta.selectionEnd,obj_ta.value.length);
		    var selText = obj_ta.value.substring(obj_ta.selectionStart,obj_ta.selectionEnd);
//		    var pointer = obj_ta.getCaretPosition();
			obj_ta.value = before+ibTag+selText+ibClsTag+after;
//			obj_ta.setCaretPosition = pointer;
  		}
	} else 
	{
		if(isSingle)	isClose = true;
		obj_ta.value += ibTag;
	}
	obj_ta.focus();
	return isClose;
}	


//
//===================== EMOTICONS

var emoticonsloaded = false;

function toggle_emoticon_mainwindow( id )
{
	v=document.getElementById( 'content_emoticonsbox_' + id ); 
	if (v.style.display=='block') {v.style.display='none'; } else 
	{	v.style.display='block';
		if (!emoticonsloaded )
		{	Ajax_get( 'content_emoticonsbox_' + id , 'content.php?do=showicons&id=' + id );
			emoticonsloaded = true;
		}
	}	
}


function show_emoticon_window( id, formname )
{
	e1=document.getElementById('emoticons_' + formname + '_1'); 
	e2=document.getElementById('emoticons_' + formname + '_2'); 
	e3=document.getElementById('emoticons_' + formname + '_3'); 
	e4=document.getElementById('emoticons_' + formname + '_4'); 
	if ( id == '1') {e1.style.display='block'; 	e2.style.display='none';	e3.style.display='none';	e4.style.display='none'; } else
	if ( id == '2') {e1.style.display='none'; 	e2.style.display='block';	e3.style.display='none';	e4.style.display='none'; } else
	if ( id == '3') {e1.style.display='none'; 	e2.style.display='none';	e3.style.display='block'; 	e4.style.display='none'; } else
	if ( id == '4') {e1.style.display='none'; 	e2.style.display='none';	e3.style.display='none'; 	e4.style.display='block'; }
}

function emoticon( id, code )
{
	doInsert(id, " " + code, "", false );	
}

function emoticonNo( id, code )
{
	doInsert('content_' + id, " [I" + code + "]", "", false );	
//	insertAtCaret(  id, " [I" + code + "]" );
}


function forum( id )
{
	var datumcode = new Date();
	var msec = datumcode.getTime();
	doInsert(id, "[FORUM-" + msec + "]", '' );	
}

// ============================== WIN XP compatibles:

function box_open( id )			{	element=document.getElementById( id ); 	element.style.display='block';	}
function box_close( id )		{	element=document.getElementById( id ); 	element.style.display='none';	}
function box_disable( id )		{	document.getElementById( id ).disabled=true; 	}
function box_enable( id )		{	document.getElementById( id ).disabled=false;	}

var get_selection_before = '';
var get_selection_after = '';
var get_selection_text = '';
var get_selection_range = '';
var get_selection_id = '';

function get_selection_update ( ibTag, ibClsTag )
{
	if ( (myVersion >= 4) && is_ie && is_win)  // Ensure it works for IE4up / Win only
	{	get_selection_range.text = ibTag + get_selection_range.text + ibClsTag; 	} else
	if ( is_nav ) // Ensure it works for Mozilla firefox / Win only
	{
			var obj_ta = document.getElementById( 'content_' + get_selection_id );
			obj_ta.value = get_selection_before + ibTag + get_selection_text + ibClsTag + get_selection_after;
	}	
}
	

function get_selection( id )
{
	var obj_ta = document.getElementById( 'content_' + id );
	if ( (myVersion >= 4) && is_ie && is_win)  // Ensure it works for IE4up / Win only
	{
		obj_ta.focus();
		var sel = document.selection;
		get_selection_range = sel.createRange();
		get_selection_range.colapse;

	} else if ( is_nav ) // Ensure it works for Mozilla firefox / Win only
	{
		if(obj_ta.selectionStart || (obj_ta.selectionStart == '0')) 
		{  		
			get_selection_id = id;
			get_selection_before = obj_ta.value.substring(0,obj_ta.selectionStart);
		    get_selection_after = obj_ta.value.substring(obj_ta.selectionEnd,obj_ta.value.length);
		    get_selection_text = obj_ta.value.substring(obj_ta.selectionStart,obj_ta.selectionEnd);
  		}
	} 
	obj_ta.focus();
}


function urlbox_init( id )
{
	get_selection( id );
	if ( is_ie && is_win )  // Windows and explorer only
	{
		if (document.selection.type == "Text") 
				{	box_open( 'content_urlbox_' + id );
					box_close('content_saveoptions_' + id);
					box_close('content_options_' + id );
					box_disable('content_' + id );
					box_close('content_emoticonsbox_' + id );
				} 
		else	{	alert("Selecteer eerst de tekst die gelinkt moet worden");	return;	}
	} else
	if ( is_nav )	// Mozilla firefox 
	{
		var obj_ta = document.getElementById( id );
//		if ( obj_ta.value.substring(obj_ta.selectionStart,obj_ta.selectionEnd) != '')
//				{	
//				alert("test3");
					box_open( 'content_urlbox_' + id );
					box_close('content_saveoptions_' + id);
					box_close('content_options_' + id );
					box_disable('content_' + id );
//				}
//		else	{	alert("Selecteer eerst de tekst die gelinkt moet worden");	return;	}
	} else
	{	alert("Uw browser wordt niet ondersteund");	return;	}
}

function urlbox_run( id )
{
	inputbox = document.getElementById( 'content_urlinput_' + id );
	enterURL = inputbox.value;	
	if ( enterURL == '' ){ alert("Er is geen correcte url opgegeven");	return; } else
	{
		inputbox.value='';
		box_close( 'content_urlbox_' + id );
		box_open('content_saveoptions_' + id);
		box_open('content_options_' + id );
		box_enable('content_' + id );
		//doInsert('content_' + id,"[URL]http://"+enterURL+"[URL:]","[/URL]" , false);		
		get_selection_update( "[URL]http://"+enterURL+"[URL:]","[/URL]" );
	}	
}

function urlbox_close( id )
{
	box_close( 'content_urlbox_' + id );
	box_open('content_saveoptions_' + id);
	box_open('content_options_' + id );
	box_enable('content_' + id );
}



function emailbox_init( id )
{
	get_selection( id );
	box_open( 'content_emailbox_' + id );
	box_close('content_saveoptions_' + id);
	box_close('content_options_' + id );
	box_disable('content_' + id );
}

function emailbox_run( id )
{
	inputbox = document.getElementById( 'content_emailinput_' + id );
	emailaddress = inputbox.value;
	if ( emailaddress == '' ){ alert("Error: geen geldig emailadres opgegeven");	return; } else
	{
		inputbox.value='';
		box_close( 'content_emailbox_' + id );
		box_open('content_saveoptions_' + id);
		box_open('content_options_' + id );
		box_enable('content_' + id );
		if ( is_ie && is_win )  // Windows and explorer only
		{
			var sel = document.selection;
			var rng = sel.createRange();	
			get_selection_update( "[EMAIL]"+emailaddress+"[EMAIL:]","[/EMAIL]" );
//			doInsert('content_' + id,"[EMAIL]"+emailaddress+"[EMAIL:]", "[/EMAIL]", false);
		} else
		if ( is_nav )	// Mozilla firefox 
		{
			var obj_ta	= document.getElementById( 'content_' + id );
			var sel 	= obj_ta.value.substring(obj_ta.selectionStart,obj_ta.selectionEnd);
			get_selection_update( "[EMAIL]"+emailaddress+"[EMAIL:]","[/EMAIL]" );
//			doInsert('content_' + id,"[EMAIL]"+emailaddress+"[EMAIL:]", "[/EMAIL]", false);
		}
	}
}

function emailbox_close( id )
{
	box_close( 'content_emailbox_' + id );
	box_open('content_saveoptions_' + id);
	box_open('content_options_' + id );
	box_enable('content_' + id );
}



// ============================ PICTURES
var picturesloaded = false;
function toggle_pictures_mainwindow( id )
{
	v=document.getElementById( 'content_picturesbox_' + id ); 
	
	if (v.style.display=='block') {v.style.display='none'; } else 
	{	v.style.display='block';
		if (!picturesloaded )
		{	Ajax_get( 'content_picturesbox_' + id , 'content.php?do=showpictures&id=' + id );
			picturesloaded = true;
		}
	}	
}

function Place_picture(id, Imagename)
{
	v=document.getElementById( 'content_picturesbox_' + id + '_place' ); 
//	if (v.style.display=='block') {v.style.display='none'; } else 
//	{	
		v.style.display='block';
		document.getElementById('content_picturesbox_' + id + '_place_img').src = Imagename;
		document.getElementById('content_picturesbox_' + id + '_place_imgname').src = Imagename;
//	}
}

function Place_picture_cancel( id )
{
	document.getElementById( 'content_picturesbox_' + id + '_place' ).style.display='none'; 	
}

function tag_image(id) {
//	var enterX  	 = prompt("Geef de breedte van het plaatje of laat dit leeg voor de huidige afmeting / klik op Annuleren.", "");	
//	var enterY		 = prompt("Geef de hoogte van het plaatje of laat dit leeg voor de huidige afmeting / klik op Annuleren.", "");	
//	var enterAlign   = prompt("Geef de uitlijning op van het plaatje: left, right, of laat het leeg / klik op Annuleren.", "");
//	var enterURL   	 = prompt("Geef de URL waarnaar gelinkt moet worden / geef '-' voor uitvergroting / laat het leeg voor geen actie.", "");
	var enterX		= document.getElementById('content_picturesbox_' + id + '_place_imgX').value;
	var enterY		= document.getElementById('content_picturesbox_' + id + '_place_imgY').value;
	var enterAlign	= document.getElementById('content_picturesbox_' + id + '_place_imgA').value;
	var enterURL	= document.getElementById('content_picturesbox_' + id + '_place_imgU').value;
	var enterImage	= document.getElementById('content_picturesbox_' + id + '_place_imgname').src;
	if (enterAlign == '' )	{ enterAlign = "left"; }
	if (enterURL == '1')	
	{ doInsert('content_' + id, "[URL]" + enterImage + "[URL:][IMG]" + enterImage + "[IMG-X]" + enterX + "[IMG-Y]" + enterY + "[IMG-A]" + enterAlign + "[/IMG][/URL]", "", false ); } else
	{ doInsert('content_' + id, "[IMG]" + enterImage + "[IMG-X]" + enterX + "[IMG-Y]" + enterY + "[IMG-A]" + enterAlign + "[/IMG]", "", false ); }
	document.getElementById( 'content_picturesbox_' + id + '_place' ).style.display='none'; 
}


// ============================ Downloads
var downloadsloaded = false;
function toggle_downloads_mainwindow( id )
{
	v=document.getElementById( 'content_downloadsbox_' + id ); 
	if (v.style.display=='block') {v.style.display='none'; } else 
	{	v.style.display='block';
		if (!downloadsloaded )
		{	Ajax_get( 'content_downloadsbox_' + id , 'content.php?do=showdownloads&id=' + id );
			downloadsloaded = true;
		}
	}	
}



// ============================= SAVE CONTENT

function CancelContent( id, url )
{
	picturesloaded = false;
	downloadsloaded = false;
	Ajax_get( id, url );	
}

function SaveContent( id, cols, rows, option )
{
	picturesloaded = false;
	downloadsloaded = false;
	var inputbox = document.getElementById( 'content_' + id );
//	var parameter = 'content=' + inputbox.value;
//	var parameter = 'content=' + encodeURI( document.getElementById('content_' + id).value ) +
	var parameter = 'content=' + encodeURIComponent( document.getElementById('content_' + id).value );
//	+
//					'&id=' + encodeURI( id );
//	var parameter = 'content=' +  document.getElementById('content_' + id).value  +
//					'&id=' +  id;

//	content_emoticonsbox_' + id , 'content.php?do=showicons&id=' + id
//alert("id = " + 'content.php?do=save&id=' + id + '&cols=' + cols + '&rows=' + rows + '&options=' + option );
	Ajax_post( 'content_block_' + id,  'content.php?do=save&id=' + id + '&cols=' + cols + '&rows=' + rows + '&options=' + option , parameter );	
}

