(function() {
  var cs;

  cs = window.CS || (window.CS = {});

  cs.Data || (cs.Data = {});

  cs.Views || (cs.Views = {});

  cs.Views.FeatureView = Backbone.View.extend({
    initialize: function(options) {
      this.options = options;
      _.bindAll(this);
      this.$el = $(this.el);
      this.appModel = options.appModel;
      this.getFeature();
    },
    getFeature: function() {
      $.ajax({
        url: "/",
        data: {
          json: 'get_tag_posts',
          slug: 'feature',
          count: 1,
          custom_fields: 'excerpt,feature-image'
        },
        dataType: 'json',
        success: this.hazData
      });
    },
    hazData: function(data) {
      this.model = new Backbone.Model;
      this.model.set(data.posts[0]);
      this.render();
    },
    render: function() {
      var $h1, $img, $shape, excerpt, image, url;
      var _this = this;
      if ($("#post-" + (this.model.get('id'))) != null) {
        $("#post-" + (this.model.get('id'))).remove();
        this.getPostFromNextPage();
      }
      image = "" + cs.Data.templateDir + "/attachment-redirect.php?attachment_id=" + (this.model.get('custom_fields')['feature-image'][0]);
      url = this.model.get('url').replace(window.location.origin, '');
      this.$el.append("    <div class=\"img extend\" data-view=\"ImageView\">      <img data-src=\"" + image + "\" src=\"" + cs.Data.blankImage + "\"/>    </div>    <a href=\"" + url + "\" class=\"link\"></a>    ");
      $img = this.$('.img');
      if (!cs.wpUtils.hasTag('no-text', this.model) && cs.wpUtils.hasTag('text-only', this.model)) {
        this.$el.append("<h1 class=\"fade-hover\">" + (this.model.get('title_plain')) + "</h1>");
        $h1 = this.$('h1');
        $h1.css({
          marginTop: 0 - ($h1.height() / 2),
          opacity: 0
        });
        $img.bind('transition-complete', function() {
          $h1.animate({
            opacity: 1
          }, 300);
        });
      }
      if (!cs.wpUtils.hasTag('no-text', this.model) && !cs.wpUtils.hasTag('text-only', this.model)) {
        if (this.model.get('custom_fields').excerpt != null) {
          excerpt = this.model.get('custom_fields').excerpt[0];
        } else {
          excerpt = this.model.get('excerpt');
        }
        $shape = $("      <div class=\"shape fade-hover\">        <h1>" + (this.model.get('title_plain')) + "</h1>        <p>" + excerpt + "</p>      </div>      ");
        this.$el.append($shape);
        $shape.css({
          opacity: 0
        });
        $img.bind('transition-complete', function() {
          $shape.animate({
            opacity: 1
          }, 300);
        });
      }
      bbb.utils.extendViews(cs.Views, this.appModel);
    },
    getPostFromNextPage: function() {
      $.ajax({
        url: "/",
        data: {
          json: 'get_recent_posts',
          page: 2,
          custom_fields: 'post-thumb'
        },
        dataType: 'json',
        success: this.hasPostFromNextPage
      });
    },
    hasPostFromNextPage: function(data) {
      var postRendered;
      var _this = this;
      postRendered = false;
      _.each(data.posts, function(post) {
        if (!postRendered && post.id !== _this.model.get('id')) {
          postRendered = true;
          _this.renderPost(post);
        }
      });
    },
    renderPost: function(post) {
      var $post, date, excerpt, type, view;
      type = 'text';
      date = post.date;
      date = date.split(' ')[0];
      date = date.split('-');
      date = date[2] + "." + date[1] + "." + date[0].substr(2, 4);
      excerpt = post.excerpt;
      $post = $("    <div class='post' data-type='" + type + "' id='" + post.id + "'>      <a href='" + post.url + "' class='read-article'></a>      <a href='" + post.url + "' class='link'></a>      <div class='text-promo'>        <h2><span class='date number'>" + date + "</span><span class='title'>" + post.title + "</span></h2>      </div>      <div class='info'>        <div class='excerpt'>          " + excerpt + "        </div>      </div>    </div>    ");
      $('.posts').append($post);
      view = new cs.Views.GridPostView({
        el: $post,
        appModel: this.appModel
      });
    }
  });

}).call(this);

