<?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>Software Source Update &#187; TUTORIALS</title>
	<atom:link href="http://source-update.com/category/tutorials/feed/" rel="self" type="application/rss+xml" />
	<link>http://source-update.com</link>
	<description>The Most Update Software News</description>
	<lastBuildDate>Mon, 03 May 2010 21:08:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SOURCE &#8211; 40 DETAILED AND HIGH QUALITY MOBILE PHONE .PSD SOURCE FILES</title>
		<link>http://source-update.com/2010/04/30/source-40-detailed-and-high-quality-mobile-phone-psd-source-files/</link>
		<comments>http://source-update.com/2010/04/30/source-40-detailed-and-high-quality-mobile-phone-psd-source-files/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 03:52:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[NEWS]]></category>
		<category><![CDATA[TUTORIALS]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[psd]]></category>

		<guid isPermaLink="false">http://source-update.com/?p=167</guid>
		<description><![CDATA[.psd  maker files are genuinely awful and unequalled resources – not exclusive do they  background the talents of the artist, but they also substance the possibleness  to take deeper and conceive how they were created. They provide you the  quantity to learn, different tutorials which are step-by-step, with a .psd  enter you listing your sleeves and you intend your safekeeping filthy delving into its  intrinsic workings.
Whether it is for acquisition newborn techniques, for  wireframing your stylish ambulatory app or if you are meet ...]]></description>
			<content:encoded><![CDATA[<p>.psd  maker files are genuinely awful and unequalled resources – not exclusive do they  background the talents of the artist, but they also substance the possibleness  to take deeper and conceive how they were created. They provide you the  quantity to learn, different tutorials which are step-by-step, with a .psd  enter you listing your sleeves and you intend your safekeeping filthy delving into its  intrinsic workings.</p>
<p>Whether it is for acquisition newborn techniques, for  wireframing your stylish ambulatory app or if you are meet peculiar most the  design, every of the .psd files beneath hit digit abstract in ordinary – They are  highly careful and of the maximal quality. Thanks to every the artists.</p>
<h2>HTC  Phones</h2>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/zandog.deviantart.com');" href="http://zandog.deviantart.com/art/HTC-Eris-Smartphone-PSD-152695678">HTC  Eris Smartphone</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/zandog.deviantart.com');" href="http://zandog.deviantart.com/art/HTC-Eris-Smartphone-PSD-152695678"><img src="http://1.1.1.2/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile1.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/zandog.deviantart.com');" href="http://zandog.deviantart.com/art/HTC-Dream-Android-PSD-152512050">HTC  Dream Android</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/zandog.deviantart.com');" href="http://zandog.deviantart.com/art/HTC-Dream-Android-PSD-152512050"><img src="http://1.1.1.3/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile2.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/justflikwalk.deviantart.com');" href="http://justflikwalk.deviantart.com/art/Htc-Dream-98349614">Htc  Dream White</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/justflikwalk.deviantart.com');" href="http://justflikwalk.deviantart.com/art/Htc-Dream-98349614"><img src="http://1.1.1.4/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile3.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/bigkobe.deviantart.com');" href="http://bigkobe.deviantart.com/art/HTC-Dream-PSD-129383371">HTC  Dream PSD by ~bigkobe on deviantART</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/bigkobe.deviantart.com');" href="http://bigkobe.deviantart.com/art/HTC-Dream-PSD-129383371"><img src="http://1.1.1.5/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile4.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/sahandii.deviantart.com');" href="http://sahandii.deviantart.com/art/HTC-Touch-Diamond-PSD-HQ-91452882">HTC  Touch Diamond PSD</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/sahandii.deviantart.com');" href="http://sahandii.deviantart.com/art/HTC-Touch-Diamond-PSD-HQ-91452882"><img src="http://1.1.1.1/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile5.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/psd.tutsplus.com');" href="http://psd.tutsplus.com/drawing/create-a-mobile-phone-styled-like-the-htc-touch-diamond/">HTC  Touch Diamond</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/psd.tutsplus.com');" href="http://psd.tutsplus.com/drawing/create-a-mobile-phone-styled-like-the-htc-touch-diamond/"><img src="http://1.1.1.2/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile6.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/domox.deviantart.com');" href="http://domox.deviantart.com/art/HTC-Hero-PSD-146992630">HTC  mathematician PSD</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/domox.deviantart.com');" href="http://domox.deviantart.com/art/HTC-Hero-PSD-146992630"><img src="http://1.1.1.3/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile7.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.smashingmagazine.com');" href="http://www.smashingmagazine.com/2009/08/18/android-gui-psd-vector-kit/">Android  interface PSD Vector Kit</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.smashingmagazine.com');" href="http://www.smashingmagazine.com/2009/08/18/android-gui-psd-vector-kit/"><img src="http://1.1.1.4/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile8.jpg" alt="Mobile Phone Psds" /></a></p>
<h2>Google Phones</h2>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/zandog.deviantart.com');" href="http://zandog.deviantart.com/art/Nexus-One-by-Google-PSD-152032149">Nexus  One by Google</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/zandog.deviantart.com');" href="http://zandog.deviantart.com/art/Nexus-One-by-Google-PSD-152032149"><img src="http://1.1.1.5/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile9.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/bharathp666.deviantart.com');" href="http://bharathp666.deviantart.com/art/Google-nexus-one-V2-Templates-150971548">Google  linkage digit V2</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/bharathp666.deviantart.com');" href="http://bharathp666.deviantart.com/art/Google-nexus-one-V2-Templates-150971548"><img src="http://1.1.1.5/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile10.jpg" alt="Mobile Phone Psds" /></a></p>
<h2>iPhone, iPod and iPad</h2>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.smashingmagazine.com');" href="http://www.smashingmagazine.com/2008/11/26/iphone-psd-vector-kit/">iPhone  PSD Vector Kit</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.smashingmagazine.com');" href="http://www.smashingmagazine.com/2008/11/26/iphone-psd-vector-kit/"><img src="http://1.1.1.1/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile11.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.teehanlax.com');" href="http://www.teehanlax.com/blog/2008/08/19/iphone-gui-psd/">iPhone  interface PSD</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.teehanlax.com');" href="http://www.teehanlax.com/blog/2008/08/19/iphone-gui-psd/"><img src="http://1.1.1.2/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile12.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.adobetutorialz.com');" href="http://www.adobetutorialz.com/articles/2783/1/Apple-iPhone-Mobile-Phone-Design">Apple  iPhone Mobile Phone Design</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.adobetutorialz.com');" href="http://www.adobetutorialz.com/articles/2783/1/Apple-iPhone-Mobile-Phone-Design"><img src="http://1.1.1.3/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile13.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.teachtutorials.com');" href="http://www.teachtutorials.com/photoshop/1468-Good-tutorial-to-create-an-Apple-IPhone-case-from-scratch.html">Apple  IPhone Case</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.teachtutorials.com');" href="http://www.teachtutorials.com/photoshop/1468-Good-tutorial-to-create-an-Apple-IPhone-case-from-scratch.html"><img src="http://1.1.1.4/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile14.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/stntoulouse.deviantart.com');" href="http://stntoulouse.deviantart.com/art/iPhone-Photoshop-Template-150493059">iPhone  Photoshop Template</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/stntoulouse.deviantart.com');" href="http://stntoulouse.deviantart.com/art/iPhone-Photoshop-Template-150493059"><img src="http://1.1.1.5/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile15.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/jbensch.deviantart.com');" href="http://jbensch.deviantart.com/art/iPhone-turned-3G-psd-template-91644366">iPhone  3G PSD</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/jbensch.deviantart.com');" href="http://jbensch.deviantart.com/art/iPhone-turned-3G-psd-template-91644366"><img src="http://1.1.1.1/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile16.jpg" alt="Mobile Phone Psds" /></a></p>
<h2>Blackberry</h2>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/digitalphenom.deviantart.com');" href="http://digitalphenom.deviantart.com/art/RIM-Blackberry-PSD-111857107">RIM  Blackberry PSD</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/digitalphenom.deviantart.com');" href="http://digitalphenom.deviantart.com/art/RIM-Blackberry-PSD-111857107"><img src="http://1.1.1.2/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile17.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/justflikwalk.deviantart.com');" href="http://justflikwalk.deviantart.com/art/BlackBerry-Bold-PSD-87200296">BlackBerry  Bold</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/justflikwalk.deviantart.com');" href="http://justflikwalk.deviantart.com/art/BlackBerry-Bold-PSD-87200296"><img src="http://1.1.1.3/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile18.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/justflikwalk.deviantart.com');" href="http://justflikwalk.deviantart.com/art/BlackBerry-Storm-103540022">BlackBerry  Storm</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/justflikwalk.deviantart.com');" href="http://justflikwalk.deviantart.com/art/BlackBerry-Storm-103540022"><img src="http://1.1.1.4/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile19.jpg" alt="Mobile Phone Psds" /></a></p>
<h2>Nokia</h2>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.adobetutorialz.com');" href="http://www.adobetutorialz.com/articles/2979/1/Nokia-5300-Cell-phone-interface">Nokia  5300 Cell Phone Interface</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.adobetutorialz.com');" href="http://www.adobetutorialz.com/articles/2979/1/Nokia-5300-Cell-phone-interface"><img src="http://1.1.1.5/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile20.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/mk-graphics.deviantart.com');" href="http://mk-graphics.deviantart.com/art/NOKIA-5800-XpressMusic-DS-PSD-117665389">Nokia  5800 XpressMusic DS</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/mk-graphics.deviantart.com');" href="http://mk-graphics.deviantart.com/art/NOKIA-5800-XpressMusic-DS-PSD-117665389"><img src="http://1.1.1.1/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile21.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/sensei-kun.deviantart.com');" href="http://sensei-kun.deviantart.com/art/NOKIA-6110-NAVIGATOR-INOUE-112948514">Nokia  6110 Navigator</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/sensei-kun.deviantart.com');" href="http://sensei-kun.deviantart.com/art/NOKIA-6110-NAVIGATOR-INOUE-112948514"><img src="http://1.1.1.2/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile22.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/muratyil.deviantart.com');" href="http://muratyil.deviantart.com/art/nokia-phone-black-138077842">Nokia  Phone Black</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/muratyil.deviantart.com');" href="http://muratyil.deviantart.com/art/nokia-phone-black-138077842"><img src="http://1.1.1.3/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile23.jpg" alt="Mobile Phone Psds" /></a></p>
<h2>Sony Ericsson</h2>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.alfoart.com');" href="http://www.alfoart.com/mobile_phone_1.html">Sony  Ericsson S500</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.alfoart.com');" href="http://www.alfoart.com/mobile_phone_1.html"><img src="http://1.1.1.4/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile24.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.stephenknox.com');" href="http://www.stephenknox.com/tutorials/w800/">Sony  Ericsson W800</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.stephenknox.com');" href="http://www.stephenknox.com/tutorials/w800/"><img src="http://1.1.1.5/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile25.jpg" alt="Mobile Phone Psds" /></a></p>
<h2>Motorola</h2>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/zandog.deviantart.com');" href="http://zandog.deviantart.com/art/Motorola-Droid-PSD-152356162">Motorola  Droid .PSD</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/zandog.deviantart.com');" href="http://zandog.deviantart.com/art/Motorola-Droid-PSD-152356162"><img src="http://1.1.1.1/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile26.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/theal.deviantart.com');" href="http://theal.deviantart.com/art/Motorola-Droid-PSD-144615077">Motorola  Droid</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/theal.deviantart.com');" href="http://theal.deviantart.com/art/Motorola-Droid-PSD-144615077"><img src="http://1.1.1.2/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile27.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/paundpro.deviantart.com');" href="http://paundpro.deviantart.com/art/Motorola-v262-137250698">Motorola  v262</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/paundpro.deviantart.com');" href="http://paundpro.deviantart.com/art/Motorola-v262-137250698"><img src="http://1.1.1.3/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile28.jpg" alt="Mobile Phone Psds" /></a></p>
<h2>Everything Else…</h2>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.tutzor.com');" href="http://www.tutzor.com/index.php/2008/05/designing-loox-pocket-pc/">Loox  Pocket PC</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.tutzor.com');" href="http://www.tutzor.com/index.php/2008/05/designing-loox-pocket-pc/"><img src="http://1.1.1.4/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile29.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.teehanlax.com');" href="http://www.teehanlax.com/blog/2009/07/08/palm-pre-gui-psd/">Palm  Pre interface PSD</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.teehanlax.com');" href="http://www.teehanlax.com/blog/2009/07/08/palm-pre-gui-psd/"><img src="http://1.1.1.1/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile30.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/s-a-t-i-n-e.deviantart.com');" href="http://s-a-t-i-n-e.deviantart.com/art/LG-KS360-psd-118527163">LG  KS360</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/s-a-t-i-n-e.deviantart.com');" href="http://s-a-t-i-n-e.deviantart.com/art/LG-KS360-psd-118527163"><img src="http://1.1.1.2/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile31.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/majki72.deviantart.com');" href="http://majki72.deviantart.com/art/Samsung-Corby-S3650-PSD-149111738">Samsung  Corby S3650</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/majki72.deviantart.com');" href="http://majki72.deviantart.com/art/Samsung-Corby-S3650-PSD-149111738"><img src="http://1.1.1.3/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile32.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.madpotato.de');" href="http://www.madpotato.de/Tutorials">iPhone/Windows  Mobile-Hybrid Sexy Cell Phone</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.madpotato.de');" href="http://www.madpotato.de/Tutorials"><img src="http://1.1.1.4/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile33.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.teehanlax.com');" href="http://www.teehanlax.com/blog/2010/02/01/ipad-gui-psd/">iPad  interface PSD</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.teehanlax.com');" href="http://www.teehanlax.com/blog/2010/02/01/ipad-gui-psd/"><img src="http://1.1.1.5/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile34.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/mppagano.deviantart.com');" href="http://mppagano.deviantart.com/art/iPad-PSD-152052141">iPad  PSD</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/mppagano.deviantart.com');" href="http://mppagano.deviantart.com/art/iPad-PSD-152052141"><img src="http://1.1.1.1/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile35.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/stntoulouse.deviantart.com');" href="http://stntoulouse.deviantart.com/art/iSlate-Photoshop-Template-150604494">iSlate  Photoshop Template</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/stntoulouse.deviantart.com');" href="http://stntoulouse.deviantart.com/art/iSlate-Photoshop-Template-150604494"><img src="http://1.1.1.2/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile36.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/easydisplayname.deviantart.com');" href="http://easydisplayname.deviantart.com/art/TabletPC-psd-152827436">TabletPC</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/easydisplayname.deviantart.com');" href="http://easydisplayname.deviantart.com/art/TabletPC-psd-152827436"><img src="http://1.1.1.3/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile37.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/telp.deviantart.com');" href="http://telp.deviantart.com/art/iPod-PSD-153706324">iPod  PSD</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/telp.deviantart.com');" href="http://telp.deviantart.com/art/iPod-PSD-153706324"><img src="http://1.1.1.4/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile38.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/i-visual.deviantart.com');" href="http://i-visual.deviantart.com/art/iPod-Touch-PSD-i-Visual-69870034">iPod  Touch PSD</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/i-visual.deviantart.com');" href="http://i-visual.deviantart.com/art/iPod-Touch-PSD-i-Visual-69870034"><img src="http://1.1.1.5/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile39.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/knightranger.deviantart.com');" href="http://knightranger.deviantart.com/art/Photoshop-PSD-IPod-Nano-152546993">iPod  Nano</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/knightranger.deviantart.com');" href="http://knightranger.deviantart.com/art/Photoshop-PSD-IPod-Nano-152546993"><img src="http://1.1.1.2/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile40.jpg" alt="Mobile Phone Psds" /></a></p>
<h5><a onclick="javascript:pageTracker._trackPageview('/outbound/article/digitalphenom.deviantart.com');" href="http://digitalphenom.deviantart.com/art/Microsoft-ZUNE-PSD-111589472">Microsoft  ZUNE PSD by `DigitalPhenom on deviantART</a></h5>
<p><a onclick="javascript:pageTracker._trackPageview('/outbound/article/digitalphenom.deviantart.com');" href="http://digitalphenom.deviantart.com/art/Microsoft-ZUNE-PSD-111589472"><img src="http://1.1.1.3/bmi/speckyboy.specky.netdna-cdn.com/wp-content/uploads/2010/02/psdmobile41.jpg" alt="Mobile Phone Psds" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://source-update.com/2010/04/30/source-40-detailed-and-high-quality-mobile-phone-psd-source-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PAGINATE ANYTHING WITH JQUERY!</title>
		<link>http://source-update.com/2009/11/29/aginate-anything-with-jquery/</link>
		<comments>http://source-update.com/2009/11/29/aginate-anything-with-jquery/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 01:52:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[TUTORIALS]]></category>

		<guid isPermaLink="false">http://source-update.com/?p=152</guid>
		<description><![CDATA[
  		
Paginate Anything with jQuery!
By: Nikola Malich

               In this Nettuts+ PLUS tutorial, you&#8217;ll learn how to use jQuery to paginate virtually anything, blogs, image galleries, tables and more!
               We will review the basic set up, steps and calculations required to paginate content and create dynamic links.
               By ...]]></description>
			<content:encoded><![CDATA[<div id="top">
<p>  		<img src="img/200x200.jpg" id="preview"></p>
<h2>Paginate Anything with jQuery!</h2>
<h3>By: Nikola Malich</h3>
<p>
               In this Nettuts+ PLUS tutorial, you&#8217;ll learn how to use jQuery to paginate virtually anything, blogs, image galleries, tables and more!<br />
               We will review the basic set up, steps and calculations required to paginate content and create dynamic links.<br />
               By the end of this tutorial you should feel comfortable incorporating this style of pagination into any of you projects.  Enjoy!
          </p>
<p><!-- P --></p></div>
<p><!-- DIV#top --></p>
<div id="content">
<h2>Getting Started with jQuery Pagination</h2>
<div class="tutorial_image">
		   <img src="img/sample1.png" alt="Sample" />
		  </div>
<div class="tutorial_image">
<p>		   <img src="img/sample3.png" alt="Sample" />
		  </div>
<h3>1. Defining an options argument</h3>
<div class="tutorial_image" style="min-width:950px"><img src="img/getting_started.png" style="margin-right:100%;"alt="Info"></div>
<div>
<p>
                         <b><br />
                              Our first step will be to create a new jQuery Plugin which we&#8217;ll call &#8216;paginate&#8217;.  Our Paginate Plugin will will have one argument, &#8216;options&#8217;, which is an object.<br />
                              Keep in mind that any option can be overridden when initializing the Plugin.<br />
                              Here are the two options we&#8217;ll use:<br />
                         </b>
                    </p>
<p><!-- P --></p>
<ul>
<li><b>content: </b> We&#8217;ll specify a jQuery selector here to represent the individual &#8216;items&#8217; we&#8217;ll be paginating.  Our default selector will be &#8216;TBODY TR&#8217; which will select all the table rows belonging to a table body.</li>
<li><b>limit: </b>Here we&#8217;ll specify how many &#8216;items&#8217; we&#8217;d like to display per page.  We&#8217;ll set a default limit of 5 items per page.</li>
</ul>
<p><!-- UL --></p>
<p></p>
<p>
                         <b>Here&#8217;s what we have so far:</b>
                    </p>
<p><!-- P --></p>
<pre name="code" class="javascript">
     $.fn.paginate = function(options) {
          var options = jQuery.extend({
               content: 'TBODY TR',
               limit: 5
          },options);
     }
                    </pre>
<p><!-- PRE.javascript --></p>
<p>                         <em>For some more information on developing a jQuery Plugin have a look at these great articles:</em>
                    </p>
<p><!-- P --></p>
<ul>
<li><a href="http://docs.jquery.com/Plugins/Authoring">Plugins/Authoring</a></li>
<li><a href="http://www.learningjquery.com/2007/10/a-plugin-development-pattern">A Plugin Development Pattern</a></li>
<li><a href="http://www.learningjquery.com/2009/03/making-a-jquery-plugin-truly-customizable">Making a jQuery Plugin Truly Customizable</a></li>
<li><a href="http://snook.ca/archives/javascript/jquery_plugin/">Developing a jQuery Plugin</a></li>
</ul>
<p><!-- UL --></p>
<p></p></div>
<p><!-- SUB-SECTION --></p>
<h3>2. Iterating through our matched selectors</h3>
<div>
<p>
                         <b></p>
<p>                              Now, using jQuery&#8217;s <a href="http://docs.jquery.com/Core/each">each()</a> method, we&#8217;ll iterate through all of the matched selectors from our Plugins init.<br />
                              For example, if we call pagination like this, <em>$(&#8216;TABLE&#8217;).paginate()</em>, the <a href="http://docs.jquery.com/Core/each">each()</a> method will iterate through all the TABLES within the page.<br />
                              It&#8217;s within this iteration that we&#8217;ll do all of our work:<br />
                         </b>
                    </p>
<p><!-- P --></p>
<pre name="code" class="javascript">
     $.fn.paginate = function(options) {
          var options = jQuery.extend({
               content: 'TBODY TR',
               limit: 5
          },options);

          return this.each(function() {

               return this;
          });
     }
                    </pre>
<p><!-- PRE.javascript --></p>
<p>
                         <b><br />
                              Above, you&#8217;ll notice that we are returning &#8216;this&#8217; at the end of our iteration.<br />
                              It&#8217;s very important to return &#8216;this&#8217; so as not to break the <a href="http://ejohn.org/blog/ultra-chaining-with-jquery/">chain</a>.<br />
                              In other words, you won&#8217;t be able to add any more methods after this Plugin is called if you don&#8217;t return &#8216;this&#8217;.<br />
                         </b>
                    </p>
<p><!-- P -->
               </div>
<p><!-- SUB-SECTION --></p></div>
<p><!-- SECTION --></p>
<hr /></p>
<h2>Caching Selectors and Settings</h2>
<div>
<div class="tutorial_image" style="min-width:950px"><img src="img/new_object.png" style="margin-right:100%;"alt="Info"></div>
<p>
                    <b><br />
                         Next, let&#8217;s create an object to cache the various selectors we&#8217;ll be using as well as a few settings.<br />
                         Please note that you don&#8217;t need to use an object here but it can help to keep things a bit tidier.<br />
                         Let&#8217;s name our object <i>page</i>. We&#8217;ll give it six properties here:<br />
                    </b></p>
<p><!-- P --></p>
<ul>
<li><b>parent: </b>We&#8217;ll cache the jQuery &#8216;this&#8217; object as our parent property.  Doing so may help in understanding the logic of our code a little bit later on.</li>
<li><b>content: </b>We&#8217;ll cache a jQuery selector for all of the individual the content items we&#8217;ll be paginating.  We use a ternary operator to determine if we&#8217;re working with a TABLE or not as we&#8217;ll traverse the DOM a little differently if we are. </li>
<li><b>total: </b>We will use the jQuery <a href="http://docs.jquery.com/Core/size">size()</a> method to determine how many items are stored in our <i>content</i> property.  Then, we&#8217;ll divide this total by the <i>limit</i> specified in our options argument and round this figure to the next whole integer using the JavaScript<a href="http://www.w3schools.com/jsref/jsref_ceil.asp">ceil()</a> method.  This will give us our true total number of pages.</li>
<li><b>display: </b>Using jQuery&#8217;s <a href="http://docs.jquery.com/CSS">css()</a> method, we&#8217;ll cache the CSS &#8216;display&#8217; property for our content items.  We&#8217;ll use this property when displaying &#8216;pages&#8217; later one.</li>
<li><b>prev: </b>The <i>prev</i> property will be used when clicking the &#8216;previous&#8217; link.  It&#8217;s value will be changed dynamically when we navigate through our paginated content.  Initially, we&#8217;ll be displaying page 1 and as there is no page before this we&#8217;ll set <i>prev</i> to 0.</li>
<li><b>next: </b>The <i>next</i> property will be used when clicking the &#8216;next&#8217; link.  This value will also be changed dynamically when we navigate our paginated content.  Since we&#8217;re be displaying page 1 first, we&#8217;ll set this property to reference the second page, 2.</li>
</ul>
<p><!-- UL --><br />
               </p>
<pre name="code" class="javascript">
$.fn.paginate = function(options) {
          var options = jQuery.extend({
               content: 'TBODY TR',
               limit: 5
          },options);

          return this.each(function() {

               var page = {};
               page.parent = $(this),
               page.content = (page.parent.is('TABLE')) ? page.parent.find(options.content) : page.parent.children(options.content),
               page.total = Math.ceil(page.content.size() / options.limit),
               page.display = page.content.css('display'),
               page.prev = 0,
               page.next = 2;

               return this;
          });
}
               </pre>
<p><!-- PRE.javascript --></p>
<p>
          </div>
<p><!-- SECTION --></p>
<h2>Displaying the First Page</h2>
<div>
<div class="tutorial_image" style="min-width:950px"><img src="img/first_page.png" style="margin-right:100%;"alt="Info"></div>
<p>
                    <b><br />
                         Now that we&#8217;ve defined our object, our next step will be to hide all of the content items which aren&#8217;t a part of the &#8216;first page&#8217;.<br />
                         We&#8217;ll use the <i>limit</i> property from our <i>options</i> argument in combination with jQuery&#8217;s <a href="http://docs.jquery.com/Traversing/slice">slice()</a> method to select all of the <i>page.content</i> with an index greater than our <i>limit</i>.<br />
                         Then, we&#8217;ll use jQuery&#8217;s <a href="http://docs.jquery.com/CSS/css">css()</a> method to access the display property of these matched elements and set it to &#8216;none&#8217;.<br />
                    </b></p>
<p><!-- P --></p>
<p>
                    <b><br />
                         The <a href="http://docs.jquery.com/Traversing/slice">slice()</a> method takes to arguments, the second is optional:<br />
                    </b>
               </p>
<p><!-- P --></p>
<ul>
<li><b>start: </b>The index of the first element to select.  This element is included.</li>
<li><b>end: </b>The index of the element where we conclude our slice.  This element is <b>not</b> included.</li>
</ul>
<p><!-- UL --></p>
<p></p>
<p>
                    <b><br />
                         So, if our <i>options.limit</i> is 5, and we specify this as the start parameter in our slice, we&#8217;ll be selecting everything with an index of 5 and higher.<br />
                         Thus, all the content items with an index less than 5, 0-4, will be excluded form our selection.<br />
                    </b>
               </p>
<p><!-- P --></p>
<p>
                    <b><br />
                         To hide this slice, we will simply access it&#8217;s CSS display property and set it to none.<br />
                         We could use any number of jQuery animations to hide / show our content but for simplicities sake we&#8217;ll just change the display property.<br />
                    </b></p>
<p><!-- P --></p>
<p>
                    <b><br />
                         Lastly, we will add a class which denotes that this content is &#8216;hidden&#8217;.<br />
                         This isn&#8217;t absolutely necessary but situations may arise where you need to exclude hidden content form certain methods or functions.<br />
                         Adding this class makes that a bit easier.<br />
                    </b>
               </p>
<p><!-- P --></p>
<pre name="code" class="javascript">
$.fn.paginate = function(options) {
          var options = jQuery.extend({
               content: 'TBODY TR',
               limit: 5
          },options);

          return this.each(function() {

               var page = {};
               page.parent = $(this),
               page.content = (page.parent.is('TABLE')) ? page.parent.find(options.content) : page.parent.children(options.content),
               page.total = Math.ceil(page.content.size() / options.limit),
               page.display = page.content.css('display'),
               page.prev = 0,
               page.next = 2;

               page.content.slice(options.limit).css('display', 'none').addClass('ui-helper-hidden');

               return this;
          });
}
               </pre>
<p><!-- PRE.javascript -->
          </div>
<p><!-- SECTION --></p>
<h2>Creating the Pagination Link Container and Previous Button</h2>
<div>
<div class="tutorial_image" style="min-width:950px"><img src="img/link_container.png" style="margin-right:100%;"alt="Info"></div>
<p>
                    <b><br />
                         Our next step will be to create a Container for all of our Pagination links.<br />
                         Here is an overview of what we&#8217;ll do:<br />
                    </b>
               </p>
<p><!-- P --></p>
<ul>
<li>Using the <a href="https://developer.mozilla.org/en/DOM/document.createElement">createElement()</a> method, we&#8217;ll create a new DIV within our document <i>as a jQuery object</i>.</li>
<li>We&#8217;ll add an appropriate class to this DIV using jQuery&#8217;s <a href="http://docs.jquery.com/Attributes/addClass">addClass()</a> method.</li>
<li>Then, using a ternary operator, we&#8217;re going to append or insert this new ELEMENT to the appropriate location within the document.</li>
</ul>
<p><!-- UL --></p>
<pre name="code" class="javascript">
$.fn.paginate = function(options) {
          var options = jQuery.extend({
               content: 'TBODY TR',
               limit: 5
          },options);

          return this.each(function() {

               var page = {};
               page.parent = $(this),
               page.content = (page.parent.is('TABLE')) ? page.parent.find(options.content) : page.parent.children(options.content),
               page.total = Math.ceil(page.content.size() / options.limit),
               page.display = page.content.css('display'),
               page.prev = 0,
               page.next = 2;

               page.content.slice(options.limit).css('display', 'none').addClass('ui-helper-hidden');

               $(document.createElement("DIV")).addClass("link-container")[(page.parent.is('TABLE')) ? 'insertAfter' : 'appendTo'](this);

               return this;
          });
}
               </pre>
<p><!-- PRE.javascript --></p>
<p>
                    <em><br />
                        Above, you may notice an interesting expression after the <a href="http://docs.jquery.com/Attributes/addClass">addClass()</a> method.<br />
                        We&#8217;re using a <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Operators/Special_Operators#conditional_operator">conditional / ternary operator</a>, within square brackets, which will return a string representing the method name we need to use.<br />
                        This type of shortcut is only valid if it returns a string.<br />
                        So, we&#8217;ll return the string which represents the appropriate jQuery method for &#8216;inserting&#8217; our content.<br />
                    </em></p>
<p><!-- P --></p>
<p></p>
<p>
                    <b><br />
                         Now, let&#8217;s cache a selector for our new DIV.link-container.<br />
                         Again, we&#8217;ll need to determine if we&#8217;re working with a TABLE here as our method of DOM traversal will vary slightly if we are.<br />
                    </b>
               </p>
<p><!-- P --></p>
<pre name="code" class="javascript">

$.fn.paginate = function(options) {
          var options = jQuery.extend({
               content: 'TBODY TR',
               limit: 5
          },options);

          return this.each(function() {

               var page = {};
               page.parent = $(this),
               page.content = (page.parent.is('TABLE')) ? page.parent.find(options.content) : page.parent.children(options.content),
               page.total = Math.ceil(page.content.size() / options.limit),
               page.display = page.content.css('display'),
               page.prev = 0,
               page.next = 2;

               page.content.slice(options.limit).css('display', 'none').addClass('ui-helper-hidden');

               $(document.createElement("DIV")).addClass("link-container")[(page.parent.is('TABLE')) ? 'insertAfter' : 'appendTo'](this);

               page.linkContainer = (page.parent.is('TABLE')) ? page.parent.next('.link-container:first') : page.parent.find('.link-container:first');

               return this;
          });
}
               </pre>
<p><!-- PRE.javascript --></p>
<p>
                    <b><br />
                         With our link container in place, we&#8217;ll now create our &#8216;Previous&#8217; link.<br />
                         Essentially, we&#8217;ll use the same technique as above but without the ternary operator to determine our &#8216;insertion&#8217; type as we&#8217;ll always be appending it to the link container.<br />
                         Here&#8217;s a breakdown of what we&#8217;ll be doing in our next step:<br />
                    </b>
               </p>
<p><!-- P --></p>
<ul>
<li>Using the <a href="https://developer.mozilla.org/en/DOM/document.createElement">createElement()</a> method, we&#8217;ll create a new ANCHOR as a jQuery object</li>
<li>We&#8217;ll then add the appropriate classes to this ANCHOR: &#8220;pagination-link previous ui-state-default&#8221;
<ul>
<li>Please note that the &#8216;ui-state-default&#8217; class is used as an &#8216;Interaction State&#8217; within the <a href="http://jqueryui.com/docs/Theming/API">jQuery UI CSS Framework</a>.  It&#8217;s primarily used for <i>clickable button-like elements</i>.</li>
</ul>
</li>
<li>Next, we&#8217;ll define this ANCHOR&#8217;S HREF, TITLE and REL attributes using the <a href="http://docs.jquery.com/Attributes/attr">attr()</a> method
<ul>
<li>The REL attribute will be set as &#8216;nofollow&#8217; to prevent search engines from following this link.</li>
</ul>
</li>
<li>Using the <a href="http://docs.jquery.com/Attributes/text">text()</a> method, we&#8217;ll set the text for this link as the &#8216;<' symbol for 'previous'.</li>
<li>Lastly, we&#8217;ll use jQuery&#8217;s <a href="http://docs.jquery.com/Manipulation/appendTo">appendTo()</a> method to attach this ANCHOR to the <i>DIV.link-container</i> we created and cached as our <i>page.linkContainer</i> property.</li>
</ul>
<p><!-- UL --></p>
<p></p>
<p><b>Here&#8217;s how it all looks thus far:</b></p>
<pre name="code" class="javascript">
$.fn.paginate = function(options) {
          var options = jQuery.extend({
               content: 'TBODY TR',
               limit: 5
          },options);

          return this.each(function() {

               var page = {};
               page.parent = $(this),
               page.content = (page.parent.is('TABLE')) ? page.parent.find(options.content) : page.parent.children(options.content),
               page.total = Math.ceil(page.content.size() / options.limit),
               page.display = page.content.css('display'),
               page.prev = 0,
               page.next = 2;

               page.content.slice(options.limit).css('display', 'none').addClass('ui-helper-hidden');

               $(document.createElement("DIV")).addClass("link-container")[(page.parent.is('TABLE')) ? 'insertAfter' : 'appendTo'](this);

               page.linkContainer = (page.parent.is('TABLE')) ? page.parent.next('.link-container:first') : page.parent.find('.link-container:first');

               $(document.createElement("A")).addClass("pagination-link previous ui-state-default").attr('href', 'previous').attr('title', 'Previous page').attr('rel', 'nofollow').text('<').appendTo(page.linkContainer);

               return this;
          });
}
               </pre>
<p><!-- PRE.javascript -->
          </div>
<p><!-- SECTION --></p>
<h2>In the Loop - Creating Anchors and Selectors</h2>
<div>
<div class="tutorial_image" style="min-width:950px"><img src="img/for_loop.png" style="margin-right:100%;"alt="Info"></div>
<p>
                    <b><br />
                         This step is, perhaps, one of the most important steps we're going to take.<br />
                         Using a <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Loop_Statements/for_Statement">for loop</a>, we are going iterate through our total number of pages, <i>page.total</i>.<br />
                         We'll create numeric links within this loop as well as cache selectors for our content pages.<br />
                         Here's an overview of what we'll be doing:<br />
                    </b></p>
<p><!-- P --></p>
<ul>
<li>First, we are going to define a few vars:
<ul></p>
<li><b>offset:</b>  The offset var will be the <i>loop counter</i> var from our <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Loop_Statements/for_Statement">for statement</a> + 1.  We'll use <i>offset</i> as a page number / counter of sorts.</li>
<li><b>min:</b>  The min var will be the used to define the 'starting' point of our page <a href="http://docs.jquery.com/Traversing/slice">slice()</a> a little later on.<br />
                              We'll multiply our <i>offset</i> property by the <i>options.limit</i> argument specified earlier and then subtract the <i>options.limit</i> from this total.<br />
                              So, if our <i>offset</i> is 1 and our <i>options.limit</i> is 5, the <i>min</i> var will be ((1 * 5) - 5), or 0.<br />
                              As were using a zero based index this will represent our first page.</li>
<li><b>max:</b>  The max var will be used as the end point in our <a href="http://docs.jquery.com/Traversing/slice">slice()</a>.<br />
                              We will simply take our <i>offset</i> and multiply it by the <i>limit</i> specified in our <i>options</i> argument.<br />
                              So, if our offset is 1 and our limit is 5, the <i>max</i> var will equal (1 * 5), or 5.</li>
<li>NOTE:  As we are using a zero based index and jQuery's <a href="http://docs.jquery.com/Traversing/slice">slice()</a> method, the <i>min</i> var will server as our 'start' argument and the <i>max</i> var will serve as our 'end' argument.<br />
                              As such, the <a href="http://docs.jquery.com/Traversing/slice">slice()</a> method will select everything with an index including and above the <i>min</i> value and up to but not including the <i>max</i> value.</li>
</ul>
</li>
<p></p>
<li>Now, using the same technique as we used to create our link container and previous link, we are going to create a numeric link for each page / slice of our content.  We'll append these ANCHOR'S to our <i>page.linkContainer</i>.  Here's a look at what we'll do:
<ul></p>
<li>Using the <a href="https://developer.mozilla.org/en/DOM/document.createElement">createElement()</a> method, we'll create a new ANCHOR as a jQuery object</li>
<li>We'll then add the appropriate classes to this ANCHOR: "pagination-link previous ui-state-default"
<ul>
<li>Please note that the 'ui-state-default' class is used as an 'Interaction State' within the <a href="http://jqueryui.com/docs/Theming/API">jQuery UI CSS Framework</a>.  It's primarily used for <i>clickable button-like elements</i>.</li>
</ul>
</li>
<li>Next, we'll define this ANCHOR'S HREF, TITLE and REL attributes using the <a href="http://docs.jquery.com/Attributes/attr">attr()</a> method
<ul>
<li>We'll define this ANCHOR'S REL attribute as 'nofollow' to prevent search engines form following this link.</li>
</ul>
</li>
<li>Using the <a href="http://docs.jquery.com/Attributes/text">text()</a> method, we'll set the text for this link using our <i>offset</i> var.</li>
<li>Lastly, we'll use jQuery's <a href="http://docs.jquery.com/Manipulation/appendTo">appendTo()</a> method to attach this ANCHOR to the <i>DIV.link-container</i> we created and cached as our <i>page.linkContainer</i> property.</li>
</ul>
<p><!-- UL -->
                    </li>
<p></p>
<li>With our calculations complete, and <i>this</i> link created, we'll now cache a selector for this 'particular' page slice.<br />
                         We'll store each of these selectors in our <i>page</i> object using the <i>offset</i> var as the property name.<br />
                         Remember, the <i>offset</i> var will equal the <i>num</i> var + 1.  So, as we iterate, the offset will increment accordingly.<br />
                         Thus, our first <i>offset</i> will be 1 and will represent page one of our content.<br />
                         In simpler terms, <i>page[1]</i> will contain the selector for the first five content items, <i>page[2]</i> for the next five and so on...</li>
</ul>
<p><!-- UL --></p>
<p>
                    <b><br />
                         Here's how our for loop looks:<br />
                    </b>
               </p>
<p><!-- P --></p>
<pre name="code" class="javascript">
          $(document.createElement("A")).addClass("pagination-link previous ui-state-default").attr('href', 'previous').attr('title', 'Previous page').attr('rel', 'nofollow').text('<').appendTo(page.linkContainer);

          for(var num=0;  num < page.total;   num++){

               var offset = num + 1,
                     min = (offset * options.limit) - (options.limit),
                     max = (offset * options.limit);

               $(document.createElement("A")).addClass("pagination-link numeric ui-state-default").attr('href', offset).attr('title', 'Page '+offset+'').attr('rel', 'nofollow').text(offset).appendTo(page.linkContainer);

               page[offset] = page.content.slice(min, [max]);
          };
               </pre>
<p><!-- PRE.javascript --></p></div>
<p><!-- SECTION --></p>
<h2>Creating the Forward Button</h2>
<div>
<div class="tutorial_image" style="min-width:950px"><img src="img/forward_button.png" style="margin-right:100%;"alt="Info"></div>
<p>
                    <b><br />
                         With our numeric links created and our page slices cached, we can now create our 'Next' link.<br />
                         Again, we'll do this in the same manner as we did for our previous links.<br />
                         Here are the steps we'll be taking:<br />
                    </b></p>
<p><!-- P --></p>
<ul>
<li>Using the <a href="https://developer.mozilla.org/en/DOM/document.createElement">createElement()</a> method, we'll create a new ANCHOR as a jQuery object</li>
<li>We'll then add the appropriate classes to this ANCHOR: "pagination-link previous ui-state-default"
<ul>
<li>Please note that the 'ui-state-default' class is part of the <a href="http://jqueryui.com/docs/Theming/API">jQuery UI CSS Framework</a>.</li>
</ul>
</li>
<li>Next, we'll define this ANCHOR'S HREF, TITLE and REL attributes using the <a href="http://docs.jquery.com/Attributes/attr">attr()</a> method
<ul>
<li>We'll define this ANCHOR'S REL attribute as 'nofollow' to prevent search engines form following this link.</li>
</ul>
</li>
<li>Using the <a href="http://docs.jquery.com/Attributes/text">text()</a> method, we'll set the text for this link as the '>' symbol for 'next'.</li>
<li>Lastly, we'll use jQuery's <a href="http://docs.jquery.com/Manipulation/appendTo">appendTo()</a> method to attach this ANCHOR to the <i>DIV.link-container</i> we created and cached as our <i>page.linkContainer</i> property.</li>
</ul>
<p><!-- UL --></p>
<pre name="code" class="javascript">
          $(document.createElement("A")).addClass("pagination-link previous ui-state-default").attr('href', 'previous').attr('title', 'Previous page').attr('rel', 'nofollow').text('<').appendTo(page.linkContainer);

          for(var num=0;  num < page.total;   num++){

               var offset = num + 1,
                     min = (offset * options.limit) - (options.limit),
                     max = (offset * options.limit);

               $(document.createElement("A")).addClass("pagination-link numeric ui-state-default").attr('href', offset).attr('title', 'Page '+offset+'').attr('rel', 'nofollow').text(offset).appendTo(page.linkContainer);

               page[offset] = page.content.slice(min, [max]);
          };

          $(document.createElement("A")).addClass("pagination-link next ui-state-default").attr('href', 'next').attr('title', 'Next page').attr('rel', 'nofollow').text('>').appendTo(page.linkContainer);
               </pre>
<p><!-- PRE.javascript --></p>
<p>
                    <b><br />
                         With <i>all</i> of our ANCHORS created and <i>all</i> of our page selectors cached we'll now cache a selector for our links.<br />
                    </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
               $(document.createElement("A")).addClass("pagination-link previous ui-state-default").attr('href', 'previous').attr('title', 'Previous page').attr('rel', 'nofollow').text('<').appendTo(page.linkContainer);

               for(var num=0;  num < page.total;   num++){

                    var offset = num + 1,
                          min = (offset * options.limit) - (options.limit),
                          max = (offset * options.limit);

                    $(document.createElement("A")).addClass("pagination-link numeric ui-state-default").attr('href', offset).attr('title', 'Page '+offset+'').attr('rel', 'nofollow').text(offset).appendTo(page.linkContainer);

                    page[offset] = page.content.slice(min, [max]);
               };

               $(document.createElement("A")).addClass("pagination-link next ui-state-default").attr('href', 'next').attr('title', 'Next page').attr('rel', 'nofollow').text('>').appendTo(page.linkContainer);

               page.anchors = page.linkContainer.find('A');
               </pre>
<p><!-- PRE.javascript -->
          </div>
<p><!-- SECTION --></p>
<hr /></p>
<h2>Events - mouseenter, mouseleave and click</h2>
<div>
<div class="tutorial_image" style="min-width:950px"><img src="img/events.png" style="margin-right:100%;"alt="Info"></div>
<h3>1. General Overview</h3>
<div>
<p>
                         <b><br />
                              So far, we've created our pagination links and cached selectors for all of the elements and page slices we'll be using.<br />
                              We'll now add some behavior to the mouseenter, mouseleave and click events for our links.<br />
                         </b></p>
<p><!-- P --></p>
<h4>A. Mouseenter and Mouseleave</h4>
<div>
<p>
                              <b>Here's an overview of what we'll do on mouseenter and mouseleave:</p>
<p>                                   <small><br />
                                        NOTE:<br />
                                        All of the ANCHORS will have the 'ui-state-default' class.  This is our base interaction class.<br />
                                        On mouseenter and mouseleave we'll add or remove the 'ui-state-hover' interaction class accordingly.<br />
                                        Additionally, when an ANCHOR is clicked, if it's not already active, we'll add the 'ui-state-active' class as an indication of the current active page.<br />
                                   </small></p>
<p>                              </b>
                         </p>
<p><!-- P --></p>
<ul>
<li>First, we'll cache a selector for <i>this</i> element which does not have the 'ui-state-active' class</li>
<li>Then, using jQuery's <a href="">event</a> object, we'll determine if the event is mouseenter.  If it is, we'll add the 'ui-state-hover' class.</li>
<li>If the event is mouseleave, we'll remove the 'ui-state-hover' class.</li>
</ul></div>
<p><!-- SUB-SECTION --></p>
<h4>B. Click</h4>
<div>
<p>
                              <b>Here's an overview of what we'll do for the click event:</p>
<p>                                   <small><br />
                                        <i><br />
                                             Please note that much of what we'll be doing here is the same for the previous, next and numeric links.<br />
                                             I think it's also important to point out that this code could be made substantially shorter for production.<br />
                                             However, I think it's a good idea to maintain separation and readability for the sake of this tutorial ...<br />
                                        </i><br />
                                   </small><br />
                              </b>
                         </p>
<p><!-- P --></p>
<ul>
<li>Using jQuery's <a href="http://docs.jquery.com/Events/jQuery.Event">event object</a>, we'll use the <a href="http://docs.jquery.com/Events/jQuery.Event#event.preventDefault.28.29">preventDefault()</a> method to prevent navigation when clicking our links.</li>
<li>Next, we'll determine if the link which was clicked already has the <i>active</i> class.  If it does, we'll return false which to prevent any further action.</li>
<li>
                                   If the link isn't active, we'll check to see if the values for our previous and back buttons are <i>undefined</i>.<br />
                                   These values will only be undefined if none of the links have been clicked yet.<br />
                                   Later on, you'll see how we define these properties relative to the active link.<br />
                                   Since they are <i>undefined</i> at this time, we'll define their values here.<br />
                                   We'll set the value for our 'prev' link as 0 and the value of 'next' link as 2.<br />
                                   In simpler terms, since our paginated content will always start on 'page 1' we set the previous page to 0 and the next page to 2.
                             </li>
<li>Next, we'll cache a selector for <i>this</i> ANCHOR'S active sibling.  We'll use this a bit later to toggle the active classes accordingly.</li>
<p></p>
<li><b>Now, we'll need to determine if the ANCHOR which was clicked is the 'previous' link.  If it is, we'll do the following:</b>
<ul></p>
<li>Determine if we're already on the first page.  If we are, since there is no previous page, we'll return false in order to prevent any further action.</li>
<li>Next, we'll find the sibling ANCHOR whose HREF attribute corresponds to the value of our <i>page.prev</i> property.  We'll cache a selector for this ANCHOR as <i>this.link</i>.</li>
<li>Using jQuery's <a href="">add()</a> method we'll combine <i>this.link</i> with <i>this.siblings</i> and then toggle the active class for all of these matched elements using jQuery's <a href="http://docs.jquery.com/Attributes/toggleClass#class">toggleClass()</a> method.</li>
<li>
                                             Now, using the content selector we cached earlier, <i>page.content</i>, we'll hide all of our content by setting it's CSS display property to none.<br />
                                             Additionally, we'll add a special class to it, <i>ui-helper-hidden</i>.  This is a <a href="http://jqueryui.com/docs/Theming/API">jQuery UI Framework</a> helper class.<br />
                                             By default, it sets display to none and as such we could just add or remove this class in order to toggle this elements display property.<br />
                                             For the sake of this tutorial, however, I'd like to use jQuery's <a href="http://docs.jquery.com/CSS">css()</a> method.<br />
                                             Also, please keep in mind that adding this helper class isn't necessary but situations may arise where you need to exclude hidden content form certain methods or functions.<br />
                                             Having a helper class for 'hidden' items can make this a bit simpler.
                                        </li>
<li>
<p>                                             <em><br />
                                                  Now, using the value stored in our <i>page.prev</i> property, we'll show the appropriate <i>page</i> by setting it's display property back to its original value which was stored in our <i>page.display</i> property.<br />
                                                  Remember, in our for loop, we stored selectors which referenced 'slices' of our content.<br />
                                                  We will also remove the 'ui-helper-hidden' class from this content items as it is now visible.<br />
                                             </em>
                                        </li>
<li><em>Next, we'll decrement our <i>page.prev</i> property by 1 to reference the 'new' previous page.</em></li>
<li><em>Lastly, we'll increment our <i>page.next</i> property by 2 so that it references the new 'next' page and not the current one.</em></li>
</ul>
<p>
                              </li>
<li><b>If the ANCHOR which was clicked is the next link, we'll follow the same steps as above but with a few minor changes.  Here's what we'll do:</b>
<ul></p>
<li>Determine if we're already on the last page of our content.  If we are, we'll return false in order to prevent any further action.</li>
<li>Next, we'll find the ANCHOR whose HREF attribute corresponds to the value of our <i>page.next</i> property.  We'll cache this ANCHOR as <i>this.link</i>.</li>
<li>Using jQuery's <a href="">add()</a> method we'll combine <i>this.link</i> with <i>this.siblings</i> and then toggle the active class for all of these matched elements using jQuery's <a href="http://docs.jquery.com/Attributes/toggleClass">toggleClass()</a> method.</li>
<li>
                                             Now, using the content selector we cached earlier, <i>page.content</i>, we'll hide all of our content by setting it's CSS display property to none.<br />
                                             We'll then add the <i>ui-helper-hidden</i> class to it.
                                        </li>
<li>
                                             <em><br />
                                                  Now, using the value stored in our <i>page.next</i> property, we'll show the appropriate <i>page</i> by setting it's display property back to its original value which was stored in our <i>page.display</i> property.<br />
                                                  Remember, in our for loop, we stored selectors which referenced 'slices' of our content.<br />
                                                  We will also remove the 'ui-helper-hidden' class from these content items as well.<br />
                                             </em></p>
</li>
<li><em>Next, we'll decrement our <i>page.prev</i> property by 2 so that it references the new 'prev' page and not the current one.</em></li>
<li><em>Lastly, we'll increment our <i>page.next</i> property by 1 so that it references the new 'next' page.</em></li>
</ul>
<p>
                              </li>
<li><b>If the ANCHOR which was clicked is a numeric page link we will, again, follow the above steps with a few minor changes.  Here's what we'll do:</b>
<ul></p>
<li>First, we'll cache the selector for this ANCHOR as <i>this.link</i>.</li>
<li>Using jQuery's <a href="">add()</a> method we'll combine <i>this.link</i> with <i>this.siblings</i> and toggle the active class for all of these matched elements using jQuery's <a href="http://docs.jquery.com/Attributes/toggleClass">toggleClass()</a> method.</li>
<li>
                                             Now, using the content selector we cached earlier, <i>page.content</i>, we'll hide all of our content by setting it's CSS display property to none.<br />
                                             We'll then add the <i>ui-helper-hidden</i> class to this content.  Again, this is a <a href="http://jqueryui.com/docs/Theming/API">jQuery UI Framework</a> helper class.
                                        </li>
<li><em>Now, we'll get the HREF attribute for <i>this.link</i> and store it as <i>this.offset</i>.  This HREF attribute corresponds directly to one of the page slices we cached earlier.</em></li>
<li>
                                             <em><br />
                                                  Using <i>this.offset</i> as a property name or 'key' within our <i>page</i> object, we'll show the appropriate page by setting it's display property back to its original value which was stored in our <i>page.display</i> property.<br />
                                                  Remember, in our for loop, we stored selectors representing 'slices' of content and set each of these property names to a numeric value symbolic of  page number.<br />
                                                  So, assuming the <i>options.limit</i> is 5, <i>page[1]</i> will display the first five items, <i>page[2]</i> will display the next five and so on...<br />
                                             </em></p>
</li>
<li>Next, we'll decrement our <i>page.prev</i> property by taking <i>this.offset</i> and subtracting 1 from it.  Remember, <i>this.offset</i>, which is the ANCHOR'S HREF attribute, corresponds directly to a 'page' number.  So, by subtracting 1 from the offset we are selecting the previous page.</li>
<li>Lastly, we'll increment our <i>page.next</i> property by taking <i>this.offset</i> and adding 1 to it so that it now references the new 'next' page.</li>
</ul>
<p>
                              </li>
</ul>
<p><!-- UL -->
                    </div>
<p><!-- SUB-SECTION -->
               </div>
<p><!-- SUB-SECTION --></p>
<p></p>
<h3>2. The Mouseenter and Mouseleave Events</h3>
<div>
<p>
                         <b><br />
                              We'll now bind handlers to the mouseenter and mouseleave events of pagination links.<br />
                              We'll first cache a selector that excludes all links which have the active class by using jQuery's <a href="http://docs.jquery.com/Traversing/not#expr">not()</a> method to exclude them.<br />
                         </b>
                    </p>
<p><!-- P --></p>
<pre name="code" class="javascript">

               page.anchors.bind('mouseenter mouseleave', function(e){
                    this.self = $(this).not('.ui-state-active');
                });
                    </pre>
<p><!-- PRE.javascript --></p>
<p>
                         <b><br />
                              Next, using the <a href="http://docs.jquery.com/Events/jQuery.Event#event.type">type()</a> property of jQuery's <a href="http://docs.jquery.com/Events/jQuery.Event">event object</a>, we'll determine what type of event was triggered.<br />
                              We'll do this within a <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Operators/Special_Operators#section_2">conditional / ternary operator</a> and we'll add or remove the hover class accordingly.<br />
                              jQuery's <a href="http://docs.jquery.com/Events/jQuery.Event">event object</a> will be passed to the argument, <i>e</i>, we specify in our anonymous function here.<br />
                         </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
               page.anchors.bind('mouseenter mouseleave', function(e){
                    this.self = $(this).not('.ui-state-active');
                    (e.type === 'mouseenter') ? this.self.addClass('ui-state-hover') : this.self.removeClass('ui-state-hover');
                });
                    </pre>
<p><!-- PRE.javascript --></p>
<p>
                         <b><br />
                              Next, as part of a jQuery <a href="http://ejohn.org/blog/ultra-chaining-with-jquery/">chain</a> and using jQuery's <a herf="http://docs.jquery.com/Traversing/eq">eq()</a> method, we'll get the select pagination link and add the active class to it.<br />
                              The second link which will have an index of 1 since we are working with a zero based index and will always be the numeric link for page one.<br />
                              Since page one is displayed by default we'll make this the active link.<br />
                              Here's how our code will look:<br />
                         </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
               page.anchors.bind('mouseenter mouseleave', function(e){
                    this.self = $(this).not('.ui-state-active');
                    (e.type === 'mouseenter') ? this.self.addClass('ui-state-hover') : this.self.removeClass('ui-state-hover');
                }).eq(1).addClass('ui-state-active');
                    </pre>
<p><!-- PRE.javascript -->
               </div>
<p><!-- SUB-SECTION --></p>
<p></p>
<h3>3. The Click Event</h3>
<div>
<h4>A. Default Steps</h4>
<div>
<p>
                              <b><br />
                                   Let's take a closer look at the click event now.<br />
                                   First of all, using the <a href="http://docs.jquery.com/Events/jQuery.Event#event.preventDefault.28.29">preventDefault()</a>, method which is part of jQuery's <a href="http://docs.jquery.com/Events/jQuery.Event">event object</a>, we'll prevent navigation when clicking on our links.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();
                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   Next, we'll check to see if this link has the active class, <i>ui-state-active</i>.<br />
                                   If it does, then the page slice corresponding to this link is already displayed and we'll return false.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   Now, we'll cache a selector for this links active sibling.<br />
                                   In a moment, we'll using using this selector to toggle active classes.<br />
                              </b>
                         </p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                    });
                         </pre>
<p><!-- PRE.javascript --></p></div>
<p><!-- SUB-SUB-SECTION --></p>
<h4>B. The Previous Button</h4>
<div>
<p>                              <b><br />
                                   We'll be checking if the link which was clicked is our previous or next link.<br />
                                   If it's neither of these, then, by default, it's a numeric link.<br />
                                   The code for each of these conditions is identical except for a few minor but important changes.<br />
                              </b>
                         </p>
<p><!-- P --></p>
<p>
                              <b><br />
                                   Let's start with the previous link.<br />
                                   The first thing we'll do is check to see if our <i>page.prev</i> property is 0.<br />
                                   If it is, this means that the first page is already displayed and we'll return false to stop any further action from occurring.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')){

                              if(page.prev === 0){
                                   return false;
                              };
                         };

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   If the first page isn't displayed, we'll cache a selector for the sibling link whose HREF attribute matches our <i>page.prev</i> property.<br />
                                   We'll use jQuery's <a href="http://docs.jquery.com/Selectors/attributeEquals#attributevalue">attribute</a> selector to check our sibling link's HREFs.<br />
                                   We'll concatenate our <i>page.prev</i> property as the value:<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')){

                              if(page.prev === 0){
                                   return false;
                              };

                              this.link = $(this).siblings('A[href= ' + page.prev + ']');
                         };

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   Now, using the selector we cached as <i>this.link</i> and the sibling selector we cached earlier, <i>this.siblings</i>, we'll toggle the active class for these matched elements.  We'll use jQuery's <a href="http://docs.jquery.com/Traversing/add#expr">add()</a> method to combine the two selectors and jQuery's <a href="http://docs.jquery.com/Attributes/toggleClass#class">toggleClass()</a> method to toggle the 'ui-state-active' class.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')){

                              if(page.prev === 0){
                                   return false;
                              };

                              this.link = $(this).siblings('A[href= ' + page.prev + ']');
                              this.link.add(this.siblings).toggleClass('ui-state-active');
                         };

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   Next, we'll hide our content items by setting their display to none.  We'll use the <i>page.content</i> selector we cached earlier to select our content.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')){

                              if(page.prev === 0){
                                   return false;
                              };

                              this.link = $(this).siblings('A[href= ' + page.prev + ']');
                              this.link.add(this.siblings).toggleClass('ui-state-active');

                              page.content.css('display', 'none').addClass('ui-helper-hidden');
                         };

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   With our content items hidden, we'll show the appropriate page using one of the slices we cached earlier.<br />
                                   Keep in mind that our <i>page.prev</i> property corresponds directly to the previous page's slice.<br />
                                   So, all we need to do here is specify <i>page.prev</i> as our value.<br />
                                   Additionally, we'll use the display property we cached earlier, <i>page.display</i>, to restore our contents display property back to its default.<br />
                                   Lastly, we'll remove the 'ui-helper-hidden' class as this content is now visible.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')){

                              if(page.prev === 0){
                                   return false;
                              };

                              this.link = $(this).siblings('A[href= ' + page.prev + ']');
                              this.link.add(this.siblings).toggleClass('ui-state-active');

                              page.content.css('display', 'none').addClass('ui-helper-hidden');
                              page[page.prev].css('display', page.display).removeClass('ui-helper-hidden');
                         };

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   With the previous page displayed, we'll need to adjust our <i>page.prev</i> and <i>page.next</i> properties accordingly.<br />
                                   Since we've 'moved back' a page we'll decrement our <i>page.prev</i> and <i>page.next</i> properties by 1 so that they reference the new previous page.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')){

                              if(page.prev === 0){
                                   return false;
                              };

                              this.link = $(this).siblings('A[href= ' + page.prev + ']');
                              this.link.add(this.siblings).toggleClass('ui-state-active');

                              page.content.css('display', 'none').addClass('ui-helper-hidden');
                              page[page.prev].css('display', page.display).removeClass('ui-helper-hidden');

                              page.prev--,
                              page.next--;
                         };

                    });
                         </pre>
<p><!-- PRE.javascript --></p></div>
<p><!-- SUB-SUB-SECTION --></p>
<h4>C. The Next Button</h4>
<div>
<p>
                              <b><br />
                                   If our link is the 'next' button, we'll start by checking to see if the last page of content is already displayed.<br />
                                   We do this by comparing our <i>page.next</i> property to our <i>page.total</i> property + 1.<br />
                                   If the two values match, we'll return false as there is no 'next' page.</p>
<p>                                   <em>NOTE:  We add 1 to our <i>page.total</i> property as it uses a zero based index where as our page slices start with the number one.</em></p>
<p>                              </b>
                         </p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {

                              if(page.next === (page.total + 1)){
                                   return false;
                              };
                         }

                    });
           </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   We'll now cache a selector for the sibling link whose HREF attribute matches our <i>page.next</i> property using jQuery's <a href="http://docs.jquery.com/Selectors/attributeEquals#attributevalue">attribute</a> selector to check our sibling link's HREFs.<br />
                                   We'll concatenate our <i>page.next</i> property as the attribute's value:<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {

                              if(page.next === (page.total + 1)){
                                   return false;
                              };

                              this.link = $(this).siblings('A[href= ' + page.next + ']');
                         };
                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   Now, using the selector we just cached, <i>this.link</i> and the sibling selector we cached earlier, <i>this.siblings</i>, we'll toggle the active class for these matched ELEMENTS.  We'll use jQuery's <a href="http://docs.jquery.com/Traversing/add#expr">add()</a> method to combine the two selectors and jQuery's <a href="http://docs.jquery.com/Attributes/toggleClass#class">toggleClass()</a> method to toggle the 'ui-state-active' class.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {

                              if(page.next === (page.total + 1)){
                                   return false;
                              };

                              this.link = $(this).siblings('A[href= ' + page.next + ']');
                              this.link.add(this.siblings).toggleClass('ui-state-active');

                         };

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   Next, using the <i>page.content</i> selector, we'll hide our content items by setting their display to none.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {

                              if(page.next === (page.total + 1)){
                                   return false;
                              };

                              this.link = $(this).siblings('A[href= ' + page.next + ']');
                              this.link.add(this.siblings).toggleClass('ui-state-active');

                              page.content.css('display', 'none').addClass('ui-helper-hidden');
                         };

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   With our content hidden, we'll show the page which corresponds to our <i>page.next</i> property.<br />
                                   As the <i>page.next</i> property corresponds directly to one of the page slices we cached earlier, we'll specify it as the property name in our <i>page</i> object.<br />
                                   Additionally, we'll use the display property we cached earlier, <i>page.display</i>, to restore our contents display back to its default value.<br />
                                   Lastly, we'll remove our helper class, 'ui-helper-hidden', as this content is now visible.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {

                              if(page.next === (page.total + 1)){
                                   return false;
                              };

                              this.link = $(this).siblings('A[href= ' + page.next + ']');
                              this.link.add(this.siblings).toggleClass('ui-state-active');

                              page.content.css('display', 'none').addClass('ui-helper-hidden');
                              page[page.next].css('display', page.display).removeClass('ui-helper-hidden');

                         };

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   With the 'next page' visible, we'll need to adjust our <i>page.prev</i> and <i>page.next</i> properties accordingly.<br />
                                   Since we've moved forward a page, we'll increment our <i>page.prev</i> and <i>page.next</i> properties by 1 so that they reference the new 'next' page.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {

                              if(page.next === (page.total + 1)){
                                   return false;
                              };

                              this.link = $(this).siblings('A[href= ' + page.next + ']');
                              this.link.add(this.siblings).toggleClass('ui-state-active');

                              page.content.css('display', 'none').addClass('ui-helper-hidden');
                              page[page.next].css('display', page.display).removeClass('ui-helper-hidden');

                              page.prev++,
                              page.next++;

                         };

                    });
                         </pre>
<p><!-- PRE.javascript --></p></div>
<p><!-- SUB-SUB-SECTION --></p>
<h4>D. Numeric Links</h4>
<div>
<p>
                              <b><br />
                                   If you recall, earlier on, we checked to see if the link which was clicked is already active and we returned false if it was.<br />
                                   With this check in place, there's no further need to determine if we're already on the active page.<br />
                                   So, we'll go ahead and cache a selector for this link:<br />
                              </b>
                         </p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {
                              ....
                         } else {
                              this.link = $(this).not('.ui-state-active');
                         }

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>                              <b><br />
                                   Now, using the selector we just cached, <i>this.link</i> and the sibling selector we earlier, <i>this.siblings</i>, we'll toggle the active class for all of these matched selectors.  We'll use jQuery's <a href="http://docs.jquery.com/Traversing/add#expr">add()</a> method to combine the two selectors and jQuery's <a href="http://docs.jquery.com/Attributes/toggleClass#class">toggleClass()</a> method to toggle the 'ui-state-active' class.<br />
                              </b>
                         </p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {
                              ....
                         } else {

                              this.link = $(this).not('.ui-state-active');
                              this.link.add(this.siblings).toggleClass('ui-state-active');
                         }

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   Next, we'll get the HREF attribute of the link which was clicked and store it as <i>this.offset</i>.<br />
                                   This attribute, as you may recall from our loop, will correspond directly to one of the page slices stored in our <i>page</i> object.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {
                              ....
                         } else {

                              this.link = $(this).not('.ui-state-active');
                              this.link.add(this.siblings).toggleClass('ui-state-active');
                         }

                         this.offset = parseInt($(this).attr('href'))

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   Now, we'll hide our content by setting it's display to none.  We'll use the <i>page.content</i> selector we cached earlier:<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {
                              ....
                         } else {

                              this.link = $(this).not('.ui-state-active');
                              this.link.add(this.siblings).toggleClass('ui-state-active');

                              this.offset = parseInt($(this).attr('href'))

                              page.content.css('display', 'none').addClass('ui-helper-hidden');
                         }

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   With our content hidden, we'll show the appropriate page by matching <i>this.offset</i> to the corresponding page slice by specifying <i>this.offset</i> as the property name in our <i>page</i> object.<br />
                                   Additionally, we'll use the display property we cached earlier, <i>page.display</i>, to restore our contents display back to its default.<br />
                                   Lastly, we'll remove the 'ui-helper-hidden' class as this 'page' is now visible.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {
                              ....
                         } else {

                              this.link = $(this).not('.ui-state-active');
                              this.link.add(this.siblings).toggleClass('ui-state-active');

                              this.offset = parseInt($(this).attr('href'))

                              page.content.css('display', 'none').addClass('ui-helper-hidden');
                              page[this.offset].css('display', page.display).removeClass('ui-helper-hidden');
                         }

                    });
                         </pre>
<p><!-- PRE.javascript --></p>
<p>
                              <b><br />
                                   With the appropriate page visible, we'll adjust our <i>page.prev</i> and <i>page.next</i> properties accordingly.<br />
                                   Since <i>this.offset</i> is equal to the property name of our current page, we'll subtract 1 from it to get our <i>page.prev</i> value.<br />
                                   Conversely, we'll add 1 to <i>this.offset</i> to get our <i>page.next</i> property.<br />
                              </b></p>
<p><!-- P --></p>
<pre name="code" class="javascript">
                    page.anchors.bind('click', function(e){
                         e.preventDefault();

                         if($(this).is('.ui-state-active')){
                              return false;
                         }

                         this.siblings = $(this).siblings('.ui-state-active:first');

                         if($(this).is('.prev')) {
                              ....
                         } else if($(this).is('.next')) {
                              ....
                         } else {

                              this.link = $(this).not('.ui-state-active');
                              this.link.add(this.siblings).toggleClass('ui-state-active');

                              this.offset = parseInt($(this).attr('href'))

                              page.content.css('display', 'none').addClass('ui-helper-hidden');
                              page[this.offset].css('display', page.display).removeClass('ui-helper-hidden');

                              page.prev = this.offset - 1,
                              page.next = this.offset + 1;
                         }

                    });
                         </pre>
<p><!-- PRE.javascript --></p></div>
<p><!-- SUB-SUB-SECTION -->
               </div>
<p><!-- SUB-SECTION --></p></div>
<p><!-- SECTION --></p>
<hr /></p>
<h2>The End!</h2>
<div>
<div class="tutorial_image" style="min-width:950px"><img src="img/the_end.png" style="margin-right:100%;"alt="Info"></div>
<p>
                    That's it!<br />
                    I hope you now have a strong understanding of how to implement this style of jQuery pagination into your own work.<br />
                    Remember, you can paginate just about anything with this technique, image galleries, blog rolls, links, tables or even long paragraphs...</p>
<p>                    Please try out the examples included with this tutorial or create your own!</p>
<p>                    Good luck and enjoy!
               </p>
<p><!-- P --></p></div>
<p><!-- SECTION --></p></div>
<p><!-- DIV#content --></p>
]]></content:encoded>
			<wfw:commentRss>http://source-update.com/2009/11/29/aginate-anything-with-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BYPASS PHP SAFEMODE</title>
		<link>http://source-update.com/2009/11/13/bypass-php-safemode/</link>
		<comments>http://source-update.com/2009/11/13/bypass-php-safemode/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 15:25:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SCRIPTS]]></category>
		<category><![CDATA[TUTORIALS]]></category>

		<guid isPermaLink="false">http://source-update.com/?p=142</guid>
		<description><![CDATA[If you can use the dl() command or use a buffer overflow to load this extension you can have full php access even with safemode enabled.
All you need is to use the extension below and call this function:
root(\&#8221;all\&#8221;);
If you dont want full access you can use the root command like this:
root(ini_setting,value);
]]></description>
			<content:encoded><![CDATA[<p>If you can use the dl() command or use a buffer overflow to load this extension you can have full php access even with safemode enabled.</p>
<p>All you need is to use the extension below and call this function:</p>
<blockquote><p>root(\&#8221;all\&#8221;);</p></blockquote>
<p>If you dont want full access you can use the root command like this:</p>
<blockquote><p>root(ini_setting,value);</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://source-update.com/2009/11/13/bypass-php-safemode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
