.flash version=6 bbox=1024x180 background=#c0c0ff

    .font arial filename=Arial.ttf

    .text line1 font=arial text="select me! select me! select me!" color=black size=50%
    .text line2 font=arial text="abcdefghijklmnopqrtuvwxyz" color=black size=50%
    .text line3 font=arial text="The quick brown fox jumps over the lazy dog" color=black size=50%

    .frame 1

	.sprite TextBox
	    .put line1 x=0 y=50
	    .put line2 x=0 y=100
	    .put line3 x=0 y=150
	.end
	.put TextBox

    .frame 2

    .action:
	str = TextBox.getTextSnapShot();
	str.setSelectColor(0xffff00);
	firstChar = -1;

        TextBox.onMouseDown = function() {
	    firstChar = str.hitTestTextNearPos(_xmouse, _ymouse, 0);
	    str.setSelected(0, str.getCount(), false);
	    _root.text_selection = str.getSelectedText(true);
        };

        TextBox.onMouseUp = function() {
	    if (firstChar >= 0) {
		lastChar = str.hitTestTextNearPos(_xmouse, _ymouse, 0);
		if (firstChar != lastChar) {
		     if (firstChar < lastChar) {
			 str.setSelected(firstChar, lastChar+1, true);
			 _root.text_selection = str.getSelectedText(true);
		     } else {
			 str.setSelected(lastChar, firstChar+1, true);
		     }
		 }
		 _root.text_selection = str.getSelectedText(true);
		 firstChar = -1;
		 lastChar = -1;
	    }
        };

        TextBox.onMouseMove = function() {
	    if(firstChar != -1) {
		str.setSelected(0, str.getCount(), false); //unselect everything

		lastChar = str.hitTestTextNearPos(_xmouse, _ymouse, 0);
		if (firstChar < lastChar) {
		    str.setSelected(firstChar, lastChar+1, true);
		} else if(lastChar >= 0) {
		    str.setSelected(lastChar, firstChar+1, true);
		}
		_root.text_selection = str.getSelectedText(true);
	    }
        };
    .end

    .frame 3
	.action:
	    Stop();
	.end

.end