// 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));
        }
        
        // Strip (HTML) tags.
        sReadText = sReadHTML.replace(/(<([^>]+)>)/gim, ' ');
		
		// dubbele whitespaces en enters er uit
		sReadText = sReadText.replace(/ {2,}/g,' ').replace(/[\n\r]*/g,'');

		// &nbsp; naar spaties
        sReadText = sReadText.replace(/&nbsp;/g, ' ');
		sReadText = sReadText.replace(/&amp;/g, ' en ')
	}
    
    return sReadText;
}

function IsDebug()
{
	return (typeof(document.rs_form) != "undefined" && document.rs_form != null &&
		typeof(document.rs_form.test_area) != "undefined" && document.rs_form.test_area != null);
}

function WriteToDebugArea(text)
{
    if (typeof(document.rs_form) != "undefined" && document.rs_form != null &&
		typeof(document.rs_form.test_area) != "undefined" && document.rs_form.test_area != null)
	{
		document.rs_form.test_area.value = text;
		//alert(document.rs_form.selectedtext.value);
	}
}

function rsOpenAndRead()
{
	var rs_form = document.getElementById('rs_form');
	if (rs_form)
	{
		var html = fixHTMLForReadSpeaker(document.body.innerHTML);
		WriteToDebugArea(html);

		rs_form.target = 'rs';
    
		rs_form['selectedhtml_base64'].value = base64Encode(html);

		if (window.open('','rs','width=380,height=180,toolbar=0'))
			setTimeout("rs_form.submit()",500);
	}
}

/* Base64 utility. Copyright 2009 VoiceCorp (www.voice-corp.com) */
function base64Encode(data) {

	var base64Char = function (val) {
	  if (val<26)
	    return String.fromCharCode(val+'A'.charCodeAt(0));
	  if (val<52)
	    return String.fromCharCode(val+'a'.charCodeAt(0)-26);
	  if (val<62)
	    return String.fromCharCode(val+'0'.charCodeAt(0)-52);
	  if (val==62)
	    return '+';
	  if (val==63)
	    return '/';
	  return String.fromCharCode(0);
	}

  var size = data.length;
  var newsize=4*parseInt((size+2)/3);
  var buff=new String();
  var completetriples=parseInt(size/3);
  var ch;
  var remaining=size-3*completetriples;
  var i=0;
  for (;i<3*completetriples;i+=3) {
    ch=base64Char(data.charCodeAt(i)>>2);
    buff+=ch;
    ch=base64Char(((data.charCodeAt(i)&0x03)<<4)|(data.charCodeAt(i+1)>>4));
    buff+=ch;
    ch=base64Char(((data.charCodeAt(i+1)&0x0f)<<2)|(data.charCodeAt(i+2)>>6));
    buff+=ch;
    ch=base64Char(data.charCodeAt(i+2)&0x3f);
    buff+=ch;
  }
  if (remaining==1) {
    buff+=base64Char(data.charCodeAt(i)>>2);
    buff+=base64Char((data.charCodeAt(i)&0x03)<<4);
    buff+='=';
    buff+='=';
  }
  if (remaining==2) {
    buff+=base64Char(data.charCodeAt(i)>>2);
    buff+=base64Char(((data.charCodeAt(i)&0x03)<<4)|(data.charCodeAt(i+1)>>4));
    buff+=base64Char((data.charCodeAt(i+1)&0x0f)<<2);
    buff+='=';
  }
  return buff;
}
