var NavigationConfig = {
  sensitivity:  4
, over:         function () {}
, timeout:      500
, out:          function () {
                  $(this).children('ul').animate({"height": "hide"}, 400);
                }
};

var CreateSum = $.klass({
  initialize: function () {
    var sum = Math.floor(Math.random()*MAX_NUM);
    sum += OPERATORS[Math.floor(Math.random()*OPERATORS.length)];
    sum += Math.floor(Math.random()*MAX_NUM);
    this.element.html(SUM_TEXT.replace("{sum}", sum));
    
    $('form input#sum').get(0).value = sum;
  }
});

var DeleteTile = $.klass({
  onclick: function () {
    if (confirm('Weet je zeker dat je deze tegel wilt wissen?')) {
      disable_forms(this.element.parents('form'));
      tile_id = this.element.parents('.tile').get(0).id;
      loader = this.element.parents('.tile').children('.loading')
      ajax_delete(this.element.get(0).href, delete_tile, {tile_id: tile_id, loader: loader})
    }
    
    return false;
  },
  onmouseout: function (event) {
    document.body.style.cursor = 'default';
  },
  onmouseover: function (event) {
    document.body.style.cursor = 'pointer';
  }
});

var FeatureTile = $.klass({
  onclick: function () {
    var form = this.element.parents('form');
    disable_forms(form);
    loader = this.element.parents('.tile').children('.loading')
    ajax_post(form.get(0).action, form.serialize(), update_tiles, {tile_id: 'tile_list', loader: loader});
    return false;
  }
})

var NavigationBehaviour = $.klass({
  onclick: function () {
    this.element.siblings('ul').animate({"height": "show"}, 800);
    return false;
  },
  onmouseout: function (event) {
    document.body.style.cursor = 'default';
  },
  onmouseover: function (event) {
    document.body.style.cursor = 'pointer';
  }
});

var RollOver = $.klass({
  initialize: function (event) {
    this.image = this.element.children('img');
  },
  onmouseover: function (event) {
    this.image.attr("src", this.image.attr("src").split(".").join(".hover."));
  },
  onmouseout: function (event) {
    this.image.attr("src", this.image.attr("src").split(".hover.").join("."));
  }
});

var ShowSendFriend= $.klass({
  initialize: function () {
    this.open = false
  },
  onclick: function () {
    if (this.open) {
      $('.send-a-friend-form').slideUp();
    } else {
      $('.send-a-friend-form').slideDown();
    }
    this.open = !this.open;
    
    return false;
  }
});

var ShowWidgetCode = $.klass({
  initialize: function () {
    this.open = false;
  },
  onclick: function () {
    if (this.open) {
      $('.widget-text').slideUp();
    } else {
      $('.widget-text').slideDown();
    }
    this.open = !this.open;
    
    return false;
  }
});

var SelectAllText = $.klass({
  onclick: function () {
    this.element.select();
  }
});

var SubmitBehaviour = $.klass({
  onclick: function () {    
    if (this.element.parents('form').find('#new_tile_answer').length > 0) {
      var answer = $('#new_tile_answer').get(0).value
      var sum = $('form input#sum').get(0).value

      var sum = sum.split('');
      var right_answer;
      switch(sum[1]) {
        case "+": right_answer = Number(sum[0]) + Number(sum[2]); break;
        case "x": right_answer = Number(sum[0]) * Number(sum[2]); break;
        default:  right_answer = undefined;
      }

      if (right_answer == answer) {
        this.element.parents('form').get(0).submit();
      } else {
        $('#new_tile_answer').addClass('error');
        alert(SUM_ERROR);
      }
    } else {
      this.element.parents('form').get(0).submit();
    }
    
    return false;
  }
});

var UpdateTile = $.klass({
  onclick: function () {
    var form = this.element.parents('form');
    disable_forms(form);
    tile_id = this.element.parents('.tile').get(0).id;
    loader = this.element.parents('.tile').children('.loading')
    ajax_post(form.get(0).action, form.serialize(), update_tile, {tile_id: tile_id, loader: loader});
    return false;
  }
});