// INSERT SMILEY
function insertSmiley(myField, smiley)
{
	//IE support
	if (document.selection) {
	    myField.focus();
	
	    // parse BBCode
	    var myValue = "[" + smiley + "]";
		
	    if(myValue) 
	    {
	    	myField.value += myValue;
	    }
	
	//Mozilla/Firefox/Netscape 7+ support
	} else if (myField.selectionStart || myField.selectionStart == '0') {
	
	    myField.focus();
	    //Here we get the start and end points of the
	    //selection. Then we create substrings up to the
	    //start of the selection and from the end point
	    //of the selection to the end of the field value.
	    //Then we concatenate the first substring, myValue,
	    //and the second substring to get the new value.
	    var startPos = myField.selectionStart;
	    var endPos = myField.selectionEnd;
	    //var selectedText = myField.value.substr(startPos, (endPos-startPos));
	   	//selectedText = selectedText.replace(/^\s+|\s+$/g, '');
	    
	    // parse BBCode
	   	var myValue = "[" + smiley + "]";
		
	    if(myValue)
	    {
	    	myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
	    
		    //myField.setSelectionRange(endPos+myValue.length, endPos+myValue.length);
		    myField.setSelectionRange(endPos+2+smiley.length, endPos+2+smiley.length);
	    }
	}
	else
	{
		myField.value += myValue;
	}
}


//modified version of http://www.webmasterworld.com/forum91/4686.htm
//myField accepts an object reference, myValue accepts the text string to add
var add = 0;
function insertAtCursor(myField, tag, extras)
{
	// declare "extras" if not already defined
	extras = typeof(extras) == 'undefined' ? '' : extras;
	
	// declare start/end tags
	var start_tags = new Array();
	var end_tags = new Array();
	
		// set tags
			start_tags['bold'] = '[B]';				// BOLD
			end_tags['bold'] = '[/B] ';
			start_tags['italic'] = '[I]';			// ITALIC
			end_tags['italic'] = '[/I] ';			
			start_tags['underline'] = '[U]';		// UNDERLINE
			end_tags['underline'] = '[/U] ';
			start_tags['php'] = '[PHP]';			// PHP CODE
			end_tags['php'] = '[/PHP] ';
			start_tags['code'] = '[CODE]';			// CODE
			end_tags['code'] = '[/CODE] ';
			start_tags['url'] = '[URL=';			// URL
			end_tags['url'] = '[/URL] ';
			start_tags['size'] = '[SIZE=';			// FONT SIZE
			end_tags['size'] = '[/SIZE] ';
			start_tags['color'] = '[COLOR=';		// FONT COLOR
			end_tags['color'] = '[/COLOR] ';
			start_tags['image'] = '[IMG]';			// IMAGE
			end_tags['image'] = '[/IMG] ';
			start_tags['list'] = '[LIST]';			// DOTTED LIST
			end_tags['list'] = '[/LIST] ';
	
		
	//IE support
	if (document.selection) {
	    myField.focus();
	
	    //in effect we are creating a text range with zero
	    //length at the cursor location and replacing it
	    //with myValue
	    selectedText = document.selection.createRange();
	   	
	    // parse BBCode
	    var myValue = parse_bbcode(start_tags, end_tags, selectedText.text, extras, tag);
		
	    if(myValue) 
	    {
	    	selectedText.text = myValue;
	    }
	
	//Mozilla/Firefox/Netscape 7+ support
	} else if (myField.selectionStart || myField.selectionStart == '0') {
	
	    myField.focus();
	    //Here we get the start and end points of the
	    //selection. Then we create substrings up to the
	    //start of the selection and from the end point
	    //of the selection to the end of the field value.
	    //Then we concatenate the first substring, myValue,
	    //and the second substring to get the new value.
	    var startPos = myField.selectionStart;
	    var endPos = myField.selectionEnd;
	    var selectedText = myField.value.substr(startPos, (endPos-startPos));
	    selectedText = selectedText.replace(/^\s+|\s+$/g, '');
	    
	    // parse BBCode
	    var myValue = parse_bbcode(start_tags, end_tags, selectedText, extras, tag);
		
	    if(myValue)
	    {
	    	myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
	    
		    //myField.setSelectionRange(endPos+myValue.length, endPos+myValue.length);
		    myField.setSelectionRange(startPos+start_tags[tag].length+add, endPos+start_tags[tag].length+add);
	    }
	}
	else
	{
		myField.value += myValue;
	}
}


function parse_bbcode(start_tags, end_tags, selectedText, extras, tag)
{
	// check whether we got a "[ELEMENT]value[/ELEMENT]" or "[ELEMENT=value]value[/ELEMENT]"
	if(start_tags[tag].indexOf('=') == -1)
	{
		// [ELEMENT]value[/ELEMENT]
			// check if IMG
			if(start_tags[tag].indexOf('IMG') != -1)
			{
				var selectedText = prompt("Ange webbadressen till bilden som du vill länka in.", "http://");	
				
				var myValue = selectedText ? (start_tags[tag] + selectedText + end_tags[tag]) : selectedText;
			}
			
			// check if LIST
			else if(start_tags[tag].indexOf('LIST') != -1)
			{
				var myItems = "\n";
				var index = 1;
				var item = null;
				while(true)
				{
					item = prompt("Skriv in "+index+" punkten.\nOK: För att lägga till i listan.\nAvbryt: För att avbryta/skapa listan.", "Punkt "+index+".");
					if(item)
					{
						myItems += "[*]"+item+"[/*]\n";
						index++;
					}
					else
					{
						break;
					}
				}
				
				selectedText = myItems;
				
				var myValue = myItems.length > 2 ? (start_tags[tag] + selectedText + end_tags[tag]) : null;
			}
			else
			{
				var myValue = start_tags[tag] + selectedText + end_tags[tag];
			}
			
			
	}
	else if(start_tags[tag].indexOf('URL=') != -1)
	{
		// [ELEMENT=value]value[/ELEMENT]
			// URL
				// declare link
				var link = prompt("Ange webbadressen som du vill länka till.", "http://");
			
				// default value on selectedText
				selectedText = selectedText ? selectedText : (link ? link : 'Länk');
				
				// make sure there is "http://"
				if(!link || (link && link.substring(0, 7) != 'http://'))
				{
					// set http://
					link = link ? ("http://" + link) : link;
					
					// missing http://
					var myValue = link ? (start_tags[tag] + link + "]" + selectedText + end_tags[tag]) : link;
				}
				else
				{
					// okey link
					var myValue = link ? (start_tags[tag] + link + "]" + selectedText + end_tags[tag]) : link;
				}
				
				add = link ? (link.length+1) : 0;
	}
	else if(start_tags[tag].indexOf('SIZE=') != -1)
	{
		// [ELEMENT=value]value[/ELEMENT]
			// SIZE
				// make sure we got a valid font size
				extras = (extras >= 1 && extras <= 5) ? extras : '';
				
				// use font size if any given
				if(extras != '')
				{
					var myValue = start_tags[tag] + extras + "]" + selectedText + end_tags[tag];
				}
	}
	else if(start_tags[tag].indexOf('COLOR=') != -1)
	{
		// [ELEMENT=value]value[/ELEMENT]
			// COLOR
				// use font color if any given
				if(extras != '')
				{
					var myValue = start_tags[tag] + extras + "]" + selectedText + end_tags[tag];
				}
	}
	else
	{
		// [ELEMENT=value]value[/ELEMENT]
		var myValue = start_tags[tag] + selectedText + "]" + selectedText + end_tags[tag];
	}
	
	return myValue;
}


function previewPost()
{
	var title = document.getElementById('frmTitle').value;
	var message = document.getElementById('frmMessage').value;
	
	document.getElementById('frmTitle_preview').value = title;
	document.getElementById('frmMessage_preview').value = message;
	
	document.forms['frmPreview'].submit();
}
