Amazon.com's markup is terrible (Meow)

Ye' old general discussion board. Basically, for everything that isn't covered elsewhere. Come here to shoot the breeze, shoot your mouth off, or whatever suits your fancy.
This forum is not for asking programming related questions.

Moderator: General Moderators

Post Reply
josh
DevNet Master
Posts: 4872
Joined: Wed Feb 11, 2004 3:23 pm
Location: Palm beach, Florida

Amazon.com's markup is terrible (Meow)

Post by josh »

Seriously take a look at it. Tons of white space, tons of inline CSS & scripts.. Javascript not structured into sub-routines, etc..
some of it is excusable. I bet the reason for the obscure class names is code generation, but that aside its still pretty crappy. I like the last line. "Meow" to you too Amazon.com...

Code: Select all

 
 
 
 
 
 
 
    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<html>
  <head>
    
 
 
 
 
 
 
 
 
 
<link rel="dns-prefetch" href="http://g-ecx.images-amazon.com">
 
 
 
 
<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 0 0 -10px; }
div.pageBanner p { font-size:90%; color:#888888; margin:0 0 0 -10px; }
 
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;
}
-->
</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-26720._V227554849_.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 ... 44977_.png); }
.ap_popover_unsprited .ap_body   .ap_right  { background-image: url(http://g-ecx.images-amazon.com/images/G ... 44979_.png); }
.ap_popover_unsprited .ap_header .ap_left   { background-image: url(http://g-ecx.images-amazon.com/images/G ... 10087_.png); }
.ap_popover_unsprited .ap_header .ap_right  { background-image: url(http://g-ecx.images-amazon.com/images/G ... 10087_.png); }
.ap_popover_unsprited .ap_header .ap_middle { background-image: url(http://g-ecx.images-amazon.com/images/G ... 10086_.png); }
.ap_popover_unsprited .ap_footer .ap_left   { background-image: url(http://g-ecx.images-amazon.com/images/G ... 10084_.png); }
.ap_popover_unsprited .ap_footer .ap_right  { background-image: url(http://g-ecx.images-amazon.com/images/G ... 10087_.png); }
.ap_popover_unsprited .ap_footer .ap_middle { background-image: url(http://g-ecx.images-amazon.com/images/G ... 10084_.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 ... 26283_.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 ... 26280_.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 ... 26286_.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: http://www.amazon.com/access</a></div>
 
 
<a name="top"></a>
<!-- HCVSPKMMC -->
 
<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 ... 83957_.png);
}
 
.navSpritePopoverH {
  background-image: url(http://g-ecx.images-amazon.com/images/G ... 91373_.gif);
}
 
.navSpritePopoverV {
  background-image: url(http://g-ecx.images-amazon.com/images/G ... 91375_.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 ... 91375_.gif) -14px 0px no-repeat;
}
 
.nav_popover .header .r {
  background: url(http://g-ecx.images-amazon.com/images/G ... 91373_.gif) 0px -14px no-repeat;
}
 
.nav_popover .header .c {
  background: url(http://g-ecx.images-amazon.com/images/G ... 91373_.gif) 0px 0px repeat-x;
}
 
.nav_popover .footer .l {
  background: url(http://g-ecx.images-amazon.com/images/G ... 91373_.gif) 0px -21px no-repeat;
}
 
.nav_popover .footer .r {
  background: url(http://g-ecx.images-amazon.com/images/G ... 91375_.gif) -21px 0px no-repeat;
}
 
.nav_popover .footer .c {
  background: url(http://g-ecx.images-amazon.com/images/G ... 91373_.gif) 0px -7px repeat-x;
}
 
.nav_popover .body .l {
  background: url(http://g-ecx.images-amazon.com/images/G ... 91375_.gif) 0px 0px repeat-y;
}
 
.nav_popover .body .r {
  background: url(http://g-ecx.images-amazon.com/images/G ... 91375_.gif) -7px 0px repeat-y;
}
--></style>
<img src="http://g-ecx.images-amazon.com/images/G/01/gno/images/orangeBlue/navPackedSprites_v12._V222883957_.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, josh m ribakoff.</span>
 
  <span class="navMessage" style="white-space: nowrap;">We have <a href="/gp/yourstore/ref=pd_irl_gw">recommendations</a> for you.</span>
  <span class="navMessage" style="white-space: nowrap;">(<a href="/gp/flex/sign-out.html/ref=pd_irl_gw_r?ie=UTF8&path=%2Fgp%2Fyourstore&signIn=1&useRedirectOnSuccess=1&action=sign-out">Not josh</a>?)</span>
</div></td>
        <td align="left">&nbsp;</td>
        <td id="navSwmSlot" align="right" valign="center" height="26">
<table id="navSwmSkedPop" border='0' cellspacing='0' cellpadding='0' height="100%" width="100%">
 
  <tr>
    <td align="right" valign="center">
      <div id="navSwmMainHdgDiv">
          <a id="navSwmMainHeading" href="/Outlet/b/ref=nav_swm_yed?ie=UTF8&node=517808&pf_rd_p=506573191&pf_rd_s=nav-sitewide-msg&pf_rd_t=4201&pf_rd_i=navbar-4201&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=0B74NS32Z1XM0R90VAZ3">
            Get Huge Savings on Year-End Deals
          </a>
      </div>
    </td>
    <td align="left" valign="center" width="25" rowspan="1"><div id="navSwmFlyoutTrigger" style="display:none; height:13px; width:13px; margin:2px 3px 3px 3px;">
 
      <a name="navSwmSkedPop|he|navSwmSkedPop_content"><img src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/transparent-pixel._V42752373_.gif" width="1" alt="" class="default navSprite" id="navSwmFlyoutImage" height="1" border="0" /></a>
      </div>
    </td>
  </tr>
</table>        </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'> josh's Amazon.com</a>
        <span class="navCrossshopBar">&nbsp;|&nbsp;</span>
        <a href='/gp/goldbox/ref=cs_top_nav_gb27' class='navCrossshopLink'><span class="navSprite navGBIcon"><span style="visibility:hidden">&nbsp; &nbsp; &nbsp; &nbsp; </span></span>Today's Deals</a>
 
        <span class="navCrossshopBar">&nbsp;|&nbsp;</span>
        <a href='/gp/gift-central/ref=cm_gift_button_gc_lp' class='navCrossshopLink'>Gifts & Wish Lists</a>
        <span class="navCrossshopBar">&nbsp;|&nbsp;</span>
        <a href='/gp/product/B00067L6TQ/ref=topnav_giftcert' class='navCrossshopLink'>Gift Cards</a>
      </td>
      <td width="100%">&nbsp;</td>
 
      <td>
        <a href='/gp/css/homepage.html/ref=topnav_ya' class='navCrossshopYALink'>Your Account</a>
        <span class="navCrossshopBar">&nbsp;|&nbsp;</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", "gourmet", "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_ss" name="site-search">
    
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
        <td class="navSearchStart"></td>
        <td id="navSearchBar" class="navSearchBar navSpriteH">Search</td>
                <td width="100" class="navSearchBar navSpriteH" 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=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 navSpriteH">&nbsp;</td>
          <td class="navSearchBar navSpriteH" 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 navSpriteH">&nbsp;</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');});
        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 class="navSprite icon"></div>
    <a class="destination" href="/gp/cart/view.html/ref=gno_cart" rel="nofollow"><span class="text">Cart</span></a>
  </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">&raquo;</span> <a href="/gp/registry/wishlist/ref=gno_listpop_wi">Wish List</a></li>
 
<li id="qlYourListsLink" class="listsPopoverContentsTopPaddingLi"><span class="arrow">&raquo;</span> <a href="#quicklist">Quicklist</a></li>
<li class="listsPopoverContentsTopPaddingLi"><span class="arrow">&raquo;</span> <a href="/gp/rsl/shoppinglist/yourshoppinglist/ref=gno_listpop_sl">Shopping List</a></li>
<li class="listsPopoverContentsTopPaddingLi"><span class="arrow">&raquo;</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">&raquo;</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">&raquo;</span> <a href="/gp/registry/wedding/ref=gno_listpop_wr">Wedding Registry</a></li>
<li class="listsPopoverContentsTopPaddingLi"><span class="arrow">&raquo;</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">&raquo;</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';
    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_v12._V222883957_.png"/>
 
<!--CMMKPSVCH -->
    <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=0B74NS32Z1XM0R90VAZ3">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=0B74NS32Z1XM0R90VAZ3">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=0B74NS32Z1XM0R90VAZ3">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=0B74NS32Z1XM0R90VAZ3">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=0B74NS32Z1XM0R90VAZ3">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=0B74NS32Z1XM0R90VAZ3">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=0B74NS32Z1XM0R90VAZ3">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=0B74NS32Z1XM0R90VAZ3">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=0B74NS32Z1XM0R90VAZ3">MP3 Downloads</a>
</li>
 
.. snipped...

Code: Select all

<span>
&nbsp;© 1996-2009, Amazon.com, Inc. or its affiliates
</span>
 
        </div>
      </td>
 
    </tr>
  </table>
</div>
<!-- whfh-Fy/V+TkIEbYSMOXLJNIsDyQT4FcDPLFg rid-0B74NS32Z1XM0R90VAZ3 -->
 
 
 
 
 
 
 
<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-39732._V226523383_.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() {
    var assets = new Array();
    assets.push("http://g-ecx.images-amazon.com/images/G/01/common/sprites/sprite-communities._V250604559_.png");
    assets.push("http://g-ecx.images-amazon.com/images/G/01/common/sprites/sprite-site-wide._V250604082_.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];
    }
    jQuery(hHead).append('<link rel="stylesheet" type="text/css" href="http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/fruitCSS/US/combined-2684544551._V234345092_.css" /><link rel="stylesheet" type="text/css" href="http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/dpCSS/US/combined-1047400967._V234080545_.css" /><script type="text/javascript" src="http://z-ecx.images-amazon.com/images/G/01/nav2/gamma/tmmJS/tmmJS-combined-core-63679._V230286328_.js" />');
});
</script>
 
 
    </div>
  </body>
 
</html>
 
 
 
 
 
 
 
 
 
  
  
  
 
  
  
  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<!-- MEOW -->
 
I would still shop there, but probably not accept any job offers after seeing this. Also related:

http://thedailywtf.com/Articles/HTTP-41 ... -Long.aspx
Featured comment #1 (must read post for context)
User avatar
daedalus__
DevNet Resident
Posts: 1925
Joined: Thu Feb 09, 2006 4:52 pm

Re: Amazon.com's markup is terrible (Meow)

Post by daedalus__ »

haha classic
User avatar
omniuni
Forum Regular
Posts: 738
Joined: Tue Jul 15, 2008 10:50 pm
Location: Carolina, USA

Re: Amazon.com's markup is terrible (Meow)

Post by omniuni »

To Amazon's defense, I would be willing to bet that the code is much cleaner on their end. It is probably "compiled" somehow to improve performance on the part of their server. Part of that probably means running through a bunch of scripts that combine separate files, applies IE bug fixes, and apparently, "meow"s at the end.
josh
DevNet Master
Posts: 4872
Joined: Wed Feb 11, 2004 3:23 pm
Location: Palm beach, Florida

Re: Amazon.com's markup is terrible (Meow)

Post by josh »

josh wrote:I bet the reason for the obscure class names is code generation, but that aside its still pretty crappy.
Yep, I tried to point out that possibility, but that still doesn't explain extraneous blank lines. That adds up to GIGS of bandwidth a day. Just those blank lines.. but whatever, they can afford it. You would think they would get tired of looking at it though and have someone spend a few hours fixing it. I'm sure they have they have plenty of devs
User avatar
omniuni
Forum Regular
Posts: 738
Joined: Tue Jul 15, 2008 10:50 pm
Location: Carolina, USA

Re: Amazon.com's markup is terrible (Meow)

Post by omniuni »

What I mean is it's probably more obfuscation and optimization than generation.
alex.barylski
DevNet Evangelist
Posts: 6267
Joined: Tue Dec 21, 2004 5:00 pm
Location: Winnipeg

Re: Amazon.com's markup is terrible (Meow)

Post by alex.barylski »

Im with josh on this one...if the HTML is that crappy the backend code is probalby equally bad. That being said whitespace is negligible with gzip compression but the inline CSS, etc tells me instantly their developers have been rushed into *just making it work* -- it they dont have time to clean up simple code like CSS I doubt very much they have time to keep the backend code clean as well.

Cheers,
Alex
User avatar
daedalus__
DevNet Resident
Posts: 1925
Joined: Thu Feb 09, 2006 4:52 pm

Re: Amazon.com's markup is terrible (Meow)

Post by daedalus__ »

i removed the majority of whitespace from my 11k worth of css and trimmed it down to 7k today and regex still isn't where i want it to be.
User avatar
omniuni
Forum Regular
Posts: 738
Joined: Tue Jul 15, 2008 10:50 pm
Location: Carolina, USA

Re: Amazon.com's markup is terrible (Meow)

Post by omniuni »

If you want, I can keep defending Amazon, but it might be more fun for me to try to defend Micro$oft's OpenXML next! :lol:
Post Reply