
$(document).ready(function() {

  var language = stentor.getLanguage();

  $('.focus').focus();

  $('ul#rotator').innerfade({
    speed: 5000,
    timeout: 10000,
    type: 'sequence',
    containerheight: '147px'
    });

  $('#other-brands').each(function() {
    var self = this;
    $('select', self).change(function() {
      if (!this.value) return false;
      var url = '/' + language;
      switch ($('input[type=hidden]', self).val()) {
        case 'promo': url = this.value; break;
        case 'new': url += '/nieuwe-computer-accessoires/' + this.value; break;
        default: url += '/merken/' + this.value;
      }
      window.location = url;
    });
  });

  $('#other-groups').each(function() {
    var self = this;
    $('select', self).change(function() {
      if (!this.value) return false;
      window.location = '/' + language + '/computer-accessoires-printer-onderdelen/' + this.value;
    });
  });

  $('#other-searchoptions').each(function() {
    var self = this;
    $('select', self).change(function() {
      if (!this.value) return false;
      window.location = this.value;
    });
  });

  // snel inloggen mouseover & submit 
  $('#snel_inloggen input.submit').click(function() { 
     var form = $(this).parents('form');
     if (form.hasClass('active')) form.submit();
     else {
       form.addClass('active'); 
       $('#snel_inloggen input[name=name]').focus();
       return false;
     }
     return false; 
   });
  $('#snel_inloggen input[name=name]').focus(function() { this.select(); });
  $('#snel_inloggen input[name=password]').focus(function() { this.select(); });
  $('#snel_inloggen').each(function() {
    var self = this;
    $(self).submit(function() {
      $('p.msg', self).html('<img src="/style/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; 
    });
  });

  // snel zoeken submit button
  $('#quicksearch input[type=submit]').hover(function() { $(this).addClass('btn_zoek_over'); }, 
                                             function() { $(this).removeClass('btn_zoek_over'); }
                                             );
  $('#quicksearch input[type=submit]').click(function() { $(this).addClass('btn_zoek_over_down'); });

  // alle 'button's
  $('button.button').each(function() {
    var html = $(this).html();
    $(this).html('<div class="button">'+html+'</div>');
    $('div.button', this).prepend('<img class="button_links" src="/style/button_links.gif"/><img class="button_rechts" src="/style/button_rechts.gif"/>'); 
  });
  $('button').hover(function() { $(this).addClass('button_over'); }, 
                    function() { $(this).removeClass('button_over'); }
                    );
  $('button').click(function() { $(this).addClass('button_over_down'); });

  // knoppen rechts/rood/btn_klein_100
  $('.btn_rechts').hover(function() { $(this).addClass('btn_rechts_over'); }, 
                         function() { $(this).removeClass('btn_rechts_over'); }
                         );
  $('.btn_rood').hover(function() { $(this).addClass('btn_rood_over'); }, 
                       function() { $(this).removeClass('btn_rood_over'); }
                       );
  $('.btn_rood_groot').hover(function() { $(this).addClass('btn_rood_groot_over'); }, 
                             function() { $(this).removeClass('btn_rood_groot_over'); }
                             );
  $('.btn_klein_100').hover(function() { $(this).addClass('btn_klein_100_over'); }, 
                            function() { $(this).removeClass('btn_klein_100_over'); }
                            );

  // productgroup grid
  $('.grid_3_horizontal').hover(function() { $(this).addClass('grid_3_horizontal_over'); }, 
                                function() { $(this).removeClass('grid_3_horizontal_over'); }
                                );
  $('.grid_3_horizontal').click(function() { window.location = $('a', this).attr('href'); });

  // results-per-page submit
  $('.pagination-per-page select').change(function() { $(this).parents('form').submit(); });

  // faq toggle answers
  $('dt').click(function() { $(this).next().toggleClass('active'); });

  // 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 = $('button[name=submit]', self);
    submit_button.attr('disabled', 'disabled');
    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-inkt-cartridge/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-inkt-cartridge/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+'/printer-inkt-cartridge/select_cartridge/'+printer_brand.val()+'/'+printer_type.val()+'/'+printer_model.val()+'/');
        submit_button.removeClass('inactive');
        submit_button.removeAttr('disabled');
      }
    });
  });

  // read more...
  $('a[href$=#more]').click(function() { $(this).parents('.printer').toggleClass('active'); 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;
  });

  // toggle favorite
  $('form.togglefavorite').each(function() {
    var self = this;
    $(self).submit(function() { return false; });
    $('input', self).click(function() {
      var info = $('#info-basket-favorite');
      info.html('<img src="/style/ajax-loader.gif"/>');
      $.ajax({
        url: $(self).attr('action'),
        type: 'POST',
        data: {'returntype':'json'},
        dataType: "json",
        error: function() { info.html('??'); },
        success: function(data)
        {
          if (data['result']==1) {
            info.html(data['itemcount']); 
          }
          else {
            info.html('??'); 
          }
        }
      });
    });
  });

  // remove printer
  $('xxx.remove-printer').each(function() {
    var self = this;
    var form = $('form', self);
    $(form).submit(function() { 
      var info = $('#info-basket-printer');
      info.html('<img src="/style/ajax-loader.gif"/>');
      $.ajax({
        url: $(form).attr('action'),
        type: 'POST',
        data: {'returntype':'json'},
        dataType: "json",
        success: function(data)
        {
          if (data['result']==1) {
            $(self).remove();
            info.html(data['itemcount']); 
          }
          else {
            info.html('??'); 
          }
        }
      });
      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();
        $(quantity).select();
        return false;
      }
      var info = $('#info-basket-order');
      var infototal = $('#info-basket-order-total');
      info.html('<img src="/style/ajax-loader.gif"/>');
      infototal.html('<img src="/style/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() { info.html('??'); infototal.html('??'); $(quantity).val('???'); $(quantity).focus();$(quantity).select();},
        success: function(data)
        {
          if (data['result']==1) {
            info.html(data['articlecount']); 
            infototal.html(data['basket_subtotal']); 
            $(quantity).val('ok');
          }
          else {
            info.html('??'); 
            infototal.html('??'); 
            $(quantity).val('???');
          }
          $(quantity).focus();
          $(quantity).select();
          window.setTimeout(function() { $(quantity).val(initial_quantity); }, 1500);
          $('.loader', add_to_order_snippet).remove();
          $(submitbutton).removeClass('busy');
        }
      });
      return false; 
    });
  });

  // update orderline quantity
  $('input.q').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/trans_1x1.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() {
      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
  $('button[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() {
    $('button[name=step3]').val(stentor.txt('step3.'+$(this).val()));
    $('button[name=step3] div.button').html('<img class="button_links" src="/style/button_links.gif"/><img class="button_rechts" src="/style/button_rechts.gif"/>' + stentor.txt('step3.'+$(this).val()));
  });

  // submit twyp form
  $('.autosubmit').each(function() {
     $('input[type=submit]', this).click();
  });
  $('button[name=back-step2]').click(function () {
    window.location = '/'+language+'/basket/order/address/';
    return false;
  });

  // 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'
  });
});

