--- /dev/null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+ <head>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<style type="text/css"><!--
+
+
+
+
+
+BODY { font-family: verdana,arial,helvetica,sans-serif; font-size: small; background-color: #FFFFFF; color: #000000; margin-top: 0px; }
+TD, TH { font-family: verdana,arial,helvetica,sans-serif; font-size: small; }
+
+
+.serif { font-family: times,serif; font-size: medium; }
+.sans { font-family: verdana,arial,helvetica,sans-serif; font-size: medium; }
+
+.small { font-family: verdana,arial,helvetica,sans-serif; font-size: small; }
+
+.h1 { font-family: verdana,arial,helvetica,sans-serif; color: #E47911; font-size: medium; }
+.h3color { font-family: verdana,arial,helvetica,sans-serif; color: #E47911; font-size: small; }
+h2.small {margin-bottom: 0em; }
+h2.h1 { margin-bottom: 0em; }
+h2.h3color { margin-bottom: 0em; }
+.tiny { font-family: verdana,arial,helvetica,sans-serif; font-size: x-small; }
+.tinyprice { font-family: verdana,arial,helvetica,sans-serif; color: #990000; font-size: x-small; }
+.highlight { font-family: verdana,arial,helvetica,sans-serif; color: #990000; font-size: small; }
+.listprice { font-family: arial,verdana,helvetica,sans-serif; text-decoration: line-through; }
+.price { font-family: arial,verdana,helvetica,sans-serif; color: #990000; }
+.popover-tiny { font-size: x-small; font-family: verdana,arial,helvetica,sans-serif; }
+.horizontal-search { font-weight: bold; font-size: small; color: #FFFFFF; font-family: verdana,arial,helvetica,sans-serif; }
+.horizontal-websearch { font-size: x-small; font-family: verdana,arial,helvetica,sans-serif; padding-left: 12px; }
+.big { font-size: xx-large; font-family: verdana,arial,helvetica,sans-serif; }
+.amabot_widget .headline { color: #E47911; font-size: medium; display: block; font-weight: bold; }
+div.unified_widget .headline { color: #E47911; font-size: medium; display: block; font-weight: bold; }
+
+
+
+
+div#page-wrap { min-width:980px;}
+* html div#page-wrap { border-right: 980px solid #fff; width: 100%; margin-right: 25px;}
+* html div#content { float: left; position:relative; margin-right: -980px; }
+div#leftcol, div#leftcolhidden { float: left; width: 180px; margin:5px 0px 0px 5px; display: inline;}
+
+div#rightcol, div#rightcolhidden { float: right; width: 300px; margin-top:5px;}
+
+div#leftcolhidden { clear:left;}
+div#rightcolhidden { clear:right; }
+ div#center1, div#centercol, div#centerrightspancol { overflow: hidden; }
+* html div#center1 { width: 100% }
+* html div#centercol { width:100%; }
+* html div#centerrightspancol { width: 100%; }
+div#page-footer { clear: both; }
+
+a:link { font-family: verdana,arial,helvetica,sans-serif; color: #004B91; }
+a:visited { font-family: verdana,arial,helvetica,sans-serif; color: #996633; }
+a:active { font-family: verdana,arial,helvetica,sans-serif; color: #FF9933; }
+
+a.dynamic, a.dynamic:visited { color: #004B91; text-decoration: none; border-bottom: 1px dashed; }
+a.noclick, a.noclick:visited { color: #000000; text-decoration: none; border-bottom: 1px dashed; }
+
+.noLinkDecoration a { text-decoration: none; border-bottom: none; }
+.noLinkDecoration a:hover { text-decoration: underline; }
+.noLinkDecoration a.dynamic:hover { text-decoration: none; border-bottom: 1px dashed; }
+.noLinkDecoration a.noclick:hover { color: #000000; text-decoration: none; border-bottom: 1px dashed; }
+
+.attention { background-color: #FFFFD5; }
+.alertgreen { color: #009900; font-weight: bold; }
+.alert { color: #FF0000; font-weight: bold; }
+.topnav { font-family: verdana,arial,helvetica,sans-serif; font-size: 12px; text-decoration: none; }
+.topnav a:link, .topnav a:visited { text-decoration: none; color: #003399; }
+.topnav a:hover { text-decoration: none; color: #E47911; }
+.topnav-active a:link, .topnav-active a:visited { font-family: verdana,arial,helvetica,sans-serif; font-size: 12px; color: #E47911; text-decoration: none; }
+.eyebrow { font-family: verdana,arial,helvetica,sans-serif; font-size: 10px; font-weight: bold;text-transform: uppercase; text-decoration: none; color: #FFFFFF; }
+.eyebrow a:link { text-decoration: none; }
+.popover-tiny a, .popover-tiny a:visited { text-decoration: none; color: #003399; }
+.popover-tiny a:hover { text-decoration: none; color: #E47911; }
+.tabon a:hover, .taboff a:hover { text-decoration: underline; }
+.tabon div, .taboff div { margin-top: 7px; margin-left: 9px; margin-bottom: 5px; }
+.tabon a, .tabon a:visited { font-size: 10px; color: #FFCC66; font-family: verdana,arial,helvetica,sans-serif; text-decoration: none; text-transform: uppercase; font-weight: bold; line-height: 10px; }
+.taboff a, .taboff a:visited { font-size: 10px; color: #000000; font-family: verdana,arial,helvetica,sans-serif; text-decoration: none; text-transform: uppercase; font-weight: bold; line-height: 10px; }
+.indent { margin-left: 1em; }
+.half { font-size: .5em; }
+.list div { margin-bottom: 0.25em; text-decoration: none; }
+.hr-center { margin: 15px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: none; border-bottom-style: none; border-left-style: none; border-top-color: #999999; border-right-color: #999999; border-bottom-color: #999999; border-left-color: #999999; }
+
+
+.amabot_right .h1 { color: #E47911; font-size: .92em; }
+.amabot_right .amabot_widget .headline, .amabot_left .amabot_widget .headline { color: #E47911; font-size: .92em; display: block; font-weight: bold; }
+.amabot_left .h1 { color: #E47911; font-size: .92em; }
+.amabot_left .amabot_widget, .amabot_right .amabot_widget, .tigerbox { padding-top: 8px; padding-bottom: 8px; padding-left: 8px; padding-right: 8px; border-bottom: 1px solid #C9E1F4; border-left: 1px solid #C9E1F4; border-right: 1px solid #C9E1F4; border-top: 1px solid #C9E1F4; }
+
+.amabot_center div.unified_widget, .amabot_center .amabot_widget { font-size: 12px; }
+.amabot_right div.unified_widget, .amabot_right .amabot_widget { font-size: 12px; }
+.amabot_left div.unified_widget, .amabot_left .amabot_widget { font-size: 12px; }
+
+.rightArrow { color: #E47911; font-weight: bold; padding-right: 6px; }
+.nobullet { list-style-type: none }
+.homepageTitle { font-size: 28pt; font-family: 'Arial Bold', Arial; font-weight: 800; font-variant: normal; color: #80B6CE; line-height:1em; }
+div.unified_widget p { margin:0 0 0.5em 0; line-height:1.4em; }
+
+div.unified_widget h2 { color:#E47911; padding:0; }
+
+.amabot_right div.unified_widget .headline, .amabot_left div.unified_widget .headline { color: #E47911; font-size: .92em; display: block; font-weight: bold; }
+div.unified_widget sup { font-weight:normal; font-size: 75%; }
+div.unified_widget h2 sup { font-size: 50%; }
+
+td.amabot_left div.unified_widget h2, td.amabot_right div.unified_widget h2, div.amabot_left div.unified_widget h2, div.amabot_right div.unified_widget h2 { font-size:100%; margin:0 0 0.5em 0; }
+td.amabot_center div.unified_widget h2, div.amabot_center div.unified_widget h2 { font-size:135%; font-weight:bold; margin:0 0 0.35em 0px; }
+td.amabot_center div.unified_widget, div.amabot_center div.unified_widget { margin-left:10px; }
+td.amabot_center, div.amabot_center { padding:5px; }
+div.unified_widget ul { margin: 1em 0; padding: 0 0 0 15px; list-style-position:inside; }
+
+div.unified_widget ol { margin:0; padding:0 0 0 2.5em; }
+
+div.unified_widget a:link, div.unified_widget a:visited { text-decoration:underline; }
+div.unified_widget a:hover { text-decoration:underline; }
+div.unified_widget p.seeMore { clear:both; font-family:verdana,arial,helvetica,sans-serif; margin:0; padding-left:1.15em; text-indent: -1.15em; font-size:100%; font-weight:normal; }
+div.unified_widget p.seeMore a:link, div.unified_widget p.seeMore a:visited { text-decoration:underline; }
+div.unified_widget p.seeMore a:hover { text-decoration: underline; }
+div.unified_widget .carat, div.left_nav .carat { font-weight:bold; font-size:120%; font-family: verdana,arial,helvetica,sans-serif; color:#E47911; margin-right:0.20em; }
+div.unified_widget a img { border:0; }
+
+div.h_rule { clear:both; }
+div#centerrightspancol div.h_rule { clear:right; }
+div.unified_widget { margin-bottom:2em; clear:both; }
+div.unified_widget div.col1 { width: 100%; }
+div.unified_widget div.col2 { width: 49%; }
+div.unified_widget div.col3 { width: 32%; }
+div.unified_widget div.col4 { width: 24%; }
+div.unified_widget div.col5 { width: 19%; }
+div.unified_widget table { border:0; border-collapse:collapse; width:100%; }
+div.unified_widget td { padding:0 8px 8px 0; vertical-align:top; }
+div.unified_widget table.col1 td { width:100%; }
+div.unified_widget table.col2 td { width:49%; }
+div.unified_widget table.col3 td { width:32%; }
+div.unified_widget table.col4 td { width:24%; }
+div.unified_widget table.col5 td { width:19%; }
+div.unified_widget td.bottom { vertical-align:baseline; }
+div.unified_widget table h4, div.unified_widget h4 { color:#000; font-size:100%; font-weight:normal; margin:0; padding:0; }
+div.rcmBody div.prodImage, amabot_widget div.prodImage {float:left; margin:0px 0.5em 0.25em 0px;}
+
+
+td.amabot_right div.unified_widget, td.amabot_left div.unified_widget, div.amabot_right div.unified_widget, div.amabot_left div.unified_widget { border: 1px solid #C9E1F4; padding: 8px; margin-bottom:20px; }
+
+* html td.amabot_right div.unified_widget, * html div.amabot_right div.unified_widget { height:100%; }
+* html td.amabot_left div.unified_widget, * html div.amabot_left div.unified_widget { height:100%; }
+
+div.rcmBody, amabot_widget div.rcmBody { line-height:1.4em; }
+div.rcmBody a:link, div.rcmBody a:visited { text-decoration: underline; }
+
+div.rcmBody p.seeMore, amabot_widget div.rcmBody p.seeMore { margin-top:0.5em; }
+div.rcmBody div.bannerImage { text-align:center; }
+div.rcmBody h2 span.homepageTitle { display:block; margin-bottom:-0.3em; margin-top:-0.12em; line-height:1em; }
+div.rcmBody h2 img { float:none; }
+table.coopTable div.rcmBody .headline { font-size: 110%; }
+table.coopTable div.rcmBody h2 { font-size: 110%; font-weight:bold; }
+table.promo div.rcmBody h2 { font-size: 100%; font-weight:bold; }
+
+div.left_nav { font-family: Arial, sans-serif; font-size:100%; margin:0; line-height:1.05em; width:100%; border: 1px solid #C9E1F4; padding-bottom:10px; }
+div.left_nav h2 { margin:0 0 0 0; color: #000000; font-weight: bold; line-height: 1.25em; font-size: 100%; font-family: verdana,arial,helvetica,sans-serif; padding: 3px 6px; background-color: #EAF3FE; }
+div.left_nav h3 { font-family: verdana,arial,helvetica,sans-serif; margin:0.5em 0 0.4em 0.5em; color: #E47911; font-weight: bold; line-height: 1em; font-size:100%; padding-right:0.5em; }
+div.left_nav ul { margin:0; padding:0; }
+div.left_nav li, div.left_nav p { list-style: none; margin:0.5em 0.5em 0 1em; line-height:1.2em; }
+
+div.left_nav hr { margin: 1em 0.5em; border-top:0; border-left:0; border-right:0; border-bottom: 1px dashed #cccccc; }
+
+div.left_nav a:link, div.left_nav a:visited { color: #003399; text-decoration: none; font-family: Arial, sans-serif; }
+div.left_nav a:hover { color: #2a70fc; text-decoration: underline; }
+div.left_nav p.seeMore { padding-left:0.9em; text-indent:-0.9em; margin-top: 0.35em; margin-bottom: 1em; }
+
+div.left_nav p.seeMore a:link, div.left_nav p.seeMore a:visited { text-decoration:none; }
+div.left_nav p.seeMore a:hover { text-decoration:underline; }
+div.seller_central li { font-size:95%; }
+
+div.leftnav_popover { width:35em; border:3px solid #ededd3; padding:10px; }
+
+div.leftnav_popover li { font-size: 100%; }
+
+div.leftnav_popover h2 { font-family:verdana,arial,helvetica,sans-serif; margin:0 0 0.5em 0; color:#E47911; line-height: 1em; font-size:100%; padding-right:0.5em; background-color: #FFFFFF; padding-left:0; }
+
+div.leftnav_popover ul.popover_col { float:left; width:33%; margin:0; padding:0; }
+div.leftnav_popover ul.popover_col li { list-style:none; font-size:90%; line-height:1.5em; line-height:1.2em; margin: 0 5px 0.7em 0 }
+div.leftnav_popover ul.popover_col li a { text-decoration:none; }
+div.leftnav_popover ul.popover_col li a:hover { text-decoration:underline; }
+div.leftnav_popover p.seeMore { margin-left:0; }
+div.leftnav_popover div.h_rule_popup { clear:left; margin-bottom: 5px; border-bottom:1px dashed #cccccc; }
+
+div.asinItem { float:left; margin-bottom:1em; width:32%; }
+div.asinTextBlock { padding:0 8px 8px 0; }
+div.asinItem div.prodImage { height:121px; display:table-cell; vertical-align:bottom; }
+div.asinItem div.localImage { display:table-cell; vertical-align:bottom; }
+
+div.asinItem span { margin: 0.5em 0 0.25em 0; }
+div.asinItem ul { margin:0; padding:0 0 0.5em 1.3em; text-indent: -1.3em; font-size:90%; }
+
+div.asinTitle {padding-top:3px; padding-bottom:2px;}
+div.row { clear:both; }
+body.dp {}
+body.dp div.h_rule { clear:none; }
+body.dp div.unified_widget { clear:none; }
+div.asinCoop div.asinItem { float:none; width:100%;}
+div.asinCoop_header {}
+div.asinCoop_footer {}
+
+div.newAndFuture div.asinItem ul { font-size:100%; }
+div.newAndFuture div.asinItem li { list-style-position: outside; margin:0 0 0.35em 20px; padding:0; text-indent: 0; }
+div.newAndFuture h3 { font-size:100%; margin:1em 0 ; }
+div.newAndFuture a:link, div.newAndFuture a:visited { text-decoration:underline; }
+div.newAndFuture a:hover { text-decoration:underline; }
+div.newAndFuture p.seeMore { margin:-0.75em 0 0 35px; }
+
+div.unified_widget ol.topList { margin: 0; padding: 0; list-style: none; }
+div.unified_widget ol.topList li { list-style: none; clear: both; display: list-item; padding-top: 6px; }
+div.unified_widget ol.topList .productImage { display: block; float: left;vertical-align: top;text-align: center;width:60px; }
+div.unified_widget ol.topList .productText { display: block; float: left; padding-left:10px; vertical-align: top; }
+:root div.unified_widget span.productImage { display: table-cell; float: none; }
+:root div.unified_widget span.productText { display: table-cell; float: none; }
+div.unified_widget dl.priceBlock {margin:0 0 0.45em 0;}
+div.unified_widget dl.priceBlock dt {clear:left; font-weight:bold; float:left; margin:0 0.3em 0 0;}
+div.unified_widget dl.priceBlock dd {margin:0 0 0.2em 0;}
+div.unified_widget .bold {font-weight:bold;}
+div.unified_widget .byline { font-size: 95%; font-weight: normal; }
+table.thirdLvlNavContent div.blurb { margin:10px; }
+
+div.pageBanner h1 { font-family:Arial, Helvetica, sans-serif; font-weight:normal; font-size:225%; color: #e47911; letter-spacing:-0.03em; margin:0; }
+div.pageBanner p { font-size:90%; color:#888888; margin:0; }
+
+div.pageBanner h1.bkgnd { background-repeat:no-repeat; background-color:#FFFFFF; overflow:hidden; text-indent:-100em; }
+
+div.blurb div.title
+{
+ font-weight:bold; padding-top:5px; padding-bottom:2px;
+}
+
+
+--></style>
+
+
+
+<style type="text/css">
+<!--
+
+.leftNav { font-family: tahoma, sans-serif; margin-bottom: 5px; margin-left: 6px; line-height: 1em;
+}
+.leftNavTitle { font-family: tahoma, sans-serif; margin-top: 10px;
+ margin-bottom: 6px; color: #c60; font-weight: bold; line-height: 1em;
+}
+.hr-leftbrowse { border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px;
+ border-top-style: dashed; border-right-style: none; border-bottom-style: none; border-left-style: none;
+ border-top-color: #999999; border-right-color: #999999; border-bottom-color: #999999; border-left-color: #999999;
+ margin-top: 10px; margin-right: 5px; margin-bottom: 0px; margin-left: 5px;
+}
+
+.leftNav a:link, .leftNav a:visited, .amabot_left .amabot_widget a:link, .amabot_left .amabot_widget a:visited { text-decoration: none;
+ font-family: tahoma, sans-serif;
+}
+.leftNav a:hover, .amabot_left .amabot_widget a:hover { color: #c60; text-decoration: underline; }
+
+.browsetitle {
+ font-family: tahoma,sans-serif;
+ line-height: 11px;
+ font-size: 14px;
+ font-weight: bold;
+ color: white;
+}
+
+div.amabot_center div.unified_widget h2 { border-bottom:1px solid #ddd; padding-bottom:2px; }
+
+-->
+</style>
+
+
+
+
+
+<style>
+.tcg h2, .tcg h2 a {font-family:Arial,Verdana,Helvetica,sans-serif;}
+.tcg1 .hdlnblk h2, .tcg2 .hdlnblk h2 {
+ font-size:37px;
+ line-height:1em;
+}
+.tcg1 .subhed {
+ font-size:23px;
+}
+.tcg4 .hdlnblk h2 {
+ font-size:29px;
+}
+.tcg4 .subhed {
+ font-size:1.6em;
+}
+</style>
+
+
+<script language="Javascript1.1" type="text/javascript">
+<!--
+function amz_js_PopWin(url,name,options){
+ var ContextWindow = window.open(url,name,options);
+ ContextWindow.focus();
+ return false;
+}
+//-->
+</script>
+
+
+
+
+<script type="text/javascript">
+ var gwEH = {
+ _f: [],
+ afterFold: function(callback) {
+ this._f.push(callback);
+ }
+ }
+</script>
+
+
+
+
+
+<link title="Amazon Search Suggestions" rel="search" type="application/opensearchdescription+xml" href="http://d2lo25i6d3q8zm.cloudfront.net/browser-plugins/AmazonSearchSuggestionsOSD.Firefox.xml">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+
+<meta name="verify-v1" content="9vpzZueNucS8hPqoGpZ5r10Nr2_sLMRG3AnDtNlucc4" />
+<meta name="description" content="Online shopping from the earth's biggest selection of books, magazines, music, DVDs, videos, electronics, computers, software, apparel & accessories, shoes, jewelry, tools & hardware, housewares, furniture, sporting goods, beauty & personal care, broadband & dsl, gourmet food & just about anything else."/>
+
+<meta name="keywords" content="Amazon, Amazon.com, Books, Online Shopping, Book Store, Magazine, Subscription, Music, CDs, DVDs, Videos, Electronics, Video Games, Computers, Cell Phones, Toys, Games, Apparel, Accessories, Shoes, Jewelry, Watches, Office Products, Sports & Outdoors, Sporting Goods, Baby Products, Health, Personal Care, Beauty, Home, Garden, Bed & Bath, Furniture, Tools, Hardware, Vacuums, Outdoor Living, Automotive Parts, Pet Supplies, Broadband, DSL"/>
+<title>Amazon.com: Online Shopping for Electronics, Apparel, Computers, Books, DVDs & more</title>
+
+
+
+
+
+<link type='text/css' href='http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/amazonJQ/amazonJQ-combined-coreCSS-8516._V231938213_.css' rel='stylesheet'>
+<link type='text/css' href='http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/navbarCSSUSTFS/navbarCSSUSTFS-navbarUSTFS-4179._V202086600_.css' rel='stylesheet'>
+<link type='text/css' href='http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/websiteGridCSS/websiteGridCSS-websiteGridCSS-61831._V229339557_.css' rel='stylesheet'>
+<link type='text/css' href='http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/amazonShoveler/amazonShoveler-amazonShovelerCss-12802._V235369351_.css' rel='stylesheet'>
+<style type="text/css">
+
+/* non-sprited */
+.ap_popover_unsprited .ap_body .ap_left { background-image: url(http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/po_left_17._V248144977_.png); }
+.ap_popover_unsprited .ap_body .ap_right { background-image: url(http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/po_right_17._V248144979_.png); }
+.ap_popover_unsprited .ap_header .ap_left { background-image: url(http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/po_top_left._V265110087_.png); }
+.ap_popover_unsprited .ap_header .ap_right { background-image: url(http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/po_top_right._V265110087_.png); }
+.ap_popover_unsprited .ap_header .ap_middle { background-image: url(http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/po_top._V265110086_.png); }
+.ap_popover_unsprited .ap_footer .ap_left { background-image: url(http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/po_bottom_left._V265110084_.png); }
+.ap_popover_unsprited .ap_footer .ap_right { background-image: url(http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/po_bottom_right._V265110087_.png); }
+.ap_popover_unsprited .ap_footer .ap_middle { background-image: url(http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/po_bottom._V265110084_.png); }
+
+/* Everything else -- sprited */
+.ap_popover_sprited .ap_body .ap_left,
+.ap_popover_sprited .ap_body .ap_right {
+ background-image: url(http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/light/sprite-v._V219326283_.png);
+}
+
+
+.ap_popover_sprited .ap_header .ap_left,
+.ap_popover_sprited .ap_header .ap_right,
+.ap_popover_sprited .ap_header .ap_middle,
+.ap_popover_sprited .ap_footer .ap_left,
+.ap_popover_sprited .ap_footer .ap_right,
+.ap_popover_sprited .ap_footer .ap_middle,
+.ap_popover_sprited .ap_closebutton {
+ background-image: url(http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/light/sprite-h._V219326280_.png);
+}
+
+.ap_popover_sprited .ap_body .ap_right-arrow, .ap_popover_sprited .ap_body .ap_left-arrow {
+ background-image: url(http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/light/sprite-arrow-v._V219326286_.png);
+}
+
+</style>
+
+ <script type="text/javascript">
+
+ var amznJQ = {
+ _a: [], _s: [], _d: [], _l: [], _o: [], _c: [], _cs: [],
+ addLogical: function() {
+ this._l.push(arguments)
+ },
+ addStyle: function() {
+ this._s.push(arguments)
+ },
+ declareAvailable: function() {
+ this._d.push(arguments)
+ },
+ available: function() {
+ this._a.push(arguments)
+ },
+ onReady: function() {
+ this._o.push(arguments)
+ },
+ onCompletion: function() {
+ this._c.push(arguments)
+ },
+ completedStage: function() {
+ this._cs.push(arguments)
+ },
+
+ strings: {},
+ chars: {
+ EOL: String.fromCharCode(0x0A),
+ SQUOTE: String.fromCharCode(0x27),
+ DQUOTE: String.fromCharCode(0x22),
+ BACKSLASH: String.fromCharCode(0x5C),
+ YEN: String.fromCharCode(0xA5)
+ }
+ }
+
+
+
+</script>
+
+ </head>
+ <body>
+
+
+<div style="position:absolute; left:0px; top:-500px; width:1px; height:1px; overflow:hidden;">
+<a href="http://www.amazon.com/access">A different version of this web site containing similar content optimized for screen readers and mobile devices may be found at the web address: www.amazon.com/access</a></div>
+
+
+<a name="top"></a>
+<!-- BeginNav -->
+
+<script type='text/javascript'><!--
+ function Navbar(options) {
+ options = options || {};
+
+ this._loadedCount = 0;
+ this._hasUedata = (typeof uet == 'function');
+ this._finishLoadQuota = options['finishLoadQuota'] || 2;
+ this._startedLoading = false;
+
+ this._btfFlyoutContents = [];
+
+ this.addToBtfFlyoutContents = function(content, callback) {
+ this._btfFlyoutContents.push({content: content, callback: callback});
+ }
+
+ this.getBtfFlyoutContents = function() {
+ return this._btfFlyoutContents;
+ }
+
+ this.loading = function() {
+ if (!this._startedLoading && this._isReportingEvents()) {
+ uet('ns');
+ }
+
+ this._startedLoading = true;
+ }
+
+ this.componentLoaded = function() {
+ this._loadedCount++;
+ if (this._startedLoading && this._isReportingEvents() && (this._loadedCount == this._finishLoadQuota)) {
+ uet('ne');
+ }
+ }
+
+ this._isReportingEvents = function() {
+ return this._hasUedata;
+ }
+ }
+
+ _navbar = new Navbar({ finishLoadQuota: 2});
+ _navbar.loading();
+
+ amznJQ.available('jQuery', function() {
+ _navbar._navPopoverBorderSpriteImage_h = new Image();
+ _navbar._navPopoverBorderSpriteImage_h.src = 'http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-h._V264091373_.gif';
+ _navbar._navPopoverBorderSpriteImage_v = new Image();
+ _navbar._navPopoverBorderSpriteImage_v.src = 'http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-v._V264091375_.gif';
+ });
+
+ window.navSAFlyoutDelay = 0;
+
+
+--></script>
+
+<style type="text/css"><!--
+
+
+.navSprite,
+.navSpriteH,
+.navSaJs li.navSaMenuItem {
+ background-image: url(http://g-ecx.images-amazon.com/images/G/01/gno/images/orangeBlue/navPackedSprites-US-15._V202471683_.png);
+}
+
+.navSpritePopoverH {
+ background-image: url(http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-h._V264091373_.gif);
+}
+
+.navSpritePopoverV {
+ background-image: url(http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-v._V264091375_.gif);
+}
+
+#navbar .tiny,
+.navbar .tiny,
+.navShopAllPopLevel .tiny,
+.navShopAllPopNonRootLevel .tiny {
+ font-family: Arial, sans-serif;
+ font-size: x-small;
+}
+
+.nav_popover .header .l {
+ background: url(http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-v._V264091375_.gif) -14px 0px no-repeat;
+}
+
+.nav_popover .header .r {
+ background: url(http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-h._V264091373_.gif) 0px -14px no-repeat;
+}
+
+.nav_popover .header .c {
+ background: url(http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-h._V264091373_.gif) 0px 0px repeat-x;
+}
+
+.nav_popover .footer .l {
+ background: url(http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-h._V264091373_.gif) 0px -21px no-repeat;
+}
+
+.nav_popover .footer .r {
+ background: url(http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-v._V264091375_.gif) -21px 0px no-repeat;
+}
+
+.nav_popover .footer .c {
+ background: url(http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-h._V264091373_.gif) 0px -7px repeat-x;
+}
+
+.nav_popover .body .l {
+ background: url(http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-v._V264091375_.gif) 0px 0px repeat-y;
+}
+
+.nav_popover .body .r {
+ background: url(http://g-ecx.images-amazon.com/images/G/01/gno/popover/sprites-v._V264091375_.gif) -7px 0px repeat-y;
+}
+--></style>
+<img src="http://g-ecx.images-amazon.com/images/G/01/gno/images/orangeBlue/navPackedSprites-US-15._V202471683_.png" style="display:none" alt=""/>
+<img src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V42752373_.gif" style="display:none" alt=""/>
+
+
+
+
+
+
+
+<!-- Tilu -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div id="navbar" style="padding:0px;" class="navbar">
+
+
+<table border="0" cellspacing="0" cellpadding="0" width="100%">
+<tr>
+
+ <td rowspan="2" align='left' width="180" valign="bottom"><a id="navLogo" class="gateway" href="/ref=gno_logo">
+ <span id="navLogoPrimary" class="navSprite"><span>amazon.com</span></span>
+ <span id="navLogoSecondary" class="navSprite nonPrime"></span>
+</a></td>
+ <td width="100%" align='left' height="26">
+ <table width="100%" id="welcomeRowTable" cellspacing="0" cellpadding="0" border="0"><tr>
+ <td align="left" valign="bottom" class="navGreetingBkg"><div id="navidWelcomeMsg" style="white-space: nowrap;">
+ <span class="navGreeting">Hello.</span>
+
+ <span class="navMessage" style="white-space: nowrap;"><a href="/gp/yourstore/ref=pd_irl_gw?ie=UTF8&signIn=1" rel="nofollow">Sign in</a> to get personalized recommendations.</span>
+ <span class="navMessage" style="white-space: nowrap;">New customer? <a href="/gp/flex/sign-out.html/ref=pd_irl_gw_r?ie=UTF8&path=%2Fgp%2Fyourstore&signIn=1&useRedirectOnSuccess=1&action=sign-out" rel="nofollow">Start here</a>.</span>
+</div></td>
+ <td align="left"> </td>
+ <td id="navSwmSlot" align="right" valign="center" height="26">
+<style>
+/* general code */
+#marqueepd-outer { display: none; }
+#marqueepd-outer, #marqueepd-inner {
+width: 100%;
+height: 250px;
+padding: 0;
+margin: 0;
+visibility: hidden;
+}
+#marqueepd-wrapper {
+display: none;
+width: 100%;
+height: 0px;
+padding: 0;
+margin: 0;
+background: #030812;
+}
+#marqueepd-inner {
+min-width: 980px;
+position: relative;
+text-align: center;
+}
+.adNoOutline {
+outline: none;
+}
+#marqueepd-outer {
+width: 99%;
+background: #030812;
+position: absolute;
+z-index: 2;
+}
+/* ad-specific code */
+#nav-sitewide-msg_443-close-button_img, #nav-sitewide-msg_443-close-button {
+height: 35px;
+width: 95px;
+position: absolute;
+}
+#nav-sitewide-msg_443-close-button_img {
+border: none;
+right: 0;
+top: 0;
+/* margin: 7px 17px 7px 7px; */
+}
+#nav-sitewide-msg_443-close-button {
+right: 17px;
+top: 0pt;
+background-image: url(http://g-ecx.images-amazon.com/images/G/01/erm/marqueePushdown/motorola/close._V216169513_.png);
+z-index: 999;
+cursor: pointer;
+}
+#nav-sitewide-msg_443_movie_wrap {
+height: 250px;
+width: 980px;
+margin: 0 auto 0 auto;
+visibility: hidden;
+}
+</style>
+
+
+
+<script type="text/javascript">
+if(typeof amznJQ !== "undefined"){
+ if (typeof window.d16g === "undefined") {
+ window.d16g = {};
+ d16g.adDebug = false;
+
+d16g.loadJs = function(jsUrl) {
+ var scriptElem = document.createElement('script');
+ scriptElem.src = jsUrl;
+ document.getElementsByTagName('head')[0].appendChild(scriptElem);
+};
+
+/* The following is a global declarations comment that is used by JSLint to recognize global variables */
+/*global window,document,navigator,Image,ActiveXObject,console,swfobject,jQuery,amznJQ,d16g*/
+
+/* d16g init */
+d16g.types = {};
+d16g.ads = {};
+
+d16g.adFeedback = {};
+
+d16g.adFeedback.constants = function(){
+ return {
+ USER_ACTION:"userAction",
+ WIDGET_OPEN:"widgetOpened",
+ WIDGET_SUBMITTED:"widgetSubmitted",
+ CHAR_LIMIT:1000
+ };
+};
+
+d16g.adFeedback.logOpen = function(my){
+ var constants = d16g.adFeedback.constants();
+ var params = d16g.adFeedback.getMetaData(my);
+ params[constants.USER_ACTION] = constants.WIDGET_OPEN;
+ d16g.adFeedback.sendClog(params);
+};
+
+d16g.adFeedback.log = function(my){
+ var constants = d16g.adFeedback.constants();
+ var params = d16g.adFeedback.getMetaData(my);
+ var feedbackContainerId = "#adfeedbackpopover" + my.randomId;
+
+ params[constants.USER_ACTION] = constants.WIDGET_SUBMITTED;
+
+ jQuery(feedbackContainerId + " input").each(function(){
+ if ((this.type === "radio") || (this.type === "checkbox")) {
+ if (this.checked) {
+ params[this.name] = this.value;
+ }
+ // get data from text/hidden inputs
+ } else {
+ params[this.name] = this.value;
+ }
+ });
+ // get the data from textareas
+ jQuery(feedbackContainerId + " textarea").each(function(){
+ var tmp = this.value.substring(0, constants.CHAR_LIMIT);
+ if(my.locale.toLowerCase() === "ja_jp" ){
+ params[this.name] = d16g.Base64.encodeBinary(tmp);
+ }else{
+ params[this.name] = tmp;
+ }
+ });
+ // get the data from selects
+
+ jQuery(feedbackContainerId + " select").each(function(){
+ params[this.name] = this.value;
+ });
+
+ d16g.adFeedback.sendClog(params);
+};
+
+
+d16g.adFeedback.getMetaData = function(my){
+ var params = {};
+ params.browser = navigator.userAgent;
+ params.impressionId = my.impressionId;
+ params.pagetype = my.pageType;
+ params.pagesubtype = my.pageSubType;
+ params.slot = my.slotName;
+ params.questionGroupId = my.questionGroupId;
+ params.screenRes = "h=" + jQuery(window).height() + ",w=" + jQuery(window).width();
+ params.adContentId = my.adContentId;
+ ids = d16g.adFeedback.getCreativeIdentifiers(my);
+ params.cid = ids.cid;
+ params.adId = ids.adId;
+ return params;
+};
+
+d16g.adFeedback.getCreativeIdentifiers = function(my){
+ var retVal = {};
+ var iframeSel = "#cachebust_" + my.randomId;
+ jQuery(iframeSel).contents().each( function() {
+ retVal.cid = jQuery.trim(jQuery(this).find(".d16g-ad-info > .d16g-cid").html());
+ retVal.adId = jQuery.trim(jQuery(this).find(".d16g-ad-info > .d16g-aid").html());
+ });
+ return retVal;
+}
+
+d16g.adFeedback.sendClog = function(params){
+ //log it!
+ d16g.log("data to be logged:", this);
+ for (var i in params) {
+ if (params.hasOwnProperty(i)) {
+ d16g.log('key is: ' + i + ', value is: ' + params[i], this);
+ }
+ }
+ if (typeof(window.clientLogger) != 'undefined') {
+ d16g.log("sendingCLOG", this);
+ window.clientLogger.sendCLOGEntry("displayad", "feedback", params);
+ }
+};
+/*
+$Id: //brazil/src/appgroup/advertising/apps/GrandPrixAdTemplates/prerelease/templates/amazon/d16g/createAd.ftl#4 $
+$Revision: #4 $
+$Author: ranton $
+$Change: 2775711 $
+$DateTime: 2009/11/11 00:11:23 $
+*/
+
+/**
+* createAd: generates a new ad with adId and adds to the d16g.ads object
+* @param adId string
+* @return void
+*/
+d16g.createAd = function (configHash) {
+ d16g.log("d16g.createAd(" + configHash + ")");
+
+ d16g.createEventQueue('reposition');
+
+ var ad = d16g.make(d16g.types.Ad);
+ ad.adId = configHash.adId;
+ ad.adName = configHash.adName;
+ ad.getLabel = function () { return 'd16g.ads["' + this.adName + '"]'; };
+ ad.adType = configHash.adType;
+ d16g.log('.createAd(): ad instantiated, adName= "' + ad.adName + '"', this);
+ ad.createStateMachine(configHash.initialState, configHash.model);
+ var i;
+ for(i = 0; i < configHash.components.length; i++) {
+ ad.createComponent(configHash.components[i]);
+ }
+ var cb = configHash.callbacks;
+ for(i = 0; i < cb.length; i++) {
+ var statement = 'ad.components["' + cb[i][2] + '"].' + cb[i][1];
+ var func = eval(statement); // despite being 'evil', this eval is necessary to get a dynamically-generated reference to a javascript function
+ ad.stateMachine.onState(cb[i][0], func);
+ }
+ ad.clickUrls = {};
+ var cu = configHash.clickUrls;
+ for(var key in cu) {
+ ad.clickUrls[key] = cu[key].urls;
+ d16g.log('.createAd(): added "' + key + '" clickUrl', this);
+ }
+ this.ads[configHash.adName] = ad;
+ d16g.log(ad.getLabel() + ' added to d16g object');
+};
+d16g.loadJs = function(jsUrl) {
+ var scriptElem = document.createElement('script');
+ scriptElem.src = jsUrl;
+ document.getElementsByTagName('head')[0].appendChild(scriptElem);
+};/*
+$Id: //brazil/src/appgroup/advertising/apps/GrandPrixAdTemplates/prerelease/templates/amazon/d16g/logging.ftl#2 $
+$Revision: #2 $
+$Author: asaurav $
+$Change: 2752128 $
+$DateTime: 2009/10/30 00:41:20 $
+*/
+
+// logging methods
+d16g.getLabel = function() { return "d16g"; };
+
+/**
+* The getLabel() method of the passed object will be prepended to the error msg, if defined.
+* user can directly append label with method name and/or include : in the msg param
+* both examples below produce the same results...
+* example1: d16g.log(".myMethod(): here is my message", this);
+* example2: d16g.log(this.getLabel() + ".myMethod(): here is my message");
+*/
+d16g.getLogMsg = function(msg, that) {
+ if (typeof that !== "undefined" && typeof that.getLabel === "function"){
+ return that.getLabel() + msg;
+ } else{
+ return msg;
+ }
+};
+
+d16g.log = function (msg, that) {
+ if (typeof console !== 'undefined' && typeof console.log === 'function' && d16g.adDebug === true) {
+ console.log(d16g.getLogMsg(msg, that));
+ }
+};
+d16g.warn = function (msg, that) {
+ if (typeof console !== 'undefined' && typeof console.warn === 'function' && d16g.adDebug === true) {
+ console.warn(d16g.getLogMsg(msg, that));
+ }
+};
+d16g.info = function (msg, that) {
+ if (typeof console !== 'undefined' && typeof console.info === 'function' && d16g.adDebug === true) {
+ console.info(d16g.getLogMsg(msg, that));
+ }
+};
+d16g.error = function (msg, that) {
+ if (typeof console !== 'undefined' && typeof console.error === 'function' && d16g.adDebug === true) {
+ console.error(d16g.getLogMsg(msg, that));
+ }
+};
+d16g.objToString = function (o) {
+ if (d16g.adDebug === true) {
+ var out = "";
+ var comma = false;
+ for (var k in o) {
+ if (true) { // for JSLint
+ if (comma === true) { out += ', '; } else { comma = true; }
+ out += k + ':' + o[k];
+ }
+ }
+ }
+ return out;
+};
+
+d16g.arrToString = function (a) {
+ if (d16g.adDebug === true) {
+ var out = "";
+ var comma = false;
+ for (var i=0; i<a.length; i++) {
+ if (true) { // for JSLint
+ if (comma === true) { out += ', '; } else { comma = true; }
+ out += a[i];
+ }
+ }
+ }
+ return out;
+};
+/*
+$Id: //brazil/src/appgroup/advertising/apps/GrandPrixAdTemplates/prerelease/templates/amazon/d16g/swfobject.ftl#3 $
+$Revision: #3 $
+$Author: asaurav $
+$Change: 2752128 $
+$DateTime: 2009/10/30 00:41:20 $
+
+# Description: This is the swfobject source code as is.
+*/
+
+/* SWFObject v2.2 <http://code.google.com/p/swfobject/>
+is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
+*/
+
+d16g.swfobject = function() {
+
+var UNDEF = "undefined",
+ OBJECT = "object",
+ SHOCKWAVE_FLASH = "Shockwave Flash",
+ SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash",
+ FLASH_MIME_TYPE = "application/x-shockwave-flash",
+ EXPRESS_INSTALL_ID = "SWFObjectExprInst",
+ ON_READY_STATE_CHANGE = "onreadystatechange",
+
+ win = window,
+ doc = document,
+ nav = navigator,
+
+ plugin = false,
+ domLoadFnArr = [main],
+ regObjArr = [],
+ objIdArr = [],
+ listenersArr = [],
+ storedAltContent,
+ storedAltContentId,
+ storedCallbackFn,
+ storedCallbackObj,
+ isDomLoaded = false,
+ isExpressInstallActive = false,
+ dynamicStylesheet,
+ dynamicStylesheetMedia,
+ autoHideShow = true,
+
+/* Centralized function for browser feature detection
+ - User agent string detection is only used when no good alternative is possible
+ - Is executed directly for optimal performance
+*/
+ua = function() {
+ var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF,
+ u = nav.userAgent.toLowerCase(),
+ p = nav.platform.toLowerCase(),
+ windows = p ? /win/.test(p) : /win/.test(u),
+ mac = p ? /mac/.test(p) : /mac/.test(u),
+ webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit
+ ie = !+"\v1", // feature detection based on Andrea Giammarchi's solution: http://webreflection.blogspot.com/2009/01/32-bytes-to-know-if-your-browser-is-ie.html
+ playerVersion = [0,0,0],
+ d = null;
+ if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
+ d = nav.plugins[SHOCKWAVE_FLASH].description;
+ if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+
+ plugin = true;
+ ie = false; // cascaded feature detection for Internet Explorer
+ d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
+ playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
+ playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
+ playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0;
+ }
+ }
+ else if (typeof win.ActiveXObject != UNDEF) {
+ try {
+ var a = new ActiveXObject(SHOCKWAVE_FLASH_AX);
+ if (a) { // a will return null when ActiveX is disabled
+ d = a.GetVariable("$version");
+ if (d) {
+ ie = true; // cascaded feature detection for Internet Explorer
+ d = d.split(" ")[1].split(",");
+ playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
+ }
+ }
+ }
+ catch(e) {}
+ }
+ return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac };
+}(),
+
+/* Cross-browser onDomLoad
+ - Will fire an event as soon as the DOM of a web page is loaded
+ - Internet Explorer workaround based on Diego Perini's solution: http://javascript.nwbox.com/IEContentLoaded/
+ - Regular onload serves as fallback
+*/
+onDomLoad = function() {
+ if (!ua.w3) { return; }
+ if ((typeof doc.readyState != UNDEF && doc.readyState == "complete") || (typeof doc.readyState == UNDEF && (doc.getElementsByTagName("body")[0] || doc.body))) { // function is fired after onload, e.g. when script is inserted dynamically
+ callDomLoadFunctions();
+ }
+ if (!isDomLoaded) {
+ if (typeof doc.addEventListener != UNDEF) {
+ doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false);
+ }
+ if (ua.ie && ua.win) {
+ doc.attachEvent(ON_READY_STATE_CHANGE, function() {
+ if (doc.readyState == "complete") {
+ doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee);
+ callDomLoadFunctions();
+ }
+ });
+ if (win == top) { // if not inside an iframe
+ (function(){
+ if (isDomLoaded) { return; }
+ try {
+ doc.documentElement.doScroll("left");
+ }
+ catch(e) {
+ setTimeout(arguments.callee, 0);
+ return;
+ }
+ callDomLoadFunctions();
+ })();
+ }
+ }
+ if (ua.wk) {
+ (function(){
+ if (isDomLoaded) { return; }
+ if (!/loaded|complete/.test(doc.readyState)) {
+ setTimeout(arguments.callee, 0);
+ return;
+ }
+ callDomLoadFunctions();
+ })();
+ }
+ addLoadEvent(callDomLoadFunctions);
+ }
+}();
+
+function callDomLoadFunctions() {
+ if (isDomLoaded) { return; }
+ try { // test if we can really add/remove elements to/from the DOM; we don't want to fire it too early
+ var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span"));
+ t.parentNode.removeChild(t);
+ }
+ catch (e) { return; }
+ isDomLoaded = true;
+ var dl = domLoadFnArr.length;
+ for (var i = 0; i < dl; i++) {
+ domLoadFnArr[i]();
+ }
+}
+
+function addDomLoadEvent(fn) {
+ if (isDomLoaded) {
+ fn();
+ }
+ else {
+ domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+
+ }
+}
+
+/* Cross-browser onload
+ - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/
+ - Will fire an event as soon as a web page including all of its assets are loaded
+ */
+function addLoadEvent(fn) {
+ if (typeof win.addEventListener != UNDEF) {
+ win.addEventListener("load", fn, false);
+ }
+ else if (typeof doc.addEventListener != UNDEF) {
+ doc.addEventListener("load", fn, false);
+ }
+ else if (typeof win.attachEvent != UNDEF) {
+ addListener(win, "onload", fn);
+ }
+ else if (typeof win.onload == "function") {
+ var fnOld = win.onload;
+ win.onload = function() {
+ fnOld();
+ fn();
+ };
+ }
+ else {
+ win.onload = fn;
+ }
+}
+
+/* Main function
+ - Will preferably execute onDomLoad, otherwise onload (as a fallback)
+*/
+function main() {
+ if (plugin) {
+ testPlayerVersion();
+ }
+ else {
+ matchVersions();
+ }
+}
+
+/* Detect the Flash Player version for non-Internet Explorer browsers
+ - Detecting the plug-in version via the object element is more precise than using the plugins collection item's description:
+ a. Both release and build numbers can be detected
+ b. Avoid wrong descriptions by corrupt installers provided by Adobe
+ c. Avoid wrong descriptions by multiple Flash Player entries in the plugin Array, caused by incorrect browser imports
+ - Disadvantage of this method is that it depends on the availability of the DOM, while the plugins collection is immediately available
+*/
+function testPlayerVersion() {
+ var b = doc.getElementsByTagName("body")[0];
+ var o = createElement(OBJECT);
+ o.setAttribute("type", FLASH_MIME_TYPE);
+ var t = b.appendChild(o);
+ if (t) {
+ var counter = 0;
+ (function(){
+ if (typeof t.GetVariable != UNDEF) {
+ var d = t.GetVariable("$version");
+ if (d) {
+ d = d.split(" ")[1].split(",");
+ ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
+ }
+ }
+ else if (counter < 10) {
+ counter++;
+ setTimeout(arguments.callee, 10);
+ return;
+ }
+ b.removeChild(o);
+ t = null;
+ matchVersions();
+ })();
+ }
+ else {
+ matchVersions();
+ }
+}
+
+/* Perform Flash Player and SWF version matching; static publishing only
+*/
+function matchVersions() {
+ var rl = regObjArr.length;
+ if (rl > 0) {
+ for (var i = 0; i < rl; i++) { // for each registered object element
+ var id = regObjArr[i].id;
+ var cb = regObjArr[i].callbackFn;
+ var cbObj = {success:false, id:id};
+ if (ua.pv[0] > 0) {
+ var obj = getElementById(id);
+ if (obj) {
+ if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { // Flash Player version >= published SWF version: Houston, we have a match!
+ setVisibility(id, true);
+ if (cb) {
+ cbObj.success = true;
+ cbObj.ref = getObjectById(id);
+ cb(cbObj);
+ }
+ }
+ else if (regObjArr[i].expressInstall && canExpressInstall()) { // show the Adobe Express Install dialog if set by the web page author and if supported
+ var att = {};
+ att.data = regObjArr[i].expressInstall;
+ att.width = obj.getAttribute("width") || "0";
+ att.height = obj.getAttribute("height") || "0";
+ if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); }
+ if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); }
+ // parse HTML object param element's name-value pairs
+ var par = {};
+ var p = obj.getElementsByTagName("param");
+ var pl = p.length;
+ for (var j = 0; j < pl; j++) {
+ if (p[j].getAttribute("name").toLowerCase() != "movie") {
+ par[p[j].getAttribute("name")] = p[j].getAttribute("value");
+ }
+ }
+ showExpressInstall(att, par, id, cb);
+ }
+ else { // Flash Player and SWF version mismatch or an older Webkit engine that ignores the HTML object element's nested param elements: display alternative content instead of SWF
+ displayAltContent(obj);
+ if (cb) { cb(cbObj); }
+ }
+ }
+ }
+ else { // if no Flash Player is installed or the fp version cannot be detected we let the HTML object element do its job (either show a SWF or alternative content)
+ setVisibility(id, true);
+ if (cb) {
+ var o = getObjectById(id); // test whether there is an HTML object element or not
+ if (o && typeof o.SetVariable != UNDEF) {
+ cbObj.success = true;
+ cbObj.ref = o;
+ }
+ cb(cbObj);
+ }
+ }
+ }
+ }
+}
+
+function getObjectById(objectIdStr) {
+ var r = null;
+ var o = getElementById(objectIdStr);
+ if (o && o.nodeName == "OBJECT") {
+ if (typeof o.SetVariable != UNDEF) {
+ r = o;
+ }
+ else {
+ var n = o.getElementsByTagName(OBJECT)[0];
+ if (n) {
+ r = n;
+ }
+ }
+ }
+ return r;
+}
+
+/* Requirements for Adobe Express Install
+ - only one instance can be active at a time
+ - fp 6.0.65 or higher
+ - Win/Mac OS only
+ - no Webkit engines older than version 312
+*/
+function canExpressInstall() {
+ return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312);
+}
+
+/* Show the Adobe Express Install dialog
+ - Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75
+*/
+function showExpressInstall(att, par, replaceElemIdStr, callbackFn) {
+ isExpressInstallActive = true;
+ storedCallbackFn = callbackFn || null;
+ storedCallbackObj = {success:false, id:replaceElemIdStr};
+ var obj = getElementById(replaceElemIdStr);
+ if (obj) {
+ if (obj.nodeName == "OBJECT") { // static publishing
+ storedAltContent = abstractAltContent(obj);
+ storedAltContentId = null;
+ }
+ else { // dynamic publishing
+ storedAltContent = obj;
+ storedAltContentId = replaceElemIdStr;
+ }
+ att.id = EXPRESS_INSTALL_ID;
+ if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = "310"; }
+ if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = "137"; }
+ doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
+ var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
+ fv = "MMredirectURL=" + win.location.toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title;
+ if (typeof par.flashvars != UNDEF) {
+ par.flashvars += "&" + fv;
+ }
+ else {
+ par.flashvars = fv;
+ }
+ // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it,
+ // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
+ if (ua.ie && ua.win && obj.readyState != 4) {
+ var newObj = createElement("div");
+ replaceElemIdStr += "SWFObjectNew";
+ newObj.setAttribute("id", replaceElemIdStr);
+ obj.parentNode.insertBefore(newObj, obj); // insert placeholder div that will be replaced by the object element that loads expressinstall.swf
+ obj.style.display = "none";
+ (function(){
+ if (obj.readyState == 4) {
+ obj.parentNode.removeChild(obj);
+ }
+ else {
+ setTimeout(arguments.callee, 10);
+ }
+ })();
+ }
+ createSWF(att, par, replaceElemIdStr);
+ }
+}
+
+/* Functions to abstract and display alternative content
+*/
+function displayAltContent(obj) {
+ if (ua.ie && ua.win && obj.readyState != 4) {
+ // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it,
+ // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
+ var el = createElement("div");
+ obj.parentNode.insertBefore(el, obj); // insert placeholder div that will be replaced by the alternative content
+ el.parentNode.replaceChild(abstractAltContent(obj), el);
+ obj.style.display = "none";
+ (function(){
+ if (obj.readyState == 4) {
+ obj.parentNode.removeChild(obj);
+ }
+ else {
+ setTimeout(arguments.callee, 10);
+ }
+ })();
+ }
+ else {
+ obj.parentNode.replaceChild(abstractAltContent(obj), obj);
+ }
+}
+
+function abstractAltContent(obj) {
+ var ac = createElement("div");
+ if (ua.win && ua.ie) {
+ ac.innerHTML = obj.innerHTML;
+ }
+ else {
+ var nestedObj = obj.getElementsByTagName(OBJECT)[0];
+ if (nestedObj) {
+ var c = nestedObj.childNodes;
+ if (c) {
+ var cl = c.length;
+ for (var i = 0; i < cl; i++) {
+ if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) {
+ ac.appendChild(c[i].cloneNode(true));
+ }
+ }
+ }
+ }
+ }
+ return ac;
+}
+
+/* Cross-browser dynamic SWF creation
+*/
+function createSWF(attObj, parObj, id) {
+ var r, el = getElementById(id);
+ if (ua.wk && ua.wk < 312) { return r; }
+ if (el) {
+ if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content
+ attObj.id = id;
+ }
+ if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML
+ var att = "";
+ for (var i in attObj) {
+ if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries
+ if (i.toLowerCase() == "data") {
+ parObj.movie = attObj[i];
+ }
+ else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
+ att += ' class="' + attObj[i] + '"';
+ }
+ else if (i.toLowerCase() != "classid") {
+ att += ' ' + i + '="' + attObj[i] + '"';
+ }
+ }
+ }
+ var par = "";
+ for (var j in parObj) {
+ if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries
+ par += '<param name="' + j + '" value="' + parObj[j] + '" />';
+ }
+ }
+ el.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + par + '</object>';
+ objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only)
+ r = getElementById(attObj.id);
+ }
+ else { // well-behaving browsers
+ var o = createElement(OBJECT);
+ o.setAttribute("type", FLASH_MIME_TYPE);
+ for (var m in attObj) {
+ if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries
+ if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
+ o.setAttribute("class", attObj[m]);
+ }
+ else if (m.toLowerCase() != "classid") { // filter out IE specific attribute
+ o.setAttribute(m, attObj[m]);
+ }
+ }
+ }
+ for (var n in parObj) {
+ if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // filter out prototype additions from other potential libraries and IE specific param element
+ createObjParam(o, n, parObj[n]);
+ }
+ }
+ el.parentNode.replaceChild(o, el);
+ r = o;
+ }
+ }
+ return r;
+}
+
+function createObjParam(el, pName, pValue) {
+ var p = createElement("param");
+ p.setAttribute("name", pName);
+ p.setAttribute("value", pValue);
+ el.appendChild(p);
+}
+
+/* Cross-browser SWF removal
+ - Especially needed to safely and completely remove a SWF in Internet Explorer
+*/
+function removeSWF(id) {
+ var obj = getElementById(id);
+ if (obj && obj.nodeName == "OBJECT") {
+ if (ua.ie && ua.win) {
+ obj.style.display = "none";
+ (function(){
+ if (obj.readyState == 4) {
+ removeObjectInIE(id);
+ }
+ else {
+ setTimeout(arguments.callee, 10);
+ }
+ })();
+ }
+ else {
+ obj.parentNode.removeChild(obj);
+ }
+ }
+}
+
+function removeObjectInIE(id) {
+ var obj = getElementById(id);
+ if (obj) {
+ for (var i in obj) {
+ if (typeof obj[i] == "function") {
+ obj[i] = null;
+ }
+ }
+ obj.parentNode.removeChild(obj);
+ }
+}
+
+/* Functions to optimize JavaScript compression
+*/
+function getElementById(id) {
+ var el = null;
+ try {
+ el = doc.getElementById(id);
+ }
+ catch (e) {}
+ return el;
+}
+
+function createElement(el) {
+ return doc.createElement(el);
+}
+
+/* Updated attachEvent function for Internet Explorer
+ - Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks
+*/
+function addListener(target, eventType, fn) {
+ target.attachEvent(eventType, fn);
+ listenersArr[listenersArr.length] = [target, eventType, fn];
+}
+
+/* Flash Player and SWF content version matching
+*/
+function hasPlayerVersion(rv) {
+ var pv = ua.pv, v = rv.split(".");
+ v[0] = parseInt(v[0], 10);
+ v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0"
+ v[2] = parseInt(v[2], 10) || 0;
+ return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
+}
+
+/* Cross-browser dynamic CSS creation
+ - Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php
+*/
+function createCSS(sel, decl, media, newStyle) {
+ if (ua.ie && ua.mac) { return; }
+ var h = doc.getElementsByTagName("head")[0];
+ if (!h) { return; } // to also support badly authored HTML pages that lack a head element
+ var m = (media && typeof media == "string") ? media : "screen";
+ if (newStyle) {
+ dynamicStylesheet = null;
+ dynamicStylesheetMedia = null;
+ }
+ if (!dynamicStylesheet || dynamicStylesheetMedia != m) {
+ // create dynamic stylesheet + get a global reference to it
+ var s = createElement("style");
+ s.setAttribute("type", "text/css");
+ s.setAttribute("media", m);
+ dynamicStylesheet = h.appendChild(s);
+ if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
+ dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1];
+ }
+ dynamicStylesheetMedia = m;
+ }
+ // add style rule
+ if (ua.ie && ua.win) {
+ if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) {
+ dynamicStylesheet.addRule(sel, decl);
+ }
+ }
+ else {
+ if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) {
+ dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}"));
+ }
+ }
+}
+
+function setVisibility(id, isVisible) {
+ if (!autoHideShow) { return; }
+ var v = isVisible ? "visible" : "hidden";
+ if (isDomLoaded && getElementById(id)) {
+ getElementById(id).style.visibility = v;
+ }
+ else {
+ createCSS("#" + id, "visibility:" + v);
+ }
+}
+
+/* Filter to avoid XSS attacks
+*/
+function urlEncodeIfNecessary(s) {
+ var regex = /[\\\"<>\.;]/;
+ var hasBadChars = regex.exec(s) != null;
+ return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s;
+}
+
+/* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only)
+*/
+var cleanup = function() {
+ if (ua.ie && ua.win) {
+ window.attachEvent("onunload", function() {
+ // remove listeners to avoid memory leaks
+ var ll = listenersArr.length;
+ for (var i = 0; i < ll; i++) {
+ listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]);
+ }
+ // cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect
+ var il = objIdArr.length;
+ for (var j = 0; j < il; j++) {
+ removeSWF(objIdArr[j]);
+ }
+ // cleanup library's main closures to avoid memory leaks
+ for (var k in ua) {
+ ua[k] = null;
+ }
+ ua = null;
+ for (var l in d16g.swfobject) {
+ d16g.swfobject[l] = null;
+ }
+ d16g.swfobject = null;
+ });
+ }
+}();
+
+return {
+ /* Public API
+ - Reference: http://code.google.com/p/swfobject/wiki/documentation
+ */
+ registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) {
+ if (ua.w3 && objectIdStr && swfVersionStr) {
+ var regObj = {};
+ regObj.id = objectIdStr;
+ regObj.swfVersion = swfVersionStr;
+ regObj.expressInstall = xiSwfUrlStr;
+ regObj.callbackFn = callbackFn;
+ regObjArr[regObjArr.length] = regObj;
+ setVisibility(objectIdStr, false);
+ }
+ else if (callbackFn) {
+ callbackFn({success:false, id:objectIdStr});
+ }
+ },
+
+ getObjectById: function(objectIdStr) {
+ if (ua.w3) {
+ return getObjectById(objectIdStr);
+ }
+ },
+
+ embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) {
+ var callbackObj = {success:false, id:replaceElemIdStr};
+ if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) {
+ setVisibility(replaceElemIdStr, false);
+ addDomLoadEvent(function() {
+ widthStr += ""; // auto-convert to string
+ heightStr += "";
+ var att = {};
+ if (attObj && typeof attObj === OBJECT) {
+ for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs
+ att[i] = attObj[i];
+ }
+ }
+ att.data = swfUrlStr;
+ att.width = widthStr;
+ att.height = heightStr;
+ var par = {};
+ if (parObj && typeof parObj === OBJECT) {
+ for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs
+ par[j] = parObj[j];
+ }
+ }
+ if (flashvarsObj && typeof flashvarsObj === OBJECT) {
+ for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs
+ if (typeof par.flashvars != UNDEF) {
+ par.flashvars += "&" + k + "=" + flashvarsObj[k];
+ }
+ else {
+ par.flashvars = k + "=" + flashvarsObj[k];
+ }
+ }
+ }
+ if (hasPlayerVersion(swfVersionStr)) { // create SWF
+ var obj = createSWF(att, par, replaceElemIdStr);
+ if (att.id == replaceElemIdStr) {
+ setVisibility(replaceElemIdStr, true);
+ }
+ callbackObj.success = true;
+ callbackObj.ref = obj;
+ }
+ else if (xiSwfUrlStr && canExpressInstall()) { // show Adobe Express Install
+ att.data = xiSwfUrlStr;
+ showExpressInstall(att, par, replaceElemIdStr, callbackFn);
+ return;
+ }
+ else { // show alternative content
+ setVisibility(replaceElemIdStr, true);
+ }
+ if (callbackFn) { callbackFn(callbackObj); }
+ });
+ }
+ else if (callbackFn) { callbackFn(callbackObj); }
+ },
+
+ switchOffAutoHideShow: function() {
+ autoHideShow = false;
+ },
+
+ ua: ua,
+
+ getFlashPlayerVersion: function() {
+ return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };
+ },
+
+ hasFlashPlayerVersion: hasPlayerVersion,
+
+ createSWF: function(attObj, parObj, replaceElemIdStr) {
+ if (ua.w3) {
+ return createSWF(attObj, parObj, replaceElemIdStr);
+ }
+ else {
+ return undefined;
+ }
+ },
+
+ showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) {
+ if (ua.w3 && canExpressInstall()) {
+ showExpressInstall(att, par, replaceElemIdStr, callbackFn);
+ }
+ },
+
+ removeSWF: function(objElemIdStr) {
+ if (ua.w3) {
+ removeSWF(objElemIdStr);
+ }
+ },
+
+ createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) {
+ if (ua.w3) {
+ createCSS(selStr, declStr, mediaStr, newStyleBoolean);
+ }
+ },
+
+ addDomLoadEvent: addDomLoadEvent,
+
+ addLoadEvent: addLoadEvent,
+
+ getQueryParamValue: function(param) {
+ var q = doc.location.search || doc.location.hash;
+ if (q) {
+ if (/\?/.test(q)) { q = q.split("?")[1]; } // strip question mark
+ if (param == null) {
+ return urlEncodeIfNecessary(q);
+ }
+ var pairs = q.split("&");
+ for (var i = 0; i < pairs.length; i++) {
+ if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
+ return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1)));
+ }
+ }
+ }
+ return "";
+ },
+
+ // For internal usage only
+ expressInstallCallback: function() {
+ if (isExpressInstallActive) {
+ var obj = getElementById(EXPRESS_INSTALL_ID);
+ if (obj && storedAltContent) {
+ obj.parentNode.replaceChild(storedAltContent, obj);
+ if (storedAltContentId) {
+ setVisibility(storedAltContentId, true);
+ if (ua.ie && ua.win) { storedAltContent.style.display = "block"; }
+ }
+ if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); }
+ }
+ isExpressInstallActive = false;
+ }
+ }
+};
+}();
+d16g.tracking = {};
+
+d16g.tracking.scriptUrls = [];
+
+d16g.tracking.addIFramedScript = function(baseUrl, url){
+ var encodedUrl = escape(url);
+ d16g.tracking.scriptUrls.push({"baseUrl":baseUrl, "url": encodedUrl, "loaded": false});
+};
+
+d16g.tracking.loadIFramedScripts = function() {
+ for(var i=0;i<d16g.tracking.scriptUrls.length;i++){
+ if(!d16g.tracking.scriptUrls[i].loaded) {
+ var iframe = document.createElement("iframe");
+ iframe.src = d16g.tracking.scriptUrls[i].baseUrl + "#js=" + d16g.tracking.scriptUrls[i].url;
+ iframe.height = 0;
+ iframe.width = 0;
+ iframe.style.border=0;
+ iframe.style.margin=0;
+ document.body.appendChild(iframe);
+ d16g.tracking.scriptUrls[i].loaded = true;
+ }
+ }
+};
+if(amznJQ !== null){
+ amznJQ.onReady('d16g_JS', function(){d16g.tracking.loadIFramedScripts();});
+}/*
+$Id: //brazil/src/appgroup/advertising/apps/GrandPrixAdTemplates/prerelease/templates/amazon/d16g/utils.ftl#3 $
+$Revision: #3 $
+$Author: ranton $
+$Change: 2775711 $
+$DateTime: 2009/11/11 00:11:23 $
+*/
+
+/**
+* @param function type (constructor function)
+* @return object instance
+**/
+d16g.make = function (F) {
+ return new F();
+};
+
+/**
+* @param function type (constructor function)
+* @return function type (constructor function)
+**/
+d16g.extend = function(F) {
+ var G = function () {};
+ G.prototype = new F();
+ return G;
+};
+
+/**
+* parseBool: returns boolean of all the sort-of boolean values
+* @param value boolean, number, or string value to convert
+* @param default boolean bias to which value if the boolean conversion is not defined for a value/datatype
+* @return boolean representation of the value. Any string except '1', 'true', or 'yes' returns false.
+* if value and default are undefined returns undefined. * if value is null and defaultValue is null or undefined null will be returned.
+*/
+d16g.parseBool = function(value, defaultValue) {
+ var result;
+ if(value === null ) {
+ if(defaultValue !== undefined && defaultValue !== null) {
+ return d16g.parseBool(defaultValue);
+ } else {
+ d16g.error("d16g.parseBool(): both value and default are null");
+ return null;
+ }
+ }
+ switch (typeof value) {
+ case 'number':
+ result = (value !== 0);
+ break;
+ case 'string':
+ var test = value.toLowerCase();
+ if (test === 'yes' || test === '1' || test === 'true') {
+ result = true;
+ } else {
+ result = false;
+ }
+ break;
+ case 'boolean':
+ result = value;
+ break;
+ // automatic default cases
+ case "undefined":
+ if(defaultValue !== undefined ) {
+ result = d16g.parseBool(defaultValue);
+ } else {
+ d16g.error("d16g.parseBool(): both value and default are undefined");
+ }
+ break;
+ case "function":
+ d16g.error("d16g.parseBool(): value type is a function! Parameter type=" + typeof value + ", value=" + value);
+ break;
+ default:
+ d16g.warn("d16g.parseBool(): value type is not handled explicitly. Parameter type=" + typeof value + ", value=" + value);
+ }
+ return result;
+};
+
+/**
+* defaultBoolFalse: returns false if undefined or not boolean, otherwise value
+* @param value anytype value to convert
+* @return boolean
+*/
+d16g.defaultBoolFalse = function(value) {
+ var result = value;
+ if (typeof value !== 'boolean') {
+ result = false;
+ d16g.log("d16g.defaultBoolFalse(): Returning false as default. Parameter type=" + typeof value + ", value=" + value);
+ }
+ return result;
+};
+
+/**
+* defaultBoolTrue: returns true if undefined or not boolean, otherwise value
+* @param value anytype value to convert
+* @return boolean
+*/
+d16g.defaultBoolTrue = function(value) {
+ var result = value;
+ if (typeof value !== 'boolean') {
+ result = true;
+ d16g.log("d16g.defaultBoolTrue(): Returning true as default. Parameter type=" + typeof value + ", value=" + value);
+ }
+ return result;
+};
+
+d16g.eventQueues = {};
+/**
+* d16g.createEventQueue: creates a master event queue for all ads on the page
+* @param eventName string
+* @return void
+*/
+d16g.createEventQueue = function (eventName) {
+ if (typeof d16g.eventQueues[eventName] === "undefined") {
+ d16g.log('.createEventQueue(' + eventName + ')', this);
+ d16g.eventQueues[eventName] = d16g.make(d16g.types.CallbackQueue);
+ d16g.eventQueues[eventName].runOnce = false;
+ d16g.eventQueues[eventName].runAlways = false;
+ }
+};
+d16g.addEventCallback = function (eventName, func) {
+ d16g.log('.addEventCallback(' + eventName + ')', this);
+ d16g.eventQueues[eventName].addCallback(func);
+};
+d16g.triggerEventCallbacks = function (eventName) {
+ d16g.log('.triggerEventCallbacks(' + eventName + ')', this);
+ d16g.eventQueues[eventName].run();
+};
+/*
+$Id: //brazil/src/appgroup/advertising/apps/GrandPrixAdTemplates/prerelease/templates/amazon/d16g/utilsBrowser.ftl#5 $
+$Revision: #5 $
+$Author: asaurav $
+$Change: 2915517 $
+$DateTime: 2010/01/28 18:32:24 $
+
+# Description: detects browsers, determines if browser platform supports ERM
+# This file should be loaded from the d16g-bootstrap freemarker template, so the d16g object should already be instantiated.
+# deployed to edge cache (Media Central)
+# https://w.amazon.com/?Advertising/D16G/Frontend/Templates#Expandable_Rich_Media_.28ERM.29
+#
+# Copyright (c)2009 Amazon.com, Inc.
+# All rights reserved.
+*/
+
+d16g.isErmSupportedPlatform = function() {
+ d16g.log(this.getLabel() + ".isErmSupportedPlatform()");
+ return d16g.isErmBrowserCompatible() && d16g.isErmFlashCompatible() && !d16g.isBadBrowserPlugin();
+};
+d16g.isBadBrowserPlugin = function() {
+ // This function has been overriden in the _erm-ad-js-overrides.ftl file.
+ // Should be removed after Skype is fully tested to work with ERM.
+ var result = false;
+ if(d16g.allowSkype === false) {
+ try {
+ // Skype on Firefox 3 causes the ERM to halt.
+ if (jQuery.browser.mozilla && typeof(navigator.mimeTypes["application/x-skype"]) === "object") {
+ result = true;
+ d16g.warn(this.getLabel() + ".isBadBrowserPlugin(): Skype extension detected, abandoning ERM rendering");
+ }
+ } catch(e) {
+ // Only BAD browsers are throwing exceptions
+ result = true;
+ }
+ }
+ return result;
+};
+d16g.isErmBrowserCompatible = function() {
+ d16g.log(this.getLabel() + ".isErmBrowserCompatible()");
+ var isCompatible = false;
+ var platform = navigator.platform;
+ if (platform.indexOf('Win') != -1) {
+ if (jQuery.browser.msie && parseFloat(jQuery.browser.version.substr(0,3)) >= 6) {
+ isCompatible = true;
+ }
+ else if (jQuery.browser.mozilla && parseFloat(jQuery.browser.version.substr(0,3)) >= 1.9) {
+ isCompatible = true;
+ }
+ } else if (platform.indexOf('Mac') != -1) {
+ if (jQuery.browser.safari ||
+ (jQuery.browser.mozilla && parseFloat(jQuery.browser.version.substr(0,3)) >= 1.9)) {
+ isCompatible = true;
+ }
+ }
+
+ // Allow Chrome on Win and Mac
+ if (navigator.userAgent.indexOf("Chrome") > 0 &&
+ (platform.indexOf('Win') != -1 || platform.indexOf('Mac') != -1)) {
+ if (d16g.allowChrome === true) {
+ d16g.log(this.getLabel() + ": Detected Chrome and allowChrome is true, continuing...");
+ isCompatible = true;
+ } else {
+ d16g.log(this.getLabel() + ": Detected Chrome and allowChrome is false, aborting...");
+ isCompatible = false;
+ }
+ }
+
+ return isCompatible;
+};
+d16g.isErmFlashCompatible = function () {
+ var method = ".isErmFlashCompatible()";
+ d16g.log(this.getLabel() + method);
+ var isCompatible = false;
+ var ermFlashVersion = false;
+ // Flash player installed?
+ if((navigator.platform.substr(0,3).toLowerCase().indexOf("win") != -1) && jQuery.browser.msie) {
+ ermFlashVersion = d16g.getFlashActiveXVersion();
+ } else {
+ ermFlashVersion = d16g.getFlashPluginVersion();
+ }
+ if (ermFlashVersion) {
+ // check for min version
+ var flashMinVersion = d16g.getFlashMinVersion();
+ if (ermFlashVersion.major > flashMinVersion.major) {
+ d16g.log(this.getLabel() + method + ": Major version > min major");
+ isCompatible = true;
+ } else if (ermFlashVersion.major == flashMinVersion.major) {
+ d16g.log(this.getLabel() + method + ": Major version == min major");
+ if(ermFlashVersion.minor > flashMinVersion.minor) {
+ d16g.log(this.getLabel() + method + ": Minor version > min minor");
+ isCompatible = true;
+ } else if (ermFlashVersion.minor == flashMinVersion.minor && ermFlashVersion.rev >= flashMinVersion.rev) {
+ d16g.log(this.getLabel() + method + ": Minor version == min minor and rev >= min rev");
+ isCompatible = true;
+ }
+ }
+ }
+ return isCompatible;
+};
+d16g.getFlashPluginVersion = function() {
+ var method = ".getFlashPluginVersion()";
+ d16g.log(this.getLabel() + method);
+ var ermFlashVersion = false;
+ if (typeof navigator.plugins !== "undefined") {
+ if(typeof navigator.plugins["Shockwave Flash"] !== "undefined") {
+ var pluginName = "Shockwave Flash";
+ var flashVersionRaw = navigator.plugins[pluginName].description.substr(pluginName.length+1);
+ // build version object
+ var versionParts = flashVersionRaw.split(/ +/);
+ var majorMinor = versionParts[0].split(/\./);
+ ermFlashVersion = {
+ major: parseInt(majorMinor[0], 10),
+ minor: parseInt(majorMinor[1], 10),
+ rev: parseInt(versionParts[1].substr(1), 10)
+ };
+ }
+ }
+ return ermFlashVersion;
+};
+d16g.getFlashActiveXVersion = function() {
+ var method = ".getFlashActiveXVersion()";
+ d16g.log(this.getLabel() + method);
+ var flashVersionRaw = "";
+ var ermFlashVersion = false;
+
+ if(jQuery.browser.msie) {
+ // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
+ var axo;
+ try {
+ // version will be set for 7.X or greater players
+ axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
+ flashVersionRaw = axo.GetVariable("$version");
+ // build version object
+ var versionParts = flashVersionRaw.split(/ +/);
+ var versionNumbers = versionParts[1].split(/,/);
+ ermFlashVersion = {
+ major: parseInt(versionNumbers[0], 10),
+ minor: parseInt(versionNumbers[1], 10),
+ rev: parseInt(versionNumbers[2], 10)
+ };
+ } catch (e) {
+ }
+ }
+ return ermFlashVersion;
+};
+d16g.getFlashMinVersion = function() {
+ var method = ".getFlashMinVersion()";
+ d16g.log(this.getLabel() + method);
+ var minVersion = {
+ major: 9,
+ minor: 0,
+ rev: 45
+ };
+ return minVersion;
+};
+/*
+$Id: //brazil/src/appgroup/advertising/apps/GrandPrixAdTemplates/prerelease/templates/amazon/d16g/types/Ad.ftl#4 $
+$Revision: #4 $
+$Author: asaurav $
+$Change: 2752128 $
+$DateTime: 2009/10/30 00:41:20 $
+
+# Description: constructor function and prototype definition for an Ad
+# this file is completely Javascript
+# https://w.amazon.com/?Advertising [TBD]
+#
+*/
+
+/**
+* Type: Ad
+*/
+d16g.types.Ad = function() {
+ this.isLoaded = false;
+ this.components = {};
+ this.pixels = {};
+};
+
+/**
+* recordEvent
+* only trigger pixels once
+* @param adEvent
+*/
+d16g.types.Ad.prototype.recordEvent = function(adEvent) {
+ d16g.log(this.getLabel() + '.recordEvent("' + adEvent + '")');
+ var thisEvent = this.pixels[adEvent];
+ if(typeof thisEvent !== "undefined") {
+ if (typeof thisEvent.loaded === 'undefined') {
+ d16g.log(this.getLabel() + '.recordEvent(): loading ' + thisEvent.urls.length + ' tracking pixel(s), adEvent="' + adEvent + '", adName="' + this.adName + '"');
+ thisEvent.loaded = [];
+ for (var i = 0; i < thisEvent.urls.length; i++) {
+ if (thisEvent.urls[i] !== "") {
+ d16g.log(this.getLabel() + ".recordEvent(): now loading pixel url=" + thisEvent.urls[i]);
+ thisEvent.loaded[i] = new Image(1,1);
+ thisEvent.loaded[i].src = thisEvent.urls[i];
+ } else {
+ d16g.warn(this.getLabel() + '.recordEvent(): empty string, urls[' + i + ']=""');
+ }
+ }
+ }
+ } else {
+ d16g.error(this.getLabel() + '.recordEvent(): pixels["' + adEvent + '"] is not defined for adName="' + this.adName + '"');
+ }
+};
+d16g.types.Ad.prototype.loaded = function () {
+ d16g.log(this.getLabel() + ".loaded()");
+ this.isLoaded = true;
+ this.stateMachine.trigger("isLoaded");
+ this.recordEvent("show");
+};
+
+d16g.types.Ad.prototype.createComponent = function (config) {
+ d16g.log(this.getLabel() + ".createComponent(" + config + ")");
+
+ var component = d16g.make(d16g.types.AdComponent);
+ component.setAd(this);
+ component.setParams(config);
+ var adName = this.adName;
+ var cmpName = component.name;
+
+ component.getLabel = function () { return this.ad.getLabel() + '.components["' + this.name + '"]'; };
+
+ if(typeof config.init !== "undefined") {
+ d16g.log(".createComponent(): calling init: "+config.init, this);
+ var func = eval(config.init); // unfortunately necessary eval.
+ func(component);
+ }
+
+ switch(config.contentType) {
+ case "image" :
+ amznJQ.onReady(adName, function() {component.loadImage();});
+ component.elementId = component.componentId; // automatically generated id
+ component.show = function () { component.showImage(); };
+ component.hide = function () { component.hideImage(); };
+ component.open = function () { };
+ component.close = function () { };
+ break;
+ case "html" :
+ amznJQ.onReady(adName, function() {component.loadHtml();});
+ //elementId is part of the html config
+ component.elementId = component.componentId; // automatically generated id
+ component.show = function () { component.showHtml(); };
+ component.hide = function () { component.hideHtml(); };
+ component.open = function () { component.openHtml(); };
+ component.close = function () { component.closeHtml(); };
+ break;
+ case "flash" :
+ amznJQ.onReady(adName, function() {component.loadFlash();});
+ component.elementId = component.componentId; // automatically generated id
+ component.show = function () { component.showFlash(); };
+ component.hide = function () { component.hideFlash(); };
+ component.open = function () { component.openFlash(); };
+ component.close = function () { component.closeFlash(); };
+ break;
+ case "static" :
+ amznJQ.onReady(adName, function() {component.loadStatic();});
+ component.elementId = component.staticId; // the id of the static element already rendered on the page
+ component.show = function () { component.showStatic(); };
+ component.hide = function () { component.hideStatic(); };
+ component.open = function () { };
+ component.close = function () { };
+ break;
+ }
+ this.components[cmpName] = component; // save reference to component in ad components object
+ if (component.positioning.type !== "auto") {
+ jQuery(window).bind("resize", function() { component.render(); });
+ }
+
+ d16g.log(component.getLabel() + '.createComponent(): added');
+};
+
+d16g.types.Ad.prototype.clickedOpen = function (){
+ d16g.log(this.getLabel() + ".clickedOpen()");
+ this.stateMachine.trigger("clickedOpen");
+ this.recordEvent("expand");
+};
+d16g.types.Ad.prototype.clickedClose = function (){
+ d16g.log(this.getLabel() + ".clickedClose()");
+ this.stateMachine.trigger("clickedClose");
+ this.recordEvent("collapse");
+};
+d16g.types.Ad.prototype.opened = function (){
+ d16g.log(this.getLabel() + ".opened()");
+ this.stateMachine.trigger("isOpen");
+};
+d16g.types.Ad.prototype.closed = function (){
+ d16g.log(this.getLabel() + ".closed()");
+ this.stateMachine.trigger("isClosed");
+};
+d16g.types.Ad.prototype.trigger = function (name){
+ d16g.log(".trigger(" + name + "): ", this);
+ this.stateMachine.trigger(name);
+};
+
+d16g.types.Ad.prototype.clickedUrl = function (urlKey){
+ d16g.log(this.getLabel() + '.clickedUrl("' + urlKey + '")');
+ if (typeof this.clickUrls === "undefined" || typeof this.clickUrls[urlKey] === "undefined") {
+ d16g.error(this.getLabel() + '.clickedUrl(): clickUrls or clickUrls["' + urlKey + '"] is undefined');
+ } else {
+ var thisUrl = this.clickUrls[urlKey][0];
+ d16g.log('.clickedUrl(): url="' + thisUrl + '"', this);
+ /* This is a loose check but could be overidden with robust regex from the campaign */
+ if ((thisUrl.search(d16g.internalDomainRegex) > 0) || (jQuery.browser.safari)) {
+ d16g.log('.clickedUrl(): changing document location to "' + thisUrl + '"', this);
+ document.location = thisUrl;
+ } else {
+ d16g.log('.clickedUrl(): opening new window to "' + thisUrl + '"', this);
+ window.open(thisUrl);
+ }
+ }
+};
+d16g.types.Ad.prototype.componentLoaded = function () {
+ d16g.log(this.getLabel() + ".componentLoaded()");
+ for(var c in this.components) {
+ if(this.components[c].isLoaded === false) {
+ d16g.log(this.getLabel() + ".componentLoaded(): component " + c + " is not loaded yet...returning.");
+ return;
+ }
+ }
+ d16g.log(this.getLabel() + ".componentLoaded(): components all loaded.");
+ this.loaded();
+};
+
+d16g.types.Ad.prototype.createStateMachine = function (initialState, configModel) {
+ d16g.log(this.getLabel() + ".createStateMachine(" + initialState + ", " + configModel + ")");
+ var stateMachine = d16g.make(d16g.types.StateMachine);
+ stateMachine.setCurrentState(initialState);
+ stateMachine.setModel(configModel);
+ stateMachine.setAd(this);
+ stateMachine.getLabel = function () { return this.ad.getLabel() + '.stateMachine'; };
+
+ this.stateMachine = stateMachine;
+
+ d16g.log(stateMachine.getLabel() + '.createStateMachine(): added, currentState=' + initialState);
+};
+
+d16g.types.Ad.prototype.getLabel = function () { return "d16g.types.Ad"; };
+
+/**
+* removeComponents(): utility function to remove all HTML elements that are ERM containers from the DOM
+*/
+d16g.types.Ad.prototype.removeComponents = function () {
+ jQuery('[d16gErm]').remove();
+ d16g.error(".removeComponents(): All ERM components removed.", this);
+};
+/*
+$Id: //brazil/src/appgroup/advertising/apps/GrandPrixAdTemplates/prerelease/templates/amazon/d16g/types/AdComponent.ftl#8 $
+$Revision: #8 $
+$Author: pkahrl $
+$Change: 2970555 $
+$DateTime: 2010/02/26 18:25:53 $
+
+# Description: constructor function and prototype definition for an Ad Component
+# this file is completely Javascript
+# https://w.amazon.com/?Advertising [TBD]
+#
+# requires the following Freemarker variables to be defined
+# (source) indicates where the variable is defined
+# * adName (db)
+*/
+
+/**
+* Type: AdComponent
+*/
+d16g.types.AdComponent = function () {
+ this.isLoaded = false;
+ this.anchor = "";
+ this.html = "";
+ // params defaults
+ this.contentType = "";
+ this.templateFile = "";
+ this.name = "";
+ this.height = {};
+ this.width = {};
+ this.actualWidth = 0;
+ this.clip = {};
+ this.positioning = {};
+ this.resizeWidth = {};
+ this.htmlInsertion = {};
+ this.pushdown = false;
+ this.hidden = false; // needs to initialize in .render() method first
+ this.isClipOpen = false; // decouple dependence on a particular state or states for clipping
+};
+
+d16g.types.AdComponent.prototype.hideFlash = function() {
+ d16g.log(this.getLabel() + ".hideFlash(), contentId=" + this.contentId);
+ this.doUserCallback("hide");
+ if( jQuery.browser.msie ) {
+ this.render('outOfView');
+ } else {
+ this.render('hideContent', 'hideElement');
+ }
+ this.hidden = true;
+};
+
+d16g.types.AdComponent.prototype.showFlash = function() {
+ d16g.log(this.getLabel() + ".showFlash(), contentId=" + this.contentId);
+ this.hidden = false;
+ this.render('positionToBase', 'showElement', 'showContent');
+ if (jQuery.browser.msie) { this.render('positionToBase'); }
+ this.doUserCallback("show");
+};
+d16g.types.AdComponent.prototype.applyClip = function() {
+ d16g.log(this.getLabel() + ".applyClip()");
+
+ if( this.wantsClipping === true ) {
+ d16g.log(this.getLabel() + ".applyClip() wantsClipping");
+ var rectArr = this.getClipRectArr();
+ var delim = ",";
+ if (jQuery.browser.msie) {
+ delim = " ";
+ }
+ var rectStr = rectArr.join(delim);
+ d16g.log('.applyClip(): clip rectangle string (T,R,B,L), ' + rectStr, this);
+ jQuery('#' + this.elementId).css( 'clip','rect(' + rectStr + ')' );
+ }
+};
+// utilities
+d16g.types.AdComponent.prototype.getClipRectArr = function() {
+ d16g.log(".getClipRectArr()", this);
+ var t = this.getClipOffsetValue(this.clip.top),
+ l = this.getClipOffsetValue(this.clip.left),
+ r = this.getClipOffsetValue(this.clip.right),
+ b = this.getClipOffsetValue(this.clip.bottom);
+ // clip values are measured from each edge, clip rect is measured from top and left.
+ var T,R,B,L;
+ T = this.getClipString(t);
+ L = this.getClipString(l);
+ R = this.getConvertedClipString(r, parseInt(this.width.unclipped, 10)); // convert to measure from left
+ B = this.getConvertedClipString(b, parseInt(this.height.unclipped, 10)); // convert to measure from top
+ return [T, R, B, L];
+};
+d16g.types.AdComponent.prototype.getClipOffsetValue = function(val) {
+ d16g.log('.getClipOffsetValue(' + val + ')', this);
+ // positive values apply an offset when open
+ // negative values apply an offset when closed
+ // anything else should have an offset of 0 (auto)
+ var result = 0;
+// d16g.log('.getClipOffsetValue: isClipOpen='+this.isClipOpen,this);
+ if ((val > 0 && this.isClipOpen === false) || (val < 0 && this.isClipOpen === true)) {
+ result = Math.abs(val);
+ d16g.log('.getClipOffsetValue: result=' + result, this);
+ }
+ return result;
+};
+d16g.types.AdComponent.prototype.getClipString = function(val) {
+ d16g.log('.getClipString(' + val + ')', this);
+ // if value is 0, set to auto
+ var result = 'auto'; // val is 0 or invalid
+ if (val > 0) {
+ result = val + "px";
+ }
+ return result;
+};
+d16g.types.AdComponent.prototype.getConvertedClipString = function(offset, dimension) {
+ d16g.log('.getConvertedClipString(' + offset + ', ' + dimension + ')', this);
+ // convert right/bottom offset to measure from left/top
+ // dimension is a width or height
+ var result;
+ if (offset === 0) {
+ result = 'auto'; // no clipping
+ } else if (offset < dimension) {
+ result = this.getClipString(dimension - offset); // convert to measure from left/top edge
+ } else {
+ result = 0; // clip entire width
+ }
+ return result;
+};
+
+d16g.types.AdComponent.prototype.openFlash = function() {
+ d16g.log(this.getLabel() + ".openFlash(), contentId=" + this.contentId);
+ this.isClipOpen = true;
+ this.doUserCallback("open");
+ this.render('doExpand');
+};
+
+d16g.types.AdComponent.prototype.closeFlash = function() {
+ d16g.log(this.getLabel() + ".closeFlash(), contentId=" + this.contentId);
+ this.isClipOpen = false;
+ this.render('doCollapse');
+ this.doUserCallback("close");
+};
+
+d16g.types.AdComponent.prototype.loadFlash = function() {
+ d16g.log(this.getLabel() + ".loadFlash()");
+ this.createContent();
+ // All components are initialized as this.hidden=false.
+ // Flash needs to show for in order to load, and will be hidden again in .loaded() method
+ if (jQuery.browser.msie) {
+ this.render('outOfView');
+ } else {
+ this.render('inView');
+ }
+ if (typeof this.urls === 'undefined' || typeof this.urls.loader === 'undefined' || typeof this.urls.ad === 'undefined') {
+ d16g.error('.loadFlash(): this component must have a urls.loader and urls.ad defined in the config', this);
+ } else {
+ var adName = this.ad.adName;
+ var componentName = this.name;
+ var loaderFile = this.urls.loader;
+ var flashvars = {
+ "adName": adName,
+ "cmpName": componentName,
+ "adDebug": d16g.adDebug,
+ "adUrl": this.urls.ad
+ };
+ if (typeof this.urls.video !== "undefined" && this.urls.video !== "") {
+ flashvars.vidUrl = this.urls.video;
+ }
+ if (typeof this.height.unclipped === "undefined" || typeof this.width.unclipped === "undefined") {
+ d16g.error('.loadFlash(): height.unclipped and/or width.unclipped is undefined (see ad config params)', this);
+ } else {
+ var width = this.width.unclipped;
+ var height = this.height.unclipped;
+
+ jQuery('#' + this.elementId).width(width);
+ jQuery('#' + this.elementId).height(height);
+ d16g.log('.loadFlash setting ' + this.elementId + ' width to:' + width + ' height to:' + height ,this);
+ var params = {
+ wmode: "transparent",
+ allowscriptaccess: "always",
+ scale: "showall",
+ salign: "t" // was tl, want it centered at top.
+ };
+ var attributes = {
+ "styleclass": "adNoOutline ap_never_hide"
+ };
+ d16g.log(this.getLabel() + ".loadFlash arguments: loaderFile=" + loaderFile + ", contentId=" + this.contentId + ", width=" + width + ", height=" + height + ", flashvars adName=" + flashvars.adName + ", cmpName=" + flashvars.cmpName + ", adDebug=" + d16g.adDebug);
+ d16g.swfobject.embedSWF(loaderFile, this.contentId, width, height, "9.0.28", "expressInstall.swf", flashvars, params, attributes);
+ }
+ }
+ d16g.log(this.getLabel() + ".loadFlash() end");
+};
+
+d16g.types.AdComponent.prototype.hideStatic = function(e) {
+ d16g.log(this.getLabel() + ".hideStatic()");
+ this.render('hideElement');
+ this.doUserCallback("hide");
+ this.hidden = true;
+};
+d16g.types.AdComponent.prototype.showStatic = function(e) {
+ d16g.log(this.getLabel() + ".showStatic()");
+ this.hidden = false;
+ this.render('showElement');
+ this.doUserCallback("show");
+};
+d16g.types.AdComponent.prototype.loadStatic = function() {
+ d16g.log(this.getLabel() + ".loadStatic()");
+ this.loaded();
+};
+
+d16g.types.AdComponent.prototype.hideImage = function() {
+ d16g.log(this.getLabel() + ".hideImage()");
+ this.render('hideElement', 'hideContent');
+ this.hidden = true;
+};
+
+d16g.types.AdComponent.prototype.showImage = function() {
+ d16g.log(this.getLabel() + ".showImage()");
+ d16g.fixPngs(jQuery("#" + this.elementId + "_click"));
+ this.hidden = false;
+ this.render('showElement', 'showContent', 'positionToBase');
+};
+
+d16g.types.AdComponent.prototype.loadImage = function () {
+ d16g.log(this.getLabel() + ".loadImage()");
+ this.createContent();
+ var adName = this.ad.adName;
+ var componentName = this.name;
+ var imageId = adName + "_" + componentName + "_img";
+ var clickId = adName + "_" + componentName + "_click";
+ jQuery('#' + this.contentId ).html('<span id="' + clickId + '"></span>');
+ var loadCallback = function () {
+ d16g.log('attempting to load image for d16g.ads["' + adName + '"].components["' + componentName + '"]');
+ jQuery('#' + clickId).append(this);
+ d16g.ads[adName].components[componentName].loaded();
+ };
+ var errorCallback = function () {
+ d16g.error('.loadImage(): Could not load image for d16g.ads["' + adName + '"].components["' + componentName + '"]', this);
+ };
+ var img = new Image();
+ jQuery(img)
+ .load(loadCallback)
+ .error(errorCallback)
+ .attr('src', this.imageUrl)
+ .attr('id', imageId);
+ jQuery('#' + clickId ).click( function () { d16g.ads[adName].clickedOpen(); });
+};
+
+d16g.types.AdComponent.prototype.hideHtml = function() {
+ d16g.log(this.getLabel() + ".hideHtml()");
+ this.doUserCallback("hide");
+ this.render('cssCollapse');
+ if( jQuery.browser.msie ) {
+ this.render('outOfView');
+ }
+ this.hidden = true;
+};
+
+d16g.types.AdComponent.prototype.showHtml = function() {
+ d16g.log(this.getLabel() + ".showHtml()");
+ this.hidden = false;
+ this.render('cssExpand');
+ this.doUserCallback("show");
+ if( jQuery.browser.msie && this.positioning.type !== "overlay" && this.positioning.type !=="component" ) {
+ this.render('undoOutOfView');
+ }
+ this.render(); // auto-select strategy, positioning.type "auto" will be detected and no positioning will occur
+};
+
+d16g.types.AdComponent.prototype.loadHtml = function () {
+ d16g.log(this.getLabel() + ".loadHtml()");
+ if(typeof this.html === "undefined") {
+ d16g.error(d16g.getLabel() + ".loadHtml(): Did not define inner html for adName=" + this.ad.adName + ", componentName=" + this.componentName);
+ } else {
+ this.html = '<div id="' + this.elementId + '" class="collapsed">'+ this.html + '</div>';
+ // place secondary component
+ this.doHtmlInsertion();
+ this.doUserCallback("load");
+ d16g.fixPngs(jQuery('#' + this.elementId));
+ this.loaded();
+ }
+};
+
+d16g.types.AdComponent.prototype.openHtml = function() {
+ d16g.log(this.getLabel() + ".openHtml(), contentId=" + this.contentId);
+ this.doUserCallback("open");
+};
+
+d16g.types.AdComponent.prototype.closeHtml = function() {
+ d16g.log(this.getLabel() + ".closeHtml(), contentId=" + this.contentId);
+ this.doUserCallback("close");
+};
+
+d16g.types.AdComponent.prototype.doUserCallback = function(cbName) {
+ d16g.log(this.getLabel() + ".doUserCallback(" + cbName + ")");
+ if (typeof this.userCallbacks !== "undefined") {
+ if (typeof this.userCallbacks[cbName] !== "undefined") {
+ var userMethodName = this.userCallbacks[cbName];
+ try {
+ this[userMethodName]();
+ } catch (e) {
+ d16g.error('.doUserCallback(): There was a problem trying to run a userCallback "' + cbName + '". ' + e, this);
+ }
+ } else {
+ d16g.info(this.getLabel() + '.doUserCallback(): this.userCallbacks["' + cbName + '"], one or more callbacks defined for this component, but not one for "' + cbName + '"');
+ }
+ } else {
+ d16g.info(this.getLabel() + ".doUserCallback(): no userCallbacks defined for this component");
+ }
+};
+
+d16g.types.AdComponent.prototype.setAd = function(ad) {
+ d16g.log(this.getLabel() + ".setAd(" + ad + ")");
+ this.ad = ad;
+};
+
+d16g.types.AdComponent.prototype.setParams = function(params) {
+ d16g.log(this.getLabel() + ".setParams(" + params + ")");
+ // copy params to this
+ if (typeof params === 'object') {
+ for (var key in params) {
+ if (typeof key === "string") { this[key] = params[key]; }
+ }
+ }
+ this.pushdown = d16g.parseBool( this.pushdown, false );
+ this.wantsClipping = d16g.parseBool( this.wantsClipping, false );
+ this.componentId = this.ad.adName + "_" + this.name;
+ this.contentId = this.componentId + "_co";
+};
+
+d16g.types.AdComponent.prototype.setHtml = function(html) {
+ d16g.log(this.getLabel() + ".setHtml(" + html + ")");
+ if (typeof html === 'string') {
+ this.html = html;
+ } else {
+ d16g.error(this.getLabel() + ".setHtml(): Invalid HTML = " + html );
+ }
+};
+
+d16g.types.AdComponent.prototype.loaded = function () {
+ d16g.log(this.getLabel() + '.loaded(): isLoaded=' + this.isLoaded);
+ // static components are not affected at load time, but all other types are hidden until loading is complete
+ if (this.contentType !== 'static') {
+ if (this.contentType === 'flash' && !jQuery.browser.msie) {
+ this.render('hideContent');
+ }
+ this.hidden = true;
+ }
+ this.actualWidth = this.width.closed;
+ this.isLoaded = true;
+ this.ad.componentLoaded();
+ d16g.log(this.getLabel() + '.loaded(): component is now loaded. isLoaded=' + this.isLoaded + ', hidden="' + this.hidden + '"');
+};
+
+d16g.types.AdComponent.prototype.getBaseTarget = function() {
+ d16g.log(this.getLabel() + ".getBaseTarget()");
+ var target;
+ if (this.positioning.type === "component") {
+ var targetComponent = this.ad.components[this.positioning.target];
+ d16g.log('.getBaseTarget(): positioning target=' + this.positioning.target + ', component is ' + typeof targetComponent, this);
+ target = '#' + targetComponent.elementId;
+ } else {
+ target = this.positioning.target; // target is a css selector, '#' is already included in the config if it is an id for an element
+ }
+ return target;
+};
+
+d16g.types.AdComponent.prototype.getPos = function() {
+ d16g.log(this.getLabel() + ".getPos()");
+ var posResult = {};
+ var target = this.getBaseTarget();
+ d16g.log(this.getLabel() + '.getPos(): where positioning type="' + this.positioning.type + '", target="' + target + '"');
+
+ if( typeof this.positioning.relative !== undefined && d16g.parseBool(this.positioning.relative, false) === true) {
+ d16g.log(".getPos(): positioning.relative is true", this);
+ posResult = { left: 0, top: 0 };
+ } else {
+ d16g.log(".getPos(): positioning.relative is false", this);
+ posResult = jQuery(target).eq(0).offset(); // accepts a document element or a jQuery selector.
+ }
+
+ // no current version of configs use targetLeft any longer we should consider removing it.
+ d16g.log(this.getLabel() + '.getPos(): left="' + posResult.left + '", top="' + posResult.top + '"');
+ if (typeof this.positioning.targetLeft !== "undefined") {
+ var leftPos = jQuery(this.positioning.targetLeft).eq(0).offset();
+ posResult.left = leftPos.left;
+ d16g.log(this.getLabel() + '.getPos(): since targetLeft="' + this.positioning.targetLeft + '", overriding to left=' + posResult.left);
+ }
+ d16g.log(this.getLabel() + '.getPos(): final left="' + posResult.left + '", top="' + posResult.top + '"');
+ if (this.wantsClipping === true) {
+ d16g.log(".getPos(): wantsClipping is true", this);
+ posResult.top -= Math.abs(parseInt(this.clip.top, 10));
+ posResult.left -= Math.abs(parseInt(this.clip.left, 10));
+ d16g.log(this.getLabel() + '.getPos(): final adjusted for clipping: left="' + posResult.left + '", top="' + posResult.top + '"');
+ }
+ return posResult;
+};
+
+
+d16g.types.AdComponent.prototype.doResizeWidth = function () {
+ var elem = jQuery('#' + this.elementId);
+ d16g.log(this.getLabel() + ".doResizeWidth(): resizeWidth.type is " + this.resizeWidth.type);
+ if( this.resizeWidth.type === "auto" ) {
+ var newWidth;
+ if( typeof this.resizeWidth.target === "undefined" ) {
+ var base = jQuery(this.getBaseTarget());
+ newWidth = base.width();
+ } else {
+ d16g.log(this.getLabel() + ".doResizeWidth(): this.resizeWidth.target is " + this.resizeWidth.target);
+ newWidth = jQuery(this.resizeWidth.target).width();
+ }
+ if( typeof this.resizeWidth.minWidth !== "undefined" ) {
+ var minWidth = this.resizeWidth.minWidth;
+ d16g.log(this.getLabel() + ".doResizeWidth(): minWidth="+minWidth);
+ if( newWidth < minWidth ) {
+ d16g.log(this.getLabel() + ".doResizeWidth(): limiting resize to minWidth of " + minWidth);
+ newWidth = minWidth;
+ }
+ }
+ d16g.log(this.getLabel() + ".doResizeWidth(): auto resizing width to " + newWidth);
+ elem.width(newWidth);
+ this.actualWidth = newWidth;
+
+ if ( this.contentType === "flash" &&
+ typeof this.resizeWidth.shrinkFlash !== "undefined" &&
+ d16g.parseBool( this.resizeWidth.shrinkFlash ) === true
+ ) {
+ var flashWidth;
+ if ( this.isClipOpen === true ) {
+ flashWidth = this.width.open;
+ d16g.log(this.getLabel() + ".doResizeWidth(): using open width");
+ } else {
+ flashWidth = this.width.closed;
+ d16g.log(this.getLabel() + ".doResizeWidth(): using close width");
+ }
+
+ if( flashWidth > newWidth ) {
+ flashWidth = newWidth;
+ }
+ d16g.log(this.getLabel() + ".doResizeWidth(): resizing flash object to " + flashWidth);
+ jQuery("#"+ this.contentId).width(flashWidth);
+ }
+ }
+};
+
+d16g.types.AdComponent.prototype.RENDER_STRATEGIES = ['positionToBase','outOfView','undoOutOfView','fixLayout','inView','hideElement','showElement','hideContent','showContent','cssCollapse','cssExpand','doCollapse','doExpand','none'];
+
+d16g.types.AdComponent.prototype.render = function () {
+ d16g.log(this.getLabel() + '.render(' + d16g.arrToString(arguments) + '): adType="' + this.ad.adType + '", positioning.type="' + this.positioning.type + '", hidden=' + this.hidden + ', isLoaded=' + this.isLoaded);
+ if ( typeof this.positioning === "undefined" || typeof this.positioning.type === "undefined" ) {
+ d16g.error(this.getLabel() + '.render(): positioning is not defined properly for this component');
+ } else {
+ var strategyArr = [];
+ if (arguments.length === 0) {
+ if ( this.hidden === true || this.positioning.type === 'auto' ) {
+ strategyArr.push('none');
+ d16g.info('render(): no rendering on hidden or auto-positioned components unless strategy is forced', this);
+ } else {
+ strategyArr.push('positionToBase');
+ }
+ } else {
+ strategyArr = arguments;
+ }
+ d16g.log('.render(): strategyArr=' + d16g.arrToString(strategyArr), this);
+ var action;
+ var positionRelative = false;
+ if(typeof this.positioning.relative !== "undefined") {
+ positionRelative = d16g.parseBool(this.positioning.relative,false);
+ }
+
+ for (var i=0; i<strategyArr.length; i++) {
+ action = strategyArr[i];
+ if (jQuery.inArray(action, this.RENDER_STRATEGIES) === -1) {
+ d16g.error(this.getLabel() + '.render(): "' + action + '" is not recognized as a strategy');
+ } else {
+ d16g.log('.render(): action=' + action, this);
+ var elem = jQuery('#' + this.elementId);
+ var content = jQuery('#' + this.contentId);
+ switch(action) {
+ case 'positionToBase': // typical case
+ // position to base element or component
+ var adjustedPos = this.getPos();
+ elem.css({ position: "absolute", top: adjustedPos.top, right: "", bottom: "", left: adjustedPos.left });
+ d16g.log(this.getLabel() + '.render(): elementId="' + this.elementId + '", adjustedPos.left=' + adjustedPos.left + ', adjustedPos.top=' + adjustedPos.top);
+ this.doResizeWidth();
+ this.applyClip();
+ break;
+ case 'fixLayout':
+ // fixLayout is to make IE correctly position relative positioned HTML components
+ // containing flash
+ if( positionRelative === true ) {
+ d16g.log("fixLayout removing and reapplying relative position",this);
+ elem.css("position","").css("position","relative");
+ }
+ break;
+ case 'outOfView':
+ elem.css({ position: "absolute", left: "-99999px", right: "" });
+ break;
+ case 'undoOutOfView':
+ if( positionRelative !== true ) {
+ elem.css({ position: "", left: "" });
+ } else {
+ elem.css({ position: "relative", left: "" });
+ }
+ break;
+ case 'inView':
+ elem.css({ position: "absolute", top: "", right: 0, bottom: 0, left: "" });
+ break;
+ case 'hideElement':
+ elem.css("visibility", "hidden");
+ break;
+ case 'showElement':
+ elem.css("visibility", "visible");
+ break;
+ case 'hideContent':
+ content.css("visibility", "hidden");
+ break;
+ case 'showContent':
+ content.css("visibility", "visible");
+ break;
+ case 'cssCollapse':
+ elem.removeClass("expanded").addClass("collapsed");
+ break;
+ case 'cssExpand':
+ elem.removeClass("collapsed").addClass("expanded").css("height", "auto");
+ break;
+ case 'doCollapse':
+ content.get(0).doCollapse();
+ this.applyClip();
+ break;
+ case 'doExpand':
+ content.get(0).doExpand();
+ this.applyClip();
+ break;
+ case 'none':
+ break;
+ default:
+ d16g.error(this.getLabel() + '.render(): "' + action + '" is not recognized as a strategy');
+ }
+ }
+ }
+ }
+};
+
+/**
+* doHtmlInsertion()
+* place this.html into the DOM (for any dynamic component type)
+*/
+d16g.types.AdComponent.prototype.doHtmlInsertion = function() {
+ d16g.log(this.getLabel() + ".doHtmlInsertion()");
+ if (typeof this.htmlInsertion === "undefined" || typeof this.htmlInsertion.type === "undefined") {
+ d16g.error(this.getLabel() + ".doHtmlInsertion(): htmlInsertion is not defined properly for loading this component");
+ } else if (this.htmlInsertion.type === "none") {
+ d16g.log(this.getLabel() + ".doHtmlInsertion(): type=" + this.htmlInsertion.type + ", no insertion needed");
+ } else if (typeof this.htmlInsertion.target === "undefined") {
+ d16g.error(this.getLabel() + ".doHtmlInsertion(): htmlInsertion target is missing");
+ } else {
+ var insertionType = this.htmlInsertion.type;
+ var target = this.htmlInsertion.target;
+ // validate target
+ if (d16g.adDebug === true) {
+ if (jQuery(target).length === 0) {
+ d16g.error('.doHtmlInsertion(): target="' + target + '" is not a valid jQuery selector (see config)');
+ } else {
+ d16g.log(this.getLabel() + ".doHtmlInsertion(): initialized for insertion, target=" + target + ", insertionType=" + insertionType);
+ }
+ }
+ if (this.contentType === "flash") {
+ if ( !jQuery.browser.msie && d16g.parseBool(this.positioning.relative, false) === false) {
+ target = "body";
+ insertionType = "append";
+ d16g.info(this.getLabel() + ".doHtmlInsertion(): overriding for flash contentType, target=" + target + ", insertionType=" + insertionType);
+ }
+ }
+ switch(insertionType) {
+ case 'html':
+ case 'append':
+ case 'before':
+ case 'after':
+ case 'prepend':
+ // select the target, perform the jQuery function indicated by htmlInsertion.type with the html content
+ var newElem = jQuery(this.html);
+ newElem.attr('d16gErm', '1'); // mark every ERM component for possible selection later (i.e. removal)
+ jQuery(target)[insertionType](newElem);
+ d16g.log(this.getLabel() + ".doHtmlInsertion() attempted: target=" + target + ", insertionType=" + insertionType);
+
+ this.applyZIndex();
+ break;
+ default:
+ d16g.error(this.getLabel() + ".doHtmlInsertion(): invalid insertionType=" + insertionType);
+ }
+ }
+};
+
+/**
+* applyZIndex()
+*/
+d16g.types.AdComponent.prototype.applyZIndex = function() {
+ d16g.log(this.getLabel() + ".applyZIndex()");
+ if (this.contentType !== "static") {
+ var containerId = this.elementId;
+ var zIndex = "1";
+ if(typeof this.zIndex !== "undefined") {
+ zIndex = this.zIndex;
+ }
+ d16g.log(this.getLabel() + ".applyZIndex(): zIndex="+zIndex);
+ jQuery('#' + containerId).css("z-index", zIndex);
+ }
+};
+
+/**
+* createContent()
+*/
+d16g.types.AdComponent.prototype.createContent = function () {
+ d16g.log(this.getLabel() + ".createContent()");
+ // div ids
+ if (this.contentType === "static") {
+ d16g.info(this.getLabel() + ".createContent(): static component, no action needed");
+ } else {
+ var containerId = this.elementId;
+ var wrapperId = this.elementId + "_wr"; // can be used for css clipping
+ var contentId = this.elementId + "_co";
+ // build html string
+ this.html = "<div id='" + containerId +
+ "'><div id='" + wrapperId +
+ "'><div id='" + contentId +
+ "'>this.html</div></div></div>";
+ d16g.log(this.getLabel() + ".createContent(): attempting insertion for containerId=" + containerId + ", contentId=" + contentId);
+ this.doHtmlInsertion();
+ // hide content div, but this will be replaced and overridden by swfObject
+ // swfObject is very persistent about keeping visibility "visible" on instantiation.
+ // Setting display initially to "none" causes the flash object not to load at all.
+ // An alternative would be to check when the object has replaced the div then set
+ // the visibility to hidden. Note that FF and IE need to be handled separately.
+ // IE won't load with Flash hidden, so the object must be positioned outside the viewport.
+ // Conversely, FF will reload if the Flash object when the object is repositioned back in the viewport.
+ jQuery('#' + contentId).css("visibility", "hidden");
+ // hide container until loaded, apply background
+
+ jQuery('#' + containerId)
+ .css("background", this.background)
+ .css("visibility", "hidden");
+ d16g.log(this.getLabel() + ".createContent(): html inserted, bgcolor applied, content and outer divs hidden");
+ }
+};
+
+/**
+* Util: fixPngs
+* fix .png transparency for IE 5.5 - 6.x
+* @param obj jQuery
+*/
+d16g.fixPngsNeeded = function() {
+ var browserVer = parseFloat(jQuery.browser.version);
+ var result = (jQuery.browser.msie === true && browserVer >= 5.5 && browserVer < 7.0);
+ return result;
+};
+d16g.fixPngs = function(obj) {
+ d16g.log(this.getLabel() + ".fixPngs(): testing if .png fix is needed");
+ if(d16g.fixPngsNeeded()) {
+ var that = this; // jQuery().each changes 'this'
+ d16g.info(this.getLabel() + ".fixPngs(): browser requires .png fix, applying now...");
+ obj.find("*").each(function(){
+ var match = (jQuery(this).css("background-image") || "").match(/url\("(.*\.png)"\)/);
+ if (match) {
+ d16g.log(".fixPngs(): background-image=" + jQuery(this).css("background-image"), that);
+ var png = match[1];
+ jQuery(this).css("background-image", "none");
+ jQuery(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + png + "',sizingMethod='scale')";
+ }
+ });
+/*
+ //TODO - PNG fix for secondary - not working
+ obj.find("img").each(function() {
+ if(jQuery(this).css("filter").indexOf("progid:DXImageTransform.Microsoft.AlphaImageLoader") == -1) {
+ d16g.log(".fixPngs(): img src=" + jQuery(this).attr("src"), that);
+ var style = "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',src='" + jQuery(this).attr("src") + "',sizingMethod='scale')";
+// watch out for FTL var...
+ var html = '<img class="adComponent_pngFix2" style="' + style + '" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V42752373_.gif" id="test2" width="300" height="69" border="0" alt="Acura"/>';
+ jQuery(this).parent().html(html);
+d16g.error(".fixPngs(): tried to fix an image, but the code is not generic yet.", that);
+ }
+ });
+*/
+ }
+};
+
+d16g.types.AdComponent.prototype.getLabel = function () { return "d16g.types.AdComponent"; };
+/*
+$Id: //brazil/src/appgroup/advertising/apps/GrandPrixAdTemplates/prerelease/templates/amazon/d16g/types/CallbackQueue.ftl#4 $
+$Revision: #4 $
+$Author: ranton $
+$Change: 2775711 $
+$DateTime: 2009/11/11 00:11:23 $
+
+# Description: callback queue is a synchronized event manager that keeps events executing in order
+# This is important when external objects such as Flash or user actions can cause critical sections of code to execute out of expected order
+# this file is completely Javascript
+# https://w.amazon.com/?Advertising [TBD]
+#
+*/
+
+/**
+* CallbackQueue: used to automatically run callback functions as soon as a flag is set
+* This is a building block for an event model. Callbacks are deleted from the queue once they are run.
+*/
+d16g.types.CallbackQueue = function () {
+ this.lock = false; // for pseudothread locking to keep events and states in order
+ this.callbacks = [];
+ this.nextIndex = 0;
+ this.runOnce = true; // remove callbacks as they run
+ this.runAlways = true; // ensure that run() is called with each addCallback(), false means that run() must be called explicitly
+};
+
+/**
+* addCallback: adds a function to the callback queue
+* if runOnce is true, callbacks are removed from the queue as they are run
+* if runAlways is true, callbacks are run with each callback added (unless another pseudothread already is running the queue)
+* @param callback function will be executed in order added
+* @return void
+*/
+d16g.types.CallbackQueue.prototype.addCallback = function (func) {
+ d16g.log('.addCallback(): Adding callback... ' + func, this);
+ this.callbacks.push(func); // push callback to the end of the queue
+ if (this.runAlways === true) {
+ this.run();
+ }
+};
+
+/**
+* run: run callbacks in FIFO order
+* @return void
+*/
+d16g.types.CallbackQueue.prototype.run = function () {
+ d16g.log('.run(): lock=' + this.lock, this);
+ var master = (! this.lock) && (this.lock = true); // attempt to make a lock test and set all atomic
+ if (master !== true) {
+ d16g.info('.run(): already running in another pseudothread, abandoning...', this);
+ } else {
+ d16g.info('.run(): master pseudothread, lock added, running queue... ', this);
+ while (this.nextIndex < this.callbacks.length) {
+ try {
+ d16g.log('.run(): nextIndex=' + this.nextIndex + ', f=' + this.callbacks[this.nextIndex], this);
+ var f = this.getNextCallback();
+ f();
+ } catch (e) {
+ d16g.error('.run(): ' + e, this);
+ }
+ }
+ this.nextIndex = 0;
+ this.lock = false;
+ d16g.info('.run(): lock removed, there are now ' + this.callbacks.length + ' callbacks in the queue', this);
+ }
+};
+
+/**
+* getNextCallback: delegated method to determine how a callback is retrieved and what is the next index
+* for example, one implementation may leave the callbacks in the queue to be run again (like a macro)
+* another implementation might have a run-once strategy, so they are deleted as they are used.
+* @return void
+*/
+d16g.types.CallbackQueue.prototype.getNextCallback = function () {
+ d16g.log('.getNextCallback(): callbacks.length=' + this.callbacks.length + ', runOnce=' + this.runOnce, this);
+ var f;
+ if (this.runOnce === true) {
+ f = this.callbacks.shift();
+ this.nextIndex = 0;
+ } else {
+ f = this.callbacks[this.nextIndex];
+ this.nextIndex++;
+ }
+ return f;
+};
+
+d16g.types.CallbackQueue.prototype.getLabel = function () { return "d16g.types.CallbackQueue"; };
+/*
+$Id: //brazil/src/appgroup/advertising/apps/GrandPrixAdTemplates/prerelease/templates/amazon/d16g/types/StateMachine.ftl#2 $
+$Revision: #2 $
+$Author: asaurav $
+$Change: 2752128 $
+$DateTime: 2009/10/30 00:41:20 $
+
+# Description: constructor function and prototype definition for a StateMachine
+# this file is completely Javascript
+# https://w.amazon.com/?Advertising [TBD]
+#
+*/
+
+/**
+* StateMachine: manages erm event states
+* @return object
+*/
+d16g.types.StateMachine = function () {
+ this.model = {};
+ this.lock = false;
+ this.createEventQueue();
+};
+
+d16g.types.StateMachine.prototype.createEventQueue = function () {
+ d16g.log('.createEventQueue()', this);
+ this.eventQueue = d16g.make(d16g.types.CallbackQueue);
+};
+
+d16g.types.StateMachine.prototype.setCurrentState = function (newState) {
+ d16g.log(this.getLabel() + ".setCurrentState(" + newState + "): oldState=" + this.currentState);
+ this.currentState = newState;
+};
+
+/**
+* @param model array each element is in the form state: [ currentState, trigger, nextState ]
+*/
+d16g.types.StateMachine.prototype.setModel = function (model) {
+ d16g.log(this.getLabel() + ".setModel(" + model + ")");
+ for(var i = 0; i < model.length; i++) {
+
+ var state = model[i][0];
+ var event = model[i][1];
+ var nextState = model[i][2];
+
+ if(typeof this.model[state] === "undefined") {
+ this.model[state] = {};
+ }
+
+ this.model[state][event] = nextState;
+ }
+};
+d16g.types.StateMachine.prototype.setAd = function (ad) {
+ this.ad = ad;
+};
+
+/**
+* onState: maps a callback to a given transition. The callback is run when the state is entered
+* @param stateName The starting state for the transition
+* @param callback The callback to run
+* @return void
+*/
+d16g.types.StateMachine.prototype.onState = function (stateName, callback) {
+ d16g.log(this.getLabel() + ".onState(" + stateName + ", function() )");
+ if(typeof this.model[stateName] === "undefined") {
+ d16g.error(this.getLabel() + 'onState(): this.model["' + stateName + '"] is undefined');
+ } else {
+ d16g.log(this.getLabel() + ".onState(): adding callback to: stateName=" + stateName );
+ jQuery().bind(this.ad.adName + "_" + stateName, callback);
+ }
+};
+/**
+* trigger: event synchronization method to change states.
+* This method adds callback to event queue so that triggers will execute in expected order.
+* Otherwise, a race condition could occur (one example...there was an "expand" trigger
+* that caused a Flash object animate then notify on complete, but the notification arrived in a new thread
+* before the initial state change request was completed, resulting in an invalid state change request
+*/
+d16g.types.StateMachine.prototype.trigger = function (eventName) {
+ d16g.log(this.getLabel() + ".trigger(" + eventName + ")");
+ var nextState = (this.model[this.currentState])[eventName];
+ var adName = this.ad.adName;
+ var that = this;
+ if(typeof nextState !== "undefined") {
+ this.eventQueue.addCallback( function() { that._trigger(adName, nextState); });
+ } else {
+ d16g.error(this.getLabel() + ".trigger(): Tried to add trigger for '" + eventName + "' event, while in '" + this.currentState + "' state.");
+ }
+};
+/**
+* _trigger: callback that actually does the work to kick of the events upon entering a state
+*/
+d16g.types.StateMachine.prototype._trigger = function (adName, nextState) {
+ d16g.log('._trigger(): trigger=' + adName + '_' + nextState, this);
+ this.setCurrentState(nextState);
+ jQuery().trigger(adName + '_' + nextState);
+};
+
+d16g.types.StateMachine.prototype.getLabel = function () { return "d16g.types.StateMachine"; };
+
+/*
+$Id$
+$Revision$
+$Author$
+$Change$
+$DateTime$
+
+# Description: All of the ERM ad config user callbacks for a gateway expand over.
+# This file is for pure Javascript only, other than this comment, so no
+# FreeMarker variables should be used.
+*/
+
+d16g.initGatewayExpandOverBase = function (adComponent) {
+ d16g.log(".initGatewayExpandOverBase",adComponent);
+
+ adComponent.hideBase = function () {
+ d16g.log(this.getLabel() + ".hideBase()");
+ jQuery("#" + this.elementId).css("display","none");
+
+ var leftColBtf = document.getElementById("leftcolhidden");
+ var rightCol = document.getElementById("rightcol");
+
+ var standardPadding = parseInt(this.standardPadding);
+ var leftPad = parseInt(jQuery("#centercol").css("padding-left")) + standardPadding;
+ var centerRight = document.getElementById("centerrightspancol");
+ var centerCol = document.getElementById("centercol");
+ var rightMargin = standardPadding;
+
+ if (navigator.userAgent.indexOf("MSIE") > 0) {
+ var ieQuirksAdjust = parseInt(this.ieQuirksAdjust);
+ leftPad += ieQuirksAdjust;
+ rightMargin -= ieQuirksAdjust;
+ rightCol.style.marginRight = ieQuirksAdjust + "px";
+ centerRight.style.marginRight = ieQuirksAdjust + "px";
+ }
+ centerCol.style.paddingLeft = leftPad + "px";
+ leftColBtf.style.marginRight = rightMargin + "px";
+ };
+};
+
+d16g.initGatewayExpandOverWrapper = function (adComponent) {
+ d16g.log(".initGatewayExpandOverWrapper",adComponent);
+
+ // FIXME: we have 3 nearly identical copies of positionCloseButton
+ adComponent.positionCloseButton = function () {
+ d16g.log(this.getLabel() + ".positionCloseButton()");
+ var extraMargin = 0;
+ if (jQuery.browser.msie) {
+ extraMargin = parseInt(this.ieQuirksAdjust);
+ }
+ document.getElementById(this.closeButtonId).style.left = document.body.clientWidth
+ - parseInt(this.closeButtonWidth) - extraMargin -
+ jQuery("#"+this.elementId).offset().left;
+ };
+
+ adComponent.showWrapper = function () {
+ d16g.log(this.getLabel() + ".showWrapper()");
+ var wrapper = document.getElementById("gatewaypd-outer");
+ var centerRight = document.getElementById("centerrightspancol");
+ var adDiv = document.getElementById(this.ad.adName+"_primary");
+
+ wrapper.style.height = this.height.closed;
+ wrapper.style.display = "block";
+ if (navigator.userAgent.indexOf("MSIE") > 0) {
+ adDiv.style.zIndex = 1;
+ adDiv.style.background = this.background;
+
+ wrapper.style.width = "100%";
+ wrapper.style.clip = "rect(" + this.height.closed + "px auto auto auto)";
+ wrapper.style.zIndex = 2;
+ } else {
+ wrapper.style.width = centerRight.offsetWidth;
+ }
+ jQuery("#"+this.ad.components["primary"].elementId).css("text-align","center");
+ this.doResizeWidth();
+ var that = this;
+ jQuery(window).bind("resize", function() {
+ that.doResizeWidth();
+ wrapper.style.width = centerRight.offsetWidth;
+ });
+ };
+
+ adComponent.openWrapper = function () {
+ d16g.log(".openWrapper(): elementId=" + this.ad.components["primary"].elementId, this);
+
+ var ad = this.ad; // for callback function(s)
+ var closeButtonId = "#" + this.closeButtonId;
+ jQuery(closeButtonId).click( function(){
+ jQuery(closeButtonId).unbind("click");
+ ad.clickedClose();
+ }); // will be removed on click
+ var openHeight = this.height.open;
+
+ if (jQuery.browser.msie) {
+ jQuery("#gatewaypd-outer").css("margin-left","-"+this.ieRelativeMarginFix+"px");
+ }
+ var that = this;
+ jQuery("#gatewaypd-outer").animate({height:openHeight}, "fast", function() {
+ ad.stateMachine.trigger("isOpen");
+ if (jQuery.browser.msie) {
+ jQuery("#gatewaypd-outer").css("clip", "rect(auto auto auto auto)");
+ jQuery("#gatewaypd-outer").css("background", "transparent");
+ jQuery("#gatewaypd-outer").css("margin-left","");
+ }
+ that.render("fixLayout");
+ jQuery(closeButtonId).css("visibility","visible");
+ if (jQuery.browser.msie) {
+ jQuery(closeButtonId).css("position", "")
+ .css("position", "absolute");
+ }
+ });
+
+ this.positionCloseButton();
+ };
+
+ adComponent.loadWrapper = function () {
+ d16g.log(this.getLabel() + ".loadWrapper()");
+ d16g.log(this.getLabel() + ".loadWrapper(): this.closeButtonId: "+this.closeButtonId);
+ d16g.log(this.getLabel() + ".loadWrapper(): this.closeButtonOverSrc: "+this.closeButtonOverSrc);
+ d16g.log(this.getLabel() + ".loadWrapper(): this.closeButtonSrc: "+this.closeButtonSrc);
+ var that = this;
+ if (d16g.fixPngsNeeded() === false) {
+ var closeButtonSel = "#" + this.closeButtonId;
+ jQuery(closeButtonSel).mouseover(function(e) {
+ jQuery(closeButtonSel).css("background-image", "url("+that.closeButtonOverSrc+")");
+ });
+ jQuery(closeButtonSel).mouseout(function(e) {
+ jQuery(closeButtonSel).css("background-image", "url("+that.closeButtonSrc+")");
+ });
+ }
+ var img = new Image();
+ img.src = this.closeButtonOverSrc;
+
+ jQuery(window).bind("resize", function() {
+ that.positionCloseButton();
+ });
+ }
+
+ adComponent.closeWrapper = function () {
+ d16g.log(this.getLabel() + ".closeWrapper()");
+ var ad = this.ad; // for callback function(s)
+ var closeButtonId = "#" + this.closeButtonId;
+
+ jQuery(closeButtonId).css("visibility","hidden");
+ var closedHeight = this.height.closed;
+ if (jQuery.browser.msie) {
+ jQuery("#gatewaypd-outer").css("clip", "rect(" + closedHeight + "px auto auto auto)");
+ jQuery("#gatewaypd-outer").css("background", this.background);
+ jQuery("#gatewaypd-outer").css("margin-left","-"+this.ieRelativeMarginFix+"px");
+ }
+ var that = this;
+ jQuery("#gatewaypd-outer").animate({height:closedHeight}, "fast", function() {
+ ad.stateMachine.trigger("isClosed");
+
+ if (jQuery.browser.msie) {
+ jQuery("#gatewaypd-outer").css("margin-left","");
+ }
+ that.render("fixLayout");
+ });
+ };
+};
+/*
+$Id$
+$Revision$
+$Author$
+$Change$
+$DateTime$
+
+# Description: All of the ERM ad config user callbacks for a gateway pushdown.
+# This file is for pure Javascript only, other than this comment, so no
+# FreeMarker variables should be used.
+*/
+
+d16g.initGatewayPushdownBase = function (adComponent) {
+ d16g.log(".initGatewayPushdownBase",adComponent);
+
+ adComponent.hideBase = function () {
+ d16g.log(this.getLabel() + ".hideBase()");
+ jQuery("#" + this.elementId).css("display","none");
+
+ var standardPadding = parseInt(this.standardPadding);
+ var leftColBtf = document.getElementById("leftcolhidden");
+ var rightCol = document.getElementById("rightcol");
+ var leftPad = parseInt(jQuery("#centercol").css("padding-left")) + standardPadding;
+ var centerRight = document.getElementById("centerrightspancol");
+ var centerCol = document.getElementById("centercol");
+ var rightMargin = -this.standardPadding;
+
+ if (navigator.userAgent.indexOf("MSIE") > 0) {
+ var ieQuirksAdjust = parseInt(this.ieQuirksAdjust);
+ leftPad += ieQuirksAdjust;
+ rightMargin -= ieQuirksAdjust;
+ rightCol.style.marginRight = ieQuirksAdjust+"px";
+ centerRight.style.marginRight = ieQuirksAdjust+"px";
+ }
+ centerCol.style.paddingLeft = leftPad + "px";
+ leftColBtf.style.marginRight = rightMargin + "px";
+ };
+};
+
+d16g.initGatewayPushdownWrapper = function (adComponent) {
+ d16g.log(".initGatewayPushdownWrapper",adComponent);
+
+ adComponent.positionCloseButton = function () {
+ d16g.log(this.getLabel() + ".positionCloseButton()");
+ var extraMargin = 0;
+ if (jQuery.browser.msie) {
+ extraMargin = parseInt(this.ieQuirksAdjust);
+ }
+ document.getElementById(this.closeButtonId).style.left = document.body.clientWidth
+ - parseInt(this.closeButtonWidth) - extraMargin -
+ jQuery("#"+this.elementId).offset().left;
+ };
+ adComponent.showWrapper = function () {
+ d16g.log(this.getLabel() + ".showWrapper()");
+ var wrapper = document.getElementById("gatewaypd-outer");
+
+ wrapper.style.height = this.height.closed;
+ wrapper.style.display = "block";
+ if (navigator.userAgent.indexOf("MSIE") > 0) {
+ wrapper.style.width = "100%";
+ }
+ jQuery("#"+this.ad.components["primary"].elementId).css("text-align","center");
+ this.doResizeWidth();
+ var that = this;
+ jQuery(window).bind("resize", function() {
+ that.doResizeWidth();
+ });
+ };
+
+ adComponent.openWrapper = function () {
+ d16g.log(".openWrapper(): elementId=" + this.ad.components["primary"].elementId, this);
+
+ var ad = this.ad; // for callback function(s)
+ var closeButtonId = "#" + this.closeButtonId;
+ jQuery(closeButtonId).click( function(){
+ jQuery(closeButtonId).unbind("click");
+ ad.clickedClose();
+ }); // will be removed on click
+ var openHeight = this.height.open;
+ jQuery("#gatewaypd-outer, #centerrightspancol").animate({height:openHeight}, "fast", function() {
+ ad.stateMachine.trigger("isOpen");
+ jQuery(closeButtonId).css("visibility","visible");
+ if (jQuery.browser.msie) {
+ jQuery(closeButtonId).css("position", "")
+ .css("position", "absolute");
+ }
+ });
+
+ this.positionCloseButton();
+ };
+
+ adComponent.loadWrapper = function () {
+ d16g.log(this.getLabel() + ".loadWrapper()");
+ d16g.log(this.getLabel() + ".loadWrapper(): this.closeButtonId: "+this.closeButtonId);
+ d16g.log(this.getLabel() + ".loadWrapper(): this.closeButtonOverSrc: "+this.closeButtonOverSrc);
+ d16g.log(this.getLabel() + ".loadWrapper(): this.closeButtonSrc: "+this.closeButtonSrc);
+ var that = this;
+ if (d16g.fixPngsNeeded() === false) {
+ var closeButtonSel = "#" + this.closeButtonId;
+ jQuery(closeButtonSel).mouseover(function(e) {
+ jQuery(closeButtonSel).css("background-image", "url("+that.closeButtonOverSrc+")");
+ });
+ jQuery(closeButtonSel).mouseout(function(e) {
+ jQuery(closeButtonSel).css("background-image", "url("+that.closeButtonSrc+")");
+ });
+ }
+ var img = new Image();
+ img.src = this.closeButtonOverSrc;
+
+ jQuery(window).bind("resize", function() {
+ that.positionCloseButton();
+ });
+ }
+
+ adComponent.closeWrapper = function () {
+ d16g.log(this.getLabel() + ".closeWrapper()");
+ var ad = this.ad; // for callback function(s)
+
+ jQuery("#" + this.closeButtonId).css("visibility","hidden");
+ var closedHeight = this.height.closed;
+ jQuery("#gatewaypd-outer, #centerrightspancol").animate({height:closedHeight}, "fast", function() {
+ ad.stateMachine.trigger("isClosed");
+ });
+ };
+};
+
+ /*
+$Id$
+$Revision$
+$Author$
+$Change$
+$DateTime$
+
+# Description: All of the ERM ad config user callbacks for a marquee pushdown.
+# This file is for pure Javascript only, other than this comment, so no
+# FreeMarker variables should be used.
+*/
+
+d16g.initMarqueePushdownSecondary = function(adComponent) {
+ d16g.log(".initMarqueePushdownSecondary",adComponent);
+
+ /**
+ * hideSecondary: method to show primary component and hide secondary
+ * used for type=adMarqueePushdown
+ */
+ adComponent.hideSecondary = function () {
+ d16g.log(this.getLabel() + ".hideSecondary()");
+ jQuery("#"+this.closeButtonId).css("visibility","hidden");
+ jQuery("#welcomeRowTable").css("backgroundImage","url("+this.backgroundImage+")");
+ jQuery("#" + this.ad.adName + "_static").css("display",""); // restores marquee vertical height in layout
+ jQuery("#marqueepd-inner").css("visibility","hidden");
+ jQuery("#"+this.ad.adName+"_movie_wrap").css("visibility","hidden");
+ var that = this;// for callback function(s)
+ jQuery("#marqueepd-wrapper,#marqueepd-outer").animate({height:0}, "fast", function() {
+ d16g.log(" animated "+jQuery(this).attr("id")+" to 0", that);
+ if( jQuery(this).attr("id") == "marqueepd-outer" ) {
+ d16g.log(" animated to 0", that);
+ jQuery("#marqueepd-outer").css("visibility","hidden");
+ d16g.triggerEventCallbacks('reposition');
+ that.ad.stateMachine.trigger("isClosed");
+ // need to redraw amazon logo in ie
+ if ( jQuery.browser.msie ) {
+ jQuery("#navLogo").css("position","").css("position","relative");
+ }
+ }
+ });
+ };
+
+ /**
+ * showSecondary: method to hide primary component and show secondary
+ * used for type=adMarqueePushdown
+ */
+ adComponent.showSecondary = function () {
+ d16g.log(this.getLabel() + ".showSecondary()");
+ // need to hide amazon logo in ie so we can ensure redraw later
+ if ( jQuery.browser.msie ) {
+ jQuery(".navAmazonLogoGatewayPanel").eq(0).parent().css("visibility","hidden");
+ }
+ jQuery("#welcomeRowTable").css("backgroundImage","url()");
+ jQuery("#" + this.ad.adName + "_static").css("display","none"); // prevents marquee from taking up vertical height in layout
+ jQuery("#marqueepd-outer")
+ .css("height","0")
+ .css("visibility","visible");
+ jQuery("#"+this.ad.adName+"_movie_wrap").css("visibility","visible");
+ var that = this;// for callback function(s)
+ var closeButtonId = "#" + this.closeButtonId;
+ jQuery(closeButtonId).click( function() {
+ that.ad.clickedClose();
+ jQuery(closeButtonId).unbind("click");
+ }); // will be removed on click
+ var that = this;
+ jQuery("#marqueepd-wrapper,#marqueepd-outer").animate({height:250}, "fast", function() {
+ d16g.log(" animated "+jQuery(this).attr("id")+" to 250", that);
+ if( jQuery(this).attr("id") == "marqueepd-outer" ) {
+ d16g.log(" animated to 250", that);
+ jQuery("#marqueepd-inner").css("visibility","visible");
+ that.ad.stateMachine.trigger("isOpen");
+ d16g.triggerEventCallbacks('reposition');
+ }
+ });
+ // need to redraw amazon logo in ie
+ if ( jQuery.browser.msie ) {
+ jQuery("#navLogo").css("position","").css("position","relative");
+ } else {
+ // Repositioning primary to the top left when it becomes invisible after expand is clicked
+ jQuery("#" + this.ad.adName + "_primary").css("left", "0px").css("top", "0px");
+ }
+ };
+
+ /**
+ * loadSecondary: method to show primary component and hide secondary
+ * used for type=adMarqueePushdown
+ */
+ adComponent.loadSecondary = function () {
+ d16g.log(this.getLabel() + ".loadSecondary()");
+ d16g.log(this.getLabel() + ".loadSecondary(): this.closeButtonId: "+this.closeButtonId);
+ d16g.log(this.getLabel() + ".loadSecondary(): this.closeButtonOverSrc: "+this.closeButtonOverSrc);
+ d16g.log(this.getLabel() + ".loadSecondary(): this.closeButtonSrc: "+this.closeButtonSrc);
+
+ jQuery("#marqueepd-outer").css("display","none");
+ if ( jQuery.browser.msie ) {
+ jQuery("#" + this.elementId).css("position","absolute").css("left","-99999px");
+ jQuery("#marqueepd-outer").css("display", "block");
+ }
+ if (d16g.fixPngsNeeded() === false) {
+ var closeButtonSel = "#" + this.closeButtonId;
+ var that = this;
+ jQuery(closeButtonSel).mouseover(function(e) {
+ jQuery(closeButtonSel).css("background-image", "url("+that.closeButtonOverSrc+")");
+ });
+ jQuery(closeButtonSel).mouseout(function(e) {
+ jQuery(closeButtonSel).css("background-image", "url("+that.closeButtonSrc+")");
+ });
+ }
+ var img = new Image();
+ img.src = this.closeButtonOverSrc;
+
+ // place the close button outside the body so it renders after and over the movie.
+ if ( ! d16g.fixPngsNeeded() ) { // breaks png fix
+ jQuery("#" + this.closeButtonId).css("visibility","hidden").appendTo("body");
+ }
+ };
+};
+
+d16g.initMarqueePushdownMovie = function(adComponent) {
+ d16g.log(".initMarqueePushdownMovie",adComponent);
+
+ /**
+ * showCloseButtonOnTop: method to force the close button in the secondary component to redraw on top
+ */
+ adComponent.showCloseButtonOnTop = function () {
+ d16g.log(this.getLabel() + ".showCloseButtonOnTop()");
+ jQuery("#"+this.closeButtonId).css("visibility","visible");
+ };
+};/*
+$Id$
+$Revision$
+$Author$
+$Change$
+$DateTime$
+
+# Description: All of the ERM ad config user callbacks for a rectangle expand left.
+# This file is for pure Javascript only, other than this comment, so no
+# FreeMarker variables should be used.
+*/
+
+d16g.initGatewayRectangleWrapper = function (adComponent) {
+ d16g.log(".initGatewayRectangleWrapper",adComponent);
+
+ adComponent.showWrapper = function () {
+ var baseName = this.ad.adName;
+ this.primaryOffsetTop = this.ad.components["primary"].clip.top;
+ this.primaryOffsetLeft = this.ad.components["primary"].clip.left;
+
+ d16g.log(this.getLabel() + ".showWrapper() for adName " + baseName);
+ jQuery("#" + baseName).css("height", this.height.closed);
+ jQuery("#" + baseName + "_wrapper")
+ .css("height", this.height.closed)
+ .css("background", this.ad.components["primary"].background);
+ };
+
+ adComponent.openWrapper = function () {
+ var ad = this.ad;
+ d16g.log(this.getLabel() + ".openWrapper() for adName " + ad.adName);
+
+ jQuery("#" + ad.adName + "_wrapper").animate({
+ left:-1*this.primaryOffsetLeft,
+ top:-1*this.primaryOffsetTop,
+ height:this.height.open,
+ width:this.width.open
+ }, "fast", function() {
+ ad.stateMachine.trigger("isOpen");
+ });
+ };
+
+ adComponent.closeWrapper = function () {
+ d16g.log(this.getLabel() + ".closeWrapper() for adName " + this.ad.adName);
+ jQuery("#" + this.ad.adName + "_wrapper").animate({
+ left:0,
+ top:0,
+ height:this.height.closed,
+ width:this.width.closed
+ }, "fast");
+ };
+}
+
+d16g.initGatewayRectanglePrimary = function (adComponent) {
+ d16g.log(".initGatewayRectanglePrimary",adComponent);
+
+ adComponent.closePrimary = function () {
+ d16g.log(this.getLabel() + ".closePrimary() for adName " + this.ad.adName);
+ this.ad.stateMachine.trigger("isClosed");
+ };
+}/*
+$Id$
+$Revision$
+$Author$
+$Change$
+$DateTime$
+
+# Description: All of the ERM ad config user callbacks for a wishlist pushdown.
+# This file is for pure Javascript only, other than this comment, so no
+# FreeMarker variables should be used.
+*/
+
+d16g.initWishlistPushdownBase = function (adComponent) {
+ d16g.log(".initWishlistPushdownBase",adComponent);
+
+ adComponent.hideBase = function () {
+ d16g.log(this.getLabel() + ".hideBase()");
+ jQuery("#" + this.elementId).css("display","none");
+ };
+}
+
+d16g.initWishlistPushdownWrapper = function (adComponent) {
+ d16g.log(".initWishlistPushdownWrapper",adComponent);
+
+ adComponent.positionCloseButton = function () {
+ d16g.log(this.getLabel() + ".positionCloseButton()");
+ var that = this;
+ document.getElementById(that.closeButtonId).style.left = document.body.clientWidth -
+ parseInt(that.closeButtonWidth) - jQuery("#"+that.elementId).offset().left;
+ };
+
+ adComponent.showWrapper = function () {
+ d16g.log(this.getLabel() + ".showWrapper()");
+ var closedHeight = this.height.closed;
+ jQuery("#wishlistpd-outer").css("height",closedHeight);
+ jQuery("#wishlistpd-outer").css("display","block");
+ jQuery("#"+this.ad.components["primary"].elementId).css("text-align","center");
+ this.doResizeWidth();
+ var that = this;
+ jQuery(window).bind("resize", function() {
+ that.doResizeWidth();
+ });
+ };
+
+ adComponent.loadWrapper = function () {
+ d16g.log(this.getLabel() + ".loadWrapper()");
+ var closeButtonSel = "#" + this.closeButtonId;
+
+ d16g.log(this.getLabel() + ".loadWrapper(): this.closeButtonId: "+this.closeButtonId);
+ d16g.log(this.getLabel() + ".loadWrapper(): this.closeButtonOverSrc: "+this.closeButtonOverSrc);
+ d16g.log(this.getLabel() + ".loadWrapper(): this.closeButtonSrc: "+this.closeButtonSrc);
+ var that = this;
+ if (d16g.fixPngsNeeded() === false) {
+ jQuery(closeButtonSel).mouseover(function(e) {
+ jQuery(closeButtonSel).css("background-image", "url("+that.closeButtonOverSrc+")");
+ });
+ jQuery(closeButtonSel).mouseout(function(e) {
+ jQuery(closeButtonSel).css("background-image", "url("+that.closeButtonSrc+")");
+ });
+ }
+ var img = new Image();
+ img.src = this.closeButtonOverSrc;
+
+ jQuery(window).bind("resize", function() {
+ that.positionCloseButton();
+ });
+ }
+
+ adComponent.openWrapper = function () {
+ d16g.log(this.getLabel() + ".openWrapper()");
+ d16g.log(this.getLabel() + " primary label " + this.ad.components["primary"].elementId );
+
+ var ad = this.ad; // for callback function(s)
+ var closeButtonSel = "#" + this.closeButtonId;
+ jQuery(closeButtonSel).click( function(){
+ jQuery(closeButtonSel).unbind("click");
+ ad.clickedClose();
+ }); // will be removed on click
+ var openHeight = this.height.open;
+ jQuery("#wishlistpd-outer").animate({height:openHeight}, "fast", function() {
+ ad.stateMachine.trigger("isOpen");
+ jQuery(closeButtonSel).css("visibility","visible");
+ if (jQuery.browser.msie) {
+ jQuery(closeButtonSel).css("position", "")
+ .css("position", "absolute");
+ }
+ });
+
+ this.positionCloseButton();
+ };
+
+ adComponent.closeWrapper = function () {
+ d16g.log(this.getLabel() + ".closeWrapper()");
+ var ad = this.ad; // for callback function(s)
+ jQuery("#" + this.closeButtonId).css("visibility","hidden");
+ var closedHeight = this.height.closed;
+ jQuery("#wishlistpd-outer").animate({height:closedHeight}, "fast", function() {
+ ad.stateMachine.trigger("isClosed");
+ });
+ };
+};
+
+amznJQ.declareAvailable("d16g_JS");
+d16g.log("d16g: finished d16g-0.6.11.js");
+ }
+}
+
+</script>
+
+<script type="text/javascript">
+if (typeof amznJQ !== "undefined") {
+ amznJQ.onReady("d16g_JS", function () {
+ d16g.adDebug = d16g.parseBool(false);
+ if ( typeof window.d16g === "undefined" || typeof d16g.ads === "undefined" || typeof d16g.types === "undefined" ) {
+ } else if (typeof d16g.overrides === "undefined") {
+ amznJQ.declareAvailable("d16g");
+ }
+ });
+}
+</script>
+
+
+
+<script type="text/javascript">
+
+if (typeof amznJQ !== "undefined") {
+
+amznJQ.onReady("d16g", function () {
+ if(typeof d16g.internalDomainRegex === "undefined") {
+ d16g.internalDomainRegex = "doubleclick";
+ }
+ if(typeof d16g.configs === "undefined") {
+ d16g.configs = {};
+ }
+ d16g.configs["nav-sitewide-msg_443"] = {
+ "adType": "adMarqueePushdown",
+ "adId": "nav-sitewide-msg_443",
+ "adName": "nav-sitewide-msg_443",
+ "initialState": "static",
+ "model" : [
+ ["static", "isLoaded", "ready"],
+ ["ready", "clickedOpen", "opening"],
+ ["opening", "isOpen", "open"],
+ ["open", "clickedClose", "closing"],
+ ["closing", "isClosed", "closed"],
+ ["closed", "clickedOpen", "opening"]
+ ],
+ "callbacks" : [
+ ["static", "show", "base"],
+ ["static", "hide", "primary"],
+ ["ready", "show", "primary"],
+ ["ready", "open", "primary"],
+ ["ready", "hide", "base"],
+ ["opening", "hide", "primary"],
+ ["opening", "close", "primary"],
+ ["opening", "show", "secondary"],
+ ["open", "show", "movie"],
+ ["open", "open", "movie"],
+ ["closing", "hide", "movie"],
+ ["closing", "close", "movie"],
+ ["closing", "hide", "secondary"],
+ ["closed", "show", "primary"],
+ ["closed", "open", "primary"]
+ ],
+ "clickUrls" : {
+ "clickGo": {
+ "urls": ["http://ad.doubleclick.net/clk;222773431;45570551;c?http://ad.doubleclick.net/clk;223103289;46845352;g"]
+ },
+ "main": {
+ "urls": ["http://ad.doubleclick.net/clk;222773431;45570551;c?http://ad.doubleclick.net/clk;223103289;46845352;g"]
+ }
+ },
+ "trackUrls" : {
+ "videoCompleteEvent": {
+ "urls": ["http://ad.doubleclick.net/clk;222773443;45570551;f?http://g-ecx.images-amazon.com/images/G/01/blank/1x1_b._V220636431_.gif"]
+ },
+ "show" : {"urls" : [""]},
+ "expand" : {"urls" : ["http://ad.doubleclick.net/clk;222773440;45570551;c?http://g-ecx.images-amazon.com/images/G/01/blank/1x1_b._V220636431_.gif"]},
+ "collapse" : {"urls" : [""]}
+ },
+ "components" : [
+ {
+ "name": "base",
+ "contentType": "static",
+ "staticId": "nav-sitewide-msg_443_static",
+ "height": {"closed": "69", "open": "69"},
+ "width": {"closed": "300", "open": "300"},
+ "clip": {"top": "0", "right": "0", "bottom": "0", "left": "0"},
+ "positioning": {"type": "auto"},
+ "resizeWidth": {"type": "fixed"},
+ "htmlInsertion": {"type": "none"},
+ "pushdown": "false",
+ "background": "#030812"
+ },
+ {
+ "name": "primary",
+ "contentType": "flash",
+ "height": {"closed": "69", "open": "31", "unclipped": "69"},
+ "width": {"closed": "300", "open": "300", "unclipped": "300"},
+ "clip": {"top": "-38", "right": "0", "bottom": "0", "left": "0"},
+ "positioning": {"type": "component", "target": "base"},
+ "resizeWidth": {"type": "fixed"},
+ "htmlInsertion": {"type": "append", "target": "body"},
+ "urls": {"loader": "http://g-ecx.images-amazon.com/images/G/01/da/erm/marquee-primary-loader-0.6._V221142332_.swf", "ad": "http://g-ecx.images-amazon.com/images/G/01/erm/marqueePushdown/motorola/motorolaPrimary_03._V216539508_.swf"},
+ "pushdown": "false",
+ "background": "transparent",
+ "zIndex": "2"
+ },
+ {
+ "html": '<div id="marqueepd-outer"> <div id="marqueepd-inner"> <div id="nav-sitewide-msg_443_movie_wrap"></div> </div> </div> <div id="marqueepd-wrapper"> <div id="nav-sitewide-msg_443-close-button"><img id="nav-sitewide-msg_443-close-button_img" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V42752373_.gif" /></div> </div> '
+,
+ "name": "secondary",
+ "init": "d16g.initMarqueePushdownSecondary",
+ "contentType": "html",
+ "elementId": "customTemplate1",
+ "height": {"closed": "0", "open": "250"},
+ "width": {"closed": "980", "open": "980"},
+ "clip": {"top": "0", "right": "0", "bottom": "250", "left": "0"},
+ "positioning": {"type": "auto"},
+ "resizeWidth": {"type": "fixed"},
+ "htmlInsertion": {"type": "before", "target": "#navbar"},
+ "userCallbacks": {"load": "loadSecondary", "show": "showSecondary", "hide": "hideSecondary"},
+ "pushdown": "true",
+ "background": "#030812",
+ "closeButtonId": "nav-sitewide-msg_443-close-button",
+ "closeButtonOverSrc": "http://g-ecx.images-amazon.com/images/G/01/erm/marqueePushdown/motorola/close._V216169513_.png",
+ "closeButtonSrc": "http://g-ecx.images-amazon.com/images/G/01/erm/marqueePushdown/motorola/close._V216169513_.png",
+ "backgroundImage": "http://g-ecx.images-amazon.com/images/G/01/erm/marqueePushdown/motorola/MotorolaBkgnd._V216157657_.jpg",
+ "zIndex": "2"
+ },
+ {
+ "name": "movie",
+ "init": "d16g.initMarqueePushdownMovie",
+ "contentType": "flash",
+ "height": {"closed": "250", "open": "250", "unclipped": "250"},
+ "width": {"closed": "980", "open": "980", "unclipped": "980"},
+ "clip": {"top": "0", "right": "0", "bottom": "0", "left": "0"},
+ "positioning": {"type": "overlay", "target": "#nav-sitewide-msg_443_movie_wrap"},
+ "resizeWidth": {"type": "fixed"},
+ "htmlInsertion": {"type": "append", "target": "#nav-sitewide-msg_443_movie_wrap"},
+ "urls": {"loader": "http://g-ecx.images-amazon.com/images/G/01/da/erm/marquee-pushdown-loader-0.6._V221142334_.swf", "ad": "http://g-ecx.images-amazon.com/images/G/01/erm/marqueePushdown/motorola/motorolaExpanded_6._V216781491_.swf", "video": "http://g-ecx.images-amazon.com/images/G/01/erm/marqueePushdown/motorola/vid._V216781488_.flv"},
+ "userCallbacks": {"show": "showCloseButtonOnTop"},
+ "pushdown": "false",
+ "background": "#030812",
+ "closeButtonId": "nav-sitewide-msg_443-close-button",
+ "zIndex": "2"
+ }
+ ]
+ };
+
+ amznJQ.declareAvailable("nav-sitewide-msg_443_config");
+});
+
+amznJQ.onReady("nav-sitewide-msg_443_config", function() {
+ d16g.allowSkype = d16g.parseBool(true);
+ d16g.allowChrome = d16g.parseBool(false);
+ if(d16g.isErmSupportedPlatform()) {
+ d16g.createAd(d16g.configs["nav-sitewide-msg_443"]);
+ amznJQ.declareAvailable("nav-sitewide-msg_443");
+ }
+});
+
+
+} // end azmnJQ undefined if
+
+</script>
+
+
+<style type="text/css">
+img.staticAd {
+ display: inline;
+ border: none;
+ outline: none;
+}
+.adNoOutline {
+ outline: none;
+}
+
+ #nav-sitewide-msg_443_static_img {
+ height: 69px;
+ width: 300px;
+ }
+ #nav-sitewide-msg_443_base {
+ text-align: center;
+ background: #030812;
+ }
+
+
+ #nav-sitewide-msg_443_primary {
+ position: absolute;
+ height: 69px;
+ width: 300px;
+ }
+
+ .adMarqueePushdown_secondary {
+ height: 250px;
+ text-align: center;
+ margin: auto;
+ }
+
+ #nav-sitewide-msg_443_movie {
+ position: absolute;
+ height: 250px;
+ width: 980px;
+ }
+
+.adMarqueePushdownSecondary {
+ height: 250px;
+ text-align: center;
+ margin: auto;
+}
+.adMarqueePushdownSecondary.collapsed {
+ height: 0;
+ visibility: hidden;
+}
+#nav-sitewide-msg_443 { position: relative; }
+</style>
+
+
+
+<div id="nav-sitewide-msg_443">
+<script type="text/javascript">
+document.getElementById("navbar").style.marginTop = "0px";
+document.body.style.marginTop = "0px";
+document.getElementById("welcomeRowTable").style.height = "69px";
+</script>
+<noscript>
+<style type="text/css">
+#welcomeRowTable { background-image: url(http://g-ecx.images-amazon.com/images/G/01/erm/marqueePushdown/motorola/MotorolaBkgnd._V216157657_.jpg); }
+#navbar,body { margin-top: 0px; }
+</style>
+</noscript>
+<script type="text/javascript">
+if(amznJQ !== "undefined") {
+amznJQ.onReady("jQuery", function() {
+jQuery('#nav-sitewide-msg_443').prepend('<iframe marginheight="0" marginwidth="0" align="left" id="tp1_80196" style="width:0px; height:0px; border:0px;" height="0" width="0"src="http://ad.doubleclick.net/adi/amzn.us.marquee/;target=20100315homepagemarqueemotorolapnd;sz=1x1;ord=80196?" frameborder="0" scrolling="no"></iframe>');
+});
+} else {
+document.write('<iframe marginheight="0" marginwidth="0" align="left" id="tp1_80196" style="width:0px; height:0px; border:0px;" height="0" width="0"src="http://ad.doubleclick.net/adi/amzn.us.marquee/;target=20100315homepagemarqueemotorolapnd;sz=1x1;ord=80196?" frameborder="0" scrolling="no"></iframe>');
+}
+</script>
+<noscript><iframe marginheight="0" marginwidth="0" align="left" id="tp1_80196" style="width:0px; height:0px; border:0px;" height="0" width="0"src="http://ad.doubleclick.net/adi/amzn.us.marquee/;target=20100315homepagemarqueemotorolapnd;sz=1x1;ord=80196?" frameborder="0" scrolling="no"></iframe></noscript>
+<table id="mct_80196" border="0" cellspacing="0" cellpadding="0" valign="top" align="right">
+<tr>
+<td align="right" valign="top"><a id="popoverTrigger" href="http://ad.doubleclick.net/clk;222773431;45570551;c?http://ad.doubleclick.net/clk;223103289;46845352;g"><script type="text/javascript">if(amznJQ !== "undefined") { amznJQ.onReady("jQuery", function() { jQuery("#welcomeRowTable").css("background-image", "url(http://g-ecx.images-amazon.com/images/G/01/erm/marqueePushdown/motorola/MotorolaBkgnd._V216157657_.jpg)").css("height", "");jQuery("#popoverTrigger").prepend('<img class="staticAd adNoOutline" id="nav-sitewide-msg_443_static" src="http://g-ecx.images-amazon.com/images/G/01/erm/marqueePushdown/motorola/MotorolaPrimaryStatic._V216157656_.png" height="69" alt="MotorolaMarqueePushdown" width="300" border="0"/>'); }); } </script><noscript><img class="staticAd adNoOutline" id="nav-sitewide-msg_443_static" src="http://g-ecx.images-amazon.com/images/G/01/erm/marqueePushdown/motorola/MotorolaPrimaryStatic._V216157656_.png" height="69" alt="MotorolaMarqueePushdown" width="300" border="0"/></noscript></a></td>
+
+</tr>
+</table>
+</div>
+
+
+
+
+
+
+<script type="text/javascript" >
+if(typeof amznJQ !== "undefined"){
+ amznJQ.onReady('popover', function () {
+ jQuery("#showFeedbackForm998375").amazonPopoverTrigger({
+ locationOffset: [0,170],
+width:"500",
+destination: "/gp/advertising/remoterender?impressionId=inhousead998375&randomId=998375&questionGroupId=2&slotName=nav-sitewide-msg&pageType=GATEWAY&pageSubType=GATEWAY-THREE-COLUMN&adContentId=443&templateName=ad-feedback-remote-content-5col",
+title:"Ad feedback: Tell us what you think",
+closeText: "Close",
+locationAlign: "middle",
+location: ['left','centered','auto'],
+draggable:true,
+locationMargin:20,
+onShow: function(popover){
+ var args = {impressionId:"inhousead998375",
+ randomId:"998375",
+ questionGroupId:"2",
+ slotName:"nav-sitewide-msg",
+ pageType:"GATEWAY",
+ pageSubType:"GATEWAY-THREE-COLUMN",
+ adContentId:"443"
+ };
+ d16g.adFeedback.logOpen(args);
+ jQuery(".ap_closetext").html("Close");
+}
+ });
+
+ amznJQ.onReady('d16g', function() {
+ if (typeof d16g.ads === 'undefined') {
+ d16g.info('_erm-ad-feedback-remote-link.ftl: d16g.ads is undefined, skipping ad feedback hooks');
+ } else if (typeof d16g.ads["nav-sitewide-msg_443"] === 'undefined') {
+ d16g.info('_erm-ad-feedback-remote-link.ftl: d16g.ads["nav-sitewide-msg_443"] is undefined, skipping ad feedback hooks');
+ } else {
+ d16g.log('_erm-ad-feedback-remote-link.ftl: adding d16g.ads["nav-sitewide-msg_443"].clickedAdFeedback()');
+ d16g.ads["nav-sitewide-msg_443"].clickedAdFeedback = function () {
+ d16g.log(this.getLabel() + ".clickedAdFeedback()");
+ jQuery("#showFeedbackForm998375").click();
+ }
+ }
+ });
+ });
+}
+</script>
+
+<span id="showFeedbackForm998375"></span>
+
+<script type="text/javascript">
+if (typeof amznJQ !== "undefined") {
+ if (typeof window.d16g === "undefined") {
+ } else {
+ amznJQ.onReady("nav-sitewide-msg_443", function() {
+ if (typeof d16g.ads["nav-sitewide-msg_443"] === "undefined") {
+ } else {
+ d16g.ads["nav-sitewide-msg_443"].pixelsLoaded = {};
+ d16g.ads["nav-sitewide-msg_443"].pixels = d16g.configs["nav-sitewide-msg_443"].trackUrls;
+ }
+ }); // end d16g.onReady()
+ } // end window.d16g if
+} // end azmnJQ undefined if
+</script> </td>
+
+ </tr></table>
+ </td>
+</tr>
+
+<tr>
+ <td>
+<table id="navCrossshop" border="0" cellpadding="0" cellspacing="0" height="22">
+ <tr>
+ <td>
+ <a href='/gp/yourstore/home/ref=topnav_ys' class='navCrossshopLink'> Your Amazon.com</a>
+
+ <span class="navCrossshopBar"> | </span>
+ <a href='/gp/goldbox/ref=cs_top_nav_gb27' class='navCrossshopLink'><span class="navSprite navGBIcon"><span style="visibility:hidden"> </span></span>Today's Deals</a>
+ <span class="navCrossshopBar"> | </span>
+ <a href='/gp/gift-central/ref=cm_gift_button_gc_lp' class='navCrossshopLink'>Gifts & Wish Lists</a>
+
+ <span class="navCrossshopBar"> | </span>
+ <a href='/gp/gc/ref=topnav_giftcert' class='navCrossshopLink'>Gift Cards</a>
+ </td>
+ <td width="100%"> </td>
+ <td>
+ <a href='/gp/css/homepage.html/ref=topnav_ya' class='navCrossshopYALink'>Your Account</a>
+ <span class="navCrossshopBar"> | </span>
+
+ <a href='/Help/b/ref=topnav_help?ie=UTF8&node=508510' class='navCrossshopYALink'>Help</a>
+ </td>
+
+ </tr>
+</table>
+ </td>
+</tr>
+
+<tr class="navShopSearch" align="left" width="100%">
+ <td width="180"><div id="navShopAllButton" class="navSprite navButton navShopAllButtonGateway">
+ <a class="destination" href="/gp/site-directory/ref=topnav_sad"><span class="text">Shop All Departments</span></a>
+
+ <a class="flyoutAnchor"><span class="navSprite downArrow"></span></a>
+</div></td>
+ <td width="100%"><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr>
+ <td width="100%"><style type="text/css" id="iss_style">
+
+
+
+
+.suggest_link
+{
+ background-color: #FFFFFF;
+ padding: 2px 6px 2px 6px;
+}
+
+.suggest_link_over
+{
+ background-color: #146EB4;
+ color: #FFFFFF;
+ padding: 2px 6px 2px 6px;
+}
+
+#sugdivhdr
+{
+ font-size: 10px;
+ color: #888;
+ line-height: 12px;
+ padding-right: 4px;
+}
+
+
+</style>
+
+<script type="text/javascript">
+// globals used by search-experience's dynamic-query suggestion functions
+window.issHost = "completion.amazon.com/search/complete";
+window.issMktid = "1";
+window.issSearchAliases = ["aps", "stripbooks", "popular", "apparel", "dvd", "electronics", "sporting", "garden", "videogames", "toys-and-games", "jewelry", "digital-text", "digital-music", "wireless-aps", "watches", "grocery", "hpc", "baby-products", "office-products", "software", "magazines", "vhs", "tools", "automotive", "misc", "industrial", "mi", "amazontv", "digital-music-track", "digital-music-album", "music-artist", "music-album", "music-song", "stripbooks-spanish", "electronics-accessories", "photo", "audio-video", "computers", "furniture", "kitchen", "wireless-accessories", "wireless-phones", "audiobooks", "beauty", "shoes", ];
+</script>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <script language="javascript" type="text/javascript"><!--
+ window.sitesearch =
+ {
+ submit: function() { return true },
+ focus: function() { return true },
+ blur: function() { return true }
+ }
+ //-->
+ </script>
+
+ <form style="width:100%; margin:0 0 0 0; border:0; padding:0 0 0 0;" method="get" action="/s/ref=nb_sb_noss" name="site-search">
+
+ <table width="100%" border="0" cellpadding="0" cellspacing="0">
+
+ <tr>
+ <td class="navSearchStart"></td>
+ <td id="navSearchBar" class="navSearchBar">Search</td>
+ <td width="100" class="navSearchBar" id="navSearchDropdown"><select name="url" class="searchSelect" title="Search in"><option value="search-alias=aps" selected="selected">All Departments</option>
+<option value="search-alias=automotive">Automotive</option>
+<option value="search-alias=baby-products">Baby</option>
+<option value="search-alias=beauty">Beauty</option>
+<option value="search-alias=stripbooks">Books</option>
+
+<option value="search-alias=wireless-aps">Cell Phones & Service</option>
+<option value="search-alias=apparel">Clothing & Accessories</option>
+<option value="search-alias=electronics">Electronics</option>
+<option value="search-alias=misc">Everything Else</option>
+<option value="search-alias=gourmet">Gourmet Food</option>
+<option value="search-alias=grocery">Grocery</option>
+<option value="search-alias=hpc">Health & Personal Care</option>
+
+<option value="search-alias=garden">Home & Garden</option>
+<option value="search-alias=industrial">Industrial & Scientific</option>
+<option value="search-alias=jewelry">Jewelry</option>
+<option value="search-alias=digital-text">Kindle Store</option>
+<option value="search-alias=magazines">Magazines</option>
+<option value="search-alias=dvd">Movies & TV</option>
+
+<option value="search-alias=digital-music">MP3 Downloads</option>
+<option value="search-alias=popular">Music</option>
+<option value="search-alias=mi">Musical Instruments</option>
+<option value="search-alias=office-products">Office Products & Supplies</option>
+<option value="search-alias=pet-supplies">Pet Supplies</option>
+<option value="search-alias=shoes">Shoes</option>
+<option value="search-alias=software">Software</option>
+<option value="search-alias=sporting">Sports & Outdoors</option>
+
+<option value="search-alias=tools">Tools & Home Improvement</option>
+<option value="search-alias=toys-and-games">Toys & Games</option>
+<option value="search-alias=vhs">VHS</option>
+<option value="search-alias=videogames">Video Games</option>
+<option value="search-alias=amazontv">Video On Demand</option>
+<option value="search-alias=watches">Watches</option>
+ </select></td>
+
+ <td width="3px" class="navSearchBar"> </td>
+ <td class="navSearchBar" align='left'><input type="text" id="twotabsearchtextbox" autocomplete="off" class="searchSelect" name="field-keywords" value="" size="50" title="Search for" style="width:100%; background-color: #FFF;" /></td>
+ <td align="right" width="3px" class="navSearchBar"> </td>
+ <td width="25" align="left">
+ <div id="navGoButton" class="navSprite">
+ <input type="image" src=http://g-ecx.images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V42752373_.gif alt="Go" />
+ </div>
+ </td>
+ </tr>
+
+ </table>
+ </form>
+
+
+
+ <script language="javascript" type="text/javascript">
+ var iss;
+ amznJQ.available('search-js-autocomplete', function(){iss = new AutoComplete();
+ iss.initDynamicSuggestions('#twotabsearchtextbox', 'form[name=site-search]', 'select.searchSelect',
+ issHost, issMktid, issSearchAliases, 'updateISSCompletion',
+ 'in {department}', 'Search suggestions', 0);});
+ window.updateISSCompletion = function() { iss.updateAutoCompletion();};
+ </script></td>
+ <td align="right" style="padding-right:1px;"><div id="navCartButton" class="navButton navBlueButton">
+ <div class="navSprite left"></div>
+ <div class="navSprite right"></div>
+ <div id="navCartEmpty">
+
+ <div class="navSprite icon"></div>
+ <a class="destination" href="/gp/cart/view.html/ref=gno_cart" rel="nofollow"><span class="text">Cart</span></a>
+ </div>
+ <div id="navCartFull" style="display:none">
+ <a class="destination count" href="/gp/cart/view.html/ref=gno_cart" rel="nofollow">
+ <div class="iconLeft navSprite"></div>
+ <div class="iconMiddle navSprite">
+ <div id="navCartCount" class="iconText"></div>
+
+ </div>
+ <div class="iconRight navSprite"></div>
+ <div class="text">Cart</div>
+ </a>
+ </div>
+ </div></td>
+ <td align="right" style="padding-right:0px;"><div id="navYourListsButton" class="navButton navBlueButton">
+ <div class="navSprite left"></div>
+
+ <div class="navSprite right"></div>
+ <a class="destination" href="/wishlist/ref=topnav_lists"><span class="text">Wish List</span></a>
+ <a class="flyoutAnchor"><span class="navSprite downArrow"></span></a>
+</div></td>
+ <td class="navSprite navSearchEnd"/>
+ </tr></table></td>
+</tr>
+
+
+</table>
+
+
+ <div id="listsPop_content" style="display:none">
+<div id="listsPopoverContents" style="background: #fff;display:inline">
+
+<ul class="listsPopoverNoPaddingUl">
+<li class="listsPopoverNoPaddingLi"><span class="listsPopoverContentsHeader">All Lists & Registries</span></li>
+</ul>
+<ul class="listsPopoverNoPaddingUl">
+<li class="listsPopoverContentsLiHrWrapper"><hr size="1" noshade="noshade"/></li>
+</ul>
+<ul class="listsPopoverNoPaddingUl">
+<li class="listsPopoverNoPaddingLi"><span class="arrow">»</span> <a href="/gp/registry/wishlist/ref=gno_listpop_wi">Wish List</a></li>
+
+<li id="qlYourListsLink" class="listsPopoverContentsTopPaddingLi"><span class="arrow">»</span> <a href="#quicklist">Quicklist</a></li>
+<li class="listsPopoverContentsTopPaddingLi"><span class="arrow">»</span> <a href="/gp/rsl/shoppinglist/yourshoppinglist/ref=gno_listpop_sl">Shopping List</a></li>
+<li class="listsPopoverContentsTopPaddingLi"><span class="arrow">»</span> <a href="/gp/gift-central/organizer/ref=gno_listpop_gil">Gift Organizer</a></li>
+</ul>
+
+<ul class="listsPopoverNoPaddingUl">
+<li class="listsPopoverContentsLiHrWrapper"><hr size="1" noshade="noshade"/></li>
+</ul>
+
+<ul class="listsPopoverNoPaddingUl">
+<li class="listsPopoverNoPaddingLi"><span class="arrow">»</span> <a href="/gp/library/ref=gno_listpop_yml">Your Media Library</a></li>
+
+</ul>
+
+<ul class="listsPopoverNoPaddingUl">
+<li class="listsPopoverContentsLiHrWrapper"><hr size="1" noshade="noshade"/></li>
+</ul>
+
+<ul class="listsPopoverNoPaddingUl">
+<li class="listsPopoverNoPaddingLi"><span class="arrow">»</span> <a href="/gp/registry/wedding/ref=gno_listpop_wr">Wedding Registry</a></li>
+<li class="listsPopoverContentsTopPaddingLi"><span class="arrow">»</span> <a href="/gp/registry/baby/ref=gno_listpop_br">Baby Registry</a></li>
+</ul>
+
+<ul class="listsPopoverNoPaddingUl">
+<li class="listsPopoverContentsLiHrWrapper"><hr size="1" noshade="noshade"/></li>
+
+</ul>
+
+<ul class="listsPopoverNoPaddingUl">
+<li class="listsPopoverContentsBottomPaddingLi"><span class="arrow">»</span> <a href="/gp/remembers/ref=gno_listpop_ar">Amazon Remembers</a></li>
+</ul>
+
+</div>
+</div>
+
+<script type="text/javascript">
+amznJQ.available("navbarJSInteraction", function(){
+ var qlAjaxLink = '/gp/registry/quicklist/ref=gno_listpop_ql';
+ jQuery('#qlYourListsLink a').attr('href', qlAjaxLink);
+});
+</script>
+
+
+</div>
+
+<!--Pilu -->
+
+
+
+
+
+
+
+
+
+
+
+<script type="text/javascript">
+ amznJQ.declareAvailable('navbarInline');
+ amznJQ.available('jQuery', function() {
+ amznJQ.available('navbarJS-jQuery', function(){});
+ });
+</script>
+<img alt="" style="display:none" onload="_navbar.componentLoaded()" src="http://g-ecx.images-amazon.com/images/G/01/gno/images/orangeBlue/navPackedSprites-US-15._V202471683_.png"/>
+
+
+<!-- EndNav -->
+ <div id="page-wrap">
+ <div id="content">
+
+ <div class="amabot_left" id="leftcol">
+
+<div class="leftNav navbar navSaGwWrapper">
+<div id="navSaGwBody" class="navSaNonJs">
+<img src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V42752373_.gif" width="168" alt="" class="navSaGwForceWidth" height="1" border="0" />
+<script type="text/javascript">
+document.getElementById('navSaGwBody').className = 'navSaJs';
+</script>
+<ul class="navSaMenu">
+<li id="navSaMenuItem_0" class="navSaMenuItem navSaMenuItemTop">
+<a class="navSaMenuItem">Books</a>
+
+<div class="navSaChild">
+<ul id="navSaChild_0" class="navbar navSaChild">
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/books-used-books-textbooks/b/ref=sa_menu_bo0?ie=UTF8&node=283155&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Books</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Kindle-Books/b/ref=sa_menu_kbo0?ie=UTF8&node=1286228011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Kindle Books</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/New-Used-Textbooks-Books/b/ref=sa_menu_tb0?ie=UTF8&node=465600&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Textbooks</a>
+</li>
+
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/magazines/b/ref=sa_menu_magazines0?ie=UTF8&node=599858&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Magazines</a>
+</li>
+</ul>
+</div>
+</li>
+<li id="navSaMenuItem_1" class="navSaMenuItem navSaMenuItemMiddle">
+<a class="navSaMenuItem">Movies, Music & Games</a>
+<div class="navSaChild">
+<ul id="navSaChild_1" class="navbar navSaChild">
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/dvds-used-hd-action-comedy-oscar/b/ref=sa_menu_mov1?ie=UTF8&node=130&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Movies & TV</a>
+
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Blu-ray-movies-discs-store-deals/b/ref=sa_menu_blu1?ie=UTF8&node=193640011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Blu-ray</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Video-On-Demand/b/ref=sa_menu_atv1?ie=UTF8&node=16261631&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Video On Demand</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/music-rock-classical-pop-jazz/b/ref=sa_menu_mu1?ie=UTF8&node=5174&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Music</a>
+</li>
+<li class="navSaChildItem">
+
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/MP3-Music-Download/b/ref=sa_menu_dmusic1?ie=UTF8&node=163856011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">MP3 Downloads</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/musical-instruments-accessories-sound-recording/b/ref=sa_menu_mi1?ie=UTF8&node=11091801&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Musical Instruments</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/computer-video-games-hardware-accessories/b/ref=sa_menu_cvg1?ie=UTF8&node=468642&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Video Games</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Game-Downloads/b/ref=sa_menu_gdown1?ie=UTF8&node=979455011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Game Downloads</a>
+
+</li>
+</ul>
+</div>
+</li>
+<li id="navSaMenuItem_2" class="navSaMenuItem navSaMenuItemMiddle">
+<a class="navSaMenuItem">Digital Downloads</a>
+<div class="navSaChild">
+<ul id="navSaChild_2" class="navbar navSaChild">
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/kindle-store-ebooks-newspapers-blogs/b/ref=sa_menu_ks2?ie=UTF8&node=133141011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Kindle Store</a>
+<div class="navSaTagLine tiny">Books, newspapers & more</div>
+</li>
+
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Video-On-Demand/b/ref=sa_menu_atv2?ie=UTF8&node=16261631&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Video On Demand</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/MP3-Music-Download/b/ref=sa_menu_dmusic2?ie=UTF8&node=163856011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">MP3 Downloads</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Game-Downloads/b/ref=sa_menu_gdown2?ie=UTF8&node=979455011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Game Downloads</a>
+</li>
+</ul>
+</div>
+
+</li>
+<li id="navSaMenuItem_3" class="navSaMenuItem navSaMenuItemMiddle">
+<a class="navSaMenuItem">Kindle</a>
+<div class="navSaChild">
+<ul id="navSaChild_3" class="navbar navSaChild">
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Wireless-Reading-Display-International-Generation/dp/B0015T963C/ref=sa_menu_kdp2i3?pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Kindle</a>
+<div class="navSaTagLine tiny">Amazon's 6" wireless reading device</div>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/gp/product/B0015TG12Q/ref=sa_menu_kdxi3?pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Kindle DX</a>
+
+<div class="navSaTagLine tiny">Amazon's 9.7" wireless reading device</div>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Kindle-Accessories/b/ref=sa_menu_kacces3?ie=UTF8&node=1268192011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Accessories</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Kindle-Books/b/ref=sa_menu_kbo3?ie=UTF8&node=1286228011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Books</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Kindle-Newspapers/b/ref=sa_menu_knews3?ie=UTF8&node=1263068011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Newspapers</a>
+
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Kindle-Magazines/b/ref=sa_menu_kmag3?ie=UTF8&node=1263069011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Magazines</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/kindle-store-ebooks-newspapers-blogs/b/ref=sa_menu_kstore3?ie=UTF8&node=133141011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Kindle Store</a>
+</li>
+</ul>
+</div>
+</li>
+<li id="navSaMenuItem_4" class="navSaMenuItem navSaMenuItemMiddle">
+<a class="navSaMenuItem">Computers & Office</a>
+
+<div class="navSaChild">
+<ul id="navSaChild_4" class="navbar navSaChild">
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Notebooks-Laptop-Computers/b/ref=sa_menu_lapnet4?ie=UTF8&node=565108&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Laptops & Netbooks</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Desktops-Computers-Add-Ons/b/ref=sa_menu_deskserv4?ie=UTF8&node=565098&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Desktops & Servers</a>
+</li>
+<li class="navSaChildItem">
+
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/PC-Components-Computer-Add-Ons-Computers/b/ref=sa_menu_components4?ie=UTF8&node=193870011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Computer Components</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Computer-Accessories-Supplies/b/ref=sa_menu_compaccess4?ie=UTF8&node=172456&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Computer Accessories</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Printers-Office-Electronics/b/ref=sa_menu_printers4?ie=UTF8&node=172635&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Printers & Ink</a>
+</li>
+<li class="navSaChildItem">
+
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/software-business-education-finance-childrens/b/ref=sa_menu_sw4?ie=UTF8&node=229534&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Software</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/PC-Games/b/ref=sa_menu_pcgm4?ie=UTF8&node=229575&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">PC Games</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/office-products-supplies-electronics-furniture/b/ref=sa_menu_op4?ie=UTF8&node=1064954&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Office Products & Supplies</a>
+</li>
+</ul>
+
+</div>
+</li>
+<li id="navSaMenuItem_5" class="navSaMenuItem navSaMenuItemMiddle">
+<a class="navSaMenuItem">Electronics</a>
+<div class="navSaChild">
+<ul id="navSaChild_5" class="navbar navSaChild">
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Televisions-Video/b/ref=sa_menu_tv5?ie=UTF8&node=1266092011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">TV & Video</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Home-Audio-Electronics/b/ref=sa_menu_hat5?ie=UTF8&node=667846011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Home Audio & Theater</a>
+
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Camera-Photo-Film-Canon-Sony/b/ref=sa_menu_p5?ie=UTF8&node=502394&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Camera & Photo</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/cell-phones-service-plans-accessories/b/ref=sa_menu_wi5?ie=UTF8&node=301185&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Cell Phones & Service</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+
+<a class="navSaChildItem" href="/computer-video-games-hardware-accessories/b/ref=sa_menu_cvg5?ie=UTF8&node=468642&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Video Games</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/MP3-Players-Audio-Video/b/ref=sa_menu_mp35?ie=UTF8&node=172630&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">MP3 & Media Players</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Car-Electronics/b/ref=sa_menu_gps5?ie=UTF8&node=1077068&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Car Electronics & GPS</a>
+</li>
+
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/home-appliances-fans-heaters-air-conditioners/b/ref=sa_menu_ha5?ie=UTF8&node=361395011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Home Appliances</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/musical-instruments-accessories-sound-recording/b/ref=sa_menu_mi5?ie=UTF8&node=11091801&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Musical Instruments</a>
+</li>
+</ul>
+</div>
+</li>
+<li id="navSaMenuItem_6" class="navSaMenuItem navSaMenuItemMiddle">
+<a class="navSaMenuItem">Home & Garden</a>
+
+<div class="navSaChild">
+<ul id="navSaChild_6" class="navbar navSaChild">
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/kitchen-dining-small-appliances-cookware/b/ref=sa_menu_ki6?ie=UTF8&node=284507&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Kitchen & Dining</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/furniture-decor-rugs-lamps-beds-tv-stands/b/ref=sa_menu_fd6?ie=UTF8&node=1057794&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Furniture & Décor</a>
+</li>
+<li class="navSaChildItem">
+
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/bedding-bath-sheets-towels/b/ref=sa_menu_bb6?ie=UTF8&node=1057792&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Bedding & Bath</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/home-appliances-fans-heaters-air-conditioners/b/ref=sa_menu_ha6?ie=UTF8&node=361395011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Home Appliances</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/vacuums-home-storage-organization/b/ref=sa_menu_vc6?ie=UTF8&node=510080&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Vacuums & Storage</a>
+
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Home-Improvement-garden-tools-lawn-hardware/b/ref=sa_menu_hi26?ie=UTF8&node=228013&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Home Improvement</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/patio-garden-grills-outdoor-furniture/b/ref=sa_menu_lp6?ie=UTF8&node=286168&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Patio, Lawn & Garden</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/pet-supplies-dog-cat-food-bed-toy/b/ref=sa_menu_ps6?ie=UTF8&node=12923371&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Pet Supplies</a>
+
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/sewing-fabric-craft-scrapbook-supplies/b/ref=sa_menu_sch6?ie=UTF8&node=12890711&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Sewing, Craft & Hobby</a>
+</li>
+</ul>
+</div>
+</li>
+<li id="navSaMenuItem_7" class="navSaMenuItem navSaMenuItemMiddle">
+<a class="navSaMenuItem">Grocery, Health & Beauty</a>
+<div class="navSaChild">
+<ul id="navSaChild_7" class="navbar navSaChild">
+
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/grocery-breakfast-foods-snacks-organic/b/ref=sa_menu_gro7?ie=UTF8&node=16310101&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Grocery</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Natural-Organic-Grocery/b/ref=sa_menu_nto7?ie=UTF8&node=51537011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Natural & Organic</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/gourmet-food-gifts-chocolate-seafood/b/ref=sa_menu_gf7?ie=UTF8&node=3370831&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Gourmet Food</a>
+</li>
+
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/health-personal-care-nutrition-fitness/b/ref=sa_menu_hpc7?ie=UTF8&node=3760901&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Health & Personal Care</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/beauty-makeup-fragrance-skin-care/b/ref=sa_menu_bty7?ie=UTF8&node=3760911&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Beauty</a>
+</li>
+</ul>
+</div>
+</li>
+<li id="navSaMenuItem_8" class="navSaMenuItem navSaMenuItemMiddle">
+<a class="navSaMenuItem">Toys, Kids & Baby</a>
+
+<div class="navSaChild">
+<ul id="navSaChild_8" class="navbar navSaChild">
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/toys/b/ref=sa_menu_tg8?ie=UTF8&node=165793011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Toys & Games</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/baby-car-seats-strollers-bedding/b/ref=sa_menu_ba8?ie=UTF8&node=165796011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Baby</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Kids-Baby-Clothing/b/ref=sa_menu_kba8?ie=UTF8&node=1040662&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Clothing (Kids & Baby)</a>
+
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Kids-Family/b/ref=sa_menu_cvg8?ie=UTF8&node=471306&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Video Games for Kids</a>
+</li>
+</ul>
+</div>
+</li>
+<li id="navSaMenuItem_9" class="navSaMenuItem navSaMenuItemMiddle">
+<a class="navSaMenuItem">Clothing, Shoes & Jewelry</a>
+<div class="navSaChild">
+<ul id="navSaChild_9" class="navbar navSaChild">
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+
+<a class="navSaChildItem" href="/clothing-accessories-men-women-kids/b/ref=sa_menu_apr9?ie=UTF8&node=1036592&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Clothing & Accessories</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/shoes-men-women-kids-baby/b/ref=sa_menu_shoe9?ie=UTF8&node=672123011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Shoes</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/jewelry-watches-engagements-rings-diamonds/b/ref=sa_menu_jewelry9?ie=UTF8&node=3367581&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Jewelry</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+
+<a class="navSaChildItem" href="/Watches-Mens-Womens-Kids-Accessories/b/ref=sa_menu_watches9?ie=UTF8&node=377110011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Watches</a>
+</li>
+</ul>
+</div>
+</li>
+<li id="navSaMenuItem_10" class="navSaMenuItem navSaMenuItemMiddle">
+<a class="navSaMenuItem">Sports & Outdoors</a>
+<div class="navSaChild">
+<ul id="navSaChild_10" class="navbar navSaChild">
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Exercise-Fitness-Sports-Outdoors/b/ref=sa_menu_ef10?ie=UTF8&node=3407731&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Exercise & Fitness</a>
+
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Outdoor-Recreation/b/ref=sa_menu_outrec10?ie=UTF8&node=706814011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Outdoor Recreation</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Apparel/b/ref=sa_menu_athcloth10?ie=UTF8&node=2206626011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Athletic & Outdoor Clothing</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Team-Sports-Outdoors/b/ref=sa_menu_teamsp10?ie=UTF8&node=706809011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Team Sports</a>
+
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Bikes-Scooters/b/ref=sa_menu_bike10?ie=UTF8&node=2232464011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Bikes & Scooters</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Golf-Sports-Outdoors/b/ref=sa_menu_golf10?ie=UTF8&node=3410851&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Golf</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Fan-Shop-Sports-Outdoors/b/ref=sa_menu_fan10?ie=UTF8&node=3386071&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Fan Shop</a>
+
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/sporting-goods-clothing-cycling-exercise/b/ref=sa_menu_sg10?ie=UTF8&node=3375251&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">All Sports & Outdoors</a>
+</li>
+</ul>
+</div>
+</li>
+<li id="navSaMenuItem_11" class="navSaMenuItem navSaMenuItemBottom">
+<a class="navSaMenuItem">Tools, Auto & Industrial</a>
+<div class="navSaChild">
+<ul id="navSaChild_11" class="navbar navSaChild">
+
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Tools-Power-Cordless-Saws-Drills/b/ref=sa_menu_hi11?ie=UTF8&node=328182011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Power & Hand Tools</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Home-Improvement-garden-tools-lawn-hardware/b/ref=sa_menu_hi211?ie=UTF8&node=228013&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Home Improvement</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Plumbing-Home-Improvement-Faucets-Bathtubs/b/ref=sa_menu_plumb11?ie=UTF8&node=3754161&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Plumbing Fixtures</a>
+</li>
+
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Lighting-Electrical-Home-Improvement/b/ref=sa_menu_light11?ie=UTF8&node=495224&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Lighting & Electrical</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Lawn-Garden-Tools-Hardware/b/ref=sa_menu_outequip11?ie=UTF8&node=551242&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Outdoor Power Equipment</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/automotive-auto-truck-replacements-parts/b/ref=sa_menu_cpc11?ie=UTF8&node=15684181&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Automotive</a>
+</li>
+
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/Motorcycle-ATV-Automotive/b/ref=sa_menu_matv11?ie=UTF8&node=346333011&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Motorcycle & ATV</a>
+</li>
+<li class="navSaChildItem">
+<div class="navSprite navSaChildOrangeArrow"></div>
+<a class="navSaChildItem" href="/industrial-scientific-supplies/b/ref=sa_menu_biss11?ie=UTF8&node=16310091&pf_rd_p=328655101&pf_rd_s=left-nav-1&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Industrial & Scientific</a>
+</li>
+</ul>
+</div>
+</li>
+
+</ul>
+<div class="navSaGwBottom">
+<div class="navSprite navSaGwBottomRule">
+<div class="navSaGwFixIE"></div>
+</div>
+</div>
+</div>
+</div>
+
+<script type="text/javascript">
+ amznJQ.declareAvailable('navbarBTF');
+</script>
+<script type='text/javascript'><!--
+ _navbar.componentLoaded();
+--></script>
+ <div id="leftcolbtf"></div>
+ </div>
+
+
+ <div class="amabot_right" id="rightcol">
+
+
+ <div style="display:none;"></div><table border="0" width="100%" cellspacing="0" cellpadding="0"><tr><td align="center"><map name="strath-roto"><area shape="rect" coords="0,0,300,120" alt="Shop Strathwood Patio Furniture" href="/gp/feature.html/ref=amb_link_191469822_2?ie=UTF8&docId=1000075201&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=right-csm-1&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=1241211022&pf_rd_i=507846"/> </map><img src="http://g-ecx.images-amazon.com/images/G/01/img10/home-and-gardern/300-column/strathwood_300x120._V218000842_.gif" width="300" align="center" usemap="#strath-roto" alt="Shop Strathwood Patio Furniture" height="120" border="0" /></td></tr></table><br>
+ <style type="text/css">
+ .csContent .csButtonPanel {right:50%; margin-right:-235px;}
+ </style>
+
+
+ <style type="text/css">
+
+#pphGateway
+{
+ font-family:verdana;
+ font-size: 13px;
+}
+
+#pphGateway a:link
+{
+ font-size: 13px;
+ color:#003399;
+}
+
+#pphGateway a:visited
+{
+ font-size: 13px;
+ color:#003399;
+}
+
+#pphGateway a:active
+{
+ font-size: 13px;
+ color:#003399
+}
+
+#pphGateway table,
+#pphGateway tr,
+#pphGateway td {
+ margin: 0;
+ padding: 0;
+ border: none;
+}
+
+#pphGateway td {
+ vertical-align: middle;
+ text-align: center;
+}
+
+.pphGatewayPayPhrase
+{
+ color:#E47911;
+ font-weight: bold;
+}
+
+.pphGatewayCarat
+{
+ margin-right: 2px;
+}
+
+</style>
+
+
+
+ <script type="text/javascript">
+
+ var pphPopup = {};
+
+
+
+ pphPopup.openPopup = function(url, fallbackUrl, windowName, width, height, shouldClose) {
+ var left = (window.screen.width - width) / 2;
+ var top = (window.screen.height - height) / 2;
+
+ var options = {};
+ options.width = width;
+ options.height = height;
+ options.left = left;
+ options.top = top;
+ options.scrollbars = 'yes';
+
+ var optionStrings = [];
+ for (var key in options) {
+ var value = options[key];
+ optionStrings.push(key + '=' + value);
+ }
+
+ var popup = window.open(url, windowName, optionStrings.join(','));
+
+ if (popup == null || popup.closed) {
+ window.location = fallbackUrl;
+ return null;
+ }
+
+ popup.focus();
+
+ if (shouldClose) {
+ window.close();
+ }
+
+ return popup;
+ }
+
+
+
+ pphPopup.openNewWindow = function(url, windowName, shouldClose) {
+ var popup = window.open(url, windowName);
+
+ if (popup == null || popup.closed) {
+ window.location = url;
+ return null;
+ }
+
+ if (shouldClose) {
+ window.close();
+ }
+
+ return popup;
+ }
+
+ </script>
+
+
+
+
+
+
+
+
+
+
+<div class="unified_widget">
+
+
+
+
+
+
+
+
+<div id="pphGateway">
+ <table cellpadding="0" cellspacing="0">
+ <tr>
+ <td><img src="http://g-ecx.images-amazon.com/images/G/01/payphrase/gw_icon_whats-your-pp_60x50._V227419901_.gif" width="57" height="42" border="0" /></td>
+ <td>
+ <div class="pphGatewayPayPhrase">
+
+ "Precious Charities"
+ </div>
+ <div>
+ is still available!
+ <img class="pphGatewayCarat" src="http://g-ecx.images-amazon.com/images/G/01/payphrase/carat_orange._V233258236_.gif"
+ ><a href="/gp/payphrase/claim/whats-this.html/ref=pph_gw1_" onclick="pphPopup.openPopup('/gp/payphrase/claim/select-phrase.html/ref=pph_gw1_?ie=UTF8&a=wh-th&phrase=Precious Charities&isPopup=0', '/gp/payphrase/claim/whats-this.html/ref=pph_gw1_', 'pphCreatePayphrase', 500, 475, false); return false;">Claim yours</a>
+ </div>
+ </td>
+ </tr>
+ </table>
+</div>
+
+</div>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div id="cachebust_672468_adcontent" style="display:block; margin-top: 0px; margin-bottom:16px; padding:0px; width:303px; ">
+
+
+
+
+
+
+
+<script type="text/javascript">
+
+function createIFrame(parentId,name,src,width,height,headerFlag,onloadHandler,ffMagic) {
+ var elem = document.createElement("iframe");
+ elem.id = name;
+ if (ffMagic === true && navigator.userAgent.indexOf("Firefox") > -1) {
+ elem.src = "about:self";
+ } else {
+ elem.src = src;
+ }
+ elem.frameBorder = 0;
+ elem.marginHeight = 0;
+ elem.marginWidth = 0;
+ elem.leftMargin = 0;
+ elem.topMargin = 0;
+
+ if (elem.attachEvent) {
+ elem.attachEvent("onload", onloadHandler );
+ } else if (elem.addEventListener) {
+ elem.addEventListener("load", onloadHandler, false );
+ } else {
+ elem.onload = onloadHandler;
+ }
+
+ elem.setAttribute("name", name);
+ elem.setAttribute("title", "Ad");
+ elem.setAttribute("scrolling", "no");
+ elem.setAttribute("allowtransparency", "true");
+ elem.setAttribute("width", width);
+ elem.setAttribute("height", height);
+ var parent = document.getElementById(parentId);
+ if(headerFlag === true) {
+ var header = parent.getElementsByTagName("div")[0];
+ if( header.nextSibling ) {
+ parent.insertBefore(elem,header.nextSibling);
+ } else {
+ parent.appendChild(elem);
+ }
+ } else {
+ if( parent.hasChildNodes() ) {
+ parent.insertBefore(elem,parent.firstChild);
+ } else {
+ parent.appendChild(elem);
+ }
+ }
+
+ if (navigator.userAgent.indexOf("Firefox") > -1) {
+ elem.contentWindow.location.replace(src);
+ }
+}
+
+
+ function createIFrame_672468() {
+var headerFlag = false;
+createIFrame("cachebust_672468_adcontent", "cachebust_672468", "/aan/2009-09-09/static/amazon.us/iframeproxy.html#dclick=amzn.us.gw.atf;sz%3D300x250;bn%3D507846;u%3Dd3fea4d8de44458ba080ee463a1b4d29;ord%3D1ZVR459TF7HXNEVD4C92;s%3D380;s%3D98;s%3D99;s%3D374;s%3D227;s%3D121;s%3D363;s%3D122;s%3D128;s%3D3;s%3D411;s%3D412;s%3D137;s%3D142;s%3D279;s%3D614;s%3D493;s%3D888;s%3D131;s%3D12;s%3D284;s%3D615;s%3D496;s%3D404;s%3D283;s%3D10;s%3D286;s%3D285;s%3D287;s%3D877;s%3D875;s%3D497;s%3D22;s%3D266;s%3D27;s%3D26;s%3D32;s%3D271;s%3D150;s%3D39;s%3D40;s%3D171;s%3D165;s%3D318;s%3D49;s%3D303;s%3D57;s%3D59;s%3D342;s%3D71;s%3D341;s%3D344;s%3D343;s%3D338;s%3D67;s%3D337;s%3D340;s%3D339;s%3D350;s%3D349;s%3D80;s%3D77;s%3D195;s%3D348;s%3D324;s%3D333;s%3D334;s%3D335;s%3D94;s%3D336;s%3D92;s%3D330;s%3D91;s%3D331;s%3D332;s%3Dm1;s%3Dm4;z%3D3;tile%3D1%3F",
+ "303", "270", headerFlag, adOnload_672468,true);
+ }
+
+ function collapseFrame_672468 () {
+ var elem=document.getElementById('cachebust_672468_adcontent');
+ elem.style.visibility="hidden";
+ elem.style.display="none";
+ elem.style.height=0;
+ elem.style.width=0;
+ elem.style.margin=0;
+ }
+ function adOnload_672468 () {
+
+ var frame_672468 = document.getElementById('cachebust_672468');
+ if( frame_672468.contentWindow ) {
+ if( frame_672468.contentWindow.document ) {
+ var iwin = frame_672468.contentWindow;
+ if( typeof iwin.d16gCollapse !== "undefined" ) {
+ collapseFrame_672468();
+ } else {
+ var ib = iwin.document.body;
+ if( ib && ib.innerHTML == "" ) {
+ var oDoc = (frame_672468.contentWindow || frame_672468.contentDocument);
+ if (oDoc.document)
+ oDoc = oDoc.document;
+ oDoc.write('<a href="http://www.amazon.com/gp/browse.html/ref=rd_baby_hp/?node=165796011" target="_blank"><img src="http://g-ecx.images-amazon.com/images/G/01/advertising/300x250-new-in-baby_041808._V259687583_.jpg" height="250" alt="Baby" width="300" border="0"/></a>');
+ }
+ }
+ }
+ }
+ }
+</script>
+
+
+
+<script type="text/javascript">
+if(typeof gwEH != 'undefined') {
+ gwEH.afterFold(function() {
+ amznJQ.available('jQuery', function() {
+ createIFrame_672468();
+ });
+ });
+}
+else {
+ createIFrame_672468();
+}
+</script> <noscript><iframe id="cachebust_672468" name="cachebust_672468" src="http://ad.doubleclick.net/adi/amzn.us.gw.atf;sz=300x250;bn=507846;u=d3fea4d8de44458ba080ee463a1b4d29;ord=1ZVR459TF7HXNEVD4C92;s=380;s=98;s=99;s=374;s=227;s=121;s=363;s=122;s=128;s=3;s=411;s=412;s=137;s=142;s=279;s=614;s=493;s=888;s=131;s=12;s=284;s=615;s=496;s=404;s=283;s=10;s=286;s=285;s=287;s=877;s=875;s=497;s=22;s=266;s=27;s=26;s=32;s=271;s=150;s=39;s=40;s=171;s=165;s=318;s=49;s=303;s=57;s=59;s=342;s=71;s=341;s=344;s=343;s=338;s=67;s=337;s=340;s=339;s=350;s=349;s=80;s=77;s=195;s=348;s=324;s=333;s=334;s=335;s=94;s=336;s=92;s=330;s=91;s=331;s=332;s=m1;s=m4;z=3;tile=1?" title="Ad" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" allowtransparency="true" width="303" height="270" onload="adOnload_672468()" > <a href="http://www.amazon.com/gp/browse.html/ref=rd_baby_hp/?node=165796011" target="_blank"><img src="http://g-ecx.images-amazon.com/images/G/01/advertising/300x250-new-in-baby_041808._V259687583_.jpg" height="250" alt="Baby" width="300" border="0"/></a> </iframe></noscript>
+
+</div><div class="unified_widget rcmBody"><h2>Nintendo's New DSi XL</h2><div class="prodImage"><a href="/gp/s//ref=amb_link_167009822_1?ie=UTF8&search-alias=videogames&hidden-keywords=B002I08UWU%7CB002I08UGQ&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=right-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=1120331022&pf_rd_i=507846"><img src="http://ecx.images-amazon.com/images/I/410rcWZGNzL._SL75_.jpg" width="75" align="left" alt="Nintendo DSi XL" height="69" border="0" /></a></div>The newly announced
+<a href="/gp/s//ref=amb_link_167009822_3?ie=UTF8&search-alias=videogames&hidden-keywords=B002I08UWU%7CB002I08UGQ&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=right-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=1120331022&pf_rd_i=507846">Nintendo DSi XL</a> includes two 4.2-inch LCD screens, three bundled games, and an Internet browser and comes in two new colors.
+<br clear="left"><p class="seeMore"><span class="carat">›</span><a href="/gp/s//ref=amb_link_167009822_4?ie=UTF8&search-alias=videogames&hidden-keywords=B002I08UWU%7CB002I08UGQ&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=right-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=1120331022&pf_rd_i=507846">Learn more</a></p><div class="h_rule"></div></div>
+ <div id="rightcolbtf"></div>
+
+ </div>
+ <div class="amabot_center" id="centercol">
+
+
+
+
+
+
+
+
+
+
+ <div style="display:none;"></div><table border="0" width="100%" cellspacing="0" cellpadding="0"><tr><td align="center"><map name="kindleC2"><area shape="rect" coords="1,2,474,340" alt="Kindle: Free wireless, no contracts" href="/Kindle-Wireless-Reading-Display-Generation/dp/B0015T963C/ref=amb_link_40389822_2?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-1&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=1243857022&pf_rd_i=507846"/> </map><img src="http://g-ecx.images-amazon.com/images/G/01/kindle/merch/gw/turingww-C1-COM-LRG-TV-06._V217552120_.jpg" align="center" usemap="#kindleC2" alt="Kindle: Free wireless, no contracts" border="0" /></td></tr></table><br>
+
+ <div class="unified_widget rcm">
+
+<script type="text/javascript">
+if (typeof S9MultiPackLayout == "undefined") {
+ document.write('<scr' + 'ipt src="http://z-ecx.images-amazon.com/images/G/01/s9-campaigns/s9-multipack-layout-seeded._V217957892_.js"></scr' + 'ipt>');
+}
+</script>
+<style>
+.ns_1ZVR459TF7HXNEVD4C92_25487_fixedHeightImageContainer {
+height: 136px;
+position: relative;
+margin-bottom: 8px;
+vertical-align: bottom;
+}
+.ns_1ZVR459TF7HXNEVD4C92_25487_fixedHeightImageContainer img {
+position: absolute;
+bottom: 0px;
+}
+.ns_1ZVR459TF7HXNEVD4C92_25487_textContainer {
+padding: 0;
+margin: 0;
+overflow: hidden;
+}
+.ns_1ZVR459TF7HXNEVD4C92_25487_textWrapper {
+padding: 0;
+margin: 0;
+}
+td.amabot_center div.unified_widget h2.s9_title, div.amabot_center div.unified_widget h2.s9_title {margin-bottom: 0;
+}
+.seed_header {border-right: 1px dotted #DDDDDD;
+background: #FAFAFA;
+}
+.other_header {background: #FFF;
+}
+.s9_seeded_row {padding-bottom: 1.917em;
+border-bottom: 1px dotted #DDDDDD;
+}
+div.s9_de div.s9_seeded_row {padding-bottom: 3.5em;
+}
+.s9_header {margin-bottom: 0.833em;
+color: #666666;
+padding: 0.25em 0.583em 0.25em 0.583em;
+}
+div.s9_de div#ns_1ZVR459TF7HXNEVD4C92_25487_SeedItemHeader {height: 3em;
+}
+div.s9_de div#ns_1ZVR459TF7HXNEVD4C92_25487_OtherItemsHeader {height: 3em;
+}
+
+</style>
+<h2>What Other Customers Are Looking At Right Now</h2>
+<div class="row" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ItemRow">
+<div class="ns_1ZVR459TF7HXNEVD4C92_25487_otherItems" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0OtherItems" style="float: left; width: 99%;">
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ItemElement0" style="width: 33%; margin-bottom: 0px; ">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ImageContainer0" class="ns_1ZVR459TF7HXNEVD4C92_25487_fixedHeightImageContainer">
+<a href="/gp/product/B000REPU2M/ref=s9_pop_gw_ir01?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846"><img src="http://ecx.images-amazon.com/images/I/313oEZOqNSL._SL135_.jpg" alt="Hoover Elite Rewind..." width="135" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Image0" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0TitleContainer0" class="ns_1ZVR459TF7HXNEVD4C92_25487_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Title0" class="ns_1ZVR459TF7HXNEVD4C92_25487_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B000REPU2M/ref=s9_pop_gw_tr01?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846" title="Hoover Elite Rewind Bagless Upright Vacuum">Hoover Elite Rewind Bagless Upright...</a>
+<span class="byline">
+
+</span>
+</div>
+<span class="listprice">$139.00</span> <b class="price">$89.99</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ItemElement1" style="width: 33%; margin-bottom: 0px; ">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ImageContainer1" class="ns_1ZVR459TF7HXNEVD4C92_25487_fixedHeightImageContainer">
+<a href="/gp/product/B00001PE59/ref=s9_pop_gw_ir02?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846"><img src="http://ecx.images-amazon.com/images/I/61HTVQNBP1L._SL135_.jpg" alt="Into the Woods" width="97" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Image1" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0TitleContainer1" class="ns_1ZVR459TF7HXNEVD4C92_25487_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Title1" class="ns_1ZVR459TF7HXNEVD4C92_25487_textWrapper">
+
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B00001PE59/ref=s9_pop_gw_tr02?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846">Into the Woods</a>
+<span class="byline">
+DVD
+ ~ Bernadette Peters, Joanna...
+</span>
+</div>
+<span class="listprice">$24.98</span> <b class="price">$18.99</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ItemElement2" style="width: 33%; margin-bottom: 0px; ">
+
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ImageContainer2" class="ns_1ZVR459TF7HXNEVD4C92_25487_fixedHeightImageContainer">
+<a href="/gp/product/B001FN2PDG/ref=s9_pop_gw_ir03?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846"><img src="http://ecx.images-amazon.com/images/I/4145CEsTOOL._SL135_.jpg" alt="Kodak EasyShare M820..." width="135" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Image2" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0TitleContainer2" class="ns_1ZVR459TF7HXNEVD4C92_25487_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Title2" class="ns_1ZVR459TF7HXNEVD4C92_25487_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B001FN2PDG/ref=s9_pop_gw_tr03?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846" title="Kodak EasyShare M820 Digital Frame with Home Décor Kit">Kodak EasyShare M820 Digital Frame...</a>
+<span class="byline">
+
+
+</span>
+</div>
+
+</div>
+</div>
+
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ItemElement3" style="width: 33%; margin-bottom: 0px; display: none;">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ImageContainer3" class="ns_1ZVR459TF7HXNEVD4C92_25487_fixedHeightImageContainer">
+<a href="/gp/product/0140280197/ref=s9_pop_gw_ir04?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846"><img url="http://ecx.images-amazon.com/images/I/41T9TGV2JBL._SL123_PIsitb-sticker-arrow-sm,TopRight,8,-14_OU01_.jpg" alt="The 48 Laws..." width="97" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Image3" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0TitleContainer3" class="ns_1ZVR459TF7HXNEVD4C92_25487_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Title3" class="ns_1ZVR459TF7HXNEVD4C92_25487_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/0140280197/ref=s9_pop_gw_tr04?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846">The 48 Laws of Power</a>
+<span class="byline">
+Paperback
+ ~ <a href="/Robert-Greene/e/B001IGV3IS/ref=s9_pop_gw_al4?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846">Robert Greene</a>
+</span>
+
+</div>
+<span class="listprice">$20.00</span> <b class="price">$11.70</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ItemElement4" style="width: 33%; margin-bottom: 0px; display: none;">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ImageContainer4" class="ns_1ZVR459TF7HXNEVD4C92_25487_fixedHeightImageContainer">
+<a href="/gp/product/0393072231/ref=s9_pop_gw_ir05?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846"><img url="http://ecx.images-amazon.com/images/I/411yZ-zOx7L._SL135_.jpg" alt="The Big Short..." width="90" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Image4" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0TitleContainer4" class="ns_1ZVR459TF7HXNEVD4C92_25487_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Title4" class="ns_1ZVR459TF7HXNEVD4C92_25487_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+
+<a href="/gp/product/0393072231/ref=s9_pop_gw_tr05?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846" title="The Big Short: Inside the Doomsday Machine">The Big Short: Inside the Doomsday...</a>
+<span class="byline">
+Hardcover
+ ~ <a href="/Michael-Lewis/e/B000APZ33E/ref=s9_pop_gw_al5?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846">Michael Lewis</a>
+</span>
+</div>
+<span class="listprice">$27.95</span> <b class="price">$15.09</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ItemElement5" style="width: 33%; margin-bottom: 0px; display: none;">
+
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ImageContainer5" class="ns_1ZVR459TF7HXNEVD4C92_25487_fixedHeightImageContainer">
+<a href="/gp/product/B000Z36FRE/ref=s9_pop_gw_ir06?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846"><img url="http://ecx.images-amazon.com/images/I/41j9OLZ4AtL._SL135_.jpg" alt="Tascam MPVT1 Portable..." width="121" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Image5" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0TitleContainer5" class="ns_1ZVR459TF7HXNEVD4C92_25487_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Title5" class="ns_1ZVR459TF7HXNEVD4C92_25487_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B000Z36FRE/ref=s9_pop_gw_tr06?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846">Tascam MPVT1 Portable MP3 Vocal Trainer</a>
+<span class="byline">
+
+
+</span>
+</div>
+
+</div>
+</div>
+
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ItemElement6" style="width: 33%; margin-bottom: 0px; display: none;">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0ImageContainer6" class="ns_1ZVR459TF7HXNEVD4C92_25487_fixedHeightImageContainer">
+<a href="/gp/product/B0015T963C/ref=s9_pop_gw_ir07?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846"><img url="http://ecx.images-amazon.com/images/I/41t7SWZ2vpL._SL135_.jpg" alt="Kindle Wireless Reading..." width="135" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Image6" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0TitleContainer6" class="ns_1ZVR459TF7HXNEVD4C92_25487_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25487_r0Title6" class="ns_1ZVR459TF7HXNEVD4C92_25487_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B0015T963C/ref=s9_pop_gw_tr07?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=493379291&pf_rd_i=507846" title="Kindle Wireless Reading Device (6" Display, Global Wireless, Latest Generation)">Kindle Wireless Reading Device</a>
+<span class="byline">
+
+
+</span>
+</div>
+
+<b class="price">$259.00</b>
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div style="clear: left; width: 100%; height: 1px; margin: 0; padding: 0; overflow: hidden"></div>
+<script type="text/javascript">
+if (typeof S9MultiPackLayout != "undefined") {
+ var ns_1ZVR459TF7HXNEVD4C92_25487_r0_S9MultiPackLayout = new S9MultiPackLayout(
+"ns_1ZVR459TF7HXNEVD4C92_25487_r0", 3, 7, 155, 6);
+}
+</script>
+<div class="h_rule"></div>
+</div>
+
+
+
+
+
+
+<img src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V42752373_.gif" width="1" alt="" onload="if (typeof uet == 'function') { uet('af'); } for (var i=0;i<gwEH._f.length;i++) { try { gwEH._f[i](); } catch (e) {} } gwEH.afterFold = function(callback) { callback(); }" height="1" border="0" />
+
+
+
+<script type="text/javascript">
+ amznJQ.onReady('jQuery', function() {
+ if( document.getElementById('leftcolbtf') != null && document.getElementById('leftcolhidden') != null) {
+ document.getElementById('leftcolbtf').innerHTML = document.getElementById('leftcolhidden').innerHTML;
+ document.getElementById('leftcolhidden').innerHTML = '';
+ }
+ if( document.getElementById('rightcolbtf') != null && document.getElementById('rightcolhidden') != null) {
+ document.getElementById('rightcolbtf').innerHTML = document.getElementById('rightcolhidden').innerHTML;
+ document.getElementById('rightcolhidden').innerHTML = '';
+ }
+ if( document.getElementById('rightcolatfhidden') != null ) {
+ document.getElementById('rightcolatfhidden').style.visibility = 'visible';
+ }
+ });
+</script>
+
+
+
+<script type="text/javascript">
+
+window.AmazonPopoverImages = {
+ snake: 'http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/snake._V265110081_.gif',
+ btnClose: 'http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/btn_close._V265110085_.gif',
+ closeTan: 'http://g-ecx.images-amazon.com/images/G/01/nav2/images/close-tan-sm._V46903531_.gif',
+ closeTanDown: 'http://g-ecx.images-amazon.com/images/G/01/nav2/images/close-tan-sm-dn._V46881222_.gif',
+ loadingBar: 'http://g-ecx.images-amazon.com/images/G/01/javascripts/lib/popover/images/loading-bar-small._V236365259_.gif',
+ pixel: 'http://g-ecx.images-amazon.com/images/G/01/icons/blank-pixel._V42753713_.gif'
+};
+var container = document.createElement("DIV");
+container.id = "ap_container";
+if (document.body.childNodes.length) {
+ document.body.insertBefore(container, document.body.childNodes[0]);
+} else {
+ document.body.appendChild(container);
+}
+
+</script>
+
+ <script type="text/javascript" src="http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/amazonJQ/amazonJQ-combined-core-39694._V217696261_.js"></script>
+<script type='text/javascript'>
+ amznJQ.addLogical('navbarCSSUSTFS', []);
+ amznJQ.addLogical('navbarJS-jQuery', ["http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/navbarJS-jQuery/navbarJS-jQuery-navbarJQ-44826._V201559941_.js"]);
+ amznJQ.addLogical('websiteGridCSS', []);
+ amznJQ.addLogical('popover', []);
+ amznJQ.addLogical('amazonShoveler', ["http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/amazonShoveler/amazonShoveler-amazonShoveler-43287._V201513168_.js"]);
+ amznJQ.addLogical('amzn-ratings-bar', ["http://z-ecx.images-amazon.com/images/G/01/x-locale/personalization/yourstore/js/ratings-bar-ns-366177._V204593667_.js"]);
+ amznJQ.addLogical('clientLog', []);
+ amznJQ.addLogical('search-js-autocomplete', ["http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/search-js-autocomplete/search-js-autocomplete-autocomplete-32837._V202542121_.js"]);
+</script>
+
+
+<script type="text/javascript" src="http://z-ecx.images-amazon.com/images/G/01/wma/clog/core2._V241266071_.js"></script>
+<script type="text/javascript">
+function myBaseURLCallback(){ return "http://client-log.amazon.com/clog"; }
+function myDEBUGCallback( msg ) {
+}
+function mySessionIDCallback() { return "179-9772868-5667253"; }
+function myRequestIDCallback() { return "1ZVR459TF7HXNEVD4C92"; }
+function myMarketplaceIDCallback() { return "ATVPDKIKX0DER"; }
+if( ! window.adaptCLOG ) {
+ function adaptCLOG( clog_object ) {
+ clog_object.setBaseURLCallback( myBaseURLCallback );
+ clog_object.addDebugCallback( myDEBUGCallback );
+ clog_object.setSessionIDCallback( mySessionIDCallback );
+ clog_object.setRequestIDCallback( myRequestIDCallback );
+ clog_object.setMarketplaceIDCallback( myMarketplaceIDCallback );
+ clog_object.debug("Loaded adaptors for CLOG");
+ }
+}
+if( window.CLOG && window.adaptCLOG && !clientLogger ){ var clientLogger = new CLOG(); }
+</script>
+
+<script type="text/javascript">
+amznJQ.declareAvailable("clientLog");
+</script>
+ <div class="unified_widget rcm">
+
+<script type="text/javascript">
+if (typeof S9MultiPackLayout == "undefined") {
+ document.write('<scr' + 'ipt src="http://z-ecx.images-amazon.com/images/G/01/s9-campaigns/s9-multipack-layout-seeded._V217957892_.js"></scr' + 'ipt>');
+}
+</script>
+<style>
+.ns_1ZVR459TF7HXNEVD4C92_25488_fixedHeightImageContainer {
+height: 136px;
+position: relative;
+margin-bottom: 8px;
+vertical-align: bottom;
+}
+.ns_1ZVR459TF7HXNEVD4C92_25488_fixedHeightImageContainer img {
+position: absolute;
+bottom: 0px;
+}
+.ns_1ZVR459TF7HXNEVD4C92_25488_textContainer {
+padding: 0;
+margin: 0;
+overflow: hidden;
+}
+.ns_1ZVR459TF7HXNEVD4C92_25488_textWrapper {
+padding: 0;
+margin: 0;
+}
+td.amabot_center div.unified_widget h2.s9_title, div.amabot_center div.unified_widget h2.s9_title {margin-bottom: 0;
+}
+.seed_header {border-right: 1px dotted #DDDDDD;
+background: #FAFAFA;
+}
+.other_header {background: #FFF;
+}
+.s9_seeded_row {padding-bottom: 1.917em;
+border-bottom: 1px dotted #DDDDDD;
+}
+div.s9_de div.s9_seeded_row {padding-bottom: 3.5em;
+}
+.s9_header {margin-bottom: 0.833em;
+color: #666666;
+padding: 0.25em 0.583em 0.25em 0.583em;
+}
+div.s9_de div#ns_1ZVR459TF7HXNEVD4C92_25488_SeedItemHeader {height: 3em;
+}
+div.s9_de div#ns_1ZVR459TF7HXNEVD4C92_25488_OtherItemsHeader {height: 3em;
+}
+</style>
+<h2>Your Favorite Childhood Candies</h2>
+<div class="row" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ItemRow">
+
+<div class="ns_1ZVR459TF7HXNEVD4C92_25488_otherItems" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0OtherItems" style="float: left; width: 99%;">
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ItemElement0" style="width: 33%; margin-bottom: 0px; ">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ImageContainer0" class="ns_1ZVR459TF7HXNEVD4C92_25488_fixedHeightImageContainer">
+<a href="/gp/product/B0001VSA2I/ref=s9_tops_gw_ir01?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846"><img src="http://ecx.images-amazon.com/images/I/41eylFKVJNL._SL135_.jpg" alt="50's Decade Box" width="135" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Image0" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0TitleContainer0" class="ns_1ZVR459TF7HXNEVD4C92_25488_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Title0" class="ns_1ZVR459TF7HXNEVD4C92_25488_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B0001VSA2I/ref=s9_tops_gw_tr01?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846">50's Decade Box</a>
+<span class="byline">
+
+
+</span>
+</div>
+
+<b class="price">$39.95</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ItemElement1" style="width: 33%; margin-bottom: 0px; ">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ImageContainer1" class="ns_1ZVR459TF7HXNEVD4C92_25488_fixedHeightImageContainer">
+<a href="/gp/product/B0001VSA32/ref=s9_tops_gw_ir02?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846"><img src="http://ecx.images-amazon.com/images/I/41kD%2BJ08FML._SL135_.jpg" alt="70's Decade Box" width="135" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Image1" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0TitleContainer1" class="ns_1ZVR459TF7HXNEVD4C92_25488_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Title1" class="ns_1ZVR459TF7HXNEVD4C92_25488_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B0001VSA32/ref=s9_tops_gw_tr02?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846">70's Decade Box</a>
+
+<span class="byline">
+
+
+</span>
+</div>
+<b class="price">$39.95</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ItemElement2" style="width: 33%; margin-bottom: 0px; ">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ImageContainer2" class="ns_1ZVR459TF7HXNEVD4C92_25488_fixedHeightImageContainer">
+<a href="/gp/product/B0001VSA3C/ref=s9_tops_gw_ir03?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846"><img src="http://ecx.images-amazon.com/images/I/41ALexxjAUL._SL135_.jpg" alt="80's Decade Box" width="135" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Image2" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0TitleContainer2" class="ns_1ZVR459TF7HXNEVD4C92_25488_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Title2" class="ns_1ZVR459TF7HXNEVD4C92_25488_textWrapper">
+
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B0001VSA3C/ref=s9_tops_gw_tr03?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846">80's Decade Box</a>
+<span class="byline">
+
+
+</span>
+</div>
+<b class="price">$29.99</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ItemElement3" style="width: 33%; margin-bottom: 0px; display: none;">
+
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ImageContainer3" class="ns_1ZVR459TF7HXNEVD4C92_25488_fixedHeightImageContainer">
+<a href="/gp/product/B0001VSA3M/ref=s9_tops_gw_ir04?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846"><img url="http://ecx.images-amazon.com/images/I/41K%2BZwPya9L._SL135_.jpg" alt="90s Decade Box..." width="135" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Image3" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0TitleContainer3" class="ns_1ZVR459TF7HXNEVD4C92_25488_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Title3" class="ns_1ZVR459TF7HXNEVD4C92_25488_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B0001VSA3M/ref=s9_tops_gw_tr04?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846" title="90s Decade Box Gift Basket - Classic 90's Candy">90s Decade Box Gift Basket - Classic...</a>
+<span class="byline">
+
+
+</span>
+</div>
+<b class="price">$29.99</b>
+</div>
+
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ItemElement4" style="width: 33%; margin-bottom: 0px; display: none;">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ImageContainer4" class="ns_1ZVR459TF7HXNEVD4C92_25488_fixedHeightImageContainer">
+<a href="/gp/product/B001L7EUES/ref=s9_tops_gw_ir05?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846"><img url="http://ecx.images-amazon.com/images/I/41sC81dR5BL._SL135_.jpg" alt="Decade Box 1940's" width="135" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Image4" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0TitleContainer4" class="ns_1ZVR459TF7HXNEVD4C92_25488_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Title4" class="ns_1ZVR459TF7HXNEVD4C92_25488_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B001L7EUES/ref=s9_tops_gw_tr05?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846">Decade Box 1940's</a>
+<span class="byline">
+
+
+</span>
+</div>
+<b class="price">$39.95</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ItemElement5" style="width: 33%; margin-bottom: 0px; display: none;">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ImageContainer5" class="ns_1ZVR459TF7HXNEVD4C92_25488_fixedHeightImageContainer">
+<a href="/gp/product/B0001VSA1O/ref=s9_tops_gw_ir06?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846"><img url="http://ecx.images-amazon.com/images/I/41E31RER5FL._SL135_.jpg" alt="60's Classic..." width="129" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Image5" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0TitleContainer5" class="ns_1ZVR459TF7HXNEVD4C92_25488_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Title5" class="ns_1ZVR459TF7HXNEVD4C92_25488_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B0001VSA1O/ref=s9_tops_gw_tr06?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846">60's Classic Collection Gift Basket</a>
+
+<span class="byline">
+
+
+</span>
+</div>
+<b class="price">$39.99</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ItemElement6" style="width: 33%; margin-bottom: 0px; display: none;">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0ImageContainer6" class="ns_1ZVR459TF7HXNEVD4C92_25488_fixedHeightImageContainer">
+<a href="/gp/product/B0001VSA1E/ref=s9_tops_gw_ir07?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846"><img url="http://ecx.images-amazon.com/images/I/416A598HJ3L._SL135_.jpg" alt="50's Classic..." width="129" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Image6" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0TitleContainer6" class="ns_1ZVR459TF7HXNEVD4C92_25488_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25488_r0Title6" class="ns_1ZVR459TF7HXNEVD4C92_25488_textWrapper">
+
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B0001VSA1E/ref=s9_tops_gw_tr07?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846">50's Classic Collection Gift Basket</a>
+<span class="byline">
+
+
+</span>
+</div>
+<b class="price">$39.99</b>
+</div>
+</div>
+</div>
+</div>
+</div>
+
+</div>
+<div style="clear: left; width: 100%; height: 1px; margin: 0; padding: 0; overflow: hidden"></div>
+<script type="text/javascript">
+if (typeof S9MultiPackLayout != "undefined") {
+ var ns_1ZVR459TF7HXNEVD4C92_25488_r0_S9MultiPackLayout = new S9MultiPackLayout(
+"ns_1ZVR459TF7HXNEVD4C92_25488_r0", 3, 7, 155, 6);
+}
+</script>
+<p class="seeMore">
+<span class="carat">›</span><a href="http://www.amazon.com/s/ref=s9_tops_gw_clnk?search-alias=gourmet&node=3370831&emi=A3RW63R5A3NKMJ&keywords=Classic|Decade&sort=salesrank&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=486313231&pf_rd_i=507846">See more</a>
+</p>
+<div class="h_rule"></div>
+</div>
+<div class="unified_widget rcm">
+
+<script type="text/javascript">
+if (typeof S9MultiPackLayout == "undefined") {
+ document.write('<scr' + 'ipt src="http://z-ecx.images-amazon.com/images/G/01/s9-campaigns/s9-multipack-layout-seeded._V217957892_.js"></scr' + 'ipt>');
+}
+</script>
+<style>
+.ns_1ZVR459TF7HXNEVD4C92_25486_fixedHeightImageContainer {
+height: 136px;
+position: relative;
+margin-bottom: 8px;
+vertical-align: bottom;
+}
+.ns_1ZVR459TF7HXNEVD4C92_25486_fixedHeightImageContainer img {
+position: absolute;
+bottom: 0px;
+}
+.ns_1ZVR459TF7HXNEVD4C92_25486_textContainer {
+padding: 0;
+margin: 0;
+overflow: hidden;
+}
+.ns_1ZVR459TF7HXNEVD4C92_25486_textWrapper {
+padding: 0;
+margin: 0;
+}
+td.amabot_center div.unified_widget h2.s9_title, div.amabot_center div.unified_widget h2.s9_title {margin-bottom: 0;
+}
+.seed_header {border-right: 1px dotted #DDDDDD;
+background: #FAFAFA;
+}
+.other_header {background: #FFF;
+}
+.s9_seeded_row {padding-bottom: 1.917em;
+border-bottom: 1px dotted #DDDDDD;
+}
+div.s9_de div.s9_seeded_row {padding-bottom: 3.5em;
+}
+.s9_header {margin-bottom: 0.833em;
+color: #666666;
+padding: 0.25em 0.583em 0.25em 0.583em;
+}
+div.s9_de div#ns_1ZVR459TF7HXNEVD4C92_25486_SeedItemHeader {height: 3em;
+}
+div.s9_de div#ns_1ZVR459TF7HXNEVD4C92_25486_OtherItemsHeader {height: 3em;
+}
+</style>
+<h2>iPods Bestsellers</h2>
+
+<div class="row" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ItemRow">
+<div class="ns_1ZVR459TF7HXNEVD4C92_25486_otherItems" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0OtherItems" style="float: left; width: 99%;">
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ItemElement0" style="width: 33%; margin-bottom: 0px; ">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ImageContainer0" class="ns_1ZVR459TF7HXNEVD4C92_25486_fixedHeightImageContainer">
+<a href="/gp/product/B002M3SOC4/ref=s9_top_gw_ir01?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846"><img src="http://ecx.images-amazon.com/images/I/413XvF0yukL._SL135_.jpg" alt="Apple iPod touch..." width="91" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Image0" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0TitleContainer0" class="ns_1ZVR459TF7HXNEVD4C92_25486_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Title0" class="ns_1ZVR459TF7HXNEVD4C92_25486_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B002M3SOC4/ref=s9_top_gw_tr01?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846" title="Apple iPod touch 32 GB (3rd Generation) NEWEST MODEL">Apple iPod touch 32 GB NEWEST MODEL</a>
+<span class="byline">
+
+
+</span>
+</div>
+
+<span class="listprice">$299.99</span> <b class="price">$266.99</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ItemElement1" style="width: 33%; margin-bottom: 0px; ">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ImageContainer1" class="ns_1ZVR459TF7HXNEVD4C92_25486_fixedHeightImageContainer">
+<a href="/gp/product/B001F7AHOG/ref=s9_top_gw_ir02?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846"><img src="http://ecx.images-amazon.com/images/I/41s-vKh2z4L._SL135_.jpg" alt="Apple iPod classic..." width="102" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Image1" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0TitleContainer1" class="ns_1ZVR459TF7HXNEVD4C92_25486_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Title1" class="ns_1ZVR459TF7HXNEVD4C92_25486_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B001F7AHOG/ref=s9_top_gw_tr02?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846" title="Apple iPod classic 160 GB Black (7th Generation) NEWEST MODEL">Apple iPod classic 160 GB Black...</a>
+
+<span class="byline">
+
+
+</span>
+</div>
+<span class="listprice">$249.99</span> <b class="price">$228.50</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ItemElement2" style="width: 33%; margin-bottom: 0px; ">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ImageContainer2" class="ns_1ZVR459TF7HXNEVD4C92_25486_fixedHeightImageContainer">
+<a href="/gp/product/B002L6HDTC/ref=s9_top_gw_ir03?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846"><img src="http://ecx.images-amazon.com/images/I/41Lu8SfrcpL._SL135_.jpg" alt="Apple iPod nano..." width="89" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Image2" /></a>
+</div>
+
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0TitleContainer2" class="ns_1ZVR459TF7HXNEVD4C92_25486_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Title2" class="ns_1ZVR459TF7HXNEVD4C92_25486_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B002L6HDTC/ref=s9_top_gw_tr03?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846" title="Apple iPod nano 16 GB Black (5th Generation) NEWEST MODEL">Apple iPod nano 16 GB Black NEWEST MODEL</a>
+<span class="byline">
+
+
+</span>
+</div>
+<span class="listprice">$179.99</span> <b class="price">$159.95</b>
+</div>
+</div>
+
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ItemElement3" style="width: 33%; margin-bottom: 0px; display: none;">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ImageContainer3" class="ns_1ZVR459TF7HXNEVD4C92_25486_fixedHeightImageContainer">
+<a href="/gp/product/B002M3SOM4/ref=s9_top_gw_ir04?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846"><img url="http://ecx.images-amazon.com/images/I/31tBpKZMZLL._SL135_.jpg" alt="Apple iPod shuffle..." width="135" height="135" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Image3" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0TitleContainer3" class="ns_1ZVR459TF7HXNEVD4C92_25486_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Title3" class="ns_1ZVR459TF7HXNEVD4C92_25486_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B002M3SOM4/ref=s9_top_gw_tr04?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846" title="Apple iPod shuffle 2 GB Black (4th Generation) NEWEST MODEL">Apple iPod shuffle 2 GB Black NEWEST...</a>
+<span class="byline">
+
+
+</span>
+</div>
+
+<b class="price">$52.54</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ItemElement4" style="width: 33%; margin-bottom: 0px; display: none;">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ImageContainer4" class="ns_1ZVR459TF7HXNEVD4C92_25486_fixedHeightImageContainer">
+<a href="/gp/product/B001FA1NZK/ref=s9_top_gw_ir05?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846"><img url="http://ecx.images-amazon.com/images/I/41lZPyNnhvL._SL135_.jpg" alt="Apple iPod touch..." width="135" height="130" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Image4" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0TitleContainer4" class="ns_1ZVR459TF7HXNEVD4C92_25486_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Title4" class="ns_1ZVR459TF7HXNEVD4C92_25486_textWrapper">
+<div class="asinTextBlock">
+<div class="title">
+<a href="/gp/product/B001FA1NZK/ref=s9_top_gw_tr05?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846" title="Apple iPod touch 8 GB (2nd Generation) [Previous Model]">Apple iPod touch 8 GB</a>
+<span class="byline">
+
+
+</span>
+</div>
+<b class="price">$204.99</b>
+</div>
+</div>
+</div>
+</div>
+<div class="asinItem" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ItemElement5" style="width: 33%; margin-bottom: 0px; display: none;">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0ImageContainer5" class="ns_1ZVR459TF7HXNEVD4C92_25486_fixedHeightImageContainer">
+<a href="/gp/product/B001FA1NZA/ref=s9_top_gw_ir06?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846"><img url="http://ecx.images-amazon.com/images/I/31gS8%2BEjMqL._SL135_.jpg" alt="Apple iPod shuffle..." width="135" height="132" id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Image5" /></a>
+</div>
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0TitleContainer5" class="ns_1ZVR459TF7HXNEVD4C92_25486_textContainer">
+<div id="ns_1ZVR459TF7HXNEVD4C92_25486_r0Title5" class="ns_1ZVR459TF7HXNEVD4C92_25486_textWrapper">
+<div class="asinTextBlock">
+
+<div class="title">
+<a href="/gp/product/B001FA1NZA/ref=s9_top_gw_tr06?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846" title="Apple iPod shuffle 4 GB Black (3rd Generation) OLD MODEL">Apple iPod shuffle 4 GB Black OLD MODEL</a>
+<span class="byline">
+
+
+</span>
+</div>
+<span class="listprice">$75.00</span> <b class="price">$55.99</b>
+</div>
+</div>
+</div>
+</div>
+</div>
+
+</div>
+<div style="clear: left; width: 100%; height: 1px; margin: 0; padding: 0; overflow: hidden"></div>
+<script type="text/javascript">
+if (typeof S9MultiPackLayout != "undefined") {
+ var ns_1ZVR459TF7HXNEVD4C92_25486_r0_S9MultiPackLayout = new S9MultiPackLayout(
+"ns_1ZVR459TF7HXNEVD4C92_25486_r0", 3, 6, 155, 6);
+}
+</script>
+<p class="seeMore">
+<span class="carat">›</span><a href="/gp/bestsellers/electronics/3221551/ref=s9_top_gw_clnk?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-4&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=490157971&pf_rd_i=507846">See all bestsellers in iPods</a>
+</p>
+<div class="h_rule"></div>
+</div>
+
+ </div>
+ <div class="amabot_left" id="leftcolhidden" style="display:none;">
+ <div class="navLeftBrowseWrapper"><table cellpadding="3" cellspacing="0" width=100%" style="border:1px solid #b4c3d4;"><tr><td colspan=2 class="navFeaturedStoreTitle">Check This Out</td></tr><tr><td><a href="/b/ref=gw_cto_sys?ie=UTF8&node=http%3A%2F%2Fwww.amazonservices.com%2Fcontent%2Fsell-on-amazon.htm%3Fld%3DAZBASOACTO&pf_rd_p=1031971042&pf_rd_s=left-nav-2&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92"><img src="http://g-ecx.images-amazon.com/images/G/01/img10/other/50/dolloar-sign_50._V217688189_.gif" width="50" alt="Selling on Amazon" height="50" border="0" /></a></td><td class="navFeaturedStoreHeading"><a href="/gp/redirect.html/ref=gw_cto_sys?_encoding=UTF8&location=http%3A%2F%2Fwww.amazonservices.com%2Fcontent%2Fsell-on-amazon.htm%3Fld%3DAZBASOACTO&token=1E60AB4AC0ECCA00151B45353E21782E539DC601&pf_rd_p=1031971042&pf_rd_s=left-nav-2&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Selling on Amazon</a><br/><span class="tiny">List items for free and sell to millions.</span></td></tr><tr><td><a href="/b/ref=gw_cto_tax?ie=UTF8&node=%20229545&pf_rd_p=1031971042&pf_rd_s=left-nav-2&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92"><img src="http://g-ecx.images-amazon.com/images/G/01/img09/software/50/tax-central-09_50._V226898426_.gif" width="50" alt="Tax Software" height="50" border="0" /></a></td><td class="navFeaturedStoreHeading"><a href="/Tax-Preparation-Business-Office-Software/b/ref=gw_cto_tax?ie=UTF8&node=229545&pf_rd_p=1031971042&pf_rd_s=left-nav-2&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Tax Software</a><br/><span class="tiny">Order or download now.</span></td></tr><tr><td><a href="/b/ref=gw_cto_trade?ie=UTF8&node=2242532011&pf_rd_p=1031971042&pf_rd_s=left-nav-2&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92"><img src="http://g-ecx.images-amazon.com/images/G/01/img10/electronics/50/trade-in-store_50._V202616179_.gif" width="50" alt="Trade In Your Stuff" height="50" border="0" /></a></td><td class="navFeaturedStoreHeading"><a href="/b/ref=gw_cto_trade?ie=UTF8&node=2242532011&pf_rd_p=1031971042&pf_rd_s=left-nav-2&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Trade In Your Stuff</a><br/><span class="tiny">It's as easy as 1-2-3.</span></td></tr><tr><td><a href="/b/ref=gw_cto_warehousedeals?ie=UTF8&node=1267877011&pf_rd_p=1031971042&pf_rd_s=left-nav-2&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92"><img src="http://g-ecx.images-amazon.com/images/G/01/warehousedeals/warehousedeals_50._V222594722_.png" width="50" alt="Warehouse Deals" height="50" border="0" /></a></td><td class="navFeaturedStoreHeading"><a href="/b/ref=gw_cto_warehousedeals?ie=UTF8&node=1267877011&pf_rd_p=1031971042&pf_rd_s=left-nav-2&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Warehouse Deals</a><br/><span class="tiny">Save on open-box items from Amazon</span></td></tr></table></div>
+
+
+
+
+
+
+<style>
+.navLeftBrowseWrapper {
+ position:relative;
+ left:-5px;
+ width:180px;
+ top:16px;
+}
+.navFeaturedStoreTitle {
+ font:Arial;
+ font-weight:bold;
+ font-size:14pts;
+ color: #e97d13;
+}
+.navFeaturedStoreHeading {
+ font:Arial;
+ font-weight:regular;
+ font-size:12px;
+ }
+
+.navFeaturedStoreHeading a {
+ color:#003399;
+ text-decoration:none;
+}
+
+.navFeaturedStoreHeading a:active,
+.navFeaturedStoreHeading a:hover {
+ color:#FF9933;
+ text-decoration:underline;
+}
+
+.navFeaturedStoreBlurb {
+ font:Arial;
+ font-weight:regular;
+ font-size:tiny;
+ }
+ </style>
+
+<br clear="all" /><br />
+
+
+
+
+
+
+
+<style>
+.navLeftBrowseWrapper {
+ position:relative;
+ left:-5px;
+ width:180px;
+}
+
+.featureLeftNav {
+ font-family: tahoma, sans-serif;
+ line-height: 1em;
+ margin-left: 6px;
+ margin-bottom: 3px;
+}
+
+.featureLeftNav a:link,
+.featureLeftNav a:visited {
+ color: #003399;
+ text-decoration: none;
+}
+
+.featureLeftNav a:hover {
+ color: #cc6600;
+ text-decoration:underline;
+}
+
+.featureLeftNav a:active {
+ color: #ff9933;
+ text-decoration:underline;
+}
+</style>
+
+<div class="navLeftBrowseWrapper"><table border="0" cellpadding="0" cellspacing="0" width=100%" style="border-right:1px solid #4491cd;"><tr><td background="http://g-ecx.images-amazon.com/images/G/01/gno/images/orangeBlue/navLeftBrowseEyeBrow._V264586615_.gif" class="browsetitle"><h3 style="padding-left: 10px; padding-top: 6px; padding-bottom: 5px; font-size:small; color:white; font-family: tahoma, sans-serif; font-weight:bold; line-height:11px; margin: 0px;">Features & Services</h3></td></tr><tr>
+<td style="padding-left:8px; padding-top:3px; border-left:1px solid #4491cd;">
+<div class="navLeftNavTitle" style="margin-bottom:.5em; margin-top:.5em" onclick="jQuery('#lnt0').slideToggle('fast');jQuery(this).find('img').toggle();return false;"><div style="float: left; margin-top: 2px;"><img style="display:block;" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-plus._V220495901_.gif" alt="plus"><img src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-minus._V220495874_.gif" alt="minus" style="display:none"></div> <div style="margin-left:15px;"><h4 display="inline" style="font-size: 12px; color:#E47911; margin: 0px 0px 0px 0pt;">Selling with Amazon</h4></div></div><div id="lnt0" style="display:none"><div class="leftNav"><a href="/gp/feature.html/ref=gw_br_dtp?ie=UTF8&docId=1000234621&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Publish on Kindle</a></div><div class="leftNav"><a href="/gp/redirect.html/ref=gw_br_sell?_encoding=UTF8&location=http%3A%2F%2Fwww.amazonservices.com%2Fcontent%2Fsell-on-amazon.htm%3Fld%3DAZFSSOA&token=1E60AB4AC0ECCA00151B45353E21782E539DC601&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Sell Your Stuff</a></div><div class="leftNav"><a href="/gp/seller/fba/fulfillment-by-amazon.html/ref=gw_br_fba?pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Fulfillment by Amazon</a></div><div class="leftNav"><a href="/gp/redirect.html/ref=gw_br_wsba?_encoding=UTF8&location=http%3A%2F%2Fwebstore.amazon.com%2F%3Fld%3DAZNav&token=745025A57E00B24318BA2181B3B753FC6B2F166D&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">WebStore by Amazon</a></div><div class="leftNav"><a href="/gp/seller-account/mm-product-page.html/ref=gw_br_adv?ie=UTF8&topic=200329780&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Advantage Program</a></div><div class="leftNav"><a href="/gp/redirect.html/ref=gw_br_assoc?location=http://associates.amazon.com/gp/associates/join&token=7528600194FF91C7B31919BB060E9948E888519F&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Associates Program</a></div><div class="leftNav"><a href="https://www.amazon.com:443/gp/redirect.html/ref=gw_br_ap?_encoding=UTF8&location=https%3A%2F%2Fpayments.amazon.com%2Fsdui%2Fsdui%2Fbusiness%3Fsn%3Dbusinessoverview%252Fo%2520%252F&token=32045C225BB802284AADB840CB3223F0668A29BF&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Amazon Payments</a></div></div><div class="navLeftNavTitle" style="margin-bottom:.5em; margin-top:.5em" onclick="jQuery('#lnt1').slideToggle('fast');jQuery(this).find('img').toggle();return false;"><div style="float: left; margin-top: 2px;"><img style="display:block;" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-plus._V220495901_.gif" alt="plus"><img src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-minus._V220495874_.gif" alt="minus" style="display:none"></div> <div style="margin-left:15px;"><h4 display="inline" style="font-size: 12px; color:#E47911; margin: 0px 0px 0px 0pt;">Amazon Exclusives</h4></div></div><div id="lnt1" style="display:none"><div class="leftNav"><a href="/gp/subs/primeclub/signup/main.html/ref=gw_br_prime?pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Amazon Prime</a></div><div class="leftNav"><a href="/gp/bestsellers/ref=gw_br_bst?pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Amazon Bestsellers</a></div><div class="leftNav"><a href="/gp/daily/ref=cm_dly_daily?pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Amazon Daily Blog</a></div><div class="leftNav"><a href="/International-Shipping-Direct/b/ref=gw_br_intl?ie=UTF8&node=230659011&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Amazon Global</a></div><div class="leftNav"><a href="/Financing-Offers/b/ref=gw_br_fyp?ie=UTF8&node=1261402011&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Finance Your Purchases</a></div><div class="leftNav"><a href="/Currency-Converter/b/ref=gw_br_acc?ie=UTF8&node=388305011&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Amazon Currency Converter</a></div></div><div class="navLeftNavTitle" style="margin-bottom:.5em; margin-top:.5em" onclick="jQuery('#lnt2').slideToggle('fast');jQuery(this).find('img').toggle();return false;"><div style="float: left; margin-top: 2px;"><img style="display:block;" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-plus._V220495901_.gif" alt="plus"><img src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-minus._V220495874_.gif" alt="minus" style="display:none"></div> <div style="margin-left:15px;"><h4 display="inline" style="font-size: 12px; color:#E47911; margin: 0px 0px 0px 0pt;">Partner Services</h4></div></div><div id="lnt2" style="display:none"><div class="leftNav"><a href="/Financial-Services/b/ref=gw_br_financial?ie=UTF8&node=16292601&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Financial Services</a></div><div class="leftNav"><a href="/gp/redirect.html/ref=gw_br_photo?location=http://amazon.shutterfly.com/&token=EC30763999BF7877D8867B47B481FBEB2C7A344A&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Photo Services</a></div><div class="leftNav"><a href="/Travel/b/ref=gw_br_travel?ie=UTF8&node=605012&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Travel Services</a></div></div><div class="navLeftNavTitle" style="margin-bottom:.5em; margin-top:.5em" onclick="jQuery('#lnt3').slideToggle('fast');jQuery(this).find('img').toggle();return false;"><div style="float: left; margin-top: 2px;"><img style="display:block;" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-plus._V220495901_.gif" alt="plus"><img src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-minus._V220495874_.gif" alt="minus" style="display:none"></div> <div style="margin-left:15px;"><h4 display="inline" style="font-size: 12px; color:#E47911; margin: 0px 0px 0px 0pt;">For Businesses</h4></div></div><div id="lnt3" style="display:none"><div class="leftNav"><a href="/Corporate-Accounts/b/ref=gw_br_corpacc?ie=UTF8&node=600460&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Corporate Accounts</a></div><div class="leftNav"><a href="/gp/cobrandcard/marketing.html/ref=gw_br_cc?ie=UTF8&place=help&inc=def&pr=ibprox&plattr=CLG00001&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Amazon Credit Line</a></div><div class="leftNav"><a href="/b/ref=gw_br_biztax?ie=UTF8&node=2224240011&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Business & Tax Solutions</a></div><div class="leftNav"><a href="/Corporate-Gift-Certificates/b/ref=gw_br_corpgc1?ie=UTF8&node=165034011&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Gift Cards in Bulk</a></div></div><div class="navLeftNavTitle" style="margin-bottom:.5em; margin-top:.5em" onclick="jQuery('#lnt4').slideToggle('fast');jQuery(this).find('img').toggle();return false;"><div style="float: left; margin-top: 2px;"><img style="display:block;" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-plus._V220495901_.gif" alt="plus"><img src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-minus._V220495874_.gif" alt="minus" style="display:none"></div> <div style="margin-left:15px;"><h4 display="inline" style="font-size: 12px; color:#E47911; margin: 0px 0px 0px 0pt;">For Developers</h4></div></div><div id="lnt4" style="display:none"><div class="leftNav"><a href="/AWS-home-page-Money/b/ref=gw_br_websvcs?ie=UTF8&node=3435361&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Amazon Web Services</a></div></div><div class="navLeftNavTitle" style="margin-bottom:.5em; margin-top:.5em" onclick="jQuery('#lnt5').slideToggle('fast');jQuery(this).find('img').toggle();return false;"><div style="float: left; margin-top: 2px;"><img style="display:block;" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-plus._V220495901_.gif" alt="plus"><img src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/buttons/btn-pf-minus._V220495874_.gif" alt="minus" style="display:none"></div> <div style="margin-left:15px;"><h4 display="inline" style="font-size: 12px; color:#E47911; margin: 0px 0px 0px 0pt;">For Advertisers</h4></div></div><div id="lnt5" style="display:none"><div class="leftNav"><a href="/gp/seller-account/mm-summary-page.html/ref=gw_br_adwus?ie=UTF8&ld=AZAdvertiseMakeM&topic=200260730&pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Advertise With Us</a></div><div class="leftNav"><a href="/exec/obidos/subst/misc/co-op/small-vendor-info.html/ref=gw_br_paidpl?pf_rd_p=100891142&pf_rd_s=left-nav-3&pf_rd_t=101&pf_rd_i=507846&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=1ZVR459TF7HXNEVD4C92">Paid Placements</a></div></div></td></tr><tr style="padding:0;"><td background="http://g-ecx.images-amazon.com/images/G/01/gno/images/orangeBlue/navLeftBrowseBottom._V264586615_.gif" style="line-height:12px;"> </td></tr></table></div>
+
+
+
+
+
+
+
+
+<br clear="all" /><br />
+
+
+
+
+
+ </div>
+ <div class="amabot_right" id="rightcolhidden" style="display:none;">
+
+ <div class="unified_widget rcmBody"><h2>Save with the Amazon.com Visa Card</h2><div class="prodImage"><a href="/gp/cobrandcard/marketing.html/ref=cobrand_ch_gw?ie=UTF8&source=h&place=camp&pr=con321&plattr=CBGW0909&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=right-6-contract&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=502102831&pf_rd_i=507846"><img src="http://g-ecx.images-amazon.com/images/G/01/marketing/visa/321/CS2274_Amazon_Card_Images_79x80_Blue_r01._V268194513_.gif" width="79" align="left" alt="Amazon rewards card" height="80" border="0" /></a></div>
+Get the <a href="/gp/cobrandcard/marketing.html/ref=cobrand_ch_gw?ie=UTF8&source=h&place=camp&pr=con321&plattr=CBGW0909&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=right-6-contract&pf_rd_r=1ZVR459TF7HXNEVD4C92&pf_rd_t=101&pf_rd_p=502102831&pf_rd_i=507846"> Amazon.com Visa Card</a> instantly and you'll <b>automatically</b> get $30 back after your first purchase, plus up to 3% rewards.<div class="h_rule"></div></div>
+
+
+
+<div id="cachebust_929154_adcontent" style="display:block; margin-top: 0px; margin-bottom:16px; padding:0px; width:302px; ">
+ <div style="text-align:center; padding-bottom:4px;"><img src="http://g-ecx.images-amazon.com/images/G/01/gateway/iab/advertisement-sm-head._V46774995_.gif" height="7" width="123" border="0"/></div>
+
+
+
+
+
+
+<script type="text/javascript">
+
+function createIFrame(parentId,name,src,width,height,headerFlag,onloadHandler,ffMagic) {
+ var elem = document.createElement("iframe");
+ elem.id = name;
+ if (ffMagic === true && navigator.userAgent.indexOf("Firefox") > -1) {
+ elem.src = "about:self";
+ } else {
+ elem.src = src;
+ }
+ elem.frameBorder = 0;
+ elem.marginHeight = 0;
+ elem.marginWidth = 0;
+ elem.leftMargin = 0;
+ elem.topMargin = 0;
+
+ if (elem.attachEvent) {
+ elem.attachEvent("onload", onloadHandler );
+ } else if (elem.addEventListener) {
+ elem.addEventListener("load", onloadHandler, false );
+ } else {
+ elem.onload = onloadHandler;
+ }
+
+ elem.setAttribute("name", name);
+ elem.setAttribute("title", "Ad");
+ elem.setAttribute("scrolling", "no");
+ elem.setAttribute("allowtransparency", "true");
+ elem.setAttribute("width", width);
+ elem.setAttribute("height", height);
+ var parent = document.getElementById(parentId);
+ if(headerFlag === true) {
+ var header = parent.getElementsByTagName("div")[0];
+ if( header.nextSibling ) {
+ parent.insertBefore(elem,header.nextSibling);
+ } else {
+ parent.appendChild(elem);
+ }
+ } else {
+ if( parent.hasChildNodes() ) {
+ parent.insertBefore(elem,parent.firstChild);
+ } else {
+ parent.appendChild(elem);
+ }
+ }
+
+ if (navigator.userAgent.indexOf("Firefox") > -1) {
+ elem.contentWindow.location.replace(src);
+ }
+}
+
+
+ function createIFrame_929154() {
+var headerFlag = true;
+createIFrame("cachebust_929154_adcontent", "cachebust_929154", "/aan/2009-09-09/static/amazon/iframeproxy-1.html#zus&cb929154",
+ "302", "260", headerFlag, adOnload_929154,true);
+ }
+
+ var d16g_dclick_929154 = "amzn.us.gw.btf;sz=300x250;bn=507846;u=dbc8895603e04bae8fc05d1f140c0ff3;ord=1ZVR459TF7HXNEVD4C92;s=380;s=98;s=99;s=374;s=227;s=121;s=363;s=122;s=128;s=3;s=411;s=412;s=137;s=142;s=279;s=614;s=493;s=888;s=131;s=12;s=284;s=615;s=496;s=404;s=283;s=10;s=286;s=285;s=287;s=877;s=875;s=497;s=22;s=266;s=27;s=26;s=32;s=271;s=150;s=39;s=40;s=171;s=165;s=318;s=49;s=303;s=57;s=59;s=342;s=71;s=341;s=344;s=343;s=338;s=67;s=337;s=340;s=339;s=350;s=349;s=80;s=77;s=195;s=348;s=324;s=333;s=334;s=335;s=94;s=336;s=92;s=330;s=91;s=331;s=332;s=m1;s=m4;z=1;tile=3";
+ function collapseFrame_929154 () {
+ var elem=document.getElementById('cachebust_929154_adcontent');
+ elem.style.visibility="hidden";
+ elem.style.display="none";
+ elem.style.height=0;
+ elem.style.width=0;
+ elem.style.margin=0;
+ }
+ function adOnload_929154 () {
+
+ var frame_929154 = document.getElementById('cachebust_929154');
+ if( frame_929154.contentWindow ) {
+ if( frame_929154.contentWindow.document ) {
+ var iwin = frame_929154.contentWindow;
+ if( typeof iwin.d16gCollapse !== "undefined" ) {
+ collapseFrame_929154();
+ } else {
+ var ib = iwin.document.body;
+ if( ib && ib.innerHTML == "" ) {
+ var oDoc = (frame_929154.contentWindow || frame_929154.contentDocument);
+ if (oDoc.document)
+ oDoc = oDoc.document;
+ oDoc.write('<a href="http://www.amazon.com/grocery" target="_blank"><img src="http://g-ecx.images-amazon.com/images/G/01/advertising/banners/gw/300x250_grocery._V44581809_.gif" height="250" alt="Grocery" width="300" border="0"/></a>');
+ }
+ }
+ }
+ }
+ }
+</script>
+
+
+
+<script type="text/javascript">
+if(typeof amznJQ != 'undefined') {
+ amznJQ.onReady('jQuery', function() {
+ jQuery(window).load(function() {
+ createIFrame_929154();
+ });
+ });
+}
+else {
+ createIFrame_929154();
+}
+</script> <noscript><iframe id="cachebust_929154" name="cachebust_929154" src="http://ad.doubleclick.net/adi/amzn.us.gw.btf;sz=300x250;bn=507846;u=dbc8895603e04bae8fc05d1f140c0ff3;ord=1ZVR459TF7HXNEVD4C92;s=380;s=98;s=99;s=374;s=227;s=121;s=363;s=122;s=128;s=3;s=411;s=412;s=137;s=142;s=279;s=614;s=493;s=888;s=131;s=12;s=284;s=615;s=496;s=404;s=283;s=10;s=286;s=285;s=287;s=877;s=875;s=497;s=22;s=266;s=27;s=26;s=32;s=271;s=150;s=39;s=40;s=171;s=165;s=318;s=49;s=303;s=57;s=59;s=342;s=71;s=341;s=344;s=343;s=338;s=67;s=337;s=340;s=339;s=350;s=349;s=80;s=77;s=195;s=348;s=324;s=333;s=334;s=335;s=94;s=336;s=92;s=330;s=91;s=331;s=332;s=m1;s=m4;z=1;tile=3?" title="Ad" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" allowtransparency="true" width="302" height="260" onload="adOnload_929154()" > <a href="http://www.amazon.com/grocery" target="_blank"><img src="http://g-ecx.images-amazon.com/images/G/01/advertising/banners/gw/300x250_grocery._V44581809_.gif" height="250" alt="Grocery" width="300" border="0"/></a> </iframe></noscript>
+
+
+
+
+
+<script type="text/javascript">
+if(typeof amznJQ !== "undefined"){
+ if (typeof window.d16g === "undefined") {
+ window.d16g = {};
+ d16g.adDebug = false;
+
+d16g.loadJs = function(jsUrl) {
+ var scriptElem = document.createElement('script');
+ scriptElem.src = jsUrl;
+ document.getElementsByTagName('head')[0].appendChild(scriptElem);
+};
+ amznJQ.onReady("jQuery", function() {
+ jQuery(window).load(function() {
+ d16g.loadJs('http://z-ecx.images-amazon.com/images/G/01/da/common/d16g-0.6.11.nl.yui._V216197592_.js');
+ });
+ });
+ }
+}
+
+</script>
+
+
+
+
+ <script type="text/javascript" >
+ if(typeof amznJQ !== "undefined"){
+ amznJQ.onReady('popover', function (){
+ jQuery("#showFeedbackForm929154").amazonPopoverTrigger({
+width:"500",
+destination: "/gp/advertising/remoterender?impressionId=dbc8895603e04bae8fc05d1f140c0ff3&randomId=929154&questionGroupId=2&slotName=right-7&pageType=GATEWAY&pageSubType=GATEWAY-THREE-COLUMN&adContentId=244&templateName=ad-feedback-remote-content-5col",
+title:"Ad feedback: Tell us what you think",
+closeText: "Close",
+locationAlign: "middle",
+location: ['left','centered','auto'],
+draggable:true,
+locationMargin:20,
+onShow: function(popover){
+ var args = {impressionId:"dbc8895603e04bae8fc05d1f140c0ff3",
+ randomId:"929154",
+ questionGroupId:"2",
+ slotName:"right-7",
+ pageType:"GATEWAY",
+ pageSubType:"GATEWAY-THREE-COLUMN",
+ adContentId:"244"
+ };
+ d16g.adFeedback.logOpen(args);
+ jQuery(".ap_closetext").html("Close");
+}
+ });
+ jQuery("#showFeedbackForm929154").show();
+ });
+ }
+ </script>
+ <p id="showFeedbackForm929154" style="color: #000088;font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif;cursor: pointer;text-align: center;vertical-align: top;width: 100%;margin:0;padding-top:3px;display:none;">
+ <span style="border-bottom:1px dashed #000088">Ad feedback</span>
+
+ <br /><br />
+ </p>
+</div>
+ </div>
+ </div> <!-- content -->
+ </div> <!-- class="page-wrap" -->
+ <div id="page-footer">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<style type="text/css">
+.rhf-box-corner-sprite {
+ background-image: url('http://g-ecx.images-amazon.com/images/G/01/x-locale/personalization/yourstore/bluebox/bluebox-corners._V262730875_.gif');
+}
+.rhf-box-sides-sprite {
+ background-image: url('http://g-ecx.images-amazon.com/images/G/01/x-locale/personalization/yourstore/bluebox/bluebox-sides._V262730875_.gif');
+}
+.rhf-box-tl {
+ background-position: 0px 0px;
+ background-repeat:no-repeat;
+}
+.rhf-box-tc {
+ background-position: 0px -41px;
+ background-repeat:repeat-x;
+}
+.rhf-box-tr {
+ background-position: 0px -81px;
+ background-repeat:no-repeat;
+}
+.rhf-box-l {
+ background-position: -7px 0px;
+ background-repeat:repeat-y;
+}
+.rhf-box-r {
+ background-position: 9px 0px;
+ background-repeat:repeat-y;
+}
+.rhf-box-br {
+ background-position: 0px -123px;
+ background-repeat:no-repeat;
+}
+.rhf-box-bc {
+ background-position: 0px -139px;
+ background-repeat:repeat-x;
+}
+.rhf-box-bl {
+ background-position: 0px -158px;
+ background-repeat:no-repeat;
+}
+.rhfHistoryWrapper {
+ padding: 0 10px;
+}
+
+
+.rhf_loading_inner {
+ background: no-repeat center url('http://g-ecx.images-amazon.com/images/G/01/ui/loadIndicators/loadIndicator-large._V248199609_.gif');
+ width: 100px;
+ height: 124px;
+}
+.rhf_loading_outer {
+ height: 248px;
+ overflow: hidden;
+ position: relative;
+ width: 100%;
+}
+.rhf_loading_outer[class] {
+ display: table;
+ position: static;
+}
+.rhf_loading_middle {
+ position: absolute;
+ top: 50%;
+ width: 100%;
+ text-align: center;
+}
+.rhf_loading_middle[class] {
+ display: table-cell;
+ vertical-align: middle;
+ position: static;
+}
+.rhf_loading_inner {
+ position: relative;
+ top: -50%;
+ text-align:
+ left;
+}
+.rhf_loading_inner {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+
+
+
+
+.rhfWrapper .shoveler .shoveler-heading {
+ padding-right:13.25em;
+}
+.rhfWrapper .shoveler .shoveler-pagination {
+ padding: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width:13.25em;
+ text-align:right;
+}
+.rhfWrapper .shoveler .start-over {
+ font-size: 80%;
+}
+.rhfWrapper .shoveler .start-over a {
+ text-decoration:none;
+}
+.rhfWrapper .shoveler .start-over a:visited {
+ color: #004B91;
+}
+
+.rhfWrapper .shoveler {
+ position: relative;
+ width: 100%;
+}
+
+.rhfWrapper .shoveler a.why-link {
+ text-decoration:none;
+}
+
+.rhfWrapper .shoveler a.why-link:hover {
+ text-decoration:underline;
+}
+
+.rhfWrapper .shoveler a.why-link:visited {
+ text-decoration:none;
+}
+
+.rhfWrapper .shoveler .shoveler-content {
+ padding-top: 1.5em;
+ margin: 0 35px 0 45px;
+ clear:both;
+}
+.rhfWrapper .shoveler ul {
+ height: 21em;
+ padding: 0;
+ margin: 0;
+ overflow:hidden;
+ font-size: 86%;
+}
+* html .rhfWrapper .shoveler ul li {
+ display: inline;
+}
+.rhfWrapper .shoveler ul li {
+ float: left;
+ margin: 0;
+ padding: 0;
+ width: 15em;
+ height: 21em;
+ overflow: hidden;
+}
+
+.rhfWrapper .shoveler li p {
+ text-align: left;
+}
+
+.rhfWrapper .shoveler li p.reason-text {
+ margin-top: .3em;
+}
+
+.rhfWrapper .shoveler ul li.shoveler-progress {
+ background: no-repeat center 45px url('http://g-ecx.images-amazon.com/images/G/01/x-locale/personalization/shoveler/loading-indicator._V31970667_.gif');
+}
+
+.rhfWrapper .shoveler .product-image {
+ margin-bottom:.45em;
+}
+.rhfWrapper .shoveler .rating-price {
+ margin-top:.25em;
+}
+.rhfWrapper .shoveler .rating-price .price {
+ margin-left:.25em;
+ white-space:nowrap;
+}
+.rhfWrapper .shoveler .rating-stars {
+ font-size: 80%;
+}
+.rhfWrapper .shoveler .rating-stars a {
+ text-decoration:none;
+}
+.rhfWrapper .shoveler .rating-stars img {
+ padding-bottom:1px;
+}
+.rhfWrapper .shoveler .rhfUpsellColumnTitle {
+ margin-left:10px;
+ padding-bottom:0;
+ padding-top:0;
+ text-indent:-10px;
+}
+.rhfWrapper .popoverTrigger {
+ margin-left:.35em;
+ cursor:default;
+}
+
+* html .rhf {
+ height:1%;
+}
+.rhfWrapper .shoveler-button-wrapper {
+ position:relative;
+ width:100%;
+}
+.rhfWrapper .shoveler div.back-button,
+.rhfWrapper .shoveler div.next-button,
+.rhfWrapper .shoveler div.disabled-button {
+ position: absolute;
+ height: 50px;
+ width: 25px;
+ top: 105px;
+}
+.rhfWrapper .shoveler div.next-button {
+ right: 0;
+ background: none;
+}
+.rhfWrapper .shoveler .back-button,
+.rhfWrapper .shoveler div.disabled-button {
+ left:0px;
+}
+.rhfWrapper .shoveler .next-button,
+.rhfWrapper .shoveler div.disabled-button {
+ right:0px;
+}
+.rhfWrapper .shoveler .back-button a,
+.rhfWrapper .shoveler .next-button a {
+ position: relative;
+ font-size:70%;
+ cursor: pointer;
+ outline:none;
+}
+.rhfWrapper .shoveler .back-button a .bg-text,
+.rhfWrapper .shoveler .back-button a .bg-image,
+.rhfWrapper .shoveler .next-button a .bg-text,
+.rhfWrapper .shoveler .next-button a .bg-image {
+ display: block;
+ height: 50px;
+ width: 25px;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+}
+.rhfWrapper .shoveler .back-button a .bg-image,
+.rhfWrapper .shoveler .next-button a .bg-image,
+.rhfWrapper .shoveler div.disabled-button {
+ background-image: url('http://g-ecx.images-amazon.com/images/G/01/x-locale/personalization/shoveler/left-right-arrow-semi-rd._V236573507_.gif');
+}
+.rhfWrapper .shoveler .back-button a .bg-image {
+ background-position: 0 0;
+}
+.rhfWrapper .shoveler .back-button a.depressed .bg-image {
+ background-position: 0 50px;
+}
+.rhfWrapper .shoveler .next-button a .bg-image {
+ background-position: 25px 0;
+}
+.rhfWrapper .shoveler .next-button a.depressed .bg-image {
+ background-position: 25px 50px;
+}
+.rhfWrapper .shoveler div.disabled-button {
+ opacity: 0.2;
+ -moz-opacity: 0.2;
+ filter: alpha(opacity=20);
+ cursor: default;
+}
+.rhfWrapper .shoveler .disclaim {
+ margin-bottom: 15px;
+}
+
+
+
+</style>
+ <br />
+ <div id="rhf" style="clear:both">
+<table id="rhf_table" align="center" width="100%" cellpadding="0" cellspacing="0">
+ <tr>
+ <td class="rhf-box-corner-sprite rhf-box-tl" width="10"></td>
+ <td class="rhf-box-corner-sprite rhf-box-tc">
+ <div style="text-align:left; padding:10px 10px 0 10px;"><h2 class="h1" style="margin: 0; display: inline"><span id="rhfMainHeading">Your Recent History</span></h2> <span class="tiny" id="rhfLearnMore">(<a href="/gp/yourstore/cc/ref=pd_rhf_lm">What's this?</a>)</span></div>
+
+ </td>
+ <td class="rhf-box-corner-sprite rhf-box-tr" width="10"></td>
+ </tr>
+ <tr>
+ <td class="rhf-box-sides-sprite rhf-box-l" width="10"> </td>
+ <td>
+ <div id="rhf_container" style="display:none;">
+
+
+
+ <div class="rhf_loading_outer"><div class="rhf_loading_middle"><div class="rhf_loading_inner"></div></div></div>
+<script type="text/JavaScript">
+amznJQ.onReady('JQuery', function() { (function($) {
+ window.RECS_rhfShvlLoading = false;
+ window.RECS_rhfShvlLoaded = false;
+ $("#rhf_container").show();
+ var rhfShvlEventHandler = function () {
+ if ( ! window.RECS_rhfShvlLoaded
+ && ! window.RECS_rhfShvlLoading
+ && $('#rhf_container').size() > 0 ) {
+ var yPosition = $(window).scrollTop() + $(window).height();
+ var rhfElementFound = $('#rhfMainHeading').size();
+ var rhfPosition = $('#rhfMainHeading').offset().top;
+ if (rhfElementFound && ( rhfPosition - yPosition < 400 )) {
+ window.RECS_rhfShvlLoading = true;
+ $.ajax({
+ url: '/gp/history/external/full-rhf-rec-handler.html',
+ type: "POST",
+ timeout: 30000,
+ data: { shovelerName : 'rhf',
+ key : 'rhf',
+ numToPreload : '5',
+ isGateway : 1,
+ refTag : 'pd_rhf_shvl',
+ parentSession : '179-9772868-5667253',
+ excludeASIN : '',
+ renderPopover : 0,
+ forceSprites : 0 },
+ success: function(responseText, textStatus, XMLHttpRequest) {
+ $("#rhf_container").html(responseText);
+ $("#rhfShvl").trigger("render-shoveler");
+ window.RECS_rhfShvlLoaded = true;
+ },
+ error: function(responseText, textStatus, XMLHttpRequest) {
+ $("#rhf_container").hide();
+ $("#rhf_error").show();
+ return;
+ }
+ });
+ }
+ }
+ }
+ $(document).ready(rhfShvlEventHandler);
+ $(window).scroll(rhfShvlEventHandler);
+})(jQuery); });
+</script>
+
+</div><noscript>
+
+
+
+
+
+<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin-top: 10px">
+ <tr valign="top">
+ <td valign="top">
+ <div class="rhfHistoryWrapper">
+ <p>After viewing product detail pages or search results, look here to find an easy way to navigate back to pages you are interested in.</p>
+ </div>
+ </td>
+ </tr>
+ <tr><td>
+ <div style="padding:10px 10px 0 10px; text-align:left;">
+ <b><span style="color: rgb(204, 153, 0); font-weight: bold; font-size: 13px;"> › </span>
+ <a href="/gp/yourstore/pym/ref=pd_pyml_rhf">View and edit your browsing history</a>
+ </b></div>
+ </td></tr>
+</table>
+</noscript><div id="rhf_error" style="display:none;">
+
+
+
+
+
+<table width="100%" border="0" cellspacing="0" cellpadding="0" style="margin-top: 10px">
+ <tr valign="top">
+ <td valign="top">
+
+ <div class="rhfHistoryWrapper">
+ <p>After viewing product detail pages or search results, look here to find an easy way to navigate back to pages you are interested in.</p>
+ </div>
+ </td>
+ </tr>
+ <tr><td>
+ <div style="padding:10px 10px 0 10px; text-align:left;">
+ <b><span style="color: rgb(204, 153, 0); font-weight: bold; font-size: 13px;"> › </span>
+
+ <a href="/gp/yourstore/pym/ref=pd_pyml_rhf">View and edit your browsing history</a>
+ </b></div>
+ </td></tr>
+</table>
+</div>
+ </td>
+ <td class="rhf-box-sides-sprite rhf-box-r" width="10"></td>
+ </tr>
+ <tr>
+
+ <td class="rhf-box-corner-sprite rhf-box-bl" width="10"> </td>
+ <td class="rhf-box-corner-sprite rhf-box-bc"> </td>
+ <td class="rhf-box-corner-sprite rhf-box-br" width="10"> </td>
+ </tr>
+</table>
+ </div>
+ <br />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div id="navFooter">
+ <table cellspacing="0">
+ <tr>
+ <td>
+ <table class="navFooterThreeColumn" cellspacing="0">
+ <tr>
+ <td class="navFooterColSpacerOuter"></td>
+ <td class="navFooterLinkCol">
+
+<div class="navFooterColHead">Get to Know Us</div>
+<ul>
+<li><a href="/Careers-University-Recruiting/b/ref=gw_m_b_careers?ie=UTF8&node=203348011">Careers</a></li>
+<li><a href="/gp/redirect.html/ref=gw_m_b_ir?_encoding=UTF8&location=http%3A%2F%2Fphx.corporate-ir.net%2Fphoenix.zhtml%3Fp%3Dirol-irhome%26c%3D97664&token=F9CAD8A11D4336B5E0B3C3B089FA066D0A467C1C">Investor Relations</a></li>
+<li><a href="/gp/redirect.html/ref=gw_m_b_pr?_encoding=UTF8&location=http%3A%2F%2Fphx.corporate-ir.net%2Fphoenix.zhtml%3Fp%3Dirol-mediaHome%26c%3D176060&token=F9CAD8A11D4336B5E0B3C3B089FA066D0A467C1C">Press Releases</a></li>
+<li><a href="/b/ref=gw_m_b_corpres?ie=UTF8&node=13786321">Amazon and Our Planet</a></li>
+</ul>
+</td>
+<td class="navFooterColSpacerInner"></td>
+<td class="navFooterLinkCol">
+<div class="navFooterColHead">Make Money with Us</div>
+
+<ul>
+<li><a href="/gp/redirect.html?_encoding=UTF8&location=http%3A%2F%2Fwww.amazonservices.com%2Fcontent%2Fsell-on-amazon.htm%3Fld%3DAZFSSOA&token=1E60AB4AC0ECCA00151B45353E21782E539DC601">Sell on Amazon</a></li>
+<li><a href="https://affiliate-program.amazon.com">Join Associates</a></li>
+<li><a href="/gp/seller-account/mm-summary-page.html?ie=UTF8&ld=AZFooterSelfPublish&topic=200260520">Self-publish with Us</a></li>
+<li><span class="navFooterRightArrowBullet">›</span> <a href="/gp/seller-account/mm-landing.html/ref=footer_seeall?ie=UTF8&ld=AZSOAviewallMakeM">See all</a></li>
+</ul>
+</td>
+<td class="navFooterColSpacerInner"></td>
+<td class="navFooterLinkCol">
+<div class="navFooterColHead">Let Us Help You</div>
+<ul>
+
+<li><a href="/gp/help/customer/display.html/ref=footer_shiprates?ie=UTF8&nodeId=468520">Shipping Rates & Policies</a></li>
+<li><a href="/gp/subs/primeclub/signup/main.html">Amazon Prime</a></li>
+<li><a href="/gp/help/customer/display.html/ref=hy_f_4?ie=UTF8&nodeId=901888">Returns</a></li>
+<li><a href="/gp/help/customer/display.html/ref=gw_m_b_he?ie=UTF8&nodeId=508510">Help</a></li>
+</ul>
+</td>
+
+ <td class="navFooterColSpacerOuter"></td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <div class="navFooterLine navFooterLogoLine">
+ <a href="/ref=footer_logo"><img src="http://g-ecx.images-amazon.com/images/G/01/gno/images/general/navAmazonLogoFooter._V264586593_.gif" width="126" alt="amazon.com" height="24" border="0" /></a>
+ </div>
+ <div class="navFooterLine navFooterLinkLine">
+ <a href="http://www.amazon.ca">Canada</a> |
+
+<a href="http://www.amazon.cn">China</a> |
+<a href="http://www.amazon.fr">France</a> |
+<a href="http://www.amazon.de">Germany</a> |
+<a href="http://www.amazon.co.jp">Japan</a> |
+<a href="http://www.amazon.co.uk">United Kingdom</a>
+
+ <span>
+ And don't forget:
+
+<a href="http://wireless.amazon.com">AmazonWireless</a> |
+<a href="http://askville.amazon.com">Askville</a> |
+<a href="http://www.audible.com">Audible</a> |
+<a href="http://www.dpreview.com">DPReview</a> |
+<a href="http://www.endless.com">Endless</a> |
+<a href="http://www.imdb.com">IMDb</a> |
+
+<a href="http://www.shopbop.com/welcome">Shopbop</a> |
+<a href="http://www.smallparts.com">Small Parts</a> |
+<a href="http://www.soundunwound.com">SoundUnwound</a> |
+<a href="http://www.warehousedeals.com">Warehouse Deals by Amazon</a> |
+<a href="http://www.zappos.com">Zappos</a>
+
+ </span>
+
+ </div>
+ <div class="navFooterLine navFooterLinkLine">
+ <a href="/gp/help/customer/display.html/ref=footer_cou?ie=UTF8&nodeId=508088">Conditions of Use</a> |
+<a href="/gp/help/customer/display.html/ref=footer_privacy?ie=UTF8&nodeId=468496">Privacy Notice</a>
+<span>
+ © 1996-2010, Amazon.com, Inc. or its affiliates
+</span>
+
+ </div>
+ </td>
+
+ </tr>
+
+
+ </table>
+</div>
+<!-- whfh-2fuPVXd+6L9EMUgV04JJ99jvbRjX7xi3 rid-1ZVR459TF7HXNEVD4C92 -->
+
+
+
+
+
+
+
+<script type="text/javascript">
+amznJQ.available("jQuery", function()
+{
+ jQuery(window).load(function()
+ {
+ var cssAssets = [
+ "http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/search-css/search-css-search-41010._V216682818_.css"
+ ];
+
+ var hframe = jQuery('<iframe id="searchPrecache" style="width:0px; height:0px; display:none">');
+ jQuery('body').append(hframe);
+
+ var hFrmElem = document.getElementById("searchPrecache");
+ var hFrmDoc = (hFrmElem.contentWindow || hFrmElem.contentDocument);
+ if (hFrmDoc.document)
+ {
+ hFrmDoc = hFrmDoc.document;
+ }
+
+ var hHead = hFrmDoc.getElementsByTagName("head")[0];
+ if (!hHead)
+ {
+ hFrmDoc.open();
+ hFrmDoc.writeln("<html><head></head></html>");
+ hFrmDoc.close();
+ hHead = hFrmDoc.getElementsByTagName("head")[0];
+ }
+ for (var i=0;i<cssAssets.length;i++) {
+ var lnk = hFrmDoc.createElement("link");
+ lnk.href = cssAssets[i];
+ lnk.rel = "stylesheet";
+ lnk.type = "text/css";
+ hHead.appendChild(lnk);
+ }
+ });
+});
+</script>
+
+
+
+
+
+
+
+
+
+
+<script type="text/javascript">
+amznJQ.onReady("jQuery", function() {
+ jQuery(window).load(function() {
+ var assets = new Array();
+ assets.push("http://g-ecx.images-amazon.com/images/G/01/common/sprites/sprite-communities._V201759850_.png");
+ for (var i = 0; i < assets.length; i++) {
+ var loader = new Image();
+ loader.src = assets[i];
+ }
+ var hframe = jQuery('<iframe id="dpPrecache" style="width:0px; height:0px; display:none">');
+ jQuery('body').append(hframe);
+ var hFrmElem = document.getElementById("dpPrecache");
+ var hFrmDoc = (hFrmElem.contentWindow || hFrmElem.contentDocument);
+ if (hFrmDoc.document) {
+ hFrmDoc = hFrmDoc.document;
+ }
+ var hHead = hFrmDoc.getElementsByTagName("head")[0];
+ if (!hHead) {
+ hFrmDoc.open();
+ hFrmDoc.writeln("<html><head></head></html>");
+ hFrmDoc.close();
+ hHead = hFrmDoc.getElementsByTagName("head")[0];
+ }
+ var c = jQuery.ajaxSettings.cache;
+ jQuery.ajaxSettings.cache = true;
+ jQuery(hHead).append('<link rel="stylesheet" type="text/css" href="http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/fruitCSS/US/combined-1882760786._V201753931_.css" /><link rel="stylesheet" type="text/css" href="http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/dpCSS/US/combined-2692758820._V203881574_.css" /><script type="text/javascript" src="http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/tmmJS/tmmJS-combined-core-10662._V204953505_.js" /> <script type="text/javascript" src="http://z-ecx.images-amazon.com/images/G/01/twister/beta/twister-dpf.84845f0ca920a3531a7a10c0ce0ae84a._V1_.js"/>');
+ jQuery.ajaxSettings.cache = c;
+ });
+});
+</script>
+
+
+ </div>
+ </body>
+
+</html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- MEOW -->