(function() {
  var gid, _ref;
  if ((_ref = window.console) == null) {
    window.console = {
      log: function() {}
    };
  }
  gid = function(el) {
    return document.getElementById(el);
  };
  $(function() {
    var $slide_nav, partnersSetup, sliderHandler, sliderSetup;
    $slide_nav = $("#slide_nav");
    sliderHandler = function(ev, idx, el) {
      var $arrow_left, $changeColor, colour, colours, _i, _len;
      $slide_nav.find(".selected").removeClass("selected");
      $slide_nav.find("[data-id='" + idx + "']").addClass("selected");
      if (textSlider.index !== idx) {
        textSlider.slide(idx);
      }
      $changeColor = $(".dl_button, .slide_nav");
      colours = [null, "purple", "blue", "red"];
      for (_i = 0, _len = colours.length; _i < _len; _i++) {
        colour = colours[_i];
        $changeColor.removeClass(colour);
      }
      if (colours[idx]) {
        $changeColor.addClass(colours[idx]);
      }
      $arrow_left = $(".arrow_left");
      if (idx !== 0) {
        return $arrow_left.fadeIn("slow");
      }
    };
    sliderSetup = function() {
      var $slide_text, $slider, arrSlides, cls, defaultOpts, htmlStr, i, slide, sliderOpts, textSliderOpts, _len;
      if (window.Swipe) {
        window.screenSlider = new Swipe(gid('slider'), {
          callback: function(ev, idx, el) {},
          width: 366
        });
        $("#slider").bind("slideEvent", function(ev, idx) {
          return sliderHandler(ev, idx);
        });
        if (window.innerWidth > 480) {
          window.textSlider = new Trans(gid('slide_text'));
        } else if (window.innerWidth <= 480) {
          window.textSlider = new Swipe(gid('slide_text'), {
            callback: function(ev, idx, el) {
              return sliderHandler(ev, idx);
            }
          });
        }
      } else if ($.Widget) {
        $slide_text = $('#slide_text ul');
        $slider = $('#slider ul');
        defaultOpts = {
          slide: {
            interval: 300
          },
          pagination: false,
          navigation: false
        };
        sliderOpts = {
          height: 528,
          width: 366,
          navigateEnd: function(current) {
            screenSlider.index = current - 1;
            return sliderHandler(null, current - 1);
          }
        };
        sliderOpts = $.extend(sliderOpts, defaultOpts);
        textSliderOpts = {
          responsive: true,
          autoHeight: true,
          navigateEnd: function(current) {
            return textSlider.index = current - 1;
          }
        };
        textSliderOpts = $.extend(textSliderOpts, defaultOpts);
        $slider.slides(sliderOpts);
        $slide_text.slides(textSliderOpts);
        window.screenSlider = {
          index: 0,
          length: $slider.slides("status").total,
          next: function() {
            return $slider.slides("next");
          },
          prev: function() {
            return $slider.slides("previous");
          },
          slide: function(idx) {
            return $slider.slides("slide", idx + 1);
          }
        };
        window.textSlider = {
          index: 0,
          length: $slide_text.slides("status").total,
          next: function() {
            return $slide_text.slides("next");
          },
          prev: function() {
            return $slide_text.slides("previous");
          },
          slide: function(idx) {
            return $slide_text.slides("slide", idx + 1);
          }
        };
      }
      htmlStr = "";
      arrSlides = [];
      arrSlides.length = screenSlider.length;
      for (i = 0, _len = arrSlides.length; i < _len; i++) {
        slide = arrSlides[i];
        cls = i === 0 ? "selected" : "";
        htmlStr = htmlStr + ("<li data-id='" + i + "' class='" + cls + "'></li>");
      }
      return $slide_nav.html(htmlStr);
    };
    Modernizr.load({
      test: Modernizr.csstransforms,
      yep: ["touch.js", "trans.js", "swipe.js"],
      nope: "slide.js",
      complete: function() {
        return sliderSetup();
      }
    });
    $slide_nav.delegate("li", "click", function() {
      var $this, data;
      $this = $(this);
      data = $this.data();
      screenSlider.slide(data.id);
      $slide_nav.find("li").removeClass("selected");
      return $this.addClass("selected");
    });
    $(".arrow_right").show();
    $(".arrow_right").bind("click", function() {
      return screenSlider.next();
    });
    $(".arrow_left").bind("click", function() {
      return screenSlider.prev();
    });
    $("#easter_egg").bind("click", function() {
      return screenSlider.next();
    });
    $(document).bind("keyup", function(e) {
      switch (e.keyCode) {
        case 39:
          return screenSlider.next();
        case 37:
          return screenSlider.prev();
      }
    });
    partnersSetup = function() {
      var $slide_text, $slider, part, partner, path, slide, _i, _len, _ref2, _ref3;
      path = document.location.pathname;
      part = (_ref2 = path.match(/\w+/)) != null ? _ref2[0].toLowerCase() : void 0;
      if (part && partners[part]) {
        partner = partners[part];
        $slide_text = $('#slide_text ul');
        $slider = $('#slider ul');
        $slide_text.html("");
        $slider.html("");
        _ref3 = partner.slides;
        for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
          slide = _ref3[_i];
          $slide_text.append(tmpl("text_tmpl", slide));
          $slider.append(tmpl("screen_tmpl", slide));
        }
        $("#slider").unbind();
        $("#slide_text").unbind();
        return sliderSetup();
      }
    };
    return Modernizr.load({
      load: "javascripts/app/partners.js",
      complete: function() {
        return partnersSetup();
      }
    });
    /*
      speechcapable = ->
        # coffeescript fucks this shit up, "in" is a magic keyword for array lookups
        # soround with backticks for plain ol js conversion
        `'webkitSpeech' in document.createElement('input')`
      
      # if browser supports speech (chrome 11+ or something)
      if speechcapable()
        $speech_input = $("#speech_input")
        
        # show speech elem 
        # $speech_input.show()
        
        # prevent input focus
        $speech_input.bind "focus", ->
          $(this).blur()
          
        $speech_input.bind "click", (ev) ->
          ev.stopPropagation()
        
        # on change ev.
        $speech_input[0].onwebkitspeechchange = (ev) ->
          res = ev.results
          if res.length > 2 # double checking, not sure of data format in future.
            console.log output.utterance for output in res
            spoke res
        
        spoke = (results) ->
          process = (text) ->
            if text.match /next|advance|forward|following|after/
              screenSlider.next()
            else if text.match /previous|back/
              screenSlider.prev()
            else if text.match /first/
              screenSlider.slide(0)
            else if text.match /evan/
              alert "Evan is CEO."
            else if text.match /lol/
              alert "Not even funny."
            else
              false
          
          for output in results
            processed = process output.utterance
            return processed if processed != false
      
      */
    /* 
    $(".android_header").bind "click", ->
      $(".android_content").show()
      $(this).removeClass "clickable"
      $(this).unbind "click"
      
    $("#android_form").bind "submit", (ev) ->
      ev.preventDefault()
      $this = $(this) 
      
      $this.find(".message").html ""
      
      data = $this.serialize()
      url = "dudeson"
      
      params =
        data : data
        url : url
        type : "POST"
        success : (resp) ->
          $this.find(".message").html("success")
        error : (resp) ->
          $this.find(".message").html("error")
        complete : ->
        
      $.ajax params
      console.log params
    */
  });
}).call(this);

