var selectedString = "";

function getSelectedHTML()
{
    selectedString = "";
    var rng = undefined;

    if (window.getSelection)
    {
        selobj = window.getSelection();

        if (!selobj.isCollapsed)
        {
            if (selobj.getRangeAt)
            {
                rng = selobj.getRangeAt(0);
            }
            else
            {
                rng = document.createRange();
                rng.setStart(selobj.anchorNode, selobj.anchorOffset);
                rng.setEnd(selobj.focusNode, selobj.focusOffset);
            }
        
            if (rng)
            {
                DOM = rng.cloneContents();
                object = document.createElement('div');
                object.appendChild(DOM.cloneNode(true));
                selectedString = object.innerHTML;
            }
            else
            {
                selectedString = selobj;
            }
        }
    }
    else if (document.selection)
    {
        selobj = document.selection;
        rng = selobj.createRange();

        if (rng && rng.htmlText)
        {
            selectedString = rng.htmlText;
        }
        else if (rng && rng.text)
        {
            selectedString = rng.text;
        }
    }
    else if (document.getSelection)
    {
        selectedString = document.getSelection();
    }

    selectedString = cleanSelectedString(selectedString);
}

function copySelection()
{
    setTimeout("getSelectedHTML()", 50);
}

document.onmouseup = copySelection;
document.onkeyup = copySelection;

function cleanSelectedString(theString)
{
	var comments = theString.match(/<!--/gi);
	var temp = "";
	
	if(comments != undefined)
	{
		for(i=0;i<comments.length;i++)
		{
			var temp = theString.substring(theString.search(/<!--/gi),theString.search(/-->/gi)+3);
			theString = theString.replace(temp,"");
		}
	}
	
	var regexp = /(<\/?[A-Z]+[0-9]?)\s?[^>]*>/gi
	theString = theString.replace(regexp, "$1>");
	var regexp2 = /<\/?[A-Z]+[0-9]?\s?>/gi
	theString = theString.replace(regexp2, function(m) { return returnTags(m);});
	var regexp_spaces = /\s+?\s*/gi
	theString = theString.replace(regexp_spaces, " ");	
	var regexp_br = /(<br>)+?\s?(<br>\s*)*/gi
	theString = theString.replace(regexp_br, "<br>");
		
	return theString;
}

function returnTags(thematch)
{ 
	var regtag = /<\/?(h[1-6]|a|area|ul|ol|dl|dd|dt|li|table|td|tr|th|p|hr|br)>/i
	
	if(regtag.test(thematch))
	{ 
		return thematch;
	} 
	else 
	{
		return "";
	}
}

/* Zelf toegevoegd om posted URL's ook goed voor te lezen ---------------------------- */
/*// Open window and read.
function rsOpenAndRead()
{
    fillTextToRead();
    
    window.open("", "prwin", "width=190, height=120, resizable=1, scrollbars=1, screenX=0, screenY=0, left=0, top=0");
    setTimeout('document.getElementById("rs_form").submit();', 500);
}

// Fill text to read.
function fillTextToRead()
{
    if (selectedString == "")
    {
        selectedString = fixHTMLForReadSpeaker(document.body.innerHTML);
        document.getElementById("rs_form").selhtml.value = selectedString;
    }
	
	if (IsDebug())
	{
		WriteToDebugArea(selectedString);
	}	
}

// Fix HTML for ReadSpeaker.
function fixHTMLForReadSpeaker(sHTML)
{
    var sReadText = '';
    var arStartBlocks = sHTML.split('<!-- RSPEAK_START -->');
    
    if (arStartBlocks.length > 1)
    {
        var sReadHTML = '';
        
        // Eerste start-block niet meenemen (lezen).
        for (var i = 1; i < arStartBlocks.length; i++)
        {
            var sStartBlock = arStartBlocks[i];
            var iStopPosition = sStartBlock.indexOf('<!-- RSPEAK_STOP -->');
            
            // Hele start-block en anders tot end-block meenemen (lezen).
            sReadHTML += ((iStopPosition == -1) ? sStartBlock : sStartBlock.substring(0, iStopPosition));
        }
        
        // Clean HTML.
        sReadText = cleanSelectedString(sReadHTML);
    }
    
    return sReadText;
}*/

function IsDebug()
{
	var txt = document.getElementById("test_area");
	
	return (typeof(txt) != "undefined" && txt != null);
}

function WriteToDebugArea(text)
{
	var txt = document.getElementById("test_area");
	
	if (typeof(txt) != "undefined" && txt != null)
	{
		txt.value = text;
	}
}

