<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Click On Tech</title>
	
	<link>http://clickontech.net</link>
	<description>Technology Gate</description>
	<pubDate>Sun, 08 Nov 2009 12:26:56 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ClickOnTech" /><feedburner:info uri="clickontech" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>Technology Gate</itunes:subtitle><item>
		<title>Expotech2009 Conference Closing Summary‏</title>
		<link>http://feedproxy.google.com/~r/ClickOnTech/~3/foeu-2Q6ZCg/</link>
		<comments>http://clickontech.net/2009/11/expotech2009-conference-closing-summary/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 12:08:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[2009]]></category>

		<category><![CDATA[entrepreneurship]]></category>

		<category><![CDATA[Expotech]]></category>

		<category><![CDATA[G-PALS DAY 2009]]></category>

		<category><![CDATA[Gisel Hiscock]]></category>

		<category><![CDATA[ICT sector]]></category>

		<category><![CDATA[innovation]]></category>

		<category><![CDATA[Palestine]]></category>

		<category><![CDATA[PICTI]]></category>

		<category><![CDATA[PITA]]></category>

		<guid isPermaLink="false">http://clickontech.net/?p=41</guid>
		<description><![CDATA[Session I
Impact of Multinational Presence on the Development of the ICT Sector
This session was moderator by Dr. Sabri Saidam, President Advisor for Telecom, IT and Tech Education and featured Dr. Mashhour Abu Dakka, Minister of Telecommunication and IT. The session highlighted a presentation from the multinational company CISCO presented by Mr. Anthony Vonsee, General Manager [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Expotech2009 Conference Closing Summary‏", url: "http://clickontech.net/2009/11/expotech2009-conference-closing-summary/" });</script>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #000000;"><strong>Session I</strong></span><br />
Impact of Multinational Presence on the Development of the ICT Sector<img class="alignnone alignright" style="float: right;" src="http://clickontech.net/arabic/wp-content/uploads/2009/10/expotech.jpg" alt="" /><br />
This session was moderator by Dr. Sabri Saidam, President Advisor for Telecom, IT and Tech Education and featured Dr. Mashhour Abu Dakka, Minister of Telecommunication and IT. The session highlighted a presentation from the multinational company CISCO presented by Mr. Anthony Vonsee, General Manager for Cisco North Africa &amp; the Levant. Other main speakers included Mr. Ibrahim Barham, CEO Safad, Mr. Maher Hamdan, CEO Paltrade and Ms. Gisel Hiscock, New Business Development team for Google Europe, Middle East and Africa.</p>
<p>The Speakers have made it a point that realistically, Palestine being under the Israeli occupation it will hamper the development of the economy. However, attracting multinational companies such as Microsoft and CISCO to invest in Palestine is a business and an economic decision where Palestine&#8217;s government and private sector have to develop its business case.</p>
<p>We heard a formula from the distinguished Speakers that the recipe for developing the business case starts internally. A holistic approach towards developing government regulation such as an independent telecommunication regulator, digital signature, catering for venture capital industry as part of the company registration and investment laws, also regulation for free zone culminating in Technoparks projects should drive an enabling and friendly environment as a first measurement for multinationals to consider investing in Palestine. As a first step to globalizing the ICT sector, the government has to invest in developing the infrastructure such as telecommunication, regulations, physical premises, human capital and in promoting innovation as well as entrepreneurship.<span id="more-41"></span></p>
<p>Furthermore, the industry has to improve its record on delivering quality services at competitive costing rates across the board such as telecommunication services, outsourcing services, and other information technology and business process outsourcing services. This means that skills capacity for Palestinian human capital is key. A multinational speaker advised that they follow where engineers want to be and for that the educational institution is a supply for quality engineers and developers.</p>
<p>Developing a cluster for technology is not a one person or one organization act. It is a collective effort and a partnership between the private and public sector. The private sector made a breakthrough in developing a direct relationship with the multinationals. Its role now is to leverage this relationship to grow the investment impact of multinational in Palestine where the government role is in complementing an enabling and friendly environment. Perhaps the biggest opportunity is where to position Palestine as a platform for the multinationals for providing various solutions to the Arabic speaking markets where the audience learnt that there is a market for the mobile applications. The modality of engagement is to provide the multinationals with required human talent to support their growing business operations in the emerging markets in the region.</p>
<p>In essence, Palestine needs to internationalize and globalize its information technology market. It has to improve it track on credibility and perception to develop the business case. The speakers made the final point that beyond the business case, there are unique non-economic but rather social factors to Palestine that are just as important why the ICT sector deserves the attention of the multinationals mainly to provide knowledge based job opportunities in the private sector and release the pressure on public employment.</p>
<p><strong>Session II</strong><br />
Competing in Global IT Outsourcing - Palestine&#8217;s Advantages &amp; Challenges<br />
The moderator for the session was Mr. Omar Al-Sahili, Business Development Director, DAI and the distinguished speakers included Mr. Ghassan Anabtawi, CEO Reach, Mr. Ihab Jabari, ICT Consultant CARANA, Mr. Murad Tahboub, CEO Asaltech, Mr. Tarek Esleem, Member of the Board of Director PITA and CEO Al-Tariq Systems and Mr. Tareq Maayah, CEO Exalt.</p>
<p>This session has shed lights on the current seed efforts to create an information technology outsourcing industry in Palestine. The session has demonstrated current success stories in existing businesses in the West Bank and Gaza in providing outsourcing services regionally. In comparison to Jordan, Palestine is nowhere close to the Tier 4 of countries targeted for the outsourcing as a destination. Nevertheless, the session highlighted the competitive advantages and value proposition for conducting outsourcing in Palestine as an offshore software development destination, software offshoring, business process outsourcing and call centers operations.</p>
<p>Furthermore, the Speakers believe that the quality of service outweighs cost structures in this business, but a niche market has to be developed. For example, Ireland is generating US$12 billion in annual revenues but their outsourcing cost structures are 7 times higher than those in India. So, the value proposition is not entirely based on cost structures. Speakers agreed that Palestinians have English and Arabic language skills, its geographical location and time zone would make outsourcing to serve the Arab speaking region as well as Europe and the USA feasible proposition. For sure, Palestinians can fit in a western corporate culture to align the outsourcing project with the strategic business interest of the international clients.</p>
<p>The main challenge is whether the outsourcing industry can meet a growing demand from the international business community. Is there really a local capacity of available human capital that are highly skilled in the various structures of this industry to support scaling the outsourcing operations.</p>
<p>All speakers agreed that Palestine does have ongoing and existing commercially viable outsourcing activities (not industry yet). Palestine companies have left positive impression on their international clients including CISCO. Some of the Palestinian companies have found niches in media and hardware design and some companies have established an international image that they&#8217;re starting to get new business by references from their loyal clients.<br />
Special announcements by development agencies were presented at the Conference. Mr. Ghassan Al - Jamal, Development Specialist Private Enterprise Office briefed the audience on the USAID strategy to assist the growth of the ICT sector in order to build an e-economy. In the first instance, the USAID has highlighted its interest to have the IT sector interact more with the regional and global markets to create business opportunities. The USAID will also be working closely with the Palestine IT Association of companies (PITA) and the Palestine ICT Incubator (PICTI) towards accomplishing its strategies. This is demonstrated in the organization of participation in regional and international exhibitions as well as in the preparation of business delegations. The USAID will be investing in supporting an ICT policy program in cooperation with the Ministry of Telecommunications and IT, in branding and promoting the sector internationally including the outsourcing capabilities, in conducting market research in viable markets to promote the exports of Palestinian products and solutions. The USAID will be supporting an incubation program with PICTI in an attempt to further promote innovation and technology entrepreneurship. The USAID will be working towards the improvement of the workforce development and in promoting the ICT diffusion program.</p>
<p>Mr. Ziad Jacer from Mercy Corps presented how his organization is Contributing to the transformation and growth of the Palestinian economy through knowledge based interventions in market mapping, capacity building, networking, business creation such as supporting PICTI with the TeamStart program and the apprenticeship program.</p>
<p>The final presentation by a development agency at the Conference was presented by Mr. Laith Kassis the CEO of PITA and PICTI on behalf of the Mohammed bin Rashid Al - Maktoum Foundation. Mr. Kassis announced The Sawaed Programme, which seeks to support and develop the capabilities of talented Arab entrepreneurs by awarding non-refundable grants to regional projects that make a positive contribution to Arab World development. The Sawaed Programme is a new and innovative opportunity for businesses to develop commercially sustainable enterprises, whilst addressing development challenges in the Arab World. The current two challenges are Development of Online Arabic Content and Child Education. The Mohammed bin Rashid Al Maktoum Foundation invited the private sector to develop innovative products and ideas that help in the development of the Arab World through Information and Communication Technology (ICT) by creating and providing access to high quality online Arabic content and ICT resources that support education and learning and which promote Arab culture. The Sawaed Programme offers grants to eligible applicants ranging from AED 100,000 to AED 1,000,000.</p>
<p><strong>Session III</strong><br />
Building a Knowledge-Based Economy<br />
This session was Moderator: Ms. Sarah Beran, Economic Officer US Consulate General and the Speakers included Dr. Yahya Salqan, CEO Jaffa Net, Mr. Ahmad Al-Farra, Member of the Board of Director PITA and CEO PALINVEST, Mr. Bernard O&#8217;Sullivan, FNMD Project, DAI, Mr. Mustafa Hasan, CEO Hulul Business Solutions, Mr. Naseem Tuffaha, Regional Director of Microsoft&#8217;s Developer and Platform Group for Middle East &amp; Africa</p>
<p>In her opening remarks, Ms. Beran emphasized the US government commitment towards the development of the Palestinian ICT sector and noted President Obama&#8217;s commitment in his Cairo speech to education, innovation, and development of the entrepreneurial spirit in this region.   She added that US assistance in the Palestinian Territories helps to integrate technology into elementary and higher education, funds feasibility studies for ICT projects, provides technical assistance to fledgling Palestinian companies, and sends businessmen to the US and international trade shows for B2B meetings.<br />
Speakers stressed the importance of high quality education, job opportunities, and the participation of multinational companies to the development of a solid foundation for a knowledge-based economy.   Many speakers noted that technology is just a tool - not the goal - of a knowledge-based economy, but that it can assist in producing economic benefits where capital, labor and markets work together. The speakers also agreed that a knowledge-based economy is about solving problems, business, economic and social ones alike by exploiting technologies. In this process of providing solutions there has to be a marriage between talent and technology in a social communicative interaction.</p>
<p>Speakers also suggested formally tapping into the Palestinian Diaspora to help the Palestinian economy connect with what is broadly happening in the global industry.  Speakers agreed that both the government and the private sector must play a role in promoting the development of a knowledge-based economy - the government can do so by providing incentives to start-ups and improving education, and the private sector by focusing on encouraging innovation and training young graduates, among other things.</p>
<p>The session also highlighted how Microsoft is helping entrepreneurs in jumpstarting their innovation and other regional programs assisting the development and growth of successful international research and technology cluster as a platform to launch new projects. Furthermore, for the first time last year, there was a Palestinian team participating in the Microsoft ImagineCup program.  This program often acts as a launching pad for start-ups and entrepreneurs.</p>
<p>The session highlighted how PITA and PICTI are promoting Technoparks, outsourcing, innovation and technology entrepreneurship with international partners to develop a technology cluster towards supporting knowledge based eco-system.</p>
<p><strong>Session IV</strong><br />
Entrepreneurial Venture Capital<br />
Starting and Growing Your Technology Business through Venture Capital Financing<br />
This session was moderator: Mr. Laith Kassis, CEO Palestine IT Association and Palestine ICT Incubator. The distinguished speakers included Dr. Mohammed Mustafa, Chairman and CEO of the Palestine Investment Fund, Mr. Debu Purkayastha, Principal - Corporate Development, Google, Mr. Samir Hulileh, CEO PADICO, and Mr. Victor Hwang, Co-founder and Managing Director, T2 Venture Capital, Kauffman Fellows Venture Corps.</p>
<p>Dr. Mustafa has taken the opportunity to announce a new equity-based investment vehicle capitalized at US$50Million where the Palestine Investment Fund will be committing US$10Million. Dr. Mustafa also announced that this Fund will be investing in the information technology sector.</p>
<p>The session focused on the role of venture capital financial instruments in growing the information and communications technology industry in Palestine. As we have seen in advanced economies, successful startup companies are the bedrock of economic growth and job creation.</p>
<p>Speakers have shared their experiences in growing new businesses with Seed and Venture Capital as a national strategy for expanding the knowledge of seed and venture investing; promote the visibility of entrepreneurs to investors and of investors to entrepreneurs; create investment capital to fill a gap or grow a sector; and create investment capital to build a seed and venture capital industry. Entrepreneurial growth comes from a complex venture ecosystem that Palestine has to complete its own by establishing a venture capital fund.</p>
<p>The Speakers advised that the best venture capital programs recognize that the challenge of capital formation is not so much about money as it is about the business and social transformational impact on the knowledge - how the business community understands seed and venture capital, what steps are involved, what are the do&#8217;s and don&#8217;ts, tolerance for failure and what it looks and feels like to build a world-class company. Its value goes beyond a simple dollar figure. Venture capital spurs growth at the critical early stages of growing companies&#8217; development. Moreover, venture capitalists become involved as board members and management advisors, suggesting strategic partnerships, access to markets and helping to refine business strategies.</p>
<p>Developing a venture capital industry is a long term in perspective; nevertheless, the Speakers agreed that venture capital is critical to growing the new businesses that will drive the &#8220;new economy.&#8221; Speakers also agreed that supporting the venture capital industry would entail finding ways to nurture the culture of entrepreneurs, involve more of the Palestinian Diaspora and develop the capital that feeds them, and to provide for exit strategies on the capital market through merger and acquisitions.</p>
<p>Google has shared it corporate strategies in technologies related to communication platforms and content creation, geo-business and navigation and the telephony areas</p>
<p>Closing Session</p>
<p>Documented by Mr. Laith Kassis, CEO PITA and PICTI</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a8292da8-7a17-4b05-b481-24af56c3f704&amp;title=Expotech2009+Conference+Closing+Summary%E2%80%8F&amp;url=http%3A%2F%2Fclickontech.net%2F2009%2F11%2Fexpotech2009-conference-closing-summary%2F">ShareThis</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/em0O6led0A25byhFOS9I0vI_9Ys/0/da"><img src="http://feedads.g.doubleclick.net/~a/em0O6led0A25byhFOS9I0vI_9Ys/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/em0O6led0A25byhFOS9I0vI_9Ys/1/da"><img src="http://feedads.g.doubleclick.net/~a/em0O6led0A25byhFOS9I0vI_9Ys/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ClickOnTech/~4/foeu-2Q6ZCg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clickontech.net/2009/11/expotech2009-conference-closing-summary/feed/</wfw:commentRss>
		<feedburner:origLink>http://clickontech.net/2009/11/expotech2009-conference-closing-summary/</feedburner:origLink></item>
		<item>
		<title>Google launches Google.PS Officially to serve Internet Users in Palestine</title>
		<link>http://feedproxy.google.com/~r/ClickOnTech/~3/swZftFdynqA/</link>
		<comments>http://clickontech.net/2009/08/google-launches-googleps-officially-to-serve-internet-users-in-palestine/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 11:42:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[google Palestine]]></category>

		<category><![CDATA[google.co.uk]]></category>

		<category><![CDATA[google.ps]]></category>

		<category><![CDATA[Internet Users]]></category>

		<category><![CDATA[ISPs]]></category>

		<category><![CDATA[PNINA]]></category>

		<category><![CDATA[Yourname.PS]]></category>

		<guid isPermaLink="false">http://clickontech.net/?p=40</guid>
		<description><![CDATA[Over the years Google has been adding many of the world&#8217;s local domains like google.co.uk and google.jo in which case they provides localized search results.
Today Google added google.ps 
Yourname.PS is a where domains in occupied Palestine are registered like .com or .co.uk. According to Google Arabia blog post &#8220;the new domain will give Arabic-speaking users [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Google launches Google.PS Officially to serve Internet Users in Palestine", url: "http://clickontech.net/2009/08/google-launches-googleps-officially-to-serve-internet-users-in-palestine/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Over the years Google has been adding many of the world&#8217;s local domains like google.co.uk and google.jo in which case they provides localized search results.<br />
Today Google added <a href="http://google.ps">google.ps </a><br />
Yourname.PS is a where domains in occupied Palestine are registered like .com or .co.uk. According to Google Arabia blog post &#8220;the new domain will give Arabic-speaking users in the Palestinian Territories, who use Palestinian ISPs, access to Google in Arabic-and eventually, access to more locally-relevant content. With the launch of google.ps, we bring the total number of Google domains worldwide to more than 160. &#8221;</p>
<p><img src="http://www.startuparabia.com/wp-content/uploads/2009/08/googleps-screenshot.gif" alt="http://www.startuparabia.com/wp-content/uploads/2009/08/googleps-screenshot.gif" /><br />
Google confirmed that they will be directing &#8220;users based on their ISPs, so users of Palestinian ISPs will automatically be redirected to google.ps. However, any user can type in any Google domain they prefer to go.&#8221;<br />
<span id="more-40"></span><br />
Mr. Marwan Radwan, the General Director of the Palestinian National Internet Naming Authority (PNINA) which is the organization registered google.ps said that &#8220;Google.ps was one of the earliest international domains registered under the .ps ccTLD, according to PNINA registration database, the domain was registered in 19/5/2004, and only 4 months after PNINA officially opened the .ps for registration&#8221;. He also added that &#8220;By this registration and the inclusion of Palestine in the strategic plan for Google, this emphasizes the importance of the Palestinian Internet market and the global recognition of the Palestinian presence on the Internet&#8221;. He also expressed his hopes that the more than 1000 international companies that have already registered domain names under the .ps and have active sites pointing to their .ps domains will strengthen the international ties and trust on the Palestinian ICT sector and contribute effectively to alleviate the current obstacles and hardships imposed by the Israeli occupation.<br />
Google explained that &#8221; Up until today, Arabic-speaking users in the Palestinian Territories have had to visit foreign domains (e.g.google.eg in Egypt) in order to search in Arabic.  Starting today, Arabic-speaking users in the Palestinian Territories who use Palestinian ISPs will be given direct access to Google in Arabic via google.ps<br />
With AdWords, you can target your ads to countries or territories, or to specific regions and cities. The Adwords system uses several factors to determine whether to show your ad including the Google domain being used (.fr, .de, .kr, etc.), the actual search terms the user submits and when possible, we determine the user&#8217;s general physical location based upon their computer&#8217;s Internet Protocol (IP) address.&#8221;<br />
According to internet users in Palestine, Google.ps works fine in Gaza Strip and the Bank.</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a8292da8-7a17-4b05-b481-24af56c3f704&amp;title=Google+launches+Google.PS+Officially+to+serve+Internet+Users+in+Palestine&amp;url=http%3A%2F%2Fclickontech.net%2F2009%2F08%2Fgoogle-launches-googleps-officially-to-serve-internet-users-in-palestine%2F">ShareThis</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/FPT9YiFI7pUqwJ-yMhBqtV7ZlHY/0/da"><img src="http://feedads.g.doubleclick.net/~a/FPT9YiFI7pUqwJ-yMhBqtV7ZlHY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/FPT9YiFI7pUqwJ-yMhBqtV7ZlHY/1/da"><img src="http://feedads.g.doubleclick.net/~a/FPT9YiFI7pUqwJ-yMhBqtV7ZlHY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ClickOnTech/~4/swZftFdynqA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clickontech.net/2009/08/google-launches-googleps-officially-to-serve-internet-users-in-palestine/feed/</wfw:commentRss>
		<feedburner:origLink>http://clickontech.net/2009/08/google-launches-googleps-officially-to-serve-internet-users-in-palestine/</feedburner:origLink></item>
		<item>
		<title>The Simple Way to Own Your Domain Dot Ps</title>
		<link>http://feedproxy.google.com/~r/ClickOnTech/~3/LP29Ne4odxk/</link>
		<comments>http://clickontech.net/2009/05/the-simple-way-to-own-your-domain-dot-ps/#comments</comments>
		<pubDate>Sun, 17 May 2009 13:01:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Deals and Coupons]]></category>

		<category><![CDATA[Startup]]></category>

		<category><![CDATA[web-20]]></category>

		<category><![CDATA[.Ps]]></category>

		<category><![CDATA[.PS domain registration]]></category>

		<category><![CDATA[Palestine domain]]></category>

		<category><![CDATA[Palestinian Domain Name .PS]]></category>

		<category><![CDATA[Reserve Domain dot ps]]></category>

		<category><![CDATA[Sadaf Technology Development]]></category>

		<category><![CDATA[Your Domain Dot P]]></category>

		<category><![CDATA[YourDomainDotPs]]></category>

		<guid isPermaLink="false">http://clickontech.net/?p=39</guid>
		<description><![CDATA[Reserve Your .Ps Domain Now! Ya its not joke it&#8217;s Real .. Now you can register Dot PS domains online throw www.Yourdomain.ps by 3 Steps Only :

SEARCH
RESERVE
PAY

For a long time, Palestine did not have its own country-code Top-Level-Domain (ccTLD). However, and after three years of hard work with IANA, International Standards Organization (ISO) and the [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "The Simple Way to Own Your Domain Dot Ps", url: "http://clickontech.net/2009/05/the-simple-way-to-own-your-domain-dot-ps/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Reserve Your .Ps Domain Now! Ya its not joke it&#8217;s Real .. Now you can register Dot PS domains online throw <a href="http://www.yourdomain.ps" target="_blank"><img class="alignright" style="float: right;" src="http://www.yourdomain.ps/images/logo.png" alt="" width="200" height="119" />www.Yourdomain.ps</a> by 3 Steps Only :</p>
<ul>
<li>SEARCH</li>
<li>RESERVE</li>
<li>PAY</li>
</ul>
<p>For a long time, Palestine did not have its own country-code Top-Level-Domain (ccTLD). However, and after three years of hard work with IANA, International Standards Organization (ISO) and the UN Offices in New York, Palestine was able to obtain its own ccTLD, namely, &#8220;.PS&#8221;. This was done through the sincere and relentless efforts of many governmental institutions, individuals and Palestinian experts inside and outside Palestine who were involved in the issue. To realize the Palestinian presence in the information age.</p>
<p><a href="http://www.yourdomain.ps" target="_blank">YourDomainDotPs</a> is a new project of <a href="http://www.sadaf.ps" target="_blank">Sadaf Technology Development</a>, a Palestinian web development company based in Gaza.</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a8292da8-7a17-4b05-b481-24af56c3f704&amp;title=The+Simple+Way+to+Own+Your+Domain+Dot+Ps&amp;url=http%3A%2F%2Fclickontech.net%2F2009%2F05%2Fthe-simple-way-to-own-your-domain-dot-ps%2F">ShareThis</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/ho4aWrZ2pnmf-LBno_he-1KUxIE/0/da"><img src="http://feedads.g.doubleclick.net/~a/ho4aWrZ2pnmf-LBno_he-1KUxIE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ho4aWrZ2pnmf-LBno_he-1KUxIE/1/da"><img src="http://feedads.g.doubleclick.net/~a/ho4aWrZ2pnmf-LBno_he-1KUxIE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ClickOnTech/~4/LP29Ne4odxk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clickontech.net/2009/05/the-simple-way-to-own-your-domain-dot-ps/feed/</wfw:commentRss>
		<feedburner:origLink>http://clickontech.net/2009/05/the-simple-way-to-own-your-domain-dot-ps/</feedburner:origLink></item>
		<item>
		<title>Best of 158 Ajax Framework,JavaScript Libraries and Toolkit Tutorials</title>
		<link>http://feedproxy.google.com/~r/ClickOnTech/~3/CzgFMJPB-Eo/</link>
		<comments>http://clickontech.net/2009/05/best-of-158-ajax-frameworkjavascript-libraries-and-toolkit-tutorials/#comments</comments>
		<pubDate>Thu, 14 May 2009 11:00:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Gadgets]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[Tutorials]]></category>

		<category><![CDATA[web-20]]></category>

		<category><![CDATA[158]]></category>

		<category><![CDATA[ajax dynamiclist]]></category>

		<category><![CDATA[Ajax Framework]]></category>

		<category><![CDATA[AJAX LightBox]]></category>

		<category><![CDATA[ajax with asp.net]]></category>

		<category><![CDATA[ajax with ruby on rails]]></category>

		<category><![CDATA[Bajax]]></category>

		<category><![CDATA[Best]]></category>

		<category><![CDATA[Google AJAXSLT]]></category>

		<category><![CDATA[JavaScript Libraries]]></category>

		<category><![CDATA[jQuery]]></category>

		<category><![CDATA[Mootools]]></category>

		<category><![CDATA[qooxdoo]]></category>

		<category><![CDATA[Toolkit]]></category>

		<guid isPermaLink="false">http://clickontech.net/?p=38</guid>
		<description><![CDATA[Here you will find the best of best Ajax   Tutorials like,ajax dynamiclist,ajax lightbox,mootools,jquery,ajax with ruby on rails,ajax with asp.net.
AJAX Client-Server Communication   Tutorials

Alternate     Ajax Techniques, Part 1 - This tutorial tackles other Ajax techniques aside from XMLHttp     as the means to describe the client-server [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Best of 158 Ajax Framework,JavaScript Libraries and Toolkit Tutorials", url: "http://clickontech.net/2009/05/best-of-158-ajax-frameworkjavascript-libraries-and-toolkit-tutorials/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Here you will find the best of best Ajax   Tutorials like,ajax dynamiclist,ajax lightbox,mootools,jquery,ajax with ruby on rails,ajax with asp.net.</p>
<p>AJAX Client-Server Communication   Tutorials</p>
<ol type="1">
<li><a href="http://www.webreference.com/programming/ajax_tech/" target="_blank"><strong><span style="text-decoration: underline;">Alternate     Ajax Techniques, Part 1</span></strong></a><strong> - </strong>This tutorial tackles other Ajax techniques aside from XMLHttp     as the means to describe the client-server communication.</li>
<li><a href="http://www.maxkiesler.com/index.php/mhub/category/" target="_blank"><strong><span style="text-decoration: underline;">Dynamic     HTML and XML: The XMLHttpRequest Object</span></strong></a><strong> - </strong>This tutorial tackles the steps of retrieving and submitting XML data directly through XMLHttpRequest object in the background.</li>
<li><a href="http://www.webpasties.com/xmlHttpRequest/" target="_blank"><strong><span style="text-decoration: underline;">Guide     to Using XMLHttpRequest</span></strong></a><strong> - </strong>This tutorial provides the steps in using XMLHttpRequest with     php and nysql.</li>
<li><a href="http://www-128.ibm.com/developerworks/web/library/wa-ajaxintro2/?ca=dgr-lnxw07AJAX-Request" target="_blank"><strong><span style="text-decoration: underline;">Make     Asynchronous Requests with JavaScript and Ajax</span></strong></a><strong> - </strong> This tutorial tackles the most fundamental and the basic of all Ajax-related objects and programming approaches, the XMLHttpRequest object.</li>
<li><a href="http://aleembawany.com/weblog/webdev/000051_ajax_instant_tutorial.html" target="_blank"><strong><span style="text-decoration: underline;">Instant     Tutorial</span></strong></a><strong> - </strong>This tutorial shows how Ajax allows you to make a call to an http server get its content and load them into your existing page without having to refresh the whole page.</li>
<li><a href="http://www-128.ibm.com/developerworks/java/library/wa-ajaxintro3/index.html?ca=drs-" target="_blank"><strong><span style="text-decoration: underline;">Advanced     Requests and Response in AJAXR</span></strong></a><strong> - </strong>This tutorial will show you the different status codes and demonstrate how browsers handle each and showcase the lesser used HTTP requests that you can make with Ajax.<span id="more-38"></span></li>
</ol>
<p>AJAX Drag and Drop Tutorials</p>
<ol type="1">
<li><a href="http://tool-man.org/examples/sorting.html" target="_blank"><strong><span style="text-decoration: underline;">Drag     and Drop Sortable Lists with JavaScript and CSS</span></strong></a><strong> - </strong> This tutorial shows the ways to rearrange items in a list in Web applications.</li>
<li><a href="http://br.sys-con.com/read/172585.htm" target="_blank"><strong><span style="text-decoration: underline;">Building     a Drag &amp; Drop Shopping Cart with Ajax</span></strong></a><strong> - </strong>This tutorial shows how to create an interactive shopping experience allowing us to add items to the shopping basket by dragging and dropping them into an icon of a shopping cart.</li>
</ol>
<p>AJAX Form Tutorials</p>
<ol type="1">
<li><a href="http://www.dotvoid.com/view.php?id=56" target="_blank"><strong><span style="text-decoration: underline;">Accessible     Forms and Unobtrusive JavaScript</span></strong></a><strong> - </strong>This tutorial shows how to separate the backend logic from the     user interface logic when creating new PHP applications.</li>
<li><a href="http://cakebaker.wordpress.com/2006/01/18/submit-a-form-with-ajax/" target="_blank"><strong><span style="text-decoration: underline;">Submit     a Form with Ajax</span></strong></a><strong> - </strong>This tutorial deals with the new release of CakePHP (RC2) that     comes with a completely written AjaxHelper::form() function.</li>
</ol>
<p>AJAX File Uploader Tutorial</p>
<ol type="1">
<li><a href="http://today.java.net/pub/a/today/2006/02/09/file-uploads-with-ajax-and-jsf.html" target="_blank"><strong><span style="text-decoration: underline;">Better     File Uploads with AJAX and JavaServer Faces</span></strong></a><strong> - </strong>This tutorial takes a fresh approach and outlines the steps on how to implement an AJAX-powered component that will not only upload the file to the server, but also monitor the actual progress of a file upload request in real time.</li>
</ol>
<p>AJAX Framework and Toolkit Tutorials</p>
<ol type="1">
<li><a href="http://www.petefreitag.com/item/515.cfm" target="_blank"><strong><span style="text-decoration: underline;">AJAX     Tutorial with Prototype</span></strong></a><strong> - </strong>This tutorial outlines the steps in building a zip code verifier     as an example of how to use AJAX.</li>
<li><a href="http://www.sergiopereira.com/articles/prototype.js.html" target="_blank"><strong><span style="text-decoration: underline;">Developer     Notes for Prototype.js</span></strong></a><strong> - </strong>This tutorial tackles some important points in using Prototype.js.</li>
</ol>
<p>AJAX Getting Started Tutorial</p>
<ol type="1">
<li><a href="http://developer.mozilla.org/en/docs/AJAX:Getting_Started" target="_blank"><strong><span style="text-decoration: underline;">AJAX:Getting     Started</span></strong></a><strong> - </strong>This tutorial guides you through the basics of AJAX and gives     two simple hands-on examples to get you started.</li>
</ol>
<p>AJAX   Keyword Suggest Tutorial</p>
<ol type="1">
<li><a href="http://dotnetjunkies.com/WebLog/anoras/archive/2004/12/12/36161.aspx" target="_blank"><strong><span style="text-decoration: underline;">How     To Create Google Suggest Feature with ASP.NET 2.0</span></strong></a><strong> - </strong> This tutorial tackles the steps in creating the Google Suggest feature     in the website or blog.</li>
<li><a href="http://www.webreference.com/programming/javascript/ncz/index.html" target="_blank"><strong><span style="text-decoration: underline;">Creating     an Autosuggest Textbox with JavaScript, Part 1</span></strong></a><strong> - </strong> This tutorial outlines the steps in creating the autosuggest Textbox     using JavaScript.</li>
</ol>
<p>AJAX Live Search Tutorials</p>
<ol type="1">
<li><a href="http://orderedlist.com/articles/howto-animated-live-search/" target="_blank"><strong><span style="text-decoration: underline;">HOWTO:     Animated Live Search/Ordered List</span></strong></a><strong> - </strong>This tutorial covers important aspects of the animated live     search and ordered list.</li>
<li><a href="http://justaddwater.dk/2006/01/26/live-search-explained/" target="_blank"><strong><span style="text-decoration: underline;">Live     Search Explained</span></strong></a><strong> - </strong>This tutorial will tackle everything about Live Search, which     will gradually replace traditional search in web applications.</li>
</ol>
<p>AJAX Rounded Corners Tutorial</p>
<ol type="1">
<li><a href="http://encytemedia.com/blog/articles/2005/12/01/rico-rounded-corners-without-all-of-rico" target="_blank"><strong><span style="text-decoration: underline;">Rico     Rounded Corners without All of Rico</span></strong></a><strong> - </strong>This tutorial have made minimal changes to Rico&#8217;s rounded corner implementation resulting to its use without needing all of Rico.</li>
</ol>
<p>AJAX Sorting Tutorial</p>
<ol type="1">
<li><a href="http://www.kryogenix.org/code/browser/sorttable/" target="_blank"><strong><span style="text-decoration: underline;">Make     all Your Tables Sortable</span></strong></a><strong> - </strong>This tutorial provides a step-by-step guide at how to make all     your tables sortable.</li>
</ol>
<p>AJAX Tabbed Pages Tutorials</p>
<ol type="1">
<li><a href="http://www.maxkiesler.com/index.php/weblog/comments/make_an_ajax_website_in_less_than_10_minutes/" target="_blank"><strong><span style="text-decoration: underline;">Make     an AJAX Website in Less Than Ten Minutes</span></strong></a><strong> - </strong>This tutorial provide the steps in using AJAX apps and XMLHttpRequest and put up a site that loads all of its content asynchronously.</li>
<li><a href="http://www.xml.com/pub/a/2005/02/09/xml-http-request.html" target="_blank"><strong><span style="text-decoration: underline;">Very     Dynamic Web Interfaces</span></strong></a><strong> - </strong>This tutorial shows the use of JavaScript and XMLHttpRequest object to resolve the problem of a web application interface that results to server connection being severed once the page has been downloaded.</li>
<li><a href="http://david.goodlad.ca/articles/2005/11/10/beautiful-javascript-powered-pages" target="_blank"><strong><span style="text-decoration: underline;">Beautiful     JavaScript-Powered Pages</span></strong></a><strong> - </strong>This tutorial delves into the world of Javascript-powered interfaces.</li>
</ol>
<p>AJAX Bookmarklets Tutorial</p>
<ol type="1">
<li><a href="http://codinginparadise.org/weblog/2005/08/ajax-creating-huge-bookmarklets.html" target="_blank"><strong><span style="text-decoration: underline;">Creating     Huge Bookmarklets</span></strong></a><strong> - </strong>This tutorial shows how this special piece of JavaScript code can be dragged into a user&#8217;s link toolbar and later can be clicked on to implement a cross-site behavior.</li>
</ol>
<p>AJAX Chat Tutorials</p>
<ol type="1">
<li><a href="http://www.plasticshore.com/logfile/entry/legacy_483" target="_blank"><strong><span style="text-decoration: underline;">AJAX     Chat Sources Code for Download</span></strong></a><strong> - </strong>This provides the source for the Ajax Chat sources code for     download.</li>
<li><a href="http://socket7.net/lace/" target="_blank"><strong><span style="text-decoration: underline;">Lace     - Ajax Chat</span></strong></a><strong> - </strong>This tutorial tackles everything about Lace. This lightweight Ajaxian communications engine is suitable for shoutbox, chatroom or similar version.</li>
<li><a href="http://www.linuxuser.at/index.php?title=Most_Simple_Ajax_Chat_Ever" target="_blank"><strong><span style="text-decoration: underline;">Most     Simple Ajax Chat Ever</span></strong></a><strong> - </strong>This is a demo of the very easy to use Ajax Chat.</li>
</ol>
<p>AJAX Client-Server Communications   Tutorials</p>
<ol type="1">
<li><a href="http://www.javareference.com/jrexamples/viewexample.jsp?id=111" target="_blank"><strong><span style="text-decoration: underline;">Implementing     Simple AJAX Interaction in your Web Application</span></strong></a><strong> - </strong> This tutorial tackles the implementation of simple Ajax Interaction     in the Web application using XMLHttpRequest object.</li>
<li><a href="http://www.yourhtmlsource.com/javascript/ajax.html" target="_blank"><strong><span style="text-decoration: underline;">AJAX</span></strong></a><strong> - </strong> This is an introductory tutorial on AJAX, a technology that allows you to send these requests through small JavaScript calls.</li>
<li><a href="http://www.webmonkey.com/webmonkey/05/16/index4a.html" target="_blank"><strong><span style="text-decoration: underline;">All     Request, All The Time</span></strong></a><strong> - </strong>This tutorials builds a simple application that accepts input from the user, passes it to some PHP on the server that checksit against a database and returns the result to the browser.</li>
</ol>
<p>AJAX Drag &amp; Drop Tutorial</p>
<ol type="1">
<li><a href="http://www.symfony-project.com/tutorial/symfony_ajax.html" target="_blank"><strong><span style="text-decoration: underline;">Drag     &amp; Drop Tutorial (with video)</span></strong></a><strong> - </strong>This tutorial shows how AJAX allows to get closer to the cart Metaphor by enabling the drag-and-drop interactions and giving immediate visual feedback, without leaving the shop.</li>
</ol>
<p>AJAX Dynamically Content Loading   Tutorials</p>
<ol type="1">
<li><a href="http://www.dhtmlgoodies.com/index.html?whichScript=ajax_dynamicArticles" target="_blank"><strong><span style="text-decoration: underline;">Dynamically     Loaded Articles</span></strong></a><strong> - </strong>This tutorial features a basic example showing how to use AJAX to request the content of the article from an external file and show it in the main DIV.</li>
<li><a href="http://www.dhtmlgoodies.com/index.html?whichScript=ajax-dynamic-content" target="_blank"><strong><span style="text-decoration: underline;">AJAX     - Dynamic Content</span></strong></a><strong> - </strong>This tutorial shows you how this small generic script makes it easy for you to load content of external files into HTML elements on your page.</li>
</ol>
<p>AJAX Forms and Autocomplete Tutorials</p>
<ol type="1">
<li><a href="http://www.gregphoto.net/sortable/index.php" target="_blank"><strong><span style="text-decoration: underline;">Scriptaculous     Lists with PHP</span></strong></a><strong> - </strong>This tutorial tackles the drag &amp; drop ffects most notably the sortables which are much nicer than the standard listbox with up and down arrows that we see in most applications today.</li>
<li><a href="http://www.symfony-project.com/askeet/10" target="_blank"><strong><span style="text-decoration: underline;">Alter     Data with Ajax Forms</span></strong></a><strong> - </strong>This tutorial shows how a registered user can ask a new question     while another user answers and existing one.</li>
<li><a href="http://www.dhtmlgoodies.com/index.html?whichScript=ajax_client_lookup" target="_blank"><strong><span style="text-decoration: underline;">Dynamic     Client Lookup</span></strong></a> - This     tutorial shows how this script uses AJAX to autofill a form.</li>
</ol>
<p>AJAX Framework and Toolkit Tutorials</p>
<ol type="1">
<li><a href="http://blogs.pathf.com/agileajax/2006/04/new_echo2_tutor.html" target="_blank"><strong><span style="text-decoration: underline;">New     Echo2 Tutorial Series</span></strong></a><strong> - </strong>This is part 1 of a multi-part tutorial series on Ajax with     Echo2 and Eclipse.</li>
<li><a href="http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=14" target="_blank"><strong><span style="text-decoration: underline;">AJAX     Design Patterns</span></strong></a><strong> - </strong>This tutorial shows how to design and build a complete site.</li>
<li><a href="http://today.java.net/pub/a/today/2006/04/27/building-ajax-with-dojo-and-json.html" target="_blank"><strong><span style="text-decoration: underline;">Using     Dojo and JSON to Build Ajax Applications</span></strong></a><strong> - </strong>This tutorial will show how to build Ajax-enabled applications     using Dojo and JSON.</li>
</ol>
<p>AJAX General Tutorials</p>
<ol type="1">
<li><a href="http://www.developer.com/lang/jscript/article.php/3592016" target="_blank"><strong><span style="text-decoration: underline;">AJAX     From Scratch: Implementing Mutual Exclusion in JavaScript</span></strong></a><strong> - </strong> This tutorial on AJAX From Scratch series describes the fundamental techniques needed to develop AJAX Rich Internet Applications in JavaScript starting from scratch.</li>
<li><a href="http://codinginparadise.org/weblog/2005/08/ajax-tutorial-saving-session-across.html" target="_blank"><strong><span style="text-decoration: underline;">Saving     Session Across Page Loads Without Cookies: On the Client Side</span></strong></a><strong> -</strong>This is a tutorial that tackles     the saving state across page loads on the client side.</li>
<li><a href="http://coldfusion.sys-con.com/read/138966.htm" target="_blank"><strong><span style="text-decoration: underline;">AjaxWorld     Special: What is AJAX?</span></strong></a><strong> - </strong>This tutorial presents step by step technique in learning about     AJAX and ColdFusion.</li>
<li><a href="http://www.ajaxtutorial.net/index.php/category/ajax-basics/" target="_blank"><strong><span style="text-decoration: underline;">Simple     AJAX Functions - Snippets</span></strong></a><strong> - </strong>This tutorial is a collection of the very common JavaScript functions for Ajax. It can be used for quick reference and does not contain any fancy stuff.</li>
<li><a href="http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=12" target="_blank"><strong><span style="text-decoration: underline;">AJAX     Using ASP.NET 1.1</span></strong></a><strong> - </strong>This tutorial tackles the basics of AJAX and goes into some     sample code to try its applications.</li>
<li><a href="http://vivekjishtu.blogspot.com/2006/04/speed-up-your-ajax-based-webapps.html" target="_blank"><strong><span style="text-decoration: underline;">Speed     Up Your AJAX-Based Webapps</span></strong></a><strong> - </strong>This tutorial provides the technique on how to set the expiryof the JavaScript to years and not days. Once the JavaScript file is downloaded, it is never downloaded again.</li>
<li><a href="http://www-128.ibm.com/developerworks/edu/j-dw-java-kickstart2-i.html?ca=drs-" target="_blank"><strong><span style="text-decoration: underline;">Kick-Start     Your Java Apps, Part 2</span></strong></a><strong> - </strong>This tutorial provides the technique in the development of a small human-resource application by using conventional JavaServer Pages - based technology and by migrating it to a highly interactive solution using AJAX.</li>
<li><a href="http://www.thinkvitamin.com/features/ajax/create-your-own-ajax-effects" target="_blank"><strong><span style="text-decoration: underline;">Create     Your Own AJAX Effects</span></strong></a><strong> - </strong>This tutorial teaches us how to start building our own Ajax-driven     effects today.</li>
</ol>
<p>AJAX Getting Started Tutorials</p>
<ol type="1">
<li><a href="http://www.webmonkey.com/06/15/index3a.html" target="_blank"><strong><span style="text-decoration: underline;">Nitty     Gritty Ajax</span></strong></a><strong> - </strong>This tutorial is all about what AJAX can do. It will also show how to use JavaScript class to simplify the first steps towards the interactivity.</li>
<li><a href="http://www.alistapart.com/articles/gettingstartedwithajax" target="_blank"><strong><span style="text-decoration: underline;">A     List Apart-Articles: Getting Started</span></strong></a><strong> - </strong>This is a comprehensive tutorial that tackles the fundamentals     for starting on using AJAX.</li>
<li><a href="http://www-128.ibm.com/developerworks/web/library/wa-ajaxintro1.html?ca=dgr-mk-MasterAJAX1" target="_blank"><strong><span style="text-decoration: underline;">Introduction     to AJAX</span></strong></a><strong> - </strong>This tutorial tackles the basics but also goes beyond to cover     other different technologies.</li>
<li><a href="http://www.ajaxtoolbox.com/request/examples.php" target="_blank"><strong><span style="text-decoration: underline;">AJAX     Toolbox/XMLHttpRequest AjaxRequest Library Examples</span></strong></a><strong> - </strong> This tutorial has a rich collection of great examples.</li>
<li><a href="http://blog.coderlab.us/rasmus-30-second-ajax-tutorial/" target="_blank"><strong><span style="text-decoration: underline;">Rasmus&#8217;     30-Second AJAX Tutorial</span></strong></a><strong> - </strong>This is a tutorial on AJAX made easy.</li>
<li><a href="http://mikeoncode.blogspot.com/2006/02/ajax-project-to-get-you-going.html" target="_blank"><strong><span style="text-decoration: underline;">An     AJAX Hello World Project for Starters</span></strong></a><strong> - </strong>This tutorial provides you with the essential to build a thorough     understanding of the mechanics.</li>
<li><a href="http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=10" target="_blank"><strong><span style="text-decoration: underline;">AJAX     Beginner&#8217;s Tutorial</span></strong></a><strong> - </strong>This tutorial tackles the basic principles of remote scripting using AJAX, and discusses a combination of javascript and XML to allow web pages to be updated with new information from the server without having to do a page refresh.AJAX Sorting Tutorial</li>
<li><a href="http://www.kryogenix.org/code/browser/sorttable/" target="_blank"><strong><span style="text-decoration: underline;">Sortable:     Make All Your Tables Sortable</span></strong></a><strong> - </strong>This tutorial guides you through the steps in making all your     tables sortable.</li>
</ol>
<p>Useful AJAX Tutorials</p>
<ol type="1">
<li><a href="http://nettuts.com/javascript-ajax/build-an-ajax-powered-shopping-cart/" target="_blank"><strong><span style="text-decoration: underline;">Creation     of an AJAX-Powered Shopping Cart</span></strong></a><strong> - </strong>NETTUTS has created a tutorial that shows the way to built an Ajax-powered shopping cart using, jQuery, PHP and some plug-ins.</li>
<li><a href="http://davidwalsh.name/ajax-username-availability-checker-mootools-12" target="_blank"><strong><span style="text-decoration: underline;">AJAX     Username Availability Checker Through MooTools 1.2</span></strong></a><strong> - </strong> This tutorial shows how to use AJAX with MooTools to let user check     the availability of the username being submitted.</li>
<li><a href="http://phpmash.com/2008/10/06/introduction-to-ajax-calls-using-jquery-and-php/" target="_blank"><strong><span style="text-decoration: underline;">Introduction     to AJAX Calls Using jQuery and PHP</span></strong></a><strong> - </strong>This is a tutorial is a good starting point for those who are     not familiar with the use of AJAX calls with jQuery and PHP.</li>
<li><a href="http://nettuts.com/javascript-ajax/creating-a-dynamic-poll-with-jquery-and-php/" target="_blank"><strong><span style="text-decoration: underline;">Creating     a Dynamic Poll with PHP and jQuery</span></strong></a><strong> - </strong>This tutorial provides the step to create a poll with XHTML, PHP and jQuery. Ajax effects are used to eliminate the need for a page refresh when the poll is submitted.</li>
<li><a href="http://www.javascriptkit.com/dhtmltutors/ajaxticker/index.shtml" target="_blank"><strong><span style="text-decoration: underline;">RSS     AJAX JavaScript Ticker</span></strong></a><strong> - </strong>This tutorial shows the way to use JavaScript ticker for displaying     news headlines or similar contents to visitors.</li>
<li><a href="http://peter.upfold.org.uk/blog/2006/09/27/building-your-first-ajax-application-with-php/" target="_blank"><strong><span style="text-decoration: underline;">Building     Your First AJAX Application with PHP</span></strong></a><strong> - </strong>This is a tutorial for beginners that show the ways in getting     started with PHP.</li>
<li><a href="http://peter.upfold.org.uk/blog/2007/02/18/taking-ajax-further-with-php/" target="_blank"><strong><span style="text-decoration: underline;">Taking     AJAX Further with PHP</span></strong></a><strong> - </strong>This is a follow-up tutorial to the preceding Ajax Tutorial.</li>
<li><a href="http://www.codegobbler.com/one-form-many-uses-server-side-jquery-jaxer" target="_blank"><strong><span style="text-decoration: underline;">One     Form-Many Uses - Server Side jQuery with Jaxer</span></strong></a><strong> - </strong> This tutorial shows how AJAX can help to get more use out of one form     rather than create multiple forms.</li>
<li><a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=109" target="_blank"><strong><span style="text-decoration: underline;">How     to Call Server-Side Function from Client-Side Using PageMethods in ASP.NET     AJAX</span></strong></a><strong> - </strong>This tutorial shows a workaround for calling server-side function     from the client side.</li>
<li><a href="http://www.infoq.com/articles/jsf-ajax-seam-portlets-pt-1;jsessionid=5D98C3CBDCB1F7DAC59B07E6B6FBFB19" target="_blank"><strong><span style="text-decoration: underline;">Developing     Portlets Using AJAX, JSF and Seam, Part 1, 2, and 3</span></strong></a><strong> - </strong> This is a 3-part tutorial that shows the in-depth way in creating portals.</li>
<li><a href="http://trevordavis.net/blog/tutorial/ajax-forms-with-jquery/" target="_blank"><strong><span style="text-decoration: underline;">AJAX     Forms with jQuery</span></strong></a><strong> - </strong>This tutorial shows the way to create a form that will check an email address for validity, makes sure that there are no blank fields and shows an error report if something is not right of incomplete.</li>
<li><a href="http://encosia.com/2008/08/20/easily-build-powerful-client-side-ajax-paging-using-jquery/" target="_blank"><strong><span style="text-decoration: underline;">Easily     Build Powerful Client-Side AJAX Paging Using jQuery</span></strong></a><strong> - </strong> This is an important tutorial in improving pagination with AJAX.</li>
<li><a href="http://encosia.com/2008/06/26/use-jquery-and-aspnet-ajax-to-build-a-client-side-repeater/" target="_blank"><strong><span style="text-decoration: underline;">Use     jQuery and ASP.NET AJAX to Build a Client-Side Repeater</span></strong></a><strong> - </strong> This tutorial outlines how to improve user-experience and reduce server     load by using client-side repeater.</li>
<li><a href="http://woork.blogspot.com/2008/03/php-components-autosuggest.html" target="_blank"><strong><span style="text-decoration: underline;">PHP     Components: Autosuggest</span></strong></a><strong> - </strong>This tutorial shows how you can add an autosuggest feature to     search box using PHP and AJAX.</li>
<li><a href="http://nodstrum.com/2007/09/19/autocompleter/" target="_blank"><strong><span style="text-decoration: underline;">AutoCompleter     Tutorial</span></strong></a><strong> - </strong>This tutorial also produces the same result as the preceding     tutorial.</li>
<li><a href="http://weblogs.java.net/blog/caroljmcdonald/archive/2008/07/a_dynamic_ajax.html" target="_blank"><strong><span style="text-decoration: underline;">Dynamic     AJAX Table Example Using Dojo and RESTful Web Services on Glassfish</span></strong></a><strong> - </strong> This tutorial provides the entire process of creating a dynamic table     as you would see on a travel-booking website.</li>
<li><a href="http://remysharp.com/2007/01/20/auto-populating-select-boxes-using-jquery-ajax/" target="_blank"><strong><span style="text-decoration: underline;">Auto-Populating     Select Boxes Using jQuery and AJAX</span></strong></a><strong> - </strong>This tutorials shows how users will select a top-level category in a select box that will trigger the sub-category box to auto-populate.</li>
<li><a href="http://jqueryfordesigners.com/using-ajax-to-validate-forms/" target="_blank"><strong><span style="text-decoration: underline;">Using     AJAX to Validate Forms</span></strong></a><strong> - </strong>This tutorial shows how to use PHP and jQuery with some AJAX     to create a form that validates data that are entered.</li>
<li><a href="http://www.sitepoint.com/article/ajax-jquery/" target="_blank"><strong><span style="text-decoration: underline;">Easy     AJAX with jQuery</span></strong></a><strong> - </strong>This tutorial outlines some basic information on jQuery and     AJAX which will help you get started.</li>
<li><a href="http://15daysofjquery.com/quick-and-dirty-ajax/14/" target="_blank"><strong><span style="text-decoration: underline;">Quick     and Dirty AJAX</span></strong></a><strong> - </strong>This is a short video-tutorial that shows some of the ways to     improve the functionality of a Website with AJAX and jQuery.</li>
<li><a href="http://www.webresourcesdepot.com/load-content-while-scrolling-with-jquery/" target="_blank"><strong><span style="text-decoration: underline;">Load     Content While Scrolling with jQuery</span></strong></a><strong> - </strong>This tutorial shows how to create a scrolling effect which is     similar to DZone&#8217;s.</li>
<li><a href="http://blog.xebia.com/2008/06/04/wicket-updating-listviews-using-an-ajaxlink/" target="_blank"><strong><span style="text-decoration: underline;">Wicket     - Updating ListViews Using an AjaxLink</span></strong></a><strong> - </strong>This tutorial shows how to create a table that will update without     a full-page refresh when a link is clicked.</li>
<li><a href="http://davidwalsh.name/ajax-evil-spyjax" target="_blank"><strong><span style="text-decoration: underline;">AJAX     For Evil: Spyjax</span></strong></a><strong> - </strong>This tutorial provide a view of the dark side of Ajax- viewing     browsing habits.</li>
<li><a href="http://ajax.phpmagazine.net/2006/04/howto_integrate_google_calenda.html" target="_blank"><strong><span style="text-decoration: underline;">How     To Integrate Google Calendar in Website Using AJAX</span></strong></a><strong> - </strong> This tutorials shows how to integrate a Google Calendar which have great     use in a number of Websites.</li>
<li><a href="http://15daysofjquery.com/edit-in-place-with-ajax-using-jquery-javascript-library/15/" target="_blank"><strong><span style="text-decoration: underline;">Edit     in Place with AJAX Using jQuery JavaScript Library</span></strong></a><strong> - </strong> This tutorial shows the steps to allow visitors to edit HTML of a page     they are visiting.</li>
<li><a href="http://www.progressive-coding.com/tutorial.php?id=6" target="_blank"><strong><span style="text-decoration: underline;">Creating     an AJAX Rating Widget</span></strong></a><strong> - </strong>This tutorial shows how to create a rating widget that allows     visitors to rate an item with stars or some other measurement.</li>
<li><a href="http://www.sitepoint.com/article/use-ajax-php-build-mailing-list/" target="_blank"><strong><span style="text-decoration: underline;">Use     AJAX and PHP to Build Your Mailing List</span></strong></a><strong> - </strong>This tutorial shows the steps to allow visitors to subscribe     to a mailing list without the page refresh.</li>
<li><a href="http://woork.blogspot.com/2008/03/nice-ajax-effect-for-message-box-using.html" target="_blank"><strong><span style="text-decoration: underline;">Nice     AJAX Effects for Message Box Using MooTools</span></strong></a><strong> - </strong>This tutorial shows how to use Ajax effects to give visitors     a message based on some action.</li>
<li><a href="http://juicystudio.com/article/making-ajax-work-with-screen-readers.php" target="_blank"><strong><span style="text-decoration: underline;">Making     AJAX Work with Screen Readers</span></strong></a><strong> - </strong>This tutorial shows how AJAX effects can affect users of screen     readers.</li>
<li><a href="http://blog.paranoidferret.com/index.php/2008/05/14/javascript-tutorial-continuous-pagination/" target="_blank"><strong><span style="text-decoration: underline;">Continuous     Pagination</span></strong></a><strong> - </strong>This is another tutorial on pagination which shows continuous pagination where users keeps scrolling down rather than going to another page.</li>
<li><a href="http://css.dzone.com/news/ajax-and-simple-element-select" target="_blank"><strong><span style="text-decoration: underline;">Making     Element Selection and AJAX simple with DOMAssistant</span></strong></a><strong> - </strong> This tutorial helps you get started with the DOMAssistant JavaScript     library.</li>
<li><a href="http://roshanbh.com.np/2008/01/slider-using-php-ajax-and-javascript.html" target="_blank"><strong><span style="text-decoration: underline;">Slider     Using PHP, JavaScript and AJAX</span></strong></a><strong> - </strong>This tutorial shows how to create a nice slider using AJAX,     JavaScript and PHP.</li>
<li><a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=149" target="_blank"><strong><span style="text-decoration: underline;">ASP.NET     AJAX Calendar Extender</span></strong></a><strong> - </strong>This tutorial show seven different tricks and tips in working     with the Calendar extender.</li>
<li><a href="http://www.codeproject.com/KB/ajax/LoginSignupScreen.aspx" target="_blank"><strong><span style="text-decoration: underline;">Log-In/Sign-Up     Screen Using AJAX modal Pop-Up Extender</span></strong></a><strong> - </strong>This tutorial shows how to create a sign-in and log-in forms.</li>
<li><a href="http://css.dzone.com/articles/dealing-large-data-ajax" target="_blank"><strong><span style="text-decoration: underline;">Dealing     with Large Data in AJAX</span></strong></a><strong> - </strong>This tutorial shows how to get the AJAX application to meet     the data requirements.</li>
<li><a href="http://aspnet.4guysfromrolla.com/articles/022008-1.aspx" target="_blank"><strong><span style="text-decoration: underline;">Creating     an AJAX-Enabled Calendar Control</span></strong></a><strong> - </strong>This is another tutorial that focuses on enhancing calendar     using AJAX effects.</li>
<li><a href="http://seejoelprogram.wordpress.com/2008/02/05/javascript-error-publishing-using-aspnet-ajax/" target="_blank"><strong><span style="text-decoration: underline;">JavaScript     Error Publishing using ASP.NET AJAX</span></strong></a><strong> - </strong>This tutorial shows the steps in using AJAX to display errors     in codes.</li>
</ol>
<p>AJAX Framework and JavaScript Libraries   List(124+)</p>
<ol type="1">
<li><a href="http://qooxdoo.org/" target="_blank"><strong><span style="text-decoration: underline;">qooxdoo</span></strong></a><strong> - </strong> This is an innovative Ajax application framework that includes a platform-independent tool chain, a state-of-the-art GUI toolkit and an advanced client-server communication layer.</li>
<li><a href="http://www.technicalpursuit.com/ajax.htm" target="_blank"><strong><span style="text-decoration: underline;">TIBET</span></strong></a><strong> - </strong> This is the oldest Ajax project and the Clint/SOA using AJAX, JSON and the virtual machine you call a Web browser as the driving force behind it.</li>
<li><a href="http://weblogs.macromedia.com/flashjavascript/" target="_blank"><strong><span style="text-decoration: underline;">Flash/JavaScript     Integration Kit</span></strong></a><strong> - </strong>This toolkit provides developers to get the best of the Flash and the HTML worlds by enabling JavaScript to invoke ActionScript functions, and vice versa.</li>
<li><a href="http://code.google.com/p/ajaxslt/" target="_blank"><strong><span style="text-decoration: underline;">Google     AJAXSLT</span></strong></a><strong> - </strong>This is an implementation of XSL-T in JavaScript which is intended     for use in fat Web pages.</li>
<li><a href="http://www.whitefrost.com/servlet/connector?file=reference/2003/06/17/libXmlRequest.html" target="_blank"><strong><span style="text-decoration: underline;">libXmlRequest</span></strong></a><strong> - </strong> This is a very simple wrapper around XHR. This library contains two public request functions, getXml and postXml, that can be used to send synchronous and asynchronous XML Http requests from IE and Mozilla.</li>
<li><a href="http://www.ashleyit.com/rs/rslite/" target="_blank"><strong><span style="text-decoration: underline;">RSlite</span></strong></a><strong> - </strong> It is an extremely lightweight implementation of remote scripting which     uses cookies.</li>
<li><a href="http://www.twilightuniverse.com/projects/sack/" target="_blank"><strong><span style="text-decoration: underline;">SACK</span></strong></a><strong> - </strong> it is a simple set of codes that allow you to put AJAX into your webpages with none of the trouble or overhead of other packages.</li>
<li><a href="http://dev.abiss.gr/sarissa/" target="_blank"><strong><span style="text-decoration: underline;">Sarissa</span></strong></a><strong> - </strong> It is an ECMAScript<strong> </strong>library acting as a cross-browser wrapper     for native XML APIs.</li>
<li><a href="http://swik.net/XHConn" target="_blank"><strong><span style="text-decoration: underline;">XHConn</span></strong></a><strong> - </strong> It is a small JavaScript library that displays a data object with a     single method.</li>
<li><a href="http://cpaint.sourceforge.net/" target="_blank"><strong><span style="text-decoration: underline;">CPAINT</span></strong></a><strong> - </strong> It is a multi-language toolkit that helps developers in designing and implementing AJAX web applications with flexibility and ease.</li>
<li><a href="http://www.ibm.com/developerworks/java/library/j-ajax3/" target="_blank"><strong><span style="text-decoration: underline;">DWR,     Direct Web Remoting</span></strong></a><strong> - </strong>It is an engine that exposes methods of server-side Java objects     to JavaScript code.</li>
<li><a href="https://swato.dev.java.net/doc/html/" target="_blank"><strong><span style="text-decoration: underline;">Swato</span></strong></a><strong> - </strong> This is an open-source framework that helps you to develop webapps easier.</li>
<li><a href="http://java.sun.com/reference/blueprints/" target="_blank"><strong><span style="text-decoration: underline;">Java     BluePrints</span></strong></a><strong> - </strong>This is Sun Microsystems&#8217; best practices for Enterprise Java     development.</li>
<li><a href="http://rubyonrails.org/" target="_blank"><strong><span style="text-decoration: underline;">Ruby     on Rails</span></strong></a><strong> - </strong>It is a full-stack framework used for developing database-backed web applications according to the Model-View-Control pattern.</li>
<li><a href="http://www.aflax.org/" target="_blank"><strong><span style="text-decoration: underline;">.AFLAX</span></strong></a><strong> - </strong> It is a JavaScript library for Macromedia&#8217;s Flash Platform.</li>
<li><a href="http://code.google.com/p/ajaxextended/" target="_blank"><strong><span style="text-decoration: underline;">AJAXExtended</span></strong></a><strong> - </strong> It is a JavaScript library that improves the standard XMLHttpRequest features. This is considered as the most important enhancement.</li>
<li><a href="http://www.ajaxpro.info/" target="_blank"><strong><span style="text-decoration: underline;">AJAX.NET     Professional</span></strong></a><strong> - </strong>It is one of the first AJAX frameworks available for Microsoft <a href="http://asp.net/" target="_blank">ASP.NET</a> and works with .NET 1.1 and 2.0.</li>
<li><a href="http://ajaxtoolbox.com./request/" target="_blank"><strong><span style="text-decoration: underline;">AjaxRequest     Library</span></strong></a><strong> - </strong>It is a layer over the XMLHttpRequest functionality which makes the communication between JavaScript and the server easier for web developers.</li>
<li><a href="http://microformats.org/wiki/rest/ahah" target="_blank"><strong><span style="text-decoration: underline;">AHAH:     Asynchronous HTML and HTTP</span></strong></a><strong> - </strong>It is a simple technique used in dynamically updating web pages     using JavaScript.</li>
<li><a href="https://developer.berlios.de/projects/bajax/" target="_blank"><strong><span style="text-decoration: underline;">Bajax</span></strong></a><strong> - </strong> It is a very small and simple JavaScript library to use Ajax on your     pages which is independent of programming language.</li>
<li><a href="http://snippets.dzone.com/" target="_blank"><strong><span style="text-decoration: underline;">Code     Snippets</span></strong></a><strong> - </strong>It is a public source code repository which enables you to easily build up your personal collection of code snippets, categorize those using tags and share them with the world.</li>
<li><a href="http://www.cross-browser.com/" target="_blank"><strong><span style="text-decoration: underline;">Cross-Browser.com</span></strong></a><strong> - </strong> This site contains X- a cross-browser DHTML JavaScript library, and     many demos, applications and articles.</li>
<li><a href="http://www.walterzorn.com/dragdrop/dragdrop_e.htm" target="_blank"><strong><span style="text-decoration: underline;">DHTML     API, Drag and Drop for Images and Layers</span></strong></a><strong> - </strong>It is a cross-browser JavaScript DHTML library that adds Drag and Drop functionality and extended DHTML capabilities to layers and to any desired images, even for those that are integrated into the text.</li>
<li><a href="http://www.dhtmlgoodies.com/" target="_blank"><strong><span style="text-decoration: underline;">DHTMLgoodies.com</span></strong></a><strong> - </strong> It is a library of DHTML and AJAX scripts.</li>
<li><a href="http://dhtmlkitchen.com/" target="_blank"><strong><span style="text-decoration: underline;">DHTML     Kitchen</span></strong></a><strong> - </strong>It is the resource for ready-made or custom-built DHTML scripts     and it also specializes in front-end Java solutions and JSP.</li>
<li><a href="http://www.dynamicdrive.com/" target="_blank"><strong><span style="text-decoration: underline;">Dynamic     Drive</span></strong></a><strong> - </strong>This is a DHTML and JavaScript code library.</li>
<li><a href="http://dynapi.sourceforge.net/releases/dynapi-3.0.0-beta2/docs/index.html" target="_blank"><strong><span style="text-decoration: underline;">DynAPI     3</span></strong></a><strong> - </strong>It is an open source project by Dan Steinman which was created     to make cross-browser Dynamic HTML possible.</li>
<li><a href="http://extjs.com/" target="_blank"><strong><span style="text-decoration: underline;">Ext     JS</span></strong></a><strong> - </strong>it is an open source JavaScript library used for building richly interactive web applications using techniques that include DHTML, AJAX and DOM scripting.</li>
<li><a href="http://www.imnmotion.com/projects/engine/" target="_blank"><strong><span style="text-decoration: underline;">Engine     for Web Applications</span></strong></a><strong> - </strong>It is an application network for client-side development and     Web applications.</li>
<li><a href="http://kurafire.net/projects/face" target="_blank"><strong><span style="text-decoration: underline;">FACE</span></strong></a><strong> - </strong> It provides a great way to bring life and interactivity to websites without having to use Flash. It is completely accessible with easy plug-and-play implementation.</li>
<li><a href="http://www.devpro.it/JSL/" target="_blank"><strong><span style="text-decoration: underline;">JSL,     JavaScript Standard Library</span></strong></a><strong> - </strong>It is a single and small file with some JavaScript 1.6 standard     methods of functions that are not present on some browsers.</li>
<li><a href="http://www.javascripttoolbox.com/" target="_blank"><strong><span style="text-decoration: underline;">JavaScript     ToolBox</span></strong></a><strong> - </strong>This site was created to be a repository of code and reusable libraries which address common needs that many web developers encounter.</li>
<li><a href="http://www.openjsan.org/" target="_blank"><strong><span style="text-decoration: underline;">JSAN,     JavaScript Archive Network</span></strong></a><strong> - </strong>It is a comprehensive resource for open-source JavaScript libraries     and software.</li>
<li><a href="http://www.weltenkonstrukteur.de/?site=works&amp;prd=jsfbgl" target="_blank"><strong><span style="text-decoration: underline;">JSFBGL,     Javascript Framebuffer Graphics Library</span></strong></a><strong> - </strong>It is considered as a fun project in producing graphics with     javascript.</li>
<li><a href="http://www.zimbra.com/community/kabuki_ajax_toolkit_download.html" target="_blank"><strong><span style="text-decoration: underline;">Kabuki     AJAX Toolkit</span></strong></a><strong> - </strong>It is a client developer library which is similar in style to     traditional object-oriented widget libraries.</li>
<li><a href="http://www.linb.net/" target="_blank"><strong><span style="text-decoration: underline;">LINB,     Lazy INternet and Browser</span></strong></a><strong> - </strong>It is designed to allow developers coding in a more targetable,     clear and efficient way.</li>
<li><a href="http://www.mad4milk.net/entry/moo.ajax" target="_blank"><strong><span style="text-decoration: underline;">moo.ajax</span></strong></a><strong> - </strong> It is a simple Ajax class to be used with prototype.lite from moo.fx.</li>
<li><a href="http://moofx.mad4milk.net/" target="_blank"><strong><span style="text-decoration: underline;">moo.fx</span></strong></a><strong> - </strong> It is a superlightweight, super-small javascript effects library, written     with prototype.js.48.moo.ajax.</li>
<li><a href="http://www.bosrup.com/web/overlib/" target="_blank"><strong><span style="text-decoration: underline;">overLIB</span></strong></a><strong> - </strong> It is a JavaScript library created to enhance websites with small popup information boxes to help visitors around your website.</li>
<li><a href="http://www.macridesweb.com/oltest/" target="_blank"><strong><span style="text-decoration: underline;">overlibmws     DHTML Popup Library</span></strong></a><strong> - </strong>It is a Download and Test directory for the overlibmws Popup     Library.</li>
<li><a href="http://labs.adobe.com/technologies/spry/" target="_blank"><strong><span style="text-decoration: underline;">Spry     Framework for Ajax</span></strong></a><strong> - </strong>It is a JavaScript library for web designers that provide functionality which allows them to build pages that provide a richer experience for their users.</li>
<li><a href="http://sourceforge.net/projects/solvent/" target="_blank"><strong><span style="text-decoration: underline;">The     Solvent</span></strong></a><strong> - </strong>It is a cross-browser Ajax application toolkit written in JavaScript.</li>
<li><a href="http://sourceforge.net/projects/thyapi/" target="_blank"><strong><span style="text-decoration: underline;">ThyApi</span></strong></a><strong> - </strong> It is an API that allow the development of better user interfaces for     web applications using javascript and Ajax.</li>
<li><a href="http://developer.yahoo.com/yui/" target="_blank"><strong><span style="text-decoration: underline;">Yahoo!     User Interface Library</span></strong></a><strong> - </strong>It is a set of utilities and controls, written in JavaScript for building richly interactive web applications using techniques that include DHTML, DOM Scripting and AJAX</li>
<li><a href="http://www.zapatec.com/website/main/products/suite/" target="_blank"><strong><span style="text-decoration: underline;">Zapatec     Ajax Suite</span></strong></a><strong> - </strong>It is used to jumpstart the Ajax deployment. It includes six     widgets, three modules and a library.</li>
<li><a href="http://zephyr-php.sourceforge.net/" target="_blank"><strong><span style="text-decoration: underline;">Zephyr</span></strong></a><strong> - </strong> it is an Ajax-based framework for php5 developers, where you can easily develop business applications using this robust framework.</li>
<li><a href="http://www.backbase.com/" target="_blank"><strong><span style="text-decoration: underline;">Backbase</span></strong></a><strong> - </strong> It is an enterprise Ajax framework</li>
<li><a href="http://clean-ajax.sourceforge.net/" target="_blank"><strong><span style="text-decoration: underline;">Clean     AJAX</span></strong></a><strong> - </strong>It is an open-source engine for AJAX that provides a high level     of interface to work with the AJAX technology</li>
<li><a href="http://www.webtoolkit.eu/wt/" target="_blank"><strong><span style="text-decoration: underline;">Wt</span></strong></a><strong> - </strong> It is web toolkit that allows programmers to write code in C++, generating     content-rich AJAX GUI.</li>
<li><a href="http://code.google.com/webtoolkit/" target="_blank"><strong><span style="text-decoration: underline;">Google     Web Toolkit</span></strong></a><strong> - </strong>it is an open-source Java software development framework that     allows web developers to create Ajax applications in Java.</li>
<li><a href="http://www.thinwire.com/" target="_blank"><strong><span style="text-decoration: underline;">ThinWire</span></strong></a><strong> - </strong> It is an open-source java based web application framework that utilizes Ajax techniques to give Web applications the lookand feel of traditional GUI applications.</li>
<li><a href="http://ajaxian.com/archives/tigermouse-phpajax-framework" target="_blank"><strong><span style="text-decoration: underline;">Tigermouse</span></strong></a><strong> - </strong> It is a modern Ajax-driven MVC framework for web applications development.</li>
<li><a href="http://ajaxanywhere.sourceforge.net/" target="_blank"><strong><span style="text-decoration: underline;">AjaxAnywhere</span></strong></a><strong> - </strong> It is a simple way to enhance an existing JSP/Struts/JSF/Spring application     with AJAX.</li>
<li><a href="http://javawebparts.sourceforge.net/" target="_blank"><strong><span style="text-decoration: underline;">AjaxTags     Components of Java Web Parts</span></strong></a><strong> - </strong>It was originally an extended version of the Struts HTML taglib but was made into a generic taglib and brought under the Java Web parts library.</li>
<li><a href="http://www.anaa.eu/" target="_blank"><strong><span style="text-decoration: underline;">Anaa,     An AJAX API</span></strong></a><strong> - </strong>it is a simple but complete framework built around XMLHttpRequest.      It supports GET and POST methods.</li>
<li><a href="http://www.dotnetremoting.com/" target="_blank"><strong><span style="text-decoration: underline;">DotNetRemoting     Rich Web Client SDK for ASP.NET</span></strong></a><strong> - </strong>It is a platform for developing rich internet applications,     including AJAX.</li>
<li><a href="http://en.dklab.ru/lib/JsHttpRequest/" target="_blank"><strong><span style="text-decoration: underline;">JsHttpRequest</span></strong></a><strong> - </strong> It is excellent cross-browser compatibility and works with IE 5.0 with disabled ActiveX. It supports and transparent work with any character encoding including AJAX file uploads from a user browser to the serer without page reloading.</li>
<li><a href="http://www.smartclient.com/" target="_blank"><strong><span style="text-decoration: underline;">SmartClient     from Isomorphic Software</span></strong></a><strong> - </strong>It is a cross-platform AJAX GUI system chosen by top commercial software vendors, on demand service providers and enterprise IT developers for thousands of deployments.</li>
</ol>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a8292da8-7a17-4b05-b481-24af56c3f704&amp;title=Best+of+158+Ajax+Framework%2CJavaScript+Libraries+and+Toolkit+Tutorials&amp;url=http%3A%2F%2Fclickontech.net%2F2009%2F05%2Fbest-of-158-ajax-frameworkjavascript-libraries-and-toolkit-tutorials%2F">ShareThis</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/CcAXF5yxiAq0Imb02ptp4zwpGV0/0/da"><img src="http://feedads.g.doubleclick.net/~a/CcAXF5yxiAq0Imb02ptp4zwpGV0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/CcAXF5yxiAq0Imb02ptp4zwpGV0/1/da"><img src="http://feedads.g.doubleclick.net/~a/CcAXF5yxiAq0Imb02ptp4zwpGV0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ClickOnTech/~4/CzgFMJPB-Eo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clickontech.net/2009/05/best-of-158-ajax-frameworkjavascript-libraries-and-toolkit-tutorials/feed/</wfw:commentRss>
		<feedburner:origLink>http://clickontech.net/2009/05/best-of-158-ajax-frameworkjavascript-libraries-and-toolkit-tutorials/</feedburner:origLink></item>
		<item>
		<title>Kindle 2: Amazon’s New E-book Wireless Reading Device</title>
		<link>http://feedproxy.google.com/~r/ClickOnTech/~3/HxcukpiiRYs/</link>
		<comments>http://clickontech.net/2009/05/kindle-2-amazons-new-e-book-wireless-reading-device/#comments</comments>
		<pubDate>Sun, 03 May 2009 06:18:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Gadgets]]></category>

		<category><![CDATA[Wirelss]]></category>

		<category><![CDATA[Amazon]]></category>

		<category><![CDATA[Amazon kindle2]]></category>

		<category><![CDATA[amazon.com]]></category>

		<category><![CDATA[blogs]]></category>

		<category><![CDATA[E-book]]></category>

		<category><![CDATA[Kindle 2]]></category>

		<category><![CDATA[magazines]]></category>

		<category><![CDATA[newspapers]]></category>

		<category><![CDATA[Wireless Reading Device]]></category>

		<guid isPermaLink="false">http://clickontech.net/?p=36</guid>
		<description><![CDATA[Amazon kindle 2 is anew wireless reading device have been developed lately by amazon.com just like screen to read every book ever printed in any language, you can read on it like real paper with clear text ,images and more than 270,000 books available, plus top newspapers, magazines, and blogs.Also you can store over 1500 [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Kindle 2: Amazon&#8217;s New E-book Wireless Reading Device", url: "http://clickontech.net/2009/05/kindle-2-amazons-new-e-book-wireless-reading-device/" });</script>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;" dir="ltr"><a href="http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Generation/dp/B00154JDAI/ref=amb_link_84249051_1?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=center-1&amp;pf_rd_r=0SFMBEVGVKJMJR6DNWS5&amp;pf_rd_t=101&amp;pf_rd_p=475983311&amp;pf_rd_i=507846" target="_blank"><img class="alignleft" style="float: left;" src="http://www.clickontech.net/photo_site/kandel/kandel.gif" alt="http://www.clickontech.net/photo_site/kandel/kandel.gif" /></a><a href="http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Generation/dp/B00154JDAI/ref=amb_link_84249051_1?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=center-1&amp;pf_rd_r=0SFMBEVGVKJMJR6DNWS5&amp;pf_rd_t=101&amp;pf_rd_p=475983311&amp;pf_rd_i=507846" target="_blank">Amazon kindle 2</a> is anew wireless reading device have been developed la<img class="alignright" style="float: right;" src="http://www.clickontech.net/photo_site/kandel/product.jpg" alt="http://www.clickontech.net/photo_site/kandel/product.jpg" />tely by amazon.com just like screen to read every book ever printed in any language, you can read on it like real paper with clear text ,images and more than 270,000 books available, plus top newspapers, magazines, and blogs.Also you can store over 1500 book on it and travel without any problem and help you to look up for any word you don&#8217;t understand.</p>
<p style="text-align: justify;" dir="ltr">It&#8217;s slim and lighter than typical paperback and it fits perfectly in your hand and enhanced with wireless which allow to download from it any where any time and get the books in less than 60 minuets and you don&#8217;t have to recharge it for days.<span id="more-36"></span></p>
<p>It&#8217;s simple to use, no computer required ,with the new text-to-speech feature help you to ask any question , <a href="http://www.amazon.com/Kindle-Amazons-Wireless-Reading-Generation/dp/B00154JDAI/ref=amb_link_84249051_1?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=center-1&amp;pf_rd_r=0SFMBEVGVKJMJR6DNWS5&amp;pf_rd_t=101&amp;pf_rd_p=475983311&amp;pf_rd_i=507846" target="_blank">kindle 2</a> can read every newspaper, magazine, blog, and book out loud to you.</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a8292da8-7a17-4b05-b481-24af56c3f704&amp;title=Kindle+2%3A+Amazon%26%238217%3Bs+New+E-book+Wireless+Reading+Device&amp;url=http%3A%2F%2Fclickontech.net%2F2009%2F05%2Fkindle-2-amazons-new-e-book-wireless-reading-device%2F">ShareThis</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/YXN9k-95X2wePSmBU3CEbJ53jBc/0/da"><img src="http://feedads.g.doubleclick.net/~a/YXN9k-95X2wePSmBU3CEbJ53jBc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YXN9k-95X2wePSmBU3CEbJ53jBc/1/da"><img src="http://feedads.g.doubleclick.net/~a/YXN9k-95X2wePSmBU3CEbJ53jBc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ClickOnTech/~4/HxcukpiiRYs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clickontech.net/2009/05/kindle-2-amazons-new-e-book-wireless-reading-device/feed/</wfw:commentRss>
		<feedburner:origLink>http://clickontech.net/2009/05/kindle-2-amazons-new-e-book-wireless-reading-device/</feedburner:origLink></item>
		<item>
		<title>Google in Palestine “G-PALS DAY 2009″</title>
		<link>http://feedproxy.google.com/~r/ClickOnTech/~3/BIZcUUMJqZw/</link>
		<comments>http://clickontech.net/2009/03/google-in-palestine-g-pals-day-2009/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 07:43:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[SEO]]></category>

		<category><![CDATA[eMarketing]]></category>

		<category><![CDATA[entrepreneursوbusiness leaders]]></category>

		<category><![CDATA[G-PALS DAY]]></category>

		<category><![CDATA[G-PALS DAY 2009]]></category>

		<category><![CDATA[Google in Palestine]]></category>

		<category><![CDATA[Google team]]></category>

		<category><![CDATA[ICT sector]]></category>

		<category><![CDATA[Laith Kassis]]></category>

		<category><![CDATA[Omar Sahili]]></category>

		<category><![CDATA[Palestine Information and Communications Technology Inc]]></category>

		<category><![CDATA[PICTI]]></category>

		<category><![CDATA[PITA]]></category>

		<category><![CDATA[programmers]]></category>

		<guid isPermaLink="false">http://clickontech.net/?p=35</guid>
		<description><![CDATA[Upon invitation by PITA(Palestinian Information Technology Association of Companies) and PICTI (Palestine Information and Communications Technology Incubator)  and working with  the U.S.-Palestinian Partnership (UPP), Case Foundation and USAID, Google hosted a GPals day in Ramallah. On March 24th and 25th a Google team from around the world, provided cutting edge skills to more than [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Google in Palestine &#8220;G-PALS DAY 2009&#8243;", url: "http://clickontech.net/2009/03/google-in-palestine-g-pals-day-2009/" });</script>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Upon invitation by <a href="http://www.pita.ps/" target="_blank">PITA</a>(Palestinian Information Technology Association of Companies) and <a href="http://www.picti.ps/" target="_blank">PICTI</a> (Palestine Information<img class="alignnone alignright" style="float: right;" src="http://clickontech.net/arabic/wp-content/uploads/2009/03/gpalsday2009-logo.png" alt="" /> and Communications Technology Incubator)  and working with  the U.S.-Palestinian Partnership (UPP), Case Foundation and USAID, Google hosted a GPals day in Ramallah. On March 24th and 25th a Google team from around the world, provided cutting edge skills to more than 300 software developers and entrepreneurs.</p>
<p style="text-align: justify;">The GPals day was spread across two days. The first day focused on pushing the boundaries of web applications using Google developer technologies. The day was also about bringing brilliant developers together to share their own ideas. Whereas day two was focused on a full review of Google product demonstrations for small or medium sized businesses to help spur innovation and entrepreneurship in the region which included a discussion on  how to create Arabic content using online tools, and how to use free Google applications (such as Google Docs) to better manage businesses.<span id="more-35"></span></p>
<p style="text-align: justify;">“Entrepreneurs and NGO leaders in the Palestinian Territories are young, well educated and tenacious,” said UPP co-chair and Case Foundation CEO Jean Case. “Everyday they overcome challenges that seem insurmountable. Working with Google’s team and sharing their expertise gives these leaders an opportunity to engage in new ideas, which will hopefully serve to spur economic development and local innovation.”</p>
<p style="text-align: justify;">Supporting the developer community around the world is vital for the future of the internet: an active developer community means constant innovation and growth of the web. Google is committed long-term to providing tools and platforms that make web development easier and more powerful.</p>
<p style="text-align: justify;">Google has been providing similar trainings with local partners around the world. In addition to its acclaimed search engine, Google provides numerous free online applications that allow organization of online groups, shared spreadsheets, presentations and documents and application development. Google has created specialized portals that organize and promote its tools specifically for small businesses, non-profits and governments. And, it provides Google Ad Words grants to non-profits and training on how to advertise online successfully.</p>
<p style="text-align: justify;">The collaboration with Google is the latest in the U.S.-Palestinian Partnership’s efforts to bring investment and opportunity to the West Bank. Since its founding in December of 2007, the Partnership has secured private sector contributions in the West Bank from leading companies and organizations such as Google, Cisco, Intel, Microsoft, Boys &amp; Girls Clubs of America and National Geographic. Through the support of youth centers, job creation, tourism and business delegations, UPP is working to create the economic conditions for peace and demonstrating that the West Bank is open for business.</p>
<p style="text-align: justify;"><strong>About the U.S.-Palestinian Partnership</strong><br />
Launched by the President of United States, Secretary of State and U.S. business leaders following the Annapolis peace talks in December 2007, the Partnership promotes economic and educational opportunities for the Palestinian people. UPP is a critical component in facilitating progress toward a two-state solution, wherein Israel and Palestine can live side by side, in peace, security and prosperity. For more information about the U.S.-Palestinian Partnership, please visit <a href="http://www.uspalestinianpartnership.org/">www.uspalestinianpartnership.org</a>.</p>
<p style="text-align: justify;"><strong>About the Case Foundation</strong><br />
The Case Foundation, created by Steve and Jean Case in 1997, invests in people and ideas that can change the world.  The Foundation champions initiatives that connect people, increase giving, and catalyze civic action.  For more information, visit <a href="http://www.casefoundation.org/">www.casefoundation.org</a>.</p>
<p style="text-align: justify;"><span><span class="maintext">Some of the photos, more to follow<br />
<span style="font-size: 10pt; color: black;"><a href="http://picasaweb.google.com/maburmeila/GPalDay1?feat=directlink">DAY 1 PHOTOS</a></span><span style="font-size: 10pt; color: black;"> <a href="http://picasaweb.google.com/maburmeila/GPalDay2?feat=directlink">DAY 2 PHOTOS</a></span></span></span></p>
<p style="text-align: justify;">FROM : http://www.uspalestinianpartnership.org</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a8292da8-7a17-4b05-b481-24af56c3f704&amp;title=Google+in+Palestine+%26%238220%3BG-PALS+DAY+2009%26%238243%3B&amp;url=http%3A%2F%2Fclickontech.net%2F2009%2F03%2Fgoogle-in-palestine-g-pals-day-2009%2F">ShareThis</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/iTn32DnDwu294LYYyQyy9i2ePwk/0/da"><img src="http://feedads.g.doubleclick.net/~a/iTn32DnDwu294LYYyQyy9i2ePwk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/iTn32DnDwu294LYYyQyy9i2ePwk/1/da"><img src="http://feedads.g.doubleclick.net/~a/iTn32DnDwu294LYYyQyy9i2ePwk/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ClickOnTech/~4/BIZcUUMJqZw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clickontech.net/2009/03/google-in-palestine-g-pals-day-2009/feed/</wfw:commentRss>
		<feedburner:origLink>http://clickontech.net/2009/03/google-in-palestine-g-pals-day-2009/</feedburner:origLink></item>
		<item>
		<title>Creating An Amazing jQuery Style Switcher with Ajax Techniques</title>
		<link>http://feedproxy.google.com/~r/ClickOnTech/~3/W_ekdW7dQeE/</link>
		<comments>http://clickontech.net/2009/03/creating-an-amazing-jquery-style-switcher-with-ajax-techniques/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 09:06:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Startup]]></category>

		<category><![CDATA[Tutorials]]></category>

		<category><![CDATA[web-20]]></category>

		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Ajax Techniques]]></category>

		<category><![CDATA[css]]></category>

		<category><![CDATA[Download Source code]]></category>

		<category><![CDATA[jQuery]]></category>

		<category><![CDATA[loadStyleSheet]]></category>

		<category><![CDATA[Night theme]]></category>

		<category><![CDATA[Style Switcher]]></category>

		<guid isPermaLink="false">http://clickontech.net/?p=33</guid>
		<description><![CDATA[Download Source code:Click Here

In this tutorial I will be showing you how to create a style switcher using jQuery and PHP. The end result
will be an unobtrusive &#38; entirely degradable dynamic style switcher which will be quick and easy to implement.
Step 1: The HTML
First, we need to create our basic HTML file and save it [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Creating An Amazing jQuery Style Switcher with Ajax Techniques", url: "http://clickontech.net/2009/03/creating-an-amazing-jquery-style-switcher-with-ajax-techniques/" });</script>]]></description>
			<content:encoded><![CDATA[<p>Download Source code:<a href="http://nettuts.s3.amazonaws.com/055_jQueryStyleSwitcher/demo.zip">Click Here</a></p>
<h2><img style="float: right;" src="http://nettuts.s3.amazonaws.com/055_jQueryStyleSwitcher/200x200.png" alt="" width="149" height="149" /></h2>
<p>In this tutorial I will be showing you how to create a style switcher using jQuery and PHP. The end result</p>
<p>will be an unobtrusive &amp; entirely degradable dynamic style switcher which will be quick and easy to implement.</p>
<h2>Step 1: The HTML</h2>
<p>First, we need to create our basic HTML file and save it as index.php:<span id="more-33"></span></p>
<p><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">?</a> <img title="More..." src="http://clickontech.net/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<ol>
<li>&gt;</li>
<li></li>
<li></li>
<li></li>
<li> Style Switchertitle&gt;</li>
<li> php</li>
<li> // Checks for, and assigns cookie to local variable:</li>
<li> if(!empty($_COOKIE['style'])) $style = $_COOKIE['style'];</li>
<li> // If no cookie is present then set style as &#8221;day&#8221; (default):</li>
<li> else $style = &#8216;day&#8217;;</li>
<li> ?&gt;</li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li> <script src="js/jquery.js" type="text/javascript"><!--
script-->
// &#8211;&gt;</script></li>
<li></li>
<li></li>
<li> <script src="js/styleswitcher.jquery.js" type="text/javascript"><!--
script-->
// &#8211;&gt;</script></li>
<li></li>
<li> head&gt;</li>
<li></li>
<li></li>
<li>
<h1>Style-Switcher Exampleh1&gt;</h1>
</li>
<li>
<ul id="nav">
<li></li>
<li><a href="#">Homea&gt;li&gt;</a></li>
<li><a href="#"> </a></li>
<li><a href="#">Abouta&gt;li&gt;</a></li>
<li><a href="#"> </a></li>
<li><a href="#">Servicesa&gt;li&gt;</a></li>
<li><a href="#"> </a></li>
<li><a href="#">Productsa&gt;li&gt;</a></li>
<li><a href="#"> </a></li>
<li><a href="#">Linksa&gt;li&gt;</a></li>
<li><a href="#"> </a></li>
<li><a href="#">Contacta&gt;li&gt;</a></li>
<li><a href="#"> ul&gt;</a></li>
<li><a href="#"> </a>
<div id="banner"><a href="#">div&gt;</a></div>
</li>
<li><a href="#"> </a></li>
<li><a href="#"> </a><br />
<h2><a href="#">NETTUTS Tutorial Exampleh2&gt;</a></h2>
</li>
<li><a href="#"> </a><a href="#">Page content&#8230;p&gt; </a></li>
<li><a href="#"> div&gt;</a></li>
<li><a href="#"> </a></li>
<li><a href="#"> </a><a href="#">Footer stuff&#8230;p&gt; </a></li>
<li><a href="#"> div&gt;</a></li>
<li></li>
<li></li>
<li><a href="#"> </a></li>
<li><a href="#"> </a><br />
<h4><a href="#">Choose your style:h4&gt;</a></h4>
</li>
<li><a href="#"> </a>
<ul>
<li><a href="#"> </a></li>
<li id="day"><a href="style-switcher.php?style=day">Daya&gt;li&gt;</a></li>
<li><a href="style-switcher.php?style=day"> </a></li>
<li id="night"><a href="style-switcher.php?style=night">Nighta&gt;li&gt;</a></li>
<li><a href="style-switcher.php?style=night"> ul&gt;</a></li>
<li><a href="style-switcher.php?style=night"> div&gt;</a></li>
<li></li>
<li><a href="style-switcher.php?style=night"> div&gt;</a></li>
<li></li>
<li><a href="style-switcher.php?style=night"> <script type="text/javascript"><!--
</li-->
// &#8211;&gt;</script></a></li>
<li><a href="style-switcher.php?style=night"> $(&#8217;#style-switcher a&#8217;).styleSwitcher(); // Calling the plugin&#8230;</a></li>
<li><a href="style-switcher.php?style=night"> script&gt;</a></li>
<li></li>
<li><a href="style-switcher.php?style=night"> body&gt;</a></li>
<li><a href="style-switcher.php?style=night">html&gt;</a></li>
</ul>
</li>
</ul>
</li>
</ol>
<pre style="display: none;"><a href="style-switcher.php?style=night">		Style Switcher
</a>
<h1><a href="style-switcher.php?style=night">Style-Switcher Example</a></h1>
<ul id="nav">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Products</a></li>
<li><a href="#">Links</a></li>
<li><a href="#">Contact</a></li>
</ul>
<h2>NETTUTS Tutorial Example</h2>

Page content&#8230;

Footer stuff&#8230;
<h4>Choose your style:</h4>
<ul>
<li id="day"><a href="style-switcher.php?style=day">Day</a></li>
<li id="night"><a href="style-switcher.php?style=night">Night</a></li>
</ul>
</pre>
<p>You&#8217;ll see that there is some PHP up there just below the title attribute in the head. It&#8217;s very simple - all it does is check for a cookie called &#8220;style&#8221; - if it exists then it assigns it to the local variable (also called &#8220;style&#8221;) and if the cookie <strong>doesn&#8217;t</strong> exist, it assigns the default theme (&#8221;day&#8221;) to the <code>$style</code> variable. This variable is then echoed out within the href attribute of the link element (<code>href="css/.css"</code>). You&#8217;ll see that the style-switcher div is included above in our HTML. There is no need to add this using JavaScript because the method we&#8217;re using will allow the style-switcher to work when JavaScript is disabled. The two links (night &amp; day) take the user to a file called style-switcher.php with an appended query string specifying the corresponding theme (e.g. <code>href="style-switcher.php?style=day"</code>). I&#8217;ve also called the a jQuery plugin called styleSwitcher. This has not been developed yet (well, it will have by the time you read this), so hold on! &#8230; We will be writing this plugin in step 4 of this tutorial.</p>
<h2>Step 2: The CSS</h2>
<p>Now, we need to create a couple of CSS StyleSheets for our HTML. I&#8217;ve decided to create just two StyleSheets - one will have the theme of &#8220;Day&#8221; and the other will have the theme of &#8220;Night&#8221; and I&#8217;ve named them appropriately. (day.css &amp; night.css)</p>
<h3>The Day theme:</h3>
<p><img src="http://nettuts.s3.amazonaws.com/055_jQueryStyleSwitcher/day_theme.jpg" alt="Night Theme" /></p>
<h3>The Night theme:</h3>
<p><img src="http://nettuts.s3.amazonaws.com/055_jQueryStyleSwitcher/night_theme.jpg" alt="Night Theme" /></p>
<p>It&#8217;s best to start with one style and then copy across all the selectors to the alternative StyleSheet - and then all that needs changing are the various CSS rules and declarations. Obviously you can have as many StyleSheets as you want but in this tutorial we&#8217;re using two for illustrative purposes. Plus night and day go well together as a duo!</p>
<h3>day.css:</h3>
<p><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">?</a></p>
<ol>
<li>#dummy-element{width:2px;} /* Necessary to check if StyleSheet has loaded */</li>
<li></li>
<li>/* Quick Reset */</li>
<li>body,ul,ol,li,img,form,p,h1,h2,h3,h4,h5,h6,blockquote {</li>
<li> margin: 0;</li>
<li> padding: 0;</li>
<li> border: none;</li>
<li> list-style: none;</li>
<li> font-weight: normal;</li>
<li>}</li>
<li></li>
<li>/* General / Header */</li>
<li>body {background: #98beeb url(../img/day-body-bg.jpg) repeat-x; }</li>
<li>#container {</li>
<li> width: 60%;</li>
<li> margin: 0 auto;</li>
<li> min-width: 400px;</li>
<li> max-width: 800px;</li>
<li> position: relative;</li>
<li>}</li>
<li>h1 {</li>
<li> text-align: left;</li>
<li> text-transform: uppercase;</li>
<li> color: white;</li>
<li> font-size: 1.4em;</li>
<li> padding: 45px 30px 10px 30px;</li>
<li>}</li>
<li></li>
<li>/* Navigation */</li>
<li>#nav {</li>
<li> padding: 5px 5px 0 0;</li>
<li> overflow: hidden;</li>
<li>}</li>
<li>#nav li {display: inline;}</li>
<li>#nav a {</li>
<li> float: left;</li>
<li> color: #6195ce;</li>
<li> font-weight: bold;</li>
<li> text-decoration: none;</li>
<li> padding: 3px 6px;</li>
<li> margin-left: 5px;</li>
<li> background: white;</li>
<li>}</li>
<li>#nav a:hover {color: #2c5a8c;}</li>
<li></li>
<li>/* Banner */</li>
<li>#banner {</li>
<li> height: 125px;</li>
<li> background: url(../img/day-banner.jpg) center;</li>
<li> border: 5px solid white;</li>
<li> clear: both;</li>
<li>}</li>
<li></li>
<li>/* Content Area */</li>
<li>#content {</li>
<li> border: 10px solid white;</li>
<li> background: white;</li>
<li> color: #2c5a8c;</li>
<li> margin: 5px 0;</li>
<li>}</li>
<li>#content a {font-weight: bold;}</li>
<li>#content a:hover {text-decoration: underline;}</li>
<li>h2 {</li>
<li> padding: 0.3em 0;</li>
<li> font-size: 1.4em;</li>
<li>}</li>
<li>p {padding: 0.3em 0;}</li>
<li></li>
<li>/* Footer */</li>
<li>#foot {</li>
<li> background: white;</li>
<li> color: #1f3a57;</li>
<li> text-align: center;</li>
<li> border: 10px solid white;</li>
<li> clear: both;</li>
<li>}</li>
<li>#foot a {</li>
<li> text-decoration: none;</li>
<li> font-weight: bold;</li>
<li> color: #2c5a8c;</li>
<li>}</li>
<li>#foot a:hover {text-decoration: underline;}</li>
<li></li>
<li>/* Style-Switcher */</li>
<li>#style-switcher {</li>
<li> position: absolute;</li>
<li> width: 100%;</li>
<li> top: 0;</li>
<li> left: 0;</li>
<li> rightright: 0;</li>
<li> height: 34px;</li>
<li> background: #79a3cc url(../img/day-ss-bg.jpg);</li>
<li> border-bottom: 1px solid white;</li>
<li>}</li>
<li>#style-switcher ul {</li>
<li> border-right: 1px solid white;</li>
<li> float: rightright;</li>
<li>}</li>
<li>#style-switcher h4 {</li>
<li> display: inline;</li>
<li> color: #153c67;</li>
<li> font-weight: bold;</li>
<li> line-height: 34px;</li>
<li> padding: 0 10px;</li>
<li> float: left;</li>
<li> border-left: 1px solid white;</li>
<li>}</li>
<li>#style-switcher li {display: inline;}</li>
<li>#style-switcher li a {</li>
<li> float: left;</li>
<li> line-height: 26px;</li>
<li> color: white;</li>
<li> background: #90a6bb;</li>
<li> text-decoration: none;</li>
<li> padding: 0 13px;</li>
<li> display: inline;</li>
<li> margin: 4px 4px 4px 0;</li>
<li>}</li>
<li>#style-switcher li a:hover {background: #3a5a7c;}</li>
</ol>
<pre style="display: none;">#dummy-element{width:2px;} /* Necessary to check if StyleSheet has loaded */

/* Quick Reset */
body,ul,ol,li,img,form,p,h1,h2,h3,h4,h5,h6,blockquote {
	margin: 0;
	padding: 0;
	border: none;
	list-style: none;
	font-weight: normal;
}

/* General / Header */
body {background: #98beeb url(../img/day-body-bg.jpg) repeat-x; }
#container {
	width: 60%;
	margin: 0 auto;
	min-width: 400px;
	max-width: 800px;
	position: relative;
}
h1 {
	text-align: left;
	text-transform: uppercase;
	color: white;
	font-size: 1.4em;
	padding: 45px 30px 10px 30px;
}

/* Navigation */
#nav {
	padding: 5px 5px 0 0;
	overflow: hidden;
}
#nav li {display: inline;}
#nav a {
	float: left;
	color: #6195ce;
	font-weight: bold;
	text-decoration: none;
	padding: 3px 6px;
	margin-left: 5px;
	background: white;
}
#nav a:hover {color: #2c5a8c;}

/* Banner */
#banner {
	height: 125px;
	background: url(../img/day-banner.jpg) center;
	border: 5px solid white;
	clear: both;
}

/* Content Area */
#content {
	border: 10px solid white;
	background: white;
	color: #2c5a8c;
	margin: 5px 0;
}
#content a {font-weight: bold;}
#content a:hover {text-decoration: underline;}
h2 {
	padding: 0.3em 0;
	font-size: 1.4em;
}
p {padding: 0.3em 0;}

/* Footer */
#foot {
	background: white;
	color: #1f3a57;
	text-align: center;
	border: 10px solid white;
	clear: both;
}
#foot a {
	text-decoration: none;
	font-weight: bold;
	color: #2c5a8c;
}
#foot a:hover {text-decoration: underline;}

/* Style-Switcher */
#style-switcher {
	position: absolute;
	width: 100%;
	top: 0;
	left: 0;
	right: 0;
	height: 34px;
	background: #79a3cc url(../img/day-ss-bg.jpg);
	border-bottom: 1px solid white;
}
#style-switcher ul {
	border-right: 1px solid white;
	float: right;
}
#style-switcher h4 {
	display: inline;
	color: #153c67;
	font-weight: bold;
	line-height: 34px;
	padding: 0 10px;
	float: left;
	border-left: 1px solid white;
}
#style-switcher li {display: inline;}
#style-switcher li a {
	float: left;
	line-height: 26px;
	color: white;
	background: #90a6bb;
	text-decoration: none;
	padding: 0 13px;
	display: inline;
	margin: 4px 4px 4px 0;
}
#style-switcher li a:hover {background: #3a5a7c;}</pre>
<h3>night.css:</h3>
<p><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">?</a></p>
<ol>
<li>#dummy-element{width:2px;} /* Necessary to check if StyleSheet has loaded */</li>
<li></li>
<li>/* Quick Reset */</li>
<li>body,ul,ol,li,img,form,p,h1,h2,h3,h4,h5,h6,blockquote {</li>
<li> margin: 0;</li>
<li> padding: 0;</li>
<li> border: none;</li>
<li> list-style: none;</li>
<li> font-weight: normal;</li>
<li>}</li>
<li></li>
<li>/* General / Header */</li>
<li>body {</li>
<li> font-family: Calibri,&#8221;Arial Narrow&#8221;,Arial,Sans-Serif;</li>
<li> background: #072952 url(../img/night-body-bg.jpg) repeat-x;</li>
<li>}</li>
<li>#container {</li>
<li> width: 60%;</li>
<li> margin: 0 auto;</li>
<li> min-width: 400px;</li>
<li> max-width: 800px;</li>
<li> position: relative;</li>
<li>}</li>
<li>h1 {</li>
<li> text-align: left;</li>
<li> text-transform: uppercase;</li>
<li> color: white;</li>
<li> font-size: 1.4em;</li>
<li> padding: 45px 30px 10px 30px;</li>
<li> font-family: &#8220;Times New Roman&#8221;, Times, serif;</li>
<li>}</li>
<li></li>
<li>/* Navigation */</li>
<li>#nav {</li>
<li> padding: 5px 5px 0 0;</li>
<li> overflow: hidden;</li>
<li>}</li>
<li>#nav li {display: inline;}</li>
<li>#nav a {</li>
<li> float: left;</li>
<li> color: #010e2e;</li>
<li> font-weight: bold;</li>
<li> text-decoration: none;</li>
<li> padding: 8px 6px 3px 6px;</li>
<li> font-size: 0.8em;</li>
<li> text-transform: uppercase;</li>
<li> font-weight: 700;</li>
<li> margin-left: 5px;</li>
<li> background: white url(../img/night-nav-bg2.jpg) repeat-x;</li>
<li>}</li>
<li>#nav a:hover {color: #2c5a8c;}</li>
<li></li>
<li>/* Banner */</li>
<li>#banner {</li>
<li> height: 125px;</li>
<li> background: url(../img/night-banner.jpg) center;</li>
<li> border: 5px solid white;</li>
<li> clear: both;</li>
<li>}</li>
<li></li>
<li>/* Content Area */</li>
<li>#content {</li>
<li> color: white;</li>
<li> margin: 20px 0;</li>
<li> padding: 5px 0;</li>
<li> border-top: 4px double white;</li>
<li> border-bottom: 4px double white;</li>
<li> font-family: &#8220;Times New Roman&#8221;, Times, serif;</li>
<li>}</li>
<li>#content a {font-weight: bold;}</li>
<li>#content a:hover {text-decoration: underline;}</li>
<li>h2 {</li>
<li> padding: 0.3em 0;</li>
<li> font-size: 1.4em;</li>
<li>}</li>
<li>p {padding: 0.3em 0;}</li>
<li></li>
<li>/* Footer */</li>
<li>#foot {</li>
<li> color: white;</li>
<li> font-size: 0.8em;</li>
<li> clear: both;</li>
<li>}</li>
<li>#foot p {</li>
<li> text-align: center;</li>
<li> padding: 0;</li>
<li>}</li>
<li>#foot a {</li>
<li> text-decoration: none;</li>
<li> font-weight: bold;</li>
<li> color: white;</li>
<li>}</li>
<li>#foot a:hover {text-decoration: underline;}</li>
<li></li>
<li>/* Style-Switcher */</li>
<li>#style-switcher {</li>
<li> position: absolute;</li>
<li> width: 100%;</li>
<li> top: 0;</li>
<li> left: 0;</li>
<li> rightright: 0;</li>
<li> height: 34px;</li>
<li>}</li>
<li>#style-switcher ul {float: left;}</li>
<li>#style-switcher h4 {</li>
<li> display: inline;</li>
<li> color: white;</li>
<li> font-weight: bold;</li>
<li> line-height: 34px;</li>
<li> padding: 0 10px;</li>
<li> float: left;</li>
<li>}</li>
<li>#style-switcher li {display: inline;}</li>
<li>#style-switcher li a {</li>
<li> float: left;</li>
<li> line-height: 34px;</li>
<li> color: white;</li>
<li> text-decoration: none;</li>
<li> padding: 0 4px;</li>
<li> margin-left: 5px;</li>
<li> display: inline;</li>
<li>}</li>
<li>#style-switcher li a:hover {</li>
<li> background: white;</li>
<li> color: #13181c;</li>
<li> background: white url(../img/night-ss-bg.jpg) repeat-x left bottombottom;</li>
<li>}</li>
</ol>
<pre style="display: none;">#dummy-element{width:2px;} /* Necessary to check if StyleSheet has loaded */

/* Quick Reset */
body,ul,ol,li,img,form,p,h1,h2,h3,h4,h5,h6,blockquote {
	margin: 0;
	padding: 0;
	border: none;
	list-style: none;
	font-weight: normal;
}

/* General / Header */
body {
	font-family: Calibri,"Arial Narrow",Arial,Sans-Serif;
	background: #072952 url(../img/night-body-bg.jpg) repeat-x;
}
#container {
	width: 60%;
	margin: 0 auto;
	min-width: 400px;
	max-width: 800px;
	position: relative;
}
h1 {
	text-align: left;
	text-transform: uppercase;
	color: white;
	font-size: 1.4em;
	padding: 45px 30px 10px 30px;
	font-family: "Times New Roman", Times, serif;
}

/* Navigation */
#nav {
	padding: 5px 5px 0 0;
	overflow: hidden;
}
#nav li {display: inline;}
#nav a {
	float: left;
	color: #010e2e;
	font-weight: bold;
	text-decoration: none;
	padding: 8px 6px 3px 6px;
	font-size: 0.8em;
	text-transform: uppercase;
	font-weight: 700;
	margin-left: 5px;
	background: white url(../img/night-nav-bg2.jpg) repeat-x;
}
#nav a:hover {color: #2c5a8c;}

/* Banner */
#banner {
	height: 125px;
	background: url(../img/night-banner.jpg) center;
	border: 5px solid white;
	clear: both;
}

/* Content Area */
#content {
	color: white;
	margin: 20px 0;
	padding: 5px 0;
	border-top: 4px double white;
	border-bottom: 4px double white;
	font-family: "Times New Roman", Times, serif;
}
#content a {font-weight: bold;}
#content a:hover {text-decoration: underline;}
h2 {
	padding: 0.3em 0;
	font-size: 1.4em;
}
p {padding: 0.3em 0;}

/* Footer */
#foot {
	color: white;
	font-size: 0.8em;
	clear: both;
}
#foot p {
	text-align: center;
	padding: 0;
}
#foot a {
	text-decoration: none;
	font-weight: bold;
	color: white;
}
#foot a:hover {text-decoration: underline;}

/* Style-Switcher */
#style-switcher {
	position: absolute;
	width: 100%;
	top: 0;
	left: 0;
	right: 0;
	height: 34px;
}
#style-switcher ul {float: left;}
#style-switcher h4 {
	display: inline;
	color: white;
	font-weight: bold;
	line-height: 34px;
	padding: 0 10px;
	float: left;
}
#style-switcher li {display: inline;}
#style-switcher li a {
	float: left;
	line-height: 34px;
	color: white;
	text-decoration: none;
	padding: 0 4px;
	margin-left: 5px;
	display: inline;
}
#style-switcher li a:hover {
	background: white;
	color: #13181c;
	background: white url(../img/night-ss-bg.jpg) repeat-x left bottom;
}</pre>
<p>This is not really a CSS tutorial so I won&#8217;t be delving into any of the above, but if you have any questions then please feel free to ask them in the comments section. And yes, I know that min-width is not supported in older browsers! <img src='http://clickontech.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h2>Step 3: style-switcher.php</h2>
<p>This is where we write the core functionality of the style switcher. It is actually just a few lines of very basic PHP code. You should create a new file called &#8220;style-switcher.php&#8221; and copy the following into it:</p>
<p><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">?</a></p>
<ol>
<li></li>
<li> $style = $_GET['style'];</li>
<li> setcookie(&#8221;style&#8221;, $style, time()+604800); // 604800 = amount of seconds in one week</li>
<li> if(isset($_GET['js'])) {</li>
<li> echo $style;</li>
<li> } else {</li>
<li> header(&#8221;Location: &#8221;.$_SERVER['HTTP_REFERER']);</li>
<li> }</li>
<li>?&gt;</li>
</ol>
<p>So, what the above code does is assign the &#8220;style&#8221; GET variable to a local <code>$style</code> variable. In other words it will take the value of the style property within the query string (style-switcher.php?style=<strong>day</strong>). It then sets a cookie (for one week) called &#8220;style&#8221; - we will be able to retrieve this cookie on our main index.php with the code shown in step 1 (remember that little chunk of PHP in the <code>head</code>?). Next, it checks to see if &#8220;js&#8221; is appended to the query string. If it is then we know that JavaScript (which we have yet to write) has requested this PHP script. The else condition occurs when a user does not have JavaScript enabled and redirects the user to the referrer (i.e. the page they just came from) - this will become clearer once we&#8217;ve written the jQuery stuff!</p>
<h2>Step 4: The jQuery stuff</h2>
<p>You can, if you want, stop right here!&#8230; The solution thus far will work perfectly, but as I stated in the intro we are going to make it even cooler with some jQuery awesomeness! Not only are we going to allow the user to change their theme without refreshing the page but we are also going to add a really cool fading effect&#8230; I mean, what type of jQuery tutorial would this be if there was no fading!?!? Obviously this is all possible without having to create a plugin but I thought it would be a good learning experience for all you, plus it allows us to adapt or transfer the code quickly and easily. First off, let&#8217;s create a file called &#8220;styleswitcher.jquery.js&#8221;. Making a new plugin in jQuery is extremely simple; all it takes is the following code:</p>
<p><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">?</a></p>
<ol>
<li>jQuery.fn.styleSwitcher = function(){</li>
<li> // The code goes here&#8230;</li>
<li>}</li>
</ol>
<pre style="display: none;">jQuery.fn.styleSwitcher = function(){
	// The code goes here...
}</pre>
<p>So, first we want to specify what happens when one of the StyleSheet links are clicked on (those within <code>div#style-switcher</code>):</p>
<p><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">?</a></p>
<ol>
<li>/* &#8221;this&#8221; refers to each instance of the selected element,</li>
<li> * So, if you were to call the plugin like this:</li>
<li> * $(&#8217;a').styleSwitcher(); then the following would occur</li>
<li> * when clicking on any anchor within the document:</li>
<li> */</li>
<li></li>
<li>$(this).click(function(){</li>
<li> // We&#8217;re passing this element object through to the</li>
<li> // loadStyleSheet function.</li>
<li> loadStyleSheet(this);</li>
<li> // And then we&#8217;re returning false.</li>
<li> return false;</li>
<li>});</li>
</ol>
<pre style="display: none;">/* "this" refers to each instance of the selected element,
 * So, if you were to call the plugin like this:
 * $('a').styleSwitcher(); then the following would occur
 * when clicking on any anchor within the document:
 */

$(this).click(function(){
	// We're passing this element object through to the
	// loadStyleSheet function.
	loadStyleSheet(this);
	// And then we're returning false.
	return false;
});</pre>
<h3>loadStyleSheet:</h3>
<p>Now we need to write the <code>loadStyleSheet</code> function:</p>
<p><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">?</a></p>
<ol>
<li>function loadStyleSheet(obj) {</li>
<li></li>
<li> // Append new div to body:</li>
<li> $(&#8217;body&#8217;).append(&#8221;);</li>
<li></li>
<li> // Give body a height of 100% (to fix IE6 issue):</li>
<li> $(&#8217;body&#8217;).css({height:&#8217;100%&#8217;});</li>
<li></li>
<li> // Select newly created div and apply some styles:</li>
<li> $(&#8217;#overlay&#8217;)</li>
<li> .css({</li>
<li> display: &#8217;none&#8217;,</li>
<li> position: &#8217;absolute&#8217;,</li>
<li> top:0,</li>
<li> left: 0,</li>
<li> width: &#8217;100%&#8217;,</li>
<li> height: &#8217;100%&#8217;,</li>
<li> zIndex: 1000,</li>
<li> background: &#8217;black url(img/loading.gif) no-repeat center&#8217;</li>
<li> })</li>
<li></li>
<li> // Now fade in the div (#overlay):</li>
<li> .fadeIn(500,function(){</li>
<li></li>
<li> // The following will happen when the div has finished fading in:</li>
<li></li>
<li> // Request PHP script (obj.href) with appended &#8221;js&#8221; query string item:</li>
<li> $.get( obj.href+&#8217;&amp;js&#8217;,function(data){</li>
<li></li>
<li> // Select link element in HEAD of document (#stylesheet) and change href attribute:</li>
<li> $(&#8217;#stylesheet&#8217;).attr(&#8217;href&#8217;,'css/&#8217; + data + &#8216;.css&#8217;);</li>
<li></li>
<li> // Check if new CSS StyleSheet has loaded:</li>
<li> cssDummy.check(function(){</li>
<li></li>
<li> // When StyleSheet has loaded, fade out and remove the #overlay div:</li>
<li> $(&#8217;#overlay&#8217;).fadeOut(500,function(){</li>
<li> $(this).remove();</li>
<li> });</li>
<li> });</li>
<li> });</li>
<li> });</li>
<li>}</li>
</ol>
<pre style="display: none;">function loadStyleSheet(obj) {

	// Append new div to body:
	$('body').append('');

	// Give body a height of 100% (to fix IE6 issue):
	$('body').css({height:'100%'});

	// Select newly created div and apply some styles:
	$('#overlay')
		.css({
			display: 'none',
			position: 'absolute',
			top:0,
			left: 0,
			width: '100%',
			height: '100%',
			zIndex: 1000,
			background: 'black url(img/loading.gif) no-repeat center'
		})

		// Now fade in the div (#overlay):
		.fadeIn(500,function(){

			// The following will happen when the div has finished fading in:

			// Request PHP script (obj.href) with appended "js" query string item:
			$.get( obj.href+'&amp;js',function(data){

				// Select link element in HEAD of document (#stylesheet) and change href attribute:
				$('#stylesheet').attr('href','css/' + data + '.css');

				// Check if new CSS StyleSheet has loaded:
				cssDummy.check(function(){

					// When StyleSheet has loaded, fade out and remove the #overlay div:
					$('#overlay').fadeOut(500,function(){
						$(this).remove();
					});
				});
			});
		});
}</pre>
<p>I hope the comments explained it sufficiently. The more attentive of you will have noticed that we are calling a currently undefined function (<code>cssDummy.check()</code>). Don&#8217;t worry because that is the next step&#8230;</p>
<h3>cssDummy:</h3>
<p>We need a way of testing whether a StyleSheet has loaded. If it has loaded then we can make the overlay div disappear, but if it hasn&#8217;t we have to keep on checking until it does load. I did a bit of searching around the net and found a reliable way of testing such a thing. It involves testing for the computed width of a dummy element. The width of this element will be defined in the CSS - and so the computed width of the element will only equal the width defined in the CSS when the StyleSheet has loaded. I hope you now understand why we had to include that &#8220;#dummy-element&#8221; rule in each CSS file&#8230; So, here it is:</p>
<p><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">?</a></p>
<ol>
<li>var cssDummy = {</li>
<li> init: function(){</li>
<li> // Appends &#8221;dummy-element&#8221; div to body:</li>
<li> $(&#8221;).appendTo(&#8217;body&#8217;);</li>
<li> },</li>
<li> check: function(callback) {</li>
<li></li>
<li> // Checks if computed with equals that which is defined in the StyleSheets (2px):</li>
<li> if ($(&#8217;#dummy-element&#8217;).width()==2) callback();</li>
<li></li>
<li> // If it has not loaded yet then simple re-initiate this</li>
<li> // function every 200 milliseconds until it had loaded:</li>
<li> else setTimeout(function(){cssDummy.check(callback)}, 200);</li>
<li> }</li>
<li>}</li>
</ol>
<pre style="display: none;">var cssDummy = {
	init: function(){
		// Appends "dummy-element" div to body:
		$('').appendTo('body');
	},
	check: function(callback) {

		// Checks if computed with equals that which is defined in the StyleSheets (2px):
		if ($('#dummy-element').width()==2) callback();

		// If it has not loaded yet then simple re-initiate this
		// function every 200 milliseconds until it had loaded:
		else setTimeout(function(){cssDummy.check(callback)}, 200);
	}
}</pre>
<p>And, right at the end of our plugin we&#8217;re going to call the <code>cssDummy.init</code> function:</p>
<pre>cssDummy.init();</pre>
<p>We&#8217;re done! The entire plugin now looks like this:</p>
<p><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/#">?</a></p>
<ol>
<li>jQuery.fn.styleSwitcher = function(){</li>
<li> $(this).click(function(){</li>
<li> loadStyleSheet(this);</li>
<li> return false;</li>
<li> });</li>
<li> function loadStyleSheet(obj) {</li>
<li> $(&#8217;body&#8217;).append(&#8221;);</li>
<li> $(&#8217;body&#8217;).css({height:&#8217;100%&#8217;});</li>
<li> $(&#8217;#overlay&#8217;)</li>
<li> .css({</li>
<li> display: &#8217;none&#8217;,</li>
<li> position: &#8217;absolute&#8217;,</li>
<li> top:0,</li>
<li> left: 0,</li>
<li> width: &#8217;100%&#8217;,</li>
<li> height: &#8217;100%&#8217;,</li>
<li> zIndex: 1000,</li>
<li> background: &#8217;black url(img/loading.gif) no-repeat center&#8217;</li>
<li> })</li>
<li> .fadeIn(500,function(){</li>
<li> $.get( obj.href+&#8217;&amp;js&#8217;,function(data){</li>
<li> $(&#8217;#stylesheet&#8217;).attr(&#8217;href&#8217;,'css/&#8217; + data + &#8216;.css&#8217;);</li>
<li> cssDummy.check(function(){</li>
<li> $(&#8217;#overlay&#8217;).fadeOut(500,function(){</li>
<li> $(this).remove();</li>
<li> });</li>
<li> });</li>
<li> });</li>
<li> });</li>
<li> }</li>
<li> var cssDummy = {</li>
<li> init: function(){</li>
<li> $(&#8221;).appendTo(&#8217;body&#8217;);</li>
<li> },</li>
<li> check: function(callback) {</li>
<li> if ($(&#8217;#dummy-element&#8217;).width()==2) callback();</li>
<li> else setTimeout(function(){cssDummy.check(callback)}, 200);</li>
<li> }</li>
<li> }</li>
<li> cssDummy.init();</li>
<li>}</li>
</ol>
<pre style="display: none;">jQuery.fn.styleSwitcher = function(){
	$(this).click(function(){
		loadStyleSheet(this);
		return false;
	});
	function loadStyleSheet(obj) {
		$('body').append('');
		$('body').css({height:'100%'});
		$('#overlay')
			.css({
				display: 'none',
				position: 'absolute',
				top:0,
				left: 0,
				width: '100%',
				height: '100%',
				zIndex: 1000,
				background: 'black url(img/loading.gif) no-repeat center'
			})
			.fadeIn(500,function(){
				$.get( obj.href+'&amp;js',function(data){
					$('#stylesheet').attr('href','css/' + data + '.css');
					cssDummy.check(function(){
						$('#overlay').fadeOut(500,function(){
							$(this).remove();
						});
					});
				});
			});
	}
	var cssDummy = {
		init: function(){
			$('').appendTo('body');
		},
		check: function(callback) {
			if ($('#dummy-element').width()==2) callback();
			else setTimeout(function(){cssDummy.check(callback)}, 200);
		}
	}
	cssDummy.init();
}</pre>
<p>We can now call the jQuery plugin like this:</p>
<pre>$('#style-switcher a').styleSwitcher();

From :http://net.tutsplus.com/javascript-ajax/jquery-style-switcher/
</pre>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a8292da8-7a17-4b05-b481-24af56c3f704&amp;title=Creating+An+Amazing+jQuery+Style+Switcher+with+Ajax+Techniques&amp;url=http%3A%2F%2Fclickontech.net%2F2009%2F03%2Fcreating-an-amazing-jquery-style-switcher-with-ajax-techniques%2F">ShareThis</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/BgCAfQMMbyM7uzYZkSrUVtDkEmw/0/da"><img src="http://feedads.g.doubleclick.net/~a/BgCAfQMMbyM7uzYZkSrUVtDkEmw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BgCAfQMMbyM7uzYZkSrUVtDkEmw/1/da"><img src="http://feedads.g.doubleclick.net/~a/BgCAfQMMbyM7uzYZkSrUVtDkEmw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ClickOnTech/~4/W_ekdW7dQeE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clickontech.net/2009/03/creating-an-amazing-jquery-style-switcher-with-ajax-techniques/feed/</wfw:commentRss>
		<media:content url="http://feedproxy.google.com/~r/ClickOnTech/~5/xonlF9sO8Tg/demo.zip" fileSize="53710" type="application/x-zip-compressed" /><itunes:subtitle>Download Source code:Click Here In this tutorial I will be showing you how to create a style switcher using jQuery and PHP. The end result will be an unobtrusive &amp;#38; entirely degradable dynamic style switcher which will be quick and easy to implement. S</itunes:subtitle><itunes:summary>Download Source code:Click Here In this tutorial I will be showing you how to create a style switcher using jQuery and PHP. The end result will be an unobtrusive &amp;#38; entirely degradable dynamic style switcher which will be quick and easy to implement. Step 1: The HTML First, we need to create our basic HTML file and save it [...]SHARETHIS.addEntry({ title: "Creating An Amazing jQuery Style Switcher with Ajax Techniques", url: "http://clickontech.net/2009/03/creating-an-amazing-jquery-style-switcher-with-ajax-techniques/" });</itunes:summary><itunes:keywords>Open Source, Startup, Tutorials, web-20, Ajax, Ajax Techniques, css, Download Source code, jQuery, loadStyleSheet, Night theme, Style Switcher</itunes:keywords><feedburner:origLink>http://clickontech.net/2009/03/creating-an-amazing-jquery-style-switcher-with-ajax-techniques/</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/ClickOnTech/~5/xonlF9sO8Tg/demo.zip" length="53710" type="application/x-zip-compressed" /><feedburner:origEnclosureLink>http://nettuts.s3.amazonaws.com/055_jQueryStyleSwitcher/demo.zip</feedburner:origEnclosureLink></item>
		<item>
		<title>ZAAD The first Palestinian Search Engine</title>
		<link>http://feedproxy.google.com/~r/ClickOnTech/~3/H3RdblK9tRw/</link>
		<comments>http://clickontech.net/2009/03/zaad-the-first-palestinian-search-engine/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 23:02:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Google]]></category>

		<category><![CDATA[Startup]]></category>

		<category><![CDATA[web-20]]></category>

		<category><![CDATA[arabic content]]></category>

		<category><![CDATA[first Palestinian Search Engine]]></category>

		<category><![CDATA[MSN]]></category>

		<category><![CDATA[Palestine]]></category>

		<category><![CDATA[Sadaf Technology Development]]></category>

		<category><![CDATA[Search Engine]]></category>

		<category><![CDATA[tech]]></category>

		<category><![CDATA[ZAAD]]></category>

		<category><![CDATA[zaad.ps]]></category>

		<guid isPermaLink="false">http://clickontech.net/?p=32</guid>
		<description><![CDATA[
In next  few days Sadaf Technology Development Company will lunch a new unique internet  project in Palestine and meddle east called ZAAD.
The hole  meaning of ZAAD in the Arabic language that thing help the traveler and he need  during the trip.
So if a  one of us need to search for [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "ZAAD The first Palestinian Search Engine", url: "http://clickontech.net/2009/03/zaad-the-first-palestinian-search-engine/" });</script>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft" style="float: left;" src="http://www.zaad.ps/images/zaad-logo-en.gif" alt="http://www.zaad.ps/images/zaad-logo-en.gif" /></p>
<p class="western" style="margin-bottom: 0.14in; text-align: justify;"><a title="ZAAD The first Palestinian Search Engine" href="http://www.zaad.ps" target="_blank">In next  few days </a><a href="http://www.sadaf.ps" target="_blank">Sadaf Technology Development</a> Company will lunch a new unique internet  project in Palestine and meddle east called <a title="Zaad" href="http://www.zaad.ps" target="_blank">ZAAD</a>.</p>
<p style="margin-bottom: 0in; text-align: justify;">The hole  meaning of <a title="Zaad" href="http://www.zaad.ps" target="_blank">ZAAD</a> in the Arabic language that thing help the traveler and he need  during the trip.</p>
<p style="margin-bottom: 0.14in; text-align: justify;">So if a  one of us need to search for some information like &#8220;how to cook Mjadara&#8221; he may  use <a href="http://google.com" target="_blank">Google search engine</a> or <a href="http://www.msn.com" target="_blank">msn</a> to found any information related with &#8220;Mjaddra&#8221;  and he will found many result about that ,the life became  easy.<img title="More..." src="http://clickontech.net/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<p style="margin-bottom: 0.14in; text-align: justify;">Therefore My Team in <a href="http://www.sadaf.ps" target="_blank">Sadaf Technology Development</a> develops new solutions to help people to find  specific information that not implement in search information like  Google.</p>
<p style="margin-bottom: 0.14in; text-align: justify;">For example when any one needs to search about technology company in Palestine he will use Google or any search engine or directory but I sour he will can&#8217;t find good information.</p>
<p style="margin-bottom: 0.14in; text-align: justify;">But if you use <a title="Zaad" href="http://www.zaad.ps" target="_blank">ZAAD</a> and just type &#8220;tech&#8221; in search box you will found not only many information but specific information like company name ,logo, contact numbers ,address&#8217;s ,emails, website and contact person and his title.</p>
<p style="margin-bottom: 0.14in; text-align: justify;">From  this point we develop <a title="Zaad" href="http://www.zaad.ps" target="_blank">ZAAD</a> and work hard on this project for five month to  release it soon.</p>
<p style="margin-bottom: 0.14in; text-align: justify;"><a title="Zaad" href="http://www.zaad.ps" target="_blank">ZAAD</a> team not normal team,All of  us have a job in <a title="Zaad" href="http://www.zaad.ps" target="_blank">ZAAD</a> and we complete each other.</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a8292da8-7a17-4b05-b481-24af56c3f704&amp;title=ZAAD+The+first+Palestinian+Search+Engine&amp;url=http%3A%2F%2Fclickontech.net%2F2009%2F03%2Fzaad-the-first-palestinian-search-engine%2F">ShareThis</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/pbOT75zYbq5UBunsQlvq4FWWWT0/0/da"><img src="http://feedads.g.doubleclick.net/~a/pbOT75zYbq5UBunsQlvq4FWWWT0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pbOT75zYbq5UBunsQlvq4FWWWT0/1/da"><img src="http://feedads.g.doubleclick.net/~a/pbOT75zYbq5UBunsQlvq4FWWWT0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ClickOnTech/~4/H3RdblK9tRw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clickontech.net/2009/03/zaad-the-first-palestinian-search-engine/feed/</wfw:commentRss>
		<feedburner:origLink>http://clickontech.net/2009/03/zaad-the-first-palestinian-search-engine/</feedburner:origLink></item>
		<item>
		<title>Best Tips to Optimize Ruby On Rails with Ajax</title>
		<link>http://feedproxy.google.com/~r/ClickOnTech/~3/YM6bDTjYux0/</link>
		<comments>http://clickontech.net/2009/02/best-tips-to-optimize-ruby-on-rails-with-ajax/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 18:32:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[How-To]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[Tutorials]]></category>

		<category><![CDATA[web-20]]></category>

		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[AJAX Application]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[inspect_raw]]></category>

		<category><![CDATA[Optimize]]></category>

		<category><![CDATA[ror]]></category>

		<category><![CDATA[SQL Queries]]></category>

		<guid isPermaLink="false">http://clickontech.net/?p=31</guid>
		<description><![CDATA[When Google first unveiled GMail, then  GMaps, a firestorm of interest and  activity was generated — not just in those Google applications, but the  technologies that powered them.
These web programming techniques (now, of course, known collectively as AJAX) have become incredibly popular, especially among Web 2.0  startups and their early adopters.
The [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Best Tips to Optimize Ruby On Rails with Ajax", url: "http://clickontech.net/2009/02/best-tips-to-optimize-ruby-on-rails-with-ajax/" });</script>]]></description>
			<content:encoded><![CDATA[<p>When Google first unveiled <a href="http://gmail.google.com/">GMail</a>, then  <a href="http://maps.google.com/">GMaps</a>, a firestorm of interest and  activity was generated — not just<img class="alignright" style="margin: 30px; float: right;" title="Ruby on Rails" src="http://thinkvitamin.com/images/articles/features/optimize-ajax/rails_logo_remix.gif" alt="" width="110" height="140" /> in those Google applications, but the  technologies that powered them.</p>
<p>These web programming techniques (now, of course, known collectively as <span class="caps">AJAX</span>) have become incredibly popular, especially among Web 2.0  startups and their early adopters.</p>
<p>The developers of <a href="http://rubyonrails.org/">Ruby on Rails</a> recognized early on that allowing RoR developers to easily <span class="caps">AJAX</span>-ify their webapps would be a great addition to the  framework.</p>
<p>With the addition of <a href="http://www.oreilly.com/catalog/rjsrails/">RJS Templates</a> to Rails core,  the <span class="caps">AJAX</span> bar was lowered even further.</p>
<p>Simple <span class="caps">AJAX</span> requests like incrementing the number of  <a href="http://digg.com/">diggs</a> a story has received, or splicing a comment  into a blog, are remarkably fast, not to mention user friendly.<span id="more-31"></span></p>
<p>What we’ll be addressing today, though, is optimizing ever more complex <span class="caps">AJAX</span> requests that might involve a multitude of <span class="caps">SQL</span> calls and JavaScript rendering techniques.</p>
<p>Not all of the techniques are strictly JavaScript/browser-oriented. The list  was actually derived from the steps that we took to optimize <a href="http://sproutit.com/mailroom">Mailroom</a>, the first app in the <a href="http://www.sproutit.com/">Sproutit</a> suite for small businesses.</p>
<p>Mailroom is built for use with small teams; it can be used to manage shared  email accounts such as support@ and sales@. It combines an ajax-rich front end  with features like tagging, saved replies (for later reuse) and shared internal  conversation notes.</p>
<p><img style="margin: 30px; float: right;" src="/images/articles/features/optimize-ajax/sproutit_logo.gif" alt="" width="150" height="50" />When  we first launched Mailroom, the service was reasonably fast. As we grew and our  server got busier, however, some customers started to complain about how long it  took for some of our <span class="caps">AJAX</span> functions to complete.</p>
<p>The following optimization techniques, though not complete by any means, were  just a few of the methods we used over the course of several weeks to bring  Mailroom, literally, up to speed.</p>
<p>Following the performance boost, Mailroom’s response times for a Load  Conversation call (via <span class="caps">AJAX</span>), went from 2-8 seconds to  averaging less than half a second. Once we added pre-caching (technique #5) on  the client side via JavaScript, clicking on a message resulted in a  near-instantaneous load; sometimes faster than Outlook or Apple Mail.</p>
<h3>Possible Sources of Latency</h3>
<p>When building out your <span class="caps">AJAX</span> application, it’s a good  idea to keep in mind the different sources of latency that can slow down the  user experience. These include:</p>
<ol>
<li>The Database (both in memory and filesystem swap)</li>
<li>App Server Execution &amp; Rendering</li>
<li>The Webserver</li>
<li>The Network</li>
<li>The Browser (only in really complex <span class="caps">AJAX </span>apps)</li>
</ol>
<p>There are others, but we hope this broadly covers them all. We’ll only be  taking a look at a few of these sources, but it’s useful to keep them all in  mind as you build out your app.</p>
<h3>5 Ways You Can Optimize Your Ruby on Rails/<span class="caps">AJAX </span>Application</h3>
<ol>
<li>Optimal Database Indexing</li>
<li>Eliminate Redundant <span class="caps">SQL </span>Queries</li>
<li>Fragment Caching</li>
<li>Response Text Compression/Minimization</li>
<li>Pre-rendering and Client-side JavaScript Caching</li>
</ol>
<h3>1. Optimal Database Indexing</h3>
<p>For many applications, database indexing will be the biggest performance  booster of them all.</p>
<p>Sample output from a Rails log file:</p>
<pre><code>
  Completed in 8.29523 (0 reqs/sec) | Rendering: 2.68176 (32%) | DB: 5.38202 (64%) | 200 OK [http://railsapp.org/action]
</code></pre>
<p>This action would be an ideal candidate for database optimization. If,  however, you see something like <code>DB: 0.05 (5%)</code>, the action is  already spending most of it’s time rendering and there’s probably not a lot you  can do in the way of database indexing.</p>
<p>It used to be somewhat difficult to pinpoint the exact function call in your  Rails app that was generating an <span class="caps">SQL</span> query. But with  last year’s release of Nathaniel Talbot’s <a href="http://blog.talbott.ws/articles/2006/05/17/querytrace-my-first-official-rails-plugin">QueryTrace  plugin</a> for Rails, this query back tracing process got a whole lot  simpler.</p>
<p>After you install the QueryTrace plugin your Rails app (in the ‘development’  environment) will give you output like this in your log/development.log:</p>
<pre><code>
 Conversation Load (0.001538)   SELECT * FROM conversations WHERE (conversations.id = 23453) LIMIT 1
    app/models/feed_observer.rb:14:in `after_create'
    app/controllers/conversation_controller.rb:162:in `send_to'
    script/server:3
</code></pre>
<p>As you can see, it’s now trivial to find the exact call that’s generating the  <span class="caps">SQL</span> database hit.</p>
<p><strong>Adding Indexes via Migrations</strong></p>
<p>The following is a migration’s <em>self.up</em> method to both create an  <em>articles</em> table and add a few indices:</p>
<pre><code>
def self.up     # brings db schema to the next version
  create_table :articles do |t|
    t.column :title,      :string
    t.column :author_id,  :integer
    t.column :body,       :text
    t.column :is_live,    :boolean, :default =&gt; false
  end
  add_index :articles, :author_id
  add_index :articles, [ :author_id, :is_live ], :name =&gt; &#8216;author_live_idx&#8217;
end
</code></pre>
<p>This would create both a single-column index on the author_id, as well as a  multi-column index on author_id and is_live.</p>
<p>When in doubt, use a tool like <a href="http://railsbench.rubyforge.org/">railsbench</a> or the <a href="http://www.softwareverify.com/rubyPerformanceValidator/index.html">Ruby  Performance Validator</a> to see where the bottlenecks are in your Rails  app.</p>
<h3>2. Eliminate Redundant <span class="caps">SQL </span>Queries</h3>
<p><em>Note: this one is more of a “gotcha” applicable to those of us who are  new to Ruby on Rails. (Since I’ve fallen victim to this mistake several times, I  thought it was worth mentioning here.)</em></p>
<p>It’s always a good idea to keep a ‘tail -f log/development.log’ open when you  are developing your Rails apps. (Win32 users can get tail, etc. <a href="http://unxutils.sourceforge.net/">here</a> or use <a href="http://www.cygwin.com/">Cygwin</a> )</p>
<p>You might be surprised at what you find if you are not in the habit of  checking your query logs.</p>
<p>Ever written a quick hack like this?</p>
<pre><code>
  class ApplicationController &lt; ActionController::Base
    def current_member
      return Member.find(@session[:member])
    end
    helper_method :current_member
  end
</code></pre>
<p>Only to discover that you’re actually calling <em>current_member</em> more  than once in a particular controller/view combination? (thus generating multiple  <span class="caps">SQL</span> calls for the same unchanged ActiveRecord  object)</p>
<p>Here’s how to cache the variable in a per-request instance variable so that  the <em>Member.find(session[:member_id])</em> database query only gets called once  per request:</p>
<pre><code>
  class ApplicationController &lt; ActionController::Base
    protected
      def current_member

        @current_member ||= Member.find(session[:member_id])
      end

      helper_method :current_member
    end
  end
</code></pre>
<h3>3. Response Text Compression/Minimization</h3>
<p>Before attempting the below technique, the simplest way to reduce the number  of bits sent across the wire is to enable gzip compression in your web  server.</p>
<p>Some links on gzip compress: <a href="http://httpd.apache.org/docs/2.2/mod/mod_deflate.html">mod_deflate (apache  2.2)</a>, <a href="http://forum.lighttpd.net/topic/7729">thread on configâ€™ing  lighty with gzip</a>, <a href="http://losingmyjob.wordpress.com/2007/05/04/apache-22-mongrel-cluster/">apache  2.2 mod_deflate tutorial</a>.</p>
<p>In the initial version of Mailroom, we were loading the <em>tag  conversation</em> <span class="caps">HTML</span> module via <span class="caps">AJAX</span> for every load conversation request.<img style="margin: 30px; float: right;" src="/images/articles/features/optimize-ajax/mailroom_tags.png" alt="" width="399" height="169" /></p>
<p>There was quite a bit of superfluous <span class="caps">HTML</span> that was  being returned, when all we really needed was the specific tags that this  particular conversation had been tagged with.</p>
<p>By the way, this kind of optimization is helpful when you have one master  page load (where it’s OK to take 1-2 seconds longer), followed by many  successive <span class="caps">AJAX</span> requests that you want to be rendered as  quickly as possible.</p>
<p>We’re also targeting the size of the <span class="caps">AJAX</span> response  text sent back by the server. A 4k response text is of course more preferable to  a 16k one.</p>
<p>Initially, this was the <span class="caps">HTML</span> snippet being returned  for every load conversation <span class="caps">AJAX</span> call:</p>
<pre><code>
</code>
<div id="tag-editor" class="editor tags">
<h1>Choose from the tags below:</h1>
<form method="post">
<div id="tag-cloud">
         … lots of tags  …
</div>

or enter some new tags:
<input id="tag-input" name="tags" size="30" />

 …
    </form>
</div>
</pre>
<p>Instead of returning this whole chunk of <span class="caps">HTML</span> each  call, we are going to load a static, hidden <span class="caps">HTML</span> div  once on the initial page load, and return (via <span class="caps">AJAX</span>,  each call) just the bare essential tag data needed to render this static <span class="caps">HTML</span> into a per-conversation tag editor.</p>
<p>First we create a simple Tags object in javascript (with a little help from  <a href="http://www.sergiopereira.com/articles/prototype.js.html">Prototype</a>):</p>
<pre><code>
  Tags = Class.create();
  Tags.prototype =  {
    initialize: function(conversation_id, tag_str, tag_ids) {
      this.conversation_id  = conversation_id;
      this.tag_str          = tag_str;
      this.tag_ids          = tag_ids;
    }
  }
</code></pre>
<p>In your main page load, we render a <em>static</em> version of the tag editor  template that stays in a hidden div.</p>
<p>The static <span class="caps">HTML</span> in a hidden div:</p>
<pre><code>
</code>
<div id="tag-editor-static" style="display: none;">

        <span id="tag-listing-static">Tags: #TAGS#</span> 
      … a lot more static HTML.  this olds a static list of tags   checkboxes for this organization  …
</div>
</pre>
<p>When a conversation is loaded, the contents of the hidden div will be read in  via JavaScript. Regular expressions are performed against it on the fly to  replace elements like <em>#TAGS#</em> with actual per-conversation data returned  via the <span class="caps">AJAX</span> request.</p>
<p>Here we create a simple JavaScript function that pulls in the contents of the  hidden div, performs regex replacements on it, and completes with a Prototype  Insertion call of the newly rendered <span class="caps">HTML</span>.</p>
<pre><code>
  loadTagEditor: function(tags) {
    var tags_static = $('tag-editor-static').innerHTML;
    var regex = /-static/g;
    tags_static = tags_static.replace(regex, '');  # Strip out the "-static" portion of the ids

    var tags_regex = /#TAGS#/;
    tags_static = tags_static.replace(tags_regex, tags.tag_str);
    ...
    new Insertion.After('the-widget-before-tag-editor', tags_static);
  }
</code></pre>
<p>Now whenever a conversation is selected, we just need to make sure the  “loadTagEditor(tags)” method is called.</p>
<p>There are a few gotchas you’ll want to watch out for with this technique,  such as not ending up with duplicate ids in your <span class="caps">HTML</span>.</p>
<p>In the hidden, static divs, one way to avoid duplicate ids is to append all  your id names with ”-static” and then strip out the ”-static” when you load in  your hidden div <span class="caps">HTML</span>. (that’s what we do above with the  Regular Expression)</p>
<p>Now, our original chunk of <span class="caps">HTML </span>(which can really add  up if you have 20 – 50 tags) that was previously being returned back with each  Load Conversation <span class="caps">AJAX</span> request—is now replaced with a  few simple lines of JavaScript:</p>
<pre><code>
  tags = new Tags(460857, 'home Marketing Development', new Array(1251, 1252, 1460));
  loadTagEditor(tags);
</code></pre>
<p>This is the Rails <span class="caps">RJS </span>(inside show_conversation.rjs,  perhaps) that would be used to generate the above JavaScript:</p>
<pre><code>
  page &lt;&lt; "tags = new Tags(#{@conversation.id}, '#{@conversation_tags * ' '}', new
Array(#{@conversation_tag_ids.inspect_raw}));"
  page &lt;&lt; "ch.loadTagEditor(tags);"
</code></pre>
<h3>4. Fragment Caching</h3>
<p>Here we’ll use the ever so Web 2.0 example here of the tag cloud. These  little beauties can be expensive to calculate in <span class="caps">SQL</span>.  Once you’re site has been <a href="http://techcrunch.com/">TechCrunched</a>,  you’ll want to make sure that your tag cloud (especially miniature versions  loaded on heavily-trafficked pages, or via <span class="caps">AJAX</span>) gets  cached as a Rails HTML fragment.</p>
<pre><code>
  class TagController &lt; ApplicationController

    def tag_cloud
      fragment = read_fragment("myrailsapp.com/tagcloud")
      if not fragment
        setup_tag_cloud
        fragment = render :template =&gt; “tag/tag_cloud”
        write_fragment(”myrailsapp.com/tagcloud”, fragment)
      else
        #logger.info “Fragment cache read: #{fragment}”
        render :text =&gt; fragment and return
      end
    end

    private
      def setup_tag_cloud
        # Expensive SQL queries here …
      end
  end
</code></pre>
<p><em>Uncomment the logger.info call to verify that your fragment really is  being read from the cache!</em></p>
<p>Admittedly, fragment caching in Rails can make your code less maintainable.  It’s a technique that should really only be used for expensive-to-compute,  fairly static portions of your site.</p>
<p>There are several helpful rails caching plugins on the <a href="http://wiki.rubyonrails.org/rails/pages/Plugins">Plugins page</a> on the  RoR wiki.</p>
<p>One simple but effective plugin is the <a href="http://happygiraffe.net/blog/archives/2006/05/08/timedfilestore-plugin-0-1">Timed  File Store</a> which allows you to set an expiration (e.g. 15 minutes) on your  cached fragments.</p>
<h3>5. Client-side JavaScript Caching and Pre-rendering</h3>
<p>If you <em>really</em> want to wow your users, pre-cache commonly called  <span class="caps">AJAX</span> components into hidden divs so that the only time  necessary to load them is the time it takes their browser to execute (eval) the  pre-rendered JavaScript.</p>
<p>In the following example, we’ll cache conversations into hidden divs so that  whenever a user clicks on a conversation, it’ll load almost instantaneously.</p>
<p>The pre-caching functions will all access a single global JavaScript variable  that holds an array. That array will be populated on the first page load with  the conversation IDs that should be cached.</p>
<p>Here’s the inline JavaScript (placed at the bottom of the main rendered <span class="caps">HTML</span> page):</p>
<pre><code>
  <script type="text/javascript"><!--mce:0--></script>
</code></pre>
<p>Here are the JavaScript functions that do the preloading/caching:</p>
<pre><code>
  // Uses JavaScript's "setTimeout" function to call the "loadFirst" method (once per id).
  //    This method handles the logic of delaying the first load (to give the parent HTML page
  //    time to load) and putting a delay between each AJAX load so as to not overwhelm
  //    the browser &amp; server.
  function preLoader() {
    var cnt = 0;
    var offset = 250;              # Milliseconds to delay the initial load
    var delay_per_load = 500;      # Milliseconds between each load
    ids.each(
      function (id) {
        setTimeout("loadFirst()", (offset   (cnt * delay_per_load)));
        if (id &gt; 0) {
          cnt  = 1;
        }
      }
    );
  }
  // Pops off the first element in the 'load_ids' array and loads it
  function loadFirst() {
    var id = load_ids.pop();
    if (id &gt; 0) {
      preloadConversation(id);
    }
  }
  // Preloads the conversation specified by creating a new AJAX request -- Note the use of Prototype's
  //   "onComplete" method to specify that "cacheConversation" should be called when the AJAX request
  //   has been completed and its data returned.
  preloadConversation = function(conversation_id) {
    new Ajax.Request('/mailroom/conversation/'   conversation_id   '?preload=true', {asynchronous:true, evalScripts:false, onComplete: cacheConversation});
  }
  cacheConversation = function(originalRequest) {
    // ... omitting some "clever" hacks used to get the conversation id ('conv_id' variable) ...
    var hidden_div_id = 'pre-'   conv_id;
    // Set the Inner HTML of a hidden div to the JavaScript passed back that was generated by Rails RJS templates:
    $(hidden_div_id).innerHTML = encode(originalRequest.responseText);
  }
</code></pre>
<p>The following is the JavaScript function used to either A) load the cached  conversation, or B) if the cache is not present, load the conversation directly  off the server:</p>
<pre><code>
  loadConversation: function(id) {
    if ($('pre-'   id).innerHTML != '') {
      var decoded = decode($('pre-'   id).innerHTML);
      eval(decoded);
    } else {
      // Load the conversation via a new Ajax call (eval'ing the result by setting "evalScripts:true",
      //    then caching it via the onComplete parameter).
      new Ajax.Request('/mailroom/conversation/'   id, {asynchronous:true, evalScripts:true, onComplete: cacheConversation});
    }
  }
</code></pre>
<p>Phew. Well, there you have it. JavaScript, long the domain of cut n’ paste  <span class="caps">HTML</span> jockeys, has proven in recent years to be a  formidable challenger to Flash (and Applets, remember those), once hailed as the  future of interactive web applications. Of course, each has their place and own  unique advantages and disadvantages.</p>
<p>While most applications wouldn’t need the kind of firepower described in this  technique, hopefully you’ve learned a little bit about JavaScript, Rails and  <span class="caps">RJS</span> along the way.</p>
<h3>Footnote</h3>
<p>The inspect_raw method used in technique #5 is a custom method we added to  the Array class. <a href="http://onwebapps.com/projects/ajax-rails-footnotes/">Go here</a> to learn  more about this method and how we implemented it.</p>
<p>from :http://thinkvitamin.com/features/ajax/5-ways-to-optimize-ajax-in-ruby-on-rails/</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a8292da8-7a17-4b05-b481-24af56c3f704&amp;title=Best+Tips+to+Optimize+Ruby+On+Rails+with+Ajax&amp;url=http%3A%2F%2Fclickontech.net%2F2009%2F02%2Fbest-tips-to-optimize-ruby-on-rails-with-ajax%2F">ShareThis</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/jprczE1Ig42IPCf-cpQ2FhzO49k/0/da"><img src="http://feedads.g.doubleclick.net/~a/jprczE1Ig42IPCf-cpQ2FhzO49k/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/jprczE1Ig42IPCf-cpQ2FhzO49k/1/da"><img src="http://feedads.g.doubleclick.net/~a/jprczE1Ig42IPCf-cpQ2FhzO49k/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ClickOnTech/~4/YM6bDTjYux0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clickontech.net/2009/02/best-tips-to-optimize-ruby-on-rails-with-ajax/feed/</wfw:commentRss>
		<feedburner:origLink>http://clickontech.net/2009/02/best-tips-to-optimize-ruby-on-rails-with-ajax/</feedburner:origLink></item>
		<item>
		<title>Google launched a new version of the Google Translation</title>
		<link>http://feedproxy.google.com/~r/ClickOnTech/~3/8DhBfJD52_Y/</link>
		<comments>http://clickontech.net/2009/02/google-launched-a-new-version-of-the-google-translation/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 13:37:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Google]]></category>

		<category><![CDATA[ajeeb]]></category>

		<category><![CDATA[arabic]]></category>

		<category><![CDATA[arabic content]]></category>

		<category><![CDATA[english]]></category>

		<category><![CDATA[Google Translation]]></category>

		<category><![CDATA[languages]]></category>

		<category><![CDATA[Translation]]></category>

		<guid isPermaLink="false">http://clickontech.net/?p=30</guid>
		<description><![CDATA[Google launched today a new version of the Google Translation, which enables the user to translate words from Arabic into English and many different languages and become easy and even improved a mechanism to facilitate the use of the translation tool also included a number of amendments to the motherboard and acts as an addendum [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Google launched a new version of the Google Translation", url: "http://clickontech.net/2009/02/google-launched-a-new-version-of-the-google-translation/" });</script>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.picamatic.com/show/2009/02/22/01/07/2385695_150x55.gif" alt="" />Google launched today a new version of the <a href="http://translate.google.com" target="_blank">Google Translation</a>, which enables the user to translate words from Arabic into English and many different languages and become easy and even improved a mechanism to facilitate the use of the translation tool also included a number of amendments to the motherboard and acts as an addendum discharges names Tcetkvi not so much but also become was also translated by the words in the sentences of the same context and also added the possibility of his hearing the word translated audio to improve pronunciation and fluency effects.</p>
<p><span id="more-30"></span><br />
And superior service to many of Google&#8217;s translation services provided by ajeeb and the number of Arabic sites and that is supposed to be high on the first rank in this area.</p>
<p><a href="http://sharethis.com/item?&wp=2.5.1&amp;publisher=a8292da8-7a17-4b05-b481-24af56c3f704&amp;title=Google+launched+a+new+version+of+the+Google+Translation&amp;url=http%3A%2F%2Fclickontech.net%2F2009%2F02%2Fgoogle-launched-a-new-version-of-the-google-translation%2F">ShareThis</a></p>
<p><a href="http://feedads.g.doubleclick.net/~a/QJMHl3iLKynSPRUsB19KpTJ9zMI/0/da"><img src="http://feedads.g.doubleclick.net/~a/QJMHl3iLKynSPRUsB19KpTJ9zMI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QJMHl3iLKynSPRUsB19KpTJ9zMI/1/da"><img src="http://feedads.g.doubleclick.net/~a/QJMHl3iLKynSPRUsB19KpTJ9zMI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ClickOnTech/~4/8DhBfJD52_Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://clickontech.net/2009/02/google-launched-a-new-version-of-the-google-translation/feed/</wfw:commentRss>
		<feedburner:origLink>http://clickontech.net/2009/02/google-launched-a-new-version-of-the-google-translation/</feedburner:origLink></item>
	<media:rating>nonadult</media:rating></channel>
</rss>
