
var lastField;
var needsUBB = true;
function insertTag(field, tag, question, replace, attr)
{
	var fieldObj = document.getElementById(field);
	if(fieldObj)
	{
		var defaulttext = '';
		var inserted = '';
		defaulttext = getSelectedText(fieldObj);
		
		if (!replace || defaulttext==null || (''+defaulttext)=='' )
		{
			defaulttext = 'Insert text here';
			inserted = prompt(question, defaulttext );
		}
		else
		{
			inserted = defaulttext;
		}
		
		if (inserted)
		{
			if(attr==null)inserted = '['+tag+']'+inserted + '[/'+tag+']';
			else inserted = '['+tag+' '+attr+']'+inserted + '[/'+tag+']';
		}
		if (inserted)
			insertAtcursor(fieldObj, inserted);
			
	}
	//fieldObj.focus();
}
String.prototype.replaceAll=function(s1, s2) {return this.split(s1).join(s2)}
function insertSpecialTag(field, tag, question, starttext, replace)
{
	var fieldObj = document.getElementById(field);
	if(fieldObj)
	{
		var defaulttext = '';
		defaulttext = getSelectedText(fieldObj);
		if (!replace || defaulttext==null || (''+defaulttext)=='' )
			defaulttext = prompt('Enter desired title:','');
		
			
		var inserted = prompt(question, starttext );
		if (inserted)
		{
			inserted = '['+tag+'='+inserted+']'+defaulttext + '[/'+tag+']';
		}
		if (inserted)
			insertAtcursor(fieldObj, inserted);
	}
	fieldObj.focus();
}
function insertTemplate(inserted, field)
{
	inserted = inserted.replaceAll('|','"');
	if(field==undefined || field==null)
		insertAtcursor(lastField, inserted);	
	else
		insertAtcursor(field, inserted);	
}

function addItalic(field)
{
	insertTag(field, 'i', 'Enter the text to make Italic:', true);
}

function addBold(field)
{
	
	insertTag(field, 'b', 'Enter the text to make Bold:', true);
}

function addUnderline(field)
{
	
	insertTag(field, 'u', 'Enter the text to make Underline:', true);
}

function addStroke(field)
{
	
	insertTag(field, 's', 'Enter the text to make Strikethrough:', true);
}
function addBlok(field)
{
	var val = document.getElementById('ubbBlokken').value;
	if(val!='')
		insertTag(field, 'blok', 'Enter text for the block', true, 'type=\"'+val+'\"');
	document.getElementById('ubbBlokken').options[0].selected=true;
}


function addTitle(field)
{	
	insertTag(field, 'titel', 'Enter desired title:', true);
}

function addHeader(field)
{	
	insertTag(field, 'kop', 'Enter desired header:', true);
}

/*function addLeft(field)
{
	insertTag(field, 'links', '', true)
}

function addCenter(field)
{
	insertTag(field, 'midden', '', true)
}

function addRight(field)
{
	insertTag(field, 'rechts', '', true)
}*/

function addUrl(field)
{
	
	insertSpecialTag(field, 'url', 'Supply address for the link:', 'http://', true);
}

function addInternalUrl(field)
{
	lastField = document.getElementById(field);
	lastField.focus();
	window.open('interneLinkPopup.aspx','','width=600, height=200, scrollbars=yes');	
	//insertSpecialTag(field, 'intern', 'Supply address for the link:', 'http://', true);
}

/*function addAnchor(field)
{
	insertSpecialTag(field, 'anchor', '', '', true)
}

function addJump(field)
{
	insertSpecialTag(field, 'jump', '', '', true)
}*/


function addTable(field)
{
	window.open('tablePopup.aspx?field=' + field,'','width=600, height=200, scrollbars=yes');	
}

function addMail(field)
{
  window.open('emailPopup.aspx?field='+field,'','width=600, height=200, scrollbars=yes');
	//insertSpecialTag(field, 'mail', 'Enter email address:', '',true);
}

function addImage(field, ubb)
{
	lastField = document.getElementById(field);
	lastField.focus();
	needsUBB = ubb;
	window.open('afbeeldingPopup.aspx' + (ubb ? '' : '?includePrefix=1'),'','width=600, height=600, scrollbars=yes');
  //	insertSpecialTag(field, 'url', 'Voer het adres in dat de link moet krijgen:', 'http://', true);
}

function addExternalImage(field)
{
	//insertSpecialTag(field, 'img', 'Supply address of the image:', 'http://', true);
	var fieldObj = document.getElementById(field);

	if(fieldObj)
	{
		var src = getSelectedText(fieldObj);
		var alt = '';
		
		if ( !alt )
			alt = prompt('Enter desired title:', alt);
			
		if ( src==null || (''+src)=='' )
			src = prompt('Supply address of the image:', src);
			
		if (src)
		{
			var toInsert = '[img';
			if ( alt )
				toInsert += ' alt='+alt;
			toInsert += ']'+src+'[/img]';
			insertAtcursor(fieldObj, toInsert);
		}
	}
	fieldObj.focus();
}

function addUserImage(field)
{
	lastField = $('#'+field);
	lastField.focus();
	window.open('/ledenUploadAfbeeldingPopupSiteNodeReactie.aspx?field='+field, '', 'width=600, height=600, scrollbars=yes');
}

function addForumUserImage(field)
{
	lastField = $('#'+field);
	lastField.focus();
	window.open('/ledenUploadAfbeeldingPopupForum.aspx?field='+field, '', 'width=600, height=600, scrollbars=yes');
}

function setUserImage(field, image)
{
	insertAtcursor(document.getElementById(field), '[userimg]'+image+'[/userimg]');
}

function addFile(field)
{
	lastField = document.getElementById(field);
	window.open('documentPopup.aspx','','width=600, height=600, scrollbars=yes');
}

function addFlash(field)
{
	lastField = document.getElementById(field);
	window.open('flashPopup.aspx','','width=600, height=600, scrollbars=yes');
}

function addList(field)
{
  var fieldObj = document.getElementById(field);
  var selectedText = getSelectedText(fieldObj);
  if(!(selectedText == "")){
	wrapList(fieldObj,selectedText)
	return;
  }
  var toInsert = '[list]\r\n';
  var needMore = true;
  var hasItems = false;
	while (needMore)
	{
	  var item = '';
	  
	  if ( !hasItems )
	    item = prompt('Create list','Enter the first item in the list and press OK.');
	  else
	    item = prompt('Create list','Enter the next item in the list and press OK for the next item, or press Cancel to finish the list.');
	  
	  if ( item > '' )
	  {
	    toInsert += '\t[*]'+item+'[/*]\r\n';
	    hasItems = true;
	  }
	  else
	    needMore = false;
	}
  
  if ( hasItems )
  {
    toInsert += '[/list]';
    lastField = document.getElementById(field);
    insertAtcursor(lastField, toInsert);
  }
}

function addYouTube(field)
{
	insertTag(field, 'youtube', 'Enter the direct YouTube URL', true);
}

function wrapList(field,text)
{
	var filteredText = "";
	var lastWhasEnter = 1;
	for(var i=0;i<text.length;i++){
		var chr = text.charAt(i);
		if(chr == '\r')
			continue;
		if(lastWhasEnter == 1 && chr == '\n')
			continue;
		filteredText += chr;
		lastWhasEnter = (chr == '\n'?1:0);
	}
	var myResult = "[list]\n";
	var items = filteredText.split("\n");
	for(var i=0;i<items.length;i++){
		myResult += "\t[*]"+items[i]+"[/*]\n";
	}
	myResult += "[/list]\n";	
	insertAtcursor(field, myResult);
}

/*function setFile(url)
{
	insertSpecialTag(lastField.name, 'document', '', url, true);
	window.focus();
}*/

function setImage(url)
{
	if(needsUBB)
	{
		insertAtcursor(lastField, '[libimg]'+url+'[/libimg]');
	}
	else
	{
		clearField(lastField);
		insertAtcursor(lastField, ''+url+'');
		var afbeelding = document.getElementById('afb'+lastField.name);
		if (afbeelding!=null)
		{
			afbeelding.src = url;
		}
	}
	window.focus();
}
function setImage(url, alignment)
{
	if(needsUBB)
	{
		if (alignment == null || alignment == '')
			insertAtcursor(lastField, '[libimg]'+url+'[/libimg]');
		else
			insertAtcursor(lastField, '[libimg align='+alignment+']'+url+'[/libimg]');
	}
	else
	{
		clearField(lastField);
		insertAtcursor(lastField, ''+url+'');
		var afbeelding = document.getElementById('afb'+lastField.name);
		if (afbeelding!=null)
		{
			afbeelding.src = url;
		}
	}
	window.focus();
}


function setMenuLink(url, omschrijving)
{
	insertAtcursor(lastField, '[menulink='+url+']'+omschrijving + '[/menulink]');
}
/*function setFlash(url, width, height)
{
	if(needsUBB)
	{
	  url = url.replace('.swf','');
		insertAtcursor(lastField, '[flash]\'codebase\',\'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0\',\'width\',\''+width+'\',\'height\',\''+height+'\',\'src\',\''+url+'\',\'quality\',\'high\',\'pluginspage\',\'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash\',\'wmode\',\'transparent\',\'movie\',\''+url+'\'[/flash]');
	}
	else
	{
		alert('');	
	}
	window.focus();
}*/

//mooi artikeltje over (gedeeltelijke) selecties ed: http://www.thescripts.com/forum/thread151663.html
function insertAtcursor(field,  myValue) 
{ 
//IE support 
	if (document.selection) 
	{
	  field.focus(); 
		sel = document.selection.createRange();
		sel.text = myValue;
		sel.moveStart('character', 0);
		sel.moveEnd('character', sel.text.length);
	} 
//MOZILLA/NETSCAPE support 
	else if (field.selectionStart || field.selectionStart == '0') 
	{ 
	  field.focus(); 
		var startPos = field.selectionStart; 
		var endPos = field.selectionEnd; 
		field.value = field.value.substring(0, startPos) 
		+ myValue 
		+ field.value.substring(endPos, field.value.length);
		field.setSelectionRange(startPos,startPos+myValue.length);
	} 
	else 
	{ 
		field.value += myValue; 
	} 
	field.focus(); 
} 
function setSelectionRange(textElem, selectionStart, selectionEnd)
{
  if (textElem.setSelectionRange) { // FF
  // textElem.focus(); // needed?
  window.setTimeout(function(x,posL,posR){ // bug 265159
  return function(){x.setSelectionRange(posL,posR);};}
  (textElem,selectionStart,selectionEnd),100);
  } else if (textElem.createTextRange) { // IE
  var range = textElem.createTextRange();
  range.collapse(true);
  range.moveEnd('character', selectionEnd);
  range.moveStart('character', selectionStart);
  range.select();
  }
}

function clearField(field) 
{ 
//IE support 
	if (document.selection) 
	{ 
		field.value = '';
	} 
//MOZILLA/NETSCAPE support 
	else if (field.selectionStart || field.selectionStart == '0') 
	{ 
		field.value = '';
	} 
	else 
	{ 
		field.value = ''; 
	} 
} 

function getSelectedText(field)
{
	//IE support 
	var seltext = '';
	if (document.selection) 
	{ 
		field.focus(); 
		seltext = document.selection.createRange().text; 
		
	} 
//MOZILLA/NETSCAPE support 
	else if (field.selectionStart || field.selectionStart == '0') 
	{ 
		var startPos = field.selectionStart; 
		var endPos = field.selectionEnd; 
		seltext = field.value.substring(startPos, endPos) ; 
	} 
	return seltext;
}

function clearUbb(field)
{
	lastField = document.getElementById(field);
	var text = getSelectedText(lastField);
	insertAtcursor(lastField, text.replace(/\[.?(i|u|b)\]/gim, ''));
}

/* Afhandelen van keyDown hier. */

var CTRL=1000;
var SHIFT=2000;
var ALT=4000;

function handleKeyDown(obj, event) 
{
  //modifiers
  var keystroke = event.keyCode || event.which;
  var keyModifiers = 0 ;

	if ( event.ctrlKey || event.metaKey )
		keyModifiers += CTRL ;

	if ( event.shiftKey )
		keyModifiers += SHIFT ;

	if ( event.altKey )
		keyModifiers += ALT ;
  
  var keyCombination = keystroke + keyModifiers;
  
  if ( executeKeyDownAction(obj, keyCombination) )
  {
  	if ( event.preventDefault )
  		return event.preventDefault();
  
  	event.returnValue = false;
  	event.cancelBubble = true;
  	return false;
  }
 
  return true;
}

function executeKeyDownAction(obj, action)
{
  var tabKey = 9;
  var bKey = 66; 
  var iKey = 73;
  var sKey = 83;
  var uKey = 85;
    
  if ( action == (tabKey) )
  {
    insertAtcursor(obj, String.fromCharCode(tabKey));
    return true;
  }
  else if (action == CTRL + bKey)
  {
    addBold(obj.id);
    return true;
  }
  else if (action == CTRL + iKey)
  {
    addItalic(obj.id);
    return true;
  }
  else if (action == CTRL + sKey)
  {
    addStroke(obj.id);
    return true;
  }
  else if (action == CTRL + uKey)
  {
    addUnderline(obj.id);
    return true;
  }
    
  return false;
}

