  var txtArea = null;
  var selStart = 0;
  var selEnd = 0;
  var scrollPos = 0;

  function Initialize()
  {
    txtArea = null;
    txtArea = document.getElementById("edit-contents");
    selStart = txtArea.selectionStart;
    selEnd = txtArea.selectionEnd;
    scrollPos = txtArea.scrollTop;
  }

  function Finalize()
  {
    txtArea.selectionStart = selStart;
    txtArea.selectionEnd = selStart;
    txtArea.focus();

    setCursor(txtArea, selStart, selStart);

    txtArea.scrollTop = scrollPos;
  }

  function setCursor(el, st, end)
  {
    if(el.setSelectionRange)
    {
      el.setSelectionRange(st, end);
      el.focus();
    }
    else
    {
      if(el.createTextRange)
      {
        range=el.createTextRange();
        range.collapse(true);
        range.moveEnd('character',end);
        range.moveStart('character',st);
        range.select();
      }
    }
  }

  function Counter()
  {
    var i = 0;
    var input;
    input = document.getElementById("Input_Counter");
    i = parseInt(input.value) + 1;
    input.value = i;
    return false;
  }

  function Quote()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="Pullquote"><div id="quotetext">'
    + txtArea.value.substring(selStart, selEnd)
    + '</div><p class="quotecite">QUOTE_CITE</p></div>'
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }
  
  function Scenario()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="Scenario"><div id="scen_text">'
    + txtArea.value.substring(selStart, selEnd)
    + '</div><p class="scen_cite"> </p></div>'
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function Link()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<a href="'
    + txtArea.value.substring(selStart, selEnd)
    + '" class="tooltip" target="_blank">HYPER_LINK<span>This page will open in a new window.</span></a>'
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function Img_R()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="ModuleImage_r"><img src="Module_Images/" alt="" title="" /><p>IMAGE_DESC</p></div>'
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function Img_L()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="ModuleImage_l"><img src="Module_Images/" alt="" title="" /><p>IMAGE_DESC</p></div>'
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function Italic()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<i>'
    + txtArea.value.substring(selStart, selEnd)
    + '</i>'
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function H2Tag()
  {
    H_Tag(2);
    return false;
  }
  
  function H4Tag()
  {
    H_Tag(4);
    return false;
  }

  function H_Tag(Level)
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + "<h" + Level + ">"
    + txtArea.value.substring(selStart, selEnd)
    + "</h" + Level + ">"
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function LI()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + "<li>"
    + txtArea.value.substring(selStart, selEnd)
    + "</li>"
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function HTML_OList()
  {
    HTML_List('ol');
    return false;
  }
  
  function HTML_UList()
  {
    HTML_List('ul');
    return false;
  }

  function HTML_List(HTML_Type)
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + "<" + HTML_Type + ">"
    + txtArea.value.substring(selStart, selEnd)
    + "</" + HTML_Type + ">"
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function Asset()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<strong>'
    + txtArea.value.substring(selStart, selEnd)
    + "</strong>"
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function Asset_Desc()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<h4 class="asset">'
    + txtArea.value.substring(selStart, selEnd)
    + "</h4>"
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function Reading()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<strong>'
    + txtArea.value.substring(selStart, selEnd)
    + "</strong>"
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function Reading_Desc()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<h4 class="reading">'
    + txtArea.value.substring(selStart, selEnd)
    + "</h4>"
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function P()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<p>'
    + txtArea.value.substring(selStart, selEnd)
    + "</p>"
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function List()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="list_left"><div class="list_bt"><div class="list_top"><h4>TITLE</h4><ul class="lists"><li></li>'
    + txtArea.value.substring(selStart, selEnd)
    + "</ul></div></div></div>"
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function ListItem()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<li>'
    + txtArea.value.substring(selStart, selEnd)
    + "</li>"
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function Clearer()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="clearer"> </div>'
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function PodWrap()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="pod_wrap"><div class="podbox_rhs"><img src="Module_Images/rss_headphones.gif" alt="Podcast download" /><p>You are invited to download and then listen to a short podcast (a short digital file distributed over the Internet for playback on portable media players or personal computers) that relates to the particular content addressed in this Module.  The podcast is no more than 10 minutes in length and complements the learning achieved through completion of this Module.</p><h2 class="Podcast_Headphones"><a href="http://www.sepodcasts.org/podcast.php?p=144" class="podtip" target="_blank">Podcast - '
    + txtArea.value.substring(selStart, selEnd)
    + '<span><div class="podmid"><div class="podtop"><div class="podbot">This will open the podcast in a new window. In this window you can play the podcast by clicking the play button, you can rate the podcast by clicking the stars or leave a comment if you wish by filling out the form.</div></div></div></span></a></h2>QUESTION</div></div>'
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function References()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="top"><div class="left"><div class="bottom"><div class="right"><div class="tl"><div class="tr"><div class="bl"><div class="br"><div id="ref_padding"><h2>References and Readings:</h2><ul class="references">'
    + txtArea.value.substring(selStart, selEnd)
    + '</ul></div></div></div></div></div></div></div></div></div>'
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function IR()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="top"><div class="left"><div class="bottom"><div class="right"><div class="tl"><div class="tr"><div class="bl"><div class="br"><div id="ref_padding">'
    + txtArea.value.substring(selStart, selEnd)
    + '</div></div></div></div></div></div></div></div></div>'
    + txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function WhatWasSaid()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<h4 class="wwslink"><a onclick="blind3.start();" style="cursor: pointer">Click to view text of what was said</a></h4><div class="wwsDiv" id="slideItDown1" style="height:0px"><div class="Scenario"><div id="quotetext">'
    + txtArea.value.substring(selStart, selEnd)
    + '</div><p class="quotecite"> </p></div></div><script type="text/javascript">var blind3 = new Spry.Effect.Blind("slideItDown1", {duration: 2000, from: "0px", to: "200px", toggle: true});	</script>'
  	+ txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function MySummary()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="top"><div class="left"><div class="bottom"><div class="right"><div class="tl"><div class="tr"><div class="bl"><div class="br"><div id="ref_padding">'
    + txtArea.value.substring(selStart, selEnd)
    + '</div></div></div></div></div></div></div></div></div>'
  	+ txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function Summary()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="top"><div class="left"><div class="bottom"><div class="right"><div class="tl"><div class="tr"><div class="bl"><div class="br"><div id="ref_padding"><i>'
    + txtArea.value.substring(selStart, selEnd)
    + '</i></div></div></div></div></div></div></div></div></div>'
  	+ txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function MeaningMaking()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="top"><div class="left"><div class="bottom"><div class="right"><div class="tl"><div class="tr"><div class="bl"><div class="br"><div id="ref_padding">'
    + txtArea.value.substring(selStart, selEnd)
    + '</div></div></div></div></div></div></div></div></div>'
  	+ txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function NoticingSelf()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '<div class="top"><div class="left"><div class="bottom"><div class="right"><div class="tl"><div class="tr"><div class="bl"><div class="br"><div id="ref_padding">'
    + txtArea.value.substring(selStart, selEnd)
    + '</div></div></div></div></div></div></div></div></div>'
  	+ txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function DoubleQuotes()
  {
    Initialize();

    txtArea.value = txtArea.value.substring(0, selStart)
    + '&#8220;'
    + txtArea.value.substring(selStart, selEnd)
    + '&#8221;'
  	+ txtArea.value.substring(selEnd, txtArea.value.length);

    Finalize();

    return false;
  }

  function VideoClip(whatwassaid) {
    Initialize();
    var newContents;

    newContents = txtArea.value.substring(0, selStart)
      + '<div class="videowrapper">'
      + '<script type="text/javascript">flash_write(\'Flash_Movies/FOLDERNAME/container.swf?path=Flash_Movies/FOLDERNAME/MOVIENAME.swf\', 640, 523);</script>'

    if(whatwassaid == true) {
      newContents += '<div class="blind"><h4 class="wwslink">'
        + '<a href="#" onclick="Effect.toggle(\'slideItDown1\', \'slide\'); return false;">Click to view text of what was said</a></h4>'
        + '<div id="slideItDown1" style="display:none"><div><div class="video_quote"><div id="video_quote_text">Ahm....(exhale of breath)...ahfw....ahm....umm...</div>'
        + '<p class="video_quote_cite"></p></div></div></div></div>'
    }

    newContents += '</div>'
    	+ txtArea.value.substring(selEnd, txtArea.value.length);

    txtArea.value = newContents;

    Finalize();

    return false;
  }