// All the JS that was in the header is now here
// Everything that has to be setup once, or on every page load goes in here

var size_cache = {};

// Pull via serverside
var logged_in = false;

// One time page init for very first page load
$(document).ready(function(){

  // QUOTE MANAGER INITS -------------------------

  // Add Toast DOM
  $('body').append('<div id="qm-toast"><h2>Toast Title</h2><div>Toast message</div></div>');
  $toast = $('#qm-toast');
  $qm_total = $('#qm-total');
  
  qm_update_tally();
  qm_render_load_list();

  page_load_init();
});

// Continuous page content ajax loads (also run on first load)
function page_load_init(){
  var path = $.address.path();
  if (path.slice(-1) == '/') path = path.slice(0,-1); // Clean out trailing slash
  var segments = path.split('/');

  // Ajaxify content links
  $('#content a:not(.fancybox)').each(function(){
    if ($(this).attr('href').indexOf('/#') < 0) {
      $(this).attr('href', $(this).attr('href').replace(/http:\/\/atlasuhv.com\//i, '#/'));
    }
  });

  $('body').attr('class', (segments[1] ? 'page-'+segments[1] : ''));


  // Product image popup
    $("a.fancybox:not(.processed)").fancybox();

  // Slideshow
  $("div#flashbox:not(.processed)").slideshow({
    time: 5000,
    height: '280px',
    width: '682px',
    desc_container: '#featured',
    readmore_text: 'Read More...'
  }).addClass('processed');

  // Product tabs---------------------------------------------

    // Inititalize tabs to reformat them for fragement loading ajax
    $('#product-tabs:not(.processed) ul li a').each(function(index){
      var href = $(this).attr('href');
      var size = '';
      if ($.address.parameter('size') && index > 0){
        size = '/' + $.address.parameter('size');
      }
      $(this).data('path', href + size);
      $(this).data('root', href);
      var tabname = 'tab-' + href.split('/').pop();
      $(this).addClass('atlas-ajax').attr('href', '#'+tabname);
      $('#product-tabs').append('<div id="'+tabname+'"></div>');
      if (index == 0) $(this).addClass('intro-tab');
    });

    // Actually initialize the tabs
    $('#product-tabs:not(.processed)').tabs({
      selected: $.address.parameter('tabidx'),
      show: function(event, ui) {
        var url = $(ui.tab).data('path');
        if(url) {
          load_product_content(url + '/*');
        }
        // Prevent full page load on sub page loads
        address_skip_load = true;
        $.address.parameter('tabidx', ui.index);
      }
    }).addClass('processed');

  // Product size selector ----------------------------------------
  // Only run if an unprocessed size slider exists
  if ($('#product-slider:not(.processed)').length){
    //Pull data from given part type
    path = path.split('/').pop();
    
    var settings = {
      scale_labels: path != 'chambers' ? ['Inch', 'Millimeter'] : ['', ''],
      select_msg: path != 'chambers' ? 'Select Part Size' : 'Select Chamber Type',
      table_class: path != 'chambers' ? '' : 'chamber_selector'
    }

    if (segments[2] == 'product-list'){
      // We're on a product-listing page, check the cache or go attempt to get the json
      if (size_cache[path] != undefined){
        settings['sizes'] = size_cache[path];
        $('#product-slider').sizeselect(settings).addClass('processed');
      }else{
        $.getJSON('/products/size-json/'+path, function(data){
          // If something real is returned, assign it to the json cache and move on
          if (data){
            size_cache[path] = data;
            settings['sizes'] = size_cache[path];
            $('#product-slider').sizeselect(settings).addClass('processed');
          }
        });
      }
    }
  }

  // Product details slide out
  $('input.productToggleSprite').click(function(){
    var num = $(this).attr('class').split(' ')[1].split('-').pop();
    $(this).toggleClass('product-active');
    $('.product-details-extended-' + num).slideToggle('slow');
  });

  $('input.relatedToggleSprite').click(function(){
    var num = $(this).attr('class').split(' ')[1].split('-').pop();
    $(this).toggleClass('related-active');
    $('.related-products-extended-' + num).slideToggle('slow');
  });

  // Product pagination links ajaxify
  $('div.paginate:not(.processed) a').click(function(){
    load_product_content($(this).attr('href'));
    return false;
  });
  $('div.paginate:not(.processed)').addClass('processed');


  // Check / uncheck all
  $('#product-list-header input:not(.processed)').click(function(){
    var checked = $('#product-list-header input').is(':checked');
    $('.product-checkbox input:visible').each(function(){
      $(this).attr('checked', checked);
    });
  }).addClass('processed');


  // Tab Selector
  $('#nav-tabs li a').each(function(){
    if (path == $(this).attr('href')) {$(this).click();}
  })

  // AJAX Binds for Search
  $('#searchform').submit(function(){
     $.post(
       '/',
       $("#searchform").serialize(),
       function(data){
         $('#search-results').html($('#column2', data).html());
         $('#search-results a').each(function(){
           var h = $(this).attr('href');
           h = h.replace("http://"+h.split('/', 3)[2], '/#');
           $(this).attr('href', h);
         });
       }
     );
     return false;
  })

  // QUOTE MANAGER INITS--------

  // Build out quote page when there
  if (path == '/quote') {qm_build_page();}

  // Bind Quote links for products
  $('a.product-quote:not(.processed)').click(qm_quote_link_click).addClass('processed');


  $('select.product-actions:not(.processed)').change(function(){
    if ($(this).val() == 'batch-quote'){qm_quote_batch_add();}

    $(this).val(''); // Reset back to start
  }).addClass('.processed');
}
