﻿//CVS:       $Id: main.js,v 1.4 2011/10/11 23:11:40 cvsdevel Exp $
//Title:     main.js
//Version:   1.00
//Copyright: Copyright (c) 2011
//Author:    Joe Simper (joe@rhinointernet.com)
//Company:   Rhino Internet

/**
 * Javascript library for the Desert Caballeros Western Museum website.
 *
 * <p>
 * <b>Changelog:</b><pre>
 *  1.00   JS    2011/09/20   created.
 * </pre>
 *
 * @author  JS
 * @version 1.00
 */

/**
 * Fixing Internet Explorer:
 */
if (typeof window.console == 'undefined') {
   window.console = { 'log': function() { } };
}
 
// Allow other JavaScript libraries to use $.
jQuery.noConflict();

/* jQuery dependent code encapsulation
   ------------------------------------------------------------------------- */
(function($){
   $(document).ready(function(){
      // Set all <a>s with the attribute `rel="external"` to open in new 
      // windows.   
      $('a[rel=external]').attr('target', '_blank');

      tooltip.init();
      login.init();
      products.init();
      calendar.init();
      gallery.init();
      form.init();
      homepage.init();
   });
   
   var tooltip = {
      init: function() {

         $('#direction-open').click(function() {
            $('#direction-dialog:hidden').show('slow');
            return false;
         });

         $('#ticket-open').click(function() {
            $('#ticket-dialog:hidden').show('slow');
            return false;
         });  
         
         $('.tooltip').each(function() {
            $(this).append('<a class="close-button" href="#">Close</a>');

            $('.close-button').click(function() {
               $(this).parent().hide('slow');
               return false;
            });
            
         });
      }
   };

   var login = {
      init: function() {
         $('.returning-customers').click(function() {
            $('.login-panel').show();
            $('.register-panel').hide();

            $('.returning-customers').parent().addClass('active');
            $('.new-customers').parent().removeClass('active');
            return false;
         });

         $('.new-customers').click(function() {
            $('.login-panel').hide();
            $('.register-panel').show();

            $('.returning-customers').parent().removeClass('active');
            $('.new-customers').parent().addClass('active');
            return false;
         });
      }
   };

   var products = {
      init: function() {
         $('.image-thumb').fancybox();
         $('.paging .current').click(function() {
            return false;
         });
      }
   };

   var calendar = {
      init: function() {
         var _this = this;
         var url = document.location.toString();
         if (url.match('#')) {
            var anchor = url.split('#')[1];
            setTimeout(function() {
               _this.flashListItem($('.' + anchor));
            }, 500);
         }

         $('.events .date, .events .event-title').click(function() {
            _this.flashListItem($(this).parents('li'));
         });
      },
      flashListItem: function(element) {
         element.fadeTo(500, 0.1, function() {
            $(this).fadeTo(1000, 1);
         });
      }
   };

   var gallery = {
      init: function() {
         $('.gallery').fancybox();
      }
   };

   var form = {
      init: function() {
         $('.membership input[type=text], .volunteer input[type=text]').each(function() {
            $(this).data('default', $(this).attr('title'));
         });
         $('.membership input[type=text], .volunteer input[type=text]').live('focus', function() {
            if ($(this).val() == $(this).data('default')
             && $(this).attr('readonly') != 'readonly') {
               $(this).val('');
            }
         }).live('blur', function() {
            if ($(this).val() == '') {
               $(this).val($(this).data('default'));
            }
         });
      }
   };
   
   var homepage = {
      wait: 8,   
         
      mainImages: null,
      sidebarImages: null,
      mainImageSelectedItem: 0,
      sidebarImageSelectedItem: 0,
      imageCount: 0,
      setintervalObject: null,
      
      selectMainImage: function() {
         homepage.mainImages.each(function(i) {
            if (i == homepage.mainImageSelectedItem) {
               $(this).show();
            } else {
               $(this).hide();
            }
         });
      },
      
      selectSidebarImage: function() {
         homepage.sidebarImages.each(function(index) {
            if ((index >= homepage.sidebarImageSelectedItem) && (index <= (homepage.sidebarImageSelectedItem + 2))) {
               $(this).show();
            } else {
               $(this).hide();
            }
         });            
      },
      
      timerHandler: function() {
         homepage.mainImageSelectedItem = (homepage.mainImageSelectedItem + 1) % homepage.imageCount;
         homepage.selectMainImage();
         
         if (homepage.mainImageSelectedItem == 0) {
            homepage.sidebarImageSelectedItem = 0;
         } else if ((homepage.mainImageSelectedItem + 2) < homepage.imageCount) {
            homepage.sidebarImageSelectedItem++;
         }
         homepage.selectSidebarImage();
      },
         
      init: function() {
         
         // Init
         homepage.mainImages = $('body.home div.stage');
         homepage.sidebarImages = $('body.home ul.thumbs li');
         homepage.imageCount = homepage.sidebarImages.size();
         
         // Hide all others.
         homepage.selectMainImage();
         homepage.selectSidebarImage();
         
         homepage.setintervalObject = setInterval(homepage.timerHandler, (homepage.wait * 1000));
         
         // Create handler for up and down clicks
         $('body.home div.arrows > div').click(function(event) {
            event.preventDefault();
            if ($(this).hasClass('down') == true) {
               if ((homepage.sidebarImageSelectedItem + 3) < homepage.imageCount) {
                  homepage.sidebarImageSelectedItem++;
               }
            } else {
               if (homepage.sidebarImageSelectedItem > 0) {
                  homepage.sidebarImageSelectedItem--;
               }
            }
            homepage.selectSidebarImage();
         });
         
         // Create handler for image selection
         homepage.sidebarImages.find('a').click(function(event) {
            event.preventDefault();
            if (homepage.setintervalObject != null) {
               clearInterval(homepage.setintervalObject);
               homepage.setintervalObject = null;
            }
            homepage.mainImageSelectedItem = homepage.sidebarImages.index($(this).parent());
            homepage.selectMainImage();
         });
      }      
   };

})(jQuery);
