/**
 * JS for the Conviva home page. 
 */
jQuery(document).ready(function(){ 
    
    var speed        = 12;   // speed of auto advance (seconds)
    var resume_at    = 45;  // pause before auto-advance after click (seconds)
    
    var slides       = jQuery('.vidSlide .node-front-page-slide');
    var thumbs       = jQuery('.vidThumb');
    
    // initialize active slide.
    jQuery(thumbs.get(0)).addClass('current');
    jQuery(slides.get(0)).removeClass('hidden').addClass('current');
    
    var active_slide = jQuery('.vidSlide .node-front-page-slide.current');
    var active_thumb = jQuery('.vidThumb.current');
    
    var block        = false;
    var pause        = null
    
    // Method that auto advances to the next slide. (Called via setInterval)
    //
    var advance = function() {
        var o = thumbs.index(active_thumb);
        var i = (o >= thumbs.length-1) ? 0 : o+1;
        jQuery(thumbs.get(i)).trigger('click', [true]);
    };
    
    var interval = setInterval(advance, speed * 1000);
    // 
    // slides.hide();
    // active_slide.show();

    // 
    // for each thumbnail, get it's index in the set, and show the 
    // corresponding slide that goes with it. Please note this REQUIRES 
    // that the slides and thumbs be in the same order in the DOM. 
    //
    thumbs.click(function(e, auto) {
        e.preventDefault();
        e.stopPropagation();
        // when true, we'll block on click events. Fixes some rouge timing
        // issues when double-clicking mid-fade. 
        //
        if (block) { return; }
        
        block = true;
        
        // when called via trigger(), we're passing a flag in on the auto 
        // param. If it's not there, it means the user clicked, so stop the
        // timer, and wait before advancing again. Also, check that we're 
        // not currenly paused from a previous click. 
        //
        if (typeof(auto) == 'undefined' && !pause) {
            clearInterval(interval);
            pause = setTimeout(function() {
                interval = setInterval(advance, speed * 1000);
                clearTimeout(pause);
                pause = null;
            }, resume_at * 1000)
        }
        
        // thumb
        //
        var thumb = jQuery(this);
        thumb.fadeOut(100, function(e) {
            active_thumb.removeClass('current');
            thumb.addClass('current');
            thumb.fadeIn(200);
            active_thumb = thumb;
        })
        
        // slide
        //
        active_slide.fadeOut(100, function(e) {
            active_slide.removeClass('current');
            active_slide = jQuery(slides.get(thumbs.index(thumb)));
            active_slide.fadeIn(500, function() {
                
                // this should be the last thing to happen, so stop the block
                //
                block = false;
            }).addClass('current');
        });
    });
    // 
    // // preload the "_on" thumbs...
    // //
    // var cache = [];
    // thumbs.each(function(i, e) {
    //     var img = jQuery('<img src="/sites/all/themes/conviva/images/vidTh_hm_' + (i + 1) + '_on.jpg">');
    //     cache.push(img)
    // });
});
;
(function ($) {

$(document).ready(function() {

  // Accepts a string; returns the string with regex metacharacters escaped. The returned string
  // can safely be used at any point within a regex to match the provided literal string. Escaped
  // characters are [ ] { } ( ) * + ? - . , \ ^ $ # and whitespace. The character | is excluded
  // in this function as it's used to separate the domains names.
  RegExp.escapeDomains = function(text) {
    return (text) ? text.replace(/[-[\]{}()*+?.,\\^$#\s]/g, "\\$&") : '';
  }

  // Attach onclick event to document only and catch clicks on all elements.
  $(document.body).click(function(event) {
    // Catch the closest surrounding link of a clicked element.
    $(event.target).closest("a,area").each(function() {

      var ga = Drupal.settings.googleanalytics;
      // Expression to check for absolute internal links.
      var isInternal = new RegExp("^(https?):\/\/" + window.location.host, "i");
      // Expression to check for special links like gotwo.module /go/* links.
      var isInternalSpecial = new RegExp("(\/go\/.*)$", "i");
      // Expression to check for download links.
      var isDownload = new RegExp("\\.(" + ga.trackDownloadExtensions + ")$", "i");
      // Expression to check for the sites cross domains.
      var isCrossDomain = new RegExp("^(https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal):\/\/.*(" + RegExp.escapeDomains(ga.trackCrossDomains) + ")", "i");

      // Is the clicked URL internal?
      if (isInternal.test(this.href)) {
        // Is download tracking activated and the file extension configured for download tracking?
        if (ga.trackDownload && isDownload.test(this.href)) {
          // Download link clicked.
          var extension = isDownload.exec(this.href);
          _gaq.push(["_trackEvent", "Downloads", extension[1].toUpperCase(), this.href.replace(isInternal, '')]);
        }
        else if (isInternalSpecial.test(this.href)) {
          // Keep the internal URL for Google Analytics website overlay intact.
          _gaq.push(["_trackPageview", this.href.replace(isInternal, '')]);
        }
      }
      else {
        if (ga.trackMailto && $(this).is("a[href^=mailto:],area[href^=mailto:]")) {
          // Mailto link clicked.
          _gaq.push(["_trackEvent", "Mails", "Click", this.href.substring(7)]);
        }
        else if (ga.trackOutbound && this.href) {
          if (ga.trackDomainMode == 2 && isCrossDomain.test(this.href)) {
            // Top-level cross domain clicked. document.location is handled by _link internally.
            _gaq.push(["_link", this.href]);
          }
          else if (ga.trackOutboundAsPageview) {
            // Track all external links as page views after URL cleanup.
            // Currently required, if click should be tracked as goal.
            _gaq.push(["_trackPageview", '/outbound/' + this.href.replace(/^(https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal):\/\//i, '').split('/').join('--')]);
          }
          else {
            // External link clicked.
            _gaq.push(["_trackEvent", "Outbound links", "Click", this.href]);
          }
        }
      }
    });
  });
});

})(jQuery);
;

