$(function() { 
  var showModal = function() {
    $('.modalBlocker').css({ height: $(document).height() + 'px', width: $(document).width() + 'px' }).show();
    $('.modalContainer').show();
  };

  $(window).resize(function() {
    $('.modalBlocker').css({ height: $(document).height() + 'px', width: $(document).width() + 'px' });
  });

  var hideModal = function() {
    $('.modalBlocker').hide();
    $('.modalContainer').hide();
  };

  // Shows the sign in form
  $('a[href*="signIn"]').click(function() {
    showModal();
    return false;
  });
  // auto show the signin dialog for urls ending in #signin
  if (window.location.hash.indexOf('signin') > 0) { $('a[href="signIn"]').click(); }

  // submits te sign in form
  $('form.signIN').submit(function() {
    $form = $(this);
    $form.find('.error').hide();
    $.post($form.attr('action'), $form.serialize(), function(data) {
      if (data.indexOf('http:') >= 0) {
        window.location = data;
      }
      else {
        $form.find('.error').show();
      }
    });
    return false;
  });

  // Closes the modal container
  $('.modalContainer a.x, form.admin .cancel').click(function() {
    hideModal();
    $('.ship', $dealer_form).removeAttr('disabled');
    return false;
  });


  // dealer form
  var $dealer_form = $('#dealer_form');
  var populate_dealer_form = function(d) {
    $('#dealer_id').val(d.id);
    $('#dealer_account_name').val(d.account_name);
    $('#dealer_contact').val(d.contact);
    $('#dealer_email').val(d.email);
    $('#dealer_billing_address').val(d.billing_address);
    $('#dealer_billing_state').val(d.billing_state);
    $('#dealer_billing_city').val(d.billing_city);
    $('#dealer_billing_zip').val(d.billing_zip);
    $('#dealer_shipping_address').val(d.shipping_address);
    $('#dealer_shipping_city').val(d.shipping_city);
    $('#dealer_shipping_state').val(d.shipping_state);
    $('#dealer_shipping_zip').val(d.shipping_zip);
    $('#dealer_phone1').val(d.phone1);
    $('#dealer_phone2').val(d.phone2);
    $('#dealer_phone3').val(d.phone3);
    $('#dealer_fax1').val(d.fax1);
    $('#dealer_fax2').val(d.fax2);
    $('#dealer_fax3').val(d.fax3);
    var same_address = true;
    $dealer_form.find('.bill').each(function() {
      var ship_in = '#'+this.id.replace('billing','shipping');
      if ($(this).val() != $(ship_in).val()) {
        same_address = false;
      }
    });
    if (same_address) {
      $('#dealer_single_address').attr('checked','checked');
    }
    else {
      $('#dealer_single_address').removeAttr('checked');
    }
    same_address_change();
  };

  $('h2 a.btn[href="#new"]').click(function() {
    $('#dealer_submit').val("Create New Dealer");
    $dealer_form.find('input[type="text"]').val('');
    $('#dealer_id').val('0');
    $('#dealer_single_address').attr('checked','checked');
    same_address_change();
    $('.modalContainer').removeClass('edit').addClass('new');
    showModal();
    return false;
  });

  $('.dealers a[href="#edit"]').live('click', function() {
    $('#dealer_id').val($(this).attr('data-id'));
    var get_url = '/admin/dealer.php?id='+$(this).attr('data-id');
    $.get(get_url, function(data) {
      populate_dealer_form(data);
      $('.modalContainer').removeClass('new').addClass('edit');
      showModal();
    }, 'json');
    $('#dealer_submit').val("Save Changes");
    return false;
  });

  var same_address_change = function() {
    if ($('#dealer_single_address').attr('checked')) {
      $('.ship', $dealer_form).attr('disabled','disabled');
      $('.bill').each(function() {
        var ship_in = '#'+this.id.replace('billing','shipping');
        $(ship_in).val($(this).val());
      });
      $('.bill', $dealer_form).keyup(function() {
        var ship_in = '#'+this.id.replace('billing','shipping');
        $(ship_in).val($(this).val());
      }).blur(function() {
        var ship_in = '#'+this.id.replace('billing','shipping');
        $(ship_in).val($(this).val());
      });
    }
    else {
      $('.bill', $dealer_form).unbind('keyup');
      $('.ship', $dealer_form).removeAttr('disabled');
    }
  };
  $('#dealer_single_address').change(same_address_change);

  // submits te sign in form
  $dealer_form.find('input[type=submit]').click(function() {
    var has_errors = false;
    $dealer_form.find('.error').hide();
    $dealer_form.find('.req').each(function() {
      if ($(this).val() == '') {
        has_errors = true;
      }
    });
    if (has_errors) { 
      $dealer_form.find('.error').show();
      return false; 
    }
    var disable = false;
    $('.ship').each(function() {
      if ($(this).attr('disabled') == 'disabled') {
        disable = true;
      }
    }).removeAttr('disabled');
    $.post($dealer_form.attr('action'), $dealer_form.serialize() + '&dealer[id]='+$('#dealer_id').val(), function(data) {
      var $row = $('table.dealers tr[data-id='+data.id+']');
      var row =  ['<tr data-id="', data.id, '">',
                    '<td><a href="#edit" data-id="', data.id, '">', data.account_name, '</a></td>',
                    '<td>',data.contact, '</td>',
                    '<td>',data.phone, '</td>',
                    '<td>',data.email, '</td>',
                  '</tr>'];
      if ($row.length == 0) {
        $('table.dealers').append(row.join(''));
      }
      else {
        $row.replaceWith(row.join(''));
      }
      $('.modalContainer a.x').click();
    }, "json");
    if (disable) {
      $('.ship', $dealer_form).attr('disabled', 'disabled');
    }
    return false;
  });

  $dealer_form.find('a[href="#delete"]').click(function() {
    if (!confirm('Are you sure you want to delete this dealer?')) { return false; }
    var id = $dealer_form.find('#dealer_id').val();
    $.post($dealer_form.attr('action'), 'dealer[id]='+id+'&_method=delete', function(data) {
      $('table.dealers tr[data-id='+id+']').remove();
    });
    $('.modalContainer a.x').click();
    return false;
  });

});

