var show_hide_speed = 100;

// Setup for datePicker
Date.firstDayOfWeek = 0;
Date.format = 'yyyy-mm-dd';

var ajax_delete = function(url, data, cb, type) {
  data['_method'] = 'DELETE';
  ajax_post(url, data, cb, type);
};

var ajax_put = function(url, data, cb, type) {
  data['_method'] = 'PUT';
  ajax_post(url, data, cb, type);
};

var ajax_post = function(url, data, cb, type) {
  data['authenticity_token'] = FORM_AUTHENTICITY_TOKEN;
  $.post(url, data, cb, type);
};

// livequery behaviors
$(function() {

  $('.date-pick').livequery(function() {

    $(this).datePicker({
      startDate: '1970-01-01',
      clickInput: true
    }).trigger('change');

    var date_string = $.trim($(this).val());
    if (date_string.length == 0) {
      var d = new Date();
      $(this).dpSetDisplayedMonth(d.getMonth(), d.getFullYear());
    }
  });

  // Modal behaviors
  $('a.modal_form').livequery('click', function(e) {
    e.preventDefault();
    $('#modal_window').load($(e.target).attr('href'));
    $('#modal_window').jqmShow();
  });

  $('#modal_window a.cancel').livequery('click', function(e) {
    e.preventDefault();
    $('#modal_window').jqmHide();
  });
  
  $('div.jqmWindow a.cancel').livequery('click', function(e) {
    e.preventDefault();
    $('div.jqmWindow').jqmHide();
  });

  $('.comments form').livequery(function() {
    var comments_div = $(this).parents('.comments');
    $(this).ajaxForm({success: function(data) {
      comments_div.replaceWith(data);
    }});
  });

  $('.comments a.del').livequery('click', function(e) {
    e.preventDefault();
    var comments_div = $(e.target).parents('.comments');
    ajax_delete(e.target.href, {}, function(data) {
      console.log(comments_div);  
      comments_div.replaceWith(data);
    });
  });

});

function wireup_modals() {

  $('.modal_link').each(function () {
    $(this).bind('click', function() {
      var $modal = $(this).attr('id').substr(0, $(this).attr('id').indexOf('_link'));
      $('#' + $modal).jqmShow();
    });
  });

}

function wireup_inline_forms() {

  $('.inline_form').each(function () {
    var $container = $(this);
    var $formdiv = $container.find('.form');
    var $load_link = $container.find('.link');
    $load_link.bind('click', function() {
      $formdiv.load($load_link.attr('href'), function() {
        $formdiv.find('.inline_cancel').each(function() {
          $(this).bind('click', function() {
            $load_link.show();
            $formdiv.html('');
            return false;
          });
        });
      });
      $(this).hide();
      return false;
    });
  });

}

function wireup_expander_groups() {
  $('.expander a.expand').livequery(function() {
    var $container = $(this).parents('.expander');
    var $link = $(this);
    $link.bind('click', function(e) {
      e.preventDefault();
      var $div = $container.find('.expandee');
      if ($link.html() == '-')
        $link.html('+');
      else
        $link.html('-');
      $div.toggle();
    });
  });
}

function wireup_toggle_groups() {
  $('.toggle_group').each(function () {
    var $container = $(this);
    var $tog_a = $container.find('div.tog_a');
    var $tog_b = $container.find('div.tog_b');
    var $tog_a_link = $container.find('a.tog_a');
    var $tog_b_link = $container.find('a.tog_b');
    $tog_a_link.bind('click', function() {
      $tog_a.fadeIn(show_hide_speed);
      if ($tog_b != undefined) {
        $tog_a_link.hide();
        $tog_b.hide();
        $tog_b_link.show();
      }
    });
    $tog_b_link.bind('click', function() {
      $container.find('div.tog-a,a.tog-b').hide();
      $container.find('a.tog-a').show();
      $container.find('div.tog-b').fadeIn(show_hide_speed);
    });
  });
}

function wireup_flash()
{
  setTimeout(function() {
    $('#flash').fadeOut(500);
  }, 4000);
}

function wireup_highslide()
{
  $('a.highslide').each(function() {
    $(this).bind('click', function() {
      return hs.expand(this);
    });
  });
}

function inline_edit(div) {
  var container = $(div).parent().parent();
  $(container).find('.inline_form_field').toggle();
  $(container).find('.read_field').toggle();
  $(container).find('a.edit').toggle();
}

function wireup_datepicker() {
  $('.date-pick').datePicker().val(new Date().asString()).trigger('change');
}

function wireup_tablesorters() {
  $('table.tablesorter').each(function() {
    if ($(this).attr('class').lastIndexOf('sort_col_') != -1)
      var default_sort = $(this).attr('class').substring($(this).attr('class').lastIndexOf('sort_col_') + 9, $(this).attr('class').length);
    else
      var default_sort = 0
    $(this).tablesorter({ sortList:[[default_sort,0]]});
  })
}

function convert_height() {
  $('#height_input').bind('keyup', function() {

    var dd = this.value;
    if (isNaN(dd))
    {
      dd = dd.substring(0, (dd.length - 1));
      this.value = dd;
    }
    $('#height_calc > span.feet').html(Math.floor(this.value / 12) + "'");
    $('#height_calc > span.inches').html(Math.round(this.value % 12) + '"');
  })
}

$(function() {
  $('#modal_window').jqm({
    onHide: function(data) {
      data.o.remove();
      data.w.hide();
      $('#modal_window').html('loading...');
    }
  });
  $('.jqmWindow').jqm();
  wireup_expander_groups();
  wireup_flash();
  wireup_highslide();
  wireup_inline_forms();
  wireup_modals();
  wireup_tablesorters();
  $("table.problemsorter").tablesorter({
    textExtraction: function(node) {
        // extract data from markup and return it
        if (node.childNode.className='sorterValue') {
          return node.childNodes[0].innerHTML;
        } else
          return node.innerHTML;
    },
    1: {sorter:"integer"}
  });  
  convert_height();
});

var init_show_problem = function() {
  $('#upload_picture_link').click(function(e) {
    e.preventDefault();
    var f = $('#upload_picture_form');
    if (f.is(':visible')) {
      f.hide();
    } else {
      f.show();
    }
  });
};