From: "Saved by Windows Internet Explorer 8"
Subject: http://www.networkworld.com/news/tech/2010/062110-tech-update.html
Date: Wed, 23 Jun 2010 23:21:26 -0700
MIME-Version: 1.0
Content-Type: multipart/related;
	type="multipart/alternative";
	boundary="----=_NextPart_000_0000_01CB132A.CD361960"
X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7600.16543

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ad.doubleclick.net/ad/idge.nww.convergencevoip/;pos=dogear;sz=1x1;tile=5;dcopt=ist;author=;cid=;kw=;ord=6910337336?

R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw==

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://secure.quantserve.com/pixel/p-25K88fxDSEn9Y.gif?tags=nww

R0lGODlhAQABAAAAACwAAAAAAQABAID///8AAAACAkQBADs=

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ad.doubleclick.net/ad/idgt.data.nertworkworld/data_collection_networkworld;sz=1x1;ord=123456789?

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iii
gD//2Q==

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.networkworld.com/graphics/i/logo.gif

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

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.networkworld.com/gif/4shim.gif

R0lGODlhBAAKAIAAAAAAAP///yH5BAEAAAEALAAAAAAEAAoAQAIFjI+py1gAOw==

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://s0.2mdn.net/viewad/2543606/Cisco_banner_728x90-1.gif

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
Xsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrjoysNWIVsGPLnk27tu3buHPr3s27
t+/fwIMLH068uPHjyJMrX868ufPn0KNLn577tQpq1AhkJ8C9u/fv4MOL/x9Pvrz58+jTq1/Pvr37
9/Djy59Pv779+/jz69/Pv7///+E5ENt2ABZo4IEIJqjgggw26OCDEEYoIYADdpcBARlcmCGGGnbI
4YcbhuihiCCOaGKJKJKo4okrpsjiiy7G2OKMMNIoY4043qijjTzm2OOOPgYJ5JA/FimkkUQeqWSS
TCLp5JJPNgnllFIyCRt23GWo5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjm
qeeefI555XZ9BirooIQWauihiCaq6KKMNupooH9m+eiklFZq6aWYZqrpppx2KuaVFmY4QAajlkrq
qaamiuqqqrbK6quuxv8K66yy1krrrbbmiuuuuvbK66++BgvssMIWS+yxxiaL7LLKNsvss85GC+20
0lYLK6gcikrtttZ2y+233oYL7rjilkvuueami+666rbL7rutYqvtAPTWa++9+Oar77789uvvvwAH
LPDABBds8MEIJ6zwwgw37PDDEEcs8cQUV2zxxfrKKyrGHHfs8ccghyzyyCSXbPLJKKdsscalquzy
yzDHLPPMNNds8804Z4wlhzn37PPPQAct9NBEF03wdYCSavTSTDft9NNQRy31ANdZOPXVWGet9dZc
dw1w1Tx7LfbYZJdt9tkl74wh2my37fbbcMe988Zx12333Xjn7bPaSuv/7fffgAcueMRz21vAAIcn
jvjiijfO+OOORw755JJXTvnllmeO+eaad875556HDvroopdO+ummp4766qq3zvrrrscO++yy1077
7bbnTjmBSidewO/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334IcvPvG8
1zv++einr/767Lfv/vvwxy///PSLXz7i9eev//789+///wAMoAAHeLz7EfCACEygAhfIwAY68IHP
8w6pIEjBClrwghjMoAY3CLxQ0YuDIAyhCEdIwhKaUHkSxN8JV8jCFrrwhTB8n9VUqIAC1PCGNswh
Dndowx8kgIc+5KEQ/3VIxCEasYhIPKISk8jEJTqxiTn8ATKG6IAfEDEBP8hiFtcQgykWAIta/EEE
+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
Ifd4SEMmEpGLVGQjGflIm/TxjGCcpCMtCUlMXlKTmeTkJj0pR0l+UpSdJOUoTVlKVJ5SlY8MZSpd
uUpYvlKWsaTlLG1ppFbWUpe35OUufdlLYP5yd7kMZjGFaUxkHlOZyWTmSoi5TGg2U5rRpOY0ranD
Z/9eU5vV5OY2vdlNcIIlm+Ek5zfNWU50ntOV41RnOt3ZTni+U55bZOc87RlPfN5Tn/ksTD35uU+A
/lOgAS2nPwk6UIQeVKEJLaZBGbpQiD5UohE1pEMpOlGMXlSjGYWiRTm6UZB+VKQhxaX6iDhSlJI0
pStVKZKA9bn3UFGmM6VpTW16U5zmVKc75WlPffpToAZVqEMlalGNelSkJlWpS2VqU536VKhGVapT
1alJb0JVrGZVq1vlale9+lWwhlWsYyVrWananWNRUQhrZWtb3fpWuMZVrnOla13tele85lWve+Vr
X/36V8AGVrCDJWxhDXtYxCZWsYtlbGMdK9e0rhX/AUJAwGQrS1nLZhazm71sZzXrWc5+VrShJS1o
TTva05YWtatVbWtT+1rWwta1saXtbG0rW9zWNre31W1vefvb3QbXt8IF7nCNW1zkEle5x11ucpn7
XOcmlyGSrWwiEGBd7F5Xu9nl7na9213wfle84SXveM1bXvSeV73pZe963dte+L5XvvGl73ztW1/8
3le/+eXvfv3bXwD/V8ABJvCADVxgBJ8XAJhNRINRkIgHRxjCE5ZwhSl8YQtnGMMb1nCHOfxhD4cY
xCMWcYlJfGITpxjFK1Zxi1n8YhfHGMYzlnGNaXxjG+cYxzvWcY95/GMfBxnEDEZBkY18ZCQnWclL
YmZyk538ZChHWcpTpnKVrXxlLGdZy1vmcpe9/GUwh1nMYyZzmc18ZjRDubpFdkGb3fxmOMdZznOm
c53tfGc851nPe+Zzn/38Z0AHWtCDJnShDX1oRCda0YtmdKMd/WhI3zkgADs=

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: multipart/alternative;
	boundary="----=_NextPart_001_000D_01CB132A.CD36DCB0"


------=_NextPart_001_000D_01CB132A.CD36DCB0
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.networkworld.com/cgi-bin/mailto/x.cgi?pagetosend=/news/tech/2010/062110-tech-update.html&pagename=/news/tech/2010/062110-tech-update.html&pageurl=http://www.networkworld.com/news/tech/2010/062110-tech-update.html&site=wirelessmobile

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>http://www.networkworld.com/news/tech/2010/062110-tech=
-update.html</TITLE>
<META content=3D"text/html; charset=3Dutf-8" =
http-equiv=3DContent-Type><!--=0A=
rxptopic:  (none)<br>=0A=
rxptopicname: (none)<br>=0A=
--><!--if expr=3D"${HTTP_REFERER} =3D /riverbed/" --><!--set =
var=3D"site" value=3D"dimension" --><!--set var=3D"adpagename" =
value=3D"Riverbed_C766" --><!--endif --><!-- Added by JCroci 8/4/08 per =
Justine's request--><!--if expr=3D"${rxprimaryadtopic} !=3D ''" =
--><!--set var=3D"site" value=3D"${rxprimaryadtopic}" =
--><!--endif--><!--set var=3D"kw" value=3D"${adkeywords}" --><LINK=20
title=3D"Network World RSS feed on convergence" rel=3Dalternate=20
type=3Dapplication/rss+xml =
href=3D"http://www.networkworld.com/rss/convergence.xml">
<SCRIPT type=3Dtext/javascript>=0A=
  var outerref =3D new String("(none)");=0A=
  var nwchannel =3D '(none)';=0A=
  var rxprimarytopic =3D '(none)';=0A=
</SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
    OPG =3D window.OPG || {};=0A=
=0A=
    NW =3D window.NW || {};=0A=
    NW.PageInfo =3D NW.PageInfo || {};=0A=
    NW.PageInfo =3D function() {=0A=
        return{=0A=
            cookie_domain: "networkworld.com",=0A=
			rxprimarytopic: '(none)',=0A=
			pgtype: '(none)',=0A=
			subtopic: '',=0A=
            subtopicid: 0,=0A=
            outerref: '(none)',=0A=
            nwchannel: '(none)',=0A=
            request_uri: =
'/cgi-bin/mailto/x.cgi?pagetosend=3D/news/tech/2010/062110-tech-update.ht=
ml&amp;pagename=3D/news/tech/2010/062110-tech-update.html&amp;pageurl=3Dh=
ttp://www.networkworld.com/news/tech/2010/062110-tech-update.html&amp;sit=
e=3Dwirelessmobile',=0A=
            doc_uri: '/cgi-bin/mailto/x.cgi',=0A=
            site: 'convergencevoip',=0A=
            rxid: '(none)',=0A=
            nodeid: '(none)'	=0A=
        };=0A=
    }();=0A=
var jq_nodeid =3D "(none)";=0A=
var jq_request_uri =3D =
"/cgi-bin/mailto/x.cgi?pagetosend=3D/news/tech/2010/062110-tech-update.ht=
ml&amp;pagename=3D/news/tech/2010/062110-tech-update.html&amp;pageurl=3Dh=
ttp://www.networkworld.com/news/tech/2010/062110-tech-update.html&amp;sit=
e=3Dwirelessmobile";=0A=
var jq_site =3D "convergencevoip";=0A=
var jq_doc_uri =3D "(none)";   =0A=
 var jq_rxid =3D "(none)";=0A=
    if (NW.PageInfo.pgtype=3D=3D'article') doubleclick_article_page =3D =
true;=0A=
    var predates =3D new Array();=0A=
</SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.networkworld.com/includes/r08/doubleclick_ads.js?2532">=
</SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.networkworld.com/includes/r08/demandbase.js?132"></SCRI=
PT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://api.demandbase.com/api/v1/ip.json?token=3Dbeebedc26d45cee0d=
855facb1672946527973cfd&amp;callback=3DOPG.Demandbase.dbase_parse"></SCRI=
PT>
<!-- NWW Ad --><!-- begin DogEar ad ad -->
<SCRIPT language=3DJavaScript type=3Dtext/javascript> =0A=
//<![CDATA[=0A=
document.write('<script language=3D"JavaScript" src=3D"'+ =
OPG.Doubleclick.processAdUrl('http://ad.doubleclick.net/adj/idge.nww.conv=
ergencevoip/;pos=3Ddogear;sz=3D1x1;tile=3D5;dcopt=3Dist;author=3D;cid=3D;=
kw=3D;') +'" type=3D"text/javascript"><\/scr'+'ipt>'); =0A=
//]]>=0A=
</SCRIPT>
<NOSCRIPT>
<META name=3DGENERATOR content=3D"MSHTML 8.00.7600.16588"></HEAD>
<BODY bgColor=3D#ffffff><A=20
href=3D"http://ad.doubleclick.net/jump/idge.nww.convergencevoip/;pos=3Ddo=
gear;sz=3D1x1;tile=3D5;dcopt=3Dist;author=3D;cid=3D;kw=3D;ord=3D691033733=
6?"=20
target=3D_blank><IMG border=3D0 alt=3D""=20
src=3D"http://ad.doubleclick.net/ad/idge.nww.convergencevoip/;pos=3Ddogea=
r;sz=3D1x1;tile=3D5;dcopt=3Dist;author=3D;cid=3D;kw=3D;ord=3D6910337336?"=
=20
width=3D1 height=3D1></A></NOSCRIPT> <!-- end DogEar ad ad -->
<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.networkworld.com/includes/jqlib/exp_nwLib_head-min.js">=
</SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
	/*(function() {=0A=
		$("meta").each(function (i) {=0A=
			if(this.name && this.content) {=0A=
				//alert(this.name + " - " + this.content);=0A=
				NW.PageInfo[this.name] =3D this.content;=0A=
			}=0A=
		});=0A=
	})();*/=0A=
</SCRIPT>
<!-- MIKEG - may not need this -->
<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.networkworld.com/includes/main08.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.networkworld.com/includes/js/_head.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
/* Gets inform links from url and write to page */=0A=
=0A=
=0A=
=0A=
var infRelatedLinks =3D new Array();=0A=
=0A=
=0A=
</SCRIPT>

<SCRIPT language=3Djavascript>
							=09
							var rxprimarytopicid =3D "0";
											 									var download =3D new Array();
							 				download[0] =3D new NW.SpecialResources.linkObj("McAfee =
Email and Web Security Appliance =
Trial","http://www.networkworld.com/rxc/185606/nwwlib_dl","15% better =
malware detection rate and 20% better spam and phishing catch rate - =
simply more...");	=09
							 				download[1] =3D new NW.SpecialResources.linkObj("Managing =
More Than Just Inventory With NetSupport =
DNA","http://www.networkworld.com/rxc/188138/nwwlib_dl","Implement =
effective Green IT Asset Management in minutes. With updated Inventory, =
SW Metering, SW...");	=09
							 				download[2] =3D new NW.SpecialResources.linkObj("XenServer: =
Free Download of Server Virtualization =
Software","http://www.networkworld.com/rxc/187058/nwwlib_dl","XenServer =
is an enterprise-class, cloud-proven server virtualization solution - =
available free of...");	=09
							 				download[3] =3D new NW.SpecialResources.linkObj("Free 30-Day =
Desktop Virtualization =
Trial","http://www.networkworld.com/rxc/187059/nwwlib_dl","Download a =
free 30-day trial and experience how XenDesktop delivers a pristine, =
on-demand desktop...");	=09
							 				download[4] =3D new NW.SpecialResources.linkObj("Vyatta Open =
Networking - Router, Firewall, VPN Software - Save 75% over Cisco - Free =
Download","http://www.networkworld.com/rxc/181513/nwwlib_dl","Vyatta =
delivers a full suite of advanced routing and security in a =
software-based network OS that...");	=09
															 									var specialreport =3D new Array();
							 				specialreport[0] =3D new NW.SpecialResources.linkObj("Mobile =
Security: The Essential Ingredient for Today\'s =
Enterprise","http://www.networkworld.com/rxc/190360/nwwlib_sr","Software =
and technology solutions help mitigate security risks and safeguard from =
threats, but they...");	=09
							 				specialreport[1] =3D new =
NW.SpecialResources.linkObj("Gartner Research Report: Magic Quadrant for =
Application Delivery Controllers, =
2009","http://www.networkworld.com/rxc/188183/nwwlib_sr","The market for =
products to improve the delivery of application software over networks =
remains...");	=09
							 				specialreport[2] =3D new =
NW.SpecialResources.linkObj("Executive Guide - Storage =
Virtualization","http://www.networkworld.com/rxc/188077/nwwlib_sr","Stora=
ge virtualization isn\'t a no-brainer technology, and enterprise IT =
executives must carefully...");	=09
							 				specialreport[3] =3D new NW.SpecialResources.linkObj("2009 =
Gartner Magic Quadrant =
Report","http://www.networkworld.com/rxc/185909/nwwlib_sr","Riverbed =
positioned in Leaders quadrant of 2009 Gartner Magic Quadrant for WAN =
Optimization...");	=09
							 				specialreport[4] =3D new NW.SpecialResources.linkObj("Yankee =
Group Mobile WAN Optimization =
Report","http://www.networkworld.com/rxc/185910/nwwlib_sr","Mobile work =
continues to evolve. Your organization must keep up with the demands of =
its mobile...");	=09
															 									var video =3D new Array();
											video[0] =3D new NW.SpecialResources.linkObj("Orion Network =
Performance Monitor =
(NPM)","http://www.networkworld.com/rxc/186640/nwwlib_","Orion Network =
Performance Monitor (NPM) auto discovers your network and immediately =
begins...");	=09
											video[1] =3D new NW.SpecialResources.linkObj("Orion =
Application Performance Monitor =
(APM)","http://www.networkworld.com/rxc/186651/nwwlib_","Orion APM =
delivers at-a-glance top 10 lists, map views, and graphs that enable you =
to quickly...");	=09
											video[2] =3D new NW.SpecialResources.linkObj("Orion NetFlow =
Traffic =
Analyzer","http://www.networkworld.com/rxc/186654/nwwlib_","Orion =
NetFlow Traffic Analyzer (NTA) provides deep visibility into network =
traffic. Leveraging...");	=09
											video[3] =3D new NW.SpecialResources.linkObj("Orion Network =
Configuration Manager =
(NCM)","http://www.networkworld.com/rxc/186655/nwwlib_","Monitoring a =
network is easy. Understanding network performance and isolating =
problems is tough....");	=09
															 									var webcast =3D new Array();
							 				webcast[0] =3D new NW.SpecialResources.linkObj("Lower IT =
Costs with Oracle Database 11g Release =
2","http://www.networkworld.com/rxc/190364/nwwlib_wc","This webcast =
discusses how to; consolidate on low-cost servers and storage grids, =
compress data for...");	=09
							 				webcast[1] =3D new NW.SpecialResources.linkObj("KBOX Systems =
Deployment Appliance vs. Symantec Ghost: Choosing an Enterprise =
Solution","http://www.networkworld.com/rxc/190231/nwwlib_wc","Point-imagi=
ng solutions such as Symantec Ghost automate only parts of the systems =
deployment...");	=09
							 				webcast[2] =3D new NW.SpecialResources.linkObj("Repackaging: =
Time to Say =
Goodbye?","http://www.networkworld.com/rxc/190232/nwwlib_wc","Windows =
Installer repackaging and application management can be a real challenge =
for any IT...");	=09
							 				webcast[3] =3D new NW.SpecialResources.linkObj("Architecting =
Business Intelligence Applications for Change: The Open =
Solution","http://www.networkworld.com/rxc/190049/nwwlib_wc","New and =
changing requirements are facts of application development life. Fueling =
this constant...");	=09
							 				webcast[4] =3D new NW.SpecialResources.linkObj("Forrester:  =
Branch IT Consolidation Using WAN =
Optimization","http://www.networkworld.com/rxc/189846/nwwlib_wc","Live =
Webcast: October 27, 2009 10 a.m. Pacific Time WAN optimization is a =
driving technology...");	=09
																									var whitepaper =3D new Array();
							 				whitepaper[0] =3D new NW.SpecialResources.linkObj("Secure in =
15 - Start with Daily Practices =
","http://www.networkworld.com/rxc/185600/nwwlib_wp","Get the Secure in =
15 toolkit starting with the \"15 Minutes Month-at-a-Glance\" calendar. =
McAfee will...");	=09
							 				whitepaper[1] =3D new NW.SpecialResources.linkObj("McAfee =
Total Protection for Secure =
Business","http://www.networkworld.com/rxc/185601/nwwlib_wp","Secure =
your business across systems, email, web, and data - all with one =
affordable solution...");	=09
							 				whitepaper[2] =3D new NW.SpecialResources.linkObj("A =
Buyer\'s Guide to Data =
Protection","http://www.networkworld.com/rxc/185604/nwwlib_wp","Implement=
ing data protection products and processes can be daunting. Make the =
right decisions by...");	=09
							 				whitepaper[3] =3D new NW.SpecialResources.linkObj("Hands-On =
or Hosted Security: The Choice Is =
Yours","http://www.networkworld.com/rxc/185605/nwwlib_wp","Do you manage =
security on premises or with Security-as-a-Service? Learn about the =
benefits of each...");	=09
							 				whitepaper[4] =3D new NW.SpecialResources.linkObj("Ten Ways =
to Get More from Your IT =
Budget","http://www.networkworld.com/rxc/186244/nwwlib_wp","No matter =
the size of your business, you are always looking for new and innovative =
ways to cut...");	=09
							 				whitepaper[5] =3D new NW.SpecialResources.linkObj("The Top =
Ten Most Forgotten Things When building a Disaster Recovery =
Plan","http://www.networkworld.com/rxc/186246/nwwlib_wp","Every IT =
manager knows the importance of an effective disaster recovery plan. =
Organizations without...");	=09
							 				whitepaper[6] =3D new NW.SpecialResources.linkObj(" Saving =
Your Servers from Disaster using VMware =
Virtualization","http://www.networkworld.com/rxc/186248/nwwlib_wp","Virtu=
alization offers hardware independence - a huge time saver in recovering =
from a disaster. In...");	=09
						=09
</SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://admin.brightcove.com/js/experience_util.js"></SCRIPT>

<SCRIPT>=0A=
</SCRIPT>

<SCRIPT type=3Dtext/javascript>
        var topicid =3D "5";
        var subtopicid =3D "";
        var typeid =3D "5001";
        var __rxroot =3D "http://" + window.location.host + "/Rhythmyx";
      </SCRIPT>

<META name=3Dchannels content=3D"Network World">
<META name=3Ddescription=20
content=3D"Wireless has become a part of our official and personal =
lives. Securing against wireless threats has been and will continue to =
be an important piece in the overall enterprise security puzzle. =
However, as if following Darwin's theory of evolution, wireless security =
myths too are born, evolve and then die to be replaced by new ones.">
<META name=3Dkeywords=20
content=3D"Wireless &amp; Mobile,wireless security myths, Wi-Fi, network =
access control, 802.1X">
<META name=3Dcontenttype content=3DArticle>
<META name=3DpublicationDate content=3D2010-06-21>
<META name=3DDC.date.issued content=3D2010-06-21T10:06-05:00>
<META name=3Darticletype content=3D"Technology  Update">
<META name=3Dauthor=20
content=3D"Gopinath KN, director of engineering, AirTight Networks">
<META name=3Dpublisher content=3D"Network World">
<META content=3DIE=3D7 http-equiv=3DX-UA-Compatible><!-- =
**************** START OMNITURE VARIABLES **************** --><!-- HBX =
-->
<SCRIPT language=3Djavascript1.1>=0A=
var _hbEC=3D0,_hbE=3Dnew Array;function =
_hbEvent(a,b){b=3D_hbE[_hbEC++]=3Dnew Object();b._N=3Da;b._C=3D0;return =
b;}=0A=
var =
hbx=3D_hbEvent("pv");hbx.vpc=3D"HBX0103u";hbx.gn=3D"a.networkworld.com";=0A=
=0A=
=0A=
hbx.acct=3D"DM550223OGAN";=0A=
hbx.pn=3D"printerfriendly_062110-tech-update.html";=0A=
hbx.mlc=3D"CONTENT+CATEGORY";=0A=
hbx.pndef=3D"index.html";=0A=
hbx.ctdef=3D"full";=0A=
hbx.lvm=3D"300";=0A=
hbx.lidt=3D"txl";=0A=
=0A=
=0A=
=0A=
=0A=
hbx.fv=3D"";//FORM VAL MIN=0A=
hbx.lt=3D"auto"; //LINK TR=0A=
hbx.dlf=3D"n";//Dl FILTER=0A=
hbx.dft=3D"n";//Dl FILE NAMING=0A=
hbx.elf=3D"n";//EXIT LINK FILTER=0A=
=0A=
=0A=
=0A=
=0A=
hbx.seg=3D"-1";=0A=
hbx.ci=3D"";=0A=
hbx.hc1=3D"";=0A=
hbx.hc2=3D"";=0A=
hbx.hc3=3D"";=0A=
hbx.hc4=3D"";=0A=
hbx.pec=3D"";//ERROR CODES=0A=
</SCRIPT>

<SCRIPT language=3Djavascript1.1=20
src=3D"http://www.networkworld.com/includes/hbx.js"></SCRIPT>
<!--END HBX --><!--stopindex--><!-- DO NOT REMOVE HEADER_PROMO DIV - =
PLACE CONTENT INSIDE THIS DIV --><!--<div id=3D"header_promo">=0A=
<div id=3D"poll_strip"><span>Our site has been redesigned!</span><a =
href=3D"/includes/r08/poll-layer.html">Add your comments in our =
poll</a></div>=0A=
</div>--><!-- Begin comScore Tag -->
<SCRIPT>=0A=
document.write(unescape("%3Cscript src=3D'" + =
(document.location.protocol =3D=3D "https:" ? "https://sb" : "http://b")=0A=
+ ".scorecardresearch.com/beacon.js' %3E%3C/script%3E"));=0A=
</SCRIPT>

<SCRIPT>=0A=
COMSCORE.beacon({=0A=
c1:2,=0A=
c2:"6035308",=0A=
c3:"",=0A=
c4:"",=0A=
c5:"",=0A=
c6:"",=0A=
c15:""=0A=
});=0A=
</SCRIPT>
<NOSCRIPT><IMG style=3D"DISPLAY: none" alt=3D"" src=3D"" width=3D0 =
height=3D0> </NOSCRIPT><!-- End comScore Tag --><!-- OMNITURE PAGE =
VARIABLES - ONLY FOR RHYTHMYX PUBLISHED PAGES --><!--For printer =
friendly pages --><!-- //OMNITURE PAGE VARIABLES --><!-- SiteCatalyst =
code version: H.20.3. Copyright 1996-2010 Adobe, Inc. All Rights =
Reserved More info available at http://www.omniture.com -->
<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.networkworld.com/includes/jqlib/s_code.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
	var errorpage =3D "(none)";=0A=
	var track_with_omniture =3D "yes";=0A=
	var track_detailed_content =3D "yes";=0A=
	if(errorpage =3D=3D "yes") {=0A=
		s.pageType=3D"errorPage"; // only set if error page=0A=
		track_with_omniture =3D "yes";=0A=
	} else {=0A=
			s.pageName=3D"article:RX212837:Wireless security myths 2010";=0A=
			s.channel=3D"Wireless &amp; Mobile";=0A=
			s.prop1=3D"Wireless &amp; Mobile";=0A=
			s.prop2=3D"article";=0A=
			=0A=
			s.hier1=3D"Wireless &amp; Mobile,content page";=0A=
			=
s.prop50=3D"/cgi-bin/mailto/x.cgi?pagetosend=3D/news/tech/2010/062110-tec=
h-update.html&amp;pagename=3D/news/tech/2010/062110-tech-update.html&amp;=
pageurl=3Dhttp://www.networkworld.com/news/tech/2010/062110-tech-update.h=
tml&amp;site=3Dwirelessmobile";=0A=
			// handles events for applications=0A=
			=0A=
			if(track_detailed_content !=3D "no") {=0A=
				s.prop11=3D"RX212837";=0A=
				s.prop12=3D"Wireless security myths 2010";=0A=
				s.prop13=3D"Network World";=0A=
				s.prop14=3D"Gopinath KN, director of engineering, AirTight Networks";=0A=
				s.prop15=3D"technology  update";=0A=
				s.prop16=3D"2010-06-21";=0A=
				s.prop36 =3D "printer friendly" || om_page_number;=0A=
				=0A=
				=0A=
				=0A=
			}=0A=
			if(typeof(om_search_term) !=3D "undefined") s.prop9 =3D =
unescape(om_search_term); //Found on search page=0A=
		/* Conversion Variables =0A=
		s.campaign=3D"";=0A=
		s.state=3D"";=0A=
		s.zip=3D"";=0A=
		s.events=3D"";=0A=
		s.products=3D"";=0A=
		s.purchaseID=3D"";=0A=
		s.transactionID=3D"";=0A=
		s.eVar1=3D"";=0A=
		*/=0A=
	}=0A=
	/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/=0A=
	if(track_with_omniture !=3D "no") s.t();=0A=
</SCRIPT>
<!-- End SiteCatalyst code version: H.20.3. -->
<SCRIPT =
type=3Dtext/javascript>$.getScript("http://www.google-analytics.com/urchi=
n.js", =
function(){window._uacct=3D"UA-230061-1";window.urchinTracker();});</SCRI=
PT>
<!-- Start Quantcast tag -->
<SCRIPT =
type=3Dtext/javascript>$.getScript("http://secure.quantserve.com/quant.js=
", function() {window._qoptions =3D =
{tags:"nww"};window._qacct=3D"p-25K88fxDSEn9Y";window.quantserve();});</S=
CRIPT>
<NOSCRIPT><A href=3D"http://www.quantcast.com/p-25K88fxDSEn9Y" =
target=3D_blank><IMG=20
style=3D"DISPLAY: none" border=3D0=20
src=3D"http://secure.quantserve.com/pixel/p-25K88fxDSEn9Y.gif?tags=3Dnww"=
 width=3D1=20
height=3D1></A></NOSCRIPT> <!-- End Quantcast tag --><!-- begin =
boomerang ad tag -->
<SCRIPT type=3Dtext/javascript>=0A=
	if (!self.ord) {=0A=
		ord =3D Math.random()*10000000000000000; =0A=
	}=0A=
	document.write('<script type=3D"text/javascript" =
src=3D"http://ad.doubleclick.net/adj/idgt.data.nertworkworld/data_collect=
ion_networkworld;sz=3D1x1;ord=3D' + ord + '?"><\/script>');=0A=
</SCRIPT>
<NOSCRIPT><A=20
href=3D"http://ad.doubleclick.net/jump/idgt.data.nertworkworld/data_colle=
ction_networkworld;sz=3D1x1;ord=3D123456789?"=20
target=3D_blank><IMG border=3D0 alt=3D""=20
src=3D"http://ad.doubleclick.net/ad/idgt.data.nertworkworld/data_collecti=
on_networkworld;sz=3D1x1;ord=3D123456789?"></A>=20
</NOSCRIPT><!-- end boomerang ad tag --><FONT size=3D1>Sponsored=20
by:</FONT><BR><IFRAME id=3Dbanner height=3D90 marginHeight=3D0 =
border=3D0=20
src=3D"http://ad.doubleclick.net/adi/idge.nww.wirelessmobile/;pos=3Dtop;s=
z=3D728x90;tile=3D1;kw=3Dprint;ord=3D1277360528?"=20
frameBorder=3Dno width=3D728 marginWidth=3D0=20
scrolling=3Dno>=0A=
<A =
href=3D"http://ad.doubleclick.net/jump/idge.nww.wirelessmobile/;abr=3D!ie=
;pos=3Dtop;sz=3D728x90;tile=3D1;type=3D;kw=3Dprint;ord=3D1277360528?">=0A=
<IMG =
src=3D"http://ad.doubleclick.net/ad/idge.nww.wirelessmobile/;abr=3D!ie;po=
s=3Dtop;sz=3D728x90;tile=3D1;kw=3Dprint;ord=3D1277360528?" border=3D"0" =
width=3D"728" height=3D"90"></A>=0A=
</IFRAME>
<P><IMG border=3D0 alt=3D"From Network World:"=20
src=3D"http://www.networkworld.com/graphics/i/logo.gif" width=3D218=20
height=3D40><BR><IMG alt=3D"" =
src=3D"http://www.networkworld.com/gif/4shim.gif"=20
width=3D2 height=3D5><BR><FONT size=3D-1>This story appeared on Network =
World=20
at<BR>http://www.networkworld.com/news/tech/2010/062110-tech-update.html
<P></FONT><!--startindex-->
<H1>Wireless security myths 2010 </H1>
<DIV></DIV>
<DIV id=3Darticle_author>By Gopinath KN, director of engineering, =
AirTight=20
Networks, Network World <BR>June 21, 2010 10:46 AM ET </DIV><!-- =
techupdate disclaimer -->
<DIV id=3Ddisclaimer_copy_smallfont>This vendor-written tech primer has =
been=20
edited by Network World to eliminate product promotion, but readers =
should note=20
it will likely favor the submitter's approach.</DIV><!-- Template Type =
Branch --><!--include =
virtual=3D"/includes/community/sharetoolbar.html"-->
<DIV></DIV>
<DIV id=3Darticle_copy>
<DIV id=3Diconimage></DIV><!-- CONTENT GOES HERE-->
<DIV style=3D"FLOAT: right" id=3Dimu><FONT size=3D1>Sponsored =
by:</FONT><BR><IFRAME=20
id=3Dimu height=3D280 marginHeight=3D0 border=3D0=20
src=3D"http://ad.doubleclick.net/adi/idge.nww.wirelessmobile/;pos=3Dimu;s=
z=3D336x280;tile=3D4;kw=3Dprint;ord=3D1277360528?"=20
frameBorder=3Dno width=3D336 marginWidth=3D0=20
scrolling=3Dno>=0A=
<A =
HREF=3D"http://ad.doubleclick.net/jump/idge.nww.wirelessmobile/;pos=3Dimu=
;sz=3D336x280;tile=3D4;kw=3Dprint;ord=3D1277360528?">=0A=
<IMG =
SRC=3D"http://ad.doubleclick.net/ad/idge.nww.wirelessmobile/;pos=3Dimu;sz=
=3D336x280;tile=3D4;kw=3Dprint;ord=3D1277360528?" border=3D0 =
height=3D"280" width=3D"336"></A></IFRAME></DIV><!--include =
virtual=3D"/cgi-bin/pgnav05.pl?pageof=3Dyes&pages=3D${pages}&${compare}" =
--><!--if expr=3D"${compare} =3D /^page\=3D1$/ || ${compare} =3D =
/^page\=3Dfull/" -->
<P class=3Dfirst>Wireless has become a part of our official and personal =
lives.=20
Securing against wireless threats has been and will continue to be an =
important=20
piece in the overall enterprise security puzzle. However, as if =
following=20
Darwin's theory of evolution, wireless security myths too are born, =
evolve and=20
then die to be replaced by new ones. </P>
<P>An improved awareness of wireless security issues seems to have given =
network=20
security professionals enough information to dispel certain wireless =
security=20
myths (e.g., hiding your SSID in beacons will improve security; open APs =
with=20
MAC filters can provide good security; use of static network IP =
addresses can=20
impede an attacker; and WEP can provide good-enough security). =
</P><!--include virtual=3D"/includes/ads-ata.html"-->
<P>The fact that more and more users are moving towards WPA2 deployments =

confirms this. The recent PCI DSS wireless guideline (perhaps spurred by =
the=20
infamous and high-profile TJX security breach) is certainly driving some =
of=20
these developments. However, on the flip side, the wireless security =
community=20
still lacks a clear consensus on how to handle threats caused by =
unmanaged=20
devices. </P>
<P><A=20
href=3D"http://www.networkworld.com/slideshows/2009/012609-lost-backup-ta=
pes.html">10=20
woeful tales of datga gone missing</A></P>
<DIV id=3Drelated_content>
<DL>
  <DT>
  <DD></DD></DL></DIV>
<P>This has led to an evolved set of wireless security myths that are =
probably=20
harder to debunk. Let's take a brief look at them and discuss how =
enterprises=20
can avoid some of these common pitfalls. </P>
<P><B>Myth 1: My enterprise is secure if we do not have a Wi-Fi =
deployment.</B>=20
Many people still think that they are secure if they have a "no Wi-Fi" =
policy.=20
If only wireless security were that simple. In the real world where it =
is not=20
possible to trust everyone, it would be na=C3=AFve to assume the policy =
will never be=20
violated. A disgruntled employee can implant a rogue access point, and =
even=20
well-meaning employees can deploy APs that will inadvertently expose =
your=20
network to rogue activity. Similarly, Wi-Fi client cards that come =
embedded in=20
most of the notebooks today can be a potential source of threat -- they =
can be=20
exploited by attackers. Further, other wireless technologies embedded in =

notebooks such as Bluetooth can create security vulnerabilities. </P>
<P><B>Reality:</B> Assuming that a "no Wi-Fi" policy will secure your =
network is=20
akin to an "Ostrich solution". </P>
<P><B>Myth 2: I use WPA2 in my network and I am secure.</B> If you have =
rolled=20
out your enterprise Wi-Fi deployment with WPA2, it is definitely a good =
start.=20
WPA2 provides a strong cryptographic security for your WLAN APs and =
clients.=20
However, in a large deployment, it is important to ensure that none of =
the=20
devices are accidentally mis-configured, thus potentially exposing =
gaping=20
security holes. Wi-Fi is increasingly used to carry mission-critical=20
applications, so hackers and criminals will continue to focus on =
breaking Wi-Fi=20
security. Researchers have recently demonstrated that WPA-TKIP can be=20
compromised to achieve packet-injection attacks. Similarly, a Cisco WLAN =

controller-based vulnerability that can be exploited to "skyjack" Cisco =
LAPs has=20
been reported. </P>
<P><B>Reality:</B> A WPA2-based WLAN deployment cannot protect you from =
all=20
types of wireless security threats. <!--include =
virtual=3D"/cgi-bin/pgnav.pl?cont=3Dyes&pages=3D${pages}&${compare}"--></=
P><!--if expr=3D"${compare} =3D /^page\=3D2$/ || ${compare} =3D =
/^page\=3Dfull/" -->
<P><B>Myth 3: I have enabled 802.1X port control and I am secure.</B> <A =

href=3D"http://www.ieee802.org/1/pages/802.1x.html">IEEE 802.1X</A> =
port-based=20
access control provides an authentication mechanism for devices wishing =
to=20
communicate via a port (e.g., a LAN port). It allows further =
communication only=20
if the authentication succeeds. If it fails, it disallows further =
communication=20
via the port. The goal of the designers of 802.1X was not to protect a =
network=20
from wireless security threats. As we can expect, 802.1X is completely=20
ineffective against Wi-Fi client-based threats. Even though 802.1X-based =
port=20
control can act as a deterrent to rogue APs, it can be easily bypassed =
via a=20
"hidden rogue AP" -- for example, by an employee with the knowledge of =
802.1X=20
credentials. First, he needs to connect a Layer-2 bridge AP in "silent" =
mode by=20
configuring it with a static IP (so that it never has to reveal identify =
over=20
the wire). Then, he can masquerade the identity (i.e. MAC address) of a =
Wi-Fi=20
client to that of his Ethernet card to deceive 802.1X control. =
</P><!--include virtual=3D"/includes/ads-ata.html"-->
<P><B>Reality:</B> The basic problem here is that 802.1X is a one-time =
(i.e.,=20
entry level) control, but, what you actually need is continuous =
monitoring and=20
control. </P><!--if expr=3D"${compare} !=3D /^page\=3Dfull/" -->
<P><B>Myth 4: My network access control (NAC) solution will protect me =
from=20
Wi-Fi based threats.</B> NAC aims to control access to a network with =
policies.=20
It includes pre-admission endpoint security policy checks (to determine =
who can=20
access the network) and post-admission controls (to determine what they =
can=20
access). Since NAC solutions include some host-based checks (i.e., =
operating=20
system, services running on host), it can protect against the class of =
rogue APs=20
that function as a router or a network address translator. NAC also =
fails=20
against the "silent rogue AP" threat. </P>
<P><B>Reality:</B> Similar to 802.1X, NAC is also an entry level control =
and the=20
arguments made against 802.1X hold true against NACs as well. </P>
<DIV id=3Drelated_content>
<DL>
  <DT>
  <DD></DD></DL></DIV>
<P><B>Myth 5: 802.11w eliminates Wi-Fi denizl-of-service (DoS) =
mattacks.</B> By=20
its very nature, Wi-Fi is susceptible to DoS &nbsp;attacks. The =
unlicensed radio=20
frequency spectrum coupled with a "keep-it-simple" MAC protocol have =
lead to the=20
development of several DoS attacks on Wi-Fi (e.g., RF jamming,=20
deauthentication/disassociation flood, virtual jamming). IEEE recently =
ratified=20
the 802.11w standard, which adds cryptographic protection to a certain =
subset of=20
802.11 Management frames (e.g., deauthentication frames, disassociation =
frames).=20
This definitely mitigates the attacks based on such protected frames. =
</P>
<P><B>Reality:</B> Attacks based on frames that are outside of the =
purview of=20
802.11w protection (e.g., virtual jamming) and RF spectrum based attacks =
are=20
still possible. </P>
<P><B>Myth 6: Part-time security.</B> WLAN infrastructure may support a =
mode=20
wherein an AP can be programmed at times to act as a wireless=20
intrusion-detection sensor. However, if you need a higher level of =
protection,=20
for example to comply with industry or government regulations, you =
really need=20
wireless intrusion-prevention (and not just detection), as switching an =
AP from=20
access to protection provides, at best, part-time protection. A device =
acting as=20
an AP cannot spend significant cycles on security. If it does, it will =
affect=20
its performance as data/voice carrying device. Therefore when this mode =
is=20
employed, such devices end up spending less time on scanning and threat=20
mitigation. This introduces delays in threat detection and can affect=20
blocking/prevention severely. <!--include =
virtual=3D"/cgi-bin/pgnav.pl?cont=3Dyes&pages=3D${pages}&${compare}"--></=
P><!--if expr=3D"${compare} =3D /^page\=3D3$/ || ${compare} =3D =
/^page\=3Dfull/" -->
<P><B>Reality:</B> Part-time sensors fail miserably in reliably blocking =
threats=20
(as such sensors cannot perform a sustained and frequent transmission of =

containment packets). </P><!--include =
virtual=3D"/includes/ads-ata.html"-->
<P>It is clear that threats occurring from unmanaged wireless security =
devices=20
need focused attention. The first step in addressing this issue is to =
define=20
wireless security policies for your enterprise -- define what authorized =

communication is and what is not. </P><!--if expr=3D"${compare} !=3D =
/^page\=3Dfull/" -->
<P>The next step is to evaluate the security risk specific to your =
enterprise=20
and invest in specialized tools such as a wireless intrusion=20
detection/prevention system. Last, but not least, wireless security is =
also a=20
people problem and user education goes a long way in mitigating the =
security=20
risks. </P>
<P><I>AirTight Networks specializes in wireless security and performance =

management. It provides customers cutting-edge wireless intrusion =
detection and=20
prevention (WIPS) solutions to automatically detect, classify, block and =
locate=20
current and emerging wireless threats.</I></P>
<P><A href=3D"http://www.networkworld.com/topics/wireless.html" =
target=3Dblank>Read=20
more about wireless &amp; mobile</A> in Network World's Wireless &amp; =
Mobile=20
section. </P><!--include virtual=3D"/includes/global-pgnav.html" -->
<SCRIPT=20
src=3D"http://www.networkworld.com/includes/jqlib/exp_nwLib_head.js"></SC=
RIPT>

<SCRIPT=20
src=3D"http://www.networkworld.com/includes/jqlib/exp_nwLib_head.js"></SC=
RIPT>

<SCRIPT type=3Dtext/javascript>$("span[id^=3D'page']").show();</SCRIPT>

<P><FONT size=3D-1>All contents copyright 1995-2010 Network World, Inc. =
<A=20
href=3D"http://www.networkworld.com/">http://www.networkworld.com/</A></F=
ONT>=20
</P></DIV></BODY></HTML>

------=_NextPart_001_000D_01CB132A.CD36DCB0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ad.doubleclick.net/adi/idge.nww.wirelessmobile/;pos=top;sz=728x90;tile=1;kw=print;ord=1277360528?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Click here to find out more!</TITLE>
<META content=3D"text/html; charset=3Dwindows-1252" =
http-equiv=3DContent-Type>
<SCRIPT>if (document.all){setTimeout(" location.reload();", =
30000);}</SCRIPT>

<META name=3DGENERATOR content=3D"MSHTML 8.00.7600.16588"></HEAD>
<BODY><A=20
href=3D"http://ad.doubleclick.net/click;h=3Dv8/39c3/0/0/%2a/o;224986975;0=
-0;0;43070248;3454-728/90;36327148/36345026/1;;~aopt=3D2/0/23/0;~sscs=3D%=
3fhttp://www.cisco.com/web/about/humannetwork/collaboration/offer/upgrade=
.html?POSITION=3D3rd+party+banner&amp;COUNTRY_SITE=3Dus&amp;CAMPAIGN=3DAc=
celerate+to+Collaborate&amp;CREATIVE=3DOffer+lead&amp;TIS=3D0116%5F%5F022=
0%5F%5F0510&amp;REFERRING_SITE=3DNETWORKWORLD"=20
target=3D_new><IMG border=3D0 alt=3D"Click here to find out more!"=20
src=3D"http://s0.2mdn.net/viewad/2543606/Cisco_banner_728x90-1.gif"></A><=
/BODY></HTML>

------=_NextPart_001_000D_01CB132A.CD36DCB0--

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://a.collective-media.net/ad/idgt.idgenterprise/;sz=336x280;ord=[timestamp]?

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

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://a.collective-media.net/adj/idgt.idgenterprise/;sz=336x280;ord=[timestamp]?

var cmPageUrl; if(self =3D=3D top) cmPageURL =3D document.location.href; =
else cmPageURL =3D document.referrer;  document.write('<scr'+'ipt =
language=3D"javascript" =
src=3D"http://a.collective-media.net/cmadj/idgt.idgenterprise/;sz=3D336x2=
80;ord=3D[timestamp];ord1=3D' +Math.floor(Math.random() * 1000000) + =
';cmpgurl=3D'+escape(escape(cmPageURL))+'?">');  =
document.write('</scr'+'ipt>');=0A=

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ad.doubleclick.net/adi/idge.nww.wirelessmobile/;pos=imu;sz=336x280;tile=4;kw=print;ord=1277360528?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Click here to find out more!</TITLE>
<META content=3D"text/html; charset=3Dwindows-1252" =
http-equiv=3DContent-Type>
<SCRIPT>if (document.all){setTimeout(" location.reload();", =
30000);}</SCRIPT>

<META name=3DGENERATOR content=3D"MSHTML 8.00.7600.16588"></HEAD>
<BODY><!-- begin ad tag-->
<SCRIPT language=3DJavaScript type=3Dtext/javascript=20
src=3D"http://a.collective-media.net/adj/idgt.idgenterprise/;sz=3D336x280=
;ord=3D[timestamp]?"></SCRIPT>
<NOSCRIPT><A=20
href=3D"http://a.collective-media.net/jump/idgt.idgenterprise/;sz=3D336x2=
80;ord=3D[timestamp]?"=20
target=3D_blank><IMG border=3D0 alt=3D""=20
src=3D"http://a.collective-media.net/ad/idgt.idgenterprise/;sz=3D336x280;=
ord=3D[timestamp]?"=20
width=3D336 height=3D280></A></NOSCRIPT> <!-- End ad tag =
--></BODY></HTML>

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.networkworld.com/includes/r08/doubleclick_ads.js?2532

// $Id: doubleclick_ads.js 26886 2010-04-23 01:26:46Z bbuckman $=0A=
=0A=
// Doubleclick ad support=0A=
=0A=
// a comment to test caching=0A=
=0A=
// make sure global namespace exists=0A=
OPG =3D window.OPG || {};=0A=
=0A=
// Doubleclick namespace=0A=
OPG.Doubleclick =3D OPG.Doubleclick || {};=0A=
=0A=
// is this an article page? (use standard var for cross-compat)=0A=
// doubleclick_article_page can be set to true before or after this file=0A=
if (typeof(window.doubleclick_article_page)=3D=3D'undefined') =
window.doubleclick_article_page =3D false;=0A=
=0A=
=0A=
OPG.Doubleclick =3D function() {=0A=
=0A=
  // PUBLIC=0A=
  return {=0A=
    =0A=
    extraAdKeys: Array(),   // filled w/ demandbase, etc as needed=0A=
    =0A=
    ord: Math.random()*10000000000000000,     // random # for ads, =
client-side to avoid caching=0A=
    =0A=
    // get user agent =0A=
    userAgentValue: function() {=0A=
      var browser =3D "";=0A=
      // TODO: make more generic when requirements are known=0A=
      if (/(iPad|iPhone)/.test(navigator.userAgent)) { // test for iPad =
or iPhone=0A=
        browser =3D RegExp.$1;=0A=
      }=0A=
    	return browser;=0A=
    },=0A=
    =0A=
    // get any referrer=0A=
    referrerValue: function() {=0A=
       var domain =3D "";=0A=
       var referrer =3D document.referrer;=0A=
=0A=
       if (referrer =3D=3D "") return "";=0A=
       if (referrer.indexOf("http://www.google.com/cse") > -1) return =
""; // custom search - exception=0A=
=0A=
       rPieces =3D referrer.split("/");=0A=
       dPieces =3D rPieces[2].split(".");=0A=
=0A=
       if(dPieces.length >=3D 2) {=0A=
         domain =3D dPieces[dPieces.length-2];=0A=
         //return "referrer=3D" + domain;=0A=
         return domain;=0A=
       }=0A=
       return "";=0A=
    },=0A=
    =0A=
    =0A=
    // add one-time conditional keys=0A=
    extraKeysAdded: false,=0A=
    =0A=
    addExtraKeys: function() {=0A=
      try {=0A=
        if (OPG.Doubleclick.extraKeysAdded=3D=3Dtrue) return;   // only =
once=0A=
        OPG.Doubleclick.extraKeysAdded =3D true;=0A=
=0A=
        // get referrer separately (otherwise adds every time)=0A=
        // but only on article pages=0A=
        if (window.doubleclick_article_page =3D=3D true) {=0A=
          =
OPG.Doubleclick.extraAdKeys[OPG.Doubleclick.extraAdKeys.length] =3D =
"referrer=3D" + OPG.Doubleclick.referrerValue();=0A=
        }=0A=
        // get user agent=0A=
        var browser_value =3D OPG.Doubleclick.userAgentValue();=0A=
        if (browser_value !=3D "") {=0A=
          =
OPG.Doubleclick.extraAdKeys[OPG.Doubleclick.extraAdKeys.length] =3D =
"browser=3D" + browser_value;=0A=
        }=0A=
      } catch(e) {=0A=
        OPG.Doubleclick.extraAdKeys[OPG.Doubleclick.extraAdKeys.length] =
=3D "ERROR=3DaddExtraKeys";   // so it's noticed=0A=
        //console.log(e);=0A=
      }=0A=
    },=0A=
    =0A=
    =0A=
    processAdUrl: function(url) {=0A=
      // console.log("processing ad url ["+url+"]");=0A=
=0A=
      // add extra keys (runs once)=0A=
      OPG.Doubleclick.addExtraKeys();=0A=
=0A=
      // add ad keys=0A=
      var adKeys =3D OPG.Doubleclick.extraAdKeys.join(';');=0A=
      if (adKeys !=3D '') {=0A=
        if (url.charAt(url.length-1) !=3D ";") url =3D url + ";"; // =
separator=0A=
        url =3D url + adKeys;=0A=
      }=0A=
=0A=
      // add 'ord' if not already=0A=
      if (url.indexOf("ord=3D") =3D=3D -1) {=0A=
        if (url.charAt(url.length-1) !=3D ";") url =3D url + ";"; // =
separator=0A=
        url =3D url + "ord=3D"+ OPG.Doubleclick.ord +"?";=0A=
      }=0A=
      // console.log("modified ad url ["+url+"]");=0A=
      return url;=0A=
    },=0A=
    =0A=
    =0A=
    processReferer: function(url) {    // legacy (remove?)=0A=
      return OPG.Doubleclick.processAdUrl(url); =0A=
    }=0A=
    =0A=
    =0A=
  };=0A=
}();=0A=
=0A=
=0A=
=0A=
// for legacy (set by demandbase callback)=0A=
window._rval =3D '';=0A=
window.rval =3D '';   // always set both together=0A=
=0A=
// random # for ads, client-side to avoid caching=0A=
window.ord =3D OPG.Doubleclick.ord;=0A=
=0A=
=0A=
// for legacy/transition=0A=
window.processAdUrl =3D function(url) {=0A=
  return OPG.Doubleclick.processAdUrl(url);=0A=
};=0A=

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.networkworld.com/includes/r08/demandbase.js?132

// $Id: demandbase.js 25539 2010-03-23 14:46:43Z bbuckman $=0A=
=0A=
// Demandbase data=0A=
=0A=
// make sure global namespace exists=0A=
OPG =3D window.OPG || {};=0A=
=0A=
// Demandbase namespace (lowercase b)=0A=
OPG.Demandbase =3D OPG.Demandbase || {};=0A=
OPG.Demandbase =3D function() {=0A=
  =0A=
  // PRIVATE=0A=
  /**=0A=
   * special logic for employee count variable=0A=
   * convert raw # to range=0A=
   * diverted to here from getDbaseVar() to support legacy/outside calls,=0A=
   * -- not meant to be called directly --=0A=
   * (empcnt passed in to avoid infinite loop)=0A=
   */=0A=
  _dbase_empcnt =3D function(empcnt) {=0A=
   try {=0A=
      if (! isNaN(empcnt)) {   // a number=0A=
        if (empcnt >=3D 1000) { return '1000+'; }=0A=
        else if (empcnt < 1000 && empcnt >=3D 500) { return '500-999'; }=0A=
        else if (empcnt < 500 && empcnt >=3D 100) { return '100-499'; }=0A=
        else { return '1-99'; }=0A=
      }=0A=
   } catch(e) {=0A=
     return 'ERROR-2'; // will be noticed in stats=0A=
   }=0A=
   =0A=
  return '';   // invalid or other=0A=
  };=0A=
  =0A=
=0A=
  // PUBLIC=0A=
  return {=0A=
    dbase_data: [],  // needed for ads and omniture  =0A=
  =0A=
    dbase_parse: function(data) {    // callback for demandbase api=0A=
      OPG.Demandbase.dbase_data =3D data;=0A=
      =0A=
      // make sure doubleclick namespace (from doubleclick_ads.js) exists=0A=
      OPG.Doubleclick =3D OPG.Doubleclick || {};=0A=
      OPG.Doubleclick.extraAdKeys =3D OPG.Doubleclick.extraAdKeys || =
Array(); // holds keys, should already exist=0A=
=0A=
      try {=0A=
        OPG.Doubleclick.extraAdKeys[OPG.Doubleclick.extraAdKeys.length] =
=3D 'compsz=3D' + escape(OPG.Demandbase.getDbaseVar('company_size'));=0A=
        OPG.Doubleclick.extraAdKeys[OPG.Doubleclick.extraAdKeys.length] =
=3D 'indust=3D' + escape(OPG.Demandbase.getDbaseVar('industry'));=0A=
        OPG.Doubleclick.extraAdKeys[OPG.Doubleclick.extraAdKeys.length] =
=3D 'empcnt=3D' + escape(OPG.Demandbase.getDbaseVar('employee_count'));  =
// diverts to _dbase_empcnt()=0A=
          // console.log("final empcnt: " + =
OPG.Doubleclick.extraAdKeys[OPG.Doubleclick.extraAdKeys.length-1]);=0A=
      } catch(e) {}=0A=
=0A=
      // legacy / hack for externals=0A=
      // process all the variables into a string=0A=
      try {=0A=
        if (typeof(OPG.Doubleclick.processAdUrl) !=3D undefined) {=0A=
          window._rval =3D OPG.Doubleclick.processAdUrl('');=0A=
          window.rval =3D _rval;=0A=
        }=0A=
      } catch(e) {}=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
     * get a specific var from the data=0A=
     * variable args: pass in optional names, 1st successful returned=0A=
     */=0A=
    getDbaseVar: function() {=0A=
      var key;=0A=
      =0A=
      // make sure there's an object there!=0A=
      // (handle cases where Demandbase returns no data or 404)=0A=
      if (OPG.Demandbase.dbase_data =3D=3D undefined || =
OPG.Demandbase.dbase_data =3D=3D null || =
typeof(OPG.Demandbase.dbase_data) =3D=3D undefined) {=0A=
        return '';=0A=
      }=0A=
=0A=
      for(var i=3D0; i < arguments.length; i++) {   // loop thru =
candidate names=0A=
        try {=0A=
          key =3D arguments[i];=0A=
          if (key !=3D "" && key !=3D=3D null && key !=3D=3D undefined) {=0A=
            if ( (OPG.Demandbase.dbase_data.hasOwnProperty && =
OPG.Demandbase.dbase_data.hasOwnProperty(key))=0A=
                || (typeof(OPG.Demandbase.dbase_data[key]) !=3D =
undefined) ) {=0A=
=0A=
              // special case for employee count -- divert to =
_dbase_empcnt()=0A=
              // (private function so don't need to specify namespace)=0A=
              // (doing here to support outside calls to =
.getDbaseVar('employee_count'))=0A=
              if ( (key =3D=3D=3D 'employee_count' || key =3D=3D=3D =
'empcnt') && typeof(_dbase_empcnt)!=3Dundefined) {=0A=
                return _dbase_empcnt(OPG.Demandbase.dbase_data[key]);=0A=
              }=0A=
=0A=
              return OPG.Demandbase.dbase_data[key];=0A=
            }=0A=
          } //key=0A=
=0A=
        } catch(e) {=0A=
          // console.log(e);=0A=
          return 'ERROR-3'; // will be noticed in stats=0A=
        }=0A=
=0A=
      } //for=0A=
=0A=
      return '';=0A=
    }=0A=
=0A=
  };  // returned/public=0A=
=0A=
}();=0A=
=0A=
=0A=
// legacy (remove after full transition)=0A=
window.getDbaseVar =3D OPG.Demandbase.getDbaseVar;=0A=
window.dbase_parse =3D OPG.Demandbase.dbase_parse;
------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://api.demandbase.com/api/v1/ip.json?token=beebedc26d45cee0d855facb1672946527973cfd&callback=OPG.Demandbase.dbase_parse

OPG.Demandbase.dbase_parse({"maxmind_zip_code":"97034","ip":"71.237.201.1=
47"})
------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.networkworld.com/includes/jqlib/exp_nwLib_head-min.js

NW=3Dwindow.NW||{};(function(){var =
_jQuery=3Dwindow.jQuery,_$=3Dwindow.$;var =
jQuery=3Dwindow.jQuery=3Dwindow.$=3Dfunction(selector,context){return =
new jQuery.fn.init(selector,context)};var =
quickExpr=3D/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=3D/^.[^:#\[\.]*$/=
,undefined;jQuery.fn=3DjQuery.prototype=3D{init:function(selector,context=
){selector=3Dselector||document;if(selector.nodeType){this[0]=3Dselector;=
this.length=3D1;return this}if(typeof selector=3D=3D"string"){var =
match=3DquickExpr.exec(selector);if(match&&(match[1]||!context)){if(match=
[1]){selector=3DjQuery.clean([match[1]],context)}else{var =
elem=3Ddocument.getElementById(match[3]);if(elem){if(elem.id!=3Dmatch[3])=
{return jQuery().find(selector)}return =
jQuery(elem)}selector=3D[]}}else{return =
jQuery(context).find(selector)}}else{if(jQuery.isFunction(selector)){retu=
rn jQuery(document)[jQuery.fn.ready?"ready":"load"](selector)}}return =
this.setArray(jQuery.makeArray(selector))},jquery:"1.2.6",size:function()=
{return this.length},length:0,get:function(num){return =
num=3D=3Dundefined?jQuery.makeArray(this):this[num]},pushStack:function(e=
lems){var ret=3DjQuery(elems);ret.prevObject=3Dthis;return =
ret},setArray:function(elems){this.length=3D0;Array.prototype.push.apply(=
this,elems);return this},each:function(callback,args){return =
jQuery.each(this,callback,args)},index:function(elem){var =
ret=3D-1;return =
jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this)},attr:function(name,v=
alue,type){var =
options=3Dname;if(name.constructor=3D=3DString){if(value=3D=3D=3Dundefine=
d){return =
this[0]&&jQuery[type||"attr"](this[0],name)}else{options=3D{};options[nam=
e]=3Dvalue}}return this.each(function(i){for(name in =
options){jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[n=
ame],type,i,name))}})},css:function(key,value){if((key=3D=3D"width"||key=3D=
=3D"height")&&parseFloat(value)<0){value=3Dundefined}return =
this.attr(key,value,"curCSS")},text:function(text){if(typeof =
text!=3D"object"&&text!=3Dnull){return =
this.empty().append((this[0]&&this[0].ownerDocument||document).createText=
Node(text))}var =
ret=3D"";jQuery.each(text||this,function(){jQuery.each(this.childNodes,fu=
nction(){if(this.nodeType!=3D8){ret+=3Dthis.nodeType!=3D1?this.nodeValue:=
jQuery.fn.text([this])}})});return =
ret},wrapAll:function(html){if(this[0]){jQuery(html,this[0].ownerDocument=
).clone().insertBefore(this[0]).map(function(){var =
elem=3Dthis;while(elem.firstChild){elem=3Delem.firstChild}return =
elem}).append(this)}return this},wrapInner:function(html){return =
this.each(function(){jQuery(this).contents().wrapAll(html)})},wrap:functi=
on(html){return =
this.each(function(){jQuery(this).wrapAll(html)})},append:function(){retu=
rn =
this.domManip(arguments,true,false,function(elem){if(this.nodeType=3D=3D1=
){this.appendChild(elem)}})},prepend:function(){return =
this.domManip(arguments,true,true,function(elem){if(this.nodeType=3D=3D1)=
{this.insertBefore(elem,this.firstChild)}})},before:function(){return =
this.domManip(arguments,false,false,function(elem){this.parentNode.insert=
Before(elem,this)})},after:function(){return =
this.domManip(arguments,false,true,function(elem){this.parentNode.insertB=
efore(elem,this.nextSibling)})},end:function(){return =
this.prevObject||jQuery([])},find:function(selector){var =
elems=3DjQuery.map(this,function(elem){return =
jQuery.find(selector,elem)});return this.pushStack(/[^+>] =
[^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):ele=
ms)},clone:function(events){var =
ret=3Dthis.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this))=
{var =
clone=3Dthis.cloneNode(true),container=3Ddocument.createElement("div");co=
ntainer.appendChild(clone);return =
jQuery.clean([container.innerHTML])[0]}else{return =
this.cloneNode(true)}});var =
clone=3Dret.find("*").andSelf().each(function(){if(this[expando]!=3Dundef=
ined){this[expando]=3Dnull}});if(events=3D=3D=3Dtrue){this.find("*").andS=
elf().each(function(i){if(this.nodeType=3D=3D3){return}var =
events=3DjQuery.data(this,"events");for(var type in events){for(var =
handler in =
events[type]){jQuery.event.add(clone[i],type,events[type][handler],events=
[type][handler].data)}}})}return ret},filter:function(selector){return =
this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(ele=
m,i){return =
selector.call(elem,i)})||jQuery.multiFilter(selector,this))},not:function=
(selector){if(selector.constructor=3D=3DString){if(isSimple.test(selector=
)){return =
this.pushStack(jQuery.multiFilter(selector,this,true))}else{selector=3DjQ=
uery.multiFilter(selector,this)}}var =
isArrayLike=3Dselector.length&&selector[selector.length-1]!=3D=3Dundefine=
d&&!selector.nodeType;return this.filter(function(){return =
isArrayLike?jQuery.inArray(this,selector)<0:this!=3Dselector})},add:funct=
ion(selector){return =
this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof =
selector=3D=3D"string"?jQuery(selector):jQuery.makeArray(selector))))},is=
:function(selector){return =
!!selector&&jQuery.multiFilter(selector,this).length>0},hasClass:function=
(selector){return =
this.is("."+selector)},val:function(value){if(value=3D=3Dundefined){if(th=
is.length){var elem=3Dthis[0];if(jQuery.nodeName(elem,"select")){var =
index=3Delem.selectedIndex,values=3D[],options=3Delem.options,one=3Delem.=
type=3D=3D"select-one";if(index<0){return null}for(var =
i=3Done?index:0,max=3Done?index+1:options.length;i<max;i++){var =
option=3Doptions[i];if(option.selected){value=3DjQuery.browser.msie&&!opt=
ion.attributes.value.specified?option.text:option.value;if(one){return =
value}values.push(value)}}return =
values}else{return(this[0].value||"").replace(/\r/g,"")}}return =
undefined}if(value.constructor=3D=3DNumber){value+=3D""}return =
this.each(function(){if(this.nodeType!=3D1){return}if(value.constructor=3D=
=3DArray&&/radio|checkbox/.test(this.type)){this.checked=3D(jQuery.inArra=
y(this.value,value)>=3D0||jQuery.inArray(this.name,value)>=3D0)}else{if(j=
Query.nodeName(this,"select")){var =
values=3DjQuery.makeArray(value);jQuery("option",this).each(function(){th=
is.selected=3D(jQuery.inArray(this.value,values)>=3D0||jQuery.inArray(thi=
s.text,values)>=3D0)});if(!values.length){this.selectedIndex=3D-1}}else{t=
his.value=3Dvalue}}})},html:function(value){return =
value=3D=3Dundefined?(this[0]?this[0].innerHTML:null):this.empty().append=
(value)},replaceWith:function(value){return =
this.after(value).remove()},eq:function(i){return =
this.slice(i,i+1)},slice:function(){return =
this.pushStack(Array.prototype.slice.apply(this,arguments))},map:function=
(callback){return this.pushStack(jQuery.map(this,function(elem,i){return =
callback.call(elem,i,elem)}))},andSelf:function(){return =
this.add(this.prevObject)},data:function(key,value){var =
parts=3Dkey.split(".");parts[1]=3Dparts[1]?"."+parts[1]:"";if(value=3D=3D=
=3Dundefined){var =
data=3Dthis.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data=3D=3D=
=3Dundefined&&this.length){data=3DjQuery.data(this[0],key)}return =
data=3D=3D=3Dundefined&&parts[1]?this.data(parts[0]):data}else{return =
this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQu=
ery.data(this,key,value)})}},removeData:function(key){return =
this.each(function(){jQuery.removeData(this,key)})},domManip:function(arg=
s,table,reverse,callback){var clone=3Dthis.length>1,elems;return =
this.each(function(){if(!elems){elems=3DjQuery.clean(args,this.ownerDocum=
ent);if(reverse){elems.reverse()}}var =
obj=3Dthis;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems=
[0],"tr")){obj=3Dthis.getElementsByTagName("tbody")[0]||this.appendChild(=
this.ownerDocument.createElement("tbody"))}var =
scripts=3DjQuery([]);jQuery.each(elems,function(){var =
elem=3Dclone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"sc=
ript")){scripts=3Dscripts.add(elem)}else{if(elem.nodeType=3D=3D1){scripts=
=3Dscripts.add(jQuery("script",elem).remove())}callback.call(obj,elem)}})=
;scripts.each(evalScript)})}};jQuery.fn.init.prototype=3DjQuery.fn;functi=
on =
evalScript(i,elem){if(elem.src){jQuery.ajax({url:elem.src,async:false,dat=
aType:"script"})}else{jQuery.globalEval(elem.text||elem.textContent||elem=
.innerHTML||"")}if(elem.parentNode){elem.parentNode.removeChild(elem)}}fu=
nction now(){return +new =
Date}jQuery.extend=3DjQuery.fn.extend=3Dfunction(){var =
target=3Darguments[0]||{},i=3D1,length=3Darguments.length,deep=3Dfalse,op=
tions;if(target.constructor=3D=3DBoolean){deep=3Dtarget;target=3Dargument=
s[1]||{};i=3D2}if(typeof target!=3D"object"&&typeof =
target!=3D"function"){target=3D{}}if(length=3D=3Di){target=3Dthis;--i}for=
(;i<length;i++){if((options=3Darguments[i])!=3Dnull){for(var name in =
options){var =
src=3Dtarget[name],copy=3Doptions[name];if(target=3D=3D=3Dcopy){continue}=
if(deep&&copy&&typeof =
copy=3D=3D"object"&&!copy.nodeType){target[name]=3DjQuery.extend(deep,src=
||(copy.length!=3Dnull?[]:{}),copy)}else{if(copy!=3D=3Dundefined){target[=
name]=3Dcopy}}}}}return target};var =
expando=3D"jQuery"+now(),uuid=3D0,windowData=3D{},exclude=3D/z-?index|fon=
t-?weight|opacity|zoom|line-?height/i,defaultView=3Ddocument.defaultView|=
|{};jQuery.extend({noConflict:function(deep){window.$=3D_$;if(deep){windo=
w.jQuery=3D_jQuery}return jQuery},isFunction:function(fn){return =
!!fn&&typeof =
fn!=3D"string"&&!fn.nodeName&&fn.constructor!=3DArray&&/^[\s[]?function/.=
test(fn+"")},isXMLDoc:function(elem){return =
elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem=
.ownerDocument.body},globalEval:function(data){data=3DjQuery.trim(data);i=
f(data){var =
head=3Ddocument.getElementsByTagName("head")[0]||document.documentElement=
,script=3Ddocument.createElement("script");script.type=3D"text/javascript=
";if(jQuery.browser.msie){script.text=3Ddata}else{script.appendChild(docu=
ment.createTextNode(data))}head.insertBefore(script,head.firstChild);head=
.removeChild(script)}},nodeName:function(elem,name){return =
elem.nodeName&&elem.nodeName.toUpperCase()=3D=3Dname.toUpperCase()},cache=
:{},data:function(elem,name,data){elem=3Delem=3D=3Dwindow?windowData:elem=
;var =
id=3Delem[expando];if(!id){id=3Delem[expando]=3D++uuid}if(name&&!jQuery.c=
ache[id]){jQuery.cache[id]=3D{}}if(data!=3D=3Dundefined){jQuery.cache[id]=
[name]=3Ddata}return =
name?jQuery.cache[id][name]:id},removeData:function(elem,name){elem=3Dele=
m=3D=3Dwindow?windowData:elem;var =
id=3Delem[expando];if(name){if(jQuery.cache[id]){delete =
jQuery.cache[id][name];name=3D"";for(name in =
jQuery.cache[id]){break}if(!name){jQuery.removeData(elem)}}}else{try{dele=
te =
elem[expando]}catch(e){if(elem.removeAttribute){elem.removeAttribute(expa=
ndo)}}delete jQuery.cache[id]}},each:function(object,callback,args){var =
name,i=3D0,length=3Dobject.length;if(args){if(length=3D=3Dundefined){for(=
name in =
object){if(callback.apply(object[name],args)=3D=3D=3Dfalse){break}}}else{=
for(;i<length;){if(callback.apply(object[i++],args)=3D=3D=3Dfalse){break}=
}}}else{if(length=3D=3Dundefined){for(name in =
object){if(callback.call(object[name],name,object[name])=3D=3D=3Dfalse){b=
reak}}}else{for(var =
value=3Dobject[0];i<length&&callback.call(value,i,value)!=3D=3Dfalse;valu=
e=3Dobject[++i]){}}}return =
object},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value)=
){value=3Dvalue.call(elem,i)}return =
value&&value.constructor=3D=3DNumber&&type=3D=3D"curCSS"&&!exclude.test(n=
ame)?value+"px":value},className:{add:function(elem,classNames){jQuery.ea=
ch((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType=3D=
=3D1&&!jQuery.className.has(elem.className,className)){elem.className+=3D=
(elem.className?" =
":"")+className}})},remove:function(elem,classNames){if(elem.nodeType=3D=3D=
1){elem.className=3DclassNames!=3Dundefined?jQuery.grep(elem.className.sp=
lit(/\s+/),function(className){return =
!jQuery.className.has(classNames,className)}).join(" =
"):""}},has:function(elem,className){return =
jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>=
-1}},swap:function(elem,options,callback){var old=3D{};for(var name in =
options){old[name]=3Delem.style[name];elem.style[name]=3Doptions[name]}ca=
llback.call(elem);for(var name in =
options){elem.style[name]=3Dold[name]}},css:function(elem,name,force){if(=
name=3D=3D"width"||name=3D=3D"height"){var =
val,props=3D{position:"absolute",visibility:"hidden",display:"block"},whi=
ch=3Dname=3D=3D"width"?["Left","Right"]:["Top","Bottom"];function =
getWH(){val=3Dname=3D=3D"width"?elem.offsetWidth:elem.offsetHeight;var =
padding=3D0,border=3D0;jQuery.each(which,function(){padding+=3DparseFloat=
(jQuery.curCSS(elem,"padding"+this,true))||0;border+=3DparseFloat(jQuery.=
curCSS(elem,"border"+this+"Width",true))||0});val-=3DMath.round(padding+b=
order)}if(jQuery(elem).is(":visible")){getWH()}else{jQuery.swap(elem,prop=
s,getWH)}return Math.max(0,val)}return =
jQuery.curCSS(elem,name,force)},curCSS:function(elem,name,force){var =
ret,style=3Delem.style;function =
color(elem){if(!jQuery.browser.safari){return false}var =
ret=3DdefaultView.getComputedStyle(elem,null);return =
!ret||ret.getPropertyValue("color")=3D=3D""}if(name=3D=3D"opacity"&&jQuer=
y.browser.msie){ret=3DjQuery.attr(style,"opacity");return =
ret=3D=3D""?"1":ret}if(jQuery.browser.opera&&name=3D=3D"display"){var =
save=3Dstyle.outline;style.outline=3D"0 solid =
black";style.outline=3Dsave}if(name.match(/float/i)){name=3DstyleFloat}if=
(!force&&style&&style[name]){ret=3Dstyle[name]}else{if(defaultView.getCom=
putedStyle){if(name.match(/float/i)){name=3D"float"}name=3Dname.replace(/=
([A-Z])/g,"-$1").toLowerCase();var =
computedStyle=3DdefaultView.getComputedStyle(elem,null);if(computedStyle&=
&!color(elem)){ret=3DcomputedStyle.getPropertyValue(name)}else{var =
swap=3D[],stack=3D[],a=3Delem,i=3D0;for(;a&&color(a);a=3Da.parentNode){st=
ack.unshift(a)}for(;i<stack.length;i++){if(color(stack[i])){swap[i]=3Dsta=
ck[i].style.display;stack[i].style.display=3D"block"}}ret=3Dname=3D=3D"di=
splay"&&swap[stack.length-1]!=3Dnull?"none":(computedStyle&&computedStyle=
.getPropertyValue(name))||"";for(i=3D0;i<swap.length;i++){if(swap[i]!=3Dn=
ull){stack[i].style.display=3Dswap[i]}}}if(name=3D=3D"opacity"&&ret=3D=3D=
""){ret=3D"1"}}else{if(elem.currentStyle){var =
camelCase=3Dname.replace(/\-(\w)/g,function(all,letter){return =
letter.toUpperCase()});ret=3Delem.currentStyle[name]||elem.currentStyle[c=
amelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var =
left=3Dstyle.left,rsLeft=3Delem.runtimeStyle.left;elem.runtimeStyle.left=3D=
elem.currentStyle.left;style.left=3Dret||0;ret=3Dstyle.pixelLeft+"px";sty=
le.left=3Dleft;elem.runtimeStyle.left=3DrsLeft}}}}return =
ret},clean:function(elems,context){var =
ret=3D[];context=3Dcontext||document;if(typeof =
context.createElement=3D=3D"undefined"){context=3Dcontext.ownerDocument||=
context[0]&&context[0].ownerDocument||document}jQuery.each(elems,function=
(i,elem){if(!elem){return}if(elem.constructor=3D=3DNumber){elem+=3D""}if(=
typeof =
elem=3D=3D"string"){elem=3Delem.replace(/(<(\w+)[^>]*?)\/>/g,function(all=
,front,tag){return =
tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all=
:front+"></"+tag+">"});var =
tags=3DjQuery.trim(elem).toLowerCase(),div=3Dcontext.createElement("div")=
;var wrap=3D!tags.indexOf("<opt")&&[1,"<select =
multiple=3D'multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldse=
t>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<ta=
ble>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></t=
able>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody>=
<tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody>=
</tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<=
div>","</div>"]||[0,"",""];div.innerHTML=3Dwrap[1]+elem+wrap[2];while(wra=
p[0]--){div=3Ddiv.lastChild}if(jQuery.browser.msie){var =
tbody=3D!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&=
&div.firstChild.childNodes:wrap[1]=3D=3D"<table>"&&tags.indexOf("<tbody")=
<0?div.childNodes:[];for(var =
j=3Dtbody.length-1;j>=3D0;--j){if(jQuery.nodeName(tbody[j],"tbody")&&!tbo=
dy[j].childNodes.length){tbody[j].parentNode.removeChild(tbody[j])}}if(/^=
\s/.test(elem)){div.insertBefore(context.createTextNode(elem.match(/^\s*/=
)[0]),div.firstChild)}}elem=3DjQuery.makeArray(div.childNodes)}if(elem.le=
ngth=3D=3D=3D0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"se=
lect"))){return}if(elem[0]=3D=3Dundefined||jQuery.nodeName(elem,"form")||=
elem.options){ret.push(elem)}else{ret=3DjQuery.merge(ret,elem)}});return =
ret},attr:function(elem,name,value){if(!elem||elem.nodeType=3D=3D3||elem.=
nodeType=3D=3D8){return undefined}var =
notxml=3D!jQuery.isXMLDoc(elem),set=3Dvalue!=3D=3Dundefined,msie=3DjQuery=
.browser.msie;name=3Dnotxml&&jQuery.props[name]||name;if(elem.tagName){va=
r =
special=3D/href|src|style/.test(name);if(name=3D=3D"selected"&&jQuery.bro=
wser.safari){elem.parentNode.selectedIndex}if(name in =
elem&&notxml&&!special){if(set){if(name=3D=3D"type"&&jQuery.nodeName(elem=
,"input")&&elem.parentNode){throw"type property can't be =
changed"}elem[name]=3Dvalue}if(jQuery.nodeName(elem,"form")&&elem.getAttr=
ibuteNode(name)){return elem.getAttributeNode(name).nodeValue}return =
elem[name]}if(msie&&notxml&&name=3D=3D"style"){return =
jQuery.attr(elem.style,"cssText",value)}if(set){elem.setAttribute(name,""=
+value)}var =
attr=3Dmsie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(=
name);return =
attr=3D=3D=3Dnull?undefined:attr}if(msie&&name=3D=3D"opacity"){if(set){el=
em.zoom=3D1;elem.filter=3D(elem.filter||"").replace(/alpha\([^)]*\)/,"")+=
(parseInt(value)+""=3D=3D"NaN"?"":"alpha(opacity=3D"+value*100+")")}retur=
n =
elem.filter&&elem.filter.indexOf("opacity=3D")>=3D0?(parseFloat(elem.filt=
er.match(/opacity=3D([^)]*)/)[1])/100)+"":""}name=3Dname.replace(/-([a-z]=
)/ig,function(all,letter){return =
letter.toUpperCase()});if(set){elem[name]=3Dvalue}return =
elem[name]},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"")=
},makeArray:function(array){var ret=3D[];if(array!=3Dnull){var =
i=3Darray.length;if(i=3D=3Dnull||array.split||array.setInterval||array.ca=
ll){ret[0]=3Darray}else{while(i){ret[--i]=3Darray[i]}}}return =
ret},inArray:function(elem,array){for(var =
i=3D0,length=3Darray.length;i<length;i++){if(array[i]=3D=3D=3Delem){retur=
n i}}return -1},merge:function(first,second){var =
i=3D0,elem,pos=3Dfirst.length;if(jQuery.browser.msie){while(elem=3Dsecond=
[i++]){if(elem.nodeType!=3D8){first[pos++]=3Delem}}}else{while(elem=3Dsec=
ond[i++]){first[pos++]=3Delem}}return first},unique:function(array){var =
ret=3D[],done=3D{};try{for(var =
i=3D0,length=3Darray.length;i<length;i++){var =
id=3DjQuery.data(array[i]);if(!done[id]){done[id]=3Dtrue;ret.push(array[i=
])}}}catch(e){ret=3Darray}return =
ret},grep:function(elems,callback,inv){var ret=3D[];for(var =
i=3D0,length=3Delems.length;i<length;i++){if(!inv!=3D!callback(elems[i],i=
)){ret.push(elems[i])}}return ret},map:function(elems,callback){var =
ret=3D[];for(var i=3D0,length=3Delems.length;i<length;i++){var =
value=3Dcallback(elems[i],i);if(value!=3Dnull){ret[ret.length]=3Dvalue}}r=
eturn ret.concat.apply([],ret)}});var =
userAgent=3Dnavigator.userAgent.toLowerCase();jQuery.browser=3D{version:(=
userAgent.match(/.+(?:rv|it|ra|ie)[\/: =
]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(us=
erAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/m=
ozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var =
styleFloat=3DjQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({b=
oxModel:!jQuery.browser.msie||document.compatMode=3D=3D"CSS1Compat",props=
:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFl=
oat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cells=
pacing:"cellSpacing"}});jQuery.each({parent:function(elem){return =
elem.parentNode},parents:function(elem){return =
jQuery.dir(elem,"parentNode")},next:function(elem){return =
jQuery.nth(elem,2,"nextSibling")},prev:function(elem){return =
jQuery.nth(elem,2,"previousSibling")},nextAll:function(elem){return =
jQuery.dir(elem,"nextSibling")},prevAll:function(elem){return =
jQuery.dir(elem,"previousSibling")},siblings:function(elem){return =
jQuery.sibling(elem.parentNode.firstChild,elem)},children:function(elem){=
return jQuery.sibling(elem.firstChild)},contents:function(elem){return =
jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.d=
ocument:jQuery.makeArray(elem.childNodes)}},function(name,fn){jQuery.fn[n=
ame]=3Dfunction(selector){var =
ret=3DjQuery.map(this,fn);if(selector&&typeof =
selector=3D=3D"string"){ret=3DjQuery.multiFilter(selector,ret)}return =
this.pushStack(jQuery.unique(ret))}});jQuery.each({appendTo:"append",prep=
endTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"rep=
laceWith"},function(name,original){jQuery.fn[name]=3Dfunction(){var =
args=3Darguments;return this.each(function(){for(var =
i=3D0,length=3Dargs.length;i<length;i++){jQuery(args[i])[original](this)}=
})}});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if=
(this.nodeType=3D=3D1){this.removeAttribute(name)}},addClass:function(cla=
ssNames){jQuery.className.add(this,classNames)},removeClass:function(clas=
sNames){jQuery.className.remove(this,classNames)},toggleClass:function(cl=
assNames){jQuery.className[jQuery.className.has(this,classNames)?"remove"=
:"add"](this,classNames)},remove:function(selector){if(!selector||jQuery.=
filter(selector,[this]).r.length){jQuery("*",this).add(this).each(functio=
n(){jQuery.event.remove(this);jQuery.removeData(this)});if(this.parentNod=
e){this.parentNode.removeChild(this)}}},empty:function(){jQuery(">*",this=
).remove();while(this.firstChild){this.removeChild(this.firstChild)}}},fu=
nction(name,fn){jQuery.fn[name]=3Dfunction(){return =
this.each(fn,arguments)}});jQuery.each(["Height","Width"],function(i,name=
){var type=3Dname.toLowerCase();jQuery.fn[type]=3Dfunction(size){return =
this[0]=3D=3Dwindow?jQuery.browser.opera&&document.body["client"+name]||j=
Query.browser.safari&&window["inner"+name]||document.compatMode=3D=3D"CSS=
1Compat"&&document.documentElement["client"+name]||document.body["client"=
+name]:this[0]=3D=3Ddocument?Math.max(Math.max(document.body["scroll"+nam=
e],document.documentElement["scroll"+name]),Math.max(document.body["offse=
t"+name],document.documentElement["offset"+name])):size=3D=3Dundefined?(t=
his.length?jQuery.css(this[0],type):null):this.css(type,size.constructor=3D=
=3DString?size:size+"px")}});function num(elem,prop){return =
elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0}var =
chars=3DjQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[=
\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=3Dnew =
RegExp("^>\\s*("+chars+"+)"),quickID=3Dnew =
RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=3Dnew =
RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){re=
turn m[2]=3D=3D"*"||jQuery.nodeName(a,m[2])},"#":function(a,i,m){return =
a.getAttribute("id")=3D=3Dm[2]},":":{lt:function(a,i,m){return =
i<m[3]-0},gt:function(a,i,m){return i>m[3]-0},nth:function(a,i,m){return =
m[3]-0=3D=3Di},eq:function(a,i,m){return =
m[3]-0=3D=3Di},first:function(a,i){return =
i=3D=3D0},last:function(a,i,m,r){return =
i=3D=3Dr.length-1},even:function(a,i){return =
i%2=3D=3D0},odd:function(a,i){return =
i%2},"first-child":function(a){return =
a.parentNode.getElementsByTagName("*")[0]=3D=3Da},"last-child":function(a=
){return =
jQuery.nth(a.parentNode.lastChild,1,"previousSibling")=3D=3Da},"only-chil=
d":function(a){return =
!jQuery.nth(a.parentNode.lastChild,2,"previousSibling")},parent:function(=
a){return a.firstChild},empty:function(a){return =
!a.firstChild},contains:function(a,i,m){return(a.textContent||a.innerText=
||jQuery(a).text()||"").indexOf(m[3])>=3D0},visible:function(a){return"hi=
dden"!=3Da.type&&jQuery.css(a,"display")!=3D"none"&&jQuery.css(a,"visibil=
ity")!=3D"hidden"},hidden:function(a){return"hidden"=3D=3Da.type||jQuery.=
css(a,"display")=3D=3D"none"||jQuery.css(a,"visibility")=3D=3D"hidden"},e=
nabled:function(a){return !a.disabled},disabled:function(a){return =
a.disabled},checked:function(a){return =
a.checked},selected:function(a){return =
a.selected||jQuery.attr(a,"selected")},text:function(a){return"text"=3D=3D=
a.type},radio:function(a){return"radio"=3D=3Da.type},checkbox:function(a)=
{return"checkbox"=3D=3Da.type},file:function(a){return"file"=3D=3Da.type}=
,password:function(a){return"password"=3D=3Da.type},submit:function(a){re=
turn"submit"=3D=3Da.type},image:function(a){return"image"=3D=3Da.type},re=
set:function(a){return"reset"=3D=3Da.type},button:function(a){return"butt=
on"=3D=3Da.type||jQuery.nodeName(a,"button")},input:function(a){return/in=
put|select|textarea|button/i.test(a.nodeName)},has:function(a,i,m){return=
 =
jQuery.find(m[3],a).length},header:function(a){return/h\d/i.test(a.nodeNa=
me)},animated:function(a){return =
jQuery.grep(jQuery.timers,function(fn){return =
a=3D=3Dfn.elem}).length}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=3D]*) =
*('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new =
RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var=
 old,cur=3D[];while(expr&&expr!=3Dold){old=3Dexpr;var =
f=3DjQuery.filter(expr,elems,not);expr=3Df.t.replace(/^\s*,\s*/,"");cur=3D=
not?elems=3Df.r:jQuery.merge(cur,f.r)}return =
cur},find:function(t,context){if(typeof =
t!=3D"string"){return[t]}if(context&&context.nodeType!=3D1&&context.nodeT=
ype!=3D9){return[]}context=3Dcontext||document;var =
ret=3D[context],done=3D[],last,nodeName;while(t&&last!=3Dt){var =
r=3D[];last=3Dt;t=3DjQuery.trim(t);var =
foundToken=3Dfalse,re=3DquickChild,m=3Dre.exec(t);if(m){nodeName=3Dm[1].t=
oUpperCase();for(var i=3D0;ret[i];i++){for(var =
c=3Dret[i].firstChild;c;c=3Dc.nextSibling){if(c.nodeType=3D=3D1&&(nodeNam=
e=3D=3D"*"||c.nodeName.toUpperCase()=3D=3DnodeName)){r.push(c)}}}ret=3Dr;=
t=3Dt.replace(re,"");if(t.indexOf(" =
")=3D=3D0){continue}foundToken=3Dtrue}else{re=3D/^([>+~])\s*(\w*)/i;if((m=
=3Dre.exec(t))!=3Dnull){r=3D[];var =
merge=3D{};nodeName=3Dm[2].toUpperCase();m=3Dm[1];for(var =
j=3D0,rl=3Dret.length;j<rl;j++){var =
n=3Dm=3D=3D"~"||m=3D=3D"+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=3D=
n.nextSibling){if(n.nodeType=3D=3D1){var =
id=3DjQuery.data(n);if(m=3D=3D"~"&&merge[id]){break}if(!nodeName||n.nodeN=
ame.toUpperCase()=3D=3DnodeName){if(m=3D=3D"~"){merge[id]=3Dtrue}r.push(n=
)}if(m=3D=3D"+"){break}}}}ret=3Dr;t=3DjQuery.trim(t.replace(re,""));found=
Token=3Dtrue}}if(t&&!foundToken){if(!t.indexOf(",")){if(context=3D=3Dret[=
0]){ret.shift()}done=3DjQuery.merge(done,ret);r=3Dret=3D[context];t=3D" =
"+t.substr(1,t.length)}else{var re2=3DquickID;var =
m=3Dre2.exec(t);if(m){m=3D[0,m[2],m[3],m[1]]}else{re2=3DquickClass;m=3Dre=
2.exec(t)}m[2]=3Dm[2].replace(/\\/g,"");var =
elem=3Dret[ret.length-1];if(m[1]=3D=3D"#"&&elem&&elem.getElementById&&!jQ=
uery.isXMLDoc(elem)){var =
oid=3Delem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.o=
pera)&&oid&&typeof =
oid.id=3D=3D"string"&&oid.id!=3Dm[2]){oid=3DjQuery('[@id=3D"'+m[2]+'"]',e=
lem)[0]}ret=3Dr=3Doid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[]}else{f=
or(var i=3D0;ret[i];i++){var =
tag=3Dm[1]=3D=3D"#"&&m[3]?m[3]:m[1]!=3D""||m[0]=3D=3D""?"*":m[2];if(tag=3D=
=3D"*"&&ret[i].nodeName.toLowerCase()=3D=3D"object"){tag=3D"param"}r=3DjQ=
uery.merge(r,ret[i].getElementsByTagName(tag))}if(m[1]=3D=3D"."){r=3DjQue=
ry.classFilter(r,m[2])}if(m[1]=3D=3D"#"){var tmp=3D[];for(var =
i=3D0;r[i];i++){if(r[i].getAttribute("id")=3D=3Dm[2]){tmp=3D[r[i]];break}=
}r=3Dtmp}ret=3Dr}t=3Dt.replace(re2,"")}}if(t){var =
val=3DjQuery.filter(t,r);ret=3Dr=3Dval.r;t=3DjQuery.trim(val.t)}}if(t){re=
t=3D[]}if(ret&&context=3D=3Dret[0]){ret.shift()}done=3DjQuery.merge(done,=
ret);return done},classFilter:function(r,m,not){m=3D" "+m+" ";var =
tmp=3D[];for(var i=3D0;r[i];i++){var pass=3D(" "+r[i].className+" =
").indexOf(m)>=3D0;if(!not&&pass||not&&!pass){tmp.push(r[i])}}return =
tmp},filter:function(t,r,not){var last;while(t&&t!=3Dlast){last=3Dt;var =
p=3DjQuery.parse,m;for(var =
i=3D0;p[i];i++){m=3Dp[i].exec(t);if(m){t=3Dt.substring(m[0].length);m[2]=3D=
m[2].replace(/\\/g,"");break}}if(!m){break}if(m[1]=3D=3D":"&&m[2]=3D=3D"n=
ot"){r=3DisSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m=
[3])}else{if(m[1]=3D=3D"."){r=3DjQuery.classFilter(r,m[2],not)}else{if(m[=
1]=3D=3D"["){var tmp=3D[],type=3Dm[3];for(var =
i=3D0,rl=3Dr.length;i<rl;i++){var =
a=3Dr[i],z=3Da[jQuery.props[m[2]]||m[2]];if(z=3D=3Dnull||/href|src|select=
ed/.test(m[2])){z=3DjQuery.attr(a,m[2])||""}if((type=3D=3D""&&!!z||type=3D=
=3D"=3D"&&z=3D=3Dm[5]||type=3D=3D"!=3D"&&z!=3Dm[5]||type=3D=3D"^=3D"&&z&&=
!z.indexOf(m[5])||type=3D=3D"$=3D"&&z.substr(z.length-m[5].length)=3D=3Dm=
[5]||(type=3D=3D"*=3D"||type=3D=3D"~=3D")&&z.indexOf(m[5])>=3D0)^not){tmp=
.push(a)}}r=3Dtmp}else{if(m[1]=3D=3D":"&&m[2]=3D=3D"nth-child"){var =
merge=3D{},tmp=3D[],test=3D/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=3D=3D"eve=
n"&&"2n"||m[3]=3D=3D"odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),fi=
rst=3D(test[1]+(test[2]||1))-0,last=3Dtest[3]-0;for(var =
i=3D0,rl=3Dr.length;i<rl;i++){var =
node=3Dr[i],parentNode=3Dnode.parentNode,id=3DjQuery.data(parentNode);if(=
!merge[id]){var c=3D1;for(var =
n=3DparentNode.firstChild;n;n=3Dn.nextSibling){if(n.nodeType=3D=3D1){n.no=
deIndex=3Dc++}}merge[id]=3Dtrue}var =
add=3Dfalse;if(first=3D=3D0){if(node.nodeIndex=3D=3Dlast){add=3Dtrue}}els=
e{if((node.nodeIndex-last)%first=3D=3D0&&(node.nodeIndex-last)/first>=3D0=
){add=3Dtrue}}if(add^not){tmp.push(node)}}r=3Dtmp}else{var =
fn=3DjQuery.expr[m[1]];if(typeof =
fn=3D=3D"object"){fn=3Dfn[m[2]]}if(typeof =
fn=3D=3D"string"){fn=3Deval("false||function(a,i){return =
"+fn+";}")}r=3DjQuery.grep(r,function(elem,i){return =
fn(elem,i,m,r)},not)}}}}}return{r:r,t:t}},dir:function(elem,dir){var =
matched=3D[],cur=3Delem[dir];while(cur&&cur!=3Ddocument){if(cur.nodeType=3D=
=3D1){matched.push(cur)}cur=3Dcur[dir]}return =
matched},nth:function(cur,result,dir,elem){result=3Dresult||1;var =
num=3D0;for(;cur;cur=3Dcur[dir]){if(cur.nodeType=3D=3D1&&++num=3D=3Dresul=
t){break}}return cur},sibling:function(n,elem){var =
r=3D[];for(;n;n=3Dn.nextSibling){if(n.nodeType=3D=3D1&&n!=3Delem){r.push(=
n)}}return =
r}});jQuery.event=3D{add:function(elem,types,handler,data){if(elem.nodeTy=
pe=3D=3D3||elem.nodeType=3D=3D8){return}if(jQuery.browser.msie&&elem.setI=
nterval){elem=3Dwindow}if(!handler.guid){handler.guid=3Dthis.guid++}if(da=
ta!=3Dundefined){var =
fn=3Dhandler;handler=3Dthis.proxy(fn,function(){return =
fn.apply(this,arguments)});handler.data=3Ddata}var =
events=3DjQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=
=3DjQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(ty=
peof jQuery!=3D"undefined"&&!jQuery.event.triggered){return =
jQuery.event.handle.apply(arguments.callee.elem,arguments)}});handle.elem=
=3Delem;jQuery.each(types.split(/\s+/),function(index,type){var =
parts=3Dtype.split(".");type=3Dparts[0];handler.type=3Dparts[1];var =
handlers=3Devents[type];if(!handlers){handlers=3Devents[type]=3D{};if(!jQ=
uery.event.special[type]||jQuery.event.special[type].setup.call(elem)=3D=3D=
=3Dfalse){if(elem.addEventListener){elem.addEventListener(type,handle,fal=
se)}else{if(elem.attachEvent){elem.attachEvent("on"+type,handle)}}}}handl=
ers[handler.guid]=3Dhandler;jQuery.event.global[type]=3Dtrue});elem=3Dnul=
l},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType=3D=
=3D3||elem.nodeType=3D=3D8){return}var =
events=3DjQuery.data(elem,"events"),ret,index;if(events){if(types=3D=3Dun=
defined||(typeof types=3D=3D"string"&&types.charAt(0)=3D=3D".")){for(var =
type in =
events){this.remove(elem,type+(types||""))}}else{if(types.type){handler=3D=
types.handler;types=3Dtypes.type}jQuery.each(types.split(/\s+/),function(=
index,type){var =
parts=3Dtype.split(".");type=3Dparts[0];if(events[type]){if(handler){dele=
te events[type][handler.guid]}else{for(handler in =
events[type]){if(!parts[1]||events[type][handler].type=3D=3Dparts[1]){del=
ete events[type][handler]}}}for(ret in =
events[type]){break}if(!ret){if(!jQuery.event.special[type]||jQuery.event=
.special[type].teardown.call(elem)=3D=3D=3Dfalse){if(elem.removeEventList=
ener){elem.removeEventListener(type,jQuery.data(elem,"handle"),false)}els=
e{if(elem.detachEvent){elem.detachEvent("on"+type,jQuery.data(elem,"handl=
e"))}}}ret=3Dnull;delete events[type]}}})}for(ret in =
events){break}if(!ret){var =
handle=3DjQuery.data(elem,"handle");if(handle){handle.elem=3Dnull}jQuery.=
removeData(elem,"events");jQuery.removeData(elem,"handle")}}},trigger:fun=
ction(type,data,elem,donative,extra){data=3DjQuery.makeArray(data);if(typ=
e.indexOf("!")>=3D0){type=3Dtype.slice(0,-1);var =
exclusive=3Dtrue}if(!elem){if(this.global[type]){jQuery("*").add([window,=
document]).trigger(type,data)}}else{if(elem.nodeType=3D=3D3||elem.nodeTyp=
e=3D=3D8){return undefined}var =
val,ret,fn=3DjQuery.isFunction(elem[type]||null),event=3D!data[0]||!data[=
0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDe=
fault:function(){},stopPropagation:function(){},timeStamp:now()});data[0]=
[expando]=3Dtrue}data[0].type=3Dtype;if(exclusive){data[0].exclusive=3Dtr=
ue}var =
handle=3DjQuery.data(elem,"handle");if(handle){val=3Dhandle.apply(elem,da=
ta)}if((!fn||(jQuery.nodeName(elem,"a")&&type=3D=3D"click"))&&elem["on"+t=
ype]&&elem["on"+type].apply(elem,data)=3D=3D=3Dfalse){val=3Dfalse}if(even=
t){data.shift()}if(extra&&jQuery.isFunction(extra)){ret=3Dextra.apply(ele=
m,val=3D=3Dnull?data:data.concat(val));if(ret!=3D=3Dundefined){val=3Dret}=
}if(fn&&donative!=3D=3Dfalse&&val!=3D=3Dfalse&&!(jQuery.nodeName(elem,"a"=
)&&type=3D=3D"click")){this.triggered=3Dtrue;try{elem[type]()}catch(e){}}=
this.triggered=3Dfalse}return val},handle:function(event){var =
val,ret,namespace,all,handlers;event=3Darguments[0]=3DjQuery.event.fix(ev=
ent||window.event);namespace=3Devent.type.split(".");event.type=3Dnamespa=
ce[0];namespace=3Dnamespace[1];all=3D!namespace&&!event.exclusive;handler=
s=3D(jQuery.data(this,"events")||{})[event.type];for(var j in =
handlers){var =
handler=3Dhandlers[j];if(all||handler.type=3D=3Dnamespace){event.handler=3D=
handler;event.data=3Dhandler.data;ret=3Dhandler.apply(this,arguments);if(=
val!=3D=3Dfalse){val=3Dret}if(ret=3D=3D=3Dfalse){event.preventDefault();e=
vent.stopPropagation()}}}return =
val},fix:function(event){if(event[expando]=3D=3Dtrue){return event}var =
originalEvent=3Devent;event=3D{originalEvent:originalEvent};var =
props=3D"altKey attrChange attrName bubbles button cancelable charCode =
clientX clientY ctrlKey currentTarget data detail eventPhase fromElement =
handler keyCode metaKey newValue originalTarget pageX pageY prevValue =
relatedNode relatedTarget screenX screenY shiftKey srcElement target =
timeStamp toElement type view wheelDelta which".split(" ");for(var =
i=3Dprops.length;i;i--){event[props[i]]=3DoriginalEvent[props[i]]}event[e=
xpando]=3Dtrue;event.preventDefault=3Dfunction(){if(originalEvent.prevent=
Default){originalEvent.preventDefault()}originalEvent.returnValue=3Dfalse=
};event.stopPropagation=3Dfunction(){if(originalEvent.stopPropagation){or=
iginalEvent.stopPropagation()}originalEvent.cancelBubble=3Dtrue};event.ti=
meStamp=3Devent.timeStamp||now();if(!event.target){event.target=3Devent.s=
rcElement||document}if(event.target.nodeType=3D=3D3){event.target=3Devent=
.target.parentNode}if(!event.relatedTarget&&event.fromElement){event.rela=
tedTarget=3Devent.fromElement=3D=3Devent.target?event.toElement:event.fro=
mElement}if(event.pageX=3D=3Dnull&&event.clientX!=3Dnull){var =
doc=3Ddocument.documentElement,body=3Ddocument.body;event.pageX=3Devent.c=
lientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0=
);event.pageY=3Devent.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||=
0)-(doc.clientTop||0)}if(!event.which&&((event.charCode||event.charCode=3D=
=3D=3D0)?event.charCode:event.keyCode)){event.which=3Devent.charCode||eve=
nt.keyCode}if(!event.metaKey&&event.ctrlKey){event.metaKey=3Devent.ctrlKe=
y}if(!event.which&&event.button){event.which=3D(event.button&1?1:(event.b=
utton&2?3:(event.button&4?2:0)))}return =
event},proxy:function(fn,proxy){proxy.guid=3Dfn.guid=3Dfn.guid||proxy.gui=
d||this.guid++;return =
proxy},special:{ready:{setup:function(){bindReady();return},teardown:func=
tion(){return}},mouseenter:{setup:function(){if(jQuery.browser.msie){retu=
rn =
false}jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handl=
er);return true},teardown:function(){if(jQuery.browser.msie){return =
false}jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.han=
dler);return =
true},handler:function(event){if(withinElement(event,this)){return =
true}event.type=3D"mouseenter";return =
jQuery.event.handle.apply(this,arguments)}},mouseleave:{setup:function(){=
if(jQuery.browser.msie){return =
false}jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handle=
r);return true},teardown:function(){if(jQuery.browser.msie){return =
false}jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.hand=
ler);return =
true},handler:function(event){if(withinElement(event,this)){return =
true}event.type=3D"mouseleave";return =
jQuery.event.handle.apply(this,arguments)}}}};jQuery.fn.extend({bind:func=
tion(type,data,fn){return =
type=3D=3D"unload"?this.one(type,data,fn):this.each(function(){jQuery.eve=
nt.add(this,type,fn||data,fn&&data)})},one:function(type,data,fn){var =
one=3DjQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(eve=
nt,one);return(fn||data).apply(this,arguments)});return =
this.each(function(){jQuery.event.add(this,type,one,fn&&data)})},unbind:f=
unction(type,fn){return =
this.each(function(){jQuery.event.remove(this,type,fn)})},trigger:functio=
n(type,data,fn){return =
this.each(function(){jQuery.event.trigger(type,data,this,true,fn)})},trig=
gerHandler:function(type,data,fn){return =
this[0]&&jQuery.event.trigger(type,data,this[0],false,fn)},toggle:functio=
n(fn){var =
args=3Darguments,i=3D1;while(i<args.length){jQuery.event.proxy(fn,args[i+=
+])}return =
this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=3D(this.=
lastToggle||0)%i;event.preventDefault();return =
args[this.lastToggle++].apply(this,arguments)||false}))},hover:function(f=
nOver,fnOut){return =
this.bind("mouseenter",fnOver).bind("mouseleave",fnOut)},ready:function(f=
n){bindReady();if(jQuery.isReady){fn.call(document,jQuery)}else{jQuery.re=
adyList.push(function(){return fn.call(this,jQuery)})}return =
this}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQ=
uery.isReady){jQuery.isReady=3Dtrue;if(jQuery.readyList){jQuery.each(jQue=
ry.readyList,function(){this.call(document)});jQuery.readyList=3Dnull}jQu=
ery(document).triggerHandler("ready")}}});var =
readyBound=3Dfalse;function =
bindReady(){if(readyBound){return}readyBound=3Dtrue;if(document.addEventL=
istener&&!jQuery.browser.opera){document.addEventListener("DOMContentLoad=
ed",jQuery.ready,false)}if(jQuery.browser.msie&&window=3D=3Dtop){(functio=
n(){if(jQuery.isReady){return}try{document.documentElement.doScroll("left=
")}catch(error){setTimeout(arguments.callee,0);return}jQuery.ready()})()}=
if(jQuery.browser.opera){document.addEventListener("DOMContentLoaded",fun=
ction(){if(jQuery.isReady){return}for(var =
i=3D0;i<document.styleSheets.length;i++){if(document.styleSheets[i].disab=
led){setTimeout(arguments.callee,0);return}}jQuery.ready()},false)}if(jQu=
ery.browser.safari){var =
numStyles;(function(){if(jQuery.isReady){return}if(document.readyState!=3D=
"loaded"&&document.readyState!=3D"complete"){setTimeout(arguments.callee,=
0);return}if(numStyles=3D=3D=3Dundefined){numStyles=3DjQuery("style, =
link[rel=3Dstylesheet]").length}if(document.styleSheets.length!=3DnumStyl=
es){setTimeout(arguments.callee,0);return}jQuery.ready()})()}jQuery.event=
.add(window,"load",jQuery.ready)}jQuery.each(("blur,focus,load,resize,scr=
oll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,=
change,select,submit,keydown,keypress,keyup,error").split(","),function(i=
,name){jQuery.fn[name]=3Dfunction(fn){return =
fn?this.bind(name,fn):this.trigger(name)}});var =
withinElement=3Dfunction(event,elem){var =
parent=3Devent.relatedTarget;while(parent&&parent!=3Delem){try{parent=3Dp=
arent.parentNode}catch(error){parent=3Delem}}return =
parent=3D=3Delem};jQuery(window).bind("unload",function(){jQuery("*").add=
(document).unbind()});jQuery.fn.extend({_load:jQuery.fn.load,load:functio=
n(url,params,callback){if(typeof url!=3D"string"){return =
this._load(url)}var off=3Durl.indexOf(" ");if(off>=3D0){var =
selector=3Durl.slice(off,url.length);url=3Durl.slice(0,off)}callback=3Dca=
llback||function(){};var =
type=3D"GET";if(params){if(jQuery.isFunction(params)){callback=3Dparams;p=
arams=3Dnull}else{params=3DjQuery.param(params);type=3D"POST"}}var =
self=3Dthis;jQuery.ajax({url:url,type:type,dataType:"html",data:params,co=
mplete:function(res,status){if(status=3D=3D"success"||status=3D=3D"notmod=
ified"){self.html(selector?jQuery("<div/>").append(res.responseText.repla=
ce(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText)}self=
.each(callback,[res.responseText,status,res])}});return =
this},serialize:function(){return =
jQuery.param(this.serializeArray())},serializeArray:function(){return =
this.map(function(){return =
jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this}).filte=
r(function(){return =
this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.no=
deName)||/text|hidden|password/i.test(this.type))}).map(function(i,elem){=
var val=3DjQuery(this).val();return =
val=3D=3Dnull?null:val.constructor=3D=3DArray?jQuery.map(val,function(val=
,i){return{name:elem.name,value:val}}):{name:elem.name,value:val}}).get()=
}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,aj=
axSend".split(","),function(i,o){jQuery.fn[o]=3Dfunction(f){return =
this.bind(o,f)}});var =
jsc=3Dnow();jQuery.extend({get:function(url,data,callback,type){if(jQuery=
.isFunction(data)){callback=3Ddata;data=3Dnull}return =
jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type}=
)},getScript:function(url,callback){return =
jQuery.get(url,null,callback,"script")},getJSON:function(url,data,callbac=
k){return =
jQuery.get(url,data,callback,"json")},post:function(url,data,callback,typ=
e){if(jQuery.isFunction(data)){callback=3Ddata;data=3D{}}return =
jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type=
})},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settin=
gs)},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,con=
tentType:"application/x-www-form-urlencoded",processData:true,async:true,=
data:null,username:null,password:null,accepts:{xml:"application/xml, =
text/xml",html:"text/html",script:"text/javascript, =
application/javascript",json:"application/json, =
text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:=
function(s){s=3DjQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSet=
tings,s));var =
jsonp,jsre=3D/=3D\?(&|$)/g,status,data,type=3Ds.type.toUpperCase();if(s.d=
ata&&s.processData&&typeof =
s.data!=3D"string"){s.data=3DjQuery.param(s.data)}if(s.dataType=3D=3D"jso=
np"){if(type=3D=3D"GET"){if(!s.url.match(jsre)){s.url+=3D(s.url.match(/\?=
/)?"&":"?")+(s.jsonp||"callback")+"=3D?"}}else{if(!s.data||!s.data.match(=
jsre)){s.data=3D(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=3D?"}}s.da=
taType=3D"json"}if(s.dataType=3D=3D"json"&&(s.data&&s.data.match(jsre)||s=
.url.match(jsre))){jsonp=3D"jsonp"+jsc++;if(s.data){s.data=3D(s.data+"").=
replace(jsre,"=3D"+jsonp+"$1")}s.url=3Ds.url.replace(jsre,"=3D"+jsonp+"$1=
");s.dataType=3D"script";window[jsonp]=3Dfunction(tmp){data=3Dtmp;success=
();complete();window[jsonp]=3Dundefined;try{delete =
window[jsonp]}catch(e){}if(head){head.removeChild(script)}}}if(s.dataType=
=3D=3D"script"&&s.cache=3D=3Dnull){s.cache=3Dfalse}if(s.cache=3D=3D=3Dfal=
se&&type=3D=3D"GET"){var ts=3Dnow();var =
ret=3Ds.url.replace(/(\?|&)_=3D.*?(&|$)/,"$1_=3D"+ts+"$2");s.url=3Dret+((=
ret=3D=3Ds.url)?(s.url.match(/\?/)?"&":"?")+"_=3D"+ts:"")}if(s.data&&type=
=3D=3D"GET"){s.url+=3D(s.url.match(/\?/)?"&":"?")+s.data;s.data=3Dnull}if=
(s.global&&!jQuery.active++){jQuery.event.trigger("ajaxStart")}var =
remote=3D/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=3D=3D"script"&&type=3D=3D=
"GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=3Dlocation.host){var =
head=3Ddocument.getElementsByTagName("head")[0];var =
script=3Ddocument.createElement("script");script.src=3Ds.url;if(s.scriptC=
harset){script.charset=3Ds.scriptCharset}if(!jsonp){var =
done=3Dfalse;script.onload=3Dscript.onreadystatechange=3Dfunction(){if(!d=
one&&(!this.readyState||this.readyState=3D=3D"loaded"||this.readyState=3D=
=3D"complete")){done=3Dtrue;success();complete();head.removeChild(script)=
}}}head.appendChild(script);return undefined}var requestDone=3Dfalse;var =
xhr=3Dwindow.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new =
XMLHttpRequest();if(s.username){xhr.open(type,s.url,s.async,s.username,s.=
password)}else{xhr.open(type,s.url,s.async)}try{if(s.data){xhr.setRequest=
Header("Content-Type",s.contentType)}if(s.ifModified){xhr.setRequestHeade=
r("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 =
00:00:00 =
GMT")}xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRe=
questHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataTy=
pe]+", =
*/*":s.accepts._default)}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)=3D=
=3D=3Dfalse){s.global&&jQuery.active--;xhr.abort();return =
false}if(s.global){jQuery.event.trigger("ajaxSend",[xhr,s])}var =
onreadystatechange=3Dfunction(isTimeout){if(!requestDone&&xhr&&(xhr.ready=
State=3D=3D4||isTimeout=3D=3D"timeout")){requestDone=3Dtrue;if(ival){clea=
rInterval(ival);ival=3Dnull}status=3DisTimeout=3D=3D"timeout"&&"timeout"|=
|!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(=
xhr,s.url)&&"notmodified"||"success";if(status=3D=3D"success"){try{data=3D=
jQuery.httpData(xhr,s.dataType,s.dataFilter)}catch(e){status=3D"parsererr=
or"}}if(status=3D=3D"success"){var =
modRes;try{modRes=3Dxhr.getResponseHeader("Last-Modified")}catch(e){}if(s=
.ifModified&&modRes){jQuery.lastModified[s.url]=3DmodRes}if(!jsonp){succe=
ss()}}else{jQuery.handleError(s,xhr,status)}complete();if(s.async){xhr=3D=
null}}};if(s.async){var =
ival=3DsetInterval(onreadystatechange,13);if(s.timeout>0){setTimeout(func=
tion(){if(xhr){xhr.abort();if(!requestDone){onreadystatechange("timeout")=
}}},s.timeout)}}try{xhr.send(s.data)}catch(e){jQuery.handleError(s,xhr,nu=
ll,e)}if(!s.async){onreadystatechange()}function =
success(){if(s.success){s.success(data,status)}if(s.global){jQuery.event.=
trigger("ajaxSuccess",[xhr,s])}}function =
complete(){if(s.complete){s.complete(xhr,status)}if(s.global){jQuery.even=
t.trigger("ajaxComplete",[xhr,s])}if(s.global&&!--jQuery.active){jQuery.e=
vent.trigger("ajaxStop")}}return =
xhr},handleError:function(s,xhr,status,e){if(s.error){s.error(xhr,status,=
e)}if(s.global){jQuery.event.trigger("ajaxError",[xhr,s,e])}},active:0,ht=
tpSuccess:function(xhr){try{return =
!xhr.status&&location.protocol=3D=3D"file:"||(xhr.status>=3D200&&xhr.stat=
us<300)||xhr.status=3D=3D304||xhr.status=3D=3D1223||jQuery.browser.safari=
&&xhr.status=3D=3Dundefined}catch(e){}return =
false},httpNotModified:function(xhr,url){try{var =
xhrRes=3Dxhr.getResponseHeader("Last-Modified");return =
xhr.status=3D=3D304||xhrRes=3D=3DjQuery.lastModified[url]||jQuery.browser=
.safari&&xhr.status=3D=3Dundefined}catch(e){}return =
false},httpData:function(xhr,type,filter){var =
ct=3Dxhr.getResponseHeader("content-type"),xml=3Dtype=3D=3D"xml"||!type&&=
ct&&ct.indexOf("xml")>=3D0,data=3Dxml?xhr.responseXML:xhr.responseText;if=
(xml&&data.documentElement.tagName=3D=3D"parsererror"){throw"parsererror"=
}if(filter){data=3Dfilter(data,type)}if(type=3D=3D"script"){jQuery.global=
Eval(data)}if(type=3D=3D"json"){data=3Deval("("+data+")")}return =
data},param:function(a){var =
s=3D[];if(a.constructor=3D=3DArray||a.jquery){jQuery.each(a,function(){s.=
push(encodeURIComponent(this.name)+"=3D"+encodeURIComponent(this.value))}=
)}else{for(var j in =
a){if(a[j]&&a[j].constructor=3D=3DArray){jQuery.each(a[j],function(){s.pu=
sh(encodeURIComponent(j)+"=3D"+encodeURIComponent(this))})}else{s.push(en=
codeURIComponent(j)+"=3D"+encodeURIComponent(jQuery.isFunction(a[j])?a[j]=
():a[j]))}}}return =
s.join("&").replace(/%20/g,"+")}});jQuery.fn.extend({show:function(speed,=
callback){return =
speed?this.animate({height:"show",width:"show",opacity:"show"},speed,call=
back):this.filter(":hidden").each(function(){this.style.display=3Dthis.ol=
dblock||"";if(jQuery.css(this,"display")=3D=3D"none"){var =
elem=3DjQuery("<"+this.tagName+" =
/>").appendTo("body");this.style.display=3Delem.css("display");if(this.st=
yle.display=3D=3D"none"){this.style.display=3D"block"}elem.remove()}}).en=
d()},hide:function(speed,callback){return =
speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,call=
back):this.filter(":visible").each(function(){this.oldblock=3Dthis.oldblo=
ck||jQuery.css(this,"display");this.style.display=3D"none"}).end()},_togg=
le:jQuery.fn.toggle,toggle:function(fn,fn2){return =
jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arg=
uments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"}=
,fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"sh=
ow":"hide"]()})},slideDown:function(speed,callback){return =
this.animate({height:"show"},speed,callback)},slideUp:function(speed,call=
back){return =
this.animate({height:"hide"},speed,callback)},slideToggle:function(speed,=
callback){return =
this.animate({height:"toggle"},speed,callback)},fadeIn:function(speed,cal=
lback){return =
this.animate({opacity:"show"},speed,callback)},fadeOut:function(speed,cal=
lback){return =
this.animate({opacity:"hide"},speed,callback)},fadeTo:function(speed,to,c=
allback){return =
this.animate({opacity:to},speed,callback)},animate:function(prop,speed,ea=
sing,callback){var optall=3DjQuery.speed(speed,easing,callback);return =
this[optall.queue=3D=3D=3Dfalse?"each":"queue"](function(){if(this.nodeTy=
pe!=3D1){return false}var =
opt=3DjQuery.extend({},optall),p,hidden=3DjQuery(this).is(":hidden"),self=
=3Dthis;for(p in =
prop){if(prop[p]=3D=3D"hide"&&hidden||prop[p]=3D=3D"show"&&!hidden){retur=
n =
opt.complete.call(this)}if(p=3D=3D"height"||p=3D=3D"width"){opt.display=3D=
jQuery.css(this,"display");opt.overflow=3Dthis.style.overflow}}if(opt.ove=
rflow!=3Dnull){this.style.overflow=3D"hidden"}opt.curAnim=3DjQuery.extend=
({},prop);jQuery.each(prop,function(name,val){var e=3Dnew =
jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val)){e[val=3D=3D"tog=
gle"?hidden?"show":"hide":val](prop)}else{var =
parts=3Dval.toString().match(/^([+-]=3D)?([\d+-.]+)(.*)$/),start=3De.cur(=
true)||0;if(parts){var =
end=3DparseFloat(parts[2]),unit=3Dparts[3]||"px";if(unit!=3D"px"){self.st=
yle[name]=3D(end||1)+unit;start=3D((end||1)/e.cur(true))*start;self.style=
[name]=3Dstart+unit}if(parts[1]){end=3D((parts[1]=3D=3D"-=3D"?-1:1)*end)+=
start}e.custom(start,end,unit)}else{e.custom(start,val,"")}}});return =
true})},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.c=
onstructor=3D=3DArray)){fn=3Dtype;type=3D"fx"}if(!type||(typeof =
type=3D=3D"string"&&!fn)){return queue(this[0],type)}return =
this.each(function(){if(fn.constructor=3D=3DArray){queue(this,type,fn)}el=
se{queue(this,type).push(fn);if(queue(this,type).length=3D=3D1){fn.call(t=
his)}}})},stop:function(clearQueue,gotoEnd){var =
timers=3DjQuery.timers;if(clearQueue){this.queue([])}this.each(function()=
{for(var =
i=3Dtimers.length-1;i>=3D0;i--){if(timers[i].elem=3D=3Dthis){if(gotoEnd){=
timers[i](true)}timers.splice(i,1)}}});if(!gotoEnd){this.dequeue()}return=
 this}});var =
queue=3Dfunction(elem,type,array){if(elem){type=3Dtype||"fx";var =
q=3DjQuery.data(elem,type+"queue");if(!q||array){q=3DjQuery.data(elem,typ=
e+"queue",jQuery.makeArray(array))}}return =
q};jQuery.fn.dequeue=3Dfunction(type){type=3Dtype||"fx";return =
this.each(function(){var =
q=3Dqueue(this,type);q.shift();if(q.length){q[0].call(this)}})};jQuery.ex=
tend({speed:function(speed,easing,fn){var =
opt=3Dspeed&&speed.constructor=3D=3DObject?speed:{complete:fn||!fn&&easin=
g||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easi=
ng&&easing.constructor!=3DFunction&&easing};opt.duration=3D(opt.duration&=
&opt.duration.constructor=3D=3DNumber?opt.duration:jQuery.fx.speeds[opt.d=
uration])||jQuery.fx.speeds.def;opt.old=3Dopt.complete;opt.complete=3Dfun=
ction(){if(opt.queue!=3D=3Dfalse){jQuery(this).dequeue()}if(jQuery.isFunc=
tion(opt.old)){opt.old.call(this)}};return =
opt},easing:{linear:function(p,n,firstNum,diff){return =
firstNum+diff*p},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Ma=
th.PI)/2)+0.5)*diff+firstNum}},timers:[],timerId:null,fx:function(elem,op=
tions,prop){this.options=3Doptions;this.elem=3Delem;this.prop=3Dprop;if(!=
options.orig){options.orig=3D{}}}});jQuery.fx.prototype=3D{update:functio=
n(){if(this.options.step){this.options.step.call(this.elem,this.now,this)=
}(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=3D=
=3D"height"||this.prop=3D=3D"width"){this.elem.style.display=3D"block"}},=
cur:function(force){if(this.elem[this.prop]!=3Dnull&&this.elem.style[this=
.prop]=3D=3Dnull){return this.elem[this.prop]}var =
r=3DparseFloat(jQuery.css(this.elem,this.prop,force));return =
r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0},custom:f=
unction(from,to,unit){this.startTime=3Dnow();this.start=3Dfrom;this.end=3D=
to;this.unit=3Dunit||this.unit||"px";this.now=3Dthis.start;this.pos=3Dthi=
s.state=3D0;this.update();var self=3Dthis;function t(gotoEnd){return =
self.step(gotoEnd)}t.elem=3Dthis.elem;jQuery.timers.push(t);if(jQuery.tim=
erId=3D=3Dnull){jQuery.timerId=3DsetInterval(function(){var =
timers=3DjQuery.timers;for(var =
i=3D0;i<timers.length;i++){if(!timers[i]()){timers.splice(i--,1)}}if(!tim=
ers.length){clearInterval(jQuery.timerId);jQuery.timerId=3Dnull}},13)}},s=
how:function(){this.options.orig[this.prop]=3DjQuery.attr(this.elem.style=
,this.prop);this.options.show=3Dtrue;this.custom(0,this.cur());if(this.pr=
op=3D=3D"width"||this.prop=3D=3D"height"){this.elem.style[this.prop]=3D"1=
px"}jQuery(this.elem).show()},hide:function(){this.options.orig[this.prop=
]=3DjQuery.attr(this.elem.style,this.prop);this.options.hide=3Dtrue;this.=
custom(this.cur(),0)},step:function(gotoEnd){var =
t=3Dnow();if(gotoEnd||t>this.options.duration+this.startTime){this.now=3D=
this.end;this.pos=3Dthis.state=3D1;this.update();this.options.curAnim[thi=
s.prop]=3Dtrue;var done=3Dtrue;for(var i in =
this.options.curAnim){if(this.options.curAnim[i]!=3D=3Dtrue){done=3Dfalse=
}}if(done){if(this.options.display!=3Dnull){this.elem.style.overflow=3Dth=
is.options.overflow;this.elem.style.display=3Dthis.options.display;if(jQu=
ery.css(this.elem,"display")=3D=3D"none"){this.elem.style.display=3D"bloc=
k"}}if(this.options.hide){this.elem.style.display=3D"none"}if(this.option=
s.hide||this.options.show){for(var p in =
this.options.curAnim){jQuery.attr(this.elem.style,p,this.options.orig[p])=
}}}if(done){this.options.complete.call(this.elem)}return false}else{var =
n=3Dt-this.startTime;this.state=3Dn/this.options.duration;this.pos=3DjQue=
ry.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](th=
is.state,n,0,1,this.options.duration);this.now=3Dthis.start+((this.end-th=
is.start)*this.pos);this.update()}return =
true}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{=
scrollLeft:function(fx){fx.elem.scrollLeft=3Dfx.now},scrollTop:function(f=
x){fx.elem.scrollTop=3Dfx.now},opacity:function(fx){jQuery.attr(fx.elem.s=
tyle,"opacity",fx.now)},_default:function(fx){fx.elem.style[fx.prop]=3Dfx=
.now+fx.unit}}});jQuery.fn.offset=3Dfunction(){var =
left=3D0,top=3D0,elem=3Dthis[0],results;if(elem){with(jQuery.browser){var=
 =
parent=3Delem.parentNode,offsetChild=3Delem,offsetParent=3Delem.offsetPar=
ent,doc=3Delem.ownerDocument,safari2=3Dsafari&&parseInt(version)<522&&!/a=
dobeair/i.test(userAgent),css=3DjQuery.curCSS,fixed=3Dcss(elem,"position"=
)=3D=3D"fixed";if(elem.getBoundingClientRect){var =
box=3Delem.getBoundingClientRect();add(box.left+Math.max(doc.documentElem=
ent.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.=
scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.d=
ocumentElement.clientTop)}else{add(elem.offsetLeft,elem.offsetTop);while(=
offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozi=
lla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2){bord=
er(offsetParent)}if(!fixed&&css(offsetParent,"position")=3D=3D"fixed"){fi=
xed=3Dtrue}offsetChild=3D/^body$/i.test(offsetParent.tagName)?offsetChild=
:offsetParent;offsetParent=3DoffsetParent.offsetParent}while(parent&&pare=
nt.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i=
.test(css(parent,"display"))){add(-parent.scrollLeft,-parent.scrollTop)}i=
f(mozilla&&css(parent,"overflow")!=3D"visible"){border(parent)}parent=3Dp=
arent.parentNode}if((safari2&&(fixed||css(offsetChild,"position")=3D=3D"a=
bsolute"))||(mozilla&&css(offsetChild,"position")!=3D"absolute")){add(-do=
c.body.offsetLeft,-doc.body.offsetTop)}if(fixed){add(Math.max(doc.documen=
tElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scr=
ollTop,doc.body.scrollTop))}}results=3D{top:top,left:left}}}function =
border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS=
(elem,"borderTopWidth",true))}function =
add(l,t){left+=3DparseInt(l,10)||0;top+=3DparseInt(t,10)||0}return =
results};jQuery.fn.extend({position:function(){var =
left=3D0,top=3D0,results;if(this[0]){var =
offsetParent=3Dthis.offsetParent(),offset=3Dthis.offset(),parentOffset=3D=
/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.=
offset();offset.top-=3Dnum(this,"marginTop");offset.left-=3Dnum(this,"mar=
ginLeft");parentOffset.top+=3Dnum(offsetParent,"borderTopWidth");parentOf=
fset.left+=3Dnum(offsetParent,"borderLeftWidth");results=3D{top:offset.to=
p-parentOffset.top,left:offset.left-parentOffset.left}}return =
results},offsetParent:function(){var =
offsetParent=3Dthis[0].offsetParent;while(offsetParent&&(!/^body|html$/i.=
test(offsetParent.tagName)&&jQuery.css(offsetParent,"position")=3D=3D"sta=
tic")){offsetParent=3DoffsetParent.offsetParent}return =
jQuery(offsetParent)}});jQuery.each(["Left","Top"],function(i,name){var =
method=3D"scroll"+name;jQuery.fn[method]=3Dfunction(val){if(!this[0]){ret=
urn}return =
val!=3Dundefined?this.each(function(){this=3D=3Dwindow||this=3D=3Ddocumen=
t?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window)=
.scrollTop()):this[method]=3Dval}):this[0]=3D=3Dwindow||this[0]=3D=3Ddocu=
ment?self[i?"pageYOffset":"pageXOffset"]||jQuery.boxModel&&document.docum=
entElement[method]||document.body[method]:this[0][method]}});jQuery.each(=
["Height","Width"],function(i,name){var =
tl=3Di?"Left":"Top",br=3Di?"Right":"Bottom";jQuery.fn["inner"+name]=3Dfun=
ction(){return =
this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br)}=
;jQuery.fn["outer"+name]=3Dfunction(margin){return =
this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"=
Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0)}})})();jQu=
ery.fn.reverse=3Dfunction(){return =
this.pushStack(this.get().reverse(),arguments)};jQuery.each(["id","title"=
,"name","href","src","rel"],function(a,b){jQuery.fn[b]=3Dfunction(c){retu=
rn =
c=3D=3Dundefined?this.length?this[0][b]:null:this.attr(b,c)}});jQuery.eac=
h("top,left,position,float,overflow,color,background".split(","),function=
(a,b){jQuery.fn[b]=3Dfunction(c){return =
c=3D=3Dundefined?(this.length?jQuery.css(this[0],b):null):this.css(b,c)}}=
);var =
e=3D("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouse=
up,mousemove,mouseover,mouseout,change,reset,select,submit,keydown,keypre=
ss,keyup,error").split(",");for(var i=3D0;i<e.length;i++){new =
function(){var a=3De[i];jQuery.fn["un"+a]=3Dfunction(b){return =
this.unbind(a,b)};jQuery.fn["one"+a]=3Dfunction(d){var =
b=3DjQuery(this);var c=3Dfunction(){b.unbind(a,c);b=3Dnull;return =
d.apply(this,arguments)};return =
this.bind(a,c)}}}jQuery.fn.ancestors=3DjQuery.fn.parents;jQuery.expr[":"]=
["nth-child"]=3D"jQuery.nth(a.parentNode.firstChild,parseInt(m[3])+1,'nex=
tSibling')=3D=3Da";(function(a){a.each(["eq","lt","gt","contains"],functi=
on(b,c){a.fn[c]=3Dfunction(d,f){return =
this.filter(":"+c+"("+d+")",f)}});a.fn.evalScripts=3Dfunction(){};a.fn.lo=
adIfModified=3Dfunction(){var =
b=3Da.ajaxSettings.ifModified;a.ajaxSettings.ifModified=3Dtrue;var =
c=3Da.fn.load.apply(this,arguments);a.ajaxSettings.ifModified=3Db;return =
c};a.getIfModified=3Dfunction(){var =
b=3Da.ajaxSettings.ifModified;a.ajaxSettings.ifModified=3Dtrue;var =
c=3Da.get.apply(a,arguments);a.ajaxSettings.ifModified=3Db;return =
c};a.ajaxTimeout=3Dfunction(b){a.ajaxSettings.timeout=3Db}})(jQuery);jQue=
ry.cookie=3Dfunction(b,k,n){if(typeof =
k!=3D"undefined"){n=3Dn||{};if(k=3D=3D=3Dnull){k=3D"";n.expires=3D-1}var =
f=3D"";if(n.expires&&(typeof =
n.expires=3D=3D"number"||n.expires.toUTCString)){var g;if(typeof =
n.expires=3D=3D"number"){g=3Dnew =
Date();g.setTime(g.getTime()+(n.expires*24*60*60*1000))}else{g=3Dn.expire=
s}f=3D"; expires=3D"+g.toUTCString()}var m=3Dn.path?"; =
path=3D"+(n.path):"";var h=3Dn.domain?"; domain=3D"+(n.domain):"";var =
a=3Dn.secure?"; =
secure":"";document.cookie=3D[b,"=3D",encodeURIComponent(k),f,m,h,a].join=
("")}else{var d=3Dnull;if(document.cookie&&document.cookie!=3D""){var =
l=3Ddocument.cookie.split(";");for(var j=3D0;j<l.length;j++){var =
c=3DjQuery.trim(l[j]);if(c.substring(0,b.length+1)=3D=3D(b+"=3D")){d=3Dde=
codeURIComponent(c.substring(b.length+1));break}}}return =
d}};jQuery.cookieAllowed=3Dfunction(){var =
a=3DMath.floor(1000*Math.random());jQuery.cookie("AreCookiesEnabled",a);i=
f(a=3D=3DjQuery.cookie("AreCookiesEnabled")){return true}else{return =
false}};new function(f){var d=3Df.separator||"&";var =
c=3Df.spaces=3D=3D=3Dfalse?false:true;var =
a=3Df.suffix=3D=3D=3Dfalse?"":"[]";var =
h=3Df.prefix=3D=3D=3Dfalse?false:true;var =
b=3Dh?f.hash=3D=3D=3Dtrue?"#":"?":"";var =
g=3Df.numbers=3D=3D=3Dfalse?false:true;jQuery.query=3Dnew function(){var =
j=3Dfunction(p,n){return =
p!=3Dundefined&&p!=3D=3Dnull&&(!!n?p.constructor=3D=3Dn:true)};var =
k=3Dfunction(s){var =
n,r=3D/\[([^[]*)\]/g,o=3D/^([^[]+)(\[.*\])?$/.exec(s),p=3Do[1],q=3D[];whi=
le(n=3Dr.exec(o[2])){q.push(n[1])}return[p,q]};var =
m=3Dfunction(u,t,s){var v,r=3Dt.shift();if(typeof =
u!=3D"object"){u=3Dnull}if(r=3D=3D=3D""){if(!u){u=3D[]}if(j(u,Array)){u.p=
ush(t.length=3D=3D0?s:m(null,t.slice(0),s))}else{if(j(u,Object)){var =
q=3D0;while(u[q++]!=3Dnull){}u[--q]=3Dt.length=3D=3D0?s:m(u[q],t.slice(0)=
,s)}else{u=3D[];u.push(t.length=3D=3D0?s:m(null,t.slice(0),s))}}}else{if(=
r&&r.match(/^\s*[0-9]+\s*$/)){var =
p=3DparseInt(r,10);if(!u){u=3D[]}u[p]=3Dt.length=3D=3D0?s:m(u[p],t.slice(=
0),s)}else{if(r){var =
p=3Dr.replace(/^\s*|\s*$/g,"");if(!u){u=3D{}}if(j(u,Array)){var =
n=3D{};for(var =
q=3D0;q<u.length;++q){n[q]=3Du[q]}u=3Dn}u[p]=3Dt.length=3D=3D0?s:m(u[p],t=
.slice(0),s)}else{return s}}}return u};var l=3Dfunction(n){var =
o=3Dthis;o.keys=3D{};if(n.queryObject){jQuery.each(n.get(),function(p,q){=
o.SET(p,q)})}else{jQuery.each(arguments,function(){var =
p=3D""+this;p=3Dp.replace(/^[?#]/,"");p=3Dp.replace(/[;&]$/,"");if(c){p=3D=
p.replace(/[+]/g," ")}jQuery.each(p.split(/[&;]/),function(){var =
q=3DdecodeURIComponent(this.split("=3D")[0]||"");var =
r=3DdecodeURIComponent(this.split("=3D")[1]||"");if(!q){return}if(g){if(/=
^[+-]?[0-9]+\.[0-9]*$/.test(r)){r=3DparseFloat(r)}else{if(/^[+-]?[0-9]+$/=
.test(r)){r=3DparseInt(r,10)}}}r=3D(!r&&r!=3D=3D0)?true:r;if(r!=3D=3Dfals=
e&&r!=3D=3Dtrue&&typeof r!=3D"number"){r=3Dr}o.SET(q,r)})})}return =
o};l.prototype=3D{queryObject:true,has:function(n,o){var =
p=3Dthis.get(n);return j(p,o)},GET:function(o){if(!j(o)){return =
this.keys}var n=3Dk(o),p=3Dn[0],r=3Dn[1];var =
q=3Dthis.keys[p];while(q!=3Dnull&&r.length!=3D0){q=3Dq[r.shift()]}return =
typeof q=3D=3D"number"?q:q||""},get:function(n){var =
o=3Dthis.GET(n);if(j(o,Object)){return =
jQuery.extend(true,{},o)}else{if(j(o,Array)){return o.slice(0)}}return =
o},SET:function(o,t){var q=3D!j(t)?null:t;var =
n=3Dk(o),p=3Dn[0],s=3Dn[1];var =
r=3Dthis.keys[p];this.keys[p]=3Dm(r,s.slice(0),q);return =
this},set:function(n,o){return =
this.copy().SET(n,o)},REMOVE:function(n){return =
this.SET(n,null).COMPACT()},remove:function(n){return =
this.copy().REMOVE(n)},EMPTY:function(){var =
n=3Dthis;jQuery.each(n.keys,function(o,p){delete n.keys[o]});return =
n},load:function(n){var p=3Dn.replace(/^.*?[#](.+?)(?:\?.+)?$/,"$1");var =
o=3Dn.replace(/^.*?[?](.+?)(?:#.+)?$/,"$1");return new =
l(n.length=3D=3Do.length?"":o,n.length=3D=3Dp.length?"":p)},empty:functio=
n(){return this.copy().EMPTY()},copy:function(){return new =
l(this)},COMPACT:function(){function n(q){var p=3Dtypeof =
q=3D=3D"object"?j(q,Array)?[]:{}:q;if(typeof q=3D=3D"object"){function =
o(t,r,s){if(j(t,Array)){t.push(s)}else{t[r]=3Ds}}jQuery.each(q,function(r=
,s){if(!j(s)){return true}o(p,r,n(s))})}return =
p}this.keys=3Dn(this.keys);return this},compact:function(){return =
this.copy().COMPACT()},toString:function(){var =
p=3D0,t=3D[],s=3D[],o=3Dthis;var =
q=3Dfunction(u){u=3Du+"";if(c){u=3Du.replace(/ /g,"+")}return =
encodeURIComponent(u)};var =
n=3Dfunction(u,v,w){if(!j(w)||w=3D=3D=3Dfalse){return}var =
x=3D[q(v)];if(w!=3D=3Dtrue){x.push("=3D");x.push(q(w))}u.push(x.join(""))=
};var r=3Dfunction(v,u){var w=3Dfunction(x){return =
!u||u=3D=3D""?[x].join(""):[u,"[",x,"]"].join("")};jQuery.each(v,function=
(x,y){if(typeof =
y=3D=3D"object"){r(y,w(x))}else{n(s,w(x),y)}})};r(this.keys);if(s.length>=
0){t.push(b)}t.push(s.join(d));return t.join("")}};return new =
l(location.search,location.hash)}}(jQuery.query||{});NW.WriteOnReady=3DNW=
.WriteOnReady||{};NW.WriteOnReady=3Dfunction(){var =
a=3D[];return{init:function(){for(var c=3D0;c<a.length;c++){var =
d=3Da[c][0];var =
b=3Da[c][1];$(d).html(b)}},add_object:function(g,f,d){var b=3Dnew =
Array();var =
c=3Df;if(d=3D=3D"audio_player"){c=3Dthis.audio_player(f)}b.push(g);b.push=
(c);a.push(b)},audio_player:function(c){var b=3D"";b=3D'<object =
type=3D"application/x-shockwave-flash" =
';b+=3D'data=3D"http://www.networkworld.com/widgets/audio/audioplayer.swf=
?src=3D'+c+'" ';b+=3D'width=3D"150" height=3D"21">';b+=3D'<param =
name=3D"movie" =
value=3D"http://www.networkworld.com/widgets/audio/audioplayer.swf?src=3D=
'+c+'" />';b+=3D'<param name=3D"quality" value=3D"high" =
/>';b+=3D"</object> ";return =
b}}}();NW.ExpandableLeader=3DNW.ExpandableLeader||{};NW.ExpandableLeader=3D=
function(){var d=3D0;var f=3Dnull;var c=3Dnull;var a=3Dnull;var =
b=3Dnull;return{initValues:function(g,j){var =
h=3Dthis;if(typeof(g)=3D=3D"function"||typeof(content)=3D=3D"function"){r=
eturn}d=3Dg;f=3Dj},createExpLeader:function(){if(f.stylesht){$('<link =
rel=3D"stylesheet" type=3D"text/css" =
href=3D"'+f.stylesht+'">').appendTo("head")}c=3D$("<div></div>");c.attr("=
id","page_flyout_first").addClass("page_flyout").append(f.bot_first).appe=
nd(f.top_first).prependTo("#nww_container").bind("mouseleave",function(){=
$(this).hide()});a=3D$("<div></div>");a.attr("id","page_flyout_second").a=
ddClass("page_flyout").append(f.bot_second).append(f.top_second).prependT=
o("#nww_container").bind("mouseleave",function(){$(this).hide()});b=3D$("=
<div></div>");b.attr("id","page_flyout_third").addClass("page_flyout").ap=
pend(f.bot_third).append(f.top_third).prependTo("#nww_container").bind("m=
ouseleave",function(){$(this).hide()})},showPane:function(g){$("#nww_cont=
ainer =
.page_flyout").hide();if(g=3D=3D"first"){c.show()}else{if(g=3D=3D"second"=
){a.show()}else{b.show()}}}}}();
------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: 7bit
Content-Location: http://www.networkworld.com/includes/main08.js

var defaultOpened = 1;
var initAccordion = function(){
	var headers = $('.individual_tab_wrapper .header');
	var contents = $('.individual_tab_wrapper .content');
	
	var hiddenItems = $('.individual_tab_wrapper .content ul.hidden');
	//hiddenItems.slideUp(500);
	
	var viewLinks = $('.individual_tab_wrapper .content a.view');
	viewLinks.bind('click',function(e){
		if ($(this).hasClass('active')){
			$(this).prev().slideUp(500);
			$(this).removeClass('active');
			$(this).html('View more');
		} else {
			$(this).prev().slideDown(500);
			$(this).addClass('active');
			$(this).html('View less');
		}
		return false;
	});
	
	if (headers.length == contents.length && headers.length > 0){
		for (var i = 0; i < contents.length; i++){
			if (i + 1 != defaultOpened){
				$(contents[i]).slideUp(500);
			} else {
			    $(contents[i]).show("fast");
				//$(contents[i]).slideDown(500);
				$(headers[i]).addClass('active');
			}
		}
	}
	headers.bind('click',function(e){
		if (!/active/.test(this.className)){
			openBlock($(this), $(this).next())
		}
		return false;
	});
}

var openBlock = function(header, content){
	var headers = $('.individual_tab_wrapper .header.active');
	closeBlock($(headers),$(headers).next());

	content.slideDown(500);
	header.addClass('active');
}

var closeBlock = function(header, content){
	content.slideUp(500);
	header.removeClass('active');
}

/* Tech Centers and Homepage*/
function initPage()
{
	initActive();
	var label_hover = document.getElementById("storage");
	var box = document.getElementById("box");
	if (label_hover)
	{
		label_hover.onmouseover = function()
		{
			box.style.display='block';
		}
		label_hover.onmouseout = function()
		{
			box.style.display='none';
		}
	}
}

function check(id){
	var bx = "box"+id.substring(2);
	var lbh = document.getElementById(id);
	var bxh = document.getElementById(bx);
	if(lbh){
		lbh.onmouseover = function()
		{
			bxh.style.display='block';
		}
		lbh.onmouseout = function()
		{
			bxh.style.display='none';
		}		
	}		
}

function initActive()
{
	var all_links=document.getElementsByTagName("a");
	for (var i = 0; i < all_links.length; i++)
	{
		if (all_links[i].className == "more")
		{
			all_links[i].onclick = function()
			{
				if (this.parentNode.className == "active")
				{
					this.parentNode.className="";

				} else
				{
					this.parentNode.className="active";
				}	
				return false;
			}
		}
	}		
}
if (window.addEventListener){
	window.addEventListener("load", initPage, false);
}
else if (window.attachEvent){
	window.attachEvent("onload", initPage);
}

/* // Tech Centers and Homepage */


/*
jQuery().ready(function(){
	if(typeof(bcid) != "undefined" && bcid > 0) defaultOpened = 2;
	initAccordion();
	$('#container').tabs({fxFade: true, fxSpeed: 'normal'});
});
*/
------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.networkworld.com/includes/js/_head.js

NW=3Dwindow.NW||{};var extRelatedLinks=3Dnew Array();var =
intRelatedLinks=3Dnew Array();var infRelatedLinks=3Dnew =
Array();NW.RelatedLinks=3DNW.RelatedLinks||{};NW.RelatedLinks=3Dfunction(=
){return{topNum:8,split:5,splitID:"relatedlinks",parent:null,child:null,d=
ivID:null,topicname:null,docuri:null,pgType:null,setParent:function(A){th=
is.parent=3DA},setChild:function(A){this.child=3DA},setDivID:function(A){=
this.divID=3DA},setTopicName:function(A){this.topicname=3DA},setDocURI:fu=
nction(A){this.docuri=3DA},setPageType:function(A){this.pgType=3DA},setTo=
pNum:function(A){this.topNum=3DA},linkObj:function(C,A,B){if(C=3D=3Dnull|=
|C=3D=3D""){C=3D"none"}if(A=3D=3Dnull||A=3D=3D""){A=3D"none"}if(B=3D=3Dnu=
ll||B=3D=3D""){B=3D"none"}this.title=3DC;this.href=3DA;this.linktype=3DB}=
,init:function(D,F,A,E,B,C){if(typeof =
(C)=3D=3D"undefined"){C=3D"article"}NW.RelatedLinks.setParent(D);NW.Relat=
edLinks.setChild(F);NW.RelatedLinks.setDivID(A);NW.RelatedLinks.setTopicN=
ame(E);NW.RelatedLinks.setPageType(C);if(B!=3Dnull&&B!=3D""){if(B.indexOf=
("/article_redesign/")>-1){B=3DB.substring(17)}B=3D"http://www.networkwor=
ld.com"+B}NW.RelatedLinks.setDocURI(B);NW.RelatedLinks.getRelatedLinks()}=
,getRelatedLinks:function(){if(this.divID!=3Dnull&&this.divID!=3D""){if(t=
his.parent=3D=3Dnull){this.parent=3D""}if(this.child=3D=3Dnull){this.chil=
d=3D""}var C=3DintRelatedLinks.concat(extRelatedLinks);var B=3Dnew =
Array();for(var =
A=3D0;A<C.length;A++){if(C[A].title!=3D"none"&&C[A].href!=3D"none"){B[A]=3D=
C[A]}}C=3DB;if(C.length<this.topNum){if(infRelatedLinks.length>0){NW.Rela=
tedLinks.writeInformJS()}for(var =
A=3D0;A<infRelatedLinks.length;A++){for(var E=3D0;E<C.length;E++){var =
D=3Dnull;if(infRelatedLinks[A].href.indexOf("http://www.networkworld.com"=
)=3D=3D-1){D=3D"http://www.networkworld.com"+infRelatedLinks[A].href}else=
{D=3DinfRelatedLinks[A].href}if(infRelatedLinks[A].title=3D=3DC[E].title|=
|D=3D=3DC[E].href){infRelatedLinks.splice(A,1)}}}C=3DC.concat(infRelatedL=
inks)}NW.RelatedLinks.writeHTML(C)}},getLinkInfo:function(A){if(A.href.in=
dexOf("/podcast")>-1){return("podcast")}else{if(A.href.indexOf("/video")>=
-1){return("video")}else{if(A.href.indexOf("/slideshow")>-1){return("slid=
eshow")}else{if(A.href.indexOf("/community")>-1){return("blog")}else{if(A=
.href.indexOf("/newsletter")>-1){return("blog")}else{if(A.href.indexOf("/=
columnists")>-1){return("blog")}else{return =
null}}}}}}},writeHTML:function(I){if(this.pgType=3D=3D"slideshow"){NW.Rel=
atedLinks.setTopNum(3)}var E=3D"";var =
F=3D"";if(this.parent!=3D""){E+=3Dthis.parent}if(typeof =
(whitepaper)!=3D"undefined"){var G=3Dwhitepaper.length;if(G>6){var =
H=3D6}else{if(G>2){H=3DG-2}else{H=3D0}}}for(var =
D=3D0;D<I.length;D++){if(D<this.topNum){if(typeof =
(whitepaper)!=3D"undefined"){if(D=3D=3D3||D=3D=3D7&&H<G){if(this.child!=3D=
""){E+=3Dthis.child.substring(0,(this.child.length)-1);E+=3D" =
class=3Dwhitepaper>"}var =
C=3Dwhitepaper[H].href;if(C!=3Dnull&&C!=3D""){C=3DC.replace("wp","rc").re=
place("nwwlib","nwwtsr")}E+=3D'<a =
href=3D"'+C+'">'+whitepaper[H].title+'<span class=3D"relatedtype">WHITE =
PAPER</span></a>';if(this.child!=3D""){E+=3D"</"+this.child.substring(1)}=
H++}}F=3DNW.RelatedLinks.getLinkInfo(I[D]);if(D!=3D0&&D%this.split=3D=3D(=
this.split-1)&&this.parent!=3D""){E+=3D"</"+this.parent.substring(1);E+=3D=
this.parent.substring(0,(this.parent.length)-1)+' style=3D"display:none" =
id=3D"'+this.splitID+'">'}if(this.child!=3D""){E+=3Dthis.child.substring(=
0,(this.child.length)-1);if(F!=3Dnull){E+=3D" class=3D"+F}E+=3D">"}var =
A=3DNW.RelatedLinks.rightTrim(I[D].href);var =
B=3D"?";if(A.indexOf("?")>-1){B=3D"&"}E+=3D'<a =
href=3D"'+A;if(A.indexOf("http://www.networkworld.com")>-1){E+=3DB+"ap1=3D=
rcb"}E+=3D'"';if(I[D].linktype=3D=3D"inform"){E+=3D" onclick=3D\"return =
Inform.track('related-article', =
this);\">"+I[D].title}else{E+=3D">"+I[D].title}if(F!=3Dnull){E+=3D'<span =
class=3D"relatedtype">'+F.toUpperCase()+"</span>";F=3Dnull}E+=3D"</a>";if=
(this.child!=3D""){E+=3D"</"+this.child.substring(1)}}else{break}}if(this=
.parent!=3D""){E+=3D"</"+this.parent.substring(1)}if(this.pgType!=3D"slid=
eshow"){E+=3D'<a class=3D"relatedmore" id=3D"togglelist-relatedlinks" =
href=3D"javascript:void(0);">View more related =
content</a>'}$("#"+this.divID).append(E)},rightTrim:function(A){if(A!=3Dn=
ull&&A!=3D""){while(A.substring(A.length-1,A.length)=3D=3D" =
"){A=3DA.substring(0,A.length-1)}}return A},writeInformJS:function(){var =
A=3D' <script type=3D"text/javascript"> var Inform =3D {	clientId: =
"networkworld",	sectionId: "global"	}; Inform.track =3D function =
(linkType, linkEl)    {	var trackingData =3D {	    url: =
linkEl.getAttribute("href"),	    item: linkEl.firstChild.nodeValue,	    =
linkType: linkType	};	var trackingElement =3D =
this.generateTrackingElement(trackingData);	=
document.body.appendChild(trackingElement);	return true; }; =
Inform.generateTrackingElement =3D function (trackingData)    {	var =
trackingImage =3D document.createElement("IMG");	=
trackingImage.setAttribute("src", =
this.generateTrackingUrl(trackingData));	trackingImage.style.position =
=3D "absolute";	trackingImage.style.top =3D "0px";	=
trackingImage.style.left =3D "0px";	trackingImage.style.zIndex =3D "0";	=
trackingImage.style.visibility =3D "hidden";	trackingImage.style.display =
=3D "none";	return trackingImage; }; Inform.generateTrackingUrl =3D =
function (trackingData)    {	return =
"http://feeds.inform.com/resources/log/img.aspx?act=3Drnwats&cid=3D" + =
this.clientId + "&sid=3D" + this.sectionId + "&i=3D" + =
escape(trackingData.item) + "&u=3D" + escape(trackingData.url) + "&d=3D" =
+ (new Date()).getTime(); }; =
<\/script>';$("#"+this.divID).append(A)},writeSpecialRelatedContent:funct=
ion(D,B){if(D=3D=3Dnull||D=3D=3D""){D=3D3}if(typeof =
(whitepaper)!=3D"undefined"&&B!=3Dnull&&B!=3D""){if(whitepaper.length<D){=
D=3Dwhitepaper.length}var C=3D$("<ul></ul>");for(var =
A=3D0;A<D;A++){C.append('<li><a =
href=3D"'+whitepaper[A].href.replace("nwwlib","nwwtxt").replace("wp","wps=
lide")+'">'+whitepaper[A].title+"</a></li>")}$(B).append(C)}}}}();NW.Pagi=
ng=3DNW.Paging||{};NW.Paging=3Dfunction(){return{currentPage:null,pagingD=
ivName:null,pagingID:null,adRefresh:1,totalPages:null,setCurrentPage:func=
tion(A){this.currentPage=3DA},setPagingDivName:function(A){this.pagingDiv=
Name=3DA},setpagingID:function(A){this.pagingID=3DA},setTotalPages:functi=
on(A){this.totalPages=3DA},setAdRefresh:function(A){if(A!=3Dnull||A!=3D""=
){this.adRefresh=3DA}},getCurrentPage:function(){return =
this.currentPage},getPagingDivName:function(){return =
this.pagingDivName},getPagingID:function(){return =
this.pagingID},getTotalPages:function(){return =
this.totalPages},getAdRefresh:function(){return =
this.adRefresh},init:function(E,D,A,C){if(C=3D""||typeof =
(C)=3D=3D"undefined"){C=3D1}var B=3D$(E+" =
span[id^=3Dpage]").get().length;NW.Paging.setTotalPages(B);if(A!=3Dnull&&=
A!=3D""&&A>0&&A<=3DB){NW.Paging.writeHTML(E,D,A,C)}else{NW.Paging.writeHT=
ML(E,D,1,C)}},writeHTML:function(H,G,E,F){NW.Paging.setPagingDivName(H);N=
W.Paging.setpagingID(G);NW.Paging.setCurrentPage(E);NW.Paging.setAdRefres=
h(F);var D=3D'<div id=3D"pagenum"><ul id=3D"pages">';var =
A=3DparseInt(NW.Paging.getCurrentPage())+1;var =
B=3DparseInt(NW.Paging.getCurrentPage())-1;if(this.currentPage>1){D+=3D'<=
li id=3D"prev"><a id=3D"prevpg'+B+'" class=3D"noline" href=3D"#top">< =
Prev</a></li>'}for(var =
C=3D1;C<=3DNW.Paging.getTotalPages();C++){if(C!=3Dthis.currentPage){D+=3D=
'<li><a class=3D"noline" href=3D"#top" =
id=3D"page'+C+'">'+C+"</a></li>"}else{D+=3D'<li =
id=3D"currentpage">'+E+"</li>"}}if(this.currentPage<NW.Paging.getTotalPag=
es()){D+=3D'<li id=3D"next"><a id=3D"nextpg'+A+'" class=3D"noline" =
href=3D"#top">Next =
></a></li>'}D+=3D"</ul></div>";if(NW.Paging.getTotalPages()=3D=3D1){D=3D"=
"}$("div[id^=3D"+G+"]").html(D);$("span[id=3Dpage"+NW.Paging.getCurrentPa=
ge()+"]").hide();$("span[id=3Dpage"+E+"]").show();$("#pages li =
a[id^=3Dpage]").click(function(K){var L=3Dthis.id;var =
I=3DL.substring(4);var =
J=3DNW.Paging.getCurrentPage();$("span[id=3Dpage"+I+"]").show();$("span[i=
d=3Dpage"+J+"]").hide();NW.Paging.writeHTML(NW.Paging.getPagingDivName(),=
NW.Paging.getPagingID(),I,NW.Paging.getAdRefresh());if(F){NW.Paging.globa=
lPageRefresh()}if(typeof =
(specialPagingInit)!=3D"undefined"){specialPagingInit()}});if(this.curren=
tPage>1){$("div[id^=3D"+NW.Paging.getPagingID()+"] #prev =
a[id^=3Dprevpg]").click(function(I){NW.Paging.updateCurrentPage(this.id,F=
);if(F){NW.Paging.globalPageRefresh()}if(typeof =
(specialPagingInit)!=3D"undefined"){specialPagingInit()}})}if(this.curren=
tPage<NW.Paging.getTotalPages()){$("div[id^=3D"+NW.Paging.getPagingID()+"=
] #next =
a[id^=3Dnextpg]").click(function(I){NW.Paging.updateCurrentPage(this.id,F=
);if(F){NW.Paging.globalPageRefresh()}if(typeof =
(specialPagingInit)!=3D"undefined"){specialPagingInit()}})}},updateCurren=
tPage:function(C,B){var =
A=3DC.substring(6);$("span[id=3Dpage"+A+"]").show();$("span[id=3Dpage"+NW=
.Paging.getCurrentPage()+"]").hide();NW.Paging.writeHTML(NW.Paging.getPag=
ingDivName(),NW.Paging.getPagingID(),A,NW.Paging.getAdRefresh())},globalP=
ageRefresh:function(B,D,A,C){NW.Paging.refreshAds(B,D,A,C);NW.Paging.upda=
tePageCounts()},refreshAds:function(D,B,E,K){if(D=3D=3Dnull||D=3D=3D""){D=
=3D1}if(B=3D=3Dnull||B=3D=3D""){B=3D1}if(E=3D=3Dnull||E=3D=3D""){E=3D1}if=
(K=3D=3Dnull||K=3D=3D"undefined"){K=3D""}var C=3D"#banner";var =
A=3D"#imudyn";var I=3D"#cimu";var J=3DMath.random();if(typeof =
(bannersrc)!=3D"undefined"&&D=3D=3D1){var =
G=3DNW.Paging.insertIntoStr(bannersrc,"refresh","type=3D");$(C).attr("src=
",G)}if(typeof (imudynsrc)!=3D"undefined"&&B=3D=3D1){var =
F=3DNW.Paging.insertIntoStr(imudynsrc,"refresh","type=3D");$(K+A).attr("s=
rc",F)}if(typeof (imusrc2)!=3D"undefined"&&E=3D=3D1){var =
H=3DNW.Paging.insertIntoStr(imusrc2,"refresh","type=3D");$(K+I).attr("src=
",H)}},updatePageCounts:function(){var B=3DMath.random();var E=3Dnew =
String(document.location.href);var C=3DE.lastIndexOf("/");var =
D=3DE.substring(C+1);var A=3Dauthor.replace("+"," =
");if(D.indexOf("?")>-1){D=3DD.substring(0,D.indexOf("?"))}_qpixelsent=3D=
"";quantserve();urchinTracker(D)},insertIntoStr:function(E,A,C){if(E!=3Dn=
ull&&A!=3Dnull&&E.indexOf(C)>-1){var =
B=3DE.substring(0,E.indexOf(C)+C.length);var =
D=3DE.substring(E.indexOf(C)+C.length,E.length);E=3DB+A+D}return =
E}}}();NW.SpecialResources=3DNW.SpecialResources||{};NW.SpecialResources=3D=
function(){return{topNum:3,divID:null,typeArray:null,displayName:null,div=
Name:null,moreName:null,imgPath:null,topicName:null,topicID:null,setTopNu=
m:function(topNum,type){this.topNum=3DtopNum},setDivID:function(divID){th=
is.divID=3DdivID},setTypeArray:function(type){this.typeArray=3Deval(type)=
},setTopicName:function(topicname){if(topicname!=3Dnull||topicname=3D=3D"=
General"){topicname=3D""}this.topicName=3Dtopicname},setTopicID:function(=
topicid){if(topicid!=3Dnull&&topicid=3D=3D"0"){topicid=3D""}this.topicID=3D=
topicid},setTypeValues:function(type){var imgPaths=3Dnew =
Object();if(type!=3Dnull&&type!=3D""){if(type=3D=3D"specialreport"){var =
_displayName=3D"Special Report"}else{if(type=3D=3D"whitepaper"){var =
_displayName=3D"White Paper"}else{var =
_displayName=3Dtype.charAt(0).toUpperCase()+type.substring(1)}}this.displ=
ayName=3D_displayName;if(type=3D=3D"specialreport"){var =
_divName=3D"reports"}else{if(type=3D=3D"whitepaper"){var =
_divName=3D"whitepapers"}else{var =
_divName=3D_displayName.toLowerCase()+"s"}}this.divName=3D_divName;this.m=
oreName=3D_displayName.toLowerCase();if(typeof =
(eval("imgPaths."+type))!=3D"undefined"){this.imgPath=3Deval("imgPaths."+=
type)}}},linkObj:function(title,href,description){if(title=3D=3Dnull||tit=
le=3D=3D""){title=3D"none"}if(href=3D=3Dnull||href=3D=3D""){href=3D"none"=
}this.title=3Dtitle;this.href=3Dhref;this.description=3Ddescription},init=
:function(topNum,divID,type,topicname,topicid){NW.SpecialResources.setTop=
Num(topNum,type);NW.SpecialResources.setDivID(divID);NW.SpecialResources.=
setTypeArray(type);NW.SpecialResources.setTypeValues(type);NW.SpecialReso=
urces.setTopicName(topicname);NW.SpecialResources.setTopicID(topicid);NW.=
SpecialResources.writeHTML(type)},writeHTML:function(type){var =
htmlTop=3D'<div class=3D"'+this.divName+'"><div class=3D"box"><div =
class=3D"box-top"><div class=3D"box-bottom"><h2><a =
href=3D"http://www.networkworld.com/resourcelibrary/?tid=3D'+this.topicID=
+"&type=3D"+this.moreName+'">'+this.displayName+'s</a></h2><div =
class=3D"content"><div class=3D"wht-bot">';var =
htmlBottom=3D"</div></div></div></div></div></div>";var =
html=3D"";html+=3DhtmlTop;for(var =
i=3D0;i<this.typeArray.length;i++){if(i<this.topNum){html+=3D'<strong><a =
style=3D"text-decoration:none;" href=3D"'+this.typeArray[i].href+'" =
target=3D"_top">'+this.typeArray[i].title+"</a></strong>";if(type!=3D"whi=
tepaper"||(type=3D=3D"whitepaper"&&i<3)){html+=3D"<p>"+this.typeArray[i].=
description+"</p>"}}else{break}}html+=3DhtmlBottom;$("div[id=3D'"+this.di=
vID+"'][class=3D'resource_"+type+"']").append(html);if(type=3D=3D"whitepa=
per"){$("div.whitepapers strong:odd").each(function(){var =
$this=3D$(this);$this.add($this.next("p")).wrapAll('<div =
class=3D"alt"></div>')})}}}}();NW.Timer=3DNW.Timer||{};NW.Timer=3Dfunctio=
n(){var B=3Dnew Boolean(false);var =
A=3D0;return{Interval:1500,Run:function(){},start:function(){if(this.isRu=
nning){clearTimeout(this.timerId)}this.isRunning=3Dnew =
Boolean(true);this.timerId=3DsetTimeout(function(){NW.Timer.Run()},this.I=
nterval)}}}();LeadGen=3Dwindow.LeadGen||{};LeadGen.Tracking=3DLeadGen.Tra=
cking||{};LeadGen.Tracking=3Dfunction(){var B=3D"na";var =
A=3D"_";String.prototype.trim=3Dfunction(){return =
this.replace(/^\s+|\s+$/g,"")};return{contentTypeNames:{"5001":"article",=
"320":"homepage","5002":"index","5003":"indexautomated","5149":"oneoff","=
327":"podcast","317":"topic","325":"slideshow","323":"subnet","303":"solu=
tioncenter"},storyType:B,pageType:B,pgTopic:B,pgAuthor:B,contenttypeid:nu=
ll,ref:document.referrer,domain:"",rxcParams:null,setDomain:function(){if=
(this.ref!=3Dnull){var =
C=3Dthis.ref.match("//.*?/");if(C){this.domain=3DC[0].substring(2,C[0].le=
ngth-1)}if(this.domain.indexOf("www.")>-1){this.domain=3Dthis.domain.subs=
tring(4)}}if(this.domain=3D=3Dnull||this.domain.length=3D=3D0){this.domai=
n=3DB}},setPageType:function(){if(this.contenttypeid!=3Dnull&&this.conten=
tTypeNames[this.contenttypeid]!=3Dnull){this.pageType=3Dthis.contentTypeN=
ames[this.contenttypeid]}},getArticleType:function(){var =
C=3D$("meta[name=3D'articletype']").attr("content");if(C!=3D""&&C!=3D"und=
efined"&&C!=3D"$articletypedispname"){this.storyType=3DC.toLowerCase().re=
place(/ /g,"").replace("&","and")}},getSubTopicName:function(){var =
D=3Ddocument.location.href;var =
C=3D"na";if(D.indexOf("/topics/")>-1){C=3DD.substring(D.lastIndexOf("/")+=
1,D.indexOf(".html"))}return =
C},setStoryType:function(){if(this.contenttypeid=3D=3D"5001"){this.getArt=
icleType()}else{if(this.contenttypeid=3D=3D"317"&&typeof =
(subtopicid)!=3D"undefined"&&subtopicid!=3D""){this.storyType=3D"subtopic=
:"+this.getSubTopicName();this.pageType=3D"subtopic"}else{if(this.content=
typeid=3D=3D"5002"&&document.location.href.indexOf("/news/")>-1){this.sto=
ryType=3D"news =
index"}else{if(this.contenttypeid=3D=3D"5149"&&document.location.href.ind=
exOf("/resourcelibrary/")>-1){this.pageType=3D"resource library";var =
C=3D"resource library =
index";if(getQueryParamValue("type")!=3D""&&getQueryParamValue("type")!=3D=
"all"){C=3DgetQueryParamValue("type")+" resource =
library"}this.storyType=3DC}else{this.storyType=3Dthis.pageType}}}}},addS=
ourceCodeOnClick:function(I,C,E){var J=3DB;var F=3DB;var =
H=3D"www.accelacomm.com";var G=3D"";var =
K=3D"?";if(I!=3Dnull&&I!=3D""){J=3DI}if(C!=3Dnull&&C!=3D""){F=3DC}if(E&&E=
.href){G=3DE.href;if(G.indexOf(H)>-1){var =
D=3DJ+A+this.rxcParams+A+F;if(G.indexOf("?")>-1){K=3D"&"}G=3DG+K+"idglg=3D=
"+D}window.open(G,"window")}},addSourceCode:function(D){if(D&&D.href){var=
 F=3DD.href.substring(D.href.lastIndexOf("/")+1);var E=3D"na";var =
C=3D"na";if(F.indexOf("_")>-1){F=3DF.split("_")}if(F[0]!=3D"undefined"){E=
=3DF[0]}if(F[1]!=3D"undefined"){C=3DF[1]}var =
G=3DE.trim()+A+this.rxcParams+A+C.trim();if(typeof =
(console)!=3D"undefined"){console.log(D.href.substring(0,D.href.lastIndex=
Of("/")+1)+G)}window.open(D.href.substring(0,D.href.lastIndexOf("/")+1)+G=
,"window")}},init:function(){LeadGen.Tracking.setDomain();if(typeof =
(typeid)!=3D"undefined"){this.contenttypeid=3Dtypeid}if(typeof =
(NW.PageInfo.rxprimarytopic)!=3D"undefined"&&NW.PageInfo.rxprimarytopic!=3D=
"(none)"){this.pgTopic=3DNW.PageInfo.rxprimarytopic}var =
C=3D$("meta[name=3D'author']").attr("content");if(C!=3Dnull&&C!=3D""&&C!=3D=
"undefined"){this.pgAuthor=3Descape(C).replace(/%E4/g,"a")}this.setPageTy=
pe();this.setStoryType();this.rxcParams=3Dthis.pageType.trim()+A+this.sto=
ryType.trim()+A+this.pgTopic.trim()+A+unescape(this.pgAuthor.trim())+A+th=
is.domain.trim()}}}();LeadGen.Tracking.init();NW.FlashAudio=3DNW.FlashAud=
io||{};NW.FlashAudio=3Dfunction(){var B=3D[];var A=3Dfunction(C){var =
D=3D"";D=3D'<object type=3D"application/x-shockwave-flash" =
';D+=3D'data=3D"http://www.networkworld.com/widgets/audio/audioplayer.swf=
?src=3D'+B[C][1]+'" ';D+=3D'width=3D"150" height=3D"21">';D+=3D'<param =
name=3D"movie" =
value=3D"http://www.networkworld.com/widgets/audio/audioplayer.swf?src=3D=
'+B[C][1]+'" />';D+=3D'<param name=3D"quality" value=3D"high" =
/>';D+=3D"</object> ";return D};return{init:function(){for(var =
D=3D0;D<B.length;D++){var =
C=3DA(0);$("#audio").html(C)}},add_object:function(E,D){var C=3Dnew =
Array();C.push(E);C.push(D);B.push(C)}}}();var =
toggle=3Dfunction(F){if(this.id.indexOf("togglelist-")>-1){var I=3D"View =
more ";var G=3D"View less ";var A=3Dthis.id.split("-");var =
B=3D$("#"+this.id).html();if(B!=3Dnull){var C=3DB.indexOf(I);var =
E=3DB.indexOf(G);var D=3DI.length;var =
H=3DG.length;$("#"+A[1]).toggle();if(C>-1){B=3DG+B.substring(C+D)}else{B=3D=
I+B.substring(E+D)}$("#"+this.id).html(B)}}};function =
showdiv(A){$("div[name=3D"+A+"]").show()}function =
hidediv(A){$("div[name=3D"+A+"]").hide()}function hbxStrip(A){var =
C=3D["\n","\r","|","&","'","#","$","%","^","*",":","!","<",">","~",";"];f=
or(var B in C){A=3DA.split(C[B]).join("")}A=3DA.split(" =
").join("+");return A}function getQueryParamValue(A){return =
$.query.get(A)}function SetCookie(B,D,A,G,C,F){var E=3Dnew =
Object();if(G){E.path=3DG}else{E.path=3D"/"}if(C){E.domain=3DC}if(A){E.ex=
pires=3Dnew =
Date(A)}if(F){E.expires=3DF}$.cookie("the_cookie","the_value",E)}function=
 =
doneNewCookie(A){if(document.cookie.length>0){offset=3Ddocument.cookie.in=
dexOf(A+"=3D");if(offset!=3D-1){return true}else{return =
false}}else{return false}}function =
toggleBox(A,B){B?$("#"+A).show():$("#"+A).hide()}var subtopicid=3D0;var =
practive=3D0;var author=3D"";var keywords=3D"";var publisher=3D"";var =
agt=3Dnavigator.userAgent.toLowerCase();var =
is_ie=3D((agt.indexOf("msie")!=3D-1)&&(agt.indexOf("opera")=3D=3D-1));var=
 firefox=3D(agt.indexOf("firefox")!=3D-1);var =
safari=3D(agt.indexOf("safari")!=3D-1);var refresh;var adrefresh=3D0;var =
timerID=3D0;var adrefresh=3D60000*adrefresh;var imusrc=3D"";var =
skysrc=3D"";var =
bannersrc=3D"";if(refresh){adrefresh=3Drefresh}if(adrefresh>0){timerID=3D=
setTimeout("switchad()",adrefresh)}var =
myref=3D"";new_window=3Dnull;function =
openNewWindow(){new_window=3Dwindow.open("","new_window","width=3D800,hei=
ght=3D500, =
scrollbars=3Dyes,resizable=3Dyes,toolbar=3Dno,directories=3Dno,location=3D=
no,menubar=3Dno,status=3Dno,left=3D0,top=3D0");return true}var =
popWin=3Dnull;function =
openurl(A){closePopWin();popWin=3Dwindow.open(A,"NewWindow","width=3D588,=
height=3D480,menubar=3Dno,toolbar=3Dno,location=3Dno,scrollbars=3D0,top=3D=
50,left=3D100")}function =
closePopWin(){if(navigator.appName!=3D"Microsoft Internet =
Explorer"||parseInt(navigator.appVersion)>=3D4){if(popWin!=3Dnull){if(!po=
pWin.closed){popWin.close()}}}}function openWindow(B,F,A){var =
C=3Dscreen.width;var E=3Dscreen.height;var H=3D(C-F)/2;var =
G=3D(E-A)/2;var =
D=3D"toolbar=3D0,location=3D0,scrollbars=3D1,resizable=3D1,width=3D"+F+",=
height=3D"+A+",left=3D"+H+",top=3D"+G;nwwWin=3Dwindow.open(B,"nwwWin",D);=
nwwWin.focus()}if(document.getElementsByName){var =
metaArray=3Ddocument.getElementsByName("author");if(metaArray[0]){author=3D=
hbxStrip(metaArray[0].content)}var =
metaArray=3Ddocument.getElementsByName("keywords");if(metaArray[0]){keywo=
rds=3DhbxStrip(metaArray[0].content)}var =
metaArray=3Ddocument.getElementsByName("publisher");if(metaArray[0]){publ=
isher=3DhbxStrip(metaArray[0].content)}}var newWin;function =
init(){if(typeof =
customInit=3D=3D"function"){customInit()}if(practive>0){adrefresh=3D0;cle=
arTimeout(timerID)}};
------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://admin.brightcove.com/js/experience_util.js

var playerIndex;
var flashId;
function createExperience(config, flashVersion) {
   // default version to 7 for backwards compatability
   if (flashVersion =3D=3D undefined) var flashVersion =3D 7;
   // Config parameters to pass into the SWF file.
   var servicesURL =3D "http://console.brightcove.com/services";
   var viewerSecureGatewayURL =3D =
"https://console.brightcove.com/services/amfgateway";
   var cdnURL =3D "http://admin.brightcove.com";

   var bgcolor =3D config["preloadBackColor"];
   var externalAds =3D (typeof(playAd) !=3D "undefined");
   var sendReports =3D (typeof(reportEvent) !=3D "undefined");
  =20
   var width =3D config["width"];
   var height =3D config["height"];
   if (width =3D=3D null) {
    width =3D "100%";   =20
   }
   if (height =3D=3D null) {
    height =3D "100%";   =20
   }
  //specify version required Flash version
  if (config["requireFlash8"] || flashVersion =3D=3D 8){
    requiredMajorVersion =3D 8;
  } else{
	//mac requires flash 8
	requiredMajorVersion =3D 7;
	var isMac =3D navigator.appVersion.toLowerCase().indexOf("mac") > 0;
	if (isMac) requiredMajorVersion =3D 8;
  }
  var requiredMinorVersion =3D 0;
  var requiredRevision =3D 0;
 =20
  var hasRightVersion =3D =
DetectFlashVer(requiredMajorVersion,requiredMinorVersion,requiredRevision=
);
  if(hasRightVersion) {=20
 =20
	var pid =3D getParameter("bcpid");
	if(pid.length < 1  || (pid =3D=3D config["playerId"]))  {
		var titleParam =3D getParameter("bctid");
		if (titleParam.length > 0) {
		  config["videoId"] =3D titleParam;
		  config["autoStart"] =3D true;
		  config["fromLink"] =3D true;
		}
		var lineupParam =3D getParameter("bclid");
		if (lineupParam.length > 0) {
		  config["lineupId"] =3D lineupParam;
		}
	}
 =20
    if (playerIndex =3D=3D undefined){
		playerIndex =3D 0;
	}else{
		playerIndex++;
	}=09

    if (config["flashId"] =3D=3D undefined) {
      flashId =3D "flashObj" + playerIndex;
    } else {
      flashId =3D escapeValue(config["flashId"]) + playerIndex;
    }

    var configItems =3D "";
    for (var i in config) {
       if (i =3D=3D "flashId") continue;
       if (typeof(config[i]) =3D=3D "function" || typeof(config[i]) =
=3D=3D "object") continue;
      =20
       configItems +=3D "&" + i + "=3D" + escapeValue(config[i]);
    }

    // Hook for Internet Explorer.
    if (navigator.appName && navigator.appName.indexOf("Microsoft") !=3D =
-1 && navigator.userAgent.indexOf("Windows") !=3D -1 && =
navigator.userAgent.indexOf("Windows 3.1") =3D=3D -1) {
	document.write('<script language=3D\"VBScript\"\>\n');
	document.write('On Error Resume Next\n');
	document.write('Sub ' + flashId + '_FSCommand(ByVal command, ByVal =
args)\n');
	document.write('	Call onFSCommand(command, args)\n');
	document.write('End Sub\n');
	document.write('</script\>\n');
    }

    var swfFile =3D "federated.swf";
    if (flashVersion =3D=3D 8) {
      swfFile =3D "federated_f8.swf";
    }

    var file =3D cdnURL + "/viewer/" + swfFile + "?flashId=3D"+flashId+
         "&servicesURL=3D"+escapeValue(servicesURL)+
         =
"&viewerSecureGatewayURL=3D"+escapeValue(viewerSecureGatewayURL)+
         "&cdnURL=3D"+escapeValue(cdnURL)+
         configItems+
         "&externalAds=3D"+escapeValue(externalAds)+
         "&sendReports=3D"+escapeValue(sendReports)+
         "&buildNumber=3D" + 1119 +
         "&ranNum=3D" + Math.floor(Math.random()*1000000);  =20

    if (!DetectFlashVer(8,0,0)) {
      file +=3D "&domain=3D" + getDomain();
    }
   =20
    wmode =3D config["wmode"];
	if (wmode =3D=3D null) wmode =3D "window";
=09
    version =3D "7,0,0,0"; // why write 7 always??
    quality =3D "high";
    document.write("<object =
classid=3D\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" =
codebase=3D\"http://download.macromedia.com/pub/shockwave/cabs/flash/swfl=
ash.cab#version=3D" + version + "\" id=3D\""+flashId+"\" =
width=3D\""+width+"\" height=3D\""+height+"\">");
    document.write("  <param name=3D\"allowScriptAccess\" =
value=3D\"always\"/>");
    document.write("  <param name=3D\"allowFullScreen\" =
value=3D\"true\"/>");
    document.write("  <param name=3D\"movie\" value=3D\""+file+"\"/>");
    document.write("  <param name=3D\"wmode\" value=3D\""+wmode+"\"/>");
    document.write("  <param name=3D\"quality\" =
value=3D\""+quality+"\"/>");
    document.write("  <param name=3D\"bgcolor\" value=3D\"" + bgcolor + =
"\"/>");
    document.write("  <param name=3D\"base\" =
value=3D\""+cdnURL+"/viewer/\"/>");
    document.write("  <param name=3D\"SeamlessTabbing\" =
value=3D\"false\"/>");
    document.write("  <embed src=3D\""+file+"\" =
base=3D\""+cdnURL+"/viewer/\" quality=3D\""+quality+"\" =
bgcolor=3D\""+bgcolor+"\" allowScriptAccess=3D\"always\" =
name=3D\""+flashId+"\" width=3D\""+width+"\" height=3D\""+height+"\" =
wmode=3D\""+wmode+"\" seamlesstabbing=3D\"false\" =
type=3D\"application/x-shockwave-flash\" swLiveConnect=3D\"true\" =
pluginspage=3D\"http://www.macromedia.com/shockwave/download/index.cgi?P1=
_Prod_Version=3DShockwaveFlash\"></embed>");
    document.write("</object>");=20
   =20
  } else {  // flash is too old or we can't detect the plugin=20
    document.write("<table width=3D'" + width + "' height=3D'" + height =
+ "' border=3D'0' bgcolor=3D'"+bgcolor+"'>");
    document.write("<tr><td align=3D'center' valign=3D'middle'>");
    document.write("<a href=3D'http://www.adobe.com/go/getflash/' =
target=3D'_blank'><img =
src=3D'"+cdnURL+"/viewer/upgrade_flash_player.gif' alt=3D'Get Flash =
Player' width=3D'314' height=3D'200' border=3D'0'></a>");
    document.write("</td></tr></table>");     =20
   }

   return flashId;
}

function escapeValue(str) {
  return encodeURIComponent(str);
}

function getDomain() {
  var domain =3D window.location.href;
  if (domain.substring(0, 7) =3D=3D "http://") {
    domain =3D domain.substring(7, domain.length);
  }
  var i =3D domain.indexOf("/");
  if (i !=3D -1) {
    domain =3D domain.substring(0, i);
  }
  i =3D domain.indexOf(":");
  if (i !=3D -1) {
    domain =3D domain.substring(0, i);
  }
  return domain;
}
var ID_DELIM =3D "|||";

function onFSCommand(command, args) {
  if (command =3D=3D "eval"){
    eval(args);
    return;
  }
  if (this[command] =3D=3D null) return;
  var obj =3D convertToObject(unescape(args));
  if (obj !=3D null) {
    var callback =3D obj.callback;
    var flashId =3D obj.flashId;
    if (obj.flashId !=3D null && callback !=3D null) {
      callback =3D obj.flashId + ID_DELIM + callback;
    }
    if (obj.args =3D=3D null) {
      eval(command + "(callback);");
    } else {
      eval(command + "(obj.args, callback);");
    }
  } else {
    eval(command + "();");
  }
}

var flashCallback;
var flashCallbacks =3D [];
function setAPICallback(id, callback) {
  flashCallback =3D callback;
  flashCallbacks[id] =3D callback;
}

function callFlash() {
  var method =3D arguments[0];
  var params =3D [];
  for (var i =3D 1; i < arguments.length; i++) {
    params.push(arguments[i]);
  }
  callbackFlash(flashCallback, {method:method, params:params});
}

function callFlashInstance() {
  var flashId =3D arguments[0];
  var method =3D arguments[1];
  var params =3D [];
  for (var i =3D 2; i < arguments.length; i++) {
    params.push(arguments[i]);
  }
  var callback =3D flashCallbacks[flashId];
  callbackFlash(callback, {method:method, params:params});
}

function callbackFlash(callback, returnValue) {
  var flashId =3D "flashObj";

  var arry =3D callback.split(ID_DELIM);
 =20
  if (arry.length > 1) {
    if (arry[0].length > 0) {
      flashId =3D arry[0];
    }
    callback =3D arry[1];
  }

  var fo =3D document[flashId];
  if (fo =3D=3D null) fo =3D document.embeds[flashId];
  if (fo =3D=3D null) fo =3D document.getElementById(flashId);

  if (fo[callback] !=3D null) {
    return fo[callback](convertToXML(returnValue, "js2flash"));
  } else {
    try {
      fo.SetVariable(callback, convertToXML(returnValue, "js2flash"));
    } catch (e) {}
  }
}


function convertToXML(obj, rootName) {
	if (obj instanceof Function) return "";
  	var type =3D getType(obj);
  	var xml =3D "<"+type.name+rootName+">";
 =20
	if(type.sub) {
  		for (var i in obj) {
 		  xml +=3D convertToXML(obj[i], i);
    	}
	}
	else if (type.name =3D=3D "str") {
		obj =3D replaceEntities(obj);
		xml +=3D obj;
	}=20
	else {
		  xml +=3D obj;
	}
	xml +=3D "</"+type.name+rootName+">";
	return xml;
}

function replaceEntities(obj) {
	obj =3D obj.replace("&", "&amp;");
	obj =3D obj.replace("<", "&lt;");
	obj =3D obj.replace(">", "&gt;");=09
	return obj;
}

var s_xml_types =3D new Array();=09
s_xml_types.push({name:"str",type:String,sub:false});
s_xml_types.push({name:"boo",type:Boolean,sub:false});
s_xml_types.push({name:"num", type:Number,sub:false});
//s_xml_types.push({name:"date", type:Date,sub:false});
s_xml_types.push({name:"arr", type:Array,sub:true});
s_xml_types.push({name:"cda", type:CData, sub:false});
s_xml_types.push({name:"obj", type:Object,sub:true});

function getType(obj) {
        switch (typeof(obj)) {
		case "boolean":
			return {name:"boo",type:Boolean,sub:false};
		case "string":
			return {name:"str",type:String,sub:false};
		case "number":
			return {name:"num",type:Number,sub:false};
	}
	for (var i =3D 0; i < s_xml_types.length; i++) {
	  if (obj instanceof s_xml_types[i].type) {
	    return s_xml_types[i];
	  }
	}
	return {name:"obj", type:Object,sub:true};
}
function getTypeClass(name) {
  if (name =3D=3D null) return null;

  name =3D name.toLowerCase();
	for (var i =3D 0; i < s_xml_types.length; i++) {
	  if (name =3D=3D s_xml_types[i].name) {
	    return s_xml_types[i].type;
	  }
	}
	return null;
}

function convertToObject(node) {
//  try {
    if (node =3D=3D null) {
      return;
    }
   =20
    if (node.substring !=3D null) {
      node =3D parseXML(node);
    }
	 =20
	  if (node =3D=3D null || node.childNodes =3D=3D null || =
node.childNodes.length =3D=3D 0) {
	    return null;
	  }

	  var type =3D getTypeClass(node.nodeName.substring(0,3));
	  if (type =3D=3D null) {
	    type =3D Object;
	  }

		if (node.firstChild.nodeType =3D=3D 3 || node.firstChild.nodeType =
=3D=3D 4) {
			return getObjectForNode(type, node);

		} else {
	=09
  		var obj =3D new type();
	  	var children =3D node.childNodes;
		  for (var i =3D 0; i < children.length; i++) {
		    var name =3D children[i].nodeName;
		    name =3D name.substring(3, name.length);
			  obj[name] =3D convertToObject(children[i]);
	  	}
		  return obj;
		}
//	} catch (e) {
//    alert("Error creating object:" + e.message);
//	  return null;
//	}
}

function getObjectForNode(type, node) {
	if (type =3D=3D Boolean) {
		if (node.firstChild.nodeValue =3D=3D "true") {
			return new Boolean(1);
		}
		else {
			return new Boolean(0);
		}
	}
	else {
		return new type(node.firstChild.nodeValue);
	}
}

function parseXML(str) {
  if (window.ActiveXObject) {
    var xmldoc =3D new ActiveXObject("Microsoft.XMLDOM");
    try {
      xmldoc.setProperty("SelectionLanguage", "XPath");
    } catch (e) {} // i.e. 5 doesn't like setting the selection language
    xmldoc.async =3D false;

    xmldoc.loadXML(str);
    return xmldoc.documentElement; =20
  } else if (DOMParser) {

    var parser =3D new DOMParser();
    var doc =3D parser.parseFromString(str, "text/xml");
   =20
    return doc.firstChild;
   =20
  } else {
    return makeXMLNode(str);
  }
}


function makeXMLNode(str) {
  var node =3D {};
  var nodeName =3D node.nodeName =3D getNodeName(str);
  node.nodeType =3D 1;
  node.childNodes =3D [];
  node.firstChild =3D null;
  var startTagEndIndex =3D nodeName.length + 2;
  var endTagIndex =3D str.lastIndexOf("</" + nodeName);
  var nodeData =3D str.substring(startTagEndIndex, endTagIndex);
  if (nodeData.substring(0, 9) =3D=3D "<![CDATA[") {
    var child =3D {};
    child.nodeName =3D null;
    child.nodeType =3D 4;
    child.nodeValue =3D getCDATA(nodeName, =
str.substring(startTagEndIndex, str.length));
    node.childNodes =3D [child];
  } else if (nodeData.indexOf("<") > -1) {
    node.childNodes =3D getChildNodes(nodeData);
  } else if (nodeData.length =3D=3D 0) {
    //do nothing, we want 0 children here
  } else {
    var child =3D {};
    child.nodeName =3D null;
    child.nodeType =3D 3;
    child.nodeValue =3D getNodeValue(nodeName, nodeData);
    node.childNodes =3D [child];
  }
  if (node.childNodes.length > 0) {
    node.firstChild =3D node.childNodes[0];
  }
  return node;
}

function getNodeName(str) {
  return str.substring(str.indexOf("<")+1, str.indexOf(">"));
}

function getChildNodes(nodeData) {
  var childNodes =3D [];
  var nodeName;
  var nextIndex;
  var endIndex;
  var dataLength;
  var nameLength;
  var startNodesArray;
  var endNodesArray;
  var startNodesLength;
  var endNodesLength;
  var endNodes;
  var startNodes;
  var endNode;
  var i;
  var j;
  while (nodeData.length > 0) {
    nodeName =3D getNodeName(nodeData);
    nameLength =3D nodeName.length;
    nextIndex =3D nodeData.indexOf("<"+nodeName, nameLength);
    endIndex =3D nodeData.indexOf("</"+nodeName, nameLength);
    if (endIndex < 0) return childNodes;
    if (nextIndex < 0 || endIndex < nextIndex) {
      dataLength =3D endIndex+nodeName.length+3;
      childData =3D nodeData.substr(0, dataLength);
      nodeData =3D nodeData.substr(dataLength);
      childNodes.push(makeXMLNode(childData));
    } else {
      endNodes =3D 0;
      startNodes =3D 0;
      startNodesArray =3D nodeData.split("<" + nodeName + ">");
      startNodesLength =3D startNodesArray.length;
      endNode =3D "</" + nodeName + ">";
      for (i =3D 0; i < startNodesLength; i++) {
        startNodes++;
        startNodesStr =3D startNodesArray[i];
        if (startNodesStr.indexOf(endNode) > -1) {
          endNodesArray =3D startNodesStr.split("</" + nodeName + ">");
          endNodesLength =3D endNodesArray.length;
          for (j =3D 0; j < endNodesLength; j++) {
            if (++endNodes =3D=3D startNodes) {
              childData =3D startNodesArray.slice(0, =
startNodes).join("");
              dataLength =3D childData.length;
              nodeData =3D nodeData.substr(dataLength);
              childNodes.push(makeXMLNode(childData));
              return childNodes;
            }
          }
        }
      }
      childNodes.push(makeXMLNode(nodeData));
      nodeData =3D "";
    }
  }
  return childNodes;
}

function getCDATA(nodeName, nodeData) {
  var endCDATA =3D nodeData.indexOf("]]>", 9);
  if (endCDATA < 0) {
    return null;
  } else {
    return getNodeValue(nodeName, nodeData.substring(9, endCDATA));
  }
}

function getNodeValue(nodeName, nodeValue) {
  switch (nodeName.substr(0, 3)) {
    case "boo":
      return (nodeValue=3D=3D"true");
    case "num":
      return Number(nodeValue);
    case "str":
      return String(nodeValue);
    default:
      return nodeValue;
  }
}

function CData(str) {
  this.data =3D str;
}

CData.prototype.toString =3D function() {
  return "<![CDATA[" + this.data + "]]>";
}

/*
var chunks =3D {}
function chunkCall(id, total, index, chunk) {
  if (chunks[id] =3D=3D undefined) chunks[id] =3D [];
  chunks[id][index] =3D chunk;
  if (index =3D=3D total) {
    eval(chunks[id].join(""));
    delete chunks[id];
  }
}
*/
//Flash Detection
var bcisIE  =3D (navigator.appVersion.indexOf("MSIE") !=3D -1 && =
/opera/i.test(navigator.userAgent) =3D=3D false) ? true : false;
var bcisWin =3D (navigator.appVersion.toLowerCase().indexOf("win") !=3D =
-1) ? true : false;
var bcisOpera =3D (navigator.userAgent.indexOf("Opera") !=3D -1) ? true =
: false;
// JavaScript helper required to detect Flash Player PlugIn version =
information
function JSGetSwfVer(i){
	if (navigator.plugins !=3D null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || =
navigator.plugins["Shockwave Flash"]) {
			var swVer2 =3D navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : =
"";
      		var flashDescription =3D navigator.plugins["Shockwave Flash" + =
swVer2].description;
			descArray =3D flashDescription.split(" ");
			tempArrayMajor =3D descArray[2].split(".");
			versionMajor =3D tempArrayMajor[0];
			versionMinor =3D tempArrayMajor[1];
			if ( descArray[3] !=3D "" ) {
				tempArrayMinor =3D descArray[3].split("r");
			} else {
				tempArrayMinor =3D descArray[4].split("r");
			}
      		versionRevision =3D tempArrayMinor[1] > 0 ? tempArrayMinor[1] : =
0;
            flashVer =3D versionMajor + "." + versionMinor + "." + =
versionRevision;
      	} else {
			flashVer =3D -1;
		}
	}
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") !=3D =
-1) flashVer =3D 4;
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") !=3D =
-1) flashVer =3D 3;
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") !=3D -1) =
flashVer =3D 2;
	else {	=09
		flashVer =3D -1;
	}
	return flashVer;
}=20
// If called with no parameters this function returns a floating point =
value=20
// which should be the version of the Flash Player or 0.0=20
// ex: Flash Player 7r14 returns 7.14
// If called with reqMajorVer, reqMinorVer, reqRevision returns true if =
that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)=20
{
 	reqVer =3D parseFloat(reqMajorVer + "." + reqRevision);
   	for (i=3D25;i>0;i--) {=09
		if (bcisIE && bcisWin && !bcisOpera) {
			versionStr =3D VBGetSwfVer(i);
		} else {
			versionStr =3D JSGetSwfVer(i);	=09
		}
		if (versionStr =3D=3D -1 ) {=20
			return false;
		} else if (versionStr !=3D 0) {
			if(bcisIE && bcisWin && !bcisOpera) {
				tempArray         =3D versionStr.split(" ");
				tempString        =3D tempArray[1];
				versionArray      =3D tempString .split(",");			=09
			} else {
				versionArray      =3D versionStr.split(".");
			}
			versionMajor      =3D versionArray[0];
			versionMinor      =3D versionArray[1];
			versionRevision   =3D versionArray[2];
		=09
			versionString     =3D versionMajor + "." + versionRevision;   // =
7.0r24 =3D=3D 7.24
			versionNum        =3D parseFloat(versionString);
    		if ( versionMajor > reqMajorVer ) {
				return true;
			} else {
				return ((versionMajor =3D=3D reqMajorVer && versionMinor >=3D =
reqMinorVer) ? true : false );=09
			}
		}
	}=09
	return (reqVer ? false : 0.0);
}

// Visual basic helper required to detect Flash Player ActiveX control =
version information
if (navigator.appName && navigator.appName.indexOf("Microsoft") !=3D -1 =
&& navigator.userAgent.indexOf("Windows") !=3D -1 && =
navigator.userAgent.indexOf("Windows 3.1") =3D=3D -1) {
	document.write('<script language=3D\"VBScript\"\>\n');
	document.write('Function VBGetSwfVer(i)\n');
	document.write('  on error resume next\n');
	document.write('  Dim swControl, swVersion\n');
	document.write('  swVersion =3D 0  \n');
	document.write('  set swControl =3D =
CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i))\n');
	document.write('  if (IsObject(swControl)) then\n');
	document.write('    swVersion =3D =
swControl.GetVariable("$version")\n');
	document.write('  end if\n');
	document.write('  VBGetSwfVer =3D swVersion\n');
	document.write('End Function\n');
	document.write('</script\>\n');
}
// Hook for Internet Explorer.
if (navigator.appName && navigator.appName.indexOf("Microsoft") !=3D -1 =
&& navigator.userAgent.indexOf("Windows") !=3D -1 && =
navigator.userAgent.indexOf("Windows 3.1") =3D=3D -1) {
	document.write('<script language=3D\"VBScript\"\>\n');
	document.write('On Error Resume Next\n');
	document.write('Sub flashObj_FSCommand(ByVal command, ByVal args)\n');
	document.write('	Call onFSCommand(command, args)\n');
	document.write('End Sub\n');
	document.write('</script\>\n');
}
// Functions to parse query string parameters
// version: 1.0
// written by Kevin Langdon


// #############################################
// function returns the query string part of url
// everything followed by the '?'
function getQueryString() {
    var urlStr =3D document.location.href;
    var i =3D urlStr.indexOf("?");
    if (i !=3D -1) {
        return urlStr.substring(i, urlStr.length - 1);
    }
    return null;
}


// #############################################
// function parses the query string and returns each
// parameter and value seperated by '&'
function getParameter(name, defaultValue) {
    if (defaultValue =3D=3D null) {
        defaultValue =3D "";
    }

    var url =3D document.location.href;
    var i =3D url.indexOf(name + "=3D");
    if (i !=3D -1) {
        var valuestart =3D i+name.length+1;
        var valueend =3D url.length;

        i =3D url.indexOf("&", valuestart)
        if (i !=3D -1) {
            valueend =3D i;
        }

        return unescape(url.substring(valuestart, valueend));
    }
    return defaultValue;
}

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.networkworld.com/includes/hbx.js

//hbx.js,HBX1.5,COPYRIGHT 1997-2005 WEBSIDESTORY,INC. ALL RIGHTS =
RESERVED. U.S.PATENT No.6,393,479B1 & 6,766,370. =
INFO:http://websidestory.com/privacy=0A=
var _vjs=3D"HBX0150.01u";=0A=
var =
_dl=3D".exe,.zip,.wav,.wmv,.mp3,.mov,.mpg,.avi,.doc,.pdf,.xls,.ppt,.gz";=0A=
function _NA(a){return new Array(a?a:0)}function _NO(){return new =
Object()}=0A=
var =
_mn=3D_hbq=3D"",_hbA=3D_NA(),_hud=3D"undefined",_lv=3D_NO(),_ec=3D_if=3D_=
ll=3D_hec=3D_hfs=3D_hfc=3D_fvf=3D_ic=3D_pC=3D_fc=3D_pv=3D0,_hbi=3Dnew =
Image(),_hbin=3D_NA(),_pA=3D_NA();=0A=
_lv.id=3D_lv.pos=3D_lv.l=3D"";_hbE=3D_D("hbE")?_hbE:"";_hbEC=3D_D("hbEC")=
?_hbEC:0;var _ex=3D"expires=3DWed, 1 Jan 2020 00:00:00 =
GMT",_lvm=3D150,_lidt=3D"lid",_lpost=3D"lpos";=0A=
function _D(v){return(typeof =
eval("window._"+v)!=3D_hud)?eval("window._"+v):""}function =
_DD(v){return(typeof v!=3D_hud)?1:0}=0A=
function _A(v,c){return escape((_D("lc")=3D=3D"y"&&_DD(c))?_TL(v):v)}=0A=
function _B(){return 0}function _GP(){return =
location.protocol=3D=3D"https:"?"https://":"http://"}=0A=
function _IC(a,b,c){return a.charAt(b)=3D=3Dc?1:0}function =
_II(a,b,c){return a.indexOf(b,c?c:0)}function _IL(a){return =
a!=3D_hud?a.length:0}=0A=
function _IF(a,b,c){return a.lastIndexOf(b,c?c:_IL(a))}function =
_IP(a,b){return a.split(b)}=0A=
function _IS(a,b,c){return b>_IL(a)?"":a.substring(b,c!=3Dnull?c:_IL(a))}=0A=
function =
_RP(a,b,c,d){d=3D_II(a,b);if(d>-1){a=3D_RP(_IS(a,0,d)+","+_IS(a,d+_IL(b),=
_IL(a)),b,c)}return a}=0A=
function _TL(a){return a.toLowerCase()}function _TS(a){return =
a.toString()}function _TV(){_hbSend()}function _SV(a,b,c){_hbSet(a,b,c)}=0A=
function _VS(a,b){eval("_"+a+"=3D'"+b+"'")}=0A=
function =
_VC(a,b,c,d){b=3D_IP(a,",");for(c=3D0;c<_IL(b);c++){d=3D_IP(b[c],"|");_VS=
(d[0],(_D(d[0]))?_D(d[0]):d[1]?d[1]:"")}}=0A=
function =
_VL(a,b){for(a=3D0;a<_hbEC;a++){_pv=3D_hbE[a];if(_pv._N=3D=3D"pv"){for(b =
in _pv){if(_EE(b)){_VS(b,_pv[b])}}}}=0A=
_VC("pn|PUT+PAGE+NAME+HERE,mlc|CONTENT+CATEGORY,elf|n,dlf|n,dft|n,pndef|t=
itle,ctdef|full,cp|null,hcn|")}_VL();=0A=
function =
_ER(a,b,c){_hbi.src=3D_GP()+_gn+"/HG?hc=3D"+_mn+"&hb=3D"+_A(_acct)+"&hec=3D=
1&vjs=3D"+_vjs+"&vpc=3DERR&ec=3D1&err=3D"+((typeof =
a=3D=3D"string")?_A(a+"-"+c):"Unknown")}=0A=
function _EE(a){return(a!=3D"_N"&&a!=3D"_C")?1:0}_EV(window,"error",_ER);=0A=
function _hbSend(c,a,i){a=3D"";_hec++;for(i in _hbA)if(typeof =
_hbA[i]!=3D"function")a+=3D"&"+i+"=3D"+_hbA[i];_Q(_hbq+"&hec=3D"+_hec+a+_=
hbSendEV());_hbA=3D_NA()}=0A=
function =
_hbSet(a,b,c,d,e){d=3D_II(_hbq,"&"+a+"=3D");if(d>-1){e=3D_II(_hbq,"&",d+1=
);e=3De>d?e:_IL(_hbq);if(a=3D=3D"n"||a=3D=3D"vcon"){_hbq=3D_IS(_hbq,0,d)+=
"&"+a+"=3D"+b+=0A=
_IS(_hbq,e);_hec=3D-1;if(a=3D=3D"n"){_pn=3Db}else{_mlc=3Db}}else{_hbq=3D_=
IS(_hbq,0,d)+_IS(_hbq,e)}}if((a!=3D"n")&&(a!=3D"vcon"))_hbA[a]=3D(c=3D=3D=
0)?b:_A(b)}=0A=
function =
_hbRedirect(a,b,c,d,e,f,g){_SV("n",a);_SV("vcon",b);if(_DD(d)&&_IL(d)>0){=
d=3D_IC(d,0,"&")?_IS(d,1,_IL(d)):d;e=3D_IP(d,"&");for(f=3D0;f<_IL(e);=0A=
f++){g=3D_IP(e[f],"=3D");_SV(g[0],g[1])}}_TV();if(c!=3D""){_SV("hec",0);s=
etTimeout("location.href=3D'"+c+"'",500)}}=0A=
function =
_hbSendEV(a,b,c,d,e,f,x,i){a=3D'',c=3D'',e=3D_IL(_hbE);for(b=3D0;b<e;b++)=
{c=3D_hbE[b];for(var d in =
c){if(_EE(d)&&c[d].match){x=3Dc[d].match(/\[\]/g);=0A=
if(x!=3Dnull&&_IL(x)>c._C)c._C=3D_IL(x)}}for(d in =
c){if(_EE(d)&&c[d].match){x=3Dc[d].match(/\[\]/g);x=3D(x=3D=3Dnull)?0:_IL=
(x);for(i=3Dx;i<c._C;i++)c[d]+=3D"[]"}}}=0A=
for(b=3D0;b<e;b++){c=3D_hbE[b];for(f=3Db+1;f<e;f++){if(_hbE[f]!=3Dnull&&c=
._N=3D=3D_hbE[f]._N){for(d in =
c){if(_EE(d)&&_hbE[f]!=3Dnull)c[d]+=3D"[]"+_hbE[f][d];=0A=
_hbE[f][d]=3D""}}}for(d in =
c){if(_EE(d)&&c._N!=3D""&&c._N!=3D"pv"){a+=3D"&"+c._N+"."+d+"=3D"+_RP(_A(=
c[d]),"%5B%5D",",")}}}_hbE=3D_NA();_hbEC=3D0;return a}=0A=
function =
_hbM(a,b,c,d){_SV('n',a);_SV('vcon',b);if(_IL(c)>0)_SV(c,d);_TV()}=0A=
function _hbPageView(p,m){_hec=3D-1;_hbM(p,m,"")}function =
_hbExitLink(n){_hbM(_pn,_mlc,"el",n)}function =
_hbDownload(n){_hbM(_pn,_mlc,"fn",n)}=0A=
function =
_hbVisitorSeg(n,p,m){_SV("n",p);_SV("vcon",m);_SV("seg",n,1);_TV()}functi=
on _hbCampaign(n,p,m){_hbM(p,m,"cmp",n)}=0A=
function _hbFunnel(n,p,m){_hbM(p,m,"fnl",n)}function =
_hbGoalPage(n,p,m){_hbM(p,m,"gp",n)}=0A=
function _hbLink(a,b,c){_SV("lid",a);if(_DD(b))_SV("lpos",b);_TV()}=0A=
function =
_LE(a,b,c,d,e,f,g,h,i,j,k,l){b=3D"([0-9A-Za-z\\-]*\\.)",c=3Dlocation.host=
name,d=3Da.href,h=3D'',i=3D'';eval("__f=3D/"+b+"*"+b+"/");if(_DD(__f)){__=
f.exec(c);=0A=
j=3D(_DD(_elf))?_elf:"";if(j!=3D"n"){if(_II(j,"!")>-1){h=3D_IS(j,0,_II(j,=
"!"));i=3D_IS(j,_II(j,"!")+1,_IL(j))}else{h=3Dj}}k=3D0;if(_DD(_elf)&&_elf=
!=3D"n"){=0A=
if(_IL(i)){l=3D_IP(i,",");for(g=3D0;g<_IL(l);g++)if(_II(d,l[g])>-1)return=
}if(_IL(h)){l=3D_IP(h,",");for(g=3D0;g<_IL(h);g++)if(_II(d,l[g])>-1)k=3D1=
}}=0A=
if(_II(a.hostname,RegExp.$2)<0||k){	e=3D_IL(d)-1;return =
_IC(d,e,'/')?_IS(d,0,e):d}}}=0A=
function =
_LD(a,b,c,d,e,f){b=3Da.pathname,d=3D'',e=3D'';b=3D_IS(b,_IF(b,"/")+1,_IL(=
b));c=3D(_DD(_dlf))?_dlf:"";if(c!=3D"n"){if(_II(c,"!")>-1){d=3D","+=0A=
_IS(c,0,_II(c,"!"));e=3D","+_IS(c,_II(c,"!")+1,_IL(c))}else{d=3D","+c}}f=3D=
_II(b,"?");b=3D(f>-1)?_IS(b,0,f):b;if(_IF(b,".")>-1){f=3D_IS(b,_IF(b,".")=
,_IL(b));=0A=
if(_II(_dl+d,f)>-1&&_II(e,f)<0){var =
dl=3Db;if(_DD(_dft)){if(_dft=3D=3D"y"&&a.name){dl=3Da.name}else =
if(_dft=3D=3D"full"){dl=3Da.pathname}}return dl}}}=0A=
function =
_LP(a,b,c){for(c=3D0;c<_IL(a);c++){if(b=3D=3D0){if(_IL(_lv.l)<_lvm)_LV(a[=
c]);else break}else if(b=3D=3D1)_EV(a[c],'mousedown',_LT)}}=0A=
function =
_LV(a,b,c){b=3D_LN(a);c=3Db[0]+b[1];if(_IL(c)){_lv.id+=3D_A(b[0])+",";_lv=
.pos+=3D_A(b[1])+",";_lv.l+=3Dc}}=0A=
function =
_LN(a,b,c,d){b=3Da.href;b+=3Da.name?a.name:"";c=3D_LVP(b,_lidt);d=3D_LVP(=
b,_lpost);return[c,d]}=0A=
function =
_LT(e){if((e.which&&e.which=3D=3D1)||(e.button&&e.button=3D=3D1)){var =
a=3Ddocument.all?window.event.srcElement:this;for(var =
i=3D0;i<4;i++){if(a.tagName&&=0A=
_TL(a.tagName)!=3D"a"&&_TL(a.tagName)!=3D"area"){a=3Da.parentElement}}var=
 =
b=3D_LN(a),c=3D'',d=3D'';a.lid=3Db[0];a.lpos=3Db[1];if(_D("lt")&&_lt!=3D"=
manual"){if((a.tagName&&=0A=
_TL(a.tagName)=3D=3D"area")){if(!_IL(a.lid)){if(a.parentNode){if(a.parent=
Node.name)a.lid=3Da.parentNode.name;else =
a.lid=3Da.parentNode.id}}if(!_IL(a.lpos))=0A=
a.lpos=3Da.coords}else{if(_IL(a.lid)<1)a.lid=3D_LS(a.text?a.text:a.innerT=
ext?a.innerText:"");if(!_IL(a.lid)||_II(_TL(a.lid),"<img")>-1)a.lid=3D_LI=
(a)}}=0A=
if(!_IL(a.lpos)&&_D("lt")=3D=3D"auto_pos"&&a.tagName&&_TL(a.tagName)!=3D"=
area"){c=3Ddocument.links;for(d=3D0;d<_IL(c);d++){if(a=3D=3Dc[d]){a.lpos=3D=
d+1;break}}}=0A=
var _f=3D0,j=3D'',k=3D'',l=3D(a.protocol)?_TL(a.protocol):"";=0A=
if(l&&l!=3D"mailto:"&&l!=3D"javascript:"){j=3D_LE(a),k=3D_LD(a);if(_DD(k)=
)a.fn=3Dk;else if(_DD(j))a.el=3Dj}=0A=
if(_D("lt")&&_IC(_lt,0,"n")!=3D1&&_DD(a.lid)&&_IL(a.lid)>0){_SV("lid",a.l=
id);if(_DD(a.lpos))_SV("lpos",a.lpos);_f=3D1}if(_DD(a.fn)){_SV("fn",a.fn)=
;_f=3D2}=0A=
else if(_DD(a.el)){_SV("el",a.el);_f=3D1}if(_f>0){_TV()}}}=0A=
function =
_LVP(a,b,c,d,e){c=3D_II(a,"&"+b+"=3D");c=3Dc<0?_II(a,"?"+b+"=3D"):c;if(c>=
-1){d=3D_II(a,'&',c+_IL(b)+2);e=3D_IS(a,c+_IL(b)+2,d>-1?d:_IL(a));=0A=
if(!_ec){if(!(_II(e,"//")=3D=3D0))return e}else return e}return ""}=0A=
function _LI(a){var =
b=3D""+a.innerHTML,bu=3D_TL(b),i=3D_II(bu,"<img");if(bu&&i>-1){eval("__f=3D=
/ src\s*=3D\s*['\"]?([^'\" ]+)['\"]?/i");__f.exec(b);=0A=
if(RegExp.$1)b=3DRegExp.$1}return b}=0A=
function _LSP(a,b,c,d){d=3D_IP(a,b);return d.join(c)}=0A=
function =
_LS(a,b,c,d,e,f,g){c=3D_D("lim")?_lim:100;b=3D(_IL(a)>c)?_A(_IS(a,0,c)):_=
A(a);b=3D_LSP(b,"%0A","%20");b=3D_LSP(b,"%0D","%20");b=3D_LSP(b,"%09","%2=
0");=0A=
c=3D_IP(b,"%20");d=3D_NA();e=3D0;for(f=3D0;f<_IL(c);f++){g=3D_RP(c[f],"%2=
0","");if(_IL(g)>0){d[e++]=3Dg}}b=3Dd.join("%20");return unescape(b)}=0A=
function =
_EM(a,b,c,d){a=3D_D("fv");b=3D_II(a,";"),c=3DparseInt(a);d=3D3;if(_TL(a)=3D=
=3D"n"){d=3D999;_fv=3D""}else =
if(b>-1){d=3D_IS(a,0,b);_fv=3D_IS(a,b+1,_IL(a))}=0A=
else if(c>0){d=3Dc;_fv=3D""}return d}=0A=
function _FF(e){var a=3D(_bnN)?this:_EVO(e);_hlf=3D(a.lf)?a.lf:""}=0A=
function =
_FU(e){if(_hfs=3D=3D0&&_IL(_hlf)>0&&_fa=3D=3D1){_hfs=3D1;if(_hfc){_SV("sf=
","1")}else =
if(_IL(_hlf)>0){_SV("lf",_hlf)}_TV();_hlf=3D"",_hfs=3D0,_hfc=3D0}}=0A=
function _FO(e){var =
a=3Dtrue;if(_DD(this._FS))eval("try{a=3Dthis._FS()}catch(e){}");if(a!=3Df=
alse)_hfc=3D1;return a}=0A=
function _FA(a,b,c,d,e,f,g,h,i,ff,fv,s){b=3Da.forms;ff=3Dnew =
Object();f=3D_EM();for(c=3D0;c<_IL(b);c++){ff=3Db[c],d=3D0,s=3D0,e=3Dff.e=
lements,fv=3Deval(_D("fv"));=0A=
if(_DD(fv)&&_TL(_TS(fv))!=3D"n"&&fv!=3D""&&typeof =
fv=3D=3D"function"){_fv=3Dnew =
Function("if("+_fv+"()){_fvf=3D0;_hfc=3D1}");_EV(ff,"submit",_fv),_fvf=3D=
1,_fa=3D1}=0A=
g=3Dff.name?ff.name:"forms["+c+"]";for(h=3D0;h<_IL(e);h++){if(e[h].type&&=
"hiddenbuttonsubmitimagereset".indexOf(e[h].type)<0&&d++>=3Df)break}if(d>=
=3Df){_fa=3D1;=0A=
for(h=3D0;h<_IL(e);h++){i=3De[h];if(i.type&&"hiddenbuttonsubmitimagereset=
".indexOf(i.type)<0){i.lf=3Dg+".";i.lf+=3D(i.name&&i.name!=3D"")?i.name:"=
elements["+h+"]";=0A=
_EV(i,"focus",_FF)}}ff._FS=3Dnull;ff._FS=3Dff.onsubmit;if(_DD(ff._FS)&&ff=
._FS!=3Dnull){ff.onsubmit=3D_FO}else =
if(!(_bnN&&_bv<5)&&_hM&&!(_bnI&&!_I5)){if((!_bnI)||=0A=
(_II(navigator.userAgent,"Opera")>-1)){ff.onsubmit=3D_FO}else{_EV(ff,"sub=
mit",_FO);=0A=
eval("try{document.forms["+c+"]._FS=3Ddocument.forms["+c+"].submit;docume=
nt.forms["+c+"].submit=3D_FO;throw ''}catch(E){}")}}}}}=0A=
function _GR(a,b,c,d){if(!_D("hrf"))return =
a;if(_II(_hrf,"http",0)>-1)return =
_hrf;b=3Dwindow.location.search;b=3D_IL(b)>1?_IS(b,1,_IL(b)):"";=0A=
c=3D_II(b,_hrf+"=3D");if(c>-1){ =
d=3D_II(b,"&",c+1);d=3Dd>c?d:_IL(b);b=3D_IS(b,c+_IL(_hrf)+1,d)}return(b!=3D=
_hud&&_IL(b)>0)?b:a}=0A=
function =
_PO(a,b,c,d,e,f,g){d=3Dlocation,e=3Dd.pathname,f=3D_IS(e,_IF(e,"/")+1),g=3D=
document.title;if(a&&b=3D=3Dc){return(_pndef=3D=3D"title"&&g!=3D""&&g!=3D=
d&&=0A=
!(_bnN&&_II(g,"http")>0))?g:f?f:_pndef}else{return =
b=3D=3Dc?(e=3D=3D""||e=3D=3D"/")?"/":_IS(e,(_ctdef!=3D"full")?_IF(e,"/",_=
IF(e,"/")-2):_II(e,"/"),_IF(e,"/"))=0A=
:(b=3D=3D"/")?b:((_II(b,"/")?"/":"")+(_IF(b,"/")=3D=3D_IL(b)-1?_IS(b,0,_I=
L(b)-1):b))}}=0A=
function _PP(a,b,c,d){return =
""+(c>-1?_PO(b,_IS(a,0,c),d)+";"+_PP(_IS(a,c+1),b,_II(_IS(a,c+1),";")):_P=
O(b,a,d))}=0A=
_mlc=3D_PP(_mlc,0,_II( =
_mlc,";"),"CONTENT+CATEGORY");_pn=3D_PP(_pn,1,_II(_pn,";"),"PUT+PAGE+NAME=
+HERE");=0A=
function _NN(a){return =
_D(a)!=3D"none"}if(_NN("lt")){_LP(document.links,0)}=0A=
function _E(a){var b=3D"";var d=3D_IP(a,",");for(var =
c=3D0;c<_IL(d);c++)b+=3D"&"+d[c]+"=3D"+_A(_D(d[c]));return b}=0A=
function =
_F(a,b){return(!_II(a,"?"+b+"=3D"))?0:_II(a,"&"+b+"=3D")}function =
_G(a,b,c,d){var =
e=3D_F(a,b);if(d&&e<0&&top&&window!=3Dtop){e=3D_F(_tls,b);=0A=
if(e>-1)a=3D_tls};return(e>-1)?_IS(a,e+2+_IL(b),(_II(a,"&",e+1)>-1)?_II(a=
,"&",e+1):_IL(a)):c}=0A=
function =
_H(a,b,c){if(!a)a=3Dc;if(_I5||_N6){eval("try{_vv=3D_G(location.search,'"+=
a+"','"+b+"',1)}"+__c+"{}")}else{_vv=3D_G(location.search,a,b,1)}return =
unescape(_vv)}=0A=
function =
_I(a,b,c,d){__f=3D_IS(a,_II(a,"?"));if(b){if(_I5||_N6){eval("try{_hra=3D_=
G(__f,_hqsr,_hra,0)}"+__c+"{}")}else{_hra=3D_G(__f,_hqsr,_hra,0)}};=0A=
if(c&&!_hra){if(_I5||_N6){eval("try{_hra=3D_G(location.search,_hqsp,_hra,=
1)}"+__c+"{}")}else{_hra=3D_G(location.search,_hqsp,_hra,1)}};=0A=
if(d&&!_hra)_hra=3Dd;return _hra}function =
_J(a,b,c,d){c=3D_II(a,"CP=3D");d=3D_II(a,b,c+3);return(c<0)?"null":_IS(a,=
c+3,(d<0)?_IL(a):d)}=0A=
var =
__r=3D".referrer",_rf=3D_A(eval("document"+__r)),_et=3D0,_oe=3D0,_we=3D0,=
_ar=3D"",_hM=3D(!(_II(navigator.userAgent,"Mac")>-1)),_tls=3D"";=0A=
_bv=3DparseInt(navigator.appVersion);_bv=3D(_bv>99)?(_bv/100):_bv;var =
__f,_hrat=3D_D("hra"),_hra=3D"",__c=3D"catch(_e)",_hbi=3Dnew =
Image(),_fa=3D0,_hlfs=3D0,_hoc=3D0,=0A=
_hlf=3D'',_ce=3D'',_ln=3D'',_pl=3D'',_bn=3Dnavigator.appName,_bn=3D(_II(_=
bn,"Microsoft")?_bn:"MSIE"),_bnN=3D(_bn=3D=3D"Netscape"),_bnI=3D(_bn=3D=3D=
"MSIE"),=0A=
_hck=3D"*; path=3D/; "+(_D("cpd")&&_D("cpd")!=3D""?(" =
domain=3D."+_D("cpd")+"; =
"):"")+_ex,_N6=3D(_bnN&&_bv>4),_I5=3Dfalse,_ss=3D"na",_sc=3D"na",_sv=3D11=
,_cy=3D"u",_hp=3D"u",=0A=
_tp=3D_D("ptc");if(_bn=3D=3D"MSIE"){var =
_nua=3Dnavigator.userAgent,_is=3D_II(_nua,_bn),_if=3D_II(_nua,".",_is);if=
(_if>_is)_I5=3D_nua.substring(_is+5,_if)>=3D5}=0A=
if(_N6||_I5)eval("try{_tls=3Dtop.location.search}catch(_e){}")=0A=
function =
_PV(){_dcmpe=3D_H(_D("dcmpe"),_D("dcmpe"),"DCMPE");_dcmpre=3D_H(_D("dcmpr=
e"),_D("dcmpre"),"DCMPRE");_vv=3D"";_cmp=3D_H(_D("cmpn"),_D("cmp"),"CMP")=
;=0A=
_gp=3D_H(_D("gpn"),_D("gp"),"GP");_dcmp=3D_H(_D("dcmpn"),_D("dcmp"),"DCMP=
");if(_II(_cmp,"SFS-")>-1){document.cookie=3D"HBCMP=3D"+_cmp+"; =
path=3D/;"+=0A=
(_D("cpd")&&_D("cpd")!=3D""?(" domain=3D."+_D("cpd")+"; =
"):"")+_ex}if(_bnI&&_bv>3)_ln=3Dnavigator.userLanguage;=0A=
if(_bnN){if(_bv>3)_ln=3Dnavigator.language;if(_bv>2)for(var =
i=3D0;i<_IL(navigator.plugins);i++)_pl+=3Dnavigator.plugins[i].name+":"};=
_cp=3D_D("cp");=0A=
if(location.search&&_TL(_cp)=3D=3D"null")_cp=3D_J(location.search,"&");if=
(_II(document.cookie,"CP=3D")>-1){=0A=
_ce=3D"y";_hd=3D_J(document.cookie,"*");if(_TL(_hd)!=3D"null"&&_cp=3D=3D"=
null"){_cp=3D_hd}else{document.cookie=3D"CP=3D"+_cp+_hck}}else{document.c=
ookie=3D"CP=3D"+_cp+_hck;=0A=
_ce=3D(_II(document.cookie,"CP=3D")>-1)?"y":"n"};if(window.screen){_sv=3D=
12;_ss=3Dscreen.width+"*"+screen.height;_sc=3D_bnI?screen.colorDepth:scre=
en.pixelDepth;=0A=
if(_sc=3D=3D_hud)_sc=3D"na"};_ra=3D_NA();if(_ra.toSource||(_bnI&&_ra.shif=
t))_sv=3D13;if(_I5&&_hM){if(_II(""+navigator.appMinorVersion,"Privacy")>-=
1)_ce=3D"p";=0A=
if(document.body&&document.body.addBehavior){document.body.addBehavior("#=
default#homePage");_hp=3Ddocument.body.isHomePage(location.href)?"y":"n";=0A=
document.body.addBehavior("#default#clientCaps");_cy=3Ddocument.body.conn=
ectionType}};var =
_hcc=3D(_DD(_hcn))?_D("hcv"):"";if(!_D("gn"))_gn=3D"ehg.hitbox.com";=0A=
if(_D("ct")&&!_D("mlc"))_mlc=3D_ct;_ar=3D_GP()+_gn+"/HG?hc=3D"+_mn+"&hb=3D=
"+_A(_acct)+"&cd=3D1&hv=3D6&n=3D"+_A(_pn,1)+"&con=3D&vcon=3D"+_A(_mlc,1)+=
"&tt=3D"+_D("lt")+=0A=
"&ja=3D"+(navigator.javaEnabled()?"y":"n")+"&dt=3D"+(new =
Date()).getHours()+"&zo=3D"+(new =
Date()).getTimezoneOffset()+"&lm=3D"+Date.parse(document.lastModified)=0A=
+(_tp?("&pt=3D"+_tp):"")+_E((_bnN?"bn,":"")+"ce,ss,sc,sv,cy,hp,ln,vpc,vjs=
,hec,pec,cmp,gp,dcmp,dcmpe,dcmpre,cp,fnl")+"&seg=3D"+_D("seg")+"&epg=3D"+=
_D("epg")+=0A=
"&cv=3D"+_A(_hcc)+"&gn=3D"+_A(_D("hcn"))+"&ld=3D"+_A(_D("hlt"))+"&la=3D"+=
_A(_D("hla"))+"&c1=3D"+_A(_D("hc1"))+"&c2=3D"+_A(_D("hc2"))+"&c3=3D"+_A(_=
D("hc3"))+"&c4=3D"+=0A=
_A(_D("hc4"))+"&customerid=3D"+_A(_D("ci")?_ci:_D("cid"))+"&lv.id=3D"+_lv=
.id+"&lv.pos=3D"+_lv.pos+"&ttt=3D"+_lidt+","+_lpost;=0A=
if(_I5||_N6){eval("try{_rf=3D_A(top.document"+__r+")+''}"+__c+"{_rf=3D_A(=
document"+__r+")+''}")}=0A=
else{if(top.document&&_IL(parent.frames)>1){_rf=3D_A(eval("document"+__r)=
)+""}else =
if(top.document){_rf=3D_A(eval("top.document"+__r))+""}}if((_rf=3D=3D_hud=
)||=0A=
(_rf=3D=3D""))_rf=3D"bookmark";_rf=3Dunescape(_rf);_rf=3D_GR(_rf);_hra=3D=
_I(_rf,_D("hqsr"),_D("hqsp"),_hrat);_ar+=3D"&ra=3D"+_A(_hra)+"&rf=3D"+_A(=
_IS(_rf,0,500))+=0A=
"&pl=3D"+_A(_pl)+_hbSendEV();if(_D("onlyMedia")!=3D"y")_hbi.src=3D_ar+"&h=
id=3D"+Math.random();_hbq=3D_IS(_ar,0,_II(_ar,"&hec"));_hbE=3D_NA()}_PV()=
;=0A=
function _Q(a){var b=3D"";b=3Dnew =
Image();b.src=3Da+"&hid=3D"+Math.random()}=0A=
function =
__X(a){if(_ec=3D=3D0){_ec=3D1;a=3Ddocument;if(_NN("lt")||_NN("dlf")||_NN(=
"elf")){_LP(a.links,1)}if(_NN("fv"))_FA(a)}}=0A=
function =
_EV(a,b,c){if(a.addEventListener){a.addEventListener(b,c,false)}else =
if(a.attachEvent){a.attachEvent("on"+b,c)}}=0A=
function _EVO(e){return document.all?window.event.srcElement:this} =0A=
_EV(window,"load",__X);_EV(window,"unload",_FU);eval('setTimeout("__X()",=
3000)');
------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.networkworld.com/includes/jqlib/s_code.js

/* SiteCatalyst code version: H.20.3.=0A=
Copyright 1996-2010 Adobe, Inc. All Rights Reserved=0A=
More info available at http://www.omniture.com */=0A=
/************************ ADDITIONAL FEATURES ************************=0A=
     Dynamic Report Suite Selection=0A=
     Universal Tag=0A=
     Plugins=0A=
*/=0A=
=0A=
var s_account=3D"idgnetworkworldprod";=0A=
var s=3Ds_gi(s_account);=0A=
/* WARNING: Changing any of the below variables will cause drastic=0A=
changes to how your visitor data is collected.  Changes should only be=0A=
made when instructed to do so by your account manager.*/=0A=
s.visitorNamespace=3D"idgenterprise";=0A=
/* trackingServer and trackingServerSecure are used with FPC */=0A=
//s.trackingServer=3D"a.idgenterprise.com"=0A=
//s.trackingServerSecure=3D"b.idgenterprise.com"=0A=
s.trackingServer=3D"idgenterprise.112.2o7.net";=0A=
/************************** CONFIG SECTION **************************/=0A=
/* You may add or alter any code config here. */=0A=
//s.dynamicAccountSelection=3Dtrue=0A=
//s.dynamicAccountList=3D"idgdev=3Ddev.networkworld.com"=0A=
/* Conversion Config */=0A=
s.currencyCode=3D"USD";=0A=
s.charSet=3D"utf-8";=0A=
/* Link Tracking Config */=0A=
s.trackDownloadLinks=3Dtrue;=0A=
s.trackExternalLinks=3Dtrue;=0A=
s.trackInlineStats=3Dtrue;=0A=
s.linkDownloadFileTypes=3D"exe,zip,wav,mp3,mov,mpg,avi,wmv,pdf,doc,docx,x=
ls,xlsx,ppt,pptx";=0A=
//list all domains internal to the reporting suite. separte domain with =
a comma=0A=
s.linkInternalFilters=3D"javascript:,networkworld.com,masters.csoonline.c=
om,masters.cio.com,nww.com,subscribenww.com,reg.accelacomm.com";  =0A=
s.linkLeaveQueryString=3Dfalse;=0A=
s.linkTrackVars=3D"prop5,prop6,prop7,prop8";=0A=
s.linkTrackEvents=3D"None";=0A=
/* Plugin Config */=0A=
s.usePlugins=3Dtrue;=0A=
/* Page Name Plugin Config */=0A=
s.siteID=3D"";            // leftmost value in pagename=0A=
s.defaultPage=3D"index page";      // filename to add when none exists=0A=
s.queryVarsList=3D"";     // query parameters to keep=0A=
s.pathExcludeDelim=3D";"; // portion of the path to exclude=0A=
s.pathConcatDelim=3D":";   // page name component separator=0A=
s.pathExcludeList=3D"";   // elements to exclude from the path=0A=
=0A=
function s_doPlugins(s) {=0A=
	/* Add calls to plugins here */=0A=
	=0A=
		//Set s.server to domain host=0A=
		if(!s.server) s.server=3Ddocument.domain;=0A=
		=0A=
		/*Page Name Plugin*/=0A=
		if(!s.pageType && !s.pageName) s.pageName=3Ds.getPageName();=0A=
=0A=
		/* set eVar page Name and event for custom conversions */=0A=
		s.eVar10=3Ds.pageName;=0A=
		if(s.events =3D=3D 'event1') {=0A=
			s.events=3D'event1';=0A=
		} else {=0A=
			s.events=3Ds.apl(s.events,"event1",",",0);=0A=
		}=0A=
		 =0A=
		/* HBX Type Link Tracking */=0A=
		s.hbx_lt =3D "auto"; // manual, auto=0A=
		s.setupLinkTrack("prop5,prop6,prop7,prop8","SC_LINKS");=0A=
		=0A=
		/* Set Time Parting Variables */=0A=
		var currentDate =3D new Date();=0A=
		var year =3D currentDate.getFullYear();=0A=
		s.prop41=3Ds.eVar41=3Ds.getTimeParting('h','-5',year); // Set hour, =
set for EST=0A=
		s.prop42=3Ds.eVar42=3Ds.getTimeParting('d','-5',year); // Set day, set =
for EST=0A=
		=0A=
		 /* External Campaign Tracking */=0A=
		if(!s.campaign) {=0A=
			s.campaign=3Ds.getQueryParam('source'); //Set campaign here if not =
set in page already.=0A=
			s.campaign=3Ds.getValOnce(s.campaign,'s_campaign',0);=0A=
			if(s.campaign) {=0A=
				s.events=3Ds.apl(s.events,"event3",",",0);=0A=
			}=0A=
		} else {=0A=
			s.campaign=3Ds.getValOnce(s.campaign,'s_campaign',0);=0A=
			if(s.campaign) {=0A=
				s.events=3Ds.apl(s.events,"event3",",",0);=0A=
			}=0A=
		}=0A=
		/* Campaign Stacking */=0A=
		=
s.hier3=3Ds.crossVisitParticipation(s.prop45,'s_prop45','30','15',',','pu=
rchase');		=0A=
		=0A=
		/*NOTE: this variable is being set in the code above with Channel =
Manager */=0A=
		/*********************=0A=
		*s.eVar30=3Ds.crossVisitParticipation(vu,cn,ex,ct,dl,ev);=0A=
		* List of Parameters:                                                  =
                  =0A=
		* vu-variable to stack values from                                     =
                  =0A=
		* cn-name of cookie to stack values in                                 =
                  =0A=
		* ex-expiration of variable value in days                              =
                     =0A=
		* ct-number of distinct values to store in cookie                      =
                  =0A=
		* dl-delimiter to display in variable                                  =
                       =0A=
		* ev-success event(s) which clear cookie (use comma separated list)    =
                     =0A=
		*********************/ =0A=
		/* Campaign Stacking */=0A=
		=
s.hier2=3Ds.crossVisitParticipation(s.campaign,'cross_s_campaign','30','1=
5',',','purchase');		=0A=
=0A=
		/*********************=0A=
		*prop9 is search term=0A=
		*evar9 is search term=0A=
		*event2 is searches=0A=
		*NOTE: for null searches, prepend null: to the search term: i.e. =
s.prop9=3D'null:teeth cleaning'=0A=
		*********************/=0A=
		if(s.prop9) {=0A=
			s.eVar9=3Ds.prop9=3Ds.prop9.toLowerCase();=0A=
			var t_search=3Ds.getValOnce(s.eVar9,'eVar9',0);=0A=
			if(t_search) {=0A=
				if(s.events) {=0A=
					s.events=3Ds.apl(s.events,"event2",",",0);=0A=
				} else {=0A=
					s.events=3D"event2";=0A=
				}=0A=
			}=0A=
		}=0A=
// The follow are set to collect DemandBase Values -- David Humphrey, =
Adobe Consultant=0A=
if(typeof(getDbaseVar) !=3D "undefined"){=0A=
s.prop22 =3D s.evar22 =3D OPG.Demandbase.getDbaseVar('company_name', =
'maxmind_company_name');=0A=
s.prop23 =3D s.evar23 =3D OPG.Demandbase.getDbaseVar('industry');=0A=
s.prop24 =3D s.evar24 =3D OPG.Demandbase.getDbaseVar('sub_industry');=0A=
s.prop25 =3D s.evar25 =3D OPG.Demandbase.getDbaseVar('company_size');=0A=
s.prop26 =3D s.evar26 =3D OPG.Demandbase.getDbaseVar('employee_count');		=0A=
s.prop27 =3D s.evar27 =3D OPG.Demandbase.getDbaseVar('primary_sic');=0A=
s.prop28 =3D s.evar28 =3D OPG.Demandbase.getDbaseVar('zip');=0A=
}=0A=
=0A=
		  /* Copy props to eVars */=0A=
		  /*NOTE: These variables only pass the value from the prop to the =
eVar when the js loads */=0A=
		  /*NOTE: Thus, if flash or AJAX calls are used, you much set the prop =
to the eVar manually */=0A=
		  if(s.prop1&&!s.eVar1) s.eVar1=3Ds.prop1;		//Page Level 1=0A=
		  if(s.prop2&&!s.eVar2) s.eVar2=3Ds.prop2;		//Page Level 2=0A=
		  if(s.prop3&&!s.eVar3) s.eVar3=3Ds.prop3;		//Page Level 3=0A=
		  if(s.prop4&&!s.eVar4) s.eVar4=3Ds.prop4;		//Page Level 4=0A=
		  if(s.prop11&&!s.eVar11) s.eVar11=3Ds.prop11;	//Detail Content ID=0A=
		  if(s.prop12&&!s.eVar12) s.eVar12=3Ds.prop12;	//Detail Content Name=0A=
		  if(s.prop13&&!s.eVar13) s.eVar13=3Ds.prop13;	//Detail Content Type=0A=
		  if(s.prop14&&!s.eVar14) s.eVar14=3Ds.prop14;	//Detail Content Author=0A=
		  if(s.prop15&&!s.eVar15) s.eVar15=3Ds.prop15;	//Detail Content Data =
Source=0A=
		  if(s.prop16&&!s.eVar16) s.eVar16=3Ds.prop16;	//Detail Content =
Publication Date=0A=
		  //if(s.prop17&&!s.eVar17) s.eVar17=3Ds.prop17;	//=0A=
		  //if(s.prop18&&!s.eVar18) s.eVar18=3Ds.prop18;	//=0A=
		  //if(s.prop19&&!s.eVar19) s.eVar19=3Ds.prop19;	//=0A=
		  if(s.prop20&&!s.eVar20) s.eVar20=3Ds.prop20;	//Playlist Name=0A=
		  //if(s.prop21&&!s.eVar21) s.eVar21=3Ds.prop21;	//=0A=
		  //if(s.prop28&&!s.eVar28) s.eVar28=3Ds.prop28;	//=0A=
		  //if(s.prop29&&!s.eVar29) s.eVar29=3Ds.prop29;	//=0A=
		  //if(s.prop30&&!s.eVar30) s.eVar30=3Ds.prop30;	//=0A=
}=0A=
s.doPlugins=3Ds_doPlugins;=0A=
/************************** PLUGINS SECTION *************************/=0A=
/* You may insert any plugins you wish to use here.                 */=0A=
/************************** PLUGINS SECTION *************************/=0A=
/* You may insert any plugins you wish to use here.                 */=0A=
/*=0A=
 * Plugin: setupLinkTrack 2.0 - return links for HBX-based link =0A=
 *         tracking in SiteCatalyst (requires s.split and s.apl)=0A=
 */=0A=
s.setupLinkTrack=3Dnew Function("vl","c",""=0A=
+"var s=3Dthis;var =
l=3Ds.d.links,cv,cva,vla,h,i,l,t,b,o,y,n,oc,d=3D'';cv=3Ds."=0A=
+"c_r(c);if(vl&&cv!=3D''){cva=3Ds.split(cv,'^^');vla=3Ds.split(vl,',');fo=
r("=0A=
+"x in vla)s._hbxm(vla[x])?s[vla[x]]=3Dcva[x]:'';}s.c_w(c,'',0);if(!s.e"=0A=
+"o&&!s.lnk)return =
'';o=3Ds.eo?s.eo:s.lnk;y=3Ds.ot(o);n=3Ds.oid(o);if(s.eo&"=0A=
+"&o=3D=3Ds.eo){while(o&&!n&&y!=3D'BODY'){o=3Do.parentElement?o.parentEle=
ment"=0A=
+":o.parentNode;if(!o)return =
'';y=3Ds.ot(o);n=3Ds.oid(o);}for(i=3D0;i<4;i++"=0A=
+")if(o.tagName)if(o.tagName.toLowerCase()!=3D'a')if(o.tagName.toLowerC"=0A=
+"ase()!=3D'area')o=3Do.parentElement;}b=3Ds._LN(o);o.lid=3Db[0];o.lpos=3D=
b[1];"=0A=
+"if(s.hbx_lt&&s.hbx_lt!=3D'manual'){if((o.tagName&&s._TL(o.tagName)=3D=3D=
'"=0A=
+"area')){if(!s._IL(o.lid)){if(o.parentNode){if(o.parentNode.name)o.l"=0A=
+"id=3Do.parentNode.name;else =
o.lid=3Do.parentNode.id}}if(!s._IL(o.lpos))"=0A=
+"o.lpos=3Do.coords}else{if(s._IL(o.lid)<1)o.lid=3Ds._LS(o.lid=3Do.text?o=
.t"=0A=
+"ext:o.innerText?o.innerText:'');if(!s._IL(o.lid)||s._II(s._TL(o.lid"=0A=
+"),'<img')>-1){h=3D''+o.innerHTML;bu=3Ds._TL(h);i=3Ds._II(bu,'<img');if(=
bu"=0A=
+"&&i>-1){eval(\"__f=3D/ src\s*=3D\s*[\'\\\"]?([^\'\\\" =
]+)[\'\\\"]?/i\")"=0A=
+";__f.exec(h);if(RegExp.$1)h=3DRegExp.$1}o.lid=3Dh}}}h=3Do.href?o.href:'=
';"=0A=
+"i=3Dh.indexOf('?');h=3Ds.linkLeaveQueryString||i<0?h:h.substring(0,i);l=
"=0A=
+"=3Ds.linkName?s.linkName:s._hbxln(h);t=3Ds.linkType?s.linkType.toLowerC=
"=0A=
+"ase():s.lt(h);oc=3Do.onclick?''+o.onclick:'';cv=3Ds.pageName+'^^'+o.lid=
"=0A=
+"+'^^'+s.pageName+' | '+(o.lid=3Do.lid?o.lid:'no &lid')+'^^'+o.lpos;if"=0A=
+"(t&&(h||l)){cva=3Ds.split(cv,'^^');vla=3Ds.split(vl,',');for(x in =
vla)s"=0A=
+"._hbxm(vla[x])?s[vla[x]]=3Dcva[x]:'';}else if(!t&&oc.indexOf('.tl(')<"=0A=
+"0){s.c_w(c,cv,0);}else return ''");=0A=
s._IL=3Dnew Function("a","var s=3Dthis;return =
a!=3D'undefined'?a.length:0");=0A=
s._II=3Dnew Function("a","b","c","var s=3Dthis;return a.indexOf(b,c?c:0)"=0A=
);=0A=
s._IS=3Dnew Function("a","b","c",""=0A=
+"var s=3Dthis;return =
b>s._IL(a)?'':a.substring(b,c!=3Dnull?c:s._IL(a))");=0A=
s._LN=3Dnew Function("a","b","c","d",""=0A=
+"var =
s=3Dthis;b=3Da.href;b+=3Da.name?a.name:'';c=3Ds._LVP(b,'lid');d=3Ds._LVP(=
"=0A=
+"b,'lpos');r"=0A=
+"eturn[c,d]");=0A=
s._LVP=3Dnew Function("a","b","c","d","e",""=0A=
+"var =
s=3Dthis;c=3Ds._II(a,'&'+b+'=3D');c=3Dc<0?s._II(a,'?'+b+'=3D'):c;if(c>-1)=
"=0A=
+"{d=3Ds._II(a,'&',c+s._IL(b)+2);e=3Ds._IS(a,c+s._IL(b)+2,d>-1?d:s._IL(a)=
"=0A=
+");return e}return ''");=0A=
s._LS=3Dnew Function("a",""=0A=
+"var =
s=3Dthis,b,c=3D100,d,e,f,g;b=3D(s._IL(a)>c)?escape(s._IS(a,0,c)):esca"=0A=
+"pe(a);b=3Ds._LSP(b,'%0A','%20');b=3Ds._LSP(b,'%0D','%20');b=3Ds._LSP(b,=
'%"=0A=
+"09','%20');c=3Ds._IP(b,'%20');d=3Ds._NA();e=3D0;for(f=3D0;f<s._IL(c);f+=
+){g"=0A=
+"=3Ds._RP(c[f],'%20','');if(s._IL(g)>0){d[e++]=3Dg}}b=3Dd.join('%20');re=
tu"=0A=
+"rn unescape(b)");=0A=
s._LSP=3Dnew Function("a","b","c","d","var =
s=3Dthis;d=3Ds._IP(a,b);return d"=0A=
+".join(c)");=0A=
s._IP=3Dnew Function("a","b","var s=3Dthis;return a.split(b)");=0A=
s._RP=3Dnew Function("a","b","c","d",""=0A=
+"var =
s=3Dthis;d=3Ds._II(a,b);if(d>-1){a=3Ds._RP(s._IS(a,0,d)+','+s._IS(a,d"=0A=
+"+s._IL(b),s._IL(a)),b,c)}return a");=0A=
s._TL=3Dnew Function("a","var s=3Dthis;return a.toLowerCase()");=0A=
s._NA=3Dnew Function("a","var s=3Dthis;return new Array(a?a:0)");=0A=
s._hbxm=3Dnew Function("m","var s=3Dthis;return (''+m).indexOf('{')<0");=0A=
s._hbxln=3Dnew Function("h","var s=3Dthis,n=3Ds.linkNames;if(n)return =
s.pt("=0A=
+"n,',','lnf',h);return ''");=0A=
=0A=
/*=0A=
 * Function - read combined cookies v 0.3=0A=
 */=0A=
if(!s.__ccucr){s.c_rr=3Ds.c_r;s.__ccucr =3D true;=0A=
s.c_r=3Dnew Function("k",""=0A=
+"var s=3Dthis,d=3Dnew =
Date,v=3Ds.c_rr(k),c=3Ds.c_rr('s_pers'),i,m,e;if(v)ret"=0A=
+"urn v;k=3Ds.ape(k);i=3Dc.indexOf(' =
'+k+'=3D');c=3Di<0?s.c_rr('s_sess'):c;i=3D"=0A=
+"c.indexOf(' =
'+k+'=3D');m=3Di<0?i:c.indexOf('|',i);e=3Di<0?i:c.indexOf(';'"=0A=
+",i);m=3Dm>0?m:e;v=3Di<0?'':s.epa(c.substring(i+2+k.length,m<0?c.length:=
"=0A=
+"m));if(m>0&&m!=3De)if(parseInt(c.substring(m+1,e<0?c.length:e))<d.get"=0A=
+"Time()){d.setTime(d.getTime()-60000);s.c_w(s.epa(k),'',d);v=3D'';}ret"=0A=
+"urn v;");}=0A=
/*=0A=
 * Function - write combined cookies v 0.3=0A=
 */=0A=
if(!s.__ccucw){s.c_wr=3Ds.c_w;s.__ccucw =3D true;=0A=
s.c_w=3Dnew Function("k","v","e",""=0A=
+"this.new2 =3D true;"=0A=
+"var s=3Dthis,d=3Dnew =
Date,ht=3D0,pn=3D's_pers',sn=3D's_sess',pc=3D0,sc=3D0,pv,sv,"=0A=
+"c,i,t;d.setTime(d.getTime()-60000);if(s.c_rr(k)) s.c_wr(k,'',d);k=3Ds"=0A=
+".ape(k);pv=3Ds.c_rr(pn);i=3Dpv.indexOf(' =
'+k+'=3D');if(i>-1){pv=3Dpv.substr"=0A=
+"ing(0,i)+pv.substring(pv.indexOf(';',i)+1);pc=3D1;}sv=3Ds.c_rr(sn);i=3D=
sv"=0A=
+".indexOf(' =
'+k+'=3D');if(i>-1){sv=3Dsv.substring(0,i)+sv.substring(sv.i"=0A=
+"ndexOf(';',i)+1);sc=3D1;}d=3Dnew =
Date;if(e){if(e.getTime()>d.getTime())"=0A=
+"{pv+=3D' '+k+'=3D'+s.ape(v)+'|'+e.getTime()+';';pc=3D1;}}else{sv+=3D' =
'+k+'"=0A=
+"=3D'+s.ape(v)+';';sc=3D1;}if(sc) =
s.c_wr(sn,sv,0);if(pc){t=3Dpv;while(t&&t"=0A=
+".indexOf(';')!=3D-1){var =
t1=3DparseInt(t.substring(t.indexOf('|')+1,t.i"=0A=
+"ndexOf(';')));t=3Dt.substring(t.indexOf(';')+1);ht=3Dht<t1?t1:ht;}d.set=
"=0A=
+"Time(ht);s.c_wr(pn,pv,d);}return v=3D=3Ds.c_r(s.epa(k));");}=0A=
/** Description **=0A=
Uses cookies to capture and pass the number of days since the user's=0A=
last visit.  Plugin returns a value every time doplugins executes.  =0A=
Plugin also uses 2 cookies--uses of the cookie combining utility is=0A=
highly recommended for this plugin and other plugins which use cookies.=0A=
/*=0A=
 *	Plug-in: crossVisitParticipation v1.5 - stacks values from=0A=
 *	specified variable in cookie and returns value=0A=
 */=0A=
s.crossVisitParticipation=3Dnew =
Function("v","cn","ex","ct","dl","ev","dv",""=0A=
+"var =
s=3Dthis,ce;if(typeof(dv)=3D=3D=3D'undefined')dv=3D0;if(s.events&&ev){var=
"=0A=
+" ay=3Ds.split(ev,',');var ea=3Ds.split(s.events,',');for(var =
u=3D0;u<ay.l"=0A=
+"ength;u++){for(var =
x=3D0;x<ea.length;x++){if(ay[u]=3D=3Dea[x]){ce=3D1;}}}}i"=0A=
+"f(!v||v=3D=3D'')return '';v=3Descape(v);var arry=3Dnew Array(),a=3Dnew =
Array("=0A=
+"),c=3Ds.c_r(cn),g=3D0,h=3Dnew Array();if(c&&c!=3D'')arry=3Deval(c);var =
e=3Dnew "=0A=
+"Date();e.setFullYear(e.getFullYear()+5);if(dv=3D=3D0 && arry.length>0 =
&"=0A=
+"& arry[arry.length-1][0]=3D=3Dv)arry[arry.length-1]=3D[v, new =
Date().getT"=0A=
+"ime()];else arry[arry.length]=3D[v, new Date().getTime()];var =
start=3Da"=0A=
+"rry.length-ct<0?0:arry.length-ct;var td=3Dnew Date();for(var =
x=3Dstart;"=0A=
+"x<arry.length;x++){var diff=3DMath.round((td.getTime()-arry[x][1])/86"=0A=
+"400000);if(diff<ex){h[g]=3Dunescape(arry[x][0]);a[g]=3D[arry[x][0],arry=
"=0A=
+"[x][1]];g++;}}var data=3Ds.join(a,{delim:',',front:'[',back:']',wrap:"=0A=
+"\"'\"});s.c_w(cn,data,e);var r=3Ds.join(h,{delim:dl});if(ce) s.c_w(cn"=0A=
+",'');return r;");=0A=
 /*=0A=
 * Plugin: join=0A=
 */=0A=
s.join =3D new Function("v","p",""=0A=
+"var s =3D this;var =
f,b,d,w;if(p){f=3Dp.front?p.front:'';b=3Dp.back?p.back"=0A=
+":'';d=3Dp.delim?p.delim:'';w=3Dp.wrap?p.wrap:'';}var str=3D'';for(var =
x=3D0"=0A=
+";x<v.length;x++){if(typeof(v[x])=3D=3D'object' )str+=3Ds.join( =
v[x],p);el"=0A=
+"se str+=3Dw+v[x]+w;if(x<v.length-1)str+=3Dd;}return f+str+b;");=0A=
 /*=0A=
 * Plugin: getPageName v2.1 - parse URL and return=0A=
 */=0A=
s.getPageName=3Dnew Function("u",""=0A=
+"var =
s=3Dthis,v=3Du?u:''+s.wd.location,x=3Dv.indexOf(':'),y=3Dv.indexOf('/',"=0A=
+"x+4),z=3Dv.indexOf('?'),c=3Ds.pathConcatDelim,e=3Ds.pathExcludeDelim,g=3D=
s."=0A=
+"queryVarsList,d=3Ds.siteID,n=3Dd?d:'',q=3Dz<0?'':v.substring(z+1),p=3Dv=
.sub"=0A=
+"string(y+1,q?z:v.length);z=3Dp.indexOf('#');p=3Dz<0?p:s.fl(p,z);x=3De?p=
.i"=0A=
+"ndexOf(e):-1;p=3Dx<0?p:s.fl(p,x);p+=3D!p||p.charAt(p.length-1)=3D=3D'/'=
?s.d"=0A=
+"efaultPage:'';y=3Dc?c:'/';while(p){x=3Dp.indexOf('/');x=3Dx<0?p.length:=
x;"=0A=
+"z=3Ds.fl(p,x);if(!s.pt(s.pathExcludeList,',','p_c',z))n+=3Dn?y+z:z;p=3D=
p."=0A=
+"substring(x+1)}y=3Dc?c:'?';while(g){x=3Dg.indexOf(',');x=3Dx<0?g.length=
:x"=0A=
+";z=3Ds.fl(g,x);z=3Ds.pt(q,'&','p_c',z);if(z){n+=3Dn?y+z:z;y=3Dc?c:'&'}g=
=3Dg.s"=0A=
+"ubstring(x+1)}return n");=0A=
/*=0A=
 * Utility Function: p_gh=0A=
 */=0A=
s.p_gh=3Dnew Function(""=0A=
+"var s=3Dthis;if(!s.eo&&!s.lnk)return '';var =
o=3Ds.eo?s.eo:s.lnk,y=3Ds.ot("=0A=
+"o),n=3Ds.oid(o),x=3Do.s_oidt;if(s.eo&&o=3D=3Ds.eo){while(o&&!n&&y!=3D'B=
ODY'){"=0A=
+"o=3Do.parentElement?o.parentElement:o.parentNode;if(!o)return =
'';y=3Ds."=0A=
+"ot(o);n=3Ds.oid(o);x=3Do.s_oidt}}return o.href?o.href:'';");=0A=
/*=0A=
 * Utility Function: p_c=0A=
 */=0A=
s.p_c=3Dnew Function("v","c",""=0A=
+"var x=3Dv.indexOf('=3D');return =
c.toLowerCase()=3D=3Dv.substring(0,x<0?v.le"=0A=
+"ngth:x).toLowerCase()?v:0");=0A=
/*=0A=
 * Plugin: getTimeParting 1.3 - Set timeparting values based on time zone=0A=
 */=0A=
s.getTimeParting=3Dnew Function("t","z","y",""=0A=
+"dc=3Dnew Date('1/1/2000');f=3D15;ne=3D8;if(dc.getDay()!=3D6||"=0A=
+"dc.getMonth()!=3D0){return'Data Not Available'}else{;z=3DparseInt(z);"=0A=
+"if(y=3D=3D'2009'){f=3D8;ne=3D1};gmar=3Dnew =
Date('3/1/'+y);dsts=3Df-gmar.getDay("=0A=
+");gnov=3Dnew Date('11/1/'+y);dste=3Dne-gnov.getDay();spr=3Dnew =
Date('3/'"=0A=
+"+dsts+'/'+y);fl=3Dnew Date('11/'+dste+'/'+y);cd=3Dnew Date();"=0A=
+"if(cd>spr&&cd<fl){z=3Dz+1}else{z=3Dz};utc=3Dcd.getTime()+(cd.getTimezon=
eO"=0A=
+"ffset()*60000);tz=3Dnew Date(utc + =
(3600000*z));thisy=3Dtz.getFullYear("=0A=
+");var days=3D['Sunday','Monday','Tuesday','Wednesday','Thursday','Fr"=0A=
+"iday','Saturday'];if(thisy!=3Dy){return'Data Not Available'}else{;thi"=0A=
+"sh=3Dtz.getHours();thismin=3Dtz.getMinutes();thisd=3Dtz.getDay();var =
dow=3D"=0A=
+"days[thisd];var ap=3D'AM';var dt=3D'Weekday';var =
mint=3D'00';if(thismin>3"=0A=
+"0){mint=3D'30'}if(thish>=3D12){ap=3D'PM';thish=3Dthish-12};if =
(thish=3D=3D0){th"=0A=
+"ish=3D12};if(thisd=3D=3D6||thisd=3D=3D0){dt=3D'Weekend'};var =
timestring=3Dthish+'"=0A=
+":'+mint+ap;var daystring=3Ddow;var =
endstring=3Ddt;if(t=3D=3D'h'){return tim"=0A=
+"estring}if(t=3D=3D'd'){return daystring};if(t=3D=3D'w'){return en"=0A=
+"dstring}}};"=0A=
);=0A=
/*=0A=
 * Plugin: getQueryParam 2.1 - return query string parameter(s)=0A=
 */=0A=
s.getQueryParam=3Dnew Function("p","d","u",""=0A=
+"var =
s=3Dthis,v=3D'',i,t;d=3Dd?d:'';u=3Du?u:(s.pageURL?s.pageURL:s.wd.locati"=0A=
+"on);if(u=3D=3D'f')u=3Ds.gtfs().location;while(p){i=3Dp.indexOf(',');i=3D=
i<0?p"=0A=
+".length:i;t=3Ds.p_gpv(p.substring(0,i),u+'');if(t)v+=3Dv?d+t:t;p=3Dp.su=
bs"=0A=
+"tring(i=3D=3Dp.length?i:i+1)}return v");=0A=
s.p_gpv=3Dnew Function("k","u",""=0A=
+"var =
s=3Dthis,v=3D'',i=3Du.indexOf('?'),q;if(k&&i>-1){q=3Du.substring(i+1);v"=0A=
+"=3Ds.pt(q,'&','p_gvf',k)}return v");=0A=
s.p_gvf=3Dnew Function("t","k",""=0A=
+"if(t){var =
s=3Dthis,i=3Dt.indexOf('=3D'),p=3Di<0?t:t.substring(0,i),v=3Di<0?'T"=0A=
+"rue':t.substring(i+1);if(p.toLowerCase()=3D=3Dk.toLowerCase())return =
s."=0A=
+"epa(v)}return ''");=0A=
/*=0A=
 * Plugin: getValOnce 0.2 - get a value once per session or number of =
days=0A=
 */=0A=
s.getValOnce=3Dnew Function("v","c","e",""=0A=
+"var s=3Dthis,k=3Ds.c_r(c),a=3Dnew =
Date;e=3De?e:0;if(v){a.setTime(a.getTime("=0A=
+")+e*86400000);s.c_w(c,v,e?a:0);}return v=3D=3Dk?'':v");=0A=
/*=0A=
* Plugin Utility: apl v1.1=0A=
*/=0A=
s.apl=3Dnew Function("L","v","d","u",""=0A=
+"var s=3Dthis,m=3D0;if(!L)L=3D'';if(u){var =
i,n,a=3Ds.split(L,d);for(i=3D0;i<a."=0A=
+"length;i++){n=3Da[i];m=3Dm||(u=3D=3D1?(n=3D=3Dv):(n.toLowerCase()=3D=3D=
v.toLowerCas"=0A=
+"e()));}}if(!m)L=3DL?L+d+v:v;return L");=0A=
/*=0A=
 * Utility Function: split v1.5 - split a string (JS 1.0 compatible)=0A=
 */=0A=
s.split=3Dnew Function("l","d",""=0A=
+"var i,x=3D0,a=3Dnew =
Array;while(l){i=3Dl.indexOf(d);i=3Di>-1?i:l.length;a[x"=0A=
+"++]=3Dl.substring(0,i);l=3Dl.substring(i+d.length);}return a");=0A=
=0A=
=0A=
/* Configure Modules and Plugins */=0A=
=0A=
s.loadModule("Integrate");=0A=
=0A=
/****************************** MODULES *****************************/=0A=
/* Module: Integrate */=0A=
s.m_Integrate_c=3D"var m=3Ds.m_i('Integrate');m.add=3Dfunction(n,o){var =
m=3Dthis,p;if(!o)o=3D's_Integrate_'+n;if(!s.wd[o])s.wd[o]=3Dnew =
Object;m[n]=3Dnew =
Object;p=3Dm[n];p._n=3Dn;p._m=3Dm;p._c=3D0;p._d=3D0;p.get=3Dm.get;p.bea"=0A=
+"con=3Dm.beacon;p.script=3Dm.script;m.l[m.l.length]=3Dn};m._g=3Dfunction=
(t){var =
m=3Dthis,s=3Dm.s,i,p,f=3D(t?'use':'set')+'Vars',tcf;for(i=3D0;i<m.l.lengt=
h;i++){p=3Dm[m.l[i]];if(p&&p[f]){if(s.apv>=3D5&&(!s.isopera||s.ap"=0A=
+"v>=3D7)){tcf=3Dnew Function('s','p','f','var =
e;try{p[f](s,p)}catch(e){}');tcf(s,p,f)}else =
p[f](s,p)}}};m._t=3Dfunction(){this._g(1)};m._fu=3Dfunction(p,u){var =
m=3Dthis,s=3Dm.s,x,v,tm=3Dnew Date;if(u.toLowerCase("=0A=
+").substring(0,4) !=3D =
'http')u=3D'http://'+u;if(s.ssl)u=3Ds.rep(u,'http:','https:');p.RAND=3DMa=
th&&Math.random?Math.floor(Math.random()*10000000000000):tm.getTime();p.R=
AND+=3DMath.floor(tm.getTime()/10800000"=0A=
+")%10;for(x in =
p)if(x&&x.substring(0,1)!=3D'_'&&(!Object||!Object.prototype||!Object.pro=
totype[x])){v=3D''+p[x];if(v=3D=3Dp[x]||parseFloat(v)=3D=3Dp[x])u=3Ds.rep=
(u,'['+x+']',s.rep(escape(v),'+','%2B'))}return u};"=0A=
+"m.get=3Dfunction(u,v){var =
p=3Dthis,m=3Dp._m,s=3Dm.s;if(!v)v=3D's_'+m._in+'_Integrate_'+p._n+'_get_'=
+p._c;p._c++;p.VAR=3Dv;p._d++;m.s.loadModule('Integrate:'+v,m._fu(p,u),0,=
1,p._n)};m._d=3Dfunction(){var m=3Dthis,i"=0A=
+";for(i=3D0;i<m.l.length;i++)if(m[m.l[i]]._d>0)return 1;return =
0};m._x=3Dfunction(d,n){var p=3Dthis[n],x;for(x in =
d)if(x&&(!Object||!Object.prototype||!Object.prototype[x]))p[x]=3Dd[x];p.=
_d--;};m.beacon=3Dfun"=0A=
+"ction(u){var =
p=3Dthis,m=3Dp._m,s=3Dm.s,imn=3D's_i_'+m._in+'_Integrate_'+p._n+'_'+p._c,=
im;if(s.d.images&&s.apv>=3D3&&(!s.isopera||s.apv>=3D7)&&(s.ns6<0||s.apv>=3D=
6.1)){p._c++;im=3Ds.wd[imn]=3Dnew Image;im.src=3Dm._fu(p"=0A=
+",u)}};m.script=3Dfunction(u){var =
p=3Dthis,m=3Dp._m;m.s.loadModule(0,m._fu(p,u),0,1)};m.l=3Dnew =
Array;if(m.onLoad)m.onLoad(s,m)";=0A=
s.m_i("Integrate");=0A=
=0A=
/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/=0A=
var s_code=3D'',s_objectID;function s_gi(un,pg,ss){var =
c=3D"s._c=3D's_c';s.wd=3Dwindow;if(!s.wd.s_c_in){s.wd.s_c_il=3Dnew =
Array;s.wd.s_c_in=3D0;}s._il=3Ds.wd.s_c_il;s._in=3Ds.wd.s_c_in;s._il[s._i=
n]=3Ds;s.wd.s_c_in++;s"=0A=
+".an=3Ds_an;s.cls=3Dfunction(x,c){var =
i,y=3D'';if(!c)c=3Dthis.an;for(i=3D0;i<x.length;i++){n=3Dx.substring(i,i+=
1);if(c.indexOf(n)>=3D0)y+=3Dn}return y};s.fl=3Dfunction(x,l){return =
x?(''+x).substring(0,l):x};s.co=3Dfunc"=0A=
+"tion(o){if(!o)return o;var n=3Dnew Object,x;for(x in =
o)if(x.indexOf('select')<0&&x.indexOf('filter')<0)n[x]=3Do[x];return =
n};s.num=3Dfunction(x){x=3D''+x;for(var =
p=3D0;p<x.length;p++)if(('0123456789').indexO"=0A=
+"f(x.substring(p,p+1))<0)return 0;return =
1};s.rep=3Ds_rep;s.sp=3Ds_sp;s.jn=3Ds_jn;s.ape=3Dfunction(x){var =
s=3Dthis,h=3D'0123456789ABCDEF',i,c=3Ds.charSet,n,l,e,y=3D'';c=3Dc?c.toUp=
perCase():'';if(x){x=3D''+x;if(c=3D=3D'AUTO"=0A=
+"'&&('').charCodeAt){for(i=3D0;i<x.length;i++){c=3Dx.substring(i,i+1);n=3D=
x.charCodeAt(i);if(n>127){l=3D0;e=3D'';while(n||l<4){e=3Dh.substring(n%16=
,n%16+1)+e;n=3D(n-n%16)/16;l++}y+=3D'%u'+e}else =
if(c=3D=3D'+')y+=3D'%2B';"=0A=
+"else =
y+=3Descape(c)}x=3Dy}else{x=3Dx?s.rep(escape(''+x),'+','%2B'):x;if(x&&c&&=
s.em=3D=3D1&&x.indexOf('%u')<0&&x.indexOf('%U')<0){i=3Dx.indexOf('%');whi=
le(i>=3D0){i++;if(h.substring(8).indexOf(x.substring(i,i+1)."=0A=
+"toUpperCase())>=3D0)return =
x.substring(0,i)+'u00'+x.substring(i);i=3Dx.indexOf('%',i)}}}}return =
x};s.epa=3Dfunction(x){var s=3Dthis;return x?unescape(s.rep(''+x,'+',' =
')):x};s.pt=3Dfunction(x,d,f,a){var s=3Dth"=0A=
+"is,t=3Dx,z=3D0,y,r;while(t){y=3Dt.indexOf(d);y=3Dy<0?t.length:y;t=3Dt.s=
ubstring(0,y);r=3Ds[f](t,a);if(r)return =
r;z+=3Dy+d.length;t=3Dx.substring(z,x.length);t=3Dz<x.length?t:''}return =
''};s.isf=3Dfunction(t,a){var c=3Da"=0A=
+".indexOf(':');if(c>=3D0)a=3Da.substring(0,c);if(t.substring(0,2)=3D=3D'=
s_')t=3Dt.substring(2);return =
(t!=3D''&&t=3D=3Da)};s.fsf=3Dfunction(t,a){var =
s=3Dthis;if(s.pt(a,',','isf',t))s.fsg+=3D(s.fsg!=3D''?',':'')+t;return =
0}"=0A=
+";s.fs=3Dfunction(x,f){var =
s=3Dthis;s.fsg=3D'';s.pt(x,',','fsf',f);return =
s.fsg};s.si=3Dfunction(wd){var =
s=3Dthis,c=3D''+s_gi,a=3Dc.indexOf(\"{\"),b=3Dc.lastIndexOf(\"}\"),m;c=3D=
s_fe(a>0&&b>0?c.substring(a+1,b):0);if"=0A=
+"(wd&&wd.document&&c){wd.setTimeout('function s_sv(o,n,k){var =
v=3Do[k],i;if(v){if(typeof(v)=3D=3D\"string\"||typeof(v)=3D=3D\"number\")=
n[k]=3Dv;else if (typeof(v)=3D=3D\"array\"){n[k]=3Dnew =
Array;for(i=3D0;i<v.length;i"=0A=
+"++)s_sv(v,n[k],i)}else if (typeof(v)=3D=3D\"object\"){n[k]=3Dnew =
Object;for(i in v)s_sv(v,n[k],i)}}}function s_si(t){var =
wd=3Dwindow,s,i,j,c,a,b;wd.s_gi=3Dnew =
Function(\"un\",\"pg\",\"ss\",\"'+c+'\");wd.s=3Ds_"=0A=
+"gi(\"'+s.oun+'\");s=3Dwd.s;s.sa(\"'+s.un+'\");s.tfs=3Dwd;s.pt(s.vl_g,\"=
,\",\"vo1\",t);s.lnk=3Ds.eo=3Ds.linkName=3Ds.linkType=3Ds.wd.s_objectID=3D=
s.ppu=3Ds.pe=3Ds.pev1=3Ds.pev2=3Ds.pev3=3D\\'\\';if(t.m_l&&t.m_nl)for(i=3D=
0;i<"=0A=
+"t.m_nl.length;i++){n=3Dt.m_nl[i];if(n){m=3Dt[n];c=3Dt[\"m_\"+n];if(m&&c=
){c=3D\"\"+c;if(c.indexOf(\"function\")>=3D0){a=3Dc.indexOf(\"{\");b=3Dc.=
lastIndexOf(\"}\");c=3Da>0&&b>0?c.substring(a+1,b):0;s[\"m_\"+n+\"_c"=0A=
+"\"]=3Dc;if(m._e)s.loadModule(n);if(s[n])for(j=3D0;j<m._l.length;j++)s_s=
v(m,s[n],m._l[j])}}}}}var =
e,o,t;try{o=3Dwindow.opener;if(o&&o.s_gi){t=3Do.s_gi(\"'+s.un+'\");if(t)s=
_si(t)}}catch(e){}',1)}};s.c_d=3D'';s"=0A=
+".c_gdf=3Dfunction(t,a){var s=3Dthis;if(!s.num(t))return 1;return =
0};s.c_gd=3Dfunction(){var =
s=3Dthis,d=3Ds.wd.location.hostname,n=3Ds.fpCookieDomainPeriods,p;if(!n)n=
=3Ds.cookieDomainPeriods;if(d&&!s.c_d){n=3Dn?par"=0A=
+"seInt(n):2;n=3Dn>2?n:2;p=3Dd.lastIndexOf('.');if(p>=3D0){while(p>=3D0&&=
n>1){p=3Dd.lastIndexOf('.',p-1);n--}s.c_d=3Dp>0&&s.pt(d,'.','c_gdf',0)?d.=
substring(p):d}}return s.c_d};s.c_r=3Dfunction(k){var s=3Dthis;k=3Ds.ap"=0A=
+"e(k);var c=3D' '+s.d.cookie,i=3Dc.indexOf(' =
'+k+'=3D'),e=3Di<0?i:c.indexOf(';',i),v=3Di<0?'':s.epa(c.substring(i+2+k.=
length,e<0?c.length:e));return =
v!=3D'[[B]]'?v:''};s.c_w=3Dfunction(k,v,e){var s=3Dthis,d=3Ds.c_gd("=0A=
+"),l=3Ds.cookieLifetime,t;v=3D''+v;l=3Dl?(''+l).toUpperCase():'';if(e&&l=
!=3D'SESSION'&&l!=3D'NONE'){t=3D(v!=3D''?parseInt(l?l:0):-60);if(t){e=3Dn=
ew =
Date;e.setTime(e.getTime()+(t*1000))}}if(k&&l!=3D'NONE'){s.d.cookie=3D"=0A=
+"k+'=3D'+s.ape(v!=3D''?v:'[[B]]')+'; path=3D/;'+(e&&l!=3D'SESSION'?' =
expires=3D'+e.toGMTString()+';':'')+(d?' domain=3D'+d+';':'');return =
s.c_r(k)=3D=3Dv}return 0};s.eh=3Dfunction(o,e,r,f){var =
s=3Dthis,b=3D's_'+e+'_'+s._"=0A=
+"in,n=3D-1,l,i,x;if(!s.ehl)s.ehl=3Dnew =
Array;l=3Ds.ehl;for(i=3D0;i<l.length&&n<0;i++){if(l[i].o=3D=3Do&&l[i].e=3D=
=3De)n=3Di}if(n<0){n=3Di;l[n]=3Dnew =
Object}x=3Dl[n];x.o=3Do;x.e=3De;f=3Dr?x.b:f;if(r||f){x.b=3Dr?0:o[e];x.o[e=
]=3Df}if(x"=0A=
+".b){x.o[b]=3Dx.b;return b}return 0};s.cet=3Dfunction(f,a,t,o,b){var =
s=3Dthis,r,tcf;if(s.apv>=3D5&&(!s.isopera||s.apv>=3D7)){tcf=3Dnew =
Function('s','f','a','t','var =
e,r;try{r=3Ds[f](a)}catch(e){r=3Ds[t](e)}return r"=0A=
+"');r=3Dtcf(s,f,a,t)}else{if(s.ismac&&s.u.indexOf('MSIE =
4')>=3D0)r=3Ds[b](a);else{s.eh(s.wd,'onerror',0,o);r=3Ds[f](a);s.eh(s.wd,=
'onerror',1)}}return r};s.gtfset=3Dfunction(e){var s=3Dthis;return =
s.tfs};s.gtfso"=0A=
+"e=3Dnew Function('e','var =
s=3Ds_c_il['+s._in+'],c;s.eh(window,\"onerror\",1);s.etfs=3D1;c=3Ds.t();i=
f(c)s.d.write(c);s.etfs=3D0;return true');s.gtfsfb=3Dfunction(a){return =
window};s.gtfsf=3Dfunction(w){var s=3Dthis"=0A=
+",p=3Dw.parent,l=3Dw.location;s.tfs=3Dw;if(p&&p.location!=3Dl&&p.locatio=
n.host=3D=3Dl.host){s.tfs=3Dp;return s.gtfsf(s.tfs)}return =
s.tfs};s.gtfs=3Dfunction(){var =
s=3Dthis;if(!s.tfs){s.tfs=3Ds.wd;if(!s.etfs)s.tfs=3Ds.cet("=0A=
+"'gtfsf',s.tfs,'gtfset',s.gtfsoe,'gtfsfb')}return =
s.tfs};s.mrq=3Dfunction(u){var =
s=3Dthis,l=3Ds.rl[u],n,r;s.rl[u]=3D0;if(l)for(n=3D0;n<l.length;n++){r=3Dl=
[n];s.mr(0,0,r.r,0,r.t,r.u)}};s.br=3Dfunction(id,rs){var s"=0A=
+"=3Dthis;if(s.disableBufferedRequests||!s.c_w('s_br',rs))s.brl=3Drs};s.f=
lushBufferedRequests=3Dfunction(){this.fbr(0)};s.fbr=3Dfunction(id){var =
s=3Dthis,br=3Ds.c_r('s_br');if(!br)br=3Ds.brl;if(br){if(!s.disableBu"=0A=
+"fferedRequests)s.c_w('s_br','');s.mr(0,0,br)}s.brl=3D0};s.mr=3Dfunction=
(sess,q,rs,id,ta,u){var =
s=3Dthis,dc=3Ds.dc,t1=3Ds.trackingServer,t2=3Ds.trackingServerSecure,tb=3D=
s.trackingServerBase,p=3D'.sc',ns=3Ds.visitorN"=0A=
+"amespace,un=3Ds.cls(u?u:(ns?ns:s.fun)),r=3Dnew =
Object,l,imn=3D's_i_'+(un),im,b,e;if(!rs){if(t1){if(t2&&s.ssl)t1=3Dt2}els=
e{if(!tb)tb=3D'2o7.net';if(dc)dc=3D(''+dc).toLowerCase();else =
dc=3D'd1';if(tb=3D=3D'2o7.net'){i"=0A=
+"f(dc=3D=3D'd1')dc=3D'112';else =
if(dc=3D=3D'd2')dc=3D'122';p=3D''}t1=3Dun+'.'+dc+'.'+p+tb}rs=3D'http'+(s.=
ssl?'s':'')+'://'+t1+'/b/ss/'+s.un+'/'+(s.mobile?'5.1':'1')+'/H.20.3/'+se=
ss+'?AQB=3D1&ndh=3D1'+(q?q:'')+'&AQE=3D1';if"=0A=
+"(s.isie&&!s.ismac){if(s.apv>5.5)rs=3Ds.fl(rs,4095);else =
rs=3Ds.fl(rs,2047)}if(id){s.br(id,rs);return}}if(s.d.images&&s.apv>=3D3&&=
(!s.isopera||s.apv>=3D7)&&(s.ns6<0||s.apv>=3D6.1)){if(!s.rc)s.rc=3Dnew =
Object;if"=0A=
+"(!s.rc[un]){s.rc[un]=3D1;if(!s.rl)s.rl=3Dnew Object;s.rl[un]=3Dnew =
Array;setTimeout('if(window.s_c_il)window.s_c_il['+s._in+'].mrq(\"'+un+'\=
")',750)}else{l=3Ds.rl[un];if(l){r.t=3Dta;r.u=3Dun;r.r=3Drs;l[l.length]"=0A=
+"=3Dr;return =
''}imn+=3D'_'+s.rc[un];s.rc[un]++}im=3Ds.wd[imn];if(!im)im=3Ds.wd[imn]=3D=
new Image;im.s_l=3D0;im.onload=3Dnew Function('e','this.s_l=3D1;var =
wd=3Dwindow,s;if(wd.s_c_il){s=3Dwd.s_c_il['+s._in+'];s.mrq(\"'+u"=0A=
+"n+'\");s.nrs--;if(!s.nrs)s.m_m(\"rr\")}');if(!s.nrs){s.nrs=3D1;s.m_m('r=
s')}else =
s.nrs++;im.src=3Drs;if(rs.indexOf('&pe=3D')>=3D0&&(!ta||ta=3D=3D'_self'||=
ta=3D=3D'_top'||(s.wd.name&&ta=3D=3Ds.wd.name))){b=3De=3Dnew Date;wh"=0A=
+"ile(!im.s_l&&e.getTime()-b.getTime()<500)e=3Dnew Date}return ''}return =
'<im'+'g sr'+'c=3D\"'+rs+'\" width=3D1 height=3D1 border=3D0 =
alt=3D\"\">'};s.gg=3Dfunction(v){var =
s=3Dthis;if(!s.wd['s_'+v])s.wd['s_'+v]=3D'';re"=0A=
+"turn =
s.wd['s_'+v]};s.glf=3Dfunction(t,a){if(t.substring(0,2)=3D=3D's_')t=3Dt.s=
ubstring(2);var =
s=3Dthis,v=3Ds.gg(t);if(v)s[t]=3Dv};s.gl=3Dfunction(v){var =
s=3Dthis;if(s.pg)s.pt(v,',','glf',0)};s.rf=3Dfunction(x){var s=3Dt"=0A=
+"his,y,i,j,h,l,a,b=3D'',c=3D'',t;if(x){y=3D''+x;i=3Dy.indexOf('?');if(i>=
0){a=3Dy.substring(i+1);y=3Dy.substring(0,i);h=3Dy.toLowerCase();i=3D0;if=
(h.substring(0,7)=3D=3D'http://')i+=3D7;else =
if(h.substring(0,8)=3D=3D'https://"=0A=
+"')i+=3D8;h=3Dh.substring(i);i=3Dh.indexOf(\"/\");if(i>0){h=3Dh.substrin=
g(0,i);if(h.indexOf('google')>=3D0){a=3Ds.sp(a,'&');if(a.length>1){l=3D',=
q,ie,start,search_key,word,kw,cd,';for(j=3D0;j<a.length;j++){t=3Da[j];i"=0A=
+"=3Dt.indexOf('=3D');if(i>0&&l.indexOf(','+t.substring(0,i)+',')>=3D0)b+=
=3D(b?'&':'')+t;else =
c+=3D(c?'&':'')+t}if(b&&c){y+=3D'?'+b+'&'+c;if(''+x!=3Dy)x=3Dy}}}}}}retur=
n x};s.hav=3Dfunction(){var s=3Dthis,qs=3D'',fv=3Ds.link"=0A=
+"TrackVars,fe=3Ds.linkTrackEvents,mn,i;if(s.pe){mn=3Ds.pe.substring(0,1)=
.toUpperCase()+s.pe.substring(1);if(s[mn]){fv=3Ds[mn].trackVars;fe=3Ds[mn=
].trackEvents}}fv=3Dfv?fv+','+s.vl_l+','+s.vl_l2:'';for(i=3D0;i<s"=0A=
+".va_t.length;i++){var =
k=3Ds.va_t[i],v=3Ds[k],b=3Dk.substring(0,4),x=3Dk.substring(4),n=3DparseI=
nt(x),q=3Dk;if(v&&k!=3D'linkName'&&k!=3D'linkType'){if(s.pe||s.lnk||s.eo)=
{if(fv&&(','+fv+',').indexOf(','+k+',')<0)v=3D'"=0A=
+"';if(k=3D=3D'events'&&fe)v=3Ds.fs(v,fe)}if(v){if(k=3D=3D'dynamicVariabl=
ePrefix')q=3D'D';else if(k=3D=3D'visitorID')q=3D'vid';else =
if(k=3D=3D'pageURL'){q=3D'g';v=3Ds.fl(v,255)}else =
if(k=3D=3D'referrer'){q=3D'r';v=3Ds.fl(s.rf(v),255)"=0A=
+"}else if(k=3D=3D'vmk'||k=3D=3D'visitorMigrationKey')q=3D'vmt';else =
if(k=3D=3D'visitorMigrationServer'){q=3D'vmf';if(s.ssl&&s.visitorMigratio=
nServerSecure)v=3D''}else =
if(k=3D=3D'visitorMigrationServerSecure'){q=3D'vmf';if("=0A=
+"!s.ssl&&s.visitorMigrationServer)v=3D''}else =
if(k=3D=3D'charSet'){q=3D'ce';if(v.toUpperCase()=3D=3D'AUTO')v=3D'ISO8859=
-1';else if(s.em=3D=3D2)v=3D'UTF-8'}else =
if(k=3D=3D'visitorNamespace')q=3D'ns';else if(k=3D=3D'cookieDomainPe"=0A=
+"riods')q=3D'cdp';else if(k=3D=3D'cookieLifetime')q=3D'cl';else =
if(k=3D=3D'variableProvider')q=3D'vvp';else =
if(k=3D=3D'currencyCode')q=3D'cc';else if(k=3D=3D'channel')q=3D'ch';else =
if(k=3D=3D'transactionID')q=3D'xact';else if(k=3D=3D'"=0A=
+"campaign')q=3D'v0';else if(k=3D=3D'resolution')q=3D's';else =
if(k=3D=3D'colorDepth')q=3D'c';else =
if(k=3D=3D'javascriptVersion')q=3D'j';else =
if(k=3D=3D'javaEnabled')q=3D'v';else =
if(k=3D=3D'cookiesEnabled')q=3D'k';else if(k=3D=3D'browse"=0A=
+"rWidth')q=3D'bw';else if(k=3D=3D'browserHeight')q=3D'bh';else =
if(k=3D=3D'connectionType')q=3D'ct';else =
if(k=3D=3D'homepage')q=3D'hp';else if(k=3D=3D'plugins')q=3D'p';else =
if(s.num(x)){if(b=3D=3D'prop')q=3D'c'+n;else if(b=3D=3D'eVar')"=0A=
+"q=3D'v'+n;else if(b=3D=3D'list')q=3D'l'+n;else =
if(b=3D=3D'hier'){q=3D'h'+n;v=3Ds.fl(v,255)}}if(v)qs+=3D'&'+q+'=3D'+(k.su=
bstring(0,3)!=3D'pev'?s.ape(v):v)}}}return =
qs};s.ltdf=3Dfunction(t,h){t=3Dt?t.toLowerCase():'';h=3Dh?h.to"=0A=
+"LowerCase():'';var =
qi=3Dh.indexOf('?');h=3Dqi>=3D0?h.substring(0,qi):h;if(t&&h.substring(h.l=
ength-(t.length+1))=3D=3D'.'+t)return 1;return =
0};s.ltef=3Dfunction(t,h){t=3Dt?t.toLowerCase():'';h=3Dh?h.toLowerCase():=
'"=0A=
+"';if(t&&h.indexOf(t)>=3D0)return 1;return 0};s.lt=3Dfunction(h){var =
s=3Dthis,lft=3Ds.linkDownloadFileTypes,lef=3Ds.linkExternalFilters,lif=3D=
s.linkInternalFilters;lif=3Dlif?lif:s.wd.location.hostname;h=3Dh.toLower"=0A=
+"Case();if(s.trackDownloadLinks&&lft&&s.pt(lft,',','ltdf',h))return =
'd';if(s.trackExternalLinks&&h.substring(0,1)!=3D'#'&&(lef||lif)&&(!lef||=
s.pt(lef,',','ltef',h))&&(!lif||!s.pt(lif,',','ltef',h)))re"=0A=
+"turn 'e';return ''};s.lc=3Dnew Function('e','var =
s=3Ds_c_il['+s._in+'],b=3Ds.eh(this,\"onclick\");s.lnk=3Ds.co(this);s.t()=
;s.lnk=3D0;if(b)return this[b](e);return true');s.bc=3Dnew =
Function('e','var s=3Ds_c_il['"=0A=
+"+s._in+'],f,tcf;if(s.d&&s.d.all&&s.d.all.cppXYctnr)return;s.eo=3De.srcE=
lement?e.srcElement:e.target;tcf=3Dnew Function(\"s\",\"var =
e;try{if(s.eo&&(s.eo.tagName||s.eo.parentElement||s.eo.parentNode))s.t"=0A=
+"()}catch(e){}\");tcf(s);s.eo=3D0');s.oh=3Dfunction(o){var =
s=3Dthis,l=3Ds.wd.location,h=3Do.href?o.href:'',i,j,k,p;i=3Dh.indexOf(':'=
);j=3Dh.indexOf('?');k=3Dh.indexOf('/');if(h&&(i<0||(j>=3D0&&i>j)||(k>=3D=
0&&i>k))){p=3Do"=0A=
+".protocol&&o.protocol.length>1?o.protocol:(l.protocol?l.protocol:'');i=3D=
l.pathname.lastIndexOf('/');h=3D(p?p+'//':'')+(o.host?o.host:(l.host?l.ho=
st:''))+(h.substring(0,1)!=3D'/'?l.pathname.substring(0,i"=0A=
+"<0?0:i)+'/':'')+h}return h};s.ot=3Dfunction(o){var =
t=3Do.tagName;t=3Dt&&t.toUpperCase?t.toUpperCase():'';if(t=3D=3D'SHAPE')t=
=3D'';if(t){if(t=3D=3D'INPUT'&&o.type&&o.type.toUpperCase)t=3Do.type.toUp=
perCase();else if("=0A=
+"!t&&o.href)t=3D'A';}return t};s.oid=3Dfunction(o){var =
s=3Dthis,t=3Ds.ot(o),p,c,n=3D'',x=3D0;if(t&&!o.s_oid){p=3Do.protocol;c=3D=
o.onclick;if(o.href&&(t=3D=3D'A'||t=3D=3D'AREA')&&(!c||!p||p.toLowerCase(=
).indexOf('javascript"=0A=
+"')<0))n=3Ds.oh(o);else =
if(c){n=3Ds.rep(s.rep(s.rep(s.rep(''+c,\"\\r\",''),\"\\n\",''),\"\\t\",''=
),' ','');x=3D2}else =
if(o.value&&(t=3D=3D'INPUT'||t=3D=3D'SUBMIT')){n=3Do.value;x=3D3}else =
if(o.src&&t=3D=3D'IMAGE')n=3Do.src"=0A=
+";if(n){o.s_oid=3Ds.fl(n,100);o.s_oidt=3Dx}}return =
o.s_oid};s.rqf=3Dfunction(t,un){var =
s=3Dthis,e=3Dt.indexOf('=3D'),u=3De>=3D0?','+t.substring(0,e)+',':'';retu=
rn u&&u.indexOf(','+un+',')>=3D0?s.epa(t.substring(e+1))"=0A=
+":''};s.rq=3Dfunction(un){var =
s=3Dthis,c=3Dun.indexOf(','),v=3Ds.c_r('s_sq'),q=3D'';if(c<0)return =
s.pt(v,'&','rqf',un);return =
s.pt(un,',','rq',0)};s.sqp=3Dfunction(t,a){var =
s=3Dthis,e=3Dt.indexOf('=3D'),q=3De<0?'':s.ep"=0A=
+"a(t.substring(e+1));s.sqq[q]=3D'';if(e>=3D0)s.pt(t.substring(0,e),',','=
sqs',q);return 0};s.sqs=3Dfunction(un,q){var =
s=3Dthis;s.squ[un]=3Dq;return 0};s.sq=3Dfunction(q){var =
s=3Dthis,k=3D's_sq',v=3Ds.c_r(k),x,c=3D0;s.sq"=0A=
+"q=3Dnew Object;s.squ=3Dnew =
Object;s.sqq[q]=3D'';s.pt(v,'&','sqp',0);s.pt(s.un,',','sqs',q);v=3D'';fo=
r(x in =
s.squ)if(x&&(!Object||!Object.prototype||!Object.prototype[x]))s.sqq[s.sq=
u[x]]+=3D(s.sqq[s.squ[x]]?'"=0A=
+",':'')+x;for(x in =
s.sqq)if(x&&(!Object||!Object.prototype||!Object.prototype[x])&&s.sqq[x]&=
&(x=3D=3Dq||c<2)){v+=3D(v?'&':'')+s.sqq[x]+'=3D'+s.ape(x);c++}return =
s.c_w(k,v,0)};s.wdl=3Dnew Function('e','var s=3Ds"=0A=
+"_c_il['+s._in+'],r=3Dtrue,b=3Ds.eh(s.wd,\"onload\"),i,o,oc;if(b)r=3Dthi=
s[b](e);for(i=3D0;i<s.d.links.length;i++){o=3Ds.d.links[i];oc=3Do.onclick=
?\"\"+o.onclick:\"\";if((oc.indexOf(\"s_gs(\")<0||oc.indexOf(\".s"=0A=
+"_oc(\")>=3D0)&&oc.indexOf(\".tl(\")<0)s.eh(o,\"onclick\",0,s.lc);}retur=
n r');s.wds=3Dfunction(){var =
s=3Dthis;if(s.apv>3&&(!s.isie||!s.ismac||s.apv>=3D5)){if(s.b&&s.b.attachE=
vent)s.b.attachEvent('onclick',s"=0A=
+".bc);else =
if(s.b&&s.b.addEventListener)s.b.addEventListener('click',s.bc,false);els=
e s.eh(s.wd,'onload',0,s.wdl)}};s.vs=3Dfunction(x){var =
s=3Dthis,v=3Ds.visitorSampling,g=3Ds.visitorSamplingGroup,k=3D's_vsn_"=0A=
+"'+s.un+(g?'_'+g:''),n=3Ds.c_r(k),e=3Dnew =
Date,y=3De.getYear();e.setYear(y+10+(y<1900?1900:0));if(v){v*=3D100;if(!n=
){if(!s.c_w(k,x,e))return 0;n=3Dx}if(n%10000>v)return 0}return =
1};s.dyasmf=3Dfunction(t,m){if(t"=0A=
+"&&m&&m.indexOf(t)>=3D0)return 1;return 0};s.dyasf=3Dfunction(t,m){var =
s=3Dthis,i=3Dt?t.indexOf('=3D'):-1,n,x;if(i>=3D0&&m){var =
n=3Dt.substring(0,i),x=3Dt.substring(i+1);if(s.pt(x,',','dyasmf',m))retur=
n n}return 0}"=0A=
+";s.uns=3Dfunction(){var =
s=3Dthis,x=3Ds.dynamicAccountSelection,l=3Ds.dynamicAccountList,m=3Ds.dyn=
amicAccountMatch,n,i;s.un=3Ds.un.toLowerCase();if(x&&l){if(!m)m=3Ds.wd.lo=
cation.host;if(!m.toLowerCase)m=3D''+m;l=3Dl."=0A=
+"toLowerCase();m=3Dm.toLowerCase();n=3Ds.pt(l,';','dyasf',m);if(n)s.un=3D=
n}i=3Ds.un.indexOf(',');s.fun=3Di<0?s.un:s.un.substring(0,i)};s.sa=3Dfunc=
tion(un){var s=3Dthis;s.un=3Dun;if(!s.oun)s.oun=3Dun;else if((','+s.ou"=0A=
+"n+',').indexOf(','+un+',')<0)s.oun+=3D','+un;s.uns()};s.p_e=3Dfunction(=
i,c){var s=3Dthis,p;if(!s.p_l)s.p_l=3Dnew =
Object;if(!s.p_l[i]){p=3Ds.p_l[i]=3Dnew =
Object;p._il=3Ds.wd.s_c_il;p._in=3Ds.wd.s_c_in;p._il[p._in]=3D"=0A=
+"p;s.wd.s_c_in++;p.i=3Di;p.s=3Ds;p.si=3Ds.p_si;p.sh=3Ds.p_sh;p.cr=3Ds.p_=
cr;p.cw=3Ds.p_cw}p=3Ds.p_l[i];if(!p.e&&!c){p.e=3D1;if(!s.ppu)s.ppu=3D'';s=
.ppu+=3D(s.ppu?',':'')+i}return p};s.p=3Dfunction(i,l){var =
s=3Dthis,p=3Ds.p_e(i"=0A=
+",1),n;if(l)for(n=3D0;n<l.length;n++)p[l[n].n]=3Dl[n].f};s.p_m=3Dfunctio=
n(n,a,c){var s=3Dthis,m=3Dnew =
Object;m.n=3Dn;if(!c){c=3Da;a=3D'\"p\",\"s\",\"o\",\"e\"'}else =
a=3D'\"'+s.rep(a,\",\",\"\\\",\\\"\")+'\"';eval('m."=0A=
+"f=3Dnew =
Function('+a+',\"'+s.rep(s.rep(s.rep(s.rep(c,\"\\\\\",\"\\\\\\\\\"),\"\\\=
"\",\"\\\\\\\"\"),\"\\r\",\"\\\\r\"),\"\\n\",\"\\\\n\")+'\")');return =
m};s.p_si=3Dfunction(u){var p=3Dthis,s=3Dp.s,n,i;n=3D's_"=0A=
+"p_i_'+p.i;if(!p.u&&!s.ss)s.d.write('<im'+'g name=3D\"'+n+'\" =
'+(u?'sr'+'c=3D\"'+u+'\" ':'')+'height=3D1 width=3D1 border=3D0 =
alt=3D\"\">');else =
if(u&&(s.ios||s.ss)){i=3Ds.wd[n]?s.wd[n]:s.d.images[n];if(!i)i=3Ds.wd"=0A=
+"[n]=3Dnew Image;i.src=3Du}p.u=3D1};s.p_sh=3Dfunction(h){var =
p=3Dthis,s=3Dp.s;if(!p.h&&h)s.d.write(h);p.h=3D1};s.p_cr=3Dfunction(k){re=
turn this.s.c_r(k)};s.p_cw=3Dfunction(k,v,e){return =
this.s.c_w(k,v,e)};s.p_r=3Dfunct"=0A=
+"ion(){var s=3Dthis,p,n;if(s.p_l)for(n in =
s.p_l){p=3Ds.p_l[n];if(p&&p.e){if(p.setup&&!p.c)p.setup(p,s);if(p.run)p.r=
un(p,s);if(!p.c)p.c=3D0;p.c++}}};s.m_i=3Dfunction(n,a){var =
s=3Dthis,m,f=3Dn.substring(0,1),r,l,"=0A=
+"i;if(!s.m_l)s.m_l=3Dnew Object;if(!s.m_nl)s.m_nl=3Dnew =
Array;m=3Ds.m_l[n];if(!a&&m&&m._e&&!m._i)s.m_a(n);if(!m){m=3Dnew =
Object,m._c=3D's_m';m._in=3Ds.wd.s_c_in;m._il=3Ds._il;m._il[m._in]=3Dm;s.=
wd.s_c_in++;m.s=3Ds;m."=0A=
+"_n=3Dn;m._l=3Dnew =
Array('_c','_in','_il','_i','_e','_d','_dl','s','n','_r','_g','_g1','_t',=
'_t1','_x','_x1','_rs','_rr','_l');s.m_l[n]=3Dm;s.m_nl[s.m_nl.length]=3Dn=
}else if(m._r&&!m._m){r=3Dm._r;r._m=3Dm;l=3Dm._"=0A=
+"l;for(i=3D0;i<l.length;i++)if(m[l[i]])r[l[i]]=3Dm[l[i]];r._il[r._in]=3D=
r;m=3Ds.m_l[n]=3Dr}if(f=3D=3Df.toUpperCase())s[n]=3Dm;return =
m};s.m_a=3Dnew Function('n','g','e','if(!g)g=3D\"m_\"+n;var =
s=3Ds_c_il['+s._in+'],c=3Ds[g"=0A=
+"+\"_c\"],m,x,f=3D0;if(!c)c=3Ds.wd[\"s_\"+g+\"_c\"];if(c&&s_d)s[g]=3Dnew=
 =
Function(\"s\",s_ft(s_d(c)));x=3Ds[g];if(!x)x=3Ds.wd[\\'s_\\'+g];if(!x)x=3D=
s.wd[g];m=3Ds.m_i(n,1);if(x&&(!m._i||g!=3D\"m_\"+n)){m._i=3Df=3D1;if(("=0A=
+"\"\"+x).indexOf(\"function\")>=3D0)x(s);else =
s.m_m(\"x\",n,x,e)}m=3Ds.m_i(n,1);if(m._dl)m._dl=3Dm._d=3D0;s.dlt();retur=
n f');s.m_m=3Dfunction(t,n,d,e){t=3D'_'+t;var =
s=3Dthis,i,x,m,f=3D'_'+t,r=3D0,u;if(s.m_l&&s.m_nl)f"=0A=
+"or(i=3D0;i<s.m_nl.length;i++){x=3Ds.m_nl[i];if(!n||x=3D=3Dn){m=3Ds.m_i(=
x);u=3Dm[t];if(u){if((''+u).indexOf('function')>=3D0){if(d&&e)u=3Dm[t](d,=
e);else if(d)u=3Dm[t](d);else =
u=3Dm[t]()}}if(u)r=3D1;u=3Dm[t+1];if(u&&!m[f]){"=0A=
+"if((''+u).indexOf('function')>=3D0){if(d&&e)u=3Dm[t+1](d,e);else =
if(d)u=3Dm[t+1](d);else u=3Dm[t+1]()}}m[f]=3D1;if(u)r=3D1}}return =
r};s.m_ll=3Dfunction(){var =
s=3Dthis,g=3Ds.m_dl,i,o;if(g)for(i=3D0;i<g.length;i++){o=3Dg["=0A=
+"i];if(o)s.loadModule(o.n,o.u,o.d,o.l,o.e,1);g[i]=3D0}};s.loadModule=3Df=
unction(n,u,d,l,e,ln){var =
s=3Dthis,m=3D0,i,g,o=3D0,f1,f2,c=3Ds.h?s.h:s.b,b,tcf;if(n){i=3Dn.indexOf(=
':');if(i>=3D0){g=3Dn.substring(i+1);n=3Dn.subs"=0A=
+"tring(0,i)}else =
g=3D\"m_\"+n;m=3Ds.m_i(n)}if((l||(n&&!s.m_a(n,g)))&&u&&s.d&&c&&s.d.create=
Element){if(d){m._d=3D1;m._dl=3D1}if(ln){if(s.ssl)u=3Ds.rep(u,'http:','ht=
tps:');i=3D's_s:'+s._in+':'+n+':'+g;b=3D'var s=3Ds_"=0A=
+"c_il['+s._in+'],o=3Ds.d.getElementById(\"'+i+'\");if(s&&o){if(!o.l&&s.w=
d.'+g+'){o.l=3D1;if(o.i)clearTimeout(o.i);o.i=3D0;s.m_a(\"'+n+'\",\"'+g+'=
\"'+(e?',\"'+e+'\"':'')+')}';f2=3Db+'o.c++;if(!s.maxDelay)s.m"=0A=
+"axDelay=3D250;if(!o.l&&o.c<(s.maxDelay*2)/100)o.i=3DsetTimeout(o.f2,100=
)}';f1=3Dnew Function('e',b+'}');tcf=3Dnew =
Function('s','c','i','u','f1','f2','var =
e,o=3D0;try{o=3Ds.d.createElement(\"script\");if(o){o.t"=0A=
+"ype=3D\"text/javascript\";'+(n?'o.id=3Di;o.defer=3Dtrue;o.onload=3Do.on=
readystatechange=3Df1;o.f2=3Df2;o.l=3D0;':'')+'o.src=3Du;c.appendChild(o)=
;'+(n?'o.c=3D0;o.i=3DsetTimeout(f2,100)':'')+'}}catch(e){o=3D0}return =
o');o"=0A=
+"=3Dtcf(s,c,i,u,f1,f2)}else{o=3Dnew =
Object;o.n=3Dn+':'+g;o.u=3Du;o.d=3Dd;o.l=3Dl;o.e=3De;g=3Ds.m_dl;if(!g)g=3D=
s.m_dl=3Dnew Array;i=3D0;while(i<g.length&&g[i])i++;g[i]=3Do}}else =
if(n){m=3Ds.m_i(n);m._e=3D1}return m};s.vo1=3Dfunct"=0A=
+"ion(t,a){if(a[t]||a['!'+t])this[t]=3Da[t]};s.vo2=3Dfunction(t,a){if(!a[=
t]){a[t]=3Dthis[t];if(!a[t])a['!'+t]=3D1}};s.dlt=3Dnew Function('var =
s=3Ds_c_il['+s._in+'],d=3Dnew =
Date,i,vo,f=3D0;if(s.dll)for(i=3D0;i<s.dll.le"=0A=
+"ngth;i++){vo=3Ds.dll[i];if(vo){if(!s.m_m(\"d\")||d.getTime()-vo._t>=3Ds=
.maxDelay){s.dll[i]=3D0;s.t(vo)}else =
f=3D1}}if(s.dli)clearTimeout(s.dli);s.dli=3D0;if(f){if(!s.dli)s.dli=3Dset=
Timeout(s.dlt,s.maxDelay)}el"=0A=
+"se s.dll=3D0');s.dl=3Dfunction(vo){var s=3Dthis,d=3Dnew =
Date;if(!vo)vo=3Dnew =
Object;s.pt(s.vl_g,',','vo2',vo);vo._t=3Dd.getTime();if(!s.dll)s.dll=3Dne=
w Array;s.dll[s.dll.length]=3Dvo;if(!s.maxDelay)s.maxDelay=3D250;"=0A=
+"s.dlt()};s.t=3Dfunction(vo,id){var s=3Dthis,trk=3D1,tm=3Dnew =
Date,sed=3DMath&&Math.random?Math.floor(Math.random()*10000000000000):tm.=
getTime(),sess=3D's'+Math.floor(tm.getTime()/10800000)%10+sed,y=3Dtm.getY=
ear("=0A=
+"),vt=3Dtm.getDate()+'/'+tm.getMonth()+'/'+(y<1900?y+1900:y)+' =
'+tm.getHours()+':'+tm.getMinutes()+':'+tm.getSeconds()+' =
'+tm.getDay()+' =
'+tm.getTimezoneOffset(),tcf,tfs=3Ds.gtfs(),ta=3D'',q=3D'',qs=3D'',code"=0A=
+"=3D'',vb=3Dnew Object;s.gl(s.vl_g);s.uns();s.m_ll();if(!s.td){var =
tl=3Dtfs.location,a,o,i,x=3D'',c=3D'',v=3D'',p=3D'',bw=3D'',bh=3D'',j=3D'=
1.0',k=3Ds.c_w('s_cc','true',0)?'Y':'N',hp=3D'',ct=3D'',pn=3D0,ps;if(Stri=
ng&&String.pr"=0A=
+"ototype){j=3D'1.1';if(j.match){j=3D'1.2';if(tm.setUTCDate){j=3D'1.3';if=
(s.isie&&s.ismac&&s.apv>=3D5)j=3D'1.4';if(pn.toPrecision){j=3D'1.5';a=3Dn=
ew Array;if(a.forEach){j=3D'1.6';i=3D0;o=3Dnew Object;tcf=3Dnew =
Function('o"=0A=
+"','var e,i=3D0;try{i=3Dnew Iterator(o)}catch(e){}return =
i');i=3Dtcf(o);if(i&&i.next)j=3D'1.7'}}}}}if(s.apv>=3D4)x=3Dscreen.width+=
'x'+screen.height;if(s.isns||s.isopera){if(s.apv>=3D3){v=3Ds.n.javaEnable=
d()?'Y':'N'"=0A=
+";if(s.apv>=3D4){c=3Dscreen.pixelDepth;bw=3Ds.wd.innerWidth;bh=3Ds.wd.in=
nerHeight}}s.pl=3Ds.n.plugins}else =
if(s.isie){if(s.apv>=3D4){v=3Ds.n.javaEnabled()?'Y':'N';c=3Dscreen.colorD=
epth;if(s.apv>=3D5){bw=3Ds.d.documentE"=0A=
+"lement.offsetWidth;bh=3Ds.d.documentElement.offsetHeight;if(!s.ismac&&s=
.b){tcf=3Dnew Function('s','tl','var =
e,hp=3D0;try{s.b.addBehavior(\"#default#homePage\");hp=3Ds.b.isHomePage(t=
l)?\"Y\":\"N\"}catch(e){"=0A=
+"}return hp');hp=3Dtcf(s,tl);tcf=3Dnew Function('s','var =
e,ct=3D0;try{s.b.addBehavior(\"#default#clientCaps\");ct=3Ds.b.connection=
Type}catch(e){}return ct');ct=3Dtcf(s)}}}else =
r=3D''}if(s.pl)while(pn<s.pl.lengt"=0A=
+"h&&pn<30){ps=3Ds.fl(s.pl[pn].name,100)+';';if(p.indexOf(ps)<0)p+=3Dps;p=
n++}s.resolution=3Dx;s.colorDepth=3Dc;s.javascriptVersion=3Dj;s.javaEnabl=
ed=3Dv;s.cookiesEnabled=3Dk;s.browserWidth=3Dbw;s.browserHeight=3Dbh;s."=0A=
+"connectionType=3Dct;s.homepage=3Dhp;s.plugins=3Dp;s.td=3D1}if(vo){s.pt(=
s.vl_g,',','vo2',vb);s.pt(s.vl_g,',','vo1',vo)}if(s.usePlugins)s.doPlugin=
s(s);var l=3Ds.wd.location,r=3Dtfs.document.referrer;if(!s.pageUR"=0A=
+"L)s.pageURL=3Dl.href?l.href:l;if(!s.referrer&&!s._1_referrer){s.referre=
r=3Dr;s._1_referrer=3D1}if((vo&&vo._t)||!s.m_m('d')){s.m_m('g');if(s.lnk|=
|s.eo){var o=3Ds.eo?s.eo:s.lnk;if(!o)return '';var p=3Ds.pageNa"=0A=
+"me,w=3D1,t=3Ds.ot(o),n=3Ds.oid(o),x=3Do.s_oidt,h,l,i,oc;if(s.eo&&o=3D=3D=
s.eo){while(o&&!n&&t!=3D'BODY'){o=3Do.parentElement?o.parentElement:o.par=
entNode;if(!o)return =
'';t=3Ds.ot(o);n=3Ds.oid(o);x=3Do.s_oidt}oc=3Do.onclick"=0A=
+"?''+o.onclick:'';if((oc.indexOf(\"s_gs(\")>=3D0&&oc.indexOf(\".s_oc(\")=
<0)||oc.indexOf(\".tl(\")>=3D0)return =
''}ta=3Dn?o.target:1;h=3Ds.oh(o);i=3Dh.indexOf('?');h=3Ds.linkLeaveQueryS=
tring||i<0?h:h.substring(0,"=0A=
+"i);l=3Ds.linkName;t=3Ds.linkType?s.linkType.toLowerCase():s.lt(h);if(t&=
&(h||l))q+=3D'&pe=3Dlnk_'+(t=3D=3D'd'||t=3D=3D'e'?s.ape(t):'o')+(h?'&pev1=
=3D'+s.ape(h):'')+(l?'&pev2=3D'+s.ape(l):'');else =
trk=3D0;if(s.trackInlineS"=0A=
+"tats){if(!p){p=3Ds.pageURL;w=3D0}t=3Ds.ot(o);i=3Do.sourceIndex;if(s.gg(=
'objectID')){n=3Ds.gg('objectID');x=3D1;i=3D1}if(p&&n&&t)qs=3D'&pid=3D'+s=
.ape(s.fl(p,255))+(w?'&pidt=3D'+w:'')+'&oid=3D'+s.ape(s.fl(n,100))+(x?'&o=
id"=0A=
+"t=3D'+x:'')+'&ot=3D'+s.ape(t)+(i?'&oi=3D'+i:'')}}if(!trk&&!qs)return =
'';s.sampled=3Ds.vs(sed);if(trk){if(s.sampled)code=3Ds.mr(sess,(vt?'&t=3D=
'+s.ape(vt):'')+s.hav()+q+(qs?qs:s.rq(s.un)),0,id,ta);qs=3D'';s.m_m('"=0A=
+"t');if(s.p_r)s.p_r();s.referrer=3D''}s.sq(qs);}else{s.dl(vo);}if(vo)s.p=
t(s.vl_g,',','vo1',vb);s.lnk=3Ds.eo=3Ds.linkName=3Ds.linkType=3Ds.wd.s_ob=
jectID=3Ds.ppu=3Ds.pe=3Ds.pev1=3Ds.pev2=3Ds.pev3=3D'';if(s.pg)s.wd.s_lnk=3D=
s."=0A=
+"wd.s_eo=3Ds.wd.s_linkName=3Ds.wd.s_linkType=3D'';if(!id&&!s.tc){s.tc=3D=
1;s.flushBufferedRequests()}return code};s.tl=3Dfunction(o,t,n,vo){var =
s=3Dthis;s.lnk=3Ds.co(o);s.linkType=3Dt;s.linkName=3Dn;s.t(vo)};if(pg){s.=
"=0A=
+"wd.s_co=3Dfunction(o){var s=3Ds_gi(\"_\",1,1);return =
s.co(o)};s.wd.s_gs=3Dfunction(un){var s=3Ds_gi(un,1,1);return =
s.t()};s.wd.s_dc=3Dfunction(un){var s=3Ds_gi(un,1);return =
s.t()}}s.ssl=3D(s.wd.location.protocol"=0A=
+".toLowerCase().indexOf('https')>=3D0);s.d=3Ddocument;s.b=3Ds.d.body;if(=
s.d.getElementsByTagName){s.h=3Ds.d.getElementsByTagName('HEAD');if(s.h)s=
.h=3Ds.h[0]}s.n=3Dnavigator;s.u=3Ds.n.userAgent;s.ns6=3Ds.u.indexOf('"=0A=
+"Netscape6/');var =
apn=3Ds.n.appName,v=3Ds.n.appVersion,ie=3Dv.indexOf('MSIE =
'),o=3Ds.u.indexOf('Opera =
'),i;if(v.indexOf('Opera')>=3D0||o>0)apn=3D'Opera';s.isie=3D(apn=3D=3D'Mi=
crosoft Internet Explorer');s.isns=3D(apn=3D=3D"=0A=
+"'Netscape');s.isopera=3D(apn=3D=3D'Opera');s.ismac=3D(s.u.indexOf('Mac'=
)>=3D0);if(o>0)s.apv=3DparseFloat(s.u.substring(o+6));else =
if(ie>0){s.apv=3DparseInt(i=3Dv.substring(ie+5));if(s.apv>3)s.apv=3Dparse=
Float(i)}els"=0A=
+"e if(s.ns6>0)s.apv=3DparseFloat(s.u.substring(s.ns6+10));else =
s.apv=3DparseFloat(v);s.em=3D0;if(String.fromCharCode){i=3Descape(String.=
fromCharCode(256)).toUpperCase();s.em=3D(i=3D=3D'%C4%80'?2:(i=3D=3D'%U010=
0'?1:0)"=0A=
+")}s.sa(un);s.vl_l=3D'dynamicVariablePrefix,visitorID,vmk,visitorMigrati=
onKey,visitorMigrationServer,visitorMigrationServerSecure,ppu,charSet,vis=
itorNamespace,cookieDomainPeriods,cookieLifetime,pageNa"=0A=
+"me,pageURL,referrer,currencyCode';s.va_l=3Ds.sp(s.vl_l,',');s.vl_t=3Ds.=
vl_l+',variableProvider,channel,server,pageType,transactionID,purchaseID,=
campaign,state,zip,events,products,linkName,linkType';for"=0A=
+"(var =
n=3D1;n<51;n++)s.vl_t+=3D',prop'+n+',eVar'+n+',hier'+n+',list'+n;s.vl_l2=3D=
',tnt,pe,pev1,pev2,pev3,resolution,colorDepth,javascriptVersion,javaEnabl=
ed,cookiesEnabled,browserWidth,browserHeight,conne"=0A=
+"ctionType,homepage,plugins';s.vl_t+=3Ds.vl_l2;s.va_t=3Ds.sp(s.vl_t,',')=
;s.vl_g=3Ds.vl_t+',trackingServer,trackingServerSecure,trackingServerBase=
,fpCookieDomainPeriods,disableBufferedRequests,mobile,visit"=0A=
+"orSampling,visitorSamplingGroup,dynamicAccountSelection,dynamicAccountL=
ist,dynamicAccountMatch,trackDownloadLinks,trackExternalLinks,trackInline=
Stats,linkLeaveQueryString,linkDownloadFileTypes,link"=0A=
+"ExternalFilters,linkInternalFilters,linkTrackVars,linkTrackEvents,linkN=
ames,lnk,eo,_1_referrer';s.va_g=3Ds.sp(s.vl_g,',');s.pg=3Dpg;s.gl(s.vl_g)=
;if(!ss)s.wds()",=0A=
w=3Dwindow,l=3Dw.s_c_il,n=3Dnavigator,u=3Dn.userAgent,v=3Dn.appVersion,e=3D=
v.indexOf('MSIE =
'),m=3Du.indexOf('Netscape6/'),a,i,s;if(un){un=3Dun.toLowerCase();if(l)fo=
r(i=3D0;i<l.length;i++){s=3Dl[i];if(!s._c||s._c=3D=3D's_c'){if(s.oun=3D=3D=
un)return s;else if(s.fs&&s.sa&&s.fs(s.oun,un)){s.sa(un);return =
s}}}}w.s_an=3D'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv=
wxyz';=0A=
w.s_sp=3Dnew Function("x","d","var a=3Dnew =
Array,i=3D0,j;if(x){if(x.split)a=3Dx.split(d);else =
if(!d)for(i=3D0;i<x.length;i++)a[a.length]=3Dx.substring(i,i+1);else =
while(i>=3D0){j=3Dx.indexOf(d,i);a[a.length]=3Dx.subst"=0A=
+"ring(i,j<0?x.length:j);i=3Dj;if(i>=3D0)i+=3Dd.length}}return a");=0A=
w.s_jn=3Dnew Function("a","d","var =
x=3D'',i,j=3Da.length;if(a&&j>0){x=3Da[0];if(j>1){if(a.join)x=3Da.join(d)=
;else for(i=3D1;i<j;i++)x+=3Dd+a[i]}}return x");=0A=
w.s_rep=3Dnew Function("x","o","n","return s_jn(s_sp(x,o),n)");=0A=
w.s_d=3Dnew Function("x","var t=3D'`^@$#',l=3Ds_an,l2=3Dnew =
Object,x2,d,b=3D0,k,i=3Dx.lastIndexOf('~~'),j,v,w;if(i>0){d=3Dx.substring=
(0,i);x=3Dx.substring(i+2);l=3Ds_sp(l,'');for(i=3D0;i<62;i++)l2[l[i]]=3Di=
;t=3Ds_sp(t,'');d"=0A=
+"=3Ds_sp(d,'~');i=3D0;while(i<5){v=3D0;if(x.indexOf(t[i])>=3D0) =
{x2=3Ds_sp(x,t[i]);for(j=3D1;j<x2.length;j++){k=3Dx2[j].substring(0,1);w=3D=
t[i]+k;if(k!=3D' =
'){v=3D1;w=3Dd[b+l2[k]]}x2[j]=3Dw+x2[j].substring(1)}}if(v)x=3Ds_jn("=0A=
+"x2,'');else{w=3Dt[i]+' =
';if(x.indexOf(w)>=3D0)x=3Ds_rep(x,w,t[i]);i++;b+=3D62}}}return x");=0A=
w.s_fe=3Dnew Function("c","return =
s_rep(s_rep(s_rep(c,'\\\\','\\\\\\\\'),'\"','\\\\\"'),\"\\n\",\"\\\\n\")"=
);=0A=
w.s_fa=3Dnew Function("f","var =
s=3Df.indexOf('(')+1,e=3Df.indexOf(')'),a=3D'',c;while(s>=3D0&&s<e){c=3Df=
.substring(s,s+1);if(c=3D=3D',')a+=3D'\",\"';else if((\"\\n\\r\\t =
\").indexOf(c)<0)a+=3Dc;s++}return a?'\"'+a+'\"':"=0A=
+"a");=0A=
w.s_ft=3Dnew Function("c","c+=3D'';var =
s,e,o,a,d,q,f,h,x;s=3Dc.indexOf('=3Dfunction(');while(s>=3D0){s++;d=3D1;q=
=3D'';x=3D0;f=3Dc.substring(s);a=3Ds_fa(f);e=3Do=3Dc.indexOf('{',s);e++;w=
hile(d>0){h=3Dc.substring(e,e+1);if(q){i"=0A=
+"f(h=3D=3Dq&&!x)q=3D'';if(h=3D=3D'\\\\')x=3Dx?0:1;else =
x=3D0}else{if(h=3D=3D'\"'||h=3D=3D\"'\")q=3Dh;if(h=3D=3D'{')d++;if(h=3D=3D=
'}')d--}if(d>0)e++}c=3Dc.substring(0,s)+'new =
Function('+(a?a+',':'')+'\"'+s_fe(c.substring(o+1,e))+'\")"=0A=
+"'+c.substring(e+1);s=3Dc.indexOf('=3Dfunction(')}return c;");=0A=
c=3Ds_d(c);if(e>0){a=3DparseInt(i=3Dv.substring(e+5));if(a>3)a=3DparseFlo=
at(i)}else if(m>0)a=3DparseFloat(u.substring(m+10));else =
a=3DparseFloat(v);if(a>=3D5&&v.indexOf('Opera')<0&&u.indexOf('Opera')<0){=
w.s_c=3Dnew Function("un","pg","ss","var s=3Dthis;"+c);return new =
s_c(un,pg,ss)}else s=3Dnew Function("un","pg","ss","var s=3Dnew =
Object;"+s_ft(c)+";return s");return s(un,pg,ss)};=0A=
=0A=
/************************************************************************=
*********************/ =0A=
// PRAGMA=0A=
// NW.OMNITURE=0A=
/************************************************************************=
*********************/=0A=
/*=0A=
[email from David Humprey at Omniture]=0A=
No Documentation per se, but t() is a page view function so, it will =
increase the pages report with either the last page passed or if =
pageName is declared in the call, the new pageName value. =0A=
=0A=
tl() is a link event.  It requires three attributes: =
tl(URL,LINK_TYPE,FRIENDLY_LINK_NAME), where URL is the url of the link =
being clicked, LINK_TYPE is o for other (custom link), d for download =
link and e for exit link and FRIENDLY_LINK_NAME is the friendly name of =
the link.  The tl() function does not increase the pages report, but is =
an attribute to the pages report. =0A=
=0A=
However, if there are any props passed in these functions, the prop will =
get increased and we call these increments 'page views'.  If eVars, =
events, products, etc. get set in they would function just like a onLoad.=0A=
=0A=
The main difference the pages reporting.=0A=
[end email]=0A=
*/=0A=
NW.Omniture =3D NW.Omniture || {};=0A=
NW.Omniture =3D function() {=0A=
	return {=0A=
		trackPageView: function(om_obj, om_vars, om_events) {=0A=
			// page tracking =3D Omniture s.t()=0A=
			// increments page and all sprops passed=0A=
			//=0A=
			// REQUIRED - om_obj consists Omniture named tracking variables=0A=
			// EXAMPLE - om_obj.pageName =3D "test Page";=0A=
			//=0A=
			// OPTIONAL - om_vars consists of any omniture props, events and =
eVars to be tracked=0A=
			// om_obj.linkTrackVars =3D "prop1,prop2,events,eVar1";=0A=
			// Defaults to "None"=0A=
			//=0A=
			// OPTIONAL - om_events consists of a comma separated of events to =
track=0A=
			// om_events =3D "event1"=0A=
			// Defaults to "None"=0A=
			=0A=
			var linkVars =3D om_vars || "None";=0A=
			var linkEvents =3D om_events || "None";=0A=
			=0A=
			var om =3D window.s;=0A=
			if(om_obj) $.extend(om, om_obj);=0A=
			=0A=
			om.linkTrackVars =3D linkVars;=0A=
			om.linkTrackEvents =3D linkEvents;=0A=
			om.t();=0A=
		},=0A=
		trackPageLink: function(event, om_name, om_vars, om_events, =
om_link_type) {=0A=
			// link tracking =3D Omniture s.tl()=0A=
			// will not increment page (note - will increment all props passed to =
it)=0A=
			//=0A=
			// EITHER EVENT OR OM_NAME IS REQUIRED - event/URL=0A=
			// IF EVENT IS SUPPLIED THEN ON_NAME WILL BE IGNORED=0A=
			// *****EVENT IS LOOKED FOR FIRST=0A=
			// signifies URL or object being clicked on=0A=
			// note: must be a DOM oject - NOT a jQuery object=0A=
			//=0A=
			// EITHER EVENT OR OM_NAME IS REQUIRED - on_name =0A=
			// name of the info to pass or event being tracked=0A=
			// defaults to document URL if not found (this should be corrected =
immediately)=0A=
			//=0A=
			// OPTIONAL - om_vars=0A=
			// consists of any omniture props, events and eVars to be tracked=0A=
			// om_obj.linkTrackVars =3D "prop1,prop2,events,eVar1";=0A=
			// defaults to "None"=0A=
			//=0A=
			// OPTIONAL - om_events consists of a comma separated of events to =
track=0A=
			// om_events =3D "event1"=0A=
			// defaults to "None"=0A=
			//=0A=
			// REQUIRED - omniture recognizes 3 type of links=0A=
			// "o" =3D custom=0A=
			// "d" =3D download=0A=
			// "e" =3D exit=0A=
			// defaults to "o"=0A=
			=0A=
			var nameToRecord =3D null;=0A=
			if(event) {=0A=
				var $t =3D $(event.target);=0A=
				nameToRecord =3D $t.attr("href");=0A=
			}=0A=
				var nameToRecord =3D nameToRecord || om_name || "Fix_tl_" + =
window.document.location;=0A=
				var linkType =3D om_link_type || "o";=0A=
				=0A=
				alert(window.s_account);=0A=
				alert(linkType + ' - ' + nameToRecord + ' - ' + om_vars + ' - ' + =
om_events);=0A=
				var om =3D window.s_gi(window.s_account);=0A=
				if(om_vars) om.linkTrackVars =3D om_vars;=0A=
				if(om_events) om.linkTrackEvents =3D om_events;=0A=
				om.tl(window, linkType, nameToRecord);	=0A=
			}=0A=
		};=0A=
			=0A=
			/*=0A=
			var s=3Ds_gi(s_account);=0A=
s.eVar32=3D'Registration Form';=0A=
s.events=3D'event12';=0A=
s.linkTrackVars=3D'eVar32,events'=0A=
s.linkTrackEvents=3D'event12';=0A=
s.tl(this,'o',User Registration Complete);"=0A=
=0A=
	*/=0A=
	=0A=
}();=0A=
=0A=
=0A=

------=_NextPart_000_0000_01CB132A.CD361960
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.networkworld.com/includes/jqlib/exp_nwLib_head.js

NW =3D window.NW || {};

/************************************************************************=
*********************/=20
// PRAGMA
// JQUERY LIBRARY
/************************************************************************=
*********************/=20
(function(){
/*
 * jQuery 1.2.6 - New Wave Javascript
 *
 * Copyright (c) 2008 John Resig (jquery.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
 * $Rev: 5685 $
 */

// Map over jQuery in case of overwrite
var _jQuery =3D window.jQuery,
// Map over the $ in case of overwrite
    _$ =3D window.$;

var jQuery =3D window.jQuery =3D window.$ =3D function( selector, =
context ) {
    // The jQuery object is actually just the init constructor =
'enhanced'
    return new jQuery.fn.init( selector, context );
};

// A simple way to check for HTML strings or ID strings
// (both of which we optimize for)
var quickExpr =3D /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,

// Is it a simple selector
    isSimple =3D /^.[^:#\[\.]*$/,

// Will speed up references to undefined, and allows munging its name.
    undefined;

jQuery.fn =3D jQuery.prototype =3D {
    init: function( selector, context ) {
        // Make sure that a selection was provided
        selector =3D selector || document;

        // Handle $(DOMElement)
        if ( selector.nodeType ) {
            this[0] =3D selector;
            this.length =3D 1;
            return this;
        }
        // Handle HTML strings
        if ( typeof selector =3D=3D "string" ) {
            // Are we dealing with HTML string or an ID?
            var match =3D quickExpr.exec( selector );

            // Verify a match, and that no context was specified for #id
            if ( match && (match[1] || !context) ) {

                // HANDLE: $(html) -> $(array)
                if ( match[1] )
                    selector =3D jQuery.clean( [ match[1] ], context );

                // HANDLE: $("#id")
                else {
                    var elem =3D document.getElementById( match[3] );

                    // Make sure an element was located
                    if ( elem ){
                        // Handle the case where IE and Opera return =
items
                        // by name instead of ID
                        if ( elem.id !=3D match[3] )
                            return jQuery().find( selector );

                        // Otherwise, we inject the element directly =
into the jQuery object
                        return jQuery( elem );
                    }
                    selector =3D [];
                }

            // HANDLE: $(expr, [context])
            // (which is just equivalent to: $(content).find(expr)
            } else
                return jQuery( context ).find( selector );

        // HANDLE: $(function)
        // Shortcut for document ready
        } else if ( jQuery.isFunction( selector ) )
            return jQuery( document )[ jQuery.fn.ready ? "ready" : =
"load" ]( selector );

        return this.setArray(jQuery.makeArray(selector));
    },

    // The current version of jQuery being used
    jquery: "1.2.6",

    // The number of elements contained in the matched element set
    size: function() {
        return this.length;
    },

    // The number of elements contained in the matched element set
    length: 0,

    // Get the Nth element in the matched element set OR
    // Get the whole matched element set as a clean array
    get: function( num ) {
        return num =3D=3D undefined ?

            // Return a 'clean' array
            jQuery.makeArray( this ) :

            // Return just the object
            this[ num ];
    },

    // Take an array of elements and push it onto the stack
    // (returning the new matched element set)
    pushStack: function( elems ) {
        // Build a new jQuery matched element set
        var ret =3D jQuery( elems );

        // Add the old object onto the stack (as a reference)
        ret.prevObject =3D this;

        // Return the newly-formed element set
        return ret;
    },

    // Force the current matched set of elements to become
    // the specified array of elements (destroying the stack in the =
process)
    // You should use pushStack() in order to do this, but maintain the =
stack
    setArray: function( elems ) {
        // Resetting the length to 0, then using the native Array push
        // is a super-fast way to populate an object with array-like =
properties
        this.length =3D 0;
        Array.prototype.push.apply( this, elems );

        return this;
    },

    // Execute a callback for every element in the matched set.
    // (You can seed the arguments with an array of args, but this is
    // only used internally.)
    each: function( callback, args ) {
        return jQuery.each( this, callback, args );
    },

    // Determine the position of an element within
    // the matched set of elements
    index: function( elem ) {
        var ret =3D -1;

        // Locate the position of the desired element
        return jQuery.inArray(
            // If it receives a jQuery object, the first element is used
            elem && elem.jquery ? elem[0] : elem
        , this );
    },

    attr: function( name, value, type ) {
        var options =3D name;

        // Look for the case where we're accessing a style value
        if ( name.constructor =3D=3D String )
            if ( value =3D=3D=3D undefined )
                return this[0] && jQuery[ type || "attr" ]( this[0], =
name );

            else {
                options =3D {};
                options[ name ] =3D value;
            }

        // Check to see if we're setting style values
        return this.each(function(i){
            // Set all the styles
            for ( name in options )
                jQuery.attr(
                    type ?
                        this.style :
                        this,
                    name, jQuery.prop( this, options[ name ], type, i, =
name )
                );
        });
    },

    css: function( key, value ) {
        // ignore negative width and height values
        if ( (key =3D=3D 'width' || key =3D=3D 'height') && =
parseFloat(value) < 0 )
            value =3D undefined;
        return this.attr( key, value, "curCSS" );
    },

    text: function( text ) {
        if ( typeof text !=3D "object" && text !=3D null )
            return this.empty().append( (this[0] && =
this[0].ownerDocument || document).createTextNode( text ) );

        var ret =3D "";

        jQuery.each( text || this, function(){
            jQuery.each( this.childNodes, function(){
                if ( this.nodeType !=3D 8 )
                    ret +=3D this.nodeType !=3D 1 ?
                        this.nodeValue :
                        jQuery.fn.text( [ this ] );
            });
        });

        return ret;
    },

    wrapAll: function( html ) {
        if ( this[0] )
            // The elements to wrap the target around
            jQuery( html, this[0].ownerDocument )
                .clone()
                .insertBefore( this[0] )
                .map(function(){
                    var elem =3D this;

                    while ( elem.firstChild )
                        elem =3D elem.firstChild;

                    return elem;
                })
                .append(this);

        return this;
    },

    wrapInner: function( html ) {
        return this.each(function(){
            jQuery( this ).contents().wrapAll( html );
        });
    },

    wrap: function( html ) {
        return this.each(function(){
            jQuery( this ).wrapAll( html );
        });
    },

    append: function() {
        return this.domManip(arguments, true, false, function(elem){
            if (this.nodeType =3D=3D 1)
                this.appendChild( elem );
        });
    },

    prepend: function() {
        return this.domManip(arguments, true, true, function(elem){
            if (this.nodeType =3D=3D 1)
                this.insertBefore( elem, this.firstChild );
        });
    },

    before: function() {
        return this.domManip(arguments, false, false, function(elem){
            this.parentNode.insertBefore( elem, this );
        });
    },

    after: function() {
        return this.domManip(arguments, false, true, function(elem){
            this.parentNode.insertBefore( elem, this.nextSibling );
        });
    },

    end: function() {
        return this.prevObject || jQuery( [] );
    },

    find: function( selector ) {
        var elems =3D jQuery.map(this, function(elem){
            return jQuery.find( selector, elem );
        });

        return this.pushStack( /[^+>] [^+>]/.test( selector ) || =
selector.indexOf("..") > -1 ?
            jQuery.unique( elems ) :
            elems );
    },

    clone: function( events ) {
        // Do the clone
        var ret =3D this.map(function(){
            if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) {
                // IE copies events bound via attachEvent when
                // using cloneNode. Calling detachEvent on the
                // clone will also remove the events from the orignal
                // In order to get around this, we use innerHTML.
                // Unfortunately, this means some modifications to
                // attributes in IE that are actually only stored
                // as properties will not be copied (such as the
                // the name attribute on an input).
                var clone =3D this.cloneNode(true),
                    container =3D document.createElement("div");
                container.appendChild(clone);
                return jQuery.clean([container.innerHTML])[0];
            } else
                return this.cloneNode(true);
        });

        // Need to set the expando to null on the cloned set if it =
exists
        // removeData doesn't work here, IE removes it from the original =
as well
        // this is primarily for IE but the data expando shouldn't be =
copied over in any browser
        var clone =3D ret.find("*").andSelf().each(function(){
            if ( this[ expando ] !=3D undefined )
                this[ expando ] =3D null;
        });

        // Copy the events from the original to the clone
        if ( events =3D=3D=3D true )
            this.find("*").andSelf().each(function(i){
                if (this.nodeType =3D=3D 3)
                    return;
                var events =3D jQuery.data( this, "events" );

                for ( var type in events )
                    for ( var handler in events[ type ] )
                        jQuery.event.add( clone[ i ], type, events[ type =
][ handler ], events[ type ][ handler ].data );
            });

        // Return the cloned set
        return ret;
    },

    filter: function( selector ) {
        return this.pushStack(
            jQuery.isFunction( selector ) &&
            jQuery.grep(this, function(elem, i){
                return selector.call( elem, i );
            }) ||

            jQuery.multiFilter( selector, this ) );
    },

    not: function( selector ) {
        if ( selector.constructor =3D=3D String )
            // test special case where just one selector is passed in
            if ( isSimple.test( selector ) )
                return this.pushStack( jQuery.multiFilter( selector, =
this, true ) );
            else
                selector =3D jQuery.multiFilter( selector, this );

        var isArrayLike =3D selector.length && selector[selector.length =
- 1] !=3D=3D undefined && !selector.nodeType;
        return this.filter(function() {
            return isArrayLike ? jQuery.inArray( this, selector ) < 0 : =
this !=3D selector;
        });
    },

    add: function( selector ) {
        return this.pushStack( jQuery.unique( jQuery.merge(
            this.get(),
            typeof selector =3D=3D 'string' ?
                jQuery( selector ) :
                jQuery.makeArray( selector )
        )));
    },

    is: function( selector ) {
        return !!selector && jQuery.multiFilter( selector, this ).length =
> 0;
    },

    hasClass: function( selector ) {
        return this.is( "." + selector );
    },

    val: function( value ) {
        if ( value =3D=3D undefined ) {

            if ( this.length ) {
                var elem =3D this[0];

                // We need to handle select boxes special
                if ( jQuery.nodeName( elem, "select" ) ) {
                    var index =3D elem.selectedIndex,
                        values =3D [],
                        options =3D elem.options,
                        one =3D elem.type =3D=3D "select-one";

                    // Nothing was selected
                    if ( index < 0 )
                        return null;

                    // Loop through all the selected options
                    for ( var i =3D one ? index : 0, max =3D one ? index =
+ 1 : options.length; i < max; i++ ) {
                        var option =3D options[ i ];

                        if ( option.selected ) {
                            // Get the specifc value for the option
                            value =3D jQuery.browser.msie && =
!option.attributes.value.specified ? option.text : option.value;

                            // We don't need an array for one selects
                            if ( one )
                                return value;

                            // Multi-Selects return an array
                            values.push( value );
                        }
                    }

                    return values;

                // Everything else, we just grab the value
                } else
                    return (this[0].value || "").replace(/\r/g, "");

            }

            return undefined;
        }

        if( value.constructor =3D=3D Number )
            value +=3D '';

        return this.each(function(){
            if ( this.nodeType !=3D 1 )
                return;

            if ( value.constructor =3D=3D Array && =
/radio|checkbox/.test( this.type ) )
                this.checked =3D (jQuery.inArray(this.value, value) >=3D =
0 ||
                    jQuery.inArray(this.name, value) >=3D 0);

            else if ( jQuery.nodeName( this, "select" ) ) {
                var values =3D jQuery.makeArray(value);

                jQuery( "option", this ).each(function(){
                    this.selected =3D (jQuery.inArray( this.value, =
values ) >=3D 0 ||
                        jQuery.inArray( this.text, values ) >=3D 0);
                });

                if ( !values.length )
                    this.selectedIndex =3D -1;

            } else
                this.value =3D value;
        });
    },

    html: function( value ) {
        return value =3D=3D undefined ?
            (this[0] ?
                this[0].innerHTML :
                null) :
            this.empty().append( value );
    },

    replaceWith: function( value ) {
        return this.after( value ).remove();
    },

    eq: function( i ) {
        return this.slice( i, i + 1 );
    },

    slice: function() {
        return this.pushStack( Array.prototype.slice.apply( this, =
arguments ) );
    },

    map: function( callback ) {
        return this.pushStack( jQuery.map(this, function(elem, i){
            return callback.call( elem, i, elem );
        }));
    },

    andSelf: function() {
        return this.add( this.prevObject );
    },

    data: function( key, value ){
        var parts =3D key.split(".");
        parts[1] =3D parts[1] ? "." + parts[1] : "";

        if ( value =3D=3D=3D undefined ) {
            var data =3D this.triggerHandler("getData" + parts[1] + "!", =
[parts[0]]);

            if ( data =3D=3D=3D undefined && this.length )
                data =3D jQuery.data( this[0], key );

            return data =3D=3D=3D undefined && parts[1] ?
                this.data( parts[0] ) :
                data;
        } else
            return this.trigger("setData" + parts[1] + "!", [parts[0], =
value]).each(function(){
                jQuery.data( this, key, value );
            });
    },

    removeData: function( key ){
        return this.each(function(){
            jQuery.removeData( this, key );
        });
    },

    domManip: function( args, table, reverse, callback ) {
        var clone =3D this.length > 1, elems;

        return this.each(function(){
            if ( !elems ) {
                elems =3D jQuery.clean( args, this.ownerDocument );

                if ( reverse )
                    elems.reverse();
            }

            var obj =3D this;

            if ( table && jQuery.nodeName( this, "table" ) && =
jQuery.nodeName( elems[0], "tr" ) )
                obj =3D this.getElementsByTagName("tbody")[0] || =
this.appendChild( this.ownerDocument.createElement("tbody") );

            var scripts =3D jQuery( [] );

            jQuery.each(elems, function(){
                var elem =3D clone ?
                    jQuery( this ).clone( true )[0] :
                    this;

                // execute all scripts after the elements have been =
injected
                if ( jQuery.nodeName( elem, "script" ) )
                    scripts =3D scripts.add( elem );
                else {
                    // Remove any inner scripts for later evaluation
                    if ( elem.nodeType =3D=3D 1 )
                        scripts =3D scripts.add( jQuery( "script", elem =
).remove() );

                    // Inject the elements into the document
                    callback.call( obj, elem );
                }
            });

            scripts.each( evalScript );
        });
    }
};

// Give the init function the jQuery prototype for later instantiation
jQuery.fn.init.prototype =3D jQuery.fn;

function evalScript( i, elem ) {
    if ( elem.src )
        jQuery.ajax({
            url: elem.src,
            async: false,
            dataType: "script"
        });

    else
        jQuery.globalEval( elem.text || elem.textContent || =
elem.innerHTML || "" );

    if ( elem.parentNode )
        elem.parentNode.removeChild( elem );
}

function now(){
    return +new Date;
}

jQuery.extend =3D jQuery.fn.extend =3D function() {
    // copy reference to target object
    var target =3D arguments[0] || {}, i =3D 1, length =3D =
arguments.length, deep =3D false, options;

    // Handle a deep copy situation
    if ( target.constructor =3D=3D Boolean ) {
        deep =3D target;
        target =3D arguments[1] || {};
        // skip the boolean and the target
        i =3D 2;
    }

    // Handle case when target is a string or something (possible in =
deep copy)
    if ( typeof target !=3D "object" && typeof target !=3D "function" )
        target =3D {};

    // extend jQuery itself if only one argument is passed
    if ( length =3D=3D i ) {
        target =3D this;
        --i;
    }

    for ( ; i < length; i++ )
        // Only deal with non-null/undefined values
        if ( (options =3D arguments[ i ]) !=3D null )
            // Extend the base object
            for ( var name in options ) {
                var src =3D target[ name ], copy =3D options[ name ];

                // Prevent never-ending loop
                if ( target =3D=3D=3D copy )
                    continue;

                // Recurse if we're merging object values
                if ( deep && copy && typeof copy =3D=3D "object" && =
!copy.nodeType )
                    target[ name ] =3D jQuery.extend( deep,=20
                        // Never move original objects, clone them
                        src || ( copy.length !=3D null ? [ ] : { } )
                    , copy );

                // Don't bring in undefined values
                else if ( copy !=3D=3D undefined )
                    target[ name ] =3D copy;

            }

    // Return the modified object
    return target;
};

var expando =3D "jQuery" + now(), uuid =3D 0, windowData =3D {},
    // exclude the following css properties to add px
    exclude =3D /z-?index|font-?weight|opacity|zoom|line-?height/i,
    // cache defaultView
    defaultView =3D document.defaultView || {};

jQuery.extend({
    noConflict: function( deep ) {
        window.$ =3D _$;

        if ( deep )
            window.jQuery =3D _jQuery;

        return jQuery;
    },

    // See test/unit/core.js for details concerning this function.
    isFunction: function( fn ) {
        return !!fn && typeof fn !=3D "string" && !fn.nodeName &&
            fn.constructor !=3D Array && /^[\s[]?function/.test( fn + "" =
);
    },

    // check if an element is in a (or is an) XML document
    isXMLDoc: function( elem ) {
        return elem.documentElement && !elem.body ||
            elem.tagName && elem.ownerDocument && =
!elem.ownerDocument.body;
    },

    // Evalulates a script in a global context
    globalEval: function( data ) {
        data =3D jQuery.trim( data );

        if ( data ) {
            // Inspired by code by Andrea Giammarchi
            // =
http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom=
.html
            var head =3D document.getElementsByTagName("head")[0] || =
document.documentElement,
                script =3D document.createElement("script");

            script.type =3D "text/javascript";
            if ( jQuery.browser.msie )
                script.text =3D data;
            else
                script.appendChild( document.createTextNode( data ) );

            // Use insertBefore instead of appendChild  to circumvent an =
IE6 bug.
            // This arises when a base node is used (#2709).
            head.insertBefore( script, head.firstChild );
            head.removeChild( script );
        }
    },

    nodeName: function( elem, name ) {
        return elem.nodeName && elem.nodeName.toUpperCase() =3D=3D =
name.toUpperCase();
    },

    cache: {},

    data: function( elem, name, data ) {
        elem =3D elem =3D=3D window ?
            windowData :
            elem;

        var id =3D elem[ expando ];

        // Compute a unique ID for the element
        if ( !id )
            id =3D elem[ expando ] =3D ++uuid;

        // Only generate the data cache if we're
        // trying to access or manipulate it
        if ( name && !jQuery.cache[ id ] )
            jQuery.cache[ id ] =3D {};

        // Prevent overriding the named cache with undefined values
        if ( data !=3D=3D undefined )
            jQuery.cache[ id ][ name ] =3D data;

        // Return the named cache data, or the ID for the element
        return name ?
            jQuery.cache[ id ][ name ] :
            id;
    },

    removeData: function( elem, name ) {
        elem =3D elem =3D=3D window ?
            windowData :
            elem;

        var id =3D elem[ expando ];

        // If we want to remove a specific section of the element's data
        if ( name ) {
            if ( jQuery.cache[ id ] ) {
                // Remove the section of cache data
                delete jQuery.cache[ id ][ name ];

                // If we've removed all the data, remove the element's =
cache
                name =3D "";

                for ( name in jQuery.cache[ id ] )
                    break;

                if ( !name )
                    jQuery.removeData( elem );
            }

        // Otherwise, we want to remove all of the element's data
        } else {
            // Clean up the element expando
            try {
                delete elem[ expando ];
            } catch(e){
                // IE has trouble directly removing the expando
                // but it's ok with using removeAttribute
                if ( elem.removeAttribute )
                    elem.removeAttribute( expando );
            }

            // Completely remove the data cache
            delete jQuery.cache[ id ];
        }
    },

    // args is for internal usage only
    each: function( object, callback, args ) {
        var name, i =3D 0, length =3D object.length;

        if ( args ) {
            if ( length =3D=3D undefined ) {
                for ( name in object )
                    if ( callback.apply( object[ name ], args ) =
=3D=3D=3D false )
                        break;
            } else
                for ( ; i < length; )
                    if ( callback.apply( object[ i++ ], args ) =3D=3D=3D =
false )
                        break;

        // A special, fast, case for the most common use of each
        } else {
            if ( length =3D=3D undefined ) {
                for ( name in object )
                    if ( callback.call( object[ name ], name, object[ =
name ] ) =3D=3D=3D false )
                        break;
            } else
                for ( var value =3D object[0];
                    i < length && callback.call( value, i, value ) =
!=3D=3D false; value =3D object[++i] ){}
        }

        return object;
    },

    prop: function( elem, value, type, i, name ) {
        // Handle executable functions
        if ( jQuery.isFunction( value ) )
            value =3D value.call( elem, i );

        // Handle passing in a number to a CSS property
        return value && value.constructor =3D=3D Number && type =3D=3D =
"curCSS" && !exclude.test( name ) ?
            value + "px" :
            value;
    },

    className: {
        // internal only, use addClass("class")
        add: function( elem, classNames ) {
            jQuery.each((classNames || "").split(/\s+/), function(i, =
className){
                if ( elem.nodeType =3D=3D 1 && !jQuery.className.has( =
elem.className, className ) )
                    elem.className +=3D (elem.className ? " " : "") + =
className;
            });
        },

        // internal only, use removeClass("class")
        remove: function( elem, classNames ) {
            if (elem.nodeType =3D=3D 1)
                elem.className =3D classNames !=3D undefined ?
                    jQuery.grep(elem.className.split(/\s+/), =
function(className){
                        return !jQuery.className.has( classNames, =
className );
                    }).join(" ") :
                    "";
        },

        // internal only, use hasClass("class")
        has: function( elem, className ) {
            //return jQuery.inArray( className, (elem.className || =
elem).toString().split(/\s+/) ) > -1;
			return jQuery.inArray( className, (elem.className || =
elem).toString().split(/\s+/) ) > -1;
        }
    },

    // A method for quickly swapping in/out CSS properties to get =
correct calculations
    swap: function( elem, options, callback ) {
        var old =3D {};
        // Remember the old values, and insert the new ones
        for ( var name in options ) {
            old[ name ] =3D elem.style[ name ];
            elem.style[ name ] =3D options[ name ];
        }

        callback.call( elem );

        // Revert the old values
        for ( var name in options )
            elem.style[ name ] =3D old[ name ];
    },

    css: function( elem, name, force ) {
        if ( name =3D=3D "width" || name =3D=3D "height" ) {
            var val, props =3D { position: "absolute", visibility: =
"hidden", display:"block" }, which =3D name =3D=3D "width" ? [ "Left", =
"Right" ] : [ "Top", "Bottom" ];

            function getWH() {
                val =3D name =3D=3D "width" ? elem.offsetWidth : =
elem.offsetHeight;
                var padding =3D 0, border =3D 0;
                jQuery.each( which, function() {
                    padding +=3D parseFloat(jQuery.curCSS( elem, =
"padding" + this, true)) || 0;
                    border +=3D parseFloat(jQuery.curCSS( elem, "border" =
+ this + "Width", true)) || 0;
                });
                val -=3D Math.round(padding + border);
            }

            if ( jQuery(elem).is(":visible") )
                getWH();
            else
                jQuery.swap( elem, props, getWH );

            return Math.max(0, val);
        }

        return jQuery.curCSS( elem, name, force );
    },

    curCSS: function( elem, name, force ) {
        var ret, style =3D elem.style;

        // A helper method for determining if an element's values are =
broken
        function color( elem ) {
            if ( !jQuery.browser.safari )
                return false;

            // defaultView is cached
            var ret =3D defaultView.getComputedStyle( elem, null );
            return !ret || ret.getPropertyValue("color") =3D=3D "";
        }

        // We need to handle opacity special in IE
        if ( name =3D=3D "opacity" && jQuery.browser.msie ) {
            ret =3D jQuery.attr( style, "opacity" );

            return ret =3D=3D "" ?
                "1" :
                ret;
        }
        // Opera sometimes will give the wrong display answer, this =
fixes it, see #2037
        if ( jQuery.browser.opera && name =3D=3D "display" ) {
            var save =3D style.outline;
            style.outline =3D "0 solid black";
            style.outline =3D save;
        }

        // Make sure we're using the right name for getting the float =
value
        if ( name.match( /float/i ) )
            name =3D styleFloat;

        if ( !force && style && style[ name ] )
            ret =3D style[ name ];

        else if ( defaultView.getComputedStyle ) {

            // Only "float" is needed here
            if ( name.match( /float/i ) )
                name =3D "float";

            name =3D name.replace( /([A-Z])/g, "-$1" ).toLowerCase();

            var computedStyle =3D defaultView.getComputedStyle( elem, =
null );

            if ( computedStyle && !color( elem ) )
                ret =3D computedStyle.getPropertyValue( name );

            // If the element isn't reporting its values properly in =
Safari
            // then some display: none elements are involved
            else {
                var swap =3D [], stack =3D [], a =3D elem, i =3D 0;

                // Locate all of the parent display: none elements
                for ( ; a && color(a); a =3D a.parentNode )
                    stack.unshift(a);

                // Go through and make them visible, but in reverse
                // (It would be better if we knew the exact display type =
that they had)
                for ( ; i < stack.length; i++ )
                    if ( color( stack[ i ] ) ) {
                        swap[ i ] =3D stack[ i ].style.display;
                        stack[ i ].style.display =3D "block";
                    }

                // Since we flip the display style, we have to handle =
that
                // one special, otherwise get the value
                ret =3D name =3D=3D "display" && swap[ stack.length - 1 =
] !=3D null ?
                    "none" :
                    ( computedStyle && computedStyle.getPropertyValue( =
name ) ) || "";

                // Finally, revert the display styles back
                for ( i =3D 0; i < swap.length; i++ )
                    if ( swap[ i ] !=3D null )
                        stack[ i ].style.display =3D swap[ i ];
            }

            // We should always get a number back from opacity
            if ( name =3D=3D "opacity" && ret =3D=3D "" )
                ret =3D "1";

        } else if ( elem.currentStyle ) {
            var camelCase =3D name.replace(/\-(\w)/g, function(all, =
letter){
                return letter.toUpperCase();
            });

            ret =3D elem.currentStyle[ name ] || elem.currentStyle[ =
camelCase ];

            // From the awesome hack by Dean Edwards
            // =
http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291

            // If we're not dealing with a regular pixel number
            // but a number that has a weird ending, we need to convert =
it to pixels
            if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
                // Remember the original values
                var left =3D style.left, rsLeft =3D =
elem.runtimeStyle.left;

                // Put in the new values to get a computed value out
                elem.runtimeStyle.left =3D elem.currentStyle.left;
                style.left =3D ret || 0;
                ret =3D style.pixelLeft + "px";

                // Revert the changed values
                style.left =3D left;
                elem.runtimeStyle.left =3D rsLeft;
            }
        }

        return ret;
    },

    clean: function( elems, context ) {
        var ret =3D [];
        context =3D context || document;
        // !context.createElement fails in IE with an error but returns =
typeof 'object'
        if (typeof context.createElement =3D=3D 'undefined')
            context =3D context.ownerDocument || context[0] && =
context[0].ownerDocument || document;

        jQuery.each(elems, function(i, elem){
            if ( !elem )
                return;

            if ( elem.constructor =3D=3D Number )
                elem +=3D '';

            // Convert html string into DOM nodes
            if ( typeof elem =3D=3D "string" ) {
                // Fix "XHTML"-style tags in all browsers
                elem =3D elem.replace(/(<(\w+)[^>]*?)\/>/g, =
function(all, front, tag){
                    return =
tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
                        all :
                        front + "></" + tag + ">";
                });

                // Trim whitespace, otherwise indexOf won't work as =
expected
                var tags =3D jQuery.trim( elem ).toLowerCase(), div =3D =
context.createElement("div");

                var wrap =3D
                    // option or optgroup
                    !tags.indexOf("<opt") &&
                    [ 1, "<select multiple=3D'multiple'>", "</select>" ] =
||

                    !tags.indexOf("<leg") &&
                    [ 1, "<fieldset>", "</fieldset>" ] ||

                    tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
                    [ 1, "<table>", "</table>" ] ||

                    !tags.indexOf("<tr") &&
                    [ 2, "<table><tbody>", "</tbody></table>" ] ||

                     // <thead> matched above
                    (!tags.indexOf("<td") || !tags.indexOf("<th")) &&
                    [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] =
||

                    !tags.indexOf("<col") &&
                    [ 2, "<table><tbody></tbody><colgroup>", =
"</colgroup></table>" ] ||

                    // IE can't serialize <link> and <script> tags =
normally
                    jQuery.browser.msie &&
                    [ 1, "div<div>", "</div>" ] ||

                    [ 0, "", "" ];

                // Go to html and back, then peel off extra wrappers
                div.innerHTML =3D wrap[1] + elem + wrap[2];

                // Move to the right depth
                while ( wrap[0]-- )
                    div =3D div.lastChild;

                // Remove IE's autoinserted <tbody> from table fragments
                if ( jQuery.browser.msie ) {

                    // String was a <table>, *may* have spurious <tbody>
                    var tbody =3D !tags.indexOf("<table") && =
tags.indexOf("<tbody") < 0 ?
                        div.firstChild && div.firstChild.childNodes :

                        // String was a bare <thead> or <tfoot>
                        wrap[1] =3D=3D "<table>" && =
tags.indexOf("<tbody") < 0 ?
                            div.childNodes :
                            [];

                    for ( var j =3D tbody.length - 1; j >=3D 0 ; --j )
                        if ( jQuery.nodeName( tbody[ j ], "tbody" ) && =
!tbody[ j ].childNodes.length )
                            tbody[ j ].parentNode.removeChild( tbody[ j =
] );

                    // IE completely kills leading whitespace when =
innerHTML is used
                    if ( /^\s/.test( elem ) )
                        div.insertBefore( context.createTextNode( =
elem.match(/^\s*/)[0] ), div.firstChild );

                }

                elem =3D jQuery.makeArray( div.childNodes );
            }

            if ( elem.length =3D=3D=3D 0 && (!jQuery.nodeName( elem, =
"form" ) && !jQuery.nodeName( elem, "select" )) )
                return;

            if ( elem[0] =3D=3D undefined || jQuery.nodeName( elem, =
"form" ) || elem.options )
                ret.push( elem );

            else
                ret =3D jQuery.merge( ret, elem );

        });

        return ret;
    },

    attr: function( elem, name, value ) {
        // don't set attributes on text and comment nodes
        if (!elem || elem.nodeType =3D=3D 3 || elem.nodeType =3D=3D 8)
            return undefined;

        var notxml =3D !jQuery.isXMLDoc( elem ),
            // Whether we are setting (or getting)
            set =3D value !=3D=3D undefined,
            msie =3D jQuery.browser.msie;

        // Try to normalize/fix the name
        name =3D notxml && jQuery.props[ name ] || name;

        // Only do all the following if this is a node (faster for =
style)
        // IE elem.getAttribute passes even for style
        if ( elem.tagName ) {

            // These attributes require special treatment
            var special =3D /href|src|style/.test( name );

            // Safari mis-reports the default selected property of a =
hidden option
            // Accessing the parent's selectedIndex property fixes it
            if ( name =3D=3D "selected" && jQuery.browser.safari )
                elem.parentNode.selectedIndex;

            // If applicable, access the attribute via the DOM 0 way
            if ( name in elem && notxml && !special ) {
                if ( set ){
                    // We can't allow the type property to be changed =
(since it causes problems in IE)
                    if ( name =3D=3D "type" && jQuery.nodeName( elem, =
"input" ) && elem.parentNode )
                        throw "type property can't be changed";

                    elem[ name ] =3D value;
                }

                // browsers index elements by id/name on forms, give =
priority to attributes.
                if( jQuery.nodeName( elem, "form" ) && =
elem.getAttributeNode(name) )
                    return elem.getAttributeNode( name ).nodeValue;

                return elem[ name ];
            }

            if ( msie && notxml &&  name =3D=3D "style" )
                return jQuery.attr( elem.style, "cssText", value );

            if ( set )
                // convert the value to a string (all browsers do this =
but IE) see #1070
                elem.setAttribute( name, "" + value );

            var attr =3D msie && notxml && special
                    // Some attributes require a special call on IE
                    ? elem.getAttribute( name, 2 )
                    : elem.getAttribute( name );

            // Non-existent attributes return null, we normalize to =
undefined
            return attr =3D=3D=3D null ? undefined : attr;
        }

        // elem is actually elem.style ... set the style

        // IE uses filters for opacity
        if ( msie && name =3D=3D "opacity" ) {
            if ( set ) {
                // IE has trouble with opacity if it does not have =
layout
                // Force it by setting the zoom level
                elem.zoom =3D 1;

                // Set the alpha filter to set the opacity
                elem.filter =3D (elem.filter || "").replace( =
/alpha\([^)]*\)/, "" ) +
                    (parseInt( value ) + '' =3D=3D "NaN" ? "" : =
"alpha(opacity=3D" + value * 100 + ")");
            }

            return elem.filter && elem.filter.indexOf("opacity=3D") >=3D =
0 ?
                (parseFloat( elem.filter.match(/opacity=3D([^)]*)/)[1] ) =
/ 100) + '':
                "";
        }

        name =3D name.replace(/-([a-z])/ig, function(all, letter){
            return letter.toUpperCase();
        });

        if ( set )
            elem[ name ] =3D value;

        return elem[ name ];
    },

    trim: function( text ) {
        return (text || "").replace( /^\s+|\s+$/g, "" );
    },

    makeArray: function( array ) {
        var ret =3D [];

        if( array !=3D null ){
            var i =3D array.length;
            //the window, strings and functions also have 'length'
            if( i =3D=3D null || array.split || array.setInterval || =
array.call )
                ret[0] =3D array;
            else
                while( i )
                    ret[--i] =3D array[i];
        }

        return ret;
    },

    inArray: function( elem, array ) {
        for ( var i =3D 0, length =3D array.length; i < length; i++ )
        // Use =3D=3D=3D because on IE, window =3D=3D document
            if ( array[ i ] =3D=3D=3D elem )
                return i;

        return -1;
    },

    merge: function( first, second ) {
        // We have to loop this way because IE & Opera overwrite the =
length
        // expando of getElementsByTagName
        var i =3D 0, elem, pos =3D first.length;
        // Also, we need to make sure that the correct elements are =
being returned
        // (IE returns comment nodes in a '*' query)
        if ( jQuery.browser.msie ) {
            while ( elem =3D second[ i++ ] )
                if ( elem.nodeType !=3D 8 )
                    first[ pos++ ] =3D elem;

        } else
            while ( elem =3D second[ i++ ] )
                first[ pos++ ] =3D elem;

        return first;
    },

    unique: function( array ) {
        var ret =3D [], done =3D {};

        try {

            for ( var i =3D 0, length =3D array.length; i < length; i++ =
) {
                var id =3D jQuery.data( array[ i ] );

                if ( !done[ id ] ) {
                    done[ id ] =3D true;
                    ret.push( array[ i ] );
                }
            }

        } catch( e ) {
            ret =3D array;
        }

        return ret;
    },

    grep: function( elems, callback, inv ) {
        var ret =3D [];

        // Go through the array, only saving the items
        // that pass the validator function
        for ( var i =3D 0, length =3D elems.length; i < length; i++ )
            if ( !inv !=3D !callback( elems[ i ], i ) )
                ret.push( elems[ i ] );

        return ret;
    },

    map: function( elems, callback ) {
        var ret =3D [];

        // Go through the array, translating each of the items to their
        // new value (or values).
        for ( var i =3D 0, length =3D elems.length; i < length; i++ ) {
            var value =3D callback( elems[ i ], i );

            if ( value !=3D null )
                ret[ ret.length ] =3D value;
        }

        return ret.concat.apply( [], ret );
    }
});

var userAgent =3D navigator.userAgent.toLowerCase();

// Figure out what browser is being used
jQuery.browser =3D {
    version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || =
[])[1],
    safari: /webkit/.test( userAgent ),
    opera: /opera/.test( userAgent ),
    msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
    mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( =
userAgent )
};

var styleFloat =3D jQuery.browser.msie ?
    "styleFloat" :
    "cssFloat";

jQuery.extend({
    // Check to see if the W3C box model is being used
    boxModel: !jQuery.browser.msie || document.compatMode =3D=3D =
"CSS1Compat",

    props: {
        "for": "htmlFor",
        "class": "className",
        "float": styleFloat,
        cssFloat: styleFloat,
        styleFloat: styleFloat,
        readonly: "readOnly",
        maxlength: "maxLength",
        cellspacing: "cellSpacing"
    }
});

jQuery.each({
    parent: function(elem){return elem.parentNode;},
    parents: function(elem){return jQuery.dir(elem,"parentNode");},
    next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
    prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
    nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
    prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
    siblings: function(elem){return =
jQuery.sibling(elem.parentNode.firstChild,elem);},
    children: function(elem){return jQuery.sibling(elem.firstChild);},
    contents: function(elem){return =
jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.d=
ocument:jQuery.makeArray(elem.childNodes);}
}, function(name, fn){
    jQuery.fn[ name ] =3D function( selector ) {
        var ret =3D jQuery.map( this, fn );

        if ( selector && typeof selector =3D=3D "string" )
            ret =3D jQuery.multiFilter( selector, ret );

        return this.pushStack( jQuery.unique( ret ) );
    };
});

jQuery.each({
    appendTo: "append",
    prependTo: "prepend",
    insertBefore: "before",
    insertAfter: "after",
    replaceAll: "replaceWith"
}, function(name, original){
    jQuery.fn[ name ] =3D function() {
        var args =3D arguments;

        return this.each(function(){
            for ( var i =3D 0, length =3D args.length; i < length; i++ )
                jQuery( args[ i ] )[ original ]( this );
        });
    };
});

jQuery.each({
    removeAttr: function( name ) {
        jQuery.attr( this, name, "" );
        if (this.nodeType =3D=3D 1)
            this.removeAttribute( name );
    },

    addClass: function( classNames ) {
        jQuery.className.add( this, classNames );
    },

    removeClass: function( classNames ) {
        jQuery.className.remove( this, classNames );
    },

    toggleClass: function( classNames ) {
        jQuery.className[ jQuery.className.has( this, classNames ) ? =
"remove" : "add" ]( this, classNames );
    },

    remove: function( selector ) {
        if ( !selector || jQuery.filter( selector, [ this ] ).r.length ) =
{
            // Prevent memory leaks
            jQuery( "*", this ).add(this).each(function(){
                jQuery.event.remove(this);
                jQuery.removeData(this);
            });
            if (this.parentNode)
                this.parentNode.removeChild( this );
        }
    },

    empty: function() {
        // Remove element nodes and prevent memory leaks
        jQuery( ">*", this ).remove();

        // Remove any remaining nodes
        while ( this.firstChild )
            this.removeChild( this.firstChild );
    }
}, function(name, fn){
    jQuery.fn[ name ] =3D function(){
        return this.each( fn, arguments );
    };
});

jQuery.each([ "Height", "Width" ], function(i, name){
    var type =3D name.toLowerCase();

    jQuery.fn[ type ] =3D function( size ) {
        // Get window width or height
        return this[0] =3D=3D window ?
            // Opera reports document.body.client[Width/Height] properly =
in both quirks and standards
            jQuery.browser.opera && document.body[ "client" + name ] ||

            // Safari reports inner[Width/Height] just fine (Mozilla and =
Opera include scroll bar widths)
            jQuery.browser.safari && window[ "inner" + name ] ||

            // Everyone else use document.documentElement or =
document.body depending on Quirks vs Standards mode
            document.compatMode =3D=3D "CSS1Compat" && =
document.documentElement[ "client" + name ] || document.body[ "client" + =
name ] :

            // Get document width or height
            this[0] =3D=3D document ?
                // Either scroll[Width/Height] or offset[Width/Height], =
whichever is greater
                Math.max(
                    Math.max(document.body["scroll" + name], =
document.documentElement["scroll" + name]),
                    Math.max(document.body["offset" + name], =
document.documentElement["offset" + name])
                ) :

                // Get or set width or height on the element
                size =3D=3D undefined ?
                    // Get width or height on the element
                    (this.length ? jQuery.css( this[0], type ) : null) :

                    // Set the width or height on the element (default =
to pixels if value is unitless)
                    this.css( type, size.constructor =3D=3D String ? =
size : size + "px" );
    };
});

// Helper function used by the dimensions and offset modules
function num(elem, prop) {
    return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) =
|| 0;
}var chars =3D jQuery.browser.safari && parseInt(jQuery.browser.version) =
< 417 ?
        "(?:[\\w*_-]|\\\\.)" :
        "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",
    quickChild =3D new RegExp("^>\\s*(" + chars + "+)"),
    quickID =3D new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),
    quickClass =3D new RegExp("^([#.]?)(" + chars + "*)");

jQuery.extend({
    expr: {
        "": function(a,i,m){return =
m[2]=3D=3D"*"||jQuery.nodeName(a,m[2]);},
        "#": function(a,i,m){return a.getAttribute("id")=3D=3Dm[2];},
        ":": {
            // Position Checks
            lt: function(a,i,m){return i<m[3]-0;},
            gt: function(a,i,m){return i>m[3]-0;},
            nth: function(a,i,m){return m[3]-0=3D=3Di;},
            eq: function(a,i,m){return m[3]-0=3D=3Di;},
            first: function(a,i){return i=3D=3D0;},
            last: function(a,i,m,r){return i=3D=3Dr.length-1;},
            even: function(a,i){return i%2=3D=3D0;},
            odd: function(a,i){return i%2;},

            // Child Checks
            "first-child": function(a){return =
a.parentNode.getElementsByTagName("*")[0]=3D=3Da;},
            "last-child": function(a){return =
jQuery.nth(a.parentNode.lastChild,1,"previousSibling")=3D=3Da;},
            "only-child": function(a){return =
!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},

            // Parent Checks
            parent: function(a){return a.firstChild;},
            empty: function(a){return !a.firstChild;},

            // Text Check
            contains: function(a,i,m){return =
(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=3D0;},

            // Visibility
            visible: function(a){return =
"hidden"!=3Da.type&&jQuery.css(a,"display")!=3D"none"&&jQuery.css(a,"visi=
bility")!=3D"hidden";},
            hidden: function(a){return =
"hidden"=3D=3Da.type||jQuery.css(a,"display")=3D=3D"none"||jQuery.css(a,"=
visibility")=3D=3D"hidden";},

            // Form attributes
            enabled: function(a){return !a.disabled;},
            disabled: function(a){return a.disabled;},
            checked: function(a){return a.checked;},
            selected: function(a){return =
a.selected||jQuery.attr(a,"selected");},

            // Form elements
            text: function(a){return "text"=3D=3Da.type;},
            radio: function(a){return "radio"=3D=3Da.type;},
            checkbox: function(a){return "checkbox"=3D=3Da.type;},
            file: function(a){return "file"=3D=3Da.type;},
            password: function(a){return "password"=3D=3Da.type;},
            submit: function(a){return "submit"=3D=3Da.type;},
            image: function(a){return "image"=3D=3Da.type;},
            reset: function(a){return "reset"=3D=3Da.type;},
            button: function(a){return =
"button"=3D=3Da.type||jQuery.nodeName(a,"button");},
            input: function(a){return =
/input|select|textarea|button/i.test(a.nodeName);},

            // :has()
            has: function(a,i,m){return jQuery.find(m[3],a).length;},

            // :header
            header: function(a){return /h\d/i.test(a.nodeName);},

            // :animated
            animated: function(a){return =
jQuery.grep(jQuery.timers,function(fn){return a=3D=3Dfn.elem;}).length;}
        }
    },

    // The regular expressions that power the parsing engine
    parse: [
        // Match: [@value=3D'test'], [@foo]
        /^(\[) *@?([\w-]+) *([!*$^~=3D]*) *('?"?)(.*?)\4 *\]/,

        // Match: :contains('foo')
        /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,

        // Match: :even, :last-child, #id, .class
        new RegExp("^([:.#]*)(" + chars + "+)")
    ],

    multiFilter: function( expr, elems, not ) {
        var old, cur =3D [];

        while ( expr && expr !=3D old ) {
            old =3D expr;
            var f =3D jQuery.filter( expr, elems, not );
            expr =3D f.t.replace(/^\s*,\s*/, "" );
            cur =3D not ? elems =3D f.r : jQuery.merge( cur, f.r );
        }

        return cur;
    },

    find: function( t, context ) {
        // Quickly handle non-string expressions
        if ( typeof t !=3D "string" )
            return [ t ];

        // check to make sure context is a DOM element or a document
        if ( context && context.nodeType !=3D 1 && context.nodeType !=3D =
9)
            return [ ];

        // Set the correct context (if none is provided)
        context =3D context || document;

        // Initialize the search
        var ret =3D [context], done =3D [], last, nodeName;

        // Continue while a selector expression exists, and while
        // we're no longer looping upon ourselves
        while ( t && last !=3D t ) {
            var r =3D [];
            last =3D t;

            t =3D jQuery.trim(t);

            var foundToken =3D false,

            // An attempt at speeding up child selectors that
            // point to a specific element tag
                re =3D quickChild,

                m =3D re.exec(t);

            if ( m ) {
                nodeName =3D m[1].toUpperCase();

                // Perform our own iteration and filter
                for ( var i =3D 0; ret[i]; i++ )
                    for ( var c =3D ret[i].firstChild; c; c =3D =
c.nextSibling )
                        if ( c.nodeType =3D=3D 1 && (nodeName =3D=3D "*" =
|| c.nodeName.toUpperCase() =3D=3D nodeName) )
                            r.push( c );

                ret =3D r;
                t =3D t.replace( re, "" );
                if ( t.indexOf(" ") =3D=3D 0 ) continue;
                foundToken =3D true;
            } else {
                re =3D /^([>+~])\s*(\w*)/i;

                if ( (m =3D re.exec(t)) !=3D null ) {
                    r =3D [];

                    var merge =3D {};
                    nodeName =3D m[2].toUpperCase();
                    m =3D m[1];

                    for ( var j =3D 0, rl =3D ret.length; j < rl; j++ ) =
{
                        var n =3D m =3D=3D "~" || m =3D=3D "+" ? =
ret[j].nextSibling : ret[j].firstChild;
                        for ( ; n; n =3D n.nextSibling )
                            if ( n.nodeType =3D=3D 1 ) {
                                var id =3D jQuery.data(n);

                                if ( m =3D=3D "~" && merge[id] ) break;

                                if (!nodeName || =
n.nodeName.toUpperCase() =3D=3D nodeName ) {
                                    if ( m =3D=3D "~" ) merge[id] =3D =
true;
                                    r.push( n );
                                }

                                if ( m =3D=3D "+" ) break;
                            }
                    }

                    ret =3D r;

                    // And remove the token
                    t =3D jQuery.trim( t.replace( re, "" ) );
                    foundToken =3D true;
                }
            }

            // See if there's still an expression, and that we haven't =
already
            // matched a token
            if ( t && !foundToken ) {
                // Handle multiple expressions
                if ( !t.indexOf(",") ) {
                    // Clean the result set
                    if ( context =3D=3D ret[0] ) ret.shift();

                    // Merge the result sets
                    done =3D jQuery.merge( done, ret );

                    // Reset the context
                    r =3D ret =3D [context];

                    // Touch up the selector string
                    t =3D " " + t.substr(1,t.length);

                } else {
                    // Optimize for the case nodeName#idName
                    var re2 =3D quickID;
                    var m =3D re2.exec(t);

                    // Re-organize the results, so that they're =
consistent
                    if ( m ) {
                        m =3D [ 0, m[2], m[3], m[1] ];

                    } else {
                        // Otherwise, do a traditional filter check for
                        // ID, class, and element selectors
                        re2 =3D quickClass;
                        m =3D re2.exec(t);
                    }

                    m[2] =3D m[2].replace(/\\/g, "");

                    var elem =3D ret[ret.length-1];

                    // Try to do a global search by ID, where we can
                    if ( m[1] =3D=3D "#" && elem && elem.getElementById =
&& !jQuery.isXMLDoc(elem) ) {
                        // Optimization for HTML document case
                        var oid =3D elem.getElementById(m[2]);

                        // Do a quick check for the existence of the =
actual ID attribute
                        // to avoid selecting by the name attribute in =
IE
                        // also check to insure id is a string to avoid =
selecting an element with the name of 'id' inside a form
                        if ( (jQuery.browser.msie||jQuery.browser.opera) =
&& oid && typeof oid.id =3D=3D "string" && oid.id !=3D m[2] )
                            oid =3D jQuery('[@id=3D"'+m[2]+'"]', =
elem)[0];

                        // Do a quick check for node name (where =
applicable) so
                        // that div#foo searches will be really fast
                        ret =3D r =3D oid && (!m[3] || =
jQuery.nodeName(oid, m[3])) ? [oid] : [];
                    } else {
                        // We need to find all descendant elements
                        for ( var i =3D 0; ret[i]; i++ ) {
                            // Grab the tag name being searched for
                            var tag =3D m[1] =3D=3D "#" && m[3] ? m[3] : =
m[1] !=3D "" || m[0] =3D=3D "" ? "*" : m[2];

                            // Handle IE7 being really dumb about =
<object>s
                            if ( tag =3D=3D "*" && =
ret[i].nodeName.toLowerCase() =3D=3D "object" )
                                tag =3D "param";

                            r =3D jQuery.merge( r, =
ret[i].getElementsByTagName( tag ));
                        }

                        // It's faster to filter by class and be done =
with it
                        if ( m[1] =3D=3D "." )
                            r =3D jQuery.classFilter( r, m[2] );

                        // Same with ID filtering
                        if ( m[1] =3D=3D "#" ) {
                            var tmp =3D [];

                            // Try to find the element with the ID
                            for ( var i =3D 0; r[i]; i++ )
                                if ( r[i].getAttribute("id") =3D=3D m[2] =
) {
                                    tmp =3D [ r[i] ];
                                    break;
                                }

                            r =3D tmp;
                        }

                        ret =3D r;
                    }

                    t =3D t.replace( re2, "" );
                }

            }

            // If a selector string still exists
            if ( t ) {
                // Attempt to filter it
                var val =3D jQuery.filter(t,r);
                ret =3D r =3D val.r;
                t =3D jQuery.trim(val.t);
            }
        }

        // An error occurred with the selector;
        // just return an empty set instead
        if ( t )
            ret =3D [];

        // Remove the root context
        if ( ret && context =3D=3D ret[0] )
            ret.shift();

        // And combine the results
        done =3D jQuery.merge( done, ret );

        return done;
    },

    classFilter: function(r,m,not){
        m =3D " " + m + " ";
        var tmp =3D [];
        for ( var i =3D 0; r[i]; i++ ) {
            var pass =3D (" " + r[i].className + " ").indexOf( m ) >=3D =
0;
            if ( !not && pass || not && !pass )
                tmp.push( r[i] );
        }
        return tmp;
    },

    filter: function(t,r,not) {
        var last;

        // Look for common filter expressions
        while ( t && t !=3D last ) {
            last =3D t;

            var p =3D jQuery.parse, m;

            for ( var i =3D 0; p[i]; i++ ) {
                m =3D p[i].exec( t );

                if ( m ) {
                    // Remove what we just matched
                    t =3D t.substring( m[0].length );

                    m[2] =3D m[2].replace(/\\/g, "");
                    break;
                }
            }

            if ( !m )
                break;

            // :not() is a special case that can be optimized by
            // keeping it out of the expression list
            if ( m[1] =3D=3D ":" && m[2] =3D=3D "not" )
                // optimize if only one selector found (most common =
case)
                r =3D isSimple.test( m[3] ) ?
                    jQuery.filter(m[3], r, true).r :
                    jQuery( r ).not( m[3] );

            // We can get a big speed boost by filtering by class here
            else if ( m[1] =3D=3D "." )
                r =3D jQuery.classFilter(r, m[2], not);

            else if ( m[1] =3D=3D "[" ) {
                var tmp =3D [], type =3D m[3];

                for ( var i =3D 0, rl =3D r.length; i < rl; i++ ) {
                    var a =3D r[i], z =3D a[ jQuery.props[m[2]] || m[2] =
];

                    if ( z =3D=3D null || /href|src|selected/.test(m[2]) =
)
                        z =3D jQuery.attr(a,m[2]) || '';

                    if ( (type =3D=3D "" && !!z ||
                         type =3D=3D "=3D" && z =3D=3D m[5] ||
                         type =3D=3D "!=3D" && z !=3D m[5] ||
                         type =3D=3D "^=3D" && z && !z.indexOf(m[5]) ||
                         type =3D=3D "$=3D" && z.substr(z.length - =
m[5].length) =3D=3D m[5] ||
                         (type =3D=3D "*=3D" || type =3D=3D "~=3D") && =
z.indexOf(m[5]) >=3D 0) ^ not )
                            tmp.push( a );
                }

                r =3D tmp;

            // We can get a speed boost by handling nth-child here
            } else if ( m[1] =3D=3D ":" && m[2] =3D=3D "nth-child" ) {
                var merge =3D {}, tmp =3D [],
                    // parse equations like 'even', 'odd', '5', '2n', =
'3n+2', '4n-1', '-n+6'
                    test =3D /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                        m[3] =3D=3D "even" && "2n" || m[3] =3D=3D "odd" =
&& "2n+1" ||
                        !/\D/.test(m[3]) && "0n+" + m[3] || m[3]),
                    // calculate the numbers (first)n+(last) including =
if they are negative
                    first =3D (test[1] + (test[2] || 1)) - 0, last =3D =
test[3] - 0;

                // loop through all the elements left in the jQuery =
object
                for ( var i =3D 0, rl =3D r.length; i < rl; i++ ) {
                    var node =3D r[i], parentNode =3D node.parentNode, =
id =3D jQuery.data(parentNode);

                    if ( !merge[id] ) {
                        var c =3D 1;

                        for ( var n =3D parentNode.firstChild; n; n =3D =
n.nextSibling )
                            if ( n.nodeType =3D=3D 1 )
                                n.nodeIndex =3D c++;

                        merge[id] =3D true;
                    }

                    var add =3D false;

                    if ( first =3D=3D 0 ) {
                        if ( node.nodeIndex =3D=3D last )
                            add =3D true;
                    } else if ( (node.nodeIndex - last) % first =3D=3D 0 =
&& (node.nodeIndex - last) / first >=3D 0 )
                        add =3D true;

                    if ( add ^ not )
                        tmp.push( node );
                }

                r =3D tmp;

            // Otherwise, find the expression to execute
            } else {
                var fn =3D jQuery.expr[ m[1] ];
                if ( typeof fn =3D=3D "object" )
                    fn =3D fn[ m[2] ];

                if ( typeof fn =3D=3D "string" )
                    fn =3D eval("false||function(a,i){return " + fn + =
";}");

                // Execute it against the current filter
                r =3D jQuery.grep( r, function(elem, i){
                    return fn(elem, i, m, r);
                }, not );
            }
        }

        // Return an array of filtered elements (r)
        // and the modified expression string (t)
        return { r: r, t: t };
    },

    dir: function( elem, dir ){
        var matched =3D [],
            cur =3D elem[dir];
        while ( cur && cur !=3D document ) {
            if ( cur.nodeType =3D=3D 1 )
                matched.push( cur );
            cur =3D cur[dir];
        }
        return matched;
    },

    nth: function(cur,result,dir,elem){
        result =3D result || 1;
        var num =3D 0;

        for ( ; cur; cur =3D cur[dir] )
            if ( cur.nodeType =3D=3D 1 && ++num =3D=3D result )
                break;

        return cur;
    },

    sibling: function( n, elem ) {
        var r =3D [];

        for ( ; n; n =3D n.nextSibling ) {
            if ( n.nodeType =3D=3D 1 && n !=3D elem )
                r.push( n );
        }

        return r;
    }
});
/*
 * A number of helper functions used for managing events.
 * Many of the ideas behind this code orignated from
 * Dean Edwards' addEvent library.
 */
jQuery.event =3D {

    // Bind an event to an element
    // Original by Dean Edwards
    add: function(elem, types, handler, data) {
        if ( elem.nodeType =3D=3D 3 || elem.nodeType =3D=3D 8 )
            return;

        // For whatever reason, IE has trouble passing the window object
        // around, causing it to be cloned in the process
        if ( jQuery.browser.msie && elem.setInterval )
            elem =3D window;

        // Make sure that the function being executed has a unique ID
        if ( !handler.guid )
            handler.guid =3D this.guid++;

        // if data is passed, bind to handler
        if( data !=3D undefined ) {
            // Create temporary function pointer to original handler
            var fn =3D handler;

            // Create unique handler function, wrapped around original =
handler
            handler =3D this.proxy( fn, function() {
                // Pass arguments and context to original handler
                return fn.apply(this, arguments);
            });

            // Store data in unique handler
            handler.data =3D data;
        }

        // Init the element's event structure
        var events =3D jQuery.data(elem, "events") || jQuery.data(elem, =
"events", {}),
            handle =3D jQuery.data(elem, "handle") || jQuery.data(elem, =
"handle", function(){
                // Handle the second event of a trigger and when
                // an event is called after a page has unloaded
                if ( typeof jQuery !=3D "undefined" && =
!jQuery.event.triggered )
                    return =
jQuery.event.handle.apply(arguments.callee.elem, arguments);
            });
        // Add elem as a property of the handle function
        // This is to prevent a memory leak with non-native
        // event in IE.
        handle.elem =3D elem;

        // Handle multiple events separated by a space
        // jQuery(...).bind("mouseover mouseout", fn);
        jQuery.each(types.split(/\s+/), function(index, type) {
            // Namespaced event handlers
            var parts =3D type.split(".");
            type =3D parts[0];
            handler.type =3D parts[1];

            // Get the current list of functions bound to this event
            var handlers =3D events[type];

            // Init the event handler queue
            if (!handlers) {
                handlers =3D events[type] =3D {};

                // Check for a special event handler
                // Only use addEventListener/attachEvent if the special
                // events handler returns false
                if ( !jQuery.event.special[type] || =
jQuery.event.special[type].setup.call(elem) =3D=3D=3D false ) {
                    // Bind the global event handler to the element
                    if (elem.addEventListener)
                        elem.addEventListener(type, handle, false);
                    else if (elem.attachEvent)
                        elem.attachEvent("on" + type, handle);
                }
            }

            // Add the function to the element's handler list
            handlers[handler.guid] =3D handler;

            // Keep track of which events have been used, for global =
triggering
            jQuery.event.global[type] =3D true;
        });

        // Nullify elem to prevent memory leaks in IE
        elem =3D null;
    },

    guid: 1,
    global: {},

    // Detach an event or set of events from an element
    remove: function(elem, types, handler) {
        // don't do events on text and comment nodes
        if ( elem.nodeType =3D=3D 3 || elem.nodeType =3D=3D 8 )
            return;

        var events =3D jQuery.data(elem, "events"), ret, index;

        if ( events ) {
            // Unbind all events for the element
            if ( types =3D=3D undefined || (typeof types =3D=3D "string" =
&& types.charAt(0) =3D=3D ".") )
                for ( var type in events )
                    this.remove( elem, type + (types || "") );
            else {
                // types is actually an event object here
                if ( types.type ) {
                    handler =3D types.handler;
                    types =3D types.type;
                }

                // Handle multiple events seperated by a space
                // jQuery(...).unbind("mouseover mouseout", fn);
                jQuery.each(types.split(/\s+/), function(index, type){
                    // Namespaced event handlers
                    var parts =3D type.split(".");
                    type =3D parts[0];

                    if ( events[type] ) {
                        // remove the given handler for the given type
                        if ( handler )
                            delete events[type][handler.guid];

                        // remove all handlers for the given type
                        else
                            for ( handler in events[type] )
                                // Handle the removal of namespaced =
events
                                if ( !parts[1] || =
events[type][handler].type =3D=3D parts[1] )
                                    delete events[type][handler];

                        // remove generic event handler if no more =
handlers exist
                        for ( ret in events[type] ) break;
                        if ( !ret ) {
                            if ( !jQuery.event.special[type] || =
jQuery.event.special[type].teardown.call(elem) =3D=3D=3D false ) {
                                if (elem.removeEventListener)
                                    elem.removeEventListener(type, =
jQuery.data(elem, "handle"), false);
                                else if (elem.detachEvent)
                                    elem.detachEvent("on" + type, =
jQuery.data(elem, "handle"));
                            }
                            ret =3D null;
                            delete events[type];
                        }
                    }
                });
            }

            // Remove the expando if it's no longer used
            for ( ret in events ) break;
            if ( !ret ) {
                var handle =3D jQuery.data( elem, "handle" );
                if ( handle ) handle.elem =3D null;
                jQuery.removeData( elem, "events" );
                jQuery.removeData( elem, "handle" );
            }
        }
    },

    trigger: function(type, data, elem, donative, extra) {
        // Clone the incoming data, if any
        data =3D jQuery.makeArray(data);

        if ( type.indexOf("!") >=3D 0 ) {
            type =3D type.slice(0, -1);
            var exclusive =3D true;
        }

        // Handle a global trigger
        if ( !elem ) {
            // Only trigger if we've ever bound an event for it
            if ( this.global[type] )
                jQuery("*").add([window, document]).trigger(type, data);

        // Handle triggering a single element
        } else {
            // don't do events on text and comment nodes
            if ( elem.nodeType =3D=3D 3 || elem.nodeType =3D=3D 8 )
                return undefined;

            var val, ret, fn =3D jQuery.isFunction( elem[ type ] || null =
),
                // Check to see if we need to provide a fake event, or =
not
                event =3D !data[0] || !data[0].preventDefault;

            // Pass along a fake event
            if ( event ) {
                data.unshift({
                    type: type,
                    target: elem,
                    preventDefault: function(){},
                    stopPropagation: function(){},
                    timeStamp: now()
                });
                data[0][expando] =3D true; // no need to fix fake event
            }

            // Enforce the right trigger type
            data[0].type =3D type;
            if ( exclusive )
                data[0].exclusive =3D true;

            // Trigger the event, it is assumed that "handle" is a =
function
            var handle =3D jQuery.data(elem, "handle");
            if ( handle )
                val =3D handle.apply( elem, data );

            // Handle triggering native .onfoo handlers (and on links =
since we don't call .click() for links)
            if ( (!fn || (jQuery.nodeName(elem, 'a') && type =3D=3D =
"click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) =
=3D=3D=3D false )
                val =3D false;

            // Extra functions don't get the custom event object
            if ( event )
                data.shift();

            // Handle triggering of extra function
            if ( extra && jQuery.isFunction( extra ) ) {
                // call the extra function and tack the current return =
value on the end for possible inspection
                ret =3D extra.apply( elem, val =3D=3D null ? data : =
data.concat( val ) );
                // if anything is returned, give it precedence and have =
it overwrite the previous value
                if (ret !=3D=3D undefined)
                    val =3D ret;
            }

            // Trigger the native events (except for clicks on links)
            if ( fn && donative !=3D=3D false && val !=3D=3D false && =
!(jQuery.nodeName(elem, 'a') && type =3D=3D "click") ) {
                this.triggered =3D true;
                try {
                    elem[ type ]();
                // prevent IE from throwing an error for some hidden =
elements
                } catch (e) {}
            }

            this.triggered =3D false;
        }

        return val;
    },

    handle: function(event) {
        // returned undefined or false
        var val, ret, namespace, all, handlers;

        event =3D arguments[0] =3D jQuery.event.fix( event || =
window.event );

        // Namespaced event handlers
        namespace =3D event.type.split(".");
        event.type =3D namespace[0];
        namespace =3D namespace[1];
        // Cache this now, all =3D true means, any handler
        all =3D !namespace && !event.exclusive;

        handlers =3D ( jQuery.data(this, "events") || {} )[event.type];

        for ( var j in handlers ) {
            var handler =3D handlers[j];

            // Filter the functions by class
            if ( all || handler.type =3D=3D namespace ) {
                // Pass in a reference to the handler function itself
                // So that we can later remove it
                event.handler =3D handler;
                event.data =3D handler.data;

                ret =3D handler.apply( this, arguments );

                if ( val !=3D=3D false )
                    val =3D ret;

                if ( ret =3D=3D=3D false ) {
                    event.preventDefault();
                    event.stopPropagation();
                }
            }
        }

        return val;
    },

    fix: function(event) {
        if ( event[expando] =3D=3D true )
            return event;

        // store a copy of the original event object
        // and "clone" to set read-only properties
        var originalEvent =3D event;
        event =3D { originalEvent: originalEvent };
        var props =3D "altKey attrChange attrName bubbles button =
cancelable charCode clientX clientY ctrlKey currentTarget data detail =
eventPhase fromElement handler keyCode metaKey newValue originalTarget =
pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey =
srcElement target timeStamp toElement type view wheelDelta =
which".split(" ");
        for ( var i=3Dprops.length; i; i-- )
            event[ props[i] ] =3D originalEvent[ props[i] ];

        // Mark it as fixed
        event[expando] =3D true;

        // add preventDefault and stopPropagation since
        // they will not work on the clone
        event.preventDefault =3D function() {
            // if preventDefault exists run it on the original event
            if (originalEvent.preventDefault)
                originalEvent.preventDefault();
            // otherwise set the returnValue property of the original =
event to false (IE)
            originalEvent.returnValue =3D false;
        };
        event.stopPropagation =3D function() {
            // if stopPropagation exists run it on the original event
            if (originalEvent.stopPropagation)
                originalEvent.stopPropagation();
            // otherwise set the cancelBubble property of the original =
event to true (IE)
            originalEvent.cancelBubble =3D true;
        };

        // Fix timeStamp
        event.timeStamp =3D event.timeStamp || now();

        // Fix target property, if necessary
        if ( !event.target )
            event.target =3D event.srcElement || document; // Fixes =
#1925 where srcElement might not be defined either

        // check if target is a textnode (safari)
        if ( event.target.nodeType =3D=3D 3 )
            event.target =3D event.target.parentNode;

        // Add relatedTarget, if necessary
        if ( !event.relatedTarget && event.fromElement )
            event.relatedTarget =3D event.fromElement =3D=3D =
event.target ? event.toElement : event.fromElement;

        // Calculate pageX/Y if missing and clientX/Y available
        if ( event.pageX =3D=3D null && event.clientX !=3D null ) {
            var doc =3D document.documentElement, body =3D =
document.body;
            event.pageX =3D event.clientX + (doc && doc.scrollLeft || =
body && body.scrollLeft || 0) - (doc.clientLeft || 0);
            event.pageY =3D event.clientY + (doc && doc.scrollTop || =
body && body.scrollTop || 0) - (doc.clientTop || 0);
        }

        // Add which for key events
        if ( !event.which && ((event.charCode || event.charCode =
=3D=3D=3D 0) ? event.charCode : event.keyCode) )
            event.which =3D event.charCode || event.keyCode;

        // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta =
for Macs)
        if ( !event.metaKey && event.ctrlKey )
            event.metaKey =3D event.ctrlKey;

        // Add which for click: 1 =3D=3D left; 2 =3D=3D middle; 3 =3D=3D =
right
        // Note: button is not normalized, so don't use it
        if ( !event.which && event.button )
            event.which =3D (event.button & 1 ? 1 : ( event.button & 2 ? =
3 : ( event.button & 4 ? 2 : 0 ) ));

        return event;
    },

    proxy: function( fn, proxy ){
        // Set the guid of unique handler to the same of original =
handler, so it can be removed
        proxy.guid =3D fn.guid =3D fn.guid || proxy.guid || this.guid++;
        // So proxy can be declared as an argument
        return proxy;
    },

    special: {
        ready: {
            setup: function() {
                // Make sure the ready event is setup
                bindReady();
                return;
            },

            teardown: function() { return; }
        },

        mouseenter: {
            setup: function() {
                if ( jQuery.browser.msie ) return false;
                jQuery(this).bind("mouseover", =
jQuery.event.special.mouseenter.handler);
                return true;
            },

            teardown: function() {
                if ( jQuery.browser.msie ) return false;
                jQuery(this).unbind("mouseover", =
jQuery.event.special.mouseenter.handler);
                return true;
            },

            handler: function(event) {
                // If we actually just moused on to a sub-element, =
ignore it
                if ( withinElement(event, this) ) return true;
                // Execute the right handlers by setting the event type =
to mouseenter
                event.type =3D "mouseenter";
                return jQuery.event.handle.apply(this, arguments);
            }
        },

        mouseleave: {
            setup: function() {
                if ( jQuery.browser.msie ) return false;
                jQuery(this).bind("mouseout", =
jQuery.event.special.mouseleave.handler);
                return true;
            },

            teardown: function() {
                if ( jQuery.browser.msie ) return false;
                jQuery(this).unbind("mouseout", =
jQuery.event.special.mouseleave.handler);
                return true;
            },

            handler: function(event) {
                // If we actually just moused on to a sub-element, =
ignore it
                if ( withinElement(event, this) ) return true;
                // Execute the right handlers by setting the event type =
to mouseleave
                event.type =3D "mouseleave";
                return jQuery.event.handle.apply(this, arguments);
            }
        }
    }
};

jQuery.fn.extend({
    bind: function( type, data, fn ) {
        return type =3D=3D "unload" ? this.one(type, data, fn) : =
this.each(function(){
            jQuery.event.add( this, type, fn || data, fn && data );
        });
    },

    one: function( type, data, fn ) {
        var one =3D jQuery.event.proxy( fn || data, function(event) {
            jQuery(this).unbind(event, one);
            return (fn || data).apply( this, arguments );
        });
        return this.each(function(){
            jQuery.event.add( this, type, one, fn && data);
        });
    },

    unbind: function( type, fn ) {
        return this.each(function(){
            jQuery.event.remove( this, type, fn );
        });
    },

    trigger: function( type, data, fn ) {
        return this.each(function(){
            jQuery.event.trigger( type, data, this, true, fn );
        });
    },

    triggerHandler: function( type, data, fn ) {
        return this[0] && jQuery.event.trigger( type, data, this[0], =
false, fn );
    },

    toggle: function( fn ) {
        // Save reference to arguments for access in closure
        var args =3D arguments, i =3D 1;

        // link all the functions, so any of them can unbind this click =
handler
        while( i < args.length )
            jQuery.event.proxy( fn, args[i++] );

        return this.click( jQuery.event.proxy( fn, function(event) {
            // Figure out which function to execute
            this.lastToggle =3D ( this.lastToggle || 0 ) % i;

            // Make sure that clicks stop
            event.preventDefault();

            // and execute the function
            return args[ this.lastToggle++ ].apply( this, arguments ) || =
false;
        }));
    },

    hover: function(fnOver, fnOut) {
        return this.bind('mouseenter', fnOver).bind('mouseleave', =
fnOut);
    },

    ready: function(fn) {
        // Attach the listeners
        bindReady();

        // If the DOM is already ready
        if ( jQuery.isReady )
            // Execute the function immediately
            fn.call( document, jQuery );

        // Otherwise, remember the function for later
        else
            // Add the function to the wait list
            jQuery.readyList.push( function() { return fn.call(this, =
jQuery); } );

        return this;
    }
});

jQuery.extend({
    isReady: false,
    readyList: [],
    // Handle when the DOM is ready
    ready: function() {
        // Make sure that the DOM is not already loaded
        if ( !jQuery.isReady ) {
            // Remember that the DOM is ready
            jQuery.isReady =3D true;

            // If there are functions bound, to execute
            if ( jQuery.readyList ) {
                // Execute all of them
                jQuery.each( jQuery.readyList, function(){
                    this.call( document );
                });

                // Reset the list of functions
                jQuery.readyList =3D null;
            }

            // Trigger any bound ready events
            jQuery(document).triggerHandler("ready");
        }
    }
});

var readyBound =3D false;

function bindReady(){
    if ( readyBound ) return;
    readyBound =3D true;

    // Mozilla, Opera (see further below for it) and webkit nightlies =
currently support this event
    if ( document.addEventListener && !jQuery.browser.opera)
        // Use the handy event callback
        document.addEventListener( "DOMContentLoaded", jQuery.ready, =
false );

    // If IE is used and is not in a frame
    // Continually check to see if the document is ready
    if ( jQuery.browser.msie && window =3D=3D top ) (function(){
        if (jQuery.isReady) return;
        try {
            // If IE is used, use the trick by Diego Perini
            // http://javascript.nwbox.com/IEContentLoaded/
            document.documentElement.doScroll("left");
        } catch( error ) {
            setTimeout( arguments.callee, 0 );
            return;
        }
        // and execute any waiting functions
        jQuery.ready();
    })();

    if ( jQuery.browser.opera )
        document.addEventListener( "DOMContentLoaded", function () {
            if (jQuery.isReady) return;
            for (var i =3D 0; i < document.styleSheets.length; i++)
                if (document.styleSheets[i].disabled) {
                    setTimeout( arguments.callee, 0 );
                    return;
                }
            // and execute any waiting functions
            jQuery.ready();
        }, false);

    if ( jQuery.browser.safari ) {
        var numStyles;
        (function(){
            if (jQuery.isReady) return;
            if ( document.readyState !=3D "loaded" && =
document.readyState !=3D "complete" ) {
                setTimeout( arguments.callee, 0 );
                return;
            }
            if ( numStyles =3D=3D=3D undefined )
                numStyles =3D jQuery("style, =
link[rel=3Dstylesheet]").length;
            if ( document.styleSheets.length !=3D numStyles ) {
                setTimeout( arguments.callee, 0 );
                return;
            }
            // and execute any waiting functions
            jQuery.ready();
        })();
    }

    // A fallback to window.onload, that will always work
    jQuery.event.add( window, "load", jQuery.ready );
}

jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
    "mousedown,mouseup,mousemove,mouseover,mouseout,change,select," +
    "submit,keydown,keypress,keyup,error").split(","), function(i, =
name){

    // Handle event binding
    jQuery.fn[name] =3D function(fn){
        return fn ? this.bind(name, fn) : this.trigger(name);
    };
});

// Checks if an event happened on an element within another element
// Used in jQuery.event.special.mouseenter and mouseleave handlers
var withinElement =3D function(event, elem) {
    // Check if mouse(over|out) are still within the same parent element
    var parent =3D event.relatedTarget;
    // Traverse up the tree
    while ( parent && parent !=3D elem ) try { parent =3D =
parent.parentNode; } catch(error) { parent =3D elem; }
    // Return true if we actually just moused on to a sub-element
    return parent =3D=3D elem;
};

// Prevent memory leaks in IE
// And prevent errors on refresh with events like mouseover in other =
browsers
// Window isn't included so as not to unbind existing unload events
jQuery(window).bind("unload", function() {
    jQuery("*").add(document).unbind();
});
jQuery.fn.extend({
    // Keep a copy of the old load
    _load: jQuery.fn.load,

    load: function( url, params, callback ) {
        if ( typeof url !=3D 'string' )
            return this._load( url );

        var off =3D url.indexOf(" ");
        if ( off >=3D 0 ) {
            var selector =3D url.slice(off, url.length);
            url =3D url.slice(0, off);
        }

        callback =3D callback || function(){};

        // Default to a GET request
        var type =3D "GET";

        // If the second parameter was provided
        if ( params )
            // If it's a function
            if ( jQuery.isFunction( params ) ) {
                // We assume that it's the callback
                callback =3D params;
                params =3D null;

            // Otherwise, build a param string
            } else {
                params =3D jQuery.param( params );
                type =3D "POST";
            }

        var self =3D this;

        // Request the remote document
        jQuery.ajax({
            url: url,
            type: type,
            dataType: "html",
            data: params,
            complete: function(res, status){
                // If successful, inject the HTML into all the matched =
elements
                if ( status =3D=3D "success" || status =3D=3D =
"notmodified" )
                    // See if a selector was specified
                    self.html( selector ?
                        // Create a dummy div to hold the results
                        jQuery("<div/>")
                            // inject the contents of the document in, =
removing the scripts
                            // to avoid any 'Permission Denied' errors =
in IE
                            =
.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))

                            // Locate the specified elements
                            .find(selector) :

                        // If not, just inject the full result
                        res.responseText );

                self.each( callback, [res.responseText, status, res] );
            }
        });
        return this;
    },

    serialize: function() {
        return jQuery.param(this.serializeArray());
    },
    serializeArray: function() {
        return this.map(function(){
            return jQuery.nodeName(this, "form") ?
                jQuery.makeArray(this.elements) : this;
        })
        .filter(function(){
            return this.name && !this.disabled &&
                (this.checked || /select|textarea/i.test(this.nodeName) =
||
                    /text|hidden|password/i.test(this.type));
        })
        .map(function(i, elem){
            var val =3D jQuery(this).val();
            return val =3D=3D null ? null :
                val.constructor =3D=3D Array ?
                    jQuery.map( val, function(val, i){
                        return {name: elem.name, value: val};
                    }) :
                    {name: elem.name, value: val};
        }).get();
    }
});

// Attach a bunch of functions for handling common AJAX events
jQuery.each( =
"ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(",=
"), function(i,o){
    jQuery.fn[o] =3D function(f){
        return this.bind(o, f);
    };
});

var jsc =3D now();

jQuery.extend({
    get: function( url, data, callback, type ) {
        // shift arguments if data argument was ommited
        if ( jQuery.isFunction( data ) ) {
            callback =3D data;
            data =3D null;
        }

        return jQuery.ajax({
            type: "GET",
            url: url,
            data: data,
            success: callback,
            dataType: type
        });
    },

    getScript: function( url, callback ) {
        return jQuery.get(url, null, callback, "script");
    },

    getJSON: function( url, data, callback ) {
        return jQuery.get(url, data, callback, "json");
    },

    post: function( url, data, callback, type ) {
        if ( jQuery.isFunction( data ) ) {
            callback =3D data;
            data =3D {};
        }

        return jQuery.ajax({
            type: "POST",
            url: url,
            data: data,
            success: callback,
            dataType: type
        });
    },

    ajaxSetup: function( settings ) {
        jQuery.extend( jQuery.ajaxSettings, settings );
    },

    ajaxSettings: {
        url: location.href,
        global: true,
        type: "GET",
        timeout: 0,
        contentType: "application/x-www-form-urlencoded",
        processData: true,
        async: true,
        data: null,
        username: null,
        password: null,
        accepts: {
            xml: "application/xml, text/xml",
            html: "text/html",
            script: "text/javascript, application/javascript",
            json: "application/json, text/javascript",
            text: "text/plain",
            _default: "*/*"
        }
    },

    // Last-Modified header cache for next request
    lastModified: {},

    ajax: function( s ) {
        // Extend the settings, but re-extend 's' so that it can be
        // checked again later (in the test suite, specifically)
        s =3D jQuery.extend(true, s, jQuery.extend(true, {}, =
jQuery.ajaxSettings, s));

        var jsonp, jsre =3D /=3D\?(&|$)/g, status, data,
            type =3D s.type.toUpperCase();

        // convert data if not already a string
        if ( s.data && s.processData && typeof s.data !=3D "string" )
            s.data =3D jQuery.param(s.data);

        // Handle JSONP Parameter Callbacks
        if ( s.dataType =3D=3D "jsonp" ) {
            if ( type =3D=3D "GET" ) {
                if ( !s.url.match(jsre) )
                    s.url +=3D (s.url.match(/\?/) ? "&" : "?") + =
(s.jsonp || "callback") + "=3D?";
            } else if ( !s.data || !s.data.match(jsre) )
                s.data =3D (s.data ? s.data + "&" : "") + (s.jsonp || =
"callback") + "=3D?";
            s.dataType =3D "json";
        }

        // Build temporary JSONP function
        if ( s.dataType =3D=3D "json" && (s.data && s.data.match(jsre) =
|| s.url.match(jsre)) ) {
            jsonp =3D "jsonp" + jsc++;

            // Replace the =3D? sequence both in the query string and =
the data
            if ( s.data )
                s.data =3D (s.data + "").replace(jsre, "=3D" + jsonp + =
"$1");
            s.url =3D s.url.replace(jsre, "=3D" + jsonp + "$1");

            // We need to make sure
            // that a JSONP style response is executed properly
            s.dataType =3D "script";

            // Handle JSONP-style loading
            window[ jsonp ] =3D function(tmp){
                data =3D tmp;
                success();
                complete();
                // Garbage collect
                window[ jsonp ] =3D undefined;
                try{ delete window[ jsonp ]; } catch(e){}
                if ( head )
                    head.removeChild( script );
            };
        }

        if ( s.dataType =3D=3D "script" && s.cache =3D=3D null )
            s.cache =3D false;

        if ( s.cache =3D=3D=3D false && type =3D=3D "GET" ) {
            var ts =3D now();
            // try replacing _=3D if it is there
            var ret =3D s.url.replace(/(\?|&)_=3D.*?(&|$)/, "$1_=3D" + =
ts + "$2");
            // if nothing was replaced, add timestamp to the end
            s.url =3D ret + ((ret =3D=3D s.url) ? (s.url.match(/\?/) ? =
"&" : "?") + "_=3D" + ts : "");
        }

        // If data is available, append data to url for get requests
        if ( s.data && type =3D=3D "GET" ) {
            s.url +=3D (s.url.match(/\?/) ? "&" : "?") + s.data;

            // IE likes to send both get and post data, prevent this
            s.data =3D null;
        }

        // Watch for a new set of requests
        if ( s.global && ! jQuery.active++ )
            jQuery.event.trigger( "ajaxStart" );

        // Matches an absolute URL, and saves the domain
        var remote =3D /^(?:\w+:)?\/\/([^\/?#]+)/;

        // If we're requesting a remote document
        // and trying to load JSON or Script with a GET
        if ( s.dataType =3D=3D "script" && type =3D=3D "GET"
                && remote.test(s.url) && remote.exec(s.url)[1] !=3D =
location.host ){
            var head =3D document.getElementsByTagName("head")[0];
            var script =3D document.createElement("script");
            script.src =3D s.url;
            if (s.scriptCharset)
                script.charset =3D s.scriptCharset;

            // Handle Script loading
            if ( !jsonp ) {
                var done =3D false;

                // Attach handlers for all browsers
                script.onload =3D script.onreadystatechange =3D =
function(){
                    if ( !done && (!this.readyState ||
                            this.readyState =3D=3D "loaded" || =
this.readyState =3D=3D "complete") ) {
                        done =3D true;
                        success();
                        complete();
                        head.removeChild( script );
                    }
                };
            }

            head.appendChild(script);

            // We handle everything using the script element injection
            return undefined;
        }

        var requestDone =3D false;

        // Create the request object; Microsoft failed to properly
        // implement the XMLHttpRequest in IE7, so we use the =
ActiveXObject when it is available
        var xhr =3D window.ActiveXObject ? new =
ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();

        // Open the socket
        // Passing null username, generates a login popup on Opera =
(#2865)
        if( s.username )
            xhr.open(type, s.url, s.async, s.username, s.password);
        else
            xhr.open(type, s.url, s.async);

        // Need an extra try/catch for cross domain requests in Firefox =
3
        try {
            // Set the correct header, if data is being sent
            if ( s.data )
                xhr.setRequestHeader("Content-Type", s.contentType);

            // Set the If-Modified-Since header, if ifModified mode.
            if ( s.ifModified )
                xhr.setRequestHeader("If-Modified-Since",
                    jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 =
00:00:00 GMT" );

            // Set header so the called script knows that it's an =
XMLHttpRequest
            xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

            // Set the Accepts header for the server, depending on the =
dataType
            xhr.setRequestHeader("Accept", s.dataType && s.accepts[ =
s.dataType ] ?
                s.accepts[ s.dataType ] + ", */*" :
                s.accepts._default );
        } catch(e){}

        // Allow custom headers/mimetypes
        if ( s.beforeSend && s.beforeSend(xhr, s) =3D=3D=3D false ) {
            // cleanup active request counter
            s.global && jQuery.active--;
            // close opended socket
            xhr.abort();
            return false;
        }

        if ( s.global )
            jQuery.event.trigger("ajaxSend", [xhr, s]);

        // Wait for a response to come back
        var onreadystatechange =3D function(isTimeout){
            // The transfer is complete and the data is available, or =
the request timed out
            if ( !requestDone && xhr && (xhr.readyState =3D=3D 4 || =
isTimeout =3D=3D "timeout") ) {
                requestDone =3D true;

                // clear poll interval
                if (ival) {
                    clearInterval(ival);
                    ival =3D null;
                }

                status =3D isTimeout =3D=3D "timeout" && "timeout" ||
                    !jQuery.httpSuccess( xhr ) && "error" ||
                    s.ifModified && jQuery.httpNotModified( xhr, s.url ) =
&& "notmodified" ||
                    "success";

                if ( status =3D=3D "success" ) {
                    // Watch for, and catch, XML document parse errors
                    try {
                        // process the data (runs the xml through =
httpData regardless of callback)
                        data =3D jQuery.httpData( xhr, s.dataType, =
s.dataFilter );
                    } catch(e) {
                        status =3D "parsererror";
                    }
                }

                // Make sure that the request was successful or =
notmodified
                if ( status =3D=3D "success" ) {
                    // Cache Last-Modified header, if ifModified mode.
                    var modRes;
                    try {
                        modRes =3D =
xhr.getResponseHeader("Last-Modified");
                    } catch(e) {} // swallow exception thrown by FF if =
header is not available

                    if ( s.ifModified && modRes )
                        jQuery.lastModified[s.url] =3D modRes;

                    // JSONP handles its own success callback
                    if ( !jsonp )
                        success();
                } else
                    jQuery.handleError(s, xhr, status);

                // Fire the complete handlers
                complete();

                // Stop memory leaks
                if ( s.async )
                    xhr =3D null;
            }
        };

        if ( s.async ) {
            // don't attach the handler to the request, just poll it =
instead
            var ival =3D setInterval(onreadystatechange, 13);

            // Timeout checker
            if ( s.timeout > 0 )
                setTimeout(function(){
                    // Check to see if the request is still happening
                    if ( xhr ) {
                        // Cancel the request
                        xhr.abort();

                        if( !requestDone )
                            onreadystatechange( "timeout" );
                    }
                }, s.timeout);
        }

        // Send the data
        try {
            xhr.send(s.data);
        } catch(e) {
            jQuery.handleError(s, xhr, null, e);
        }

        // firefox 1.5 doesn't fire statechange for sync requests
        if ( !s.async )
            onreadystatechange();

        function success(){
            // If a local callback was specified, fire it and pass it =
the data
            if ( s.success )
                s.success( data, status );

            // Fire the global callback
            if ( s.global )
                jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
        }

        function complete(){
            // Process result
            if ( s.complete )
                s.complete(xhr, status);

            // The request was completed
            if ( s.global )
                jQuery.event.trigger( "ajaxComplete", [xhr, s] );

            // Handle the global AJAX counter
            if ( s.global && ! --jQuery.active )
                jQuery.event.trigger( "ajaxStop" );
        }

        // return XMLHttpRequest to allow aborting the request etc.
        return xhr;
    },

    handleError: function( s, xhr, status, e ) {
        // If a local callback was specified, fire it
        if ( s.error ) s.error( xhr, status, e );

        // Fire the global callback
        if ( s.global )
            jQuery.event.trigger( "ajaxError", [xhr, s, e] );
    },

    // Counter for holding the number of active queries
    active: 0,

    // Determines if an XMLHttpRequest was successful or not
    httpSuccess: function( xhr ) {
        try {
            // IE error sometimes returns 1223 when it should be 204 so =
treat it as success, see #1450
            return !xhr.status && location.protocol =3D=3D "file:" ||
                ( xhr.status >=3D 200 && xhr.status < 300 ) || =
xhr.status =3D=3D 304 || xhr.status =3D=3D 1223 ||
                jQuery.browser.safari && xhr.status =3D=3D undefined;
        } catch(e){}
        return false;
    },

    // Determines if an XMLHttpRequest returns NotModified
    httpNotModified: function( xhr, url ) {
        try {
            var xhrRes =3D xhr.getResponseHeader("Last-Modified");

            // Firefox always returns 200. check Last-Modified date
            return xhr.status =3D=3D 304 || xhrRes =3D=3D =
jQuery.lastModified[url] ||
                jQuery.browser.safari && xhr.status =3D=3D undefined;
        } catch(e){}
        return false;
    },

    httpData: function( xhr, type, filter ) {
        var ct =3D xhr.getResponseHeader("content-type"),
            xml =3D type =3D=3D "xml" || !type && ct && =
ct.indexOf("xml") >=3D 0,
            data =3D xml ? xhr.responseXML : xhr.responseText;

        if ( xml && data.documentElement.tagName =3D=3D "parsererror" )
            throw "parsererror";
           =20
        // Allow a pre-filtering function to sanitize the response
        if( filter )
            data =3D filter( data, type );

        // If the type is "script", eval it in global context
        if ( type =3D=3D "script" )
            jQuery.globalEval( data );

        // Get the JavaScript object, if JSON is used.
        if ( type =3D=3D "json" )
            data =3D eval("(" + data + ")");

        return data;
    },

    // Serialize an array of form elements or a set of
    // key/values into a query string
    param: function( a ) {
        var s =3D [];

        // If an array was passed in, assume that it is an array
        // of form elements
        if ( a.constructor =3D=3D Array || a.jquery )
            // Serialize the form elements
            jQuery.each( a, function(){
                s.push( encodeURIComponent(this.name) + "=3D" + =
encodeURIComponent( this.value ) );
            });

        // Otherwise, assume that it's an object of key/value pairs
        else
            // Serialize the key/values
            for ( var j in a )
                // If the value is an array then the key names need to =
be repeated
                if ( a[j] && a[j].constructor =3D=3D Array )
                    jQuery.each( a[j], function(){
                        s.push( encodeURIComponent(j) + "=3D" + =
encodeURIComponent( this ) );
                    });
                else
                    s.push( encodeURIComponent(j) + "=3D" + =
encodeURIComponent( jQuery.isFunction(a[j]) ? a[j]() : a[j] ) );

        // Return the resulting serialization
        return s.join("&").replace(/%20/g, "+");
    }

});
jQuery.fn.extend({
    show: function(speed,callback){
        return speed ?
            this.animate({
                height: "show", width: "show", opacity: "show"
            }, speed, callback) :

            this.filter(":hidden").each(function(){
                this.style.display =3D this.oldblock || "";
                if ( jQuery.css(this,"display") =3D=3D "none" ) {
                    var elem =3D jQuery("<" + this.tagName + " =
/>").appendTo("body");
                    this.style.display =3D elem.css("display");
                    // handle an edge condition where css is - div { =
display:none; } or similar
                    if (this.style.display =3D=3D "none")
                        this.style.display =3D "block";
                    elem.remove();
                }
            }).end();
    },

    hide: function(speed,callback){
        return speed ?
            this.animate({
                height: "hide", width: "hide", opacity: "hide"
            }, speed, callback) :

            this.filter(":visible").each(function(){
                this.oldblock =3D this.oldblock || =
jQuery.css(this,"display");
                this.style.display =3D "none";
            }).end();
    },

    // Save the old toggle function
    _toggle: jQuery.fn.toggle,

    toggle: function( fn, fn2 ){
        return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
            this._toggle.apply( this, arguments ) :
            fn ?
                this.animate({
                    height: "toggle", width: "toggle", opacity: "toggle"
                }, fn, fn2) :
                this.each(function(){
                    jQuery(this)[ jQuery(this).is(":hidden") ? "show" : =
"hide" ]();
                });
    },

    slideDown: function(speed,callback){
        return this.animate({height: "show"}, speed, callback);
    },

    slideUp: function(speed,callback){
        return this.animate({height: "hide"}, speed, callback);
    },

    slideToggle: function(speed, callback){
        return this.animate({height: "toggle"}, speed, callback);
    },

    fadeIn: function(speed, callback){
        return this.animate({opacity: "show"}, speed, callback);
    },

    fadeOut: function(speed, callback){
        return this.animate({opacity: "hide"}, speed, callback);
    },

    fadeTo: function(speed,to,callback){
        return this.animate({opacity: to}, speed, callback);
    },

    animate: function( prop, speed, easing, callback ) {
        var optall =3D jQuery.speed(speed, easing, callback);

        return this[ optall.queue =3D=3D=3D false ? "each" : "queue" =
](function(){
            if ( this.nodeType !=3D 1)
                return false;

            var opt =3D jQuery.extend({}, optall), p,
                hidden =3D jQuery(this).is(":hidden"), self =3D this;

            for ( p in prop ) {
                if ( prop[p] =3D=3D "hide" && hidden || prop[p] =3D=3D =
"show" && !hidden )
                    return opt.complete.call(this);

                if ( p =3D=3D "height" || p =3D=3D "width" ) {
                    // Store display property
                    opt.display =3D jQuery.css(this, "display");

                    // Make sure that nothing sneaks out
                    opt.overflow =3D this.style.overflow;
                }
            }

            if ( opt.overflow !=3D null )
                this.style.overflow =3D "hidden";

            opt.curAnim =3D jQuery.extend({}, prop);

            jQuery.each( prop, function(name, val){
                var e =3D new jQuery.fx( self, opt, name );

                if ( /toggle|show|hide/.test(val) )
                    e[ val =3D=3D "toggle" ? hidden ? "show" : "hide" : =
val ]( prop );
                else {
                    var parts =3D =
val.toString().match(/^([+-]=3D)?([\d+-.]+)(.*)$/),
                        start =3D e.cur(true) || 0;

                    if ( parts ) {
                        var end =3D parseFloat(parts[2]),
                            unit =3D parts[3] || "px";

                        // We need to compute starting value
                        if ( unit !=3D "px" ) {
                            self.style[ name ] =3D (end || 1) + unit;
                            start =3D ((end || 1) / e.cur(true)) * =
start;
                            self.style[ name ] =3D start + unit;
                        }

                        // If a +=3D/-=3D token was provided, we're =
doing a relative animation
                        if ( parts[1] )
                            end =3D ((parts[1] =3D=3D "-=3D" ? -1 : 1) * =
end) + start;

                        e.custom( start, end, unit );
                    } else
                        e.custom( start, val, "" );
                }
            });

            // For JS strict compliance
            return true;
        });
    },

    queue: function(type, fn){
        if ( jQuery.isFunction(type) || ( type && type.constructor =
=3D=3D Array )) {
            fn =3D type;
            type =3D "fx";
        }

        if ( !type || (typeof type =3D=3D "string" && !fn) )
            return queue( this[0], type );

        return this.each(function(){
            if ( fn.constructor =3D=3D Array )
                queue(this, type, fn);
            else {
                queue(this, type).push( fn );

                if ( queue(this, type).length =3D=3D 1 )
                    fn.call(this);
            }
        });
    },

    stop: function(clearQueue, gotoEnd){
        var timers =3D jQuery.timers;

        if (clearQueue)
            this.queue([]);

        this.each(function(){
            // go in reverse order so anything added to the queue during =
the loop is ignored
            for ( var i =3D timers.length - 1; i >=3D 0; i-- )
                if ( timers[i].elem =3D=3D this ) {
                    if (gotoEnd)
                        // force the next step to be the last
                        timers[i](true);
                    timers.splice(i, 1);
                }
        });

        // start the next in the queue if the last step wasn't forced
        if (!gotoEnd)
            this.dequeue();

        return this;
    }

});

var queue =3D function( elem, type, array ) {
    if ( elem ){

        type =3D type || "fx";

        var q =3D jQuery.data( elem, type + "queue" );

        if ( !q || array )
            q =3D jQuery.data( elem, type + "queue", =
jQuery.makeArray(array) );

    }
    return q;
};

jQuery.fn.dequeue =3D function(type){
    type =3D type || "fx";

    return this.each(function(){
        var q =3D queue(this, type);

        q.shift();

        if ( q.length )
            q[0].call( this );
    });
};

jQuery.extend({

    speed: function(speed, easing, fn) {
        var opt =3D speed && speed.constructor =3D=3D Object ? speed : {
            complete: fn || !fn && easing ||
                jQuery.isFunction( speed ) && speed,
            duration: speed,
            easing: fn && easing || easing && easing.constructor !=3D =
Function && easing
        };

        opt.duration =3D (opt.duration && opt.duration.constructor =
=3D=3D Number ?
            opt.duration :
            jQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds.def;

        // Queueing
        opt.old =3D opt.complete;
        opt.complete =3D function(){
            if ( opt.queue !=3D=3D false )
                jQuery(this).dequeue();
            if ( jQuery.isFunction( opt.old ) )
                opt.old.call( this );
        };

        return opt;
    },

    easing: {
        linear: function( p, n, firstNum, diff ) {
            return firstNum + diff * p;
        },
        swing: function( p, n, firstNum, diff ) {
            return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
        }
    },

    timers: [],
    timerId: null,

    fx: function( elem, options, prop ){
        this.options =3D options;
        this.elem =3D elem;
        this.prop =3D prop;

        if ( !options.orig )
            options.orig =3D {};
    }

});

jQuery.fx.prototype =3D {

    // Simple function for setting a style value
    update: function(){
        if ( this.options.step )
            this.options.step.call( this.elem, this.now, this );

        (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );

        // Set display property to block for height/width animations
        if ( this.prop =3D=3D "height" || this.prop =3D=3D "width" )
            this.elem.style.display =3D "block";
    },

    // Get the current size
    cur: function(force){
        if ( this.elem[this.prop] !=3D null && =
this.elem.style[this.prop] =3D=3D null )
            return this.elem[ this.prop ];

        var r =3D parseFloat(jQuery.css(this.elem, this.prop, force));
        return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, =
this.prop)) || 0;
    },

    // Start an animation from one number to another
    custom: function(from, to, unit){
        this.startTime =3D now();
        this.start =3D from;
        this.end =3D to;
        this.unit =3D unit || this.unit || "px";
        this.now =3D this.start;
        this.pos =3D this.state =3D 0;
        this.update();

        var self =3D this;
        function t(gotoEnd){
            return self.step(gotoEnd);
        }

        t.elem =3D this.elem;

        jQuery.timers.push(t);

        if ( jQuery.timerId =3D=3D null ) {
            jQuery.timerId =3D setInterval(function(){
                var timers =3D jQuery.timers;

                for ( var i =3D 0; i < timers.length; i++ )
                    if ( !timers[i]() )
                        timers.splice(i--, 1);

                if ( !timers.length ) {
                    clearInterval( jQuery.timerId );
                    jQuery.timerId =3D null;
                }
            }, 13);
        }
    },

    // Simple 'show' function
    show: function(){
        // Remember where we started, so that we can go back to it later
        this.options.orig[this.prop] =3D jQuery.attr( this.elem.style, =
this.prop );
        this.options.show =3D true;

        // Begin the animation
        this.custom(0, this.cur());

        // Make sure that we start at a small width/height to avoid any
        // flash of content
        if ( this.prop =3D=3D "width" || this.prop =3D=3D "height" )
            this.elem.style[this.prop] =3D "1px";

        // Start by showing the element
        jQuery(this.elem).show();
    },

    // Simple 'hide' function
    hide: function(){
        // Remember where we started, so that we can go back to it later
        this.options.orig[this.prop] =3D jQuery.attr( this.elem.style, =
this.prop );
        this.options.hide =3D true;

        // Begin the animation
        this.custom(this.cur(), 0);
    },

    // Each step of an animation
    step: function(gotoEnd){
        var t =3D now();

        if ( gotoEnd || t > this.options.duration + this.startTime ) {
            this.now =3D this.end;
            this.pos =3D this.state =3D 1;
            this.update();

            this.options.curAnim[ this.prop ] =3D true;

            var done =3D true;
            for ( var i in this.options.curAnim )
                if ( this.options.curAnim[i] !=3D=3D true )
                    done =3D false;

            if ( done ) {
                if ( this.options.display !=3D null ) {
                    // Reset the overflow
                    this.elem.style.overflow =3D this.options.overflow;

                    // Reset the display
                    this.elem.style.display =3D this.options.display;
                    if ( jQuery.css(this.elem, "display") =3D=3D "none" =
)
                        this.elem.style.display =3D "block";
                }

                // Hide the element if the "hide" operation was done
                if ( this.options.hide )
                    this.elem.style.display =3D "none";

                // Reset the properties, if the item has been hidden or =
shown
                if ( this.options.hide || this.options.show )
                    for ( var p in this.options.curAnim )
                        jQuery.attr(this.elem.style, p, =
this.options.orig[p]);
            }

            if ( done )
                // Execute the complete function
                this.options.complete.call( this.elem );

            return false;
        } else {
            var n =3D t - this.startTime;
            this.state =3D n / this.options.duration;

            // Perform the easing function, defaults to swing
            this.pos =3D jQuery.easing[this.options.easing || =
(jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, =
this.options.duration);
            this.now =3D this.start + ((this.end - this.start) * =
this.pos);

            // Perform the next step of the animation
            this.update();
        }

        return true;
    }

};

jQuery.extend( jQuery.fx, {
    speeds:{
        slow: 600,
         fast: 200,
         // Default speed
         def: 400
    },
    step: {
        scrollLeft: function(fx){
            fx.elem.scrollLeft =3D fx.now;
        },

        scrollTop: function(fx){
            fx.elem.scrollTop =3D fx.now;
        },

        opacity: function(fx){
            jQuery.attr(fx.elem.style, "opacity", fx.now);
        },

        _default: function(fx){
            fx.elem.style[ fx.prop ] =3D fx.now + fx.unit;
        }
    }
});
// The Offset Method
// Originally By Brandon Aaron, part of the Dimension Plugin
// http://jquery.com/plugins/project/dimensions
jQuery.fn.offset =3D function() {
    var left =3D 0, top =3D 0, elem =3D this[0], results;

    if ( elem ) with ( jQuery.browser ) {
        var parent       =3D elem.parentNode,
            offsetChild  =3D elem,
            offsetParent =3D elem.offsetParent,
            doc          =3D elem.ownerDocument,
            safari2      =3D safari && parseInt(version) < 522 && =
!/adobeair/i.test(userAgent),
            css          =3D jQuery.curCSS,
            fixed        =3D css(elem, "position") =3D=3D "fixed";

        // Use getBoundingClientRect if available
        if ( elem.getBoundingClientRect ) {
            var box =3D elem.getBoundingClientRect();

            // Add the document scroll offsets
            add(box.left + Math.max(doc.documentElement.scrollLeft, =
doc.body.scrollLeft),
                box.top  + Math.max(doc.documentElement.scrollTop,  =
doc.body.scrollTop));

            // IE adds the HTML element's border, by default it is =
medium which is 2px
            // IE 6 and 7 quirks mode the border width is overwritable =
by the following css html { border: 0; }
            // IE 7 standards mode, the border is always 2px
            // This border/offset is typically represented by the =
clientLeft and clientTop properties
            // However, in IE6 and 7 quirks mode the clientLeft and =
clientTop properties are not updated when overwriting it via CSS
            // Therefore this method will be off by 2px in IE while in =
quirksmode
            add( -doc.documentElement.clientLeft, =
-doc.documentElement.clientTop );

        // Otherwise loop through the offsetParents and parentNodes
        } else {

            // Initial element offsets
            add( elem.offsetLeft, elem.offsetTop );

            // Get parent offsets
            while ( offsetParent ) {
                // Add offsetParent offsets
                add( offsetParent.offsetLeft, offsetParent.offsetTop );

                // Mozilla and Safari > 2 does not include the border on =
offset parents
                // However Mozilla adds the border for table or table =
cells
                if ( mozilla && =
!/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2 )
                    border( offsetParent );

                // Add the document scroll offsets if position is fixed =
on any offsetParent
                if ( !fixed && css(offsetParent, "position") =3D=3D =
"fixed" )
                    fixed =3D true;

                // Set offsetChild to previous offsetParent unless it is =
the body element
                offsetChild  =3D /^body$/i.test(offsetParent.tagName) ? =
offsetChild : offsetParent;
                // Get next offsetParent
                offsetParent =3D offsetParent.offsetParent;
            }

            // Get parent scroll offsets
            while ( parent && parent.tagName && =
!/^body|html$/i.test(parent.tagName) ) {
                // Remove parent scroll UNLESS that parent is inline or =
a table to work around Opera inline/table scrollLeft/Top bug
                if ( !/^inline|table.*$/i.test(css(parent, "display")) )
                    // Subtract parent scroll offsets
                    add( -parent.scrollLeft, -parent.scrollTop );

                // Mozilla does not add the border for a parent that has =
overflow !=3D visible
                if ( mozilla && css(parent, "overflow") !=3D "visible" )
                    border( parent );

                // Get next parent
                parent =3D parent.parentNode;
            }

            // Safari <=3D 2 doubles body offsets with a fixed position =
element/offsetParent or absolutely positioned offsetChild
            // Mozilla doubles body offsets with a non-absolutely =
positioned offsetChild
            if ( (safari2 && (fixed || css(offsetChild, "position") =
=3D=3D "absolute")) ||
                (mozilla && css(offsetChild, "position") !=3D =
"absolute") )
                    add( -doc.body.offsetLeft, -doc.body.offsetTop );

            // Add the document scroll offsets if position is fixed
            if ( fixed )
                add(Math.max(doc.documentElement.scrollLeft, =
doc.body.scrollLeft),
                    Math.max(doc.documentElement.scrollTop,  =
doc.body.scrollTop));
        }

        // Return an object with top and left properties
        results =3D { top: top, left: left };
    }

    function border(elem) {
        add( jQuery.curCSS(elem, "borderLeftWidth", true), =
jQuery.curCSS(elem, "borderTopWidth", true) );
    }

    function add(l, t) {
        left +=3D parseInt(l, 10) || 0;
        top +=3D parseInt(t, 10) || 0;
    }

    return results;
};


jQuery.fn.extend({
    position: function() {
        var left =3D 0, top =3D 0, results;

        if ( this[0] ) {
            // Get *real* offsetParent
            var offsetParent =3D this.offsetParent(),

            // Get correct offsets
            offset       =3D this.offset(),
            parentOffset =3D =
/^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : =
offsetParent.offset();

            // Subtract element margins
            // note: when an element has margin: auto the offsetLeft and =
marginLeft=20
            // are the same in Safari causing offset.left to incorrectly =
be 0
            offset.top  -=3D num( this, 'marginTop' );
            offset.left -=3D num( this, 'marginLeft' );

            // Add offsetParent borders
            parentOffset.top  +=3D num( offsetParent, 'borderTopWidth' =
);
            parentOffset.left +=3D num( offsetParent, 'borderLeftWidth' =
);

            // Subtract the two offsets
            results =3D {
                top:  offset.top  - parentOffset.top,
                left: offset.left - parentOffset.left
            };
        }

        return results;
    },

    offsetParent: function() {
        var offsetParent =3D this[0].offsetParent;
        while ( offsetParent && =
(!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, =
'position') =3D=3D 'static') )
            offsetParent =3D offsetParent.offsetParent;
        return jQuery(offsetParent);
    }
});


// Create scrollLeft and scrollTop methods
jQuery.each( ['Left', 'Top'], function(i, name) {
    var method =3D 'scroll' + name;
   =20
    jQuery.fn[ method ] =3D function(val) {
        if (!this[0]) return;

        return val !=3D undefined ?

            // Set the scroll offset
            this.each(function() {
                this =3D=3D window || this =3D=3D document ?
                    window.scrollTo(
                        !i ? val : jQuery(window).scrollLeft(),
                         i ? val : jQuery(window).scrollTop()
                    ) :
                    this[ method ] =3D val;
            }) :

            // Return the scroll offset
            this[0] =3D=3D window || this[0] =3D=3D document ?
                self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
                    jQuery.boxModel && document.documentElement[ method =
] ||
                    document.body[ method ] :
                this[0][ method ];
    };
});
// Create innerHeight, innerWidth, outerHeight and outerWidth methods
jQuery.each([ "Height", "Width" ], function(i, name){

    var tl =3D i ? "Left"  : "Top",  // top or left
        br =3D i ? "Right" : "Bottom"; // bottom or right

    // innerHeight and innerWidth
    jQuery.fn["inner" + name] =3D function(){
        return this[ name.toLowerCase() ]() +
            num(this, "padding" + tl) +
            num(this, "padding" + br);
    };

    // outerHeight and outerWidth
    jQuery.fn["outer" + name] =3D function(margin) {
        return this["inner" + name]() +
            num(this, "border" + tl + "Width") +
            num(this, "border" + br + "Width") +
            (margin ?
                num(this, "margin" + tl) + num(this, "margin" + br) : =
0);
    };

});})();

/************************************************************************=
*********************/
// PRAGMA
// REVERSE [EXTEND JQUERY] mikeg
/************************************************************************=
*********************/
jQuery.fn.reverse =3D function()
{
    return this.pushStack(this.get().reverse(), arguments);
};

/************************************************************************=
*********************/
// PRAGMA
// COMPATABILITY PLUGIN  (compatability with jQuery 1.1)
/************************************************************************=
*********************/

/** First part required for drupal 5 - compat with jquery 1.0.1a       =
*/

// $Id: compat.js,v 1.1.2.1 2008/05/02 21:05:06 stevemckenzie Exp $
// UPGRADE: The following attribute helpers should now be used as:
// .attr("title") or .attr("title","new title")
jQuery.each(["id","title","name","href","src","rel"], function(i,n){
  jQuery.fn[ n ] =3D function(h) {
    return h =3D=3D undefined ?
      this.length ? this[0][n] : null :
      this.attr( n, h );
  };
});

// UPGRADE: The following css helpers should now be used as:
// .css("top") or .css("top","30px")
jQuery.each("top,left,position,float,overflow,color,background".split(","=
), function(i,n){
  jQuery.fn[ n ] =3D function(h) {
    return h =3D=3D undefined ?
      ( this.length ? jQuery.css( this[0], n ) : null ) :
      this.css( n, h );
  };
});

// UPGRADE: The following event helpers should now be used as such:
// .oneblur(fn) -> .one("blur",fn)
// .unblur(fn) -> .unbind("blur",fn)
var e =3D ("blur,focus,load,resize,scroll,unload,click,dblclick," +
  "mousedown,mouseup,mousemove,mouseover,mouseout,change,reset,select," =
+=20
  "submit,keydown,keypress,keyup,error").split(",");

// Go through all the event names, but make sure that
// it is enclosed properly
for ( var i =3D 0; i < e.length; i++ ) new function(){
     =20
  var o =3D e[i];
   =20
  // Handle event unbinding
  jQuery.fn["un"+o] =3D function(f){ return this.unbind(o, f); };
   =20
  // Finally, handle events that only fire once
  jQuery.fn["one"+o] =3D function(f){
    // save cloned reference to this
    var element =3D jQuery(this);
    var handler =3D function() {
      // unbind itself when executed
      element.unbind(o, handler);
      element =3D null;
      // apply original handler with the same arguments
      return f.apply(this, arguments);
    };
    return this.bind(o, handler);
  };
     =20
};

// UPGRADE: .ancestors() was removed in favor of .parents()
jQuery.fn.ancestors =3D jQuery.fn.parents;

// UPGRADE: The CSS selector :nth-child() now starts at 1, instead of 0
jQuery.expr[":"]["nth-child"] =3D =
"jQuery.nth(a.parentNode.firstChild,parseInt(m[3])+1,'nextSibling')=3D=3D=
a";

// UPGRADE: .filter(["div", "span"]) now becomes .filter("div, span")
/*jQuery.fn._filter =3D jQuery.fn.filter;
jQuery.fn.filter =3D function(arr){
  return this._filter( arr.constructor =3D=3D Array ? arr.join(",") : =
arr );
};  */


/*****************************************************************/

/*
 * Compatibility Plugin for jQuery 1.1 (on top of jQuery 1.2)
 * By John Resig
 * Dual licensed under MIT and GPL.
 *
 * For XPath compatibility with 1.1, you should also include the XPath
 * compatability plugin.
 */

(function(jQuery){

    // You should now use .slice() instead of eq/lt/gt
    // And you should use .filter(":contains(text)") instead of =
.contains()
    jQuery.each( [ "eq", "lt", "gt", "contains" ], function(i,n){
        jQuery.fn[ n ] =3D function(num,fn) {
            return this.filter( ":" + n + "(" + num + ")", fn );
        };
    });

    // This is no longer necessary in 1.2
    jQuery.fn.evalScripts =3D function(){};

    // You should now be using $.ajax() instead
    jQuery.fn.loadIfModified =3D function() {
        var old =3D jQuery.ajaxSettings.ifModified;
        jQuery.ajaxSettings.ifModified =3D true;
   =20
        var ret =3D jQuery.fn.load.apply( this, arguments );
   =20
        jQuery.ajaxSettings.ifModified =3D old;

        return ret;
    };

    // You should now be using $.ajax() instead
    jQuery.getIfModified =3D function() {
        var old =3D jQuery.ajaxSettings.ifModified;
        jQuery.ajaxSettings.ifModified =3D true;
   =20
        var ret =3D jQuery.get.apply( jQuery, arguments );
   =20
        jQuery.ajaxSettings.ifModified =3D old;

        return ret;
    };

    jQuery.ajaxTimeout =3D function( timeout ) {
        jQuery.ajaxSettings.timeout =3D timeout;
    };

})(jQuery);

/************************************************************************=
*********************/
// PRAGMA
//  DIMENSIONS PLUGIN
/************************************************************************=
*********************/
/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and =
Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 * Dual licensed under the MIT =
(http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) =
licenses.
 *
 * $LastChangedDate: 2007-12-20 08:46:55 -0600 (Thu, 20 Dec 2007) $
 * $Rev: 4259 $
 *
 * Version: 1.2
 *
 * Requires: jQuery 1.2+
 */
 /*
(function($){
   =20
$.dimensions =3D {
    version: '1.2'
};

// Create innerHeight, innerWidth, outerHeight and outerWidth methods
$.each( [ 'Height', 'Width' ], function(i, name){
   =20
    // innerHeight and innerWidth
    $.fn[ 'inner' + name ] =3D function() {
        if (!this[0]) return;
       =20
        var torl =3D name =3D=3D 'Height' ? 'Top'    : 'Left',  // top =
or left
            borr =3D name =3D=3D 'Height' ? 'Bottom' : 'Right'; // =
bottom or right
       =20
        return this.is(':visible') ? this[0]['client' + name] : num( =
this, name.toLowerCase() ) + num(this, 'padding' + torl) + num(this, =
'padding' + borr);
    };
   =20
    // outerHeight and outerWidth
    $.fn[ 'outer' + name ] =3D function(options) {
        if (!this[0]) return;
       =20
        var torl =3D name =3D=3D 'Height' ? 'Top'    : 'Left',  // top =
or left
            borr =3D name =3D=3D 'Height' ? 'Bottom' : 'Right'; // =
bottom or right
       =20
        options =3D $.extend({ margin: false }, options || {});
       =20
        var val =3D this.is(':visible') ?=20
                this[0]['offset' + name] :=20
                num( this, name.toLowerCase() )
                    + num(this, 'border' + torl + 'Width') + num(this, =
'border' + borr + 'Width')
                    + num(this, 'padding' + torl) + num(this, 'padding' =
+ borr);
       =20
        return val + (options.margin ? (num(this, 'margin' + torl) + =
num(this, 'margin' + borr)) : 0);
    };
});

// Create scrollLeft and scrollTop methods
$.each( ['Left', 'Top'], function(i, name) {
    $.fn[ 'scroll' + name ] =3D function(val) {
        if (!this[0]) return;
       =20
        return val !=3D undefined ?
       =20
            // Set the scroll offset
            this.each(function() {
                this =3D=3D window || this =3D=3D document ?
                    window.scrollTo(=20
                        name =3D=3D 'Left' ? val : $(window)[ =
'scrollLeft' ](),
                        name =3D=3D 'Top'  ? val : $(window)[ =
'scrollTop'  ]()
                    ) :
                    this[ 'scroll' + name ] =3D val;
            }) :
           =20
            // Return the scroll offset
            this[0] =3D=3D window || this[0] =3D=3D document ?
                self[ (name =3D=3D 'Left' ? 'pageXOffset' : =
'pageYOffset') ] ||
                    $.boxModel && document.documentElement[ 'scroll' + =
name ] ||
                    document.body[ 'scroll' + name ] :
                this[0][ 'scroll' + name ];
    };
});

$.fn.extend({
    position: function() {
        var left =3D 0, top =3D 0, elem =3D this[0], offset, =
parentOffset, offsetParent, results;
       =20
        if (elem) {
            // Get *real* offsetParent
            offsetParent =3D this.offsetParent();
           =20
            // Get correct offsets
            offset       =3D this.offset();
            parentOffset =3D offsetParent.offset();
           =20
            // Subtract element margins
            offset.top  -=3D num(elem, 'marginTop');
            offset.left -=3D num(elem, 'marginLeft');
           =20
            // Add offsetParent borders
            parentOffset.top  +=3D num(offsetParent, 'borderTopWidth');
            parentOffset.left +=3D num(offsetParent, 'borderLeftWidth');
           =20
            // Subtract the two offsets
            results =3D {
                top:  offset.top  - parentOffset.top,
                left: offset.left - parentOffset.left
            };
        }
       =20
        return results;
    },
   =20
    offsetParent: function() {
        var offsetParent =3D this[0].offsetParent;
        while ( offsetParent && =
(!/^body|html$/i.test(offsetParent.tagName) && $.css(offsetParent, =
'position') =3D=3D 'static') )
            offsetParent =3D offsetParent.offsetParent;
        return $(offsetParent);
    }
});

function num(el, prop) {
    return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
};

})(jQuery);
*/

/************************************************************************=
*********************/
// PRAGMA
// COOKIE PLUGIN
/************************************************************************=
*********************/
/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * Create a cookie with the given name and value and other optional =
parameters.
 *
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', =
domain: 'jquery.com', secure: true });
 * @desc Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Create a session cookie.
 * @example $.cookie('the_cookie', null);
 * @desc Delete a cookie by passing null as value. Keep in mind that you =
have to use the same path and domain
 *       used when the cookie was set.
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to =
provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the =
expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a =
date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie =
will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie =
(default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie =
(default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie =
will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */

/**
 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie =3D function(name, value, options) {
    if (typeof value !=3D 'undefined') { // name and value given, set =
cookie
        options =3D options || {};
        if (value =3D=3D=3D null) {
            value =3D '';
            options.expires =3D -1;
        }
        var expires =3D '';
        if (options.expires && (typeof options.expires =3D=3D 'number' =
|| options.expires.toUTCString)) {
            var date;
            if (typeof options.expires =3D=3D 'number') {
                date =3D new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 =
* 60 * 1000));
            } else {
                date =3D options.expires;
            }
            expires =3D '; expires=3D' + date.toUTCString(); // use =
expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and =
options.domain
        // in the following expressions, otherwise they evaluate to =
undefined
        // in the packed version for some reason...
        var path =3D options.path ? '; path=3D' + (options.path) : '';
        var domain =3D options.domain ? '; domain=3D' + (options.domain) =
: '';
        var secure =3D options.secure ? '; secure' : '';
        document.cookie =3D [name, '=3D', encodeURIComponent(value), =
expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue =3D null;
        if (document.cookie && document.cookie !=3D '') {
            var cookies =3D document.cookie.split(';');
            for (var i =3D 0; i < cookies.length; i++) {
                var cookie =3D jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) =3D=3D (name + =
'=3D')) {
                    cookieValue =3D =
decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};

/************************************************************************=
*********************/
// PRAGMA
// COOKIE ALLOWED  - extends jQuery cookie
/************************************************************************=
*********************/

// COOKIES_ALLOWED
// written by mikeg, 3/30/08
// Verifies if the browser allows cookies
// returns boolean
jQuery.cookieAllowed =3D function() {
    var testValue =3D Math.floor(1000*Math.random());
    jQuery.cookie('AreCookiesEnabled',testValue);
    if (testValue =3D=3D jQuery.cookie('AreCookiesEnabled')) { =20
        return true;
    } else {
        return false;
    }   =20
}

/************************************************************************=
*********************/
// PRAGMA
// QUERY STRING PLUGIN
/************************************************************************=
*********************/
/**
 * jQuery.query - Query String Modification and Creation for jQuery
 * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
 * Date: 2009/8/13
 *
 * @author Blair Mitchelmore
 * @version 2.1.7
 *
 **/
new function(settings) {=20
  // Various Settings
  var $separator =3D settings.separator || '&';
  var $spaces =3D settings.spaces =3D=3D=3D false ? false : true;
  var $suffix =3D settings.suffix =3D=3D=3D false ? '' : '[]';
  var $prefix =3D settings.prefix =3D=3D=3D false ? false : true;
  var $hash =3D $prefix ? settings.hash =3D=3D=3D true ? "#" : "?" : "";
  var $numbers =3D settings.numbers =3D=3D=3D false ? false : true;
 =20
  jQuery.query =3D new function() {
    var is =3D function(o, t) {
      return o !=3D undefined && o !=3D=3D null && (!!t ? o.constructor =
=3D=3D t : true);
    };
    var parse =3D function(path) {
      var m, rx =3D /\[([^[]*)\]/g, match =3D =
/^([^[]+)(\[.*\])?$/.exec(path), base =3D match[1], tokens =3D [];
      while (m =3D rx.exec(match[2])) tokens.push(m[1]);
      return [base, tokens];
    };
    var set =3D function(target, tokens, value) {
      var o, token =3D tokens.shift();
      if (typeof target !=3D 'object') target =3D null;
      if (token =3D=3D=3D "") {
        if (!target) target =3D [];
        if (is(target, Array)) {
          target.push(tokens.length =3D=3D 0 ? value : set(null, =
tokens.slice(0), value));
        } else if (is(target, Object)) {
          var i =3D 0;
          while (target[i++] !=3D null);
          target[--i] =3D tokens.length =3D=3D 0 ? value : =
set(target[i], tokens.slice(0), value);
        } else {
          target =3D [];
          target.push(tokens.length =3D=3D 0 ? value : set(null, =
tokens.slice(0), value));
        }
      } else if (token && token.match(/^\s*[0-9]+\s*$/)) {
        var index =3D parseInt(token, 10);
        if (!target) target =3D [];
        target[index] =3D tokens.length =3D=3D 0 ? value : =
set(target[index], tokens.slice(0), value);
      } else if (token) {
        var index =3D token.replace(/^\s*|\s*$/g, "");
        if (!target) target =3D {};
        if (is(target, Array)) {
          var temp =3D {};
          for (var i =3D 0; i < target.length; ++i) {
            temp[i] =3D target[i];
          }
          target =3D temp;
        }
        target[index] =3D tokens.length =3D=3D 0 ? value : =
set(target[index], tokens.slice(0), value);
      } else {
        return value;
      }
      return target;
    };
   =20
    var queryObject =3D function(a) {
      var self =3D this;
      self.keys =3D {};
     =20
      if (a.queryObject) {
        jQuery.each(a.get(), function(key, val) {
          self.SET(key, val);
        });
      } else {
        jQuery.each(arguments, function() {
          var q =3D "" + this;
          q =3D q.replace(/^[?#]/,''); // remove any leading ? || #
          q =3D q.replace(/[;&]$/,''); // remove any trailing & || ;
          if ($spaces) q =3D q.replace(/[+]/g,' '); // replace +'s with =
spaces
         =20
          jQuery.each(q.split(/[&;]/), function(){
            var key =3D decodeURIComponent(this.split('=3D')[0] || "");
            var val =3D decodeURIComponent(this.split('=3D')[1] || "");
           =20
            if (!key) return;
           =20
            if ($numbers) {
              if (/^[+-]?[0-9]+\.[0-9]*$/.test(val)) // simple float =
regex
                val =3D parseFloat(val);
              else if (/^[+-]?[0-9]+$/.test(val)) // simple int regex
                val =3D parseInt(val, 10);
            }
           =20
            val =3D (!val && val !=3D=3D 0) ? true : val;
           =20
            if (val !=3D=3D false && val !=3D=3D true && typeof val !=3D =
'number')
              val =3D val;
           =20
            self.SET(key, val);
          });
        });
      }
      return self;
    };
   =20
    queryObject.prototype =3D {
      queryObject: true,
      has: function(key, type) {
        var value =3D this.get(key);
        return is(value, type);
      },
      GET: function(key) {
        if (!is(key)) return this.keys;
        var parsed =3D parse(key), base =3D parsed[0], tokens =3D =
parsed[1];
        var target =3D this.keys[base];
        while (target !=3D null && tokens.length !=3D 0) {
          target =3D target[tokens.shift()];
        }
        return typeof target =3D=3D 'number' ? target : target || "";
      },
      get: function(key) {
        var target =3D this.GET(key);
        if (is(target, Object))
          return jQuery.extend(true, {}, target);
        else if (is(target, Array))
          return target.slice(0);
        return target;
      },
      SET: function(key, val) {
        var value =3D !is(val) ? null : val;
        var parsed =3D parse(key), base =3D parsed[0], tokens =3D =
parsed[1];
        var target =3D this.keys[base];
        this.keys[base] =3D set(target, tokens.slice(0), value);
        return this;
      },
      set: function(key, val) {
        return this.copy().SET(key, val);
      },
      REMOVE: function(key) {
        return this.SET(key, null).COMPACT();
      },
      remove: function(key) {
        return this.copy().REMOVE(key);
      },
      EMPTY: function() {
        var self =3D this;
        jQuery.each(self.keys, function(key, value) {
          delete self.keys[key];
        });
        return self;
      },
      load: function(url) {
        var hash =3D url.replace(/^.*?[#](.+?)(?:\?.+)?$/, "$1");
        var search =3D url.replace(/^.*?[?](.+?)(?:#.+)?$/, "$1");
        return new queryObject(url.length =3D=3D search.length ? '' : =
search, url.length =3D=3D hash.length ? '' : hash);
      },
      empty: function() {
        return this.copy().EMPTY();
      },
      copy: function() {
        return new queryObject(this);
      },
      COMPACT: function() {
        function build(orig) {
          var obj =3D typeof orig =3D=3D "object" ? is(orig, Array) ? [] =
: {} : orig;
          if (typeof orig =3D=3D 'object') {
            function add(o, key, value) {
              if (is(o, Array))
                o.push(value);
              else
                o[key] =3D value;
            }
            jQuery.each(orig, function(key, value) {
              if (!is(value)) return true;
              add(obj, key, build(value));
            });
          }
          return obj;
        }
        this.keys =3D build(this.keys);
        return this;
      },
      compact: function() {
        return this.copy().COMPACT();
      },
      toString: function() {
        var i =3D 0, queryString =3D [], chunks =3D [], self =3D this;
        var encode =3D function(str) {
          str =3D str + "";
          if ($spaces) str =3D str.replace(/ /g, "+");
          return encodeURIComponent(str);
        };
        var addFields =3D function(arr, key, value) {
          if (!is(value) || value =3D=3D=3D false) return;
          var o =3D [encode(key)];
          if (value !=3D=3D true) {
            o.push("=3D");
            o.push(encode(value));
          }
          arr.push(o.join(""));
        };
        var build =3D function(obj, base) {
          var newKey =3D function(key) {
            return !base || base =3D=3D "" ? [key].join("") : [base, =
"[", key, "]"].join("");
          };
          jQuery.each(obj, function(key, value) {
            if (typeof value =3D=3D 'object')=20
              build(value, newKey(key));
            else
              addFields(chunks, newKey(key), value);
          });
        };
       =20
        build(this.keys);
       =20
        if (chunks.length > 0) queryString.push($hash);
        queryString.push(chunks.join($separator));
       =20
        return queryString.join("");
      }
    };
   =20
    return new queryObject(location.search, location.hash);
  };
}(jQuery.query || {}); // Pass in jQuery.query as settings object

/************************************************************************=
*********************/=20
// PRAGMA
// WRITE ON READY - nw written, writes html to specified ids, has =
transforms
/************************************************************************=
*********************/
// Give ability for inline addition of html to write that is performed =
on docready
NW.WriteOnReady =3D NW.WriteOnReady || {};
NW.WriteOnReady =3D function() {
    var write_to_divs =3D [];
    return {
        init: function() {
            for(var i =3D 0; i < write_to_divs.length; i++) {
                var div_id =3D write_to_divs[i][0];
                var obj_html =3D write_to_divs[i][1];
                $(div_id).html(obj_html);   =20
            }
        },
        add_object: function(div, str, filter) {
            var temp =3D new Array();
            var html =3D str;
            if (filter =3D=3D "audio_player") html =3D =
this.audio_player(str);
            temp.push(div);
            temp.push(html);=20
            write_to_divs.push(temp);
        },
        // CUSTOM STRING TRANSFORMS - KEEP PUBLIC FOR OTHER USES =
(example - create audioplayer with supplied url)
        audio_player: function(s) {
            var strflashcode =3D '';
            strflashcode =3D '<object =
type=3D"application/x-shockwave-flash" ';
            strflashcode +=3D =
'data=3D"http://www.networkworld.com/widgets/audio/audioplayer.swf?src=3D=
' + s + '" ';
            strflashcode +=3D 'width=3D"150" height=3D"21">';
            strflashcode +=3D '<param name=3D"movie" =
value=3D"http://www.networkworld.com/widgets/audio/audioplayer.swf?src=3D=
' + s + '" />';
            strflashcode +=3D '<param name=3D"quality" value=3D"high\" =
/>';
            strflashcode +=3D '</object> ';
            return strflashcode;
        }
    }
}();

/************************************************************************=
*********************/=20
// PRAGMA
// NW.EXPANDABLELEADER
/************************************************************************=
*********************/=20
NW.ExpandableLeader =3D NW.ExpandableLeader || {};
NW.ExpandableLeader =3D function() {
    var numPanes =3D 0;
    var objHtml =3D null;
    var first_hidden =3D null;
    var second_hidden =3D null;
    var third_hidden =3D null;=20
    return{
	=09
        // @ num =3D number of panes
        // @ objHtml =3D object whose properties are div content for =
hidden layers
        initValues: function(num, obj) {
			var nwwthis =3D this;
            // security - ensure code is not passed
            if(typeof(num)=3D=3D"function" || =
typeof(content)=3D=3D"function") return;
            numPanes =3D num;
            objHtml =3D obj;=20
        },
	=09
        createExpLeader: function() {
			if(objHtml.stylesht) {
				$('<link rel=3D"stylesheet" type=3D"text/css" href=3D"' + =
objHtml.stylesht + '">').appendTo("head");
				/*$("<link></link>")
					.attr("href", objHtml.stylesht)
					.attr("rel", "stylesheet")
					.attr("type", "text/css")
					.appendTo('head');*/
			}
			//<link rel=3D"stylesheet" type=3D"text/css" href=3D"styles.css" />
            // first hidden window
            first_hidden =3D $('<div></div>');
            first_hidden.attr("id", "page_flyout_first")
                .addClass("page_flyout")
                .append(objHtml.bot_first)
                .append(objHtml.top_first)
                .prependTo("#nww_container")
                .bind("mouseleave", function() {
                    $(this).hide();
                });
               =20
            // second hidden window
            second_hidden =3D $('<div></div>');
            second_hidden.attr("id", "page_flyout_second")
                .addClass("page_flyout")
                .append(objHtml.bot_second)
                .append(objHtml.top_second)
                .prependTo("#nww_container")
                .bind("mouseleave", function() {
                    $(this).hide();
                });
               =20
            // third hidden window
            third_hidden =3D $('<div></div>');
            third_hidden.attr("id", "page_flyout_third")
                .addClass("page_flyout")
                .append(objHtml.bot_third)
                .append(objHtml.top_third)
                .prependTo("#nww_container")
                .bind("mouseleave", function() {
                    $(this).hide();
                });       =20
        },
        showPane: function(pane) {
            //alert("pane is " + pane);
            $("#nww_container .page_flyout").hide();
            if(pane =3D=3D "first") {
                first_hidden.show();
            } else if (pane =3D=3D "second") {
                second_hidden.show();
            } else {
                third_hidden.show();
            }
        }
    };
}();
------=_NextPart_000_0000_01CB132A.CD361960--

