<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>javascript &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/javascript/</link>
	<description>Feed of posts on WordPress.com tagged "javascript"</description>
	<pubDate>Wed, 06 Jan 2010 04:02:15 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Reusable, centralized AJAX component based on jQuery]]></title>
<link>http://globalgateway.wordpress.com/2010/01/05/reusable-centralized-ajax-component-based-on-jquery/</link>
<pubDate>Wed, 06 Jan 2010 01:05:13 +0000</pubDate>
<dc:creator>Ben</dc:creator>
<guid>http://globalgateway.wordpress.com/2010/01/05/reusable-centralized-ajax-component-based-on-jquery/</guid>
<description><![CDATA[When working on applications that use JavaScript you want to apply good practices like design patter]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>When working on applications that use JavaScript you want to apply good practices like design patterns also on the client-side. Often times you&#8217;ll find yourself using the same piece of code over and over again but slightly changing parts of it. Sometimes you even want to have a centralized functionality you want to reuse across your application.</p>
<p>If your application makes AJAX calls to your server-side components <a href="http://docs.jquery.com/Ajax">jQuery&#8217;s AJAX implementation</a> comes in handy. Usually you want to handle at least the successful and erroneous response of that call. Today&#8217;s web applications (like <a href="http://www.gmail.com">Gmail</a>) based on a lot of AJAX calls display a &#8220;busy/loading&#8221; indicator like a <a href="http://www.ajaxload.info/">spinner</a> or some text.</p>
<p>JavaScript supports the Factory pattern (see the book <a href="http://www.apress.com/book/view/159059908x">&#8220;Pro JavaScript Design Patterns&#8221;</a>) which lets you create an implementation with the <code>new</code> keyword. The nice thing about it is that you can even create multiple implementations that handle your HTTP calls differently. The methods are being added over the the class&#8217;s <a href="http://mckoss.com/jscript/object.htm">prototype object</a>. Below you&#8217;ll find an implementation for making AJAX calls using jQuery. For each GET or POST call you pass in a callback variable. The callback variable defines how to handle the response.</p>
<p><strong>ajax.js:</strong><br />
<font size="2"></p>
<pre>
<code>
var AjaxHttpSender = function() {};

AjaxHttpSender.prototype.sendGet = function(url, callback) {
   $.ajax({
      url: url,
      type: 'GET',
      beforeSend: function() {
         onStartAjaxRequest();
      },
      error: function(XMLHttpRequest, textStatus, errorThrown) {
         callback.failure(XMLHttpRequest, textStatus, errorThrown);
      },
      success: function(data, textStatus) {
         callback.success(data, textStatus);
      },
      complete: function (XMLHttpRequest, textStatus) {
         onEndAjaxRequest();
      }
   });
}

AjaxHttpSender.prototype.sendPost = function(url, data, callback) {
   $.ajax({
      url: url,
      type: 'POST',
      data: data,
      beforeSend: function() {
         onStartAjaxRequest();
      },
      error: function(XMLHttpRequest, textStatus, errorThrown) {
         callback.failure(XMLHttpRequest, textStatus, errorThrown);
      },
      success: function(data, textStatus) {
         callback.success(data, textStatus);
      },
      complete: function (XMLHttpRequest, textStatus) {
         onEndAjaxRequest();
      }
   });
}

function onStartAjaxRequest() {
    // e.g. show spinner
}

function onEndAjaxRequest() {
    // e.g. hide spinner
}
</code>
</pre>
<p></font><br />
<strong>Usage Example:</strong><br />
<font size="2"></p>
<pre>
<code>
&#60;script type="text/javascript" src="js/jquery-1.3.2.min.js"&#62;&#60;/script&#62;
&#60;script type="text/javascript" src="js/ajax.js"&#62;&#60;/script&#62;
&#60;script type="text/javascript"&#62;
   var callback = {
      success: function(data, textStatus) {
         $('#content').html(data);
      },
      failure: function(XMLHttpRequest, textStatus, errorThrown) {
         alert('Error making AJAX call: ' + XMLHttpRequest.statusText + ' (' + XMLHttpRequest.status + ')');
      }
   }

   function makeAjaxCall() {
      var ajaxHttpSender = new AjaxHttpSender();
      ajaxHttpSender.sendGet(url, callback);
   }
&#60;/script&#62;
</code>
</pre>
<p></font></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[A bookmarklet for searching delicious]]></title>
<link>http://magicrebirth.wordpress.com/2010/01/06/a-bookmarklet-for-searching-delicious/</link>
<pubDate>Tue, 05 Jan 2010 23:02:29 +0000</pubDate>
<dc:creator>magicrebirth</dc:creator>
<guid>http://magicrebirth.wordpress.com/2010/01/06/a-bookmarklet-for-searching-delicious/</guid>
<description><![CDATA[This has been long overdue for me. A way to quickly search delicious.com without relying on third-pa]]></description>
<content:encoded><![CDATA[This has been long overdue for me. A way to quickly search delicious.com without relying on third-pa]]></content:encoded>
</item>
<item>
<title><![CDATA[Validate FCKEditor Control]]></title>
<link>http://yasserzaid.wordpress.com/2010/01/05/validate-fckeditor-control/</link>
<pubDate>Tue, 05 Jan 2010 21:59:37 +0000</pubDate>
<dc:creator>yasserzaid</dc:creator>
<guid>http://yasserzaid.wordpress.com/2010/01/05/validate-fckeditor-control/</guid>
<description><![CDATA[Hi try this example to Validate FCKEditor Control using CustomValidator control Your HTML Markup for]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Hi</p>
<p>try this example to Validate FCKEditor Control using CustomValidator control</p>
<p>Your HTML Markup for FCKEditor:</p>
<pre class="brush: plain;">&#60;FCKeditorV2:FCKeditor ID=&#34;HTMLFCKeditor&#34; runat=&#34;server&#34; Height=&#34;400px&#34; Width=&#34;100%&#34;&#62;
&#60;/FCKeditorV2:FCKeditor&#62;
&#60;asp:CustomValidator ID=&#34;CustomValidator2&#34; runat=&#34;server&#34; ValidationGroup=&#34;Invitation&#34;
ErrorMessage=&#34;Enter Message !&#34; Display=&#34;Dynamic&#34; ClientValidationFunction=&#34;ValidateFCKEditor&#34;&#62;&#60;/asp:CustomValidator&#62;</pre>
<p>CustomValidator Javascript Function:</p>
<pre class="brush: plain;">function ValidateFCKEditor(source, args)
{
    var fckEditorClientID = document.getElementById('&#60;%=HTMLFCKeditor.ClientID%&#62;');              
    args.IsValid = FCKeditorAPI.GetInstance(fckEditorClientID.id).GetXHTML(true) != &#34;&#34;;      
}</pre>
<p>Hope this helps</p>
<p>Good Luck.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Ajax.Autocompleter is not a constructor]]></title>
<link>http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/</link>
<pubDate>Tue, 05 Jan 2010 16:38:48 +0000</pubDate>
<dc:creator>osblues</dc:creator>
<guid>http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/</guid>
<description><![CDATA[Just before I Xmas I spent ages struggling with the &#8220;Ajax.Autocompleter is not a constructor]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Just before I Xmas I spent ages struggling with the &#8220;<strong>Ajax.Autocompleter is not a constructor</strong>&#8221; error while trying to add a script.aculo.us autocompleter to a textbox.  I&#8217;ve done them loads of times before and never had an issue so unsurprisingly this infuriated me!</p>
<p>I checked online and found suggestions to do with referencing prototype more than once, and not including the right bits of script.aculo.us (effects.js, I think it&#8217;s in).  But none of those were the case.</p>
<p>In the end I found the answer myself&#8230; I&#8217;d followed the generally good practice of placing all my javascript references and code at the bottom of my page (just before /body) which is how I always do things nowadays.  This works absolutely great when working with prototype as it means the page doesn&#8217;t have to wait for the library to load and things therefore aren&#8217;t unnecessarily delayed.  Now, I say it works great for prototype, it doesn&#8217;t however work for script.aculo.us, THIS HAS TO GO IN THE HEAD!</p>
<p>So, there we have it, if you hit this problem and you&#8217;re doing &#8220;the right thing&#8221; by including your javascript goodies at the bottom of your page, I&#8217;m afraid that won&#8217;t work here.  Move your JS references to your head and things work dandy again.  You can still do your actual javascript code before /body (which I would suggest you do), just include the references to prototype and scriptaculous in the head.</p>
<p>I hope this helps&#8230;. and saves some hair pulling.</p>
<p><a title="add to del.icio.us" rel="nofollow" href="http://del.icio.us/post?url=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;title=Ajax.Autocompleter+is+not+a+constructor"><img title="del.icio.us:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/delicious.gif" alt="add to del.icio.us" /></a> :: <a title="add to Technorati" rel="nofollow" href="http://technorati.com/faves/?add=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;title=Ajax.Autocompleter+is+not+a+constructor"><img title="Technorati:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/technorati.gif" alt="Bookmark Post in Technorati" /></a> :: <a title="add to Blinkslist" rel="nofollow" href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&#38;Description=&#38;Url=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;Title=Ajax.Autocompleter+is+not+a+constructor"><img title="blinklist:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/blinklist.gif" alt="Add to Blinkslist" /></a> :: <a title="add to Furl" rel="nofollow" href="http://www.furl.net/storeIt.jsp?u=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;t=Ajax.Autocompleter+is+not+a+constructor"><img title="furl:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/furl.gif" alt="add to furl" /></a> :: <a title="Digg it" rel="nofollow" href="http://digg.com/submit?phase=2&#38;url=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/"><img title="Digg it:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/digg.gif" alt="Digg it" /></a> :: <a title="add to ma.gnolia" rel="nofollow" href="http://ma.gnolia.com/bookmarklet/add?url=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;title=Ajax.Autocompleter+is+not+a+constructor"><img title="ma.gnolia:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/magnolia.gif" alt="add to ma.gnolia" /></a> :: <a title="Stumble it!" rel="nofollow" href="http://www.stumbleupon.com/submit?url=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/&#38;title=Ajax.Autocompleter+is+not+a+constructor"><img title="Stumble it:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/stumbleit.gif" alt="Stumble It!" /></a> :: <a title="add to Simpy" rel="nofollow" href="http://www.simpy.com/simpy/LinkAdd.do?url=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;title=Ajax.Autocompleter+is+not+a+constructor"><img title="simpy:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/simpy.png" alt="add to simpy" /></a> :: <a title="seed the vine" rel="nofollow" href="http://www.newsvine.com/_tools/seed&#38;save?url=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;title=Ajax.Autocompleter+is+not+a+constructor"><img title="newsvine:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/newsvine.gif" alt="seed the vine" /></a> :: <a title="add to Reddit" rel="nofollow" href="http://reddit.com/submit?url=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;title=Ajax.Autocompleter+is+not+a+constructor"><img title="reddit:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/reddit.gif" alt="" /></a> :: <a title="add to Fark" rel="nofollow" href="http://cgi.fark.com/cgi/fark/edit.pl?new_url=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;new_comment=Ajax.Autocompleter+is+not+a+constructor"><img title="fark:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/fark.png" alt="" /></a> :: <a title="add to TailRank" rel="nofollow" href="http://tailrank.com/share/?text=&#38;link_href=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/&#38;title=Ajax.Autocompleter+is+not+a+constructor"><img src="http://osblues.files.wordpress.com/2008/07/tailrank.gif" alt="TailRank" /></a> :: <a title="post to FaceBook" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/&#38;t=Ajax.Autocompleter+is+not+a+constructor"><img title="facebook:Ajax.Autocompleter+is+not+a+constructor" src="http://sunburntkamel.files.wordpress.com/2008/02/facebookcom.gif" alt="post to facebook" /></a> :: <a title="bookmark on Google" rel="nofollow" href="http://www.google.com/bookmarks/mark?op=edit&#38;bkmk=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;title=Ajax.Autocompleter+is+not+a+constructor"><img title="Google:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/google_bmarks.gif" alt="Bookmark on Google" /></a> :: <a title="add to Netscape" rel="nofollow" href="http://www.netscape.com/submit/?U=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;title=Ajax.Autocompleter+is+not+a+constructor"><img title="NetScape:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/netscape.gif" alt="Add to Netscape" /></a> :: <a title="share on Yahoo!" rel="nofollow" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;title=Ajax.Autocompleter+is+not+a+constructor"><img title="Yahoo:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/yahoo_myweb.gif" alt="Share on Yahoo" /></a> :: <a title="add this to Live" rel="nofollow" href="https://favorites.live.com/quickadd.aspx?marklet=1&#38;mkt=en-us&#38;url=http://osblues.com/2010/01/05/ajax-autocompleter-is-not-a-constructor/;title=Ajax.Autocompleter+is+not+a+constructor"><img title="Live:Ajax.Autocompleter+is+not+a+constructor" src="http://osblues.files.wordpress.com/2008/07/windows_live.gif" alt="Add this to Live" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Formspring]]></title>
<link>http://wir-sprechen-online.com/2010/01/05/formspring/</link>
<pubDate>Tue, 05 Jan 2010 08:41:28 +0000</pubDate>
<dc:creator>Gerrit Eicker</dc:creator>
<guid>http://wir-sprechen-online.com/2010/01/05/formspring/</guid>
<description><![CDATA[Web forms processing? Formspring offers a nifty service but its social side project needs a makeover]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong><a href="http://wir-sprechen-online.com/tag/web/">Web</a> <a href="http://en.wikipedia.org/wiki/Forms_Processing">forms processing</a>? <a href="http://www.formspring.com/">Formspring</a></strong> offers a nifty <a href="http://www.techcrunch.com/2010/01/04/formspring-ask-me-anything/">service</a> but its <a href="http://www.formspring.me/">social side project</a> needs a makeover; <a href="http://www.readwriteweb.com/archives/anonymity_self-reference_qa_formspringmes_winning.php">http://j.mp/7POZhX</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Redesign HYIP monitor by darksage]]></title>
<link>http://outsourcedjobs.wordpress.com/2010/01/05/redesign-hyip-monitor-by-darksage/</link>
<pubDate>Tue, 05 Jan 2010 06:27:37 +0000</pubDate>
<dc:creator>ejazazeem</dc:creator>
<guid>http://outsourcedjobs.wordpress.com/2010/01/05/redesign-hyip-monitor-by-darksage/</guid>
<description><![CDATA[Anyone have experiences in redesigning the HYIP monitor? I want to redesign my HYIP monitor to be li]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Anyone have experiences in redesigning the HYIP monitor? I want to redesign my HYIP monitor to be like List4hyip.com or Libertyhyip.com. (Budget: $30-250, Jobs: Graphic Design, Javascript, PHP, SQL, Website Design)<br /> <a href="http://www.getafreelancer.com/projects/mea_583088.html"><b>Bid on this project</b></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Redesign HYIP monitor by darksage]]></title>
<link>http://phpcareers.wordpress.com/2010/01/05/redesign-hyip-monitor-by-darksage/</link>
<pubDate>Tue, 05 Jan 2010 06:27:35 +0000</pubDate>
<dc:creator>ejazazeem</dc:creator>
<guid>http://phpcareers.wordpress.com/2010/01/05/redesign-hyip-monitor-by-darksage/</guid>
<description><![CDATA[Anyone have experiences in redesigning the HYIP monitor? I want to redesign my HYIP monitor to be li]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Anyone have experiences in redesigning the HYIP monitor? I want to redesign my HYIP monitor to be like List4hyip.com or Libertyhyip.com. (Budget: $30-250, Jobs: Graphic Design, Javascript, PHP, SQL, Website Design)<br /> <a href="http://www.getafreelancer.com/projects/mea_583088.html"><b>Bid on this project</b></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Nifty little encoder decoder utility]]></title>
<link>http://localgovernmentsharepoint.wordpress.com/2010/01/04/nifty-little-encoder-decoder-utility/</link>
<pubDate>Mon, 04 Jan 2010 19:44:30 +0000</pubDate>
<dc:creator>Rob Ashcroft</dc:creator>
<guid>http://localgovernmentsharepoint.wordpress.com/2010/01/04/nifty-little-encoder-decoder-utility/</guid>
<description><![CDATA[Found a nice website tool that can used to encode or decode text strings as you like. I found this p]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Found a nice website tool that can used to encode or decode text strings as you like.  I found this particularly useful for decrypting a SharePoint GUID, however it could be handy for turning encoded JavaScript URLs from complete gibberish into readable gibberish.</p>
<p>The URL is: http://meyerweb.com/eric/tools/dencoder/   </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cons &amp; Pros [ShuraTech]]]></title>
<link>http://jaqoup.wordpress.com/2010/01/04/cons-pros-shuratech/</link>
<pubDate>Mon, 04 Jan 2010 18:59:20 +0000</pubDate>
<dc:creator>Jaqoup</dc:creator>
<guid>http://jaqoup.wordpress.com/2010/01/04/cons-pros-shuratech/</guid>
<description><![CDATA[This company is located in El Maadi, here and that was the first company I&#8217;ve been in, that wa]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;"><a href="http://www.shuratech.com/"><img class="size-full wp-image-651 aligncenter" style="border:0 initial initial;" src="http://jaqoup.wordpress.com/files/2009/12/shuratecht.gif" alt="" width="133" height="111" /></a></p>
<p>This company is located in El Maadi, <a href="http://wikimapia.org/#lat=29.9664744&#38;lon=31.2479174&#38;z=18&#38;l=0&#38;m=s&#38;v=9" target="_blank">here</a></p>
<p>and that was the first company I&#8217;ve been in, that was internship, i lasted there for a month.</p>
<p>it was a small company, we where 8 developers there during that time, but they&#8217;ve increased now.</p>
<p>it had relatively good projects and clients</p>
<p><!--more--></p>
<p>the thing that made me very happy in the first week there, i wrote some AJAX code implementing the auto-complete like google&#8217;s <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>and implemented two algorithms i had just learned while ACMing in JAVA (edit distance, soundex)</p>
<p>the good thing there that i was holding a whole project by my own, in C#</p>
<p>i felt how was it to take care for some features that may not be of any importance for me, but is irritating that it doesn&#8217;t exist for the users</p>
<p>like &#8220;Esc&#8221; button to close the form, I NEVER USED &#8220;Esc&#8221; TO CLOSE A FORM !!!</p>
<p>and some other functions key plus the &#8220;Tab&#8221; navigation</p>
<p>and for the first time i needed the &#8220;decimal&#8221; data type to have accurate decimal point calculations.</p>
<p>the thing that i didn&#8217;t like there that my learning curve tended to stop rising.</p>
<p>after two weeks i was doing the same thing and applying what i know to develop in the project.</p>
<p>and at this time, i was more interested in knowledge rather than experience.</p>
<p>so i was thinking to go back home to Alex to study or start my ACM training, but <a href="http://melmorsy.blogspot.com/" target="_blank">ZIZO</a> got me internship in Mentor Graphics with a whole new paradigm, Thanx ZOZZ ! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>ah, i forgot to say,</p>
<p>the greatest CON in that company that it was in Cairo,</p>
<p>and the best PRO that it&#8217;s manager is originally from Alexandria <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Happy New Year From Hogsmill]]></title>
<link>http://hogsmill.wordpress.com/2010/01/04/happy-new-year-from-hogsmill/</link>
<pubDate>Mon, 04 Jan 2010 15:12:22 +0000</pubDate>
<dc:creator>hogsmill</dc:creator>
<guid>http://hogsmill.wordpress.com/2010/01/04/happy-new-year-from-hogsmill/</guid>
<description><![CDATA[Happy New Year to all our readers from Hogsmill. We&#8217;ve made a few resolutions for 2010, so do ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://hogsmill.wordpress.com/files/2010/01/h.png"><img src="http://hogsmill.wordpress.com/files/2010/01/h.png" alt="" title="h" width="198" height="97" class="alignright size-full wp-image-103" /></a><br />
Happy New Year to all our readers from Hogsmill. We&#8217;ve made a few resolutions for 2010, so do check back throughtout the year to see how we&#8217;re doing. Despite the recession, 2009 was a great year for us, so here&#8217;s hoping for something as good in 2010.</p>
<ol>
<li>To get the &#8216;hush-hush&#8217; site that we&#8217;re working on live so you can all see some great 2.0 functionality. I&#8217;d love to show everybody this, as we&#8217;re really proud of it, but it&#8217;s all under NDA at the mo&#8217;&#8230;</li>
<li>To release the Hogsmill Javascript and PHP libraries to the wider community. These are almost ready, but (predictably&#8230;) suffer from a lack of documentation. We&#8217;ll rectify that and release in 2010. Do <a href='mailto:info@hogsmill.com'>Email</a> us if you want to know when this is available.</li>
<li>To make the CMS-enabled version of <a href="http://bargewalk.co.uk">Barge Walk</a> available as a demo to demonstrate the latest in-line editing capabilities.</li>
<li>To keep this blog up-to-date <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ol>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Listening to Tests - Part 1]]></title>
<link>http://thestickiesproject.wordpress.com/2010/01/04/listening-to-tests-part-1/</link>
<pubDate>Mon, 04 Jan 2010 15:07:43 +0000</pubDate>
<dc:creator>coreyhaines</dc:creator>
<guid>http://thestickiesproject.wordpress.com/2010/01/04/listening-to-tests-part-1/</guid>
<description><![CDATA[Editing a Sticky&#8217;s Contents One of the first things that we&#8217;ll need to do is be able to ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h3>Editing a Sticky&#8217;s Contents</h3>
<p>One of the first things that we&#8217;ll need to do is be able to edit the content of a sticky. We decided on using the <a href="http://plugins.jquery.com/project/jeditable">jEditable component</a>, as it seemed the easiest to integrate, and it was really high up on the google page. In this series of blog posts, I&#8217;m going to take a look at how we went about not only integrating the component, but also how we went about improving our design through shifting to a TDD approach and listening to what the tests were saying as they guided and influenced our design. Along the way, I learned some valuable lessons about bringing old habits from other language styles over without thinking about them. That comes later, though.</p>
<p><a href="http://gist.github.com/268132">Link to the gist for all the code samples</a></p>
<h3>Do I even know the javascripts?</h3>
<p>It has been a long time since I wrote serious JavaScript; I think the last time I did what I would call an actual &#8216;JavaScript application&#8217; was in 2002, or so. Sure, I&#8217;ve written a few things here and there. In fact, at the startup I worked at, I wrote a couple in-browser things that I was proud of at the time (looking back, naturally, I can see the parts that I&#8217;m not so proud of). But, all-in-all, most of what I do has been pretty non-dynamic. Back in 2002, I&#8217;m pretty sure I was only seeing the beginnings of JavaScript frameworks. There were some libraries coming out, but I seem to remember them being very focused on hiding the differences between DOM implementations. I wrote a couple things back then, but nothing incredibly crazy; I remember writing a client-side form validation library that was pretty damn sweet for the time. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So, both my JavaScript and JavaScript testing skills were a bit rusty. I&#8217;ve used this as an example before when talking about using the term &#8216;pragmatic&#8217; to really be a cover over lack of skill: I never tested my JavaScript, not because I was pragmatic about testing, but because I flat-out didn&#8217;t have the skills needed to do it effectively. This was one of the reasons I was so excited to work on The Stickies Project: as I outlined initially, this application is going to be almost entirely JavaScript, so I will have a great opportunity to patch what I consider a significant hole in my skillset. After setting up BlueRidge, I began writing some examples for my code, but I found that, while I was writing tests, I wasn&#8217;t really doing TDD; I was writing some functions, trying to figure out how to get the desired behavior, while writing tests alongside them.</p>
<h3>Figuring out the component</h3>
<p>At first, I was just trying to get things working, figuring out how the component worked, so I wrote the following spike code:</p>
<pre class="brush: jscript; auto-links: false; gutter: false; wrap-lines: false;">
function update_sticky_text(value, settings) {
  var stickie = $(this);
  console.log(&#34;value &#34; + value + &#34; settings &#34; + settings + &#34; this &#34; ));
  var url = sticky_update_url_for(stickie);
  console.log(&#34;url &#34; + url );
  // jQuery.post(url, {content : value, method : 'put'});
  return value;
}

function sticky_update_url_for(sticky_div){
  return sticky_div.attr('data-update-url');
}
</pre>
<pre class="brush: jscript; auto-links: false; gutter: false; wrap-lines: false;">
Screw.Unit(function(){
  describe(&#34;getting information from sticky div&#34;, function(){
    it(&#34;can get the update url&#34;, function(){
      sticky_div = $(&#34;#sticky_23&#34;);
      sticky_div.attr('data-update-url', &#34;/stickies/25&#34;);
      expect(sticky_update_url_for(sticky_div)).to(equal, &#34;/stickies/25&#34;);
    });
  });
});
</pre>
<h3>Hmmm&#8230; Reflection</h3>
<p>Yeah, looks pretty bad. But, it was enough to learn the jEditable component, so I was pretty happy. However, I definitely had a few major problems with the code:</p>
<ol>
<li>global functions</li>
<li>no sense of cohesion other than being in the same file for these two functions, even though the dependency was there</li>
<li>#sticky_update_url_for was not used anywhere else, only by #update_sticky_text</li>
<li>no test coverage for the #update_sticky_text function.</li>
</ol>
<h3>Learning from the spike</h3>
<p>Now that I had finished the spike, it was time to actually write some code. I had identified some design problems with the resulting code, and I was curious to see how those problems would be resolved. Before moving on, though, we took a bit of time to learn some more about ScrewUnit. I had learned the expect(&#8230;).to(&#8230;) syntax, but wasn&#8217;t sure what the setup was for checking if methods are called. I&#8217;m tend to do collaboration-style tests, so it is important for me to be able to set expectations on method calls. I wasn&#8217;t ready to jump into using a mocking framework, so I decided to stick with the simplest way I knew how: replace the method with your own that sets a flag if it was called. Something like this should suffice:</p>
<pre class="brush: jscript; auto-links: false; gutter: false; wrap-lines: false;">
Screw.Matchers['expect_called'] = function(obj, func_name, block){
  var got_called = false;
  obj[func_name] = function(x) { got_called = true; }
  block();
  this.expect_true(got_called);
};

// used like this
it(&#34;calls #parent_sticky&#34;, function(){
    expect_called(this, 'parent_sticky', function(){
    old_update_sticky_text(&#34;foo&#34;, null);
  });
});
</pre>
<p>This is the easiest way to check if something was called, but, of course, it doesn&#8217;t reset the function at the end (I wrote that later), so it isn&#8217;t perfect. But, this allowed me to write isolation-based examples for my functions. With this in hand, I was equiped to write a full set of examples for what was going to be known as #old_update_sticky_text:</p>
<pre class="brush: jscript; auto-links: false; gutter: false; wrap-lines: false;">
describe(&#34;#old_update_sticky_text&#34;, function(){

    before(function(){
      this.sticky_update_url_for = function(x) { return null; }
      this.parent_sticky = function(x) { return null; }
      this.update_sticky = function(x) { return null; }
    });

    it(&#34;returns the value passed in&#34;, function(){
      var value = old_update_sticky_text(&#34;foo&#34;, null);
      expect(value).to(equal, &#34;foo&#34;);
    });

    it(&#34;calls #parent_sticky&#34;, function(){
      expect_called(this, 'parent_sticky', function(){
        old_update_sticky_text(&#34;foo&#34;, null);
      });
    });

    it(&#34;calls #sticky_update_url_for&#34;, function(){
      expect_called(this, 'sticky_update_url_for', function(){
        old_update_sticky_text(&#34;foo&#34;, null);
      });
    });

    it(&#34;calls #update_sticky&#34;, function(){
      expect_called(this, 'update_sticky', function(){
        old_update_sticky_text(&#34;foo&#34;, null);
      });
    });
});
</pre>
<p>So, I was pretty happy that I was able to write isolation tests, but I was still annoyed by the other problems, primarily what I considered to be the big problems of global functions and lack of a sense of cohesion. My experiences have led me to trust in TDD to guide me when I&#8217;m not 100% sure where to go. Let&#8217;s get going. I&#8217;ve comfortable enough with ScrewUnit now, so I thought I would just jump in head-first.</p>
<h3>Let&#8217;s try some TDD</h3>
<p>First example? How about this:</p>
<pre class="brush: jscript; auto-links: false; gutter: false; wrap-lines: false;">
require(&#34;spec_helper.js&#34;);
rails_require('tsp');

Screw.Unit(function(){
  describe(&#34;TSP&#34;, function(){
    describe(&#34;#update_sticky_text_handler&#34;, function(){
      it(&#34;returns the value passed in&#34;, function(){
        var value = TSP.update_sticky_text_handler(&#34;new text&#34;, null);
        expect(value).to(equal, &#34;new text&#34;);
      });
    });
  });
});
</pre>
<p>It felt somewhat reasonable. This is a handler across all the sticky object editable components, so hanging off a TSP (the stickies project) object feels like it will at least afford me a bit of cohesion while I figure out a better method.</p>
<p>Now to get it passing:</p>
<pre class="brush: jscript; auto-links: false; gutter: false; wrap-lines: false;">
var TSP = {
  update_sticky_text_handler : function(value, settings){
                                 return value;
                               }
};
</pre>
<p>There, that made it passed, plus satisfied the first behavior that the jEditable component required: the handler returns the new value. In our case, we didn&#8217;t need anything fancy, so this was good enough. Of course, this didn&#8217;t do much, so we need to add the code that would interact with the back-end. The jEditable component executes the handler in the context of the inline editor div, so &#8216;this&#8217; would be that div. The schema for a sticky was starting to look like:</p>
<pre class="brush: xml; auto-links: false; gutter: false; wrap-lines: false;">
&#60;div class='sticky'&#62;
  &#60;div class='editable' id='sticky_23'&#62;&#60;/div&#62;
&#60;/div&#62;
</pre>
<p>Looking at this, and knowing that we were executing in the context of div.editable, it seemed naturally to have a 2-step process for updating the sticky:</p>
<ol>
<li>construct some sort a sticky object from the div.editable</li>
<li>call #update_content on the sticky object</li>
</ol>
<h3>Reflecting on the work so far</h3>
<ul>
<li>I felt really good with the way that things were progressing, especially how the spike led me to some conclusions about my code and drove me to learn ScrewUnit a bit more. The side-by-side testing on the spike gave me confidence with the toolset, so I was able to build some examples with the code there to base it on.</li>
<li>By holding myself to a bit of isolation, I see that an abstraction has snuck in: &#8217;sticky object.&#8217; What is going to be? I don&#8217;t totally know at this point, but I do know that it is constructed from div.editable somehow and it has an #update_content method which, apparently, updates the content in the backend.</li>
<li>Having a global TSP object feels a bit weird. It is going to be shared between everything, and that makes me uncomfortable. Of course, it is much better than just having free-floating functions out in the world. Not the spoil the surprise, but having a global object like this causes me a bit of pain and annoyance soon, so I end up getting rid of it. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  But, that is a story for the near future.</li>
</ul>
<h3>What is coming up in the next installment</h3>
<p>I&#8217;ve got an idea of what needs to be done, so it is time to write the examples for the updating process and implement the code. Also, we&#8217;ll start writing more examples, learn the smoke framework, get annoyed with the smoke framework, realize that our annoyance is telling us something about our preconceptions, accept that our frustration has a lesson hidden in it, then listen to what the difficulties tell us about our design.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Cross-Domain Ajax Calls: The YUI Way]]></title>
<link>http://jpvalappil.wordpress.com/2010/01/04/cross-domain-ajax-the-yui-way/</link>
<pubDate>Mon, 04 Jan 2010 11:23:44 +0000</pubDate>
<dc:creator>jpvalappil</dc:creator>
<guid>http://jpvalappil.wordpress.com/2010/01/04/cross-domain-ajax-the-yui-way/</guid>
<description><![CDATA[Ajax is one of the most important technology that is a part of web 2.0 applications. Unfortunately t]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>
Ajax is one of the most important technology that is a part of web 2.0 applications. Unfortunately the Cross/Sub-domain communications through Ajax are not allowed in browsers due to the security restrictions imposed by them. There are few techniques through which a web developer can make Cross/Sub-domain Ajax calls. A method is using the browser&#8217;s Flash plug-in to make this communication possible. In this tutorial we are going to use the YUI framework to make Cross/Sub-domain Ajax calls.
</p>
<p><!--more--></p>
<h4>Overview</h4>
<p>
The <a href="http://www.w3.org/TR/XMLHttpRequest/" title="XMLHttpRequest">XMLHttpRequest</a> object (also known as the <a href="http://msdn.microsoft.com/en-us/library/ms759148%28VS.85%29.aspx" title="XMLHTTP">XMLHTTP</a> object in Microsoft Internet Explorer environment) is one of the most widely used JavaScript object in Web 2.0 applications. Through Ajax technology JavaScript can communicate with the server without loading the web page again and again. The communications between the browser and server will be done without interfering the front-end of the application. This particular feature revolutionized the web development arena like never before. Ajax has its own limitations, one of the most important limitation of Ajax is the difficulty for performing a Cross/Sub-domain communication.
</p>
<h4>Cross/Sub-Domain Communication in Ajax</h4>
<p>
Popular browsers has imposed certain security restrictions due to which JavaScript is unable to perform a Cross/Sub-Domain communication. A Cross/Sub-Domain can be considered as any of the following items:
</p>
<ul>
<li>An independent external web server like <a href="http://www.yahoo.com" title="Yahoo!">Yahoo!</a></li>
<li>A sub-domain in our web server is also considered as Cross Domain</li>
</ul>
<p>
The frustrating point from a web developer perspective is sub-domains can&#8217;t communicate with each other even if both domains resides in the same server.
</p>
<h4>Making Cross/Sub-Domain Communication in Ajax Possible</h4>
<p>
There are two popular methods through which Cross/Sub-Domain Ajax call can be possible:</p>
<ul>
<li>Server-side Proxy</li>
<li>Using Flash</li>
</ul>
<h4>Server-side Proxy</h4>
<p>
This is the best method available without much drawbacks as this method completely relies on the capabilities of the Server-side language that uses the Web server for eg: <a href="http://php.net/index.php" title="PHP">PHP</a>, <a href="http://msdn.microsoft.com/en-us/vcsharp/default.aspx" title="C#">C#</a>, <a href="http://java.com/en/" title="java">Java</a>, <a href="http://www.python.org/" title="Python">Python</a>, etc.
</p>
<p>The proxy is nothing but a code snippet that communicates with the external server. In this method the Ajax call will be issued directly to the proxy not to the Cross/Sub-Domain resource. After receiving the request from the browser the proxy will in turn communicate with the Cross/Sub-Domain resource. Gather the result from the external server and serve the results to the browser. </p>
<p>
If you want more information about server-side proxy you can read a more detailed <a href="http://developer.yahoo.com/javascript/howto-proxy.html" title="Use a Web Proxy for Cross-Domain XMLHttpRequest Calls">article</a> about this in <a href="http://developer.yahoo.com/" title="Yahoo Developer Network">Yahoo Developer Network</a>.
</p>
<h4>Using Flash</h4>
<p>
In a way Flash is similar to Ajax as it does not allow to gather data from external server. But there is a way to do this and this is the method that we are going to exploit to make the Cross/Sub-Domain Ajax call possible.
</p>
<p>
If we place a cross-domain policy file in the external server we can make this communication a reality. Personally I prefer to use this method to make the <b>sub-domain communication</b> and <b>trusted Cross/Sub-Domain</b> communication (the one between two of my websites) possible rather than making a call to an independent external server. As we need to place a cross-domain policy file in the external server this method may not be suitable for communicating with an independent external server without proper access to it. If you can place a cross-domain policy file in any server that allows the communication from your site to the external server then you can make the communication with any available server.
</p>
<h4>Cross-Domain Policy File</h4>
<p>
This is a normal XML file with some predefined markup in it. The most common location for a cross-domain policy file on a server is the root directory of a domain with the file name as crossdomain.xml. I have furnished a typical cross-domain policy file code below, which allows the Cross/Sub-Domain communication possible from client (the one who seeks resources).</p>
<pre class="brush: xml;">
&#60;cross-domain-policy&#62;
	&#60;allow-access-from domain=&#34;*&#34;/&#62;
&#60;/cross-domain-policy&#62;
</pre>
</p>
<p>
If you do not want to allow any external server communicate with your server then you can use the following code, which allows communication from a specific server. In this case the external server which needs to be invoked will accept the communication only from yourdomain.com or <b>www.yourdomain.com</b>
</p>
<pre class="brush: xml;">
&#60;cross-domain-policy&#62;
	&#60;allow-access-from domain=&#34;yourdomain.com&#34;/&#62;
	&#60;allow-access-from domain=&#34;www.yourdomain.com&#34;/&#62;
&#60;/cross-domain-policy&#62;
</pre>
<p>
If you are looking for more information about cross-domain policy file you can read it <a href="http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html" title="Cross-domain policy file specification">here.</a>
</p>
<h4>The Tools We Use</h4>
<ul>
<li>YUI2 Framework sources</li>
<li>An empty Flash movie</li>
<li>Cross-Domain Policy File</li>
</ul>
<h4>YUI2 Framework sources</h4>
<p>
<a href="http://developer.yahoo.com/yui/" title="YUI">YAhoo User Interface</a> or <a href="http://developer.yahoo.com/yui/" title="YUI">YUI</a> is one of the heavily feature oriented JavaScript framework developed by <a href="http://www.yahoo.com" title="Yahoo!">Yahoo!</a>. The framework is well <a href="http://developer.yahoo.com/yui/docs/" title="YUI Documentation">documented</a>, comes with lots of <a href="http://developer.yahoo.com/yui/examples/" title="YUI Examples">examples</a>, etc. We are going to use YUI&#8217;s <a href="http://developer.yahoo.com/yui/connection/" title="YUI Connection Manager">Connection Manager</a>
</p>
<p>
To include the YUI source insert the following code either in web page&#8217;s head or body section.
</p>
<p><pre class="brush: xml;">
&#60;script type=&#34;text/javascript&#34; src=&#34;http://yui.yahooapis.com/2.8.0r4/build/yuiloader/yuiloader-min.js&#34;&#62;&#60;/script&#62; &#60;!-- Serves directly from Yahoo!'s CDN --&#62;
&#60;script type=&#34;text/javascript&#34;&#62;
	// Instantiate and configure YUI Loader:
	(function() {
			var loader = new YAHOO.util.YUILoader({
				base: &#34;&#34;,
				require: [&#34;connection&#34;,&#34;dom&#34;,&#34;event&#34;],
				loadOptional: false,
				combine: true,
				filter: &#34;MIN&#34;,
				allowRollup: true,
				onSuccess: function() {
					//You can place any code that needs to be executed after loading YUI source files here.
				}
			});
			// Load the files using the insert() method.
			loader.insert();
		})();
&#60;/script&#62;
</pre>
</p>
<h4>Empty Flash Movie</h4>
<p>
As this method uses Flash plugin of the user browser we need a flash movie to make this method work. Personally I uses a small empty flash movie for this purpose. This is because I don&#8217;t want to associate this method with any other special purpose flash movie that I use in my sites.
</p>
<h4>Cross-Domain Policy File</h4>
<p>
	I have furnished the code of a generic cross-domain policy file below. You can use this code as a starting point and can change this in such a way that it suits your purpose.
</p>
<p><pre class="brush: xml;">
&#60;?xml version=&#34;1.0&#34;?&#62;
	&#60;!DOCTYPE cross-domain-policy SYSTEM &#34;http://www.adobe.com/xml/dtds/cross-domain-policy.dtd&#34;&#62;
		&#60;cross-domain-policy&#62;
			&#60;allow-access-from domain=&#34;yourdomain.com&#34;/&#62;
			&#60;allow-access-from domain=&#34;www.yourdomain.com&#34;/&#62;
		&#60;/cross-domain-policy&#62;
</pre>
</p>
<p>
Copy the above code, save it in a file named <b>crossdomain.xml</b>. Replace <b>yourdomain.com</b> with your site&#8217;s correct domain name. As the last step place the saved <b>crossdomain.xml</b> file on the external web server&#8217;s root folder to which you want to make the communication from your site through Ajax. This is the most important step of in the whole process, without carrying out this step you&#8217;ll not be able to make this method work correctly.
</p>
<h4>Full Source Code</h4>
<p><pre class="brush: xml;">
&#60;!DOCTYPE HTML PUBLIC &#34;-//W3C//DTD HTML 4.01//EN&#34; &#34;http://www.w3.org/TR/html4/strict.dtd&#34;&#62;
&#60;html&#62;
    &#60;head&#62;
        &#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=iso-8859-1&#34;&#62;
        &#60;title&#62;Cross-Domain Ajax Communication&#60;/title&#62;
        &#60;script type=&#34;text/javascript&#34; src=&#34;http://yui.yahooapis.com/2.8.0r4/build/yuiloader/yuiloader-min.js&#34;&#62;
        &#60;/script&#62;
    &#60;/head&#62;
    &#60;body&#62;
        &#60;div id=&#34;container&#34;&#62;
        &#60;/div&#62;
		&#60;form&#62;
			&#60;input type=&#34;button&#34; name=&#34;btnLoad&#34; id=&#34;btnLoad&#34; value=&#34;Make Cross Domain Ajax Call&#34;&#62;
		&#60;/form&#62;
        &#60;script type=&#34;text/javascript&#34;&#62;
            var Global = {};
			Global.makeAjaxCall = function(paramObject){
				if(YAHOO.lang.isUndefined(paramObject.url) &#124;&#124; YAHOO.lang.trim(paramObject.url) === &#34;&#34;){
					alert(&#34;Provide a url to proceed further&#34;);
					return false;
				}
				paramObject.method = paramObject.method&#124;&#124;&#34;GET&#34;;
				paramObject.cache = paramObject.cache&#124;&#124;false
				if(paramObject.xdr === true &#38;&#38; (!YAHOO.lang.isUndefined(paramObject.url) &#124;&#124; YAHOO.lang.trim(paramObject.url) !== &#34;&#34;)){
					YAHOO.util.Connect.transport(paramObject.flashFile);
					YAHOO.util.Connect.xdrReadyEvent.subscribe(function() {
						//This JS literal object is responsible for making the function calls after the Ajax call occur.
						var callback = {
							success:function(o){
								//The cross-domain Ajax call is success
								YAHOO.util.Dom.get(&#34;container&#34;).innerHTML = o.responseText; //After the cross-domain Ajax we insert the response from external server to one of the elements in the DOM
							},
							failure:function(o){
								//The cross-domain Ajax call is failure
								alert(&#34;Ajax call failed&#34;);
							},
							cache:paramObject.cache,
							xdr:true //This parameter will tell we are going to make a cross-domain Ajax call through flash plugin.
						};
						//The following function call will make the Ajax call and pass the callback object
						YAHOO.util.Connect.asyncRequest(paramObject.method, paramObject.url, callback);
					});
				}else{//Normal Ajax call will be handled by this section
					//This JS literal object is responsible for making the function calls after the Ajax call occur.
					var callback = {
						success:function(o){
							//The cross-domain Ajax call is success
							YAHOO.util.Dom.get(&#34;container&#34;).innerHTML = o.responseText; //You can place your code here that needs to be executed afer the successful Ajax call
						},
						failure:function(o){
							alert(&#34;Ajax call failed&#34;);
						},
						cache:paramObject.cache
					};
					//The following function call will make the Ajax call and pass the callback object
					YAHOO.util.Connect.asyncRequest(paramObject.method, paramObject.url, callback);
				}
			};
			/*The following function will load the YUI  modules: DOM, Event and Connection manager*/
            Global.loadYui = function(){
                var loader = new YAHOO.util.YUILoader({
                    base: &#34;&#34;,
                    require: [&#34;connection&#34;, &#34;dom&#34;, &#34;event&#34;],
                    loadOptional: false,
                    combine: true,
                    filter: &#34;MIN&#34;,
                    allowRollup: true,
                    onSuccess: function(){
                        //You can place any code that needs to be executed after loading YUI source files here.

						//After the YUI framework file loading we attach the event handler to the button available in the page.
						YAHOO.util.Event.on(&#34;btnLoad&#34;, &#34;click&#34;, function(){
							Global.makeAjaxCall(Global.argumentsObject);
						});
                    }
                });
				//The following function call will insert the YUI modules in the page DOM
                loader.insert();
            };

			//A JS literal object that contains the arguments needs for the XDR communication
			Global.argumentsObject = {
				url: &#34;http://www.theremoteserver.com/yourresourcefile.ext&#34;, //Replace this url with your own external server's url and resource name
				method:&#34;GET&#34;, //By default GET
				cache:false, //Can be true or false
				xdr:true, //Should be true for XDR communications
				flashFile:&#34;flash_file_path/flash_file_name.swf&#34; //Please include the correct path of the flash movie that we are going to use to make this all possible.
			};

			Global.onLoad = function(){
				Global.loadYui(); //Include YUI source in to the DOM
			}

			YAHOO.util.Event.onDOMReady(Global.onLoad); //JS code execution will be started after loading the DOM except images completely.
        &#60;/script&#62;
    &#60;/body&#62;
&#60;/html&#62;
</pre>
</p>
<h4>Dissect The Source</h4>
<p>
The code above code is a genric code which needs to be updated with your required details if you want to try this method. I have commented the source so that anyone can use it without any issues and can modify at their own will.
</p>
<p>
I have Placed the entire JavasScript code within a JavaScript literal object named <b>Global</b> to avoid cluttering the global namespace with our code. In other words we uses a custom namespace for our code, the entire functions, variables, etc will be within this namespace. This method organizes the code efficiently especially if you are dealing with large volume of code.
</p>
<p>
Everything starts with the following code.	</p>
<pre class="brush: jscript;">
YAHOO.util.Event.onDOMReady(Global.onLoad);
</pre>
</p>
<p>
This code will invoke the function onLoad which is inside the <b>Global</b> JavaScript object literal after completing the page&#8217;s DOM loading. Please note that this will not wait for page&#8217;s images to load for executing the function. This is the method of YUI equivalent to <a href="http://jquery.com/" title="jQuery Framework">jQuery</a>&#8217;s <a href="http://docs.jquery.com/Events/ready" title="$(document).ready()">$(document).ready()</a> function.
</p>
<p><pre class="brush: jscript;">
Global.onLoad = function(){
	Global.loadYui(); //Include YUI source in to the DOM
};
</pre>
</p>
<p>
This code will invoke the Global.loadYui function, which is responsible for loading YUI&#8217;s needed modules. You can load it via script tag but we are going to use JavaScript in anyway and thought of loading the framework files through JavaScript itself. One of the reason I&#8217;ve done like this is loading large script resources through script tags may take more time for completing the page loading. So what I&#8217;ve done was I&#8217;ve loaded the smallest module of YUI framework, which is YUI <a href="http://developer.yahoo.com/yui/yuiloader/" title="YUI Loader">Loader</a> utility using a script tag and loaded the rest of the framework resources through YUI <a href="http://developer.yahoo.com/yui/yuiloader/" title="YUI Loader">Loader</a> utility.
</p>
<p><pre class="brush: jscript;">
/*The following function will load the YUI  modules: &#60;a href=&#34;http://developer.yahoo.com/yui/dom/&#34; title=&#34;YUI Dom&#34;&#62;Dom&#60;/a&#62;, &#60;a href=&#34;http://developer.yahoo.com/yui/event/&#34; title=&#34;YUI Event&#34;&#62;Event&#60;/a&#62; and &#60;a href=&#34;http://developer.yahoo.com/yui/connection/&#34; title=&#34;YUI Connection Manager&#34;&#62;Connection manager&#60;/a&#62;*/
Global.loadYui = function () {
	var loader = new YAHOO.util.YUILoader({
		base: &#34;&#34;,
		require: [&#34;connection&#34;, &#34;dom&#34;, &#34;event&#34;],
		loadOptional: false,
		combine: true,
		filter: &#34;MIN&#34;,
		allowRollup: true,
		onSuccess: function () {
			//You can place any code that needs to be executed after loading YUI source files here.
			//After the YUI framework file loading we attach the event handler to the button available in the page.
			YAHOO.util.Event.on(&#34;btnLoad&#34;, &#34;click&#34;, function () {
				Global.makeAjaxCall(Global.argumentsObject);
			});
		}
	});
	//The following function call will insert the YUI modules in the page DOM
	loader.insert();
};
</pre>
</p>
<p>The above code will perform three following things:</p>
<ul>
<li>It will load YUI modules Connection, Dom and Event</li>
<li>After loading the YUI modules it will execute the onSuccss function</li>
<li>An onclick event handler will be attached to a button element whose ID is btnLoad</li>
</ul>
<p>
You need to edit the following code snippet with your own details before proceeding further</p>
<pre class="brush: jscript;">
Global.argumentsObject = {
	url: &#34;http://www.theremoteserver.com/yourresourcefile.ext&#34;,	//Replace this url with your own external server's url (the one in which you've placed the policy file) and resource name
	method: &#34;GET&#34;,			//By default GET
	cache: false,	//Can be true or false
	xdr: true,	//Should be true for XDR communications
	flashFile: &#34;flash_file_path/flash_file_name.swf&#34; //Please include the correct path of the flash movie that we are going to use to make this all possible.
};
</pre>
</p>
<p>
Mostly you&#8217;ll need to change the first and the last properties of the <b>Global.argumentsObject</b> object literal with the correct details of yours. Make sure that you keep the xdr property value as true if you are intending Cross/Sub-Domain Ajax calls.
</p>
<p>
A click on the button will start the first stage of the Ajax call. This will invoke <b>Global.makeAjaxCall</b> function, which is responsible for making the Ajax call and handling the callbacks.
</p>
<p><pre class="brush: jscript;">
Global.makeAjaxCall = function (paramObject) {
	if (YAHOO.lang.isUndefined(paramObject.url) &#124;&#124; YAHOO.lang.trim(paramObject.url) === &#34;&#34;) {
		alert(&#34;Provide a url to proceed further&#34;);
		return false;
	}
	paramObject.method = paramObject.method &#124;&#124; &#34;GET&#34;;
	paramObject.cache = paramObject.cache &#124;&#124; false
	if (paramObject.xdr === true &#38;&#38; (!YAHOO.lang.isUndefined(paramObject.url) &#124;&#124; YAHOO.lang.trim(paramObject.url) !== &#34;&#34;)) {//Makes XDR Call
		YAHOO.util.Connect.transport(paramObject.flashFile);
		YAHOO.util.Connect.xdrReadyEvent.subscribe(function () {
			//This JS literal object is responsible for making the function calls after the Ajax call occur.
			var callback = {
				success: function (o) {
					//The cross-domain Ajax call is success this section will be executed
					YAHOO.util.Dom.get(&#34;container&#34;).innerHTML = o.responseText; //After the cross-domain Ajax we insert the response from external server to one of the elements in the DOM
				},
				failure: function (o) {
					//The cross-domain Ajax call is failure this section will be executed
					alert(&#34;Ajax call failed&#34;);
				},
				cache: paramObject.cache,
				xdr: true //This parameter will tell we are going to make a cross-domain Ajax call through flash plugin.
			};
			//The following function call will make the Ajax call and pass the callback object
			YAHOO.util.Connect.asyncRequest(paramObject.method, paramObject.url, callback);
		});
	} else { //Normal Ajax call will be handled by this section
		//This JS literal object is responsible for making the function calls after the Ajax call occur.
		var callback = {
			success: function (o) {
				//The cross-domain Ajax call is success
				YAHOO.util.Dom.get(&#34;container&#34;).innerHTML = o.responseText; //You can place your code here that needs to be executed afer the successful Ajax call
			},
			failure: function (o) {
				alert(&#34;Ajax call failed&#34;);
			},
			cache: paramObject.cache
		};
		//The following function call will make the Ajax call and pass the callback object
		YAHOO.util.Connect.asyncRequest(paramObject.method, paramObject.url, callback);
	}
};
</pre>
</p>
<p>
The above function accepts a object literal as its parameter. We&#8217;ll use the earlier defined <b>Global.argumentsObject</b> for this purpose. The parameter should contain a url value for proceeding with this method.
</p>
<p>
By default the HTTP method used is GET. If you want POST then you&#8217;ll have to specify it in <b>Global.argumentsObject</b> object.
</p>
<p>
By default the Ajax call cache will be false. If you want it to be true then specify it in <b>Global.argumentsObject</b> object.
</p>
<p>
Make sure that the xdr property in <b>Global.argumentsObject</b> object is true for making the Cross/Sub-Domain Ajax calls to work
</p>
<p>
The basic functionality of the above mentioned code is it will make an XDR call to the mentioned server, which contains the cross-domain policy file that I have mentioned earlier. After gathering the response from the external server JS will insert the response in a div element whose id is &#8220;container&#8221;.
</p>
<p>
Before making the Cross/Sub-domain Ajax call we need to initialize the Flash transport that we use (the flash movie). The following code will do that
</p>
<pre class="brush: jscript;">
YAHOO.util.Connect.transport(paramObject.flashFile);
</pre>
<p>
We can proceed further only after finishing the Flash transport initialization. In our case we&#8217;ve subscribed the xdrReadyEvent, which will be executed after initializing the Flash correctly. We&#8217;ve achieved that using the following code
</p>
<p><pre class="brush: jscript;">
YAHOO.util.Connect.xdrReadyEvent.subscribe(function () {
	//This JS literal object is responsible for making the function calls after the Ajax call occur.
	var callback = {
		success: function (o) {
			//The cross-domain Ajax call is success this section will be executed
			YAHOO.util.Dom.get(&#34;container&#34;).innerHTML = o.responseText; //After the cross-domain Ajax we insert the response from external server to one of the elements in the DOM
		},
		failure: function (o) {
			//The cross-domain Ajax call is failure this section will be executed
			alert(&#34;Ajax call failed&#34;);
		},
		cache: paramObject.cache,
		xdr: true //This parameter will tell we are going to make a cross-domain Ajax call through flash plugin.
	};
	//The following function call will make the Ajax call and pass the callback object
	YAHOO.util.Connect.asyncRequest(paramObject.method, paramObject.url, callback);
});
</pre>
</p>
<p>This code make sure that the Cross/Sub-Domain Ajax call will be made only after initializing the Flash transport, which is responsible for making the whole communication. The callback JavaScript object literal is an object passing the callbacks that needs to be executed after the Ajax call and also the required properties (cache and xdr) to YUI Connection Manager.
</p>
<p><pre class="brush: jscript;">
var callback = {
	success: function (o) {
		//The cross-domain Ajax call is success this section will be executed
		YAHOO.util.Dom.get(&#34;container&#34;).innerHTML = o.responseText; //After the cross-domain Ajax we insert the response from external server to one of the elements in the DOM
	},
	failure: function (o) {
		//The cross-domain Ajax call is failure this section will be executed
		alert(&#34;Ajax call failed&#34;);
	},
	cache: paramObject.cache,
	xdr: true //This parameter will tell we are going to make a cross-domain Ajax call through flash plugin.
};
YAHOO.util.Connect.asyncRequest(paramObject.method, paramObject.url, callback); //The Ajax calling code
</pre>
</p>
<p>The above JavaScript literal object will be passed to YUI&#8217;s Connection Manager&#8217;s <a href="http://developer.yahoo.com/yui/docs/YAHOO.util.Connect.html#method_asyncRequest" title="YUI asyncRequest">asyncRequest</a> function
</p>
<p>The success function in the callback object literal will be execute if the Ajax call was a success and the Ajax object will be passed to the function from which the code can access the response either through using responseText or responseXML proerties.
</p>
<p><pre class="brush: jscript;">
YAHOO.util.Dom.get(&#34;container&#34;).innerHTML = o.responseText;
</pre>
</p>
<p>This code will just extract the response from the server and insert it in an HTML element whose ID is &#8220;container&#8221;</p>
<h4>Summary</h4>
</p>
<p>Web 2.0 uses Ajax technology extensively. Unfortuanately Ajax does not allow cross/sub-domain communications due to the security restrictions imposed by the browsers. This problem can be tackled either through a server-side proxy or through a method that uses the Flash plugin installed in the browsers (most of them). YUI&#8217;s Connection Manager provides a simple method for making this communication possible. This method is suitable for making any cross/sub-domain Ajax calls without much trouble.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[javascript กับ Masterpage visual studio.net]]></title>
<link>http://psvtna.wordpress.com/2010/01/04/javascript-%e0%b8%81%e0%b8%b1%e0%b8%9a-masterpage-visual-studio-net/</link>
<pubDate>Mon, 04 Jan 2010 04:07:14 +0000</pubDate>
<dc:creator>psvtna</dc:creator>
<guid>http://psvtna.wordpress.com/2010/01/04/javascript-%e0%b8%81%e0%b8%b1%e0%b8%9a-masterpage-visual-studio-net/</guid>
<description><![CDATA[อิอิ แบบว่าพึ่งศึกษา visual studio .net เหมือนกันยังไม่โปรหรอกนะครับ แต่ว่าเจอปัญหาบ่อย ๆ เลยอยากแนะ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>อิอิ แบบว่าพึ่งศึกษา visual studio .net เหมือนกันยังไม่โปรหรอกนะครับ แต่ว่าเจอปัญหาบ่อย ๆ เลยอยากแนะนำคนที่เริ่มศึกษาเหมือนกันนะสำหรับคนที่โปรแล้วก็ถือว่าดูเด็กเล่านิทานแล้วกันกันครับ</p>
<p>หลาย ๆ ท่านคงเคยมีปัญหาใช้ Masterpage ใน visaul studio แล้วใช้ javascript ในหน้าที่ content ที่อ้างอิง Masterpage มีปัญหาใช้ไม่ได้ อ้างอิงไม่ถูก เป็นเพราะ หน้า content นั้นมีการปรับเปลี่ยน id ของ component ดังนั้นเวลาจะอ้างอิง เราเอา javascript  code ไปไว้ส่วน head ของหน้า Masterpage หรือแยกไฟล์ออกไปเป็น javascript ต่างหากก็สุดแล้วแต่</p>
<p>หลังจากนั้นลอง รันหน้า content แล้ว view code  เพื่อดู id ที่แท้จริงก่อนการอ้างอิง หรือจะดูจาก Control.ClientID.ToString() ที่ .Net จะได้เป็นค่า id ที่ .Net เจนเป็น html แล้วส่งค่านี้เข้าไปใน javascript ก็ได้ครับจึงจะสามารถใช้ javascript ที่อยู่หน้า Masterpage ได้เช่น ปรกติเราเซต id = &#8220;lbltext&#8221; แต่เมื่อผ่านหน้า content ค่า id จะเปลี่ยนไปเช่น id=&#8221;clt00_content0_lbltex&#8221; ซึ่งเป็น id ที่ javascirpt จาก Masterpage จะอ้างอิงได้ถูกต้อง เป็นต้น</p>
<p>﻿</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Page Search Javascript]]></title>
<link>http://skulstuff.wordpress.com/2010/01/03/page-search-javascript/</link>
<pubDate>Sun, 03 Jan 2010 10:44:51 +0000</pubDate>
<dc:creator>djaney</dc:creator>
<guid>http://skulstuff.wordpress.com/2010/01/03/page-search-javascript/</guid>
<description><![CDATA[A simple javascript that searches words in a page&#8230; (tw-sack.js needed) &lt;html&gt; &lt;head]]></description>
<content:encoded><![CDATA[A simple javascript that searches words in a page&#8230; (tw-sack.js needed) &lt;html&gt; &lt;head]]></content:encoded>
</item>
<item>
<title><![CDATA[What Makes a Web Developer]]></title>
<link>http://joshnetwebdevelopment.wordpress.com/2010/01/03/what-makes-a-web-developer/</link>
<pubDate>Sun, 03 Jan 2010 07:17:24 +0000</pubDate>
<dc:creator>jgompert</dc:creator>
<guid>http://joshnetwebdevelopment.wordpress.com/2010/01/03/what-makes-a-web-developer/</guid>
<description><![CDATA[Today I was reading around in a forum when I came across a post of someone claiming to be a web deve]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Today I was reading around in a forum when I came across a post of someone claiming to be a web developer.  What struck me as odd was that the person making the claim was looking for a freelance developer to help him with his website.  That is not the part that struck me as odd,  he then stated that he did not know JavaScript, Flash, PHP, or any server side language.  How I took this was that the kid knew HTML and that was all.  Yes, it is true that knowing HTML or xHTML is definitely one of the most important parts of web development it is by no means the be all end all of web development.</p>
<p>I know that it may seem harsh, but to tell you the truth it is actually quite insulting to hear someone that only knows how to mark up a document call himself a web developer.  The developer part of the name insinuates that he knows how to program.  HTML is not programming, it is just structuring  a page to look a certain way.  All of the functionality that we have come so accustomed to is actually the result of a programmer using some sort of client side or server side scripting language like JavaScript, PHP, or ASP.NET.  The difference might sound quite subtle, but in reality it is like night and day.  My point is this,  if you truly want to call yourself a web developer, and not just a web designer, don&#8217;t stop on HTML.  There is so much more to the world of programming, and web development then just marking up a document.  Study hard, read a lot, code a lot, always seek to keep learning and then you can be a true developer.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Editor PHP gratuíto Netbeans 6.8]]></title>
<link>http://ahaprogramando.wordpress.com/2010/01/02/editor-php-gratuito-netbeans-6-8/</link>
<pubDate>Sat, 02 Jan 2010 23:20:06 +0000</pubDate>
<dc:creator>Leonir Zimmermann</dc:creator>
<guid>http://ahaprogramando.wordpress.com/2010/01/02/editor-php-gratuito-netbeans-6-8/</guid>
<description><![CDATA[Até a pouco tempo eu estava usando como ferramenta gratuíta para edição WEB o APTANA. Que na versão ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Até a pouco tempo eu estava usando como ferramenta gratuíta para edição WEB o APTANA. Que na versão 1.5 tinha bom suporte a PHP e Javascript. Todavia da versão 2.0 pra diante, o pessoal do APTANA abandonou o suporte nativo a PHP. Só percebi depois de desinstalar a versão 1.5 e instalar a 2.0.</p>
<p>Temporariamente retomei a utilização do Dreamweaver 8 (não é gratuíto) e que apesar de ser uma versão desatualizada, continua com algumas opções mais completas que os editores gratuítos que temos à disposição.</p>
<p>Mas retomei minha busca por editores gratuítos, e fiquei surpreso com o Netbeans 6.8 customizado para PHP. Pra começar&#8230; o tamanho do arquivo de Download: 25MB contra os 135MB do Aptana 2.0. Eu disse míseros 25 Megalhões de Bytes! Veja com seus próprios olhos no site de Download: http://netbeans.org/downloads/index.html (na opção de download Netbeans para PHP).</p>
<p>De cara deu pra perceber que também não é tão pesado para abrir o programa, instalei-o em um note Intel Dualcore 1.8Ghz com 2GB de RAM e Windows Vista.  Para ser mais preciso&#8230; não abre tão rápido quanto o bloco de notas hahaha mas também perde para o Dreamweaver 8.</p>
<p><strong>Recursos encontrados:</strong></p>
<p><strong>Interface em Português</strong><br />
(dispensa comentários)</p>
<p><strong>Search e replace em todo o projeto </strong></p>
<p>Este é um recurso que me era muito útil no Dreamweaver, mas que não estava disponível no Aptana. Necessário quando vc quer modificar o nome de uma variável, função ou método que vc criou, e está sendo chamada em diversos arquivos. Talvez vc nem lembre todos os locais que será necessário modificar. Nesta hora a ferramenta detona.</p>
<p><a href="http://ahaprogramando.wordpress.com/files/2010/01/captura41.jpg"><img class="alignnone size-full wp-image-94" title="Alguns Recursos" src="http://ahaprogramando.wordpress.com/files/2010/01/captura41.jpg" alt="" width="450" height="585" /></a></p>
<p><strong>Sugestão para comandos PHP e Javascript, incluíndo detalhes sobre as funções</strong></p>
<p>Este recurso é encontrado tanto no Dreamweaver quanto no Aptana. E o Netbens faz bonito.<br />
<a href="http://ahaprogramando.wordpress.com/files/2010/01/captura2.jpg"><img class="alignnone size-full wp-image-95" title="Help a comandos PHP" src="http://ahaprogramando.wordpress.com/files/2010/01/captura2.jpg" alt="" width="450" height="542" /></a></p>
<p>O mesmo vale para Javascript, HTML e CSS.</p>
<p><strong>Localiza os métodos e atributos da Classe em que vc está trabalhando</strong><br />
Já trabalhei com java, e meu ambiente de trabalho era justamente o Netbeans. Apreciava o recurso oferecido por ele, em que dentro de uma classe vc pode digitar &#8220;this.&#8221; e ele suge os métodos e atributos disponíveis na classe.  Tal recurso está inteiramente disponível na versão do ambiente Netbeans para PHP.</p>
<p><a href="http://ahaprogramando.wordpress.com/files/2010/01/captura11.jpg"><img class="alignnone size-full wp-image-96" title="Atenção aos detalhes de seu código" src="http://ahaprogramando.wordpress.com/files/2010/01/captura11.jpg" alt="" width="450" height="542" /></a></p>
<p>Perceba na figura acima, que ao selecionar um dos métodos de minha classe, ele apresenta inclusive a documentação do método. Claro&#8230; vc precisa seguir o padrão de documentação PHP, e informar antes de cada método seu propósito e parâmetros, como no exemplo abaixo:</p>
<p><a href="http://ahaprogramando.wordpress.com/files/2010/01/captura3.jpg"><img class="alignnone size-full wp-image-97" title="Documentação PHP" src="http://ahaprogramando.wordpress.com/files/2010/01/captura3.jpg" alt="" width="450" height="192" /></a></p>
<p><strong>Suporte a TAGs HTML</strong></p>
<p>Vc pode escrever código HTML tranquilamente, que ele oferece sujestão para nomes das TAGs e também para os atributos. Se vc escrever a tag body como esta:  &#60;body style=&#8221;color: red &#8220;&#62;&#60;/body&#62;    pode localizar a propriedade style, e nos valores para o atributo, virão também automaticamente as sugstões de comandos CSS, como color e após selecionar este colocando dois pontos &#8220;:&#8221; será apresentada uma modesta lista de cores. Achei pobre a lista de cores neste caso, mas funciona amigavelmente.</p>
<p><strong>Suporte avançado a CSS</strong></p>
<p>Não utilizei o recurso ainda por tempo suficiente para afirmar que seja excelente, ou apontar possíveis defeitos. Porém percebi que possui recursos interessantes. Quando um arquivo &#8220;.css&#8221; é aberto, um painel é apresentado com ferramentas para manutenção dos parâmetros do CSS.</p>
<p>Mais detalhes na figura abaixo:</p>
<p><a href="http://ahaprogramando.wordpress.com/files/2010/01/captura5.jpg"><img class="alignnone size-full wp-image-98" title="Detalhes do painel de apoio a CSS" src="http://ahaprogramando.wordpress.com/files/2010/01/captura5.jpg" alt="Figura com Detalhes do painel de apoio a CSS" width="450" height="311" /></a></p>
<p>Dá pra notar que ele mostra inclusive um exemplo de texto com a formatação a direita. Neste quesito o APTANA era o mais pobre&#8230; oferecia como grande recurso uma cubo de 216 cores para ajudar na escolha das cores para atributos CSS.</p>
<p><strong>Pontos Negativos</strong></p>
<p>1) Falta uma interface WYSIWYG para delinear interfaces HTML.  Aliás quanto a este recurso, dos programas que experimentei só o Dreamwever oferece algo realmente satisfatório. Sei que para o bom desenvolvedor, aquele que conhece os recursos de HTML e CSS, até não faz muita falta. Mas acho interessante por exemplo para preparar rapidamente uma página estática em HTML com textos e figuras. Principalmente para copiar com a formatação um texto que vc copia do Writer Open Office, ou no Office Word. Facilita também para colar uma lista de valores no HTML, pois com WYSIWYG é rapidinho e intuitivo preencher uma tabela.</p>
<p>2) [<span style="color:#0000ff;">Ponto de vista Pessoal</span>] Não oferece suporte nato a bibliotecas javascript mais conhecidas como Jquery e Dojo. Seria interessande em meio a um código JavaScript digitar &#8220;dojo.&#8221; e ele oferecer as opções da API Dojo. Talvez até haja uma forma de acrescentar um plugin de terceiros ou coisa parecida, investiguei superficialmente e não tive um resultados satisfatórios. Neste ponto o APTANA faz bonito e o Dreamweaver 8 também é isento.</p>
<p><strong>Conclusão</strong></p>
<p>Temos aí um editor WEB para PHP, HTML, JAVASCRIPT e CSS  de ótimo nível entre os da categoria FREEWARE, fácil de instalar, arquivo de Download relativamente pequeno, bons recursos. Vale a pena testar!</p>
<p><strong> </strong>Grande Abraço<strong><br />
</strong></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Table Tricks with JQuery]]></title>
<link>http://javaworks.wordpress.com/2010/01/02/table-tricks-with-jquery/</link>
<pubDate>Sat, 02 Jan 2010 19:46:06 +0000</pubDate>
<dc:creator>Hari</dc:creator>
<guid>http://javaworks.wordpress.com/2010/01/02/table-tricks-with-jquery/</guid>
<description><![CDATA[Sortable Table http://www.pengoworks.com/workshop/jquery/tablesorter/ http://docs.jquery.com/Tutoria]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Sortable Table </strong></p>
<p><a href="http://www.pengoworks.com/workshop/jquery/tablesorter/" target="_blank">http://www.pengoworks.com/workshop/jquery/tablesorter/</a></p>
<p><a href="http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery#Sort_me:_Using_the_tablesorter_plugin" target="_blank">http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery#Sort_me:_Using_the_tablesorter_plugin</a></p>
<p>Sorting Issue for Digits explained &#8211; <a href="http://stackoverflow.com/questions/302749/jquery-tablesorter-problem" target="_blank">http://stackoverflow.com/questions/302749/jquery-tablesorter-problem</a></p>
<p><strong>Collapsible Table </strong></p>
<p><a href="http://www.exforsys.com/tutorials/jquery/jquery-collapsing-and-expanding-table-rows.html" target="_blank">http://www.exforsys.com/tutorials/jquery/jquery-collapsing-and-expanding-table-rows.html</a></p>
<p><a href="http://csscreator.com/node/30150" target="_blank">http://csscreator.com/node/30150</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Score two for flexible design]]></title>
<link>http://artbeat.me/2010/01/02/flexible-mobile-design/</link>
<pubDate>Sat, 02 Jan 2010 18:16:31 +0000</pubDate>
<dc:creator>olivier</dc:creator>
<guid>http://artbeat.me/2010/01/02/flexible-mobile-design/</guid>
<description><![CDATA[A few months ago I was writing a post on the Pheromone Lab entitled “The Death of the Mobile Website]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>A few months ago I was writing a post on the <a href="http://lab.pheromone.ca/">Pheromone Lab</a> entitled “<a href="http://lab.pheromone.ca/2009/08/26/the-death-of-the-mobile-website/">The Death of the Mobile Website</a>”. The basic point of it was, <q cite="http://lab.pheromone.ca/2009/08/26/the-death-of-the-mobile-website/">as the landscape of web-ready devices become less segregated between “Desktop”, “Smartphones” and “Mobile”, and as we advance towards a more continuous ecosystem, we need to learn to design flexible interfaces that can adapt to a wide range of size, resolution, capabilities and modes of use</q>.</p>
<p>A few weeks ago, Apple, a leader in sales of mobile devices, apparently started contacting selected developers with <a href="http://www.businessinsider.com/apple-to-demo-tablet-in-january-asks-developers-to-get-apps-ready-2009-12">one message</a>: stop assuming that you are building applications for 320&#215;480px screens.</p>
<p>Score one for flexible design.</p>
<p>So, how can one create applications that would feel and work great in the current fragmented market of web devices? I&#8217;ve had, for a long time now, a hunch that web standard technologies such as HTML and CSS had the answer.  HTML and CSS were made to meet this challenge, to build interfaces that scale, to cascade differently according to the media. The new <a href="http://www.w3.org/TR/css3-mediaqueries/">CSS3 Media Queries</a> pushes this capability quite far already, and I have been looking forward to experimenting more with it.</p>
<p>I was surprised, however, by a very interesting new trend: HTML+CSS+JS are being used not as the final UI layer for web applications, but instead as a programming language to be compiled into other languages (such as objectiveC, Java etc.) and the deployed, with native UI look and feel, onto a variety of devices. </p>
<p>This is the strategy currently followed by Nitobi&#8217;s <a href="http://phonegap.com/">PhoneGap</a> and Appcelerator&#8217;s <a href="http://www.appcelerator.com/products/titanium-mobile/">Titanium</a>, both of which allow development using the basic Web technologies and JavaScript API, and package the result into “native apps” for iPhone, Android (and blackberry). </p>
<p>This could be a very exciting development for web standards as base layers for everything on the web… including applications that have very little to do with the Web paradigm. And for designers and developers, this could be the solution to the conundrum of flexible design and multi-platform development.</p>
<p>Score two for flexible design.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Master Pages and Javascript]]></title>
<link>http://terratechnicals.wordpress.com/2010/01/02/master-pages-and-javascript/</link>
<pubDate>Sat, 02 Jan 2010 12:50:49 +0000</pubDate>
<dc:creator>terratechnicals</dc:creator>
<guid>http://terratechnicals.wordpress.com/2010/01/02/master-pages-and-javascript/</guid>
<description><![CDATA[This article is dedicated to shedding light on those questions I have had in my programming experien]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>This article is dedicated to shedding light on those questions I have had in my programming experience that I just never found a clear answer for on the web; that I had to take the hints that I found from Google and go playing around for myself until I found a solution. Hopefully someone will benefit from my hours of trial and error.</p>
<p><strong>Javascript and Master Pages</strong></p>
<p>This is a subject that causes a lot of confusion. Many times when I am searching for a reason why my code is not working, I forget to add to my search the keywords “master page”. I forget that I am even using a master page and that it could ultimately be the source of my problem. The main reason beginning programmers are confronted with problems when incorporating javascript in their code is that javascript’s language is client side, and .net is server side, which is what we are used to.</p>
<p>What does this mean? Well, when we use a client side script, we have to call the controls we are using by the ID’s they are given after the page has rendered in the browser. In master pages, rendered code has different control names than what you are used to seeing. They are given new identities so that they can be identified within a master page which may or may not have identically named controls in its code.</p>
<p>How to overcome? Anytime you use Javascript to reference an asp.net control, you must reference its full control name post-browser rendering. There are many ways to do this that you can find on the web, but the easiest way uses no extra code at all. Simply build your page up to the point where you want to add javascript. Before you do, either debug your page, or preview it in the browser and when you target control is visible, choose view-&#62;source from the browser’s menu. Here you will see the rendered code for your entire page. Search through the code for your control and notice its ID name, it should be similar to ctl00_ContentPlaceHolder1_yourcontrolname . When you need to reference the form that your control resides within, it will always be aspnetform.</p>
<p><strong>Master pages with Javascript pop up calendar pickers</strong></p>
<p>As mentioned above, most .NET/Javascript woes are caused by their control ID’s being referenced incorrectly. This problem is often highlighted when programmers try to incorporate pop up calendar pickers in their code. Please see the paragraphs ahead of this section for instructions to find your text field’s control name to reference in your window.open code.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Top 5 jQuery Based Gallery / Slideshow Plugin]]></title>
<link>http://intekhabrizvi.wordpress.com/2010/01/02/top-5-jquery-based-gallery-slideshow-plugin/</link>
<pubDate>Sat, 02 Jan 2010 09:53:25 +0000</pubDate>
<dc:creator>intekhabrizvi</dc:creator>
<guid>http://intekhabrizvi.wordpress.com/2010/01/02/top-5-jquery-based-gallery-slideshow-plugin/</guid>
<description><![CDATA[Top 5 jQuery Based Gallery / Slideshow Plugin 1) s3Slider DEMO WEBSITE 2) Galleriffic Galleriffic is]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Top 5 jQuery Based Gallery / Slideshow Plugin</p>
<p><strong>1) s3Slider</strong><br />
<a href="http://intekhabrizvi.wordpress.com/files/2010/01/s3slider.jpg"><img class="aligncenter size-full wp-image-250" title="s3Slider" src="http://intekhabrizvi.wordpress.com/files/2010/01/s3slider.jpg" alt="" width="600" height="258" /></a><!--more--><a href="http://www.serie3.info/s3slider/demonstration.html" target="_blank">DEMO</a><br />
<a href="http://www.serie3.info/s3slider/index.php" target="_blank">WEBSITE</a></p>
<p><strong>2) Galleriffic</strong></p>
<p>Galleriffic is a jQuery plugin that provides a rich, post-back free experience optimized to handle high volumes of photos while conserving bandwidth. I am not so great at spelling, and it was much later that I realized that the more appropriate spellings would be Gallerific or Gallerrific, but is too late now for a name change, so Galleriffic remains.</p>
<p><a href="http://intekhabrizvi.wordpress.com/files/2010/01/galleriffic.jpg"><img class="aligncenter size-full wp-image-249" title="Galleriffic" src="http://intekhabrizvi.wordpress.com/files/2010/01/galleriffic.jpg" alt="" width="550" height="535" /></a><br />
<a href="http://www.twospy.com/galleriffic/example-1.html" target="_blank">DEMO</a><br />
<a href="http://www.twospy.com/galleriffic/">WEBSITE</a></p>
<p><strong>3)Slider Gallery</strong></p>
<p>This shows a demonstration of a slider widget from the jQuery UI library used to create the same effect used on Apple&#8217;s web site.</p>
<p><a href="http://intekhabrizvi.wordpress.com/files/2010/01/slider-gallery.jpg"><img class="aligncenter size-full wp-image-248" title="Slider Gallery" src="http://intekhabrizvi.wordpress.com/files/2010/01/slider-gallery.jpg" alt="" width="596" height="192" /></a><br />
<a href="http://jqueryfordesigners.com/demo/slider-gallery.html" target="_blank">DEMO</a><br />
<a href="http://jqueryfordesigners.com/demo/slider-gallery.html" target="_blank">WEBSITE</a></p>
<p><strong>4) AJAX Image Gallery</strong></p>
<p>You can drag the Slideflow using your mouse, or click anywhere in the stack to jump there. Click inside the frame in order to enable mouse wheel and arrow key navigation! Or better yet,</p>
<p><a href="http://intekhabrizvi.wordpress.com/files/2010/01/ajax-image-gallery.jpg"><img class="aligncenter size-full wp-image-247" title="AJAX Image Gallery" src="http://intekhabrizvi.wordpress.com/files/2010/01/ajax-image-gallery.jpg" alt="" width="468" height="538" /></a><br />
<a href="http://mediaeventservices.com/blog/2007/11/15/ajax-image-gallery-powered-by-slideflow-like-cover-flow/" target="_blank">DEMO</a><br />
<a href="http://mediaeventservices.com/blog/2007/11/15/ajax-image-gallery-powered-by-slideflow-like-cover-flow/" target="_blank">WEBSITE</a></p>
<p><strong>5)Polaroid Gallery v.1.01</strong></p>
<p>Polaroid Gallery is a free, opensource flash gallery developed by myself, Christopher Einarsrud, in the year of 2006.<br />
I was originally going to use this for my online portfolio, but I ended up going for something completely different.<br />
I thought that it might come in handy for someone else, so I decided to release it here. After all, I did put some work into it and it would be a pity to see it all go to waste</p>
<p><a href="http://intekhabrizvi.wordpress.com/files/2010/01/polaroid-gallery.jpg"><img class="aligncenter size-full wp-image-246" title="Polaroid Gallery" src="http://intekhabrizvi.wordpress.com/files/2010/01/polaroid-gallery.jpg" alt="" width="600" height="513" /></a><br />
<a href="http://www.no3dfx.com/polaroid/" target="_blank">DEMO</a><br />
<a href="http://www.no3dfx.com/polaroid/" target="_blank">WEBSITE</a></p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
