<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jozef Chúťka&#039;s blog &#187; text</title>
	<atom:link href="http://blog.yoz.sk/tag/text/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.yoz.sk</link>
	<description>My life, my work</description>
	<lastBuildDate>Tue, 31 Jan 2012 12:40:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>LinkedTextFields Class To Split Text Into Multiple TextFields (update)</title>
		<link>http://blog.yoz.sk/2010/04/linkedtextfields-class-to-split-text-into-multiple-textfields/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=linkedtextfields-class-to-split-text-into-multiple-textfields</link>
		<comments>http://blog.yoz.sk/2010/04/linkedtextfields-class-to-split-text-into-multiple-textfields/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 11:38:18 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[columns]]></category>
		<category><![CDATA[delimiter]]></category>
		<category><![CDATA[htmlText]]></category>
		<category><![CDATA[LinkedTextFields]]></category>
		<category><![CDATA[split]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[TextFields]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=1415</guid>
		<description><![CDATA[While watching Adobe Creative Suite 5 demonstration, I got inspired to create LinkedTextFields Class. In Flash CS5 IDE there is a new function that lets you link text fields in order to split one text into all fields based on how much fits in each (for example article columns). I tought it must be possible [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/linkedTextFields.png" alt="" title="linkedTextFields" width="200" height="100" class="alignleft size-full wp-image-1419" /></p>
<p>While watching <a href="http://cs5launch.adobe.com/">Adobe Creative Suite 5</a> demonstration, I got inspired to create LinkedTextFields Class. In Flash CS5 IDE there is a new function that lets you link text fields in order to split one text into all fields based on how much fits in each (for example article columns). I tought it must be possible to do this with ActionScript 3. And it is. I created this lightweight LinkedTextFields Class that does exact the same thing as the new tool in CS5. LinkedTextFields Class lets you render plain text as well as HTML text. By default, text is splited based on white space characters, but you can define your own delimiters. Long story short, here is the proof of concept:</p>
<p><span id="more-1415"></span></p>
<div style="text-align:center;width:465px;"><iframe title="forked from: Linked TextField-s - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/hjTb" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/c/hjTb" title="forked from: Linked TextField-s - wonderfl build flash online">forked from: Linked TextField-s &#8211; wonderfl build flash online</a></div>
<p><a href="http://classes.yoz.sk/sk/yoz/text/LinkedTextFields.as">sk.yoz.text.LinkedTextFields</a> Class.</p>
<p>Update (Apr 15, 2010): improved performance, &lt;br&gt; tag support</p>
<pre class="brush: as3; title: ; notranslate">package sk.yoz.text
{
    import flash.events.EventDispatcher;
    import flash.text.TextField;

    public class LinkedTextFields extends EventDispatcher
    {
        public static const DEFAULT_TEXT_DELIMITER:RegExp = /(\s)/;
        public static const DEFAULT_HTML_DELIMITER:RegExp = /([\s&lt;&gt;])/;

        public var autoRender:Function = null;
        public var textDelimiter:RegExp;
        public var htmlDelimiter:RegExp;

        protected var list:Array = [];
        protected var _text:String;

        public function LinkedTextFields(autoRender:Function = null,
            delimiter:RegExp = null, htmlDelimiter:RegExp = null)
        {
            super();

            this.autoRender = autoRender;
            this.textDelimiter = textDelimiter
                ? textDelimiter
                : DEFAULT_TEXT_DELIMITER;
            this.htmlDelimiter = htmlDelimiter
                ? htmlDelimiter
                : DEFAULT_HTML_DELIMITER;
        }

        public function set text(value:String):void
        {
            _text = value;
            if(autoRender != null)
                autoRender();
        }

        public function get text():String
        {
            return _text;
        }

        public function add(textField:TextField, index:int = -1):void
        {
            if(index == -1)
                list.push(textField);
            else
                list.splice(index, 0, textField);
            if(autoRender != null)
                autoRender();
        }

        public function remove(textField:TextField):void
        {
            var index:int = list.indexOf(textField);
            if(index != -1)
                list.splice(index, 1);
            if(autoRender != null)
                autoRender();
        }

        public function renderText():void
        {
            emptyTextFields(&quot;text&quot;);
            if(!this.text)
                return;

            var chunk:String, prevText:String;
            var chunks:Array = text.split(textDelimiter);
            var textField:TextField = list[0];
            var last:Boolean = !nextTextField(textField);

            while(chunks.length)
            {
                chunk = chunks.shift();
                if(chunk == &quot;\r&quot;)
                    chunk = &quot;\n&quot;;
                prevText = textField.text;
                textField.appendText(chunk);
                if(!last &amp;&amp; textField.maxScrollV &gt; 1)
                {
                    textField.text = prevText;
                    textField = nextTextField(textField);
                    textField.text = chunk;
                    if(!nextTextField(textField))
                        last = true;
                }
            }
        }

        public function renderHtmlText():void
        {
            emptyTextFields(&quot;htmlText&quot;);
            if(!this.text)
                return;

            var chunk:String, text:String = &quot;&quot;, prevText:String;
            var chunks:Array = this.text.split(htmlDelimiter);
            var textField:TextField = list[0];
            var last:Boolean = !nextTextField(textField);
            var tag:String = &quot;&quot;, tagName:String, isTag:Boolean, tags:Array = [];

            while(chunks.length)
            {
                chunk = chunks.shift();

                if(chunk == &quot;&lt;&quot;)
                    isTag = true;

                if(isTag &amp;&amp; tag == &quot;&lt;&quot;)
                {
                    tagName = chunk.toLowerCase();
                    if(tagName.substr(0, 1) == &quot;/&quot;)
                        removeLastTag(tags, tagName.substr(1));
                    else
                        addTag(tags, tagName);
                }

                if(isTag)
                    tag += chunk;

                if(isTag &amp;&amp; chunk == &quot;&gt;&quot;)
                {
                    isTag = false;
                    if(tag.substr(-2) == &quot;/&gt;&quot; || tagName == &quot;br&quot;)
                        removeLastTag(tags, tagName);
                    else if(tag.substr(0, 2) != &quot;&lt;/&quot;)
                        addLastTagDefinition(tags, tag);
                    chunk = tag;
                    tag = &quot;&quot;;
                }

                if(isTag)
                    continue;

                prevText = text;
                text += chunk;
                textField.htmlText = text + writeAllTagClosage(tags);

                if(last || textField.maxScrollV &lt;= 1)
                    continue;

                textField.htmlText = prevText + writeAllTagClosage(tags);
                textField = nextTextField(textField);
                text = writeAllTagDefinitions(tags) + chunk;
                if(!nextTextField(textField))
                    last = true;
            }

            textField.htmlText = text + writeAllTagClosage(tags);

        }

        public function emptyTextFields(type:String = &quot;text&quot;):void
        {
            for each(var textField:TextField in list)
                textField[type == &quot;text&quot; ? type : &quot;htmlText&quot;] = &quot;&quot;;
        }

        protected function addTag(list:Array, tagName:String):void
        {
            list.push({name:tagName});
        }

        protected function addLastTagDefinition(list:Array, definition:String)
            :void
        {
            list[list.length - 1].definition = definition;
        }

        protected function writeAllTagDefinitions(list:Array):String
        {
            var definitions:String = &quot;&quot;;
            for each(var item:Object in list)
                definitions += item.definition;
            return definitions;
        }

        protected function writeAllTagClosage(list:Array):String
        {
            var closage:String = &quot;&quot;;
            for(var i:int = list.length - 1; i &gt;= 0; i--)
                closage += &quot;&lt;/&quot; + list[i].name + &quot;&gt;&quot;;
            return closage;
        }

        protected function removeLastTag(list:Array, tagName:String):void
        {
            if(list[list.length - 1].name == tagName)
                list.splice(list.length - 1, 1);
        }

        protected function nextTextField(textField:TextField):TextField
        {
            var index:int = list.indexOf(textField);
            if(index == -1 || index + 1 &gt;= list.length)
                return null;
            return list[index + 1];
        }
    }
}</pre>
<p>Usage:</p>
<pre class="brush: as3; title: ; notranslate">package
{
    import flash.display.Sprite;
    import flash.text.TextField;

    import sk.yoz.text.LinkedTextFields;

    [SWF(width=&quot;465&quot;, height=&quot;465&quot;, frameRate=&quot;30&quot;, backgroundColor=&quot;#ffffff&quot;)]

    public class Linked extends Sprite
    {
        private var link:LinkedTextFields = new LinkedTextFields();

        public static const TEXT:String = &quot;Lorem ipsum dolor sit amet, consec&quot; +
                &quot;tetur adipiscing elit. Vivamus mattis purus ac diam bibendum&quot; +
                &quot; vitae rhoncus sapien posuere.\n\nVestibulum gravida mi vel &quot; +
                &quot;pis cursus sit amet interdum eros egestas. Nunc fermentum ul&quot; +
                &quot;tricies velit, non dictum est venenatis ultricies. Pellentes&quot; +
                &quot;que vehicula lectus nec nibh mollis pellentesque. Aenean vit&quot; +
                &quot;ae tortor lectus. Nulla imperdiet erat nec sapien ornare ut &quot; +
                &quot;laoreet sem venenatis. Mauris ipsum augue, lacinia sed solli&quot; +
                &quot;citudin interdum, rutrum ornare nisl. Nulla interdum lorem a&quot; +
                &quot;ccumsan leo tincidunt adipiscing. Nunc egestas blandit nibh,&quot; +
                &quot; ultrices accumsan tortor commodo non. Cras tempus scelerisq&quot; +
                &quot;ue ullamcorper.\n\nNullam velit lacus, facilisis vel pharetr&quot; +
                &quot;a in, lacinia vitae purus. Sed nisl lorem, lacinia a molesti&quot; +
                &quot;e eu, pretium at justo. Nulla facilisi. Maecenas sagittis te&quot; +
                &quot;llus quis sapien vestibulum gravida. Suspendisse potenti. Cu&quot; +
                &quot;rabitur at felis et nisl tincidunt condimentum ut nec eros. &quot; +
                &quot;Pellentesque neque magna, venenatis sit amet bibendum eget, &quot; +
                &quot;cursus eu sapien. Nulla malesuada convallis felis nec congue&quot; +
                &quot;. Sed lorem massa, egestas a pharetra commodo, consectetur i&quot; +
                &quot;mperdiet odio. Nullam nec neque ac metus ultrices commodo. M&quot; +
                &quot;aecenas a lorem sed augue tincidunt tincidunt. Nam lobortis &quot; +
                &quot;vestibulum massa, ut viverra leo venenatis a. Praesent scele&quot; +
                &quot;risque, velit non tempor euismod, tellus nulla aliquam nisi,&quot; +
                &quot; vitae vestibulum lectus est vel neque. Class aptent taciti &quot; +
                &quot;sociosqu ad litora torquent per conubia nostra, per inceptos&quot; +
                &quot; himenaeos. Proin eleifend turpis vel lectus vehicula accums&quot; +
                &quot;an. Vestibulum aliquam mi et metus tristique fermentum. Null&quot; +
                &quot;a eget lorem in mi feugiat sollicitudin at quis lacus.&quot;;

        public static const HTML:String = &quot;&lt;font size='20'&gt;Lorem ipsum &lt;font &quot; +
                &quot;color='#ff0000'&gt;dolor sit amet&lt;/font&gt;, consectetur &lt;font fac&quot; +
                &quot;e='_sans'&gt;&lt;b&gt;adipiscing&lt;/b&gt; elit. Aliquam ac orci &lt;u&gt;urna, e&quot; +
                &quot;u ornare ue. &lt;b&gt;Nullam &lt;font color='#00ff00'&gt;suscipit, &lt;font&quot; +
                &quot; color='#0000ff'&gt;turpis vitae viverra ultrices&lt;/font&gt;, turpi&quot; +
                &quot;s nisl euismod lorem, convallis tristique&lt;/font&gt; lectus risu&quot; +
                &quot;s&lt;/b&gt; convallis&lt;/u&gt; orci. Vitae vestibulum lectus&lt;/font&gt; &lt;fo&quot; +
                &quot;nt size='15' color='#999999'&gt;est vel neque. Class aptent tac&quot; +
                &quot;iti &lt;b&gt;sociosqu ad litora &lt;u&gt;torquent&lt;/u&gt; per conubia nostra&quot; +
                &quot;&lt;/b&gt;, per inceptos eget lorem in mi feugiat sollicitudin at &quot; +
                &quot;quis lacus ultrices accumsan tortor commodo non. Cras tempus&quot; +
                &quot; scelerisq&lt;/font&gt;&lt;/font&gt;&quot;;

        public function Linked():void
        {
            super();

            var textField1:TextField = new TextField();
            textField1.x = 10;
            textField1.y = 10;
            textField1.width = 410;
            textField1.height = 100;
            textField1.border = true;
            textField1.wordWrap = true;
            addChild(textField1);

            var textField2:TextField = new TextField();
            textField2.x = 10;
            textField2.y = 120;
            textField2.width = 200;
            textField2.height = 100;
            textField2.border = true;
            textField2.wordWrap = true;
            addChild(textField2);

            var textField3:TextField = new TextField();
            textField3.x = 220;
            textField3.y = 120;
            textField3.width = 200;
            textField3.height = 100;
            textField3.border = true;
            textField3.wordWrap = true;
            addChild(textField3);

            link.add(textField1);
            link.add(textField3);
            link.add(textField2, 1);

            //link.text = TEXT;
            link.text = HTML;
            link.renderHtmlText();
        }
    }
}
</pre>
<p>You may ask, wheter this is also possible on for example Flex components, and the answer is: YES! Every single component that uses text uses TextField to render it, but there text fields are hidden under internal namespace. For example for TextInput/TextArea components you reach TextField this way:</p>
<pre class="brush: as3; title: ; notranslate">import mx.core.mx_internal;
use namespace mx_internal;
var tf:TextField = TextField(textAreaId.getTextField());</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2010/04/linkedtextfields-class-to-split-text-into-multiple-textfields/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TextInput wmode opaque/tranpsarent workaround</title>
		<link>http://blog.yoz.sk/2010/02/textinput-wmode-opaque-transparent-workaround/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=textinput-wmode-opaque-transparent-workaround</link>
		<comments>http://blog.yoz.sk/2010/02/textinput-wmode-opaque-transparent-workaround/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 10:27:56 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[allowscriptaccess]]></category>
		<category><![CDATA[FlexIFrame]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[opaque]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[transparent]]></category>
		<category><![CDATA[wmode]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=1004</guid>
		<description><![CDATA[Many of you have come accross the horrendous bug that happens with text input in flash when the swf is embedded with wmode=transparent/opaque. It has been much discussed (Firefox Bugzilla entry for this bug, Adobe Forum discussion, etc.), but it seems that in all the years that this bug has existed nothing much has been [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/fakeTextInput-200x100.png" alt="" title="fakeTextInput" width="200" height="100" class="alignleft size-medium wp-image-1015" /></p>
<p>Many of you have come accross the horrendous bug that happens with text input in flash when the swf is embedded with wmode=transparent/opaque. It has been much discussed (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=347185">Firefox Bugzilla entry for this bug</a>, <a href="http://bugs.adobe.com/jira/browse/FP-479">Adobe Forum discussion</a>, etc.), but it seems that in all the years that this bug has existed nothing much has been done. A <a href="http://www.google.cz/search?hl=cs&#038;rlz=1C1GGLS_csCZ334CZ334&#038;q=wmode+transparent+text+input+workaround&#038;btnG=Hledat&#038;lr=&#038;aq=f&#038;oq=">lot of workarounds have been published</a>, many of them based on custom key mapping etc&#8230; My workaround uses html element &lt;input type=&#8221;text&#8221;&gt; that is placed right over flex &lt;mx:TextInput&gt;. Html element is styled transparent (no design) so user will not notice.</p>
<p><span id="more-1004"></span></p>
<p>Following application uses wmode &#8220;opaque&#8221;, try inserting characters (čšň) into first text input (mx:TextInput) and than into second (uses html &lt;input type=&#8221;text&#8221;&gt; over flash)</p>
<p><iframe width="100%" height="300" src="http://blog.yoz.sk/examples/fakeTextInput/"></iframe></p>
<p>Main application</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot;
    applicationComplete=&quot;init()&quot; viewSourceURL=&quot;srcview/index.html&quot;&gt;
&lt;mx:Script&gt;
&lt;![CDATA[
    import mx.managers.PopUpManager;
    private function init():void
    {
        var window:FakeInputsWindow = new FakeInputsWindow();
        PopUpManager.addPopUp(window, this);
        PopUpManager.centerPopUp(window);
    }
]]&gt;
&lt;/mx:Script&gt;
&lt;/mx:Application&gt;</pre>
<p>FakeInputsWindow</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:TitleWindow
    xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot;
    xmlns:html=&quot;sk.yoz.html.*&quot;
    layout=&quot;vertical&quot; width=&quot;400&quot; height=&quot;250&quot;
    creationComplete=&quot;init()&quot;
    move=&quot;moveHandler()&quot;&gt;
&lt;mx:Script&gt;
&lt;![CDATA[
    [Bindable]
    private var text2:String = &quot;&quot;;

    private function init():void
    {
        ExternalInterface.addCallback(&quot;fakeTextInputChange&quot;, fakeTextChange);
    }

    private function moveHandler():void
    {
        fakeTextInput.positionChanged = true;
        fakeTextInput.invalidateProperties();
    }

    private function fakeTextChange(value:String):void
    {
        text2 = value;
    }
]]&gt;
&lt;/mx:Script&gt;
&lt;mx:Text text='&amp;lt;mx:TextInput ....'/&gt;
&lt;mx:TextInput id=&quot;text1&quot; width=&quot;300&quot; height=&quot;20&quot;/&gt;
&lt;mx:Label text=&quot;{text1.text}&quot; /&gt;
&lt;mx:Spacer height=&quot;10&quot; /&gt;
&lt;mx:Text text='&amp;lt;input type=&quot;text&quot; ....'/&gt;
&lt;mx:Canvas width=&quot;300&quot; height=&quot;20&quot;&gt;
    &lt;mx:TextInput width=&quot;300&quot; height=&quot;20&quot;/&gt;
    &lt;html:IFrame width=&quot;100%&quot; height=&quot;100%&quot; id=&quot;fakeTextInput&quot;
        autoResize=&quot;true&quot;/&gt;
&lt;/mx:Canvas&gt;
&lt;mx:Label text=&quot;{text2}&quot; /&gt;
&lt;/mx:TitleWindow&gt;</pre>
<p>lines:</p>
<ul>
<li>15: javascript-to-flash callback definition fakeTextInputChange (from javascript) sends value into actionscript fakeTextChange()</li>
<li>18: fakeTextInput is IFrame class, that controls position and size of html input, lets correct position on TitleWindow move&#8230;</li>
<li>35-39: I placed IFrame over TextInput. IFrame is in fact transparent html input, so what user see is just flex TextInput graphics</li>
</ul>
<p>Html template file</p>
<pre class="brush: xml; title: ; notranslate">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;
&lt;head&gt;
    &lt;title&gt;FakeTextInput&lt;/title&gt;
    ...
    &lt;script type=&quot;text/javascript&quot; src=&quot;js/swfobject.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;js/flexiframe.js&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot;&gt;
    &lt;!--
        var flashvars = {}

        var params = {
            allowscriptaccess: &quot;always&quot;,
            wmode: &quot;opaque&quot;
        };
        var attributes = {
            id: &quot;flash&quot;
        };
        swfobject.embedSWF(&quot;Tests.swf&quot;, &quot;alternative&quot;, &quot;100%&quot;, &quot;100%&quot;, &quot;10.0.0&quot;,
            &quot;flash/expressInstall.swf&quot;, flashvars, params, attributes);

        function fakeTextInputChange()
        {
            var input = document.getElementById('fakeTextInput');
            var flash = document.getElementById('flash');
            flash.fakeTextInputChange(input.value);
        }
    //--&gt;
    &lt;/script&gt; 

    &lt;style type='text/css'&gt;
    &lt;!--
        body {margin:0px;overflow:hidden;}
        html, body, object, embed {width:100%;height:100%;outline:none;}
        #fakeTextInput {
            position:absolute;
            border:none;
            outline:none;
            padding:0;
            margin:0;
            background:transparent url(&quot;images/spacer.gif&quot;);
            vertical-align:middle;
        }
    --&gt;
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id=&quot;alternative&quot;&gt;
        &lt;a href=&quot;http://www.adobe.com/go/getflashplayer&quot;&gt;
            &lt;img src=&quot;http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif&quot; alt=&quot;Get Adobe Flash player&quot; /&gt;
        &lt;/a&gt;
    &lt;/div&gt;
    &lt;input type=&quot;text&quot; id=&quot;fakeTextInput&quot; onkeyup=&quot;fakeTextInputChange()&quot;/&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Notice lines:</p>
<ul>
<li>07: import <a href="http://blog.yoz.sk/2009/10/flex-iframe-web-browser-in-flash/">flexiframe.js</a> used for positioning html input on correct place</li>
<li>13: allowscriptaccess must be enabled</li>
<li>14: wmode opaque/transparent is what the source of all evil</li>
<li>22: javascript-to-flash communication</li>
<li>35-42: remove all html input text design and makes it transparent</li>
<li>53: input text definition, you may want to define your own handlers (submit, paste, focus&#8230;)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2010/02/textinput-wmode-opaque-transparent-workaround/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

