var slideWidth = -722; // width of page
var currentSlide = 0;
var num_Slides = 0;
var left_pos = 0;
var full_length = 0;
var connections = [];

function cleanWork() {
  dojo.unsubscribe("/work/toggleMenuButtons");
  dojo.unsubscribe("/work/navSection");
}


function _activate_work() {

  // reset
  currentSlide = 0;
  left_pos = dojo.coords("carousel").l;
  full_length = (slideWidth * (dojo.query('#carousel li').length-1));
  num_Slides = (full_length / slideWidth);
  if(connections.length) {
    dojo.forEach(connections, dojo.disconnect);
  }

  dojo.query('#portfolio').removeClass('FOUC');
  dojo.subscribe("/work/navSection", null, _nav_section);
  dojo.subscribe("/work/toggleMenuButtons", null, _toggleMenu_buttons);
  dojo.publish("/work/toggleMenuButtons");


  // assign button behaviours
  dojo.behavior.add({
    '.subnav a' : {
      onclick: function(e) {
        e.preventDefault();
        dojo.query('.subnav li').removeClass('selected');
        dojo.query(e.currentTarget.parentNode).addClass('selected');
        slide_to(_clicked_link(e.currentTarget.parentNode));
      }
    }
  }); // behaviour

  dojo.behavior.apply();

  connections.push(
    dojo.connect(dojo.byId(dojo.query('.xxsubnav li')), "onclick", function(e){
      e.preventDefault();
      dojo.query('.subnav li').removeClass('selected');
      dojo.query(e.currentTarget.parentNode).addClass('selected');
      slide_to(_clicked_link(e.currentTarget.parentNode));
    })
   );

  connections.push(
    dojo.connect(dojo.byId("b1"), "onclick", function(e){
      dojo.stopEvent(e);
      slide_to_section(_clicked_link(e.currentTarget));
    })
   );

  connections.push(
    dojo.connect(dojo.byId("b2"), "onclick", function(e){
      dojo.stopEvent(e);
      slide_to_section(_clicked_link(e.currentTarget));
    })
   );

  connections.push(
     dojo.connect(dojo.byId("b3"), "onclick", function(e){
      dojo.stopEvent(e);
      slide_to_section(_clicked_link(e.currentTarget));
    })
   );

  connections.push(
    dojo.connect(dojo.byId("prev"), "onclick", function(e){
      dojo.stopEvent(e);
      currentSlide--;
      slide_leftright('left');
    })
   );

  connections.push(
    dojo.connect(dojo.byId("next"), "onclick", function(e){
      dojo.stopEvent(e);
      currentSlide++;
      slide_leftright('right');
    })
   );
} //_activate_work

function _toggleMenu_buttons() {

  if(currentSlide <= 0) {
    dojo.query('.subnav').addClass('hide');
    dojo.query('.carouselbutton.left').addClass('hide');
  } else {
    dojo.query('.subnav').removeClass('hide');
    dojo.query('.carouselbutton.left').removeClass('hide');
  }
  if(currentSlide == num_Slides) {
    dojo.query('.carouselbutton.right').addClass('hide');
  } else {
    dojo.query('.carouselbutton.right').removeClass('hide');
  }
}

function _clicked_link(item){
  return dojo.attr(dojo.query(item)[0], 'data-brand').split(" ");
}

function slide_pane(l_r) {

  dojo.animateProperty({
    node: dojo.byId('carousel'),
    duration: 500,
    properties: {
      left: { end: (currentSlide * slideWidth) }
    },
    onEnd: function(){
      left_pos = dojo.coords("carousel").l;
      //currentSlide = left_pos / slideWidth;
      dojo.publish("/work/toggleMenuButtons");
    },
    easing: dojo.fx.easing.easeInOut
  }).play();

  dojo.publish("/work/navSection");
}

function slide_to(position) {
  var nodes = dojo.query('#carousel li');
  var choice;

  if (dojo.some(nodes, function(item, indx) {
    choice = indx;
    if(dojo.attr(dojo.query(item)[0],'data-category') == position[0]){
      return true;
    }
  })) {
        if(position[1]){
          currentSlide = (parseInt(position[1], 10) + (choice-1));
        }
        else {
          currentSlide = choice;
        }
      } else {
        currentSlide = 0; // shouldn't reach here...
      }

  slide_pane();
}

function slide_to_section(position){
  slide_to(position);

  dojo.query('.subnav li').removeClass('selected');

  dojo.some(dojo.query('.subnav li'), function(item) {
    if (dojo.attr(dojo.query(item)[0],'data-brand').split(" ")[0] == position[0]) {
      dojo.query(item).addClass('selected');
      dojo.query(item).next().addClass('selected');
      return true;
    }
  });
}

function slide_leftright(direction){
  var domnode, data1, data2;
  var navlist = dojo.query('.subnav li');

  var selected = [];
  dojo.forEach(navlist, function(item){
    if(dojo.hasClass(item, 'selected')){
      selected.push(item);
    }
  });


  if(direction == 'left'){// && currentSlide <= slideWidth){
//currentSlide--;
    if(currentSlide < 0) { currentSlide = 0; }
//    currentSlide = left_pos - slideWidth;
//    if((left_pos + currentSlide) > 0) { currentSlide = 0; }
    // if both are main sub navs
    data1 = dojo.attr(dojo.query(selected[0])[0],'data-brand').split(" ").length;
    data2 = dojo.attr(dojo.query(selected[1]).prev()[0],'data-brand').split(" ").length;
    if(data1 == data2) { // shift 'selected' to next main sub nav and next
      dojo.query('.subnav li').removeClass('selected');
      dojo.query(selected[1]).prev().prev().addClass('selected');
      _nav_section();
    } else { // otherwise just shift the 'selected' class one
      dojo.query(selected[1]).removeClass('selected');
      dojo.query(selected[1]).prev().addClass('selected');
    }
    slide_pane(direction);
  }
  else if(direction == 'right' && left_pos !== 0){// && currentSlide >= slideWidth){
//currentSlide++;
    if(currentSlide > num_Slides) { currentSlide = num_Slides; }
//    currentSlide = left_pos + slideWidth;
//    if(currentSlide < full_length) { currentSlide = full_length; }
    // if both are main sub navs
    data1 = dojo.attr(dojo.query(selected[0])[0],'data-brand').split(" ").length;
    data2 = dojo.attr(dojo.query(selected[1]).next()[0],'data-brand').split(" ").length;
    if(data1 == data2) { // shift 'selected' to next main sub nav and next
      dojo.query('.subnav li').removeClass('selected');
      dojo.query(selected[1]).next().next().addClass('selected');
      _nav_section();
    } else { // otherwise just shift the 'selected' class one
      dojo.query(selected[1]).removeClass('selected');
      dojo.query(selected[1]).next().addClass('selected');
    }
    slide_pane(direction);
  }
  else {
    slide_pane();
  }

}

function _nav_section() {
  var list = dojo.query('.subnav li');
  var type;

  // find selected section
  dojo.some(list, function(item){
    if(dojo.hasClass(item, 'selected')){
      type = dojo.attr(dojo.query(item)[0],'data-brand').split(" ")[0];
      return;
    }
  });

  // highlight start of nav section
  var highlight = dojo.filter(list, function(item){
    return (dojo.attr(dojo.query(item)[0],'data-brand') == type);
  });
  if(highlight[0]) { dojo.query(dojo.query(highlight[0])[0]).addClass('selected'); }

  // if only nav start selected, add class 'selected' on first of...
  var howmany = dojo.filter(list, function(item){
    return (dojo.hasClass(item, 'selected'));
  });

  if(howmany.length == 1){
    dojo.query(howmany[0]).next().addClass('selected');
  }
}


