<?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>Web Development Blog</title>
	<atom:link href="http://eisabainyo.net/weblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://eisabainyo.net/weblog</link>
	<description>Web Development, Web Design, Web Applications, Web 2.0, AJAX, WordPress Themes, Search Engine Optimisation, Latest Technologies and more..</description>
	<lastBuildDate>Thu, 03 May 2012 02:09:56 +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>Developing an HTML5 iPhone app using jQuery mobile &amp; PhoneGap – Part II</title>
		<link>http://eisabainyo.net/weblog/2012/03/24/developing-an-html5-iphone-app-using-jquery-mobile-phonegap-%e2%80%93-part-ii/</link>
		<comments>http://eisabainyo.net/weblog/2012/03/24/developing-an-html5-iphone-app-using-jquery-mobile-phonegap-%e2%80%93-part-ii/#comments</comments>
		<pubDate>Sat, 24 Mar 2012 10:01:49 +0000</pubDate>
		<dc:creator>eisabai</dc:creator>
				<category><![CDATA[Web Development Blog]]></category>

		<guid isPermaLink="false">http://eisabainyo.net/weblog/?p=1888</guid>
		<description><![CDATA[Continuing from Developing an HTML5 iPhone app using jQuery mobile &#038; PhoneGap – Part I The App Structure The following is the app folder structure. As mentioned in Part I, we used jQuery and jQuery mobile as the mobile javascript frameworks for the colour match app. - www -- js --- jquerymobile.js --- colourpicker --- [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eisabainyo.net/weblog/2012/03/15/developing-an-html5-iphone-app-using-jquery-mobile-phonegap-part-i/">Continuing from Developing an HTML5 iPhone app using jQuery mobile &#038; PhoneGap – Part I</a> </p>
<h3>The App Structure</h3>
<p>The following is the app folder structure.  As mentioned in <a href="http://eisabainyo.net/weblog/2012/03/15/developing-an-html5-iphone-app-using-jquery-mobile-phonegap-part-i/">Part I</a>, we used jQuery and jQuery mobile as the mobile javascript frameworks for the <a href="http://itunes.apple.com/us/app/colour-match/id507090391?ls=1&#038;mt=8">colour match app</a>. </p>
<pre>
- www
-- js
--- jquerymobile.js
--- colourpicker
--- jquery.js
--- script.js
-- css
--- images
- phonegap.js
- index.html
- results.html
- details.html
- favourites.html
- picker.html
- popular.tml
- about.html
- plugins
....
</pre>
<p>The app structure for www folder is very similar to a website folder structure.  In fact, you can basically take www folder and upload it onto a web server to run the app as a web app.  The structure is very straight forward; javascript files in JS folder, CSS and presentation images in CSS folder and all the templates in the root folder.  phonegap.js is the Javascript file that comes with PhoneGap and is necessary in order to use PhoneGap APIs and plugins.  </p>
<p>The components from jQuery mobile used within the app are Single page template, Header bars,  Buttons, Layout grids, Select menus, and List views.  We created a custom theme in CSS so the look and feel of those components are customised for the app.  </p>
<h3>Troubleshooting XCode/PhoneGap Issues</h3>
<p>We encountered a few issues with XCode and PhoneGap during development. </p>
<p><strong>1. Unable to talk to web service APIs</strong></p>
<p>When the app was running as a web app, everything was working well, but as soon as we put it onto XCode, the colour picker no longer worked &#8211; it didn&#8217;t return any result. This was caused by PhoneGap file download restriction and to resolve the issue, the following values in PhoneGap.plist file were updated: </p>
<pre>
OpenAllWhitelistURLsInWebView: YES
ExternalHosts
 - thedomainforapi.com
</pre>
<p><strong>2. PhoneGap APIs and Plugins were not working</strong></p>
<p>We were using a few PhoneGap APIs and Plugins but some of them were not working at all.  It took us a while to isolate the issue, but the problem was because we were using Prototype Javascript Framework for Colour Picker and <a href="http://wiki.phonegap.com/w/page/31995581/Using%20PhoneGap%20with%20prototype%20javascript">Prototype and PhoneGap don&#8217;t work together</a>.  Rather than trying to hack Prototype Framework, we removed it altogether and refactored the Colour Picker.  </p>
<p><strong>3. Some PhoneGap plugins were throwing ARC errors when compiling</strong></p>
<p><a href="http://www.leesilver.net/1/post/2011/8/disabling-arc-on-certain-files-in-xcode.html">Disabling ARC</a> for specific files did the trick. </p>
<h3>Installing certificates &#038; provisioning profiles</h3>
<p>Once we have the code ready and tested on Simulator, we wanted to make sure it worked well on the device as well.  In order to deploy the app onto a real device, we had to install a provisioning profile and a certificate.  The process requires a few steps, but if you follow <a href="http://www.techotopia.com/index.php/Testing_Apps_on_the_iPhone_%E2%80%93_Developer_Certificates_and_Provisioning_Profiles">this article</a>, you should not have any problem. For installing certificate and profile for distribution (ie: submitting to the app store), we followed <a href="http://www.adobe.com/devnet/dreamweaver/articles/phonegap-mobile-app-pt7.html">this article</a>. (Thanks, David!)</p>
<h3>iTunes App Store Submission Process</h3>
<p>Surprisingly, the process of submitting the app to iTunes App Store wasn&#8217;t as hard as installing certificates &#038; provision profiles.  Refer to <a href="http://www.slideshare.net/nefairious/ansca-app-store-presentation">slide 32+ of this presentation</a> for screenshots. The slides are a bit dated as we didn&#8217;t have to download Application Loader separately, it already came with XCode 4. </p>
<p><strong>Finally&#8230; how long did it take to get it approved? </strong></p>
<p>We submitted the app on Saturday (midnight Friday) but we had to cancel the first submission and resubmit the app again on Tuesday due to some last minute changes.  The app was approved the following Monday around 4am (Australian Eastern Standard Time Zone (AEST)).  We received an email from the app store around 2am which said the app was under review and at 4am, we received another email saying the app was approved and ready for sale. Reading <a href="https://developer.apple.com/appstore/guidelines.html">the guidelines</a> before submitting the app to ensure the app complies with the App Store Review Guidelines must have helped us. </p>
<p>Feel free to <a href="http://itunes.apple.com/us/app/colour-match/id507090391?ls=1&amp;mt=8">download the app</a> from the app store to see it in action. </p>
<p><a href="http://itunes.apple.com/us/app/colour-match/id507090391?ls=1&amp;mt=8"><img src="http://eisabainyo.net/weblog/wp-content/uploads/2012/03/app1.jpg" alt="" title="Colour Match Screenshot"></a></p>
<p>If you are interested in getting an <a href="http://www.anansi.com.au/work.php">iPhone/iPad application</a> that uses web technologies for your company or organisation,  <a href="http://www.anansi.com.au/contact.php">contact us</a> at <a href="http://www.anansi.com.au/">Anansi Web Development</a> to find out how we may be able to help you.</p>
<h3>Other useful articles</h3>
<p>We have written a few articles in the past on developing for iPhone and iPad and working with PhoneGap which you might find useful:</p>
<ul>
<li><a href="http://eisabainyo.net/weblog/2012/01/24/embed-a-youtube-video-iframe-in-phonegap-app/">Embed a YouTube video iframe in a phonegap app</a></li>
<li><a href="http://eisabainyo.net/weblog/2011/06/25/how-to-post-on-facebook-wall-on-iphone-and-android-using-phonegap-plugins/">How to ‘Post on Facebook Wall’ on iPhone and Android using PhoneGap plugins</a></li>
<li><a href="http://eisabainyo.net/weblog/2011/06/23/10-useful-javascript-snippets-for-your-mobile-site/">10 Useful Javascript Snippets for your mobile websites</a></li>
<li><a href="http://eisabainyo.net/weblog/2011/06/07/how-to-use-hi-res-images-for-web-apps-in-iphone4/">How to use hi-res images in web apps for iPhone4</a></li>
<li><a href="http://eisabainyo.net/weblog/2011/01/31/top-10-jquery-mobile-code-snippets-that-you-need-to-know/">Top 10 jQuery Mobile Code Snippets that you need to know</a></li>
<li><a href="http://eisabainyo.net/weblog/2010/11/08/five-important-steps-into-iphone-app-development-for-beginners/">Five Important Steps into iPhone App Development for Beginners</a></li>
<li><a href="http://eisabainyo.net/weblog/2010/05/30/designing-and-optimising-websites-for-ipad/">Designing and Optimising Websites for iPad</a></li>
<li><a href="http://eisabainyo.net/weblog/2010/03/05/how-to-disable-text-auto-correction-in-iphone-web-app/">How to disable text auto correction in iPhone web app</a></li>
<li><a href="http://eisabainyo.net/weblog/2009/10/27/tips-for-iphone-web-app-development/">Tips for iPhone Web App Development </a>   </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eisabainyo.net/weblog/2012/03/24/developing-an-html5-iphone-app-using-jquery-mobile-phonegap-%e2%80%93-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developing an HTML5 iPhone app using jQuery mobile &amp; PhoneGap &#8211; Part I</title>
		<link>http://eisabainyo.net/weblog/2012/03/15/developing-an-html5-iphone-app-using-jquery-mobile-phonegap-part-i/</link>
		<comments>http://eisabainyo.net/weblog/2012/03/15/developing-an-html5-iphone-app-using-jquery-mobile-phonegap-part-i/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 10:36:53 +0000</pubDate>
		<dc:creator>eisabai</dc:creator>
				<category><![CDATA[Web Development Blog]]></category>

		<guid isPermaLink="false">http://eisabainyo.net/weblog/?p=1868</guid>
		<description><![CDATA[Last week, we submitted an iPhone app to iTunes app store. This week, it was approved by Apple and the app is now available for download from the app store. Since everyone knows that HTML5 and app development is the future of mobile space, we&#8217;d like to share with you our experience of developing an [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://itunes.apple.com/us/app/colour-match/id507090391?ls=1&#038;mt=8"><img src="http://eisabainyo.net/weblog/wp-content/uploads/2012/03/app1.jpg" alt="" title="Colour Match Screenshot"  /></a></p>
<p>Last week, <a href="http://anansi.com.au">we</a> submitted an <a href="http://itunes.apple.com/us/app/colour-match/id507090391?ls=1&#038;mt=8">iPhone app</a> to iTunes app store.  This week, it was approved by Apple and the app is now available for download from the app store.   Since everyone knows that HTML5 and app development is the future of mobile space, we&#8217;d like to share with you our experience of developing an HTML5 iPhone app using jQuery mobile &#038; PhoneGap.  </p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2012/03/app4.jpg" alt="" title="Colour Match Screenshot" width="200<br />
"  /> <img src="http://eisabainyo.net/weblog/wp-content/uploads/2012/03/app2.jpg" alt="" title="Colour Match Screenshot" width="200<br />
"  /> <img src="http://eisabainyo.net/weblog/wp-content/uploads/2012/03/app3.jpg" alt="" title="Colour Match Screenshot" width="200<br />
" /></p>
<p><strong>About the app<br />
</strong>The app is called &#8220;<a href="http://itunes.apple.com/us/app/colour-match/id507090391?ls=1&#038;mt=8">Colour Match</a>&#8221; and the purpose of the app is to allow users to pick any colour using a colour picker tool and display clothing &#038; accessories that match the colour from <a href="http://onlineshoppingusa.com.au">Online Shopping USA</a> database.   Features of the app include a colour picker, a selection of most popular colours for easy browsing, favourites where users can save their favourite products and email, facebook and twitter sharing.  </p>
<p><strong>Technologies used<br />
</strong>The technologies used for the app are:<br />
- <a href="http://jquery.com">jQuery 1.7.1</a> +<a href="http://jquerymobile.com/"> jQuery Mobile 1.0.1</a> (Javascript framework)<br />
- <a href="http://phonegap.com">PhoneGap 1.4.1</a><br />
- HTML5 (template structure &#038; Web SQL database storage)<br />
- CSS3 (webkit animations and layout)<br />
- PHP for web services (a few custom web services were written to obtain data from a mySQL database that resides on web server)</p>
<p><strong>PhoneGap plugins used<br />
</strong>We used the following <a href="https://github.com/phonegap/phonegap-plugins">PhoneGap plugins</a> to provide native features that are not possible to implement using Javascript/HTML.<br />
- Twitter<br />
- ChildBrowser<br />
- EmailComposer </p>
<p><strong>Development timeline</strong><br />
It look us about a week to come up with the concept and fine-tune requirements before starting the actual development.  The HTML5 + CSS development took less than a week as jQuery mobile made it pretty easy to have a working functional app within a few days.  The design of the app took a few days.  Most of the development time was spent on writing web services in PHP and writing a system that automatically scans images and picks the most appropriate colour.  It took us half a day to set up Xcode, PhoneGap, provisional certificates etc (mind you, this wasn&#8217;t the first time we did this, but it still took us some time because we are not very familiar with a Mac computer). Then one full day was spent integrating and intalling PhoneGap plugins into the app, and finally submitting it to iTunes.  All up, it took about 4 weeks from the start of the project to the day the app became available on iTunes app store.  </p>
<p>&#8212; </p>
<p><a href="http://eisabainyo.net/weblog/2012/03/24/developing-an-html5-iphone-app-using-jquery-mobile-phonegap-%e2%80%93-part-ii/">Part II</a> will cover more technical details such as the app structure, submission process to iTunes, installing certificates and troubleshooting XCode issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://eisabainyo.net/weblog/2012/03/15/developing-an-html5-iphone-app-using-jquery-mobile-phonegap-part-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Embed a YouTube video iframe in a phonegap app</title>
		<link>http://eisabainyo.net/weblog/2012/01/24/embed-a-youtube-video-iframe-in-phonegap-app/</link>
		<comments>http://eisabainyo.net/weblog/2012/01/24/embed-a-youtube-video-iframe-in-phonegap-app/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 08:29:05 +0000</pubDate>
		<dc:creator>eisabai</dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://eisabainyo.net/weblog/?p=1858</guid>
		<description><![CDATA[This tutorial will teach you how to embed a YouTube video iframe in a phonegap app. In this tutorial, I am using phonegap version 1.2.0. Youtube will automatically convert the flash video into HTML5 video tag so you don&#8217;t have to worry about encoding the video. HTML: Go to YouTube and get embed code for [...]]]></description>
			<content:encoded><![CDATA[<p>This tutorial will teach you how to embed a YouTube video iframe in a phonegap app.  In this tutorial, I am using phonegap version 1.2.0.   Youtube will automatically convert the flash video into HTML5 video tag so you don&#8217;t have to worry about encoding the video.  </p>
<p><strong>HTML:</strong></p>
<p>Go to YouTube and get embed code for the video that you wish to include into your phonegap app.   Note that not all YouTube videos can be played from a phonegap app due to restrictions placed in the videos.  </p>
<pre>

&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;YouTube video&lt;/title&gt;
		&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;&quot; /&gt;
		&lt;meta name=&quot;apple-mobile-web-app-capable&quot; content=&quot;yes&quot; /&gt;
		&lt;meta name=&quot;apple-mobile-web-app-status-bar-style&quot; content=&quot;black&quot; /&gt;
		&lt;script src=&quot;phonegap-1.2.0.js&quot;&gt;&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;

        &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/9HDeEbJyNK8&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;

    &lt;/body&gt;
&lt;/html&gt;
</pre>
<p><strong>Changes to PhoneGap.plist</strong></p>
<p>Change/add the following values in PhoneGap.plist file of your app.  </p>
<pre>
MediaPlaybackRequiresUserAction: NO
AllowInlineMediaPlayback: YES
OpenAllWhitelistURLsInWebView: YES
ExternalHosts
          *.youtube.com
          *.ytimg.com
</pre>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2012/01/phonegap-plist.jpg" alt="" title="phonegap.plist" width="500" height="313" class="alignnone size-full wp-image-1859" /></p>
<p>And that&#8217;s it!  You should now be able to run the app on Simulator or an iOS device and be able to play the youtube video using the default video player that comes with the device (for example, QuickTime player for iPhone and iPad).</p>
]]></content:encoded>
			<wfw:commentRss>http://eisabainyo.net/weblog/2012/01/24/embed-a-youtube-video-iframe-in-phonegap-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Display a location-aware google map on page load with jQuery mobile</title>
		<link>http://eisabainyo.net/weblog/2012/01/14/display-location-aware-google-map-on-page-load-with-jquery-mobile/</link>
		<comments>http://eisabainyo.net/weblog/2012/01/14/display-location-aware-google-map-on-page-load-with-jquery-mobile/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 09:07:29 +0000</pubDate>
		<dc:creator>eisabai</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://eisabainyo.net/weblog/?p=1851</guid>
		<description><![CDATA[The following snippet of code will display a google map with user&#8217;s default location on jQuery mobile page if location services is enabled. Otherwise, it will use predefined lat and long values to create the map. The code uses jQuery mobile pagecreate event. A little info on jQuery mobile pagecreate event: pagecreate Triggered when the [...]]]></description>
			<content:encoded><![CDATA[<p>The following snippet of code will display a google map with user&#8217;s default location on jQuery mobile page if location services is enabled.  Otherwise, it will use predefined lat and long values to create the map.   The code uses jQuery mobile <a href="http://jquerymobile.com/demos/1.0/docs/api/events.html">pagecreate event</a>.  </p>
<p>A little info on jQuery mobile pagecreate event: </p>
<blockquote><p><strong>pagecreate</strong><br />
Triggered when the page has been created in the DOM (via ajax or other) but before all widgets have had an opportunity to enhance the contained markup. This event is most useful for user&#8217;s wishing to create their own custom widgets for child markup enhancement as the jquery mobile widgets do.</p>
<p><code>$( '#aboutPage' ).live( 'pagecreate',function(event){<br />
  ( ":jqmData(role='sweet-plugin')" ).sweetPlugin();<br />
});</code>
</p></blockquote>
<p>And the snippets:</p>
<p><strong>Javascript</strong></p>
<pre>
function initialize(lat,lng) {
	var latlng = new google.maps.LatLng(lat, lng);

	var myoptions = {
		zoom: 12,
		center: latlng,
		disableDefaultUI: true,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};

	var map = new google.maps.Map(document.getElementById("googlemap"),myoptions);

	var icon = new google.maps.MarkerImage('images/marker.png',
			new google.maps.Size(20, 20), // size
			new google.maps.Point(0, 0), // origin
			new google.maps.Point(20, 20) // anchor
		);

	var mymarker = new google.maps.Marker({
		position: latlng,
		map: map,
		icon: icon
	});
}
</pre>
<pre>
$('.page-map').live("pagecreate", function() {
        var lat = -33.887418, lng = 151.17403;
	if(navigator.geolocation) {
		navigator.geolocation.getCurrentPosition(function(position){
			initialize(position.coords.latitude,position.coords.longitude);
		}, function() { console.log('Error with getCurrentPosition'); });
	} else {
                // predefined location
		initialize(lat, lng);
	}
});
</pre>
<p><strong>HTML</strong></p>
<pre>
&lt;div data-role=&quot;page&quot; class=&quot;page-map&quot;&gt;

	&lt;div data-role=&quot;header&quot;&gt;
		&lt;h1&gt;Google Map&lt;/h1&gt;
	&lt;/div&gt;&lt;!-- /header --&gt;

	&lt;div data-role=&quot;content&quot;&gt;
		 &lt;div id=&quot;googlemap&quot;&gt;&lt;/div&gt;
	&lt;/div&gt;&lt;!-- /content --&gt;

	&lt;div data-role=&quot;footer&quot;&gt;
		&lt;h4&gt;Footer content&lt;/h4&gt;
	&lt;/div&gt;&lt;!-- /footer --&gt;

&lt;/div&gt;&lt;!-- /page --&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://eisabainyo.net/weblog/2012/01/14/display-location-aware-google-map-on-page-load-with-jquery-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Holiday Sales for Web Designers and Developers</title>
		<link>http://eisabainyo.net/weblog/2011/12/27/holiday-sale-for-web-designers-and-developers/</link>
		<comments>http://eisabainyo.net/weblog/2011/12/27/holiday-sale-for-web-designers-and-developers/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 12:21:07 +0000</pubDate>
		<dc:creator>eisabai</dc:creator>
				<category><![CDATA[Web Development Blog]]></category>
		<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://eisabainyo.net/weblog/?p=1838</guid>
		<description><![CDATA[We&#8217;ve put together some of the best holiday sales for web designers and developers. Enjoy! BigCommerce BigCommerce is the all-in-one, #1 rated ecommerce service for selling products online with over 10,000 happy clients and growing daily. Special offer: Receive up to $100 in Google AdWords credit when you purchase a BigCommerce plan. No coupon required. [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: center"><a href="http://eisabainyo.net/weblog/2011/12/27/holiday-sale-for-web-designers-and-developers/"><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/12/sale.jpg" alt="" title="Sale" width="397" height="256"/></a></div>
<p style="font-style: italic; font-family:Arial, Sans Serif; font-size: 13px;">We&#8217;ve put together some of the best holiday sales for web designers and developers.   Enjoy!</p>
<div style="padding-top: 15px; font-family:Arial, Sans Serif; font-size: 13px;"><a href="http://bit.ly/rs9dDc" style="font-family:Arial, Sans Serif; font-size: 15px; color: #444; font-weight: bold;">BigCommerce</a><br />
BigCommerce is the all-in-one, #1 rated ecommerce service for selling products online with over 10,000 happy clients and growing daily.<br />
<em>Special offer: </em>Receive up to $100 in Google AdWords credit when you purchase a BigCommerce plan.  No coupon required. </div>
<div style="padding-top: 15px; font-family:Arial, Sans Serif; font-size: 13px;"><a href="http://bit.ly/sHAbxO" style="font-family:Arial, Sans Serif; font-size: 15px; color: #444; font-weight: bold;">Blue Host (Linux, Apache, PHP, MySQL Hosting)</a><br />
Web Hosting at $6.95 per month with UNLIMITED Domain Hosting &#038; UNLIMITED GB Hosting Space<br />
<em>Special offer:</em> $75 Free Google Credit and a free domain name</div>
<div style="padding-top: 15px; font-family:Arial, Sans Serif; font-size: 13px;"><a href="http://bit.ly/snxm5m" style="font-family:Arial, Sans Serif; font-size: 15px; color: #444; font-weight: bold;">Easy CGI (ASP.NET &#038; VPS Hosting)</a><br />
Shared ASP.NET hosting at $7.96.  VPS hosting is also available. </div>
<div style="padding-top: 15px; font-family:Arial, Sans Serif; font-size: 13px;"><a href="http://bit.ly/tXXbBl" style="font-family:Arial, Sans Serif; font-size: 15px; color: #444; font-weight: bold;">Godaddy</a><br />
Domain Names and SSL Certificates<br />
<em>Special offer: </em><a href="http://eisabainyo.net/weblog/2011/07/04/godaddy-coupons-2011/">Godaddy Coupon codes</a></div>
<div style="padding-top: 15px; font-family:Arial, Sans Serif; font-size: 13px;"><a href="http://bit.ly/rpvaMm" style="font-family:Arial, Sans Serif; font-size: 15px; color: #444; font-weight: bold;">Zend Studio &#8211; Professional IDE for PHP Developers</a><br />
Zend Studio is the leading professional-grade PHP development environment, designed to maximize developer productivity by enabling you to develop and maintain code faster, solve application problems quickly and improve team collaboration.<br />
<em>Special offer:</em> <a href="http://bit.ly/rpvaMm">Free trial</a></div>
<div style="padding-top: 15px; font-family:Arial, Sans Serif; font-size: 13px;"><a href="http://bit.ly/rPolFU" style="font-family:Arial, Sans Serif; font-size: 15px; color: #444; font-weight: bold;">99 Designs</a><br />
Start a Design Contest now for your choice of wonderful and unique designs. Preview before you buy. </div>
<div style="padding-top: 15px; font-family:Arial, Sans Serif; font-size: 13px;"><a href="http://eisabainyo.net/view/themeforest" style="font-family:Arial, Sans Serif; font-size: 15px; color: #444; font-weight: bold;">Website templates</a><br />
A one-stop shop for premium WordPress themes, web templates and mobile themes<br />
<a href="http://themeforest.net/category/wordpress?sort_by=average_rating&#038;ref=eisabai&#038;categories=wordpress&#038;page=1">WordPress</a>, <a href="http://themeforest.net/category/cms-themes/drupal?sort_by=average_rating&#038;ref=eisabai&#038;categories=cms-themes%2Fdrupal&#038;page=1">Drupal</a>, <a href="http://themeforest.net/category/cms-themes/expressionengine?sort_by=average_rating&#038;ref=eisabai&#038;categories=cms-themes%2Fexpressionengine&#038;page=1">Expression Engine</a>, <a href="http://themeforest.net/category/ecommerce/opencart?sort_by=average_rating&#038;ref=eisabai&#038;categories=ecommerce%2Fopencart&#038;page=1">Open Cart</a> and many more.</div>
]]></content:encoded>
			<wfw:commentRss>http://eisabainyo.net/weblog/2011/12/27/holiday-sale-for-web-designers-and-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Master Mobile Web Apps with jQuery Mobile</title>
		<link>http://eisabainyo.net/weblog/2011/09/03/book-review-master-mobile-web-apps-with-jquery-mobile/</link>
		<comments>http://eisabainyo.net/weblog/2011/09/03/book-review-master-mobile-web-apps-with-jquery-mobile/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 09:04:57 +0000</pubDate>
		<dc:creator>eisabai</dc:creator>
				<category><![CDATA[Web Development Blog]]></category>

		<guid isPermaLink="false">http://eisabainyo.net/weblog/?p=1824</guid>
		<description><![CDATA[&#8220;Master Mobile Web Apps with jQuery Mobile&#8221; is an e-book on jQuery Mobile written by Matt Doyle, an experienced technical author and coder. According to the author, the book is intended for web development and design professionals who want to start building apps and therefore a basic knowledge of web technologies including HTML, CSS, JavaScript [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://store.elated.com/"><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/09/master-mobile-web-apps-with-jqm.png" alt="" title="Master Mobile Web Apps with jQuery Mobile" width="200" class="alignnone size-full wp-image-1825" style="float: left; margin-right: 5px; " /></a>&#8220;<a href="http://store.elated.com/">Master Mobile Web Apps with jQuery Mobile</a>&#8221; is an e-book on jQuery Mobile written by Matt Doyle, an experienced technical author and coder.  According to the author, the book is intended for web development and design professionals who want to start building apps and therefore a basic knowledge of web technologies including HTML, CSS, JavaScript and web servers is required.   </p>
<p>The book is written for jQuery Mobile Beta 2 which is the current version of <a href="http://jquerymobile.com/">jQuery Mobile</a> and there are 3 parts to the book. </p>
<p><strong>Part I</strong> covers the basics you need to know about jQuery Mobile.  The thing I like about it is that it contains a lot of sample code, so if you like to create a website while reading the book, you can do so easily with the help of sample code.  The tutorials in Part I is great for someone who wants to just get a simple mobile site up and running without wanting to worry too much about the UI and the nitty gritty details.</p>
<p><strong>Part II</strong> focuses on the fundamentals of building user interfaces with jQuery Mobile. It covers dialogs, forms, navigations, lists, header, footer and other essential elements of a website. I particularly liked the &#8220;Creating Forms&#8221; chapter because it contains a lot of information about different input elements and attributes that you can use in jQuery Mobile. Forms are one of the most trickest elements in web designs and it is very helpful to have the whole chapter dedicated to this subject.  If you are looking to create a mobile web application that uses forms, this chapter is a must-read.  </p>
<p><strong>Part III</strong> is titled Beyond the Basics and it contains 3 chapters; themeing jQuery Mobile, the jQuery Mobile API and a complete web app example.  As you probably already knew, jQuery Mobile comes with 5 default themes that you can choose from, but more often than not, you need to create a custom theme that suits your website or web app.  Themeing jQuery Mobile chapter explains just how you can do that with an example red theme.  The jQuery Mobile API is another favourite chapter of mine because when I was developing in jQuery Mobile a few months ago, there weren&#8217;t a lot of resources available on how the API works, in particular, the methods and events available.  It could have saved me a lot of time if only I had this book back then.  The last chapter in Part III is a complete web app example.  The web app example uses PHP5 for the back end and as the title suggest, it is a complete app, meaning you can take the example code, upload it to your web server and have a fully functional web app in jQuery Mobile.  </p>
<p>Overall, the book is an excellent book for developers who want to dive into mobile app development with jQuery Mobile.  There are a lot of screenshots, code examples and references to help you get started.  What I like most about the book is that it&#8217;s written by a developer for developers which means the tutorials are easy to follow and will get you up to speed on the basics of app development in no time. </p>
]]></content:encoded>
			<wfw:commentRss>http://eisabainyo.net/weblog/2011/09/03/book-review-master-mobile-web-apps-with-jquery-mobile/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>13 FREE iPhone Apps for Web Developers</title>
		<link>http://eisabainyo.net/weblog/2011/07/09/15-free-iphone-apps-for-web-developers/</link>
		<comments>http://eisabainyo.net/weblog/2011/07/09/15-free-iphone-apps-for-web-developers/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 23:56:28 +0000</pubDate>
		<dc:creator>eisabai</dc:creator>
				<category><![CDATA[Web Development Blog]]></category>

		<guid isPermaLink="false">http://eisabainyo.net/weblog/?p=1795</guid>
		<description><![CDATA[There are many web development related iPhone apps on the Appstore, but it not very often you come across a FREE app that is useful and works as it should. Therefore, I am sharing 13 Free iPhone apps that I think will be useful for you as a web developer. PhpRiot PHP Reference This app [...]]]></description>
			<content:encoded><![CDATA[<p>There are many web development related iPhone apps on the Appstore, but it not very often you come across a FREE app that is useful and works as it should.  Therefore, I am sharing 13 Free iPhone apps that I think will be useful for you as a web developer. </p>
<p><a href="http://itunes.apple.com/au/app/phpriot-php-reference/id382340169?mt=8">PhpRiot PHP Reference</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/phpriot.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>This app gives you full access to PHP manual, Zend Framework programmer&#8217;s guide and Smarty Template Engine manual. There is also a quiz training system, which you can use to test and improve your PHP knowledge.   </p>
<p><a href="http://itunes.apple.com/au/app/ihtml/id349701644?mt=8">iHTML</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/ihtml.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>This is a must-have utility app for web developers as it displays HTML source of a web address. There are two modes available; on Portrait mode, it displays raw HTML and on Landscape mode, it shows a web view alongside the source. </p>
<p><a href="http://itunes.apple.com/au/app/css-unit-converter/id373985336?mt=8">CSS UNIT Converter</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/cssunit.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>This is a quick and easy conversion calculator for Front-end developers working with pixels, ems, percentages, and points.  It lets you convert a font size in pixel to em, pt and % easily.  The conversion table is very useful because you can see all the different values in a single screen.  </p>
<p><a href="http://itunes.apple.com/au/app/css-quick-reference/id397775784?mt=8">CSS Quick Reference</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/cssref.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>CSS Reference app provides handy access to all of the W3C&#8217;s Cascading Style Sheets (CSS) properties, pseudo-classes and pseudo-elements, including the syntax (with the equivalent JavaScript syntax for the given property), possible values for each property, usage notes, and fully rendered sample code. The sample HTML code can be edited and re-displayed using the built-in browser which mean you can try different values and see how it looks without having to use another CSS Editor. </p>
<p><a href="http://itunes.apple.com/au/app/mobile-css-reference/id379937117?mt=8">Mobile CSS Reference</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/mobilecssref.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>Mobile CSS Reference gives you descriptions, examples, syntax and limitations of CSS properties and selectors on a nice UI. </p>
<p><a href="http://itunes.apple.com/au/app/whatthefont/id304304134?mt=8">WhatTheFont</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/whatthefont.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>This app lets you identify the fonts in a photo or a screeshot.  So the next time you see a great font in a magazine ad, poster, or on the web, you can just take out your iPhone and snap a photo, and WhatTheFont will identify that font for you.  This app requires Internet connection and works via Wi-Fi or the mobile phone (3G) network.</p>
<p><a href="http://itunes.apple.com/au/app/linux-command-reference/id324321674?mt=8">Linux Command Reference</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/linuxref.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>With Linux Command Reference (LCR) app, you can access to the most widely used Linux commands to date. Although this app doesn&#8217;t cover every single Linux command, it is a good &#8220;starter&#8221; for anyone who&#8217;s just starting out with the Linux operating system.</p>
<p><a href="http://itunes.apple.com/au/app/jsint/id438170276?mt=8">JSInt</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/jsint.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>JSInt is an interactive JavaScript console which lets you perform mathematical calculations or for learning JavaScript. Just input your Javascript statement in the console and it will return you the result.  For example, if you enter parseInt(5.135, 10), it will return 5. JSInt uses JavaScriptCore Open Source library which implements JavaScript 1.5 / ECMA-262 3rd edition.</p>
<p><a href="http://itunes.apple.com/au/app/chmod/id306208057?mt=8">Chmod</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/chmod.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>Chmod is a handy little utility app for determining file and directory permissions on Mac OS X, Linux and Unix operating systems. </p>
<p><a href="http://itunes.apple.com/au/app/rgb-colors/id377669507?mt=8">RGB Colors</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/rgb.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>RGB Colors iPhone app show you the color of the RGB combination that you choose using the sliders provided. It will be useful when you want to use rgb or rgba values to declare a color in CSS.</p>
<p><a href="http://itunes.apple.com/au/app/wordpress/id335703880?mt=8">WordPress</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/wordpress.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>WordPress app enables you to manage your WordPress blog or site from your iPhone device. With this app, you can moderate comments, create or edit posts and pages, and add images or videos with ease. All you need is a WordPress.com blog or a self-hosted WordPress.org site running 2.9.2 or higher.  I have written a step-by-step guide on how to use WordPress iPhone app. </p>
<p><a href="http://itunes.apple.com/app/dropbox/id327630330?mt=8">Dropbox</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/dropbox.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>Dropbox app lets you access all your photos, docs, and videos saved in your Dropbox account from your iPhone. Not only does it let you access the files, you can also save photos and videos into your Dropbox account from your iPhone. </p>
<p><a href="http://itunes.apple.com/app/passgen/id286411342?mt=8">PassGen</a></p>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/07/passgen.jpg" alt="" title="Screenshot" width="334" height="480" class="alignnone size-full" /></p>
<p>PassGen generates a random password that is between 4 and 16 digits and comprised of upper and lower case letters, numbers and special characters. It can also be used to generate Hexadecimal passwords. Once a password has been generated, it can be emailed.</p>
]]></content:encoded>
			<wfw:commentRss>http://eisabainyo.net/weblog/2011/07/09/15-free-iphone-apps-for-web-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Godaddy Coupons 2011</title>
		<link>http://eisabainyo.net/weblog/2011/07/04/godaddy-coupons-2011/</link>
		<comments>http://eisabainyo.net/weblog/2011/07/04/godaddy-coupons-2011/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 07:42:30 +0000</pubDate>
		<dc:creator>eisabai</dc:creator>
				<category><![CDATA[Web Development Blog]]></category>
		<category><![CDATA[WWW]]></category>

		<guid isPermaLink="false">http://eisabainyo.net/weblog/?p=1816</guid>
		<description><![CDATA[Coupons for Godaddy Domain names $5 off $30 Order cjcsave Click to copy $1.00 off cjcdollar Click to copy $5 off $30 cjcdoe30 Click to copy $7.50 .net and .org renewals gdbb776 Click to copy 35% off .com fun3 Click to copy $10 off $50 order cjcchp50 Click to copy $20 off $100 cjcdeal100 Click [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eisabainyo.net/view/godaddy" target="_blank"><img src="http://www.awltovhc.com/image-3838536-10379076" alt="Go Daddy $7.49.com Sale" border="0"></a></p>
<p><strong>Coupons for Godaddy Domain names</strong></p>
<div class="coupon">
<div class="desc">$5 off $30 Order</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">cjcsave</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">$1.00 off</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">cjcdollar</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">$5 off $30</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">cjcdoe30</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">$7.50 .net and .org renewals</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">gdbb776</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">35% off .com</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">fun3</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">$10 off $50 order</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">cjcchp50</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">$20 off $100</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">cjcdeal100</div>
<div class="coupon-link">Click to copy</div>
</div>
<p><strong>Any order (eg: SSL certificate, Domain Name, Hosting, etc)</strong></p>
<div class="coupon">
<div class="desc">$1 off any order</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">cjcdeal74</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">10% off any purchase</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">cjcfat10</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">15% off $75 or more</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">cjcfat75</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">20% off $40 or more</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">bb5020d30</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">20% off $40 or more</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">gdbb45</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">10% off any order</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">SPN1</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">15% off any order</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">downforce</div>
<div class="coupon-link">Click to copy</div>
</div>
<div class="coupon">
<div class="desc">10% off any order</div>
<div class="coupon-code" rel="http://eisabainyo.net/view/godaddy">promo10</div>
<div class="coupon-link">Click to copy</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://eisabainyo.net/weblog/2011/07/04/godaddy-coupons-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Contact Form in jQuery Mobile and PHP</title>
		<link>http://eisabainyo.net/weblog/2011/06/29/creating-a-contact-form-in-jquery-mobile-and-php/</link>
		<comments>http://eisabainyo.net/weblog/2011/06/29/creating-a-contact-form-in-jquery-mobile-and-php/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 06:39:11 +0000</pubDate>
		<dc:creator>eisabai</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://eisabainyo.net/weblog/?p=1758</guid>
		<description><![CDATA[This is a step-by-step tutorial on how to create a contact form in jQuery Mobile. I have also included complete php source code that can be used as a web service to send emails from your server. Download 1. Create a folder structure The first thing you need to do is create a folder structure [...]]]></description>
			<content:encoded><![CDATA[<p>This is a step-by-step tutorial on how to create a contact form in jQuery Mobile.  I have also included complete php source code that can be used as a web service to send emails from your server.  </p>
<div class="download">
<h3>Download</h3>
<form id="edd_purchase_1910" action="" method="POST"><div class="edd_purchase_submit_wrapper"><span class="edd_button edd_add_to_cart_wrap edd_gray"><span class="edd_button_outer"><span class="edd_button_inner"><input type="submit" class="edd_button_text edd-submit edd-add-to-cart" name="edd_purchase_download" value="Download complete source code $10.00" data-action="edd_add_to_cart" data-download-id="1910"/></span></span></span><a href="http://eisabainyo.net/weblog/checkout/" class="edd_go_to_checkout edd_button edd_gray" style="display:none;"><span class="edd_button_outer"><span class="edd_button_inner"><span class="edd_button_text"><span>Checkout</span></span></span></span></a><img src="http://eisabainyo.net/weblog/wp-content/plugins/easy-digital-downloads/includes/images/loading.gif" class="edd-cart-ajax" style="display: none;"/>&nbsp;<span style="display:none;" class="edd-cart-added-alert">added to your cart</span></div><!--end .edd_purchase_submit_wrapper--><input type="hidden" name="download_id" value="1910"><input type="hidden" name="edd_action" value="add_to_cart"></form><!--end #edd_purchase_1910--></div>
<p><strong>1. Create a folder structure<br />
</strong>The first thing you need to do is create a folder structure where all your files will live.  My folder structure is as follows:</p>
<pre>- www
-- api
--- send.php
-- js
--- contact.js
-- css
--- contact.css
-- index.html
</pre>
<p><strong>2. Copy and paste the following boilerplate template</strong><br />
This will go into index.html file that you&#8217;ve created.  Note that we are including the Javascript and CSS files from the jQuery Mobile server.  You can also download the latest version of <a href="http://jquerymobile.com/">jQuery Mobile</a> from the website and include the local copy.  </p>
<pre>
&lt;!DOCTYPE html&gt;
&lt;html&gt;
	&lt;head&gt;
	&lt;title&gt;Contact Us&lt;/title&gt;
	&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css&quot; /&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;http://code.jquery.com/jquery-1.6.1.min.js&quot;&gt;&lt;/script&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt; 

&lt;div data-role=&quot;page&quot;&gt;

	&lt;div data-role=&quot;header&quot;&gt;
		&lt;h1&gt;Contact Us&lt;/h1&gt;
	&lt;/div&gt;&lt;!-- /header --&gt;

	&lt;div data-role=&quot;content&quot;&gt;
		&lt;!-- Content goes here --&gt;
	&lt;/div&gt;&lt;!-- /content --&gt;

	&lt;div data-role=&quot;footer&quot;&gt;
		&lt;p&gt;Source code by &lt;a href=&quot;http://eisabainyo.net/weblog&quot; rel=&quot;external&quot;&gt;Web Development Blog&lt;/a&gt;.  Check out &lt;a href=&quot;http://eisabainyo.net/weblog/tips-resources&quot; rel=&quot;external&quot;&gt;tip &amp;amp; resources&lt;/a&gt; for Web Developers.&lt;/a&gt;&lt;/p&gt;
	&lt;/div&gt;&lt;!-- /footer --&gt;
&lt;/div&gt;&lt;!-- /page --&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><strong>3. Add HTML form in the content area</strong><br />
Add the following code into &lt;div data-role=&#8221;content&#8221;&gt;</p>
<pre>
		&lt;div class=&quot;contact-thankyou&quot; style="display: none;"&gt;
			Thank you.  Your message has been sent.  We will get back to you as soon as we can.
		&lt;/div&gt;
		&lt;div class=&quot;contact-form&quot;&gt;
			&lt;p class=&quot;mandatory&quot;&gt;* indicates Manadatory Field&lt;/p&gt;
			&lt;div data-role=&quot;fieldcontain&quot; class=&quot;text-field&quot;&gt;
				&lt;label for=&quot;firstname&quot;&gt;First Name*:&lt;/label&gt;
				&lt;input type=&quot;text&quot; name=&quot;firstname&quot; value=&quot;&quot; placeholder=&quot;&quot; class=&quot;required&quot; id=&quot;firstname&quot; /&gt;
			&lt;/div&gt;
			&lt;div data-role=&quot;fieldcontain&quot; class=&quot;text-field&quot;&gt;
				&lt;label for=&quot;surname&quot;&gt;Last Name:&lt;/label&gt;
				&lt;input type=&quot;text&quot; name=&quot;surname&quot; value=&quot;&quot; placeholder=&quot;&quot; id=&quot;surname&quot; /&gt;
			&lt;/div&gt;
			&lt;div data-role=&quot;fieldcontain&quot; class=&quot;text-field&quot;&gt;
				&lt;label for=&quot;email&quot;&gt;Email Address*:&lt;/label&gt;
				&lt;input type=&quot;email&quot; name=&quot;email&quot; value=&quot;&quot; placeholder=&quot;&quot; class=&quot;required&quot; id=&quot;email&quot;  /&gt;
			&lt;/div&gt;
			&lt;div data-role=&quot;fieldcontain&quot; class=&quot;text-field&quot;&gt;
				&lt;label for=&quot;mobilephone&quot;&gt;Mobile Number:&lt;/label&gt;
				&lt;input type=&quot;number&quot; name=&quot;mobilephone&quot; value=&quot;&quot; placeholder=&quot;&quot; id=&quot;mobilephone&quot; /&gt;
			&lt;/div&gt;
			&lt;div data-role=&quot;fieldcontain&quot;&gt;
				&lt;label for=&quot;state&quot;&gt;State:*&lt;/label&gt;
					&lt;select name=&quot;state&quot; class=&quot;required&quot; id=&quot;state&quot;&gt;
						&lt;option value=&quot;&quot; data-placeholder=&quot;true&quot;&gt;Please select your state&lt;/option&gt;
						&lt;option value=&quot;ACT&quot;&gt;ACT&lt;/option&gt;
						&lt;option value=&quot;NSW&quot;&gt;NSW&lt;/option&gt;
						&lt;option value=&quot;NT&quot;&gt;NT&lt;/option&gt;
						&lt;option value=&quot;QLD&quot;&gt;QLD&lt;/option&gt;
						&lt;option value=&quot;SA&quot;&gt;SA&lt;/option&gt;
						&lt;option value=&quot;TAS&quot;&gt;TAS&lt;/option&gt;
						&lt;option value=&quot;VIC&quot;&gt;VIC&lt;/option&gt;
						&lt;option value=&quot;WA&quot;&gt;WA&lt;/option&gt;
					&lt;/select&gt;
			&lt;/div&gt;
			&lt;div data-role=&quot;fieldcontain&quot;&gt;
				&lt;label for=&quot;message&quot;&gt;Message*:&lt;/label&gt;
				&lt;textarea name=&quot;message&quot; id=&quot;message&quot; placeholder=&quot;&quot; class=&quot;required&quot;&gt;&lt;/textarea&gt;
			&lt;/div&gt;
			&lt;div class=&quot;send&quot;&gt;&lt;a href=&quot;javascript:;&quot; data-role=&quot;button&quot; data-theme=&quot;a&quot; data-iconpos=&quot;right&quot; id=&quot;send-feedback&quot;&gt;send feedback&lt;/a&gt;&lt;/div&gt;
		&lt;/div&gt;&lt;!-- //.contact-form --&gt;
		</pre>
<p><strong>4. Create a web service in PHP to send email<br />
</strong>We have a folder called api and we will create a new file called send.php in the api folder.  You will need to change the $recipient variable.</p>
<pre>
&lt;?php
header('content-type: application/json; charset=utf-8');

if (isset($_GET[&quot;firstname&quot;])) {
	$firstname = strip_tags($_GET['firstname']);
	$surname = strip_tags($_GET['surname']);
	$email = strip_tags($_GET['email']);
	$mobilephone = strip_tags($_GET['mobilephone']);
	$state = strip_tags($_GET['state']);
	$message = strip_tags($_GET['message']);
	$header = &quot;From: &quot;. $firstname . &quot; &lt;&quot; . $email . &quot;&gt;rn&quot;; 

	$ip = $_SERVER['REMOTE_ADDR'];
	$httpref = $_SERVER['HTTP_REFERER'];
	$httpagent = $_SERVER['HTTP_USER_AGENT'];
	$today = date(&quot;F j, Y, g:i a&quot;);    

	$recipient = 'YOUREMAILADDRESS@DOMAIN.COM';
	$subject = 'Contact Form';
	$mailbody = &quot;
First Name: $firstname
Last Name: $surname
Email: $email
Mobile Phone: $mobilephone
State: $state
Message: $message

IP: $ip
Browser info: $httpagent
Referral: $httpref
Sent: $today
&quot;;
	$result = 'success';

	if (mail($recipient, $subject, $mailbody, $header)) {
		echo json_encode($result);
	}
}
?&gt;
</pre>
<p><strong>5. Add Javascript code to handle form onsubmit<br />
</strong>Create a file called contact.js with the following content and include it in your HTML file.</p>
<pre>
$('#send-feedback').live(&quot;click&quot;, function() {
	var url = 'api/send.php';
	var error = 0;
	var $contactpage = $(this).closest('.ui-page');
	var $contactform = $(this).closest('.contact-form');
	$('.required', $contactform).each(function (i) {
        if ($(this).val() === '') {
			error++;
        }
	}); // each
	if (error &gt; 0) {
			alert('Please fill in all the mandatory fields. Mandatory fields are marked with an asterisk *.');
	} else {
		var firstname = $contactform.find('input[name=&quot;firstname&quot;]').val();
		var surname = $contactform.find('input[name=&quot;surname&quot;]').val();
		var state = $contactform.find('select[name=&quot;state&quot;]').val();
		var mobilephone = $contactform.find('input[name=&quot;mobilephone&quot;]').val();
		var email = $contactform.find('input[name=&quot;email&quot;]').val();
		var message = $contactform.find('textarea[name=&quot;message&quot;]').val();	

		//submit the form
		$.ajax({
			type: &quot;GET&quot;,
			url: url,
			data: {firstname:firstname, surname:surname, state: state, mobilephone: mobilephone, email: email, message: message},
            success: function (data) {
				if (data == 'success') {
					// show thank you
					$contactpage.find('.contact-thankyou').show();
					$contactpage.find('.contact-form').hide();
				}  else {
					alert('Unable to send your message. Please try again.');
				}
			}
		}); //$.ajax

	}
	return false;
});
</pre>
<p>After completing all the above steps, you will have a fully functional contact form built using jQuery Mobile, HTML5, and PHP.</p>
<div class="download">
<h3>Download</h3>
<form id="edd_purchase_1910" action="" method="POST"><div class="edd_purchase_submit_wrapper"><span class="edd_button edd_add_to_cart_wrap edd_gray"><span class="edd_button_outer"><span class="edd_button_inner"><input type="submit" class="edd_button_text edd-submit edd-add-to-cart" name="edd_purchase_download" value="Download complete source code $10.00" data-action="edd_add_to_cart" data-download-id="1910"/></span></span></span><a href="http://eisabainyo.net/weblog/checkout/" class="edd_go_to_checkout edd_button edd_gray" style="display:none;"><span class="edd_button_outer"><span class="edd_button_inner"><span class="edd_button_text"><span>Checkout</span></span></span></span></a><img src="http://eisabainyo.net/weblog/wp-content/plugins/easy-digital-downloads/includes/images/loading.gif" class="edd-cart-ajax" style="display: none;"/>&nbsp;<span style="display:none;" class="edd-cart-added-alert">added to your cart</span></div><!--end .edd_purchase_submit_wrapper--><input type="hidden" name="download_id" value="1910"><input type="hidden" name="edd_action" value="add_to_cart"></form><!--end #edd_purchase_1910--></div>
<p><img src="http://eisabainyo.net/weblog/wp-content/uploads/2011/06/contact-jquerymobile.jpg" alt="" title="Contact Form in jQuery Mobile" width="320" height="928" class="alignnone size-full wp-image-1774" /><br />
Screenshot of Contact Form in jQuery Mobile</p>
]]></content:encoded>
			<wfw:commentRss>http://eisabainyo.net/weblog/2011/06/29/creating-a-contact-form-in-jquery-mobile-and-php/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Introduction to CSS3 Animations by Examples</title>
		<link>http://eisabainyo.net/weblog/2011/06/28/introduction-to-css3-animations-by-examples/</link>
		<comments>http://eisabainyo.net/weblog/2011/06/28/introduction-to-css3-animations-by-examples/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 06:08:23 +0000</pubDate>
		<dc:creator>eisabai</dc:creator>
				<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://eisabainyo.net/weblog/?p=1735</guid>
		<description><![CDATA[CSS3 animations are really easy to write once you know how they work. This post will show you some very basic animations done in CSS3. Once you get the hang of how to put them together, you will be able to do more advanced animations in CSS3 based on these examples. Also have a look [...]]]></description>
			<content:encoded><![CDATA[<p>CSS3 animations are really easy to write once you know how they work. This post will show you some very basic animations done in CSS3.  Once you get the hang of how to put them together, you will be able to do more advanced animations in CSS3 based on these examples.  Also have a look at <a href="http://developer.apple.com/library/safari/#documentation/appleapplications/reference/SafariCSSRef/Articles/Functions.html">Reference on Safari</a> for the animation properties that you can use on your CSS selectors.  </p>
<p>Note: The examples on this page will only work on WebKit Browsers (eg: Chrome, Safari).   Hover over the little black elements to see the effect done in pure CSS3.  </p>
<style>
	.css3demodiv pre, .css3demodiv .pleaseshare { width: 100%; display: block; clear: both; }
	ul.css3demo li { -webkit-border-radius: 15px; display: block; float: left; width: 50px; height: 50px; margin: 10px; background: #000; color: #fff; text-indent: -5000em; cursor: pointer; }
	ul.css3demo1 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo1 li:hover {  -webkit-transform:  rotate3d(0, 0, 0, 25deg); -webkit-transform-style: preserve-3d; }
	ul.css3demo2 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo2 li:hover { -webkit-transform:  translate3d(0, 40px, 0); }
	ul.css3demo3 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo3 li:hover {  -webkit-transform:  scale(.5); }		
	ul.css3demo4 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo4 li:hover {  -webkit-transform:  scale(1.5); }		
	ul.css3demo5 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo5 li:hover { -webkit-transform:  translate3d(10px, 0, 0); }
	ul.css3demo6 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo6 li:hover { -webkit-box-shadow: 3px 3px 3px rgba(0,0,0, 0.5); }		
	ul.css3demo7 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo7 li:hover { background: #0cf; }		
	ul.css3demo8 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo8 li:hover { -webkit-transform: scale3d(.5, 1, 1); }		
	ul.css3demo9 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo9 li:hover {  -webkit-transform: scale3d(1, 0.5, 1); }		
	ul.css3demo10 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo10 li:hover { -webkit-transform: rotate(360deg); }		
	ul.css3demo11 li { -webkit-transition: opacity 0.8s ease-in; opacity: 0.4;  }
	ul.css3demo11 li:hover { opacity: 1; }		
	ul.css3demo12 li { -webkit-transition: opacity 1s ease-in; opacity: 1.0;  }
	ul.css3demo12 li:hover { opacity: 0.4; }		
	ul.css3demo13 li { -webkit-transition: -webkit-transform 1s ease-in-out;   }
	ul.css3demo13 li:hover { -webkit-animation: spin 0.3s infinite linear; }
	@-webkit-keyframes spin {
		0% { -webkit-transform: rotate(0deg); }
		100% { -webkit-transform: rotate(360deg);  }
	}
	ul.css3demo14 li { -webkit-transition: -webkit-transform 5s ease-in-out;   }
	ul.css3demo14 li:hover { -webkit-animation: colorize 3s infinite linear; }
	@-webkit-keyframes colorize {
		0% { background-color: #333; }
		100% { background-color: #ff0;  }
	}
	ul.css3demo15 li { -webkit-transition: all 2s ease-in-out;   }
	ul.css3demo15 li:hover { -webkit-animation: shape 1s infinite linear; }
	@-webkit-keyframes shape {
		100% { -webkit-border-radius: 50px;  }
	}
</style>
<p>Before we start, let&#8217;s add the following CSS to change the look and feel of your &lt;ul&gt; list items. </p>
<pre>ul.css3demo li { -webkit-border-radius: 15px; display: block; float: left; width: 50px; height: 50px; margin: 10px; background: #000; color: #fff; text-indent: -5000em; }</pre>
<p>And now let&#8217;s take a look at 15 different CSS3 animations and their source code.  </p>
<div class="css3demodiv">
<strong>Tilt</strong></p>
<ul class="css3demo css3demo1">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo1 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo1 li:hover {  -webkit-transform:  rotate3d(0, 0, 0, 50deg); -webkit-transform-style: preserve-3d; }
</pre>
</div>
<div class="css3demodiv">
<strong>Pushed Down (by 40px)</strong></p>
<ul class="css3demo css3demo2">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo2 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo2 li:hover { -webkit-transform:  translate3d(0, 40px, 0); }
</pre>
</div>
<div class="css3demodiv">
<strong>Smaller</strong></p>
<ul class="css3demo css3demo3">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo3 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo3 li:hover {  -webkit-transform:  scale(.5); }
</pre>
</div>
<div class="css3demodiv">
<strong>Bigger</strong></p>
<ul class="css3demo css3demo4">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo4 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo4 li:hover {  -webkit-transform:  scale(1.5); }
</pre>
</div>
<div class="css3demodiv">
<strong>Slide Right (by 10px)</strong></p>
<ul class="css3demo css3demo5">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo5 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo5 li:hover { -webkit-transform:  translate3d(10px, 0, 0); }
</pre>
</div>
<div class="css3demodiv">
<strong>Add Shadow</strong></p>
<ul class="css3demo css3demo6">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo6 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo6 li:hover { -webkit-box-shadow: 3px 3px 3px rgba(0,0,0, 0.5); }
</pre>
</div>
<div class="css3demodiv">
<strong>Change Color</strong></p>
<ul class="css3demo css3demo7">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo7 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo7 li:hover { background: #0cf; }
</pre>
</div>
<div class="css3demodiv">
<strong>Shrink horizontally (by 50%)</strong></p>
<ul class="css3demo css3demo8">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo8 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo8 li:hover { -webkit-transform: scale3d(.5, 1, 1); }
</pre>
</div>
<div class="css3demodiv">
<strong>Shrink vertically (by 50%)</strong></p>
<ul class="css3demo css3demo9">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo9 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo9 li:hover {  -webkit-transform: scale3d(1, 0.5, 1); }
</pre>
</div>
<div class="css3demodiv">
<strong>Rotate 360 degree</strong></p>
<ul class="css3demo css3demo10">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo10 li { -webkit-transition: all 0.3s linear; }
	ul.css3demo10 li:hover { -webkit-transform: rotate(360deg); }
</pre>
</div>
<div class="css3demodiv">
<strong>Fade In</strong></p>
<ul class="css3demo css3demo11">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo11 li { -webkit-transition: opacity 0.8s ease-in; opacity: 0.4;  }
	ul.css3demo11 li:hover { opacity: 1; }
</pre>
</div>
<div class="css3demodiv">
<strong>Fade Out</strong></p>
<ul class="css3demo css3demo12">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo12 li { -webkit-transition: opacity 1s ease-in; opacity: 1.0;  }
	ul.css3demo12 li:hover { opacity: 0.4; }
</pre>
</div>
<div class="css3demodiv">
<strong>Spin</strong></p>
<ul class="css3demo css3demo13">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo13 li { -webkit-transition: -webkit-transform 1s ease-in-out;   }
	ul.css3demo13 li:hover { -webkit-animation: spin 0.3s infinite linear; }
	@-webkit-keyframes spin {
		0% { -webkit-transform: rotate(0deg); }
		100% { -webkit-transform: rotate(360deg); background-color: #ff0;  }
	}
</pre>
</div>
<div class="css3demodiv">
<strong>Fade to Color (Colorize)</strong></p>
<ul class="css3demo css3demo14">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo14 li { -webkit-transition: -webkit-transform 5s ease-in-out;   }
	ul.css3demo14 li:hover { -webkit-animation: colorize 3s infinite linear; }
	@-webkit-keyframes colorize {
		0% { background-color: #333; }
		100% { background-color: #ff0;  }
	}
</pre>
</div>
<div class="css3demodiv">
<strong>Change Shape</strong></p>
<ul class="css3demo css3demo15">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
</ul>
<pre>
	ul.css3demo15 li { -webkit-transition: all 2s ease-in-out;   }
	ul.css3demo15 li:hover { -webkit-animation: shape 1s infinite linear; }
	@-webkit-keyframes shape {
		100% { -webkit-border-radius: 50px;  }
	}
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://eisabainyo.net/weblog/2011/06/28/introduction-to-css3-animations-by-examples/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

