var block_scroller = {
  mask_ext : (true /*@cc_on && @_jscript_version > 5.6 && window.XMLHttpRequest @*/) ? 'png':'gif',
  default_obj_specs : {
      'target' : 'img.block_scroller',
      'full_width' : 'x2', // pixels or multiplier
      'speed'  : 10 // seconds to complete 1 scroll; lower is faster
    },
  base_list : {},

  make : function (obj_specs) {
    for (var spec in block_scroller.default_obj_specs) {
      if ( ! obj_specs[spec]) obj_specs[spec] = block_scroller.default_obj_specs[spec];
    }
    $(obj_specs.target)
      .data('speed', obj_specs.speed)
      .data('width', obj_specs.full_width)
      .each(function () {
          var ext = this.src.substring(this.src.lastIndexOf('.'));
          var base = this.src.substring(0, this.src.lastIndexOf('_') +1);
          if ( ! block_scroller.base_list[base]) block_scroller.base_list[base] = [];
          block_scroller.base_list[base].push(this);
          $(this)
            .css('background-image', 'url('+ this.src +')')
            .attr('src', base +'mask.'+ block_scroller.mask_ext);
          $('body')
            .append('<img src="'+ base +'scrollblock'+ ext +'" style="display:none;" onload="block_scroller.kick(this);" />');
        });
  },

  kick : function (img) {
    var base = img.src.substring(0, img.src.lastIndexOf('_') +1);
    for (var x=0, el=null; el=block_scroller.base_list[base][x]; x++) {
      $(el)
        .css('background-image', 'url('+ img.src +')')
        .each(block_scroller.scroll);
    }
  },

  scroll : function () {
    $(this)
      .css('background-position', '0px 0px')
      .animate(
          {backgroundPosition:'-'+ $(this).data('width') +'px 0px'},
          $(this).data('speed') *1000,
          'linear',
          block_scroller.scroll
        )
  },

  complete : true
}
