
$(document).ready(function() {

  var language = stentor.getLanguage();

  // faq toggle answers
  $('dt').click(function() { $(this).next().toggleClass('active'); });

  // read more...
  $('a[href$=#more]').click(function() { $(this).parents('.printer').toggleClass('active'); return false; });

  // snel inloggen mouseover & submit 
  $('#quick-login a[href$=#quick-login]').click(function() { 
    var form = $(this).parents('form');
    if (form.hasClass('active')) form.submit();
    else {
      form.addClass('active'); 
      $('#quick-login input[name=name]').focus();
    }
    return false; 
  });
  $('#quick-login input[name=name]').focus(function() { this.select(); });
  $('#quick-login input[name=password]').focus(function() { this.select(); });
  $('#quick-login').each(function() {
    var self = this;
    $('form', self).submit(function() {
      $('p.msg', self).html('<img src="/style/icons/ajax-loader.gif"/>');
      var data = {'stentor_user-login': true, name: $('input[name=name]', self).val(), password: $('input[name=password]', self).val()};
      $.ajax({
        url: '/'+language+'/quick-login',
        type: 'POST',
        data: data,
        dataType: "json",
        error: function() { $('p.msg', self).html(''); },
        success: function(data)
        {
          if (data && data['result']=='success') {
            window.location = data['redirect'];
          }
          if (data && data['result']=='failure') {
            $('p.msg', self).html(data['msg']);
          }
        }
      });
      return false; 
    });
  });

  // cartridge-selector
  $('#cartridge_selector').each(function() { 
    var self = this;
    var form = $('form', self);
    var printer_brand = $('select[name=printer_brand]', self);
    var printer_type = $('select[name=printer_type]', self);
    var printer_model = $('select[name=printer_model]', self);
    var submit_button = $('input[name=submit]', self);
    form.submit(function() {
      if (submit_button.hasClass('inactive')) {
        return false;
      }
      return true;
    });
    printer_brand.change(function() {
      submit_button.addClass('inactive');
      printer_type.val('_select_');
      printer_type.addClass('inactive');
      $('option[value!=_select_]', printer_type).remove();
      printer_model.val('_select_');
      printer_model.addClass('inactive');
      $('option[value!=_select_]', printer_model).remove();
      $.ajax({
        url: '/'+language+'/printer/'+printer_brand.val()+'/get_types',
        type: 'GET',
        dataType: "json",
        success: function(data)
        {
          if (data) {
            var select_options = '';
            for(key in data) {
              var option = data[key];
              select_options+= '<option value="'+option[0]+'" title="'+option[1]+'">'+option[1]+'</option>';
            }
            if (select_options) {
              printer_type.append(select_options);
              printer_type.removeClass('inactive');
            }
          }
        }
      });
    });
    printer_type.change(function() {
      submit_button.addClass('inactive');
      printer_model.val('_select_');
      printer_model.addClass('inactive');
      $('option[value!=_select_]', printer_model).remove();
      $.ajax({
        url: '/'+language+'/printer/'+printer_brand.val()+'/'+printer_type.val()+'/get_models',
        type: 'GET',
        dataType: "json",
        success: function(data)
        {
          if (data) {
            var select_options = '';
            for(key in data) {
              var option = data[key];
              select_options+= '<option value="'+option[0]+'" title="'+option[1]+'">'+option[1]+'</option>';
            }
            if (select_options) {
              printer_model.append(select_options);
              printer_model.removeClass('inactive');
            }
          }
        }
      });
    });
    printer_model.change(function() {
      submit_button.addClass('inactive');
      if (printer_model.val()!='_select_') {
        form.attr('action', '/'+language+'/select_cartridge/'+printer_brand.val()+'/'+printer_type.val()+'/'+printer_model.val()+'/');
        submit_button.removeClass('inactive');
      }
    });
  });

  // registration/profile-form
  $('input[name=usertype]').click(function() {
    var form = $(this).parents('form');
    form.removeClass('company');
    form.removeClass('consumer');
    form.addClass($(this).val());
  });
  $('input[name=zip]').blur(function() {
    var num_zip = parseInt($(this).val(), 10);
    if (num_zip>999 && num_zip<10000) {
      $.ajax({
        url: '/'+language+'/shop_by_zip/' + num_zip,
        type: 'POST',
        data: {'returntype':'json'},
        dataType: "json",
        error: function() { },
        success: function(data)
        {
          $('select[name=myprinter-shop]').val(data['id']);
          $('div.shopprofile').html(data['shopprofile']);
        }
      });
    }
  });
  $('input[name=zip]').keydown(function(event) {
    if (event.keyCode == 13) {
      this.blur();
      event.preventDefault();
      event.stopPropagation();
      $('select[name=myprinter-shop]', $(this).parents('form')).focus();
    }
  });
  $('select[name=myprinter-shop]').change(function() {
    var shopid = $(this).val();
    $.ajax({
      url: '/'+language+'/shop_by_id/' + shopid,
      type: 'POST',
      data: {'returntype':'json'},
      dataType: "json",
      error: function() { },
      success: function(data)
      {
        $('div.shopprofile').html(data['shopprofile']);
      }
    });
  });
  // registration/profile-subusers
  $('input.textbox.multiple').each(function() {
    var textbox = this;
    $(textbox).after('<img class="imgbutton" src="/style/icons/clear.gif" alt="'+stentor.txt('delete.extrauser')+'" title="'+stentor.txt('delete.extrauser')+'">');
    var deleteimg = $(textbox).next('img');
    $(deleteimg).click(function() { $(textbox).val(''); return false; });
  });
  $('a[href$=#more-extra-users]').click(function() {
    var p = $(this).parents('p');
    $(p).before('<input type="text" name="extra-users[]" value="" class="textbox multiple"/><img class="imgbutton" src="/style/icons/clear.gif" alt="'+stentor.txt('delete.extrauser')+'" title="'+stentor.txt('delete.extrauser')+'"><br/>');
    var deleteimg = $(p).prev().prev();
    $(deleteimg).click(function() { 
      var textbox = $(this).prev('input');
      $(textbox).val(''); 
      return false; 
    });
    return false;
  });

  // update printer remarks
  $('.printer a[href$=#edit]').click(function () {
    $('.printer form ').css({display: 'none'});
    $('.printer').css({zIndex: 1});
    var self = this;
    var printer = $(self).parents('.printer').get(0);
    $(printer).css({zIndex: 10});
    var form = $('form', printer).get(0);
    var formaction = $(form).attr('action');
    var input = $('textarea', form).get(0);
    var cancelinput = $('textarea', form).val();
    var submit = $('input[name=submit]', form).get(0);
    var cancelform = $('input[name=cancel]', form).get(0);
    $(input).focus();
    $(form).css({display: 'block'});
    $(cancelform).click(function (){ $(input).val(cancelinput); $(form).css({display: 'none'}); return false; });
    return false;
  });

  // add to order
  $('.add_to_order').each(function () {
    var self = this;
    var add_to_order_snippet = $(self).parents('.add_to_order_snippet').get(0);
    var quantity = $('input[name=quantity]', self);
    var initial_quantity = $(quantity).val();
    var submitbutton = $('.add_to_order-submit', add_to_order_snippet);
    $(self).submit(function() {
      $(submitbutton).click();
      return false;
    });
    $(submitbutton).click(function() {
      var q = $(quantity).val();
      q = parseInt(q, 10);
      if (!q || q<0 || q.toString(10)!==$(quantity).val()) {
        $(quantity).val('??');
        $(quantity).focus();
        return false;
      }
      $(submitbutton).addClass('busy');
      $(submitbutton).before('<img class="loader" src="/style/icons/ajax-loader.gif"/>');

      var post_data = {'returntype':'json'};
      $('input[name=myprinter_info]', self).each(function() { post_data.myprinter_info = $(this).val(); });

      $.ajax({
        url: $(self).attr('action') + '/' + q,
        type: 'POST',
        data: post_data,
        dataType: "json",
        error: function() { $(quantity).val('???'); $(quantity).focus(); $('.loader', add_to_order_snippet).remove(); },
        success: function(data)
        {
          if (data['result']==1) {
            $('.emptybasket').css({display: 'none'});
            $('.nonemptybasket').css({display: 'inline'});
            $('#basket-contents-itemcount').html(data['quantitycount']);
            $('#basket-contents-total').html(data['basket_subtotal']);
            $(quantity).val('ok');
          }
          else {
            $(quantity).val('??');
          }
          window.setTimeout(function() { $(quantity).val(initial_quantity); $(quantity).focus(); }, 1000);
          $('.loader', add_to_order_snippet).remove();
          $(submitbutton).removeClass('busy');
        }
      });
      return false; 
    });
  });

  // update orderline quantity
  $('div.q input.quantity').each(function () {
    var self = this;
    var original_q = $(self).val();
    var form = $(self).parents('form').get(0);
    var formaction = $(form).attr('action');
    $(self).focus(function() {
      $(self).after('<img class="accept" src="/style/icons/accept.png" alt="ok"/>');
      //$(self).before('<img class="accept" src="/style/xpix.gif" width="16" height="16" alt=""/>');
    });
    $(self).blur(function() {
      $('img.accept', form).remove();
    });
    $(self).change(function() {
      $(form).submit();
      return false;
    });
    $(form).submit(function() {
      var q = $(self).val();
      q = parseInt(q, 10);
      if (!q || q<0 || q.toString(10)!==$(self).val()) {
        $(self).val('???');
        $(self).blur().focus(); 
        window.setTimeout(function() { $(self).val(original_q); $(self).blur().focus(); }, 1000);
        return false;
      }
      $(form).attr('action', formaction + '/' + q);
    });
  });

  // update orderline reference
  $('img.ref').each(function () {
    var self = this;
    var form = $(self).parents('form').get(0);
    var formaction = $(form).attr('action');
    $(self).click(function() {
      $('.product', $(self).parents('.full-right')).css({zIndex: 1});
      $(self).parents('.product').css({zIndex: 10});
      var currentvalue = $(self).attr('title');
      if (currentvalue==undefined) currentvalue = '';
      $(form).append('<span class="ref"><input class="ref" name="reference" value=""/><img class="accept" src="/style/icons/accept.png" alt="ok"/></span>');
      var inputspan = $('span.ref', form).get(0);
      var input = $('input.ref', form).get(0);
      $(input).val(currentvalue);
      $(input).focus();
      $(input).change(function() {
        $(form).submit();
        return false;
      });
      $(form).submit(function() {
        $(form).attr('action', formaction + '/' + $(input).val());
      });
      $(input).blur(function() {
        $(inputspan).remove();
        return false;
      });
      return false;
    });
  });

  // update orderline reference
  $('input[name=back-step1]').click(function () {
    window.location = '/'+language+'/basket/order/';
    return false;
  });

  // display mod delivery form 
  $('#mod-delivery-button').click(function() {
    $('#mod-delivery-button').css({'display':'none'});
    $('#mod-delivery-info').addClass('hidden');
    $('#mod-delivery-form').removeClass('hidden');
    return false;
  });

  // change text on step3-button based on payment method
  $('input[name=paymentmethod]').click(function() {
    $('input[name=step3]').val(stentor.txt('step3.'+$(this).val()));
  });

  $('input[name=back-step2]').click(function () {
    window.location = '/'+language+'/basket/order/address/';
    return false;
  });

  // results-per-page submit
  $('.pagination_pagesize select').change(function() { $(this).parents('form').submit(); });

  // lightbox
  $('a.lightbox').lightBox({
    overlayBgColor: '#f4f9ff',
    overlayOpacity: 0.8,
    imageLoading: '/style/lightbox-ico-loading.gif',
    imageBlank: '/style/lightbox-blank.gif',
    imageBtnClose: '/style/lightbox-btn-close.gif',
    imageBtnPrev: '/style/lightbox-btn-prev.gif',
    imageBtnNext: '/style/lightbox-btn-next.gif',
    imageBtnPrint: '/style/icons/print.png',
    txtPrint: 'Afdrukken'
  });
});

