// UPDATED SEARCH

$(document).ready(function() {

  $('.flash').each(function() {
    var movie = $(this).attr('rel');
    $(this).flash({
      swf: movie,
      width: 940,
      height: 366,
      play: true
    });
  });
  function playFlash(movie) {  movie.flash(function() { this.Play(); } ); }
  

  $("#chained").scrollable({
    circular: true,
    mousewheel: true,   
    onSeek: function() {
      var index = this.getIndex();
      var slideFlash = this.getItems().eq(index).find('.flash');
         playFlash(slideFlash);
    }
  }).navigator().autoscroll({
    interval: 19000
  });
  
  $('a[rel="none"]').addClass('nolink').click(function(e) { e.preventDefault(); });

  $('.megaNavProducts').click(function(event){
       event.preventDefault();
   });

    // autcomplete begin
    var input = $('input#searchBox'); // get the input field
  
    // This recursive function opens the full list before even typing
    // If you don't want this, omit this part
    input.one('click', function () {
        $(this).click().select();
        $(this).one('click', arguments.callee);
    });
    input.click(function () {
        if (input.val() == 'Search by Name') {
            input.val('');
        }
        if (input.val() == 'Search All') {
            input.val('');
        }
    });
    input.blur(function () {
        if (input.val() == '') {
            if ($('#nameOnly').attr('checked') == true) {
                input.val('Search by Name');
            }
            if ($('#nameOnly').attr('checked') == false) {
                input.val('Search All');
            }
        }
    });
    // jQuery autocomplete with a given XML file
  //d  if ($('#nameOnly').attr('checked') == true) {
        input.autocomplete('/ProductSearchAutoComplete', {
            delay: 10,
            matchSubset: 0,
            matchContains: 1,
            minChars: 0,
            parse: parseXML,
            // parses using the function defined below
            formatItem: formatItem,
            // formats using the function defined below
            formatResult: formatResult // formats using the function defined below
        }).result(function (event, item) {
            window.location.href = item.value;
        });
  //d }
  
    // This function parses the XML and returns an array
    function parseXML(xml) {
        var results = []; // define 'results' array
        $(xml).find('item').each(function () { // for each 'item' node
            var text = $.trim($(this).find('text').text()); // save value of child 'text' node
            var value = $.trim($(this).find('value').text()); // save value of child 'value' node
            results[results.length] = {
                'data': {
                    text: text,
                    value: value
                },
                'result': text,
                'value': value
            }; // format array
        });
        return results; // return 'results' array
    };
    function formatItem(data) {
        return data.text; // grabs 'data' from array
    };

    function formatResult(data) {
        return data.text; // grabs 'data' from array
    };
    if ($('#nameOnly').attr('checked') == false) {
        if (input.val() == 'Search by Name') {
            input.val('Search All');
        }
    }
    $('#nameOnly').change(function () {
        if ($('#nameOnly').attr('checked') == false) {
            if (input.val() == 'Search by Name') {
                input.val('Search All');
            }
            input.unbind('click');
            input.click(function () {
                if (input.val() == 'Search by Name') {
                    input.val('');
                }
                if (input.val() == 'Search All') {
                    input.val('');
                }
            });
        } else {
            if (input.val() == 'Search All') {
                input.val('Search by Name');
            }
            input.one('click', function () {
                if (input.val() == 'Search by Name') {
                    input.val('');
                }
                if (input.val() == 'Search All') {
                    input.val('');
                }
                $(this).click().select();
                $(this).one('click', arguments.callee);
            });
            input.autocomplete('/ProductSearchAutoComplete', {
                delay: 10,
                matchSubset: 0,
                matchContains: 1,
                minChars: 0,
                parse: parseXML,
                // parses using the function defined below
                formatItem: formatItem,
                // formats using the function defined below
                formatResult: formatResult // formats using the function defined below
            }).result(function (event, item) {
                window.location.href = item.value;
            });
        }
    });
  
 //   autcomplete end / modal behavior begin
   $("a[rel='video']").overlay({
        top: 10,
        target: '#modalVideo',
        onBeforeLoad: function() {
            $('html, body').animate({scrollTop:0}, 'slow');
            var wrap = this.getOverlay().find(".contentWrap"); // grab wrapper element inside content
            wrap.load(this.getTrigger().attr("href")); // load the page specified in the trigger
        },
        onBeforeClose: function() {
            var wrap = this.getOverlay().find(".contentWrap"); // grab wrapper element inside content
            wrap.html(''); // clear the div
        }
    });
     $("form[rel='video'] > input").overlay({
        top: 10,
        target: '#modalVideo',
        onBeforeLoad: function() {
            $('html, body').animate({scrollTop:0}, 'slow');
            var wrap = this.getOverlay().find(".contentWrap"); // grab wrapper element inside content
            wrap.load(this.getTrigger().closest("form").attr("action")); // load the page specified in the trigger
        },
        onBeforeClose: function() {
            var wrap = this.getOverlay().find(".contentWrap"); // grab wrapper element inside content
            wrap.html(''); // clear the div
        }
    });
    // youtube (iframe) modal - link
  $('a[rel="youtube"]').overlay({
    mask: { opacity: 0.9 },
    target: '#modalVideo',
    onBeforeLoad: function () {
      var extPageLoc = this.getTrigger().attr('href');
      var wrap = this.getOverlay().find(".contentWrap"); // grab wrapper element inside content
      wrap.append('<iframe height="450" width="800" frameborder="0" src="'+extPageLoc+'"></iframe>').closest('.modal').addClass('youtube');
    },
    onClose: function() {
      var wrap = this.getOverlay().find(".contentWrap"); // grab wrapper element inside content
      wrap.html('').closest('.modal').removeClass('youtube'); // clear the div
    }
  });
    $("a[rel='external']").overlay({
        target: '#modalExternal',
        onBeforeLoad: function() {
            var modalDiv = this.getOverlay();
            var wrap = modalDiv.find(".contentWrap"); // grab wrapper element inside content
            var originalContent = wrap.html();
            modalDiv.append('<div class="hidden">'+originalContent+'</div>');
            wrap.load(this.getTrigger().attr("href")); // load the page specified in the trigger
        },
        onBeforeClose: function() {
            var modalDiv = this.getOverlay();
            var wrap = modalDiv.find(".contentWrap"); // grab wrapper element inside content
            var originalContent = modalDiv.find('.hidden').html();
            wrap.html(originalContent); // replace
            modalDiv.find('.hidden').remove();
        }
    });
    $("form[rel='external'] > input").overlay({
        target: '#modalExternal',
        onBeforeLoad: function() {
            var modalDiv = this.getOverlay();
            var wrap = modalDiv.find(".contentWrap"); // grab wrapper element inside content
            var originalContent = wrap.html();
            modalDiv.append('<div class="hidden">'+originalContent+'</div>');
            wrap.load(this.getTrigger().closest("form").attr("action")); // load the page specified in the trigger
        },
        onBeforeClose: function() {
            var modalDiv = this.getOverlay();
            var wrap = modalDiv.find(".contentWrap"); // grab wrapper element inside content
            var originalContent = modalDiv.find('.hidden').html();
            modalDiv.find('.hidden').remove();
            modalDiv.removeAttr("style");
            wrap.html(originalContent); // replace
        }
    });
       $("form[rel='enewsletter'] > input").overlay({
        top: 10,
        target: '#modalExternal',
        onBeforeLoad: function() {
            var modalDiv = this.getOverlay();
            var wrap = modalDiv.find(".contentWrap"); // grab wrapper element inside content
            var originalContent = wrap.html();
            modalDiv.append('<div class="hidden">'+originalContent+'</div>');
            wrap.load(this.getTrigger().closest("form").attr("action")); // load the page specified in the trigger
            modalDiv.addClass('modalNewsletter');
        },
        onBeforeClose: function() {
            var modalDiv = this.getOverlay();
            var wrap = modalDiv.find(".contentWrap"); // grab wrapper element inside content
            var originalContent = modalDiv.find('.hidden').html();
            wrap.html(originalContent); // clear the div
            modalDiv.find('.hidden').remove();
            modalDiv.removeClass('modalNewsletter');
            modalDiv.removeAttr("style");
        }
    });
    $("input[rel]").overlay({ // will override form rel=external action
        target: $(this).attr("rel")
    });
  
    // modal behavior end
  
  // swatches begin

    $(".productLine .productSwatches li a[rel]").click(function(event){
    var containerDiv = $(this).closest("div");
    var vcItemID = containerDiv.attr("title");
    var currentURL = containerDiv.find("a:first").attr("href").replace(/\?.*/, ""); // get URL then remove query string
    var lotID = $(this).attr("href").replace(/^.(\s+)?/, ""); // remove the '#'
    $.ajax({
       url: '/AjaxRequest/getimagebylotid?vcItemID='+vcItemID+'&lotID='+lotID+'&type=thumb',
       success: function(data) {
         $('#product'+vcItemID+' .productImageContainer img').attr('src', data);
         $('#product'+vcItemID+' a:first').attr('href',currentURL+'?lotID='+lotID);
         $('#product'+vcItemID+' h4 a').attr('href',currentURL+'?lotID='+lotID);
       }
    });
    event.preventDefault();
   });
  
  $(".productViewer .productSwatches li a[rel]").click(function(event){
    var vcItemID = $(this).attr("rel");
    var lotID = $(this).attr("href").replace(/^.(\s+)?/, ""); // remove the '#'
    $.ajax({
       url: '/AjaxRequest/getimagebylotid?vcItemID='+vcItemID+'&lotID='+lotID+'&type=regularview',
       success: function(data) {
         $('.productImageContainer img').attr('src', data);
       }
    });
    event.preventDefault();
   });
 
  
  // distributor tools slider
  $('#dttcTabs').tabs('#dttcPanes > div');
  $('#dttcTabs li').click(function() {
    $('#dttcP-marketing').data('scrollable').seekTo(0); // reset marketing slider
  });
  
  $('#dttcP-marketing').scrollable({items:'#dttcP-marketing-slider', speed:0});
  
  $('a[rel="slider"]').click(function(e) {
      e.preventDefault();
      var theSlide = $('#mkts-'+ $(this).attr('href')).index();
      $('#dttcTabs').data('tabs').click(1);
      $('#dttcP-marketing').data('scrollable').seekTo(theSlide);
  });
  $('a[rel="tab"]').click(function(e) {
      e.preventDefault();
      var theTab = $('#dttcT-'+ $(this).attr('href')).index();
      $('#dttcTabs').data('tabs').click(theTab);
  });
  
   $('#dt-connectSlider').scrollable({ vertical:false,  speed: 1000, next:'#dt-connectSlider-next', prev:'#dt-connectSlider-prev' });
   
   $('#dt-cSlider').scrollable({ vertical:false,  speed: 1000, next:'#dt-cSlider-next', prev:'#dt-cSlider-prev' });
  

 
  
  // tooltips
  
  $(".productLine .productSwatches img[title]").tooltip({ position: "top right", offset: [0,-15] });
  
  $(".productViewer .productAttributes img[title]").tooltip({ tipClass: "tooltipIcon", position: "top right",
      offset: [-2,-10]  });
  
  $(".productViewer .productSwatches img[title]").tooltip({ position: "top right", offset: [0,-20] });
  
  /* var scrollerTop = $('.categoryMenu').offset().top - parseFloat($('.categoryMenu').css('marginTop').replace(/auto/, 0));
  $(window).scroll(function (event) {
    var scrollerY = $(this).scrollTop();
    if (scrollerY >= scrollerTop) {     // whether that's below the form
      // if so, add the fixed class
      $('.categoryMenu').addClass('fixed');
    } else {
      // otherwise remove it
      $('.categoryMenu').removeClass('fixed');
    }
  }); */
  
   $contentWrap = $('#modalExternal .contentWrap');
  $loader = $('#modalExternal .hidden');
  
  function modalSlideTo(loc) {
     $contentWrap.fadeOut(500, function() {
        $contentWrap.attr('style', 'position:relative;left:50000px;');
          $contentWrap.load(loc, function(data) {
            $contentWrap.attr('style', 'position:relative;left:0px;').fadeIn(500);
        });
      });
  }
    
    //modal slider behavior
    $('.modal a[rel="slider"]').live('click', function(e) {
      e.preventDefault();
      var thisLoc = $(this).attr('href');
    modalSlideTo(thisLoc);
    });
    
    $('.modal .close').live('click', function(e) {
      e.preventDefault();
      $(this).closest('.modal').data('original').trigger.data('overlay').close();
      
    });
       
    // modal form button
    $('.async .btn').live('click', function(e) {
      e.preventDefault();
      $(this).closest('.async').trigger('submit');
    });
    
    // modal form submit
    $('.async').live('submit', function(e) {
      e.preventDefault();
      var completeUrl = $(this).attr('action');
      var formGUID = $(this).attr('rel');
      var form = $(this);
      var formAjaxURL = '/base/submitContourForm/CreateRecord.aspx?formGuid=' + formGUID + '&' + form.serialize();
    $.getJSON(formAjaxURL, function(data) {
      if (data.success === 'true') {
        modalSlideTo(completeUrl);
      } else {
        if (data.errors) {
          // create an instance of the form validator on the fly to handle server-side errors
          form.validator({position: 'top center', offset: [-20, 0], singleError: true,
            onFail: function(e, errors) {
              var $field = errors[0].input;
              var message = errors[0].messages[0];
              form.find('input, select, textarea').not($field).closest('div').removeClass('validationerror');
              $field.closest('div').addClass('validationerror').find('.errormsg').html(message);
            }
          });
          // parse umbraco.contour (server) json into jquery.tools.validator (client) json
          var toInvalidate = '{';
          $.each(data.errors, function (a, b) {
            $.each(b, function (c, d) {
              if (c == 'field') { toInvalidate += '"' + d + '":'; }
              if (c == 'errorMessage') { toInvalidate += '"' + d + '",'; }
            });
          });
          toInvalidate = $.parseJSON(toInvalidate.substring(0, toInvalidate.length - 1) + '}');
          form.data('validator').invalidate(toInvalidate).destroy();
        } else {
          alert('Form error.');
        }
      }
    });
    });


});
jQuery(function(){ // megaNav
    jQuery("ul.sf-menu").superfish({
        delay: 1000,
        autoArrows: false, // disable generation of arrow mark-up
        dropShadows: false // disable drop shadow
    });
});
function clearText(thefield) { // remove default text
    if (thefield.defaultValue == thefield.value)
    thefield.value = ""
}
