(function() {
  function css(name, def, obj) {
    var prop="_dday_style_"+(obj?(obj+"_"):"")+name.replace(/-/,"_");
    if (prop in window) {
      (obj?div.find("._dday_"+obj):div).css(name, window[prop]);
    } else {
      (obj?div.find("._dday_"+obj):div).css(name, def);
    }
  }
  function prop(name, def) {
    var prop="_dday_prop_"+name;
    if (prop in window) {
      return window[prop];
    } else {
      return def;
    }
  }
  document.write('<div class="_dday_ph"><p class="_dday_title"></p><p class="_dday_title2"></p><table class="_dday_stats"><tbody class="_dday_tbody"></tbody></table></div>');
  var div = jQuery("._dday_ph");
  css("width", "250px");
  css("height", "auto");
  css("background-color", "white");
  css("color", "black");
  css("border-width", "1px");
  css("border-color", "navy");
  css("border-style", "solid");
  
  div.find("._dday_title").append(prop("title", "Firefox Download Day 2008"));
  css("background-color", "transparent", "title");
  css("color", "navy", "title");
  css("margin-bottom", "0", "title");
  css("text-align", "center", "title");
  css("font-size", "12px", "title");
  css("font-weight", "bold", "title");
  css("font-style", "normal", "title");
  
  if (prop("show_title2", true)) {
    div.find("._dday_title2").append(prop("title2", "Top Downloads"));
    css("background-color", "transparent", "title2");
    css("color", "navy", "title2");
    css("margin-top", "0", "title2");
    css("text-align", "center", "title2");
    css("font-size", "12px", "title2");
    css("font-weight", "bold", "title2");
    css("font-style", "normal", "title2");
  }
  
  css("border-width", "0", "stats");
  css("border-color", "transparent", "stats");
  css("border-style", "solid", "stats");
  css("margin-top", "0", "stats");
  css("margin-bottom", "0", "stats");
  css("width", "100%", "stats");
  
  css("border-width", "0", "tbody");
  css("border-color", "transparent", "tbody");
  css("border-style", "solid", "tbody");
  
  table = div.find("._dday_stats");
  jQuery.getJSON("http://ehsanakhgari.org/mozilla/downloadday/stats/widget/data/dday.json?num="+prop("count", 10)+"&callback=?", function (data, status) {
    if (prop("show_header", true)) {
      jQuery("<tr/>").addClass("_dday_row").append(
                      prop("column_rank", true) ? jQuery("<th/>").addClass("_dday_hcell").addClass("_dday_col_rank").append(prop("header_rank", "Rank")) : null
                    ).append(
                      prop("column_country", true) ? jQuery("<th/>").addClass("_dday_hcell").addClass("_dday_col_country").append(prop("header_country", "Country")) : null
                    ).append(
                      prop("column_pledge", true) ? jQuery("<th/>").addClass("_dday_hcell").addClass("_dday_col_pledge").append(prop("header_pledge", "Downloads")) : null
                    ).append(
                      prop("column_ratio", false) ? jQuery("<th/>").addClass("_dday_hcell").addClass("_dday_col_ratio").append(prop("header_ratio", "Ratio")) : null
                    ).appendTo(table);
    }
    for (var i = 0; i < data.length; ++ i) {
      jQuery("<tr/>").addClass("_dday_row").append(
                      prop("column_rank", true) ? jQuery("<td/>").addClass("_dday_cell").addClass("_dday_col_rank").append(i+1) : null
                    ).append(
                      prop("column_country", true) ? jQuery("<td/>").addClass("_dday_cell").addClass("_dday_col_country").append(data[i].country) : null
                    ).append(
                      prop("column_pledge", true) ? jQuery("<td/>").addClass("_dday_cell").addClass("_dday_col_pledge").append(data[i].downloadCount.toLocaleString().replace(/[,\.]00$/,"")) : null
                    ).append(
                      prop("column_ratio", false) ? jQuery("<td/>").addClass("_dday_cell").addClass("_dday_col_ratio").append(data[i].ratio+"%") : null
                    ).appendTo(table);
    }
    
    css("border-width", "0", "hcell");
    css("border-color", "transparent", "hcell");
    css("border-style", "solid", "hcell");
    css("color", "navy", "hcell");
    css("text-align", "left", "hcell");
    css("font-size", "12px", "hcell");
    css("font-weight", "bold", "hcell");
    css("font-style", "normal", "hcell");
    
    css("border-width", "0", "cell");
    css("border-color", "transparent", "cell");
    css("border-style", "solid", "cell");
    css("color", "black", "cell");
    css("text-align", "left", "cell");
    css("font-size", "10px", "cell");
    css("font-weight", "normal", "cell");
    css("font-style", "normal", "cell");
    
    css("text-align", "center", "col_rank");
    css("text-align", "left", "col_country");
    css("text-align", "left", "col_pledge");
    css("text-align", "left", "col_ratio");
    
    if (prop("logo_display", true)) {
      jQuery("<div/>").css("text-align", "center")
                      .append(
                        jQuery("<a/>").attr({
                                         href: prop("logo_link", "http://www.spreadfirefox.com/worldrecord"),
                                         title: prop("logo_title", "Download Day 2008")
                                       })
                                      .append(
                                        jQuery("<img/>").attr({
                                                           border: 0,
                                                           src: prop("logo_image", "http://www.spreadfirefox.com/sites/all/themes/spreadfirefox_RCS/images/download-day/buttons/en-US/080x15_dday.png"),
                                                           alt: prop("logo_title", "Download Day 2008")
                                                         })
                                       )
                      ).appendTo(div);
    }
  });
})();