var jcc = new JCC();
$(document).ready(function() {
  setTimeout(jcc.init, 50);
});

var log = jcc.log;

function JCC() {
  var HOME;
  var sidebar = new JCC_SIDEBAR();
  this.sidebar = sidebar;
  
  this.init = init;
  function init() {
    HOME = $('#base_url').val();
    $(document.body).addClass('js');
    cssFix();
    //setDay();
    setDefault('input.hasDefault');
    setFormDefaults();
    setupNavBar();
	  setupPolicies();
    setupPrint();
    setupSearch();
    setupTextSize();
    sidebar.init();
  }
  
  this.log = log;
  function log(msg) {
    if (console && console.log) {
      console.log(msg);
    }
  }
  
  this.baseUrl = baseUrl;
  function baseUrl() {
    return HOME;
  }
  
  function cssFix() {  // implements CSS fixes
    $('table[align=left], img[align=left]').addClass('align-left');
    $('table[align=center], img[align=center]').addClass('align-center');
    $('table[align=right], img[align=right]').addClass('align-right');
  }
  
 /* function setDay() {  // sets current day according to the browser clock
    var now = new Date();
    var dayDom = $('#today .en');
    var en = now.format('dddd, mmmm dd, yyyy');
    if (dayDom.text() != en) {
      dayDom.text(en);
    }
  }*/
  
  this.setupAlternateStyles = setupAlternateStyles;
  function setupAlternateStyles(selector, childSelector, cls) {
    if (typeof cls == 'undefined') cls = 'alt';
    if (selector) {
      $(selector).find(childSelector + ':nth-child(2n)').addClass('alt');
    }
  }
  
  this.setDefault = setDefault;
  function setDefault(el, text, cls) {
    var useTitle = false;
    el = $(el);
    if (typeof cls == 'undefined') cls = 'default';
    if (typeof text == 'undefined') useTitle = true;
    el.each(function() {
      var $this = $(this);
      var dText
      if (useTitle) dText = $this.attr('title');
      else dText = text;
      $this.focus(function() {
        if ($this.hasClass(cls)) {
          $this.val('');
          $this.removeClass(cls);
        }
      }).blur(function() {
        if ($this.val() == '' || $this.val() == dText) {
          $this.val(dText);
          $this.addClass(cls);
        }
      });
      $this.blur();
    });
  }
  
  function setFormDefaults() {
    forms = $('form');
    forms.submit(function() {
      $(this).find('input.default').each(function() {
        $(this).val('');
      });
    });
  }
  
  function setupExternalLinks() {
    $("a[href^='http']")
  	  .not(":has(img)")
  	  .not("a[href^='http://localhost']")
  		.not("a[href^='http://www.localhost']")
  		.not("a[href^='http://www.jccpgh']")
  		.not("a[href^='http://jccpgh']")
  		.not("a[href^='http://memberlink.jccpgh']")
		  .not("a[href^='http://www.firemandev']")
  		.not("a[href^='http://firemandev']")
		  .not(".scroller a")
  	  .addClass("external-link")
  	  .attr({target: "_blank"});
  }
  
  this.setupGallery = setupGallery;
  function setupGallery(selector, data) {
    var container = $(selector);
    var images = container.find('img');
    var lastImage = images.eq(images.length - 1);
    var containerHeight;
    $(window).bind('load', function() {
      containerHeight = {
        original: container.height(),
        pullDown: lastImage.position().top + lastImage.height() + 10
      };
    });
    var photoCount;
    if (typeof data == 'undefined') data = selector;
    Galleria.loadTheme('/js/galleria/themes/lightbox/galleria.lightbox.js');
    container.galleria({
      data_config: function(img) {
        return {
          title: $(img).attr('title'),
          description: $(img).attr('alt')
        };
      },
      data_source: data,
      height: '95%',
      keep_source: true,
      popup_links: true,
      preload: 7,
      thumbnails: false
    });
    container.append('<a class="more-link" href="#">All ' + images.length + ' Photos</a>');
    container.find('a.more-link').click(function() {
      if (containerHeight) {
        if (container.hasClass('down')) {
          // roll up
          container.stop().animate({ height: containerHeight.original }, { duration: 500 });
          container.removeClass('down');
        } else {
          // pull down
          container.stop().animate({ height: containerHeight.pullDown }, { duration: 750 });
          container.addClass('down');
        }
      }
      return false;
    });
  }
  
  function setupNavBar() {
    $('#nav li').each(function() {
      if ($(this).find('ul').length) {
        $(this).hover(
          function() {
            $(this).addClass('hover');
          },
          function() {
            $(this).removeClass('hover');
          }
        );
      }
    });
  }
  
  function setupPrint() {
    $('#print-page').click(function() {
      window.print();
      return false;
    });
  }
  
  function setupSearch() {
    var search_timer;
    $('#search_term').keyup(function() {
      if (search_timer) clearTimeout(search_timer);
      search_timer = setTimeout(function() {
        $.post('/search/ajax_get_program', { term: $('#search_term').val() }, function(data, textStatus, XMLHttpRequest) {
          if (data != '') {
            $('#ajax_results').html(data).show();
          }
        });
      }, 200);
    });
    $(document).click(function() {
      $('#ajax_results').hide();
    });
    $('#ajax_results, #search').click(function(event) { event.stopPropagation(); });
    $('#search').mouseover(function() {
      if ($('#search_term').val() != '' && $('#ajax_results').html() != '') $('#ajax_results').show();
    });
  }
  
  function setupTextSize() {
    var body = $(document.body);
    var textSize = $('#text-size');
    var cookieOptions = { path: '/', expires: 7 };
    //var cookie = $.cookie('textSize');
    var defaultSize = /([\d]*)px/gi.exec(body.css('font-size'))[1];
    var size = {
      small: (Number(defaultSize) - 2) + 'px',
      medium: defaultSize + 'px',
      large: (Number(defaultSize) + 2) + 'px'
    };
    textSize.find('.small').click(function() {
      body.css('font-size', size.small);
      $.cookie('textSize', 'small', cookieOptions);
      return false;
    });
    textSize.find('.medium').click(function() {
      body.css('font-size', size.medium);
      $.cookie('textSize', 'medium', cookieOptions);
      return false;
    });
    textSize.find('.large').click(function() {
      body.css('font-size', size.large);
      $.cookie('textSize', 'large', cookieOptions);
      return false;
    });
    //if (cookie) textSize.find('.' + cookie).click();
  }
  
	function setupPolicies() {
		$('#policies').hide();
		$('#policies_title').click(function(){
			$('#policies').toggle();
			return false;
		});
	}
  
}


function JCC_SIDEBAR() {
  var exploreBlock;
  var sidebarContent;
  var menu;
  var menuItems;
  var inTransition = false;
  var timer = null;
  var timerOpen = null;
  
  this.init = init;
  function init() {
    exploreBlock = $('#page-sidebar > div.explore-block');
    sidebarContent = $('#page-sidebar > div.sidebar-content');
    menu = exploreBlock.find('ul.explore');
    menu.find('> li > a').click(function() {  // don't activate clicks on main explore bars
      return false;
    });
    menuItems = menu.find('> li');
    menuItems.each(function() {
      var item = $(this);
      var submenu = item.find('ul');
      if (submenu.length) {
        item.hover(
          function() {
            item.addClass('expanded');
            submenu.fadeIn();
          },
          function() {
            item.removeClass('expanded');
            submenu.fadeOut();
          }
        );
      }
    });
  }
  
  function collapseItem(menu, item) {
    menu.slideUp(300);
    item.removeClass('expanded');
  }
  
  function expandItem(menu, item) {
    if (!exploreBlock.hasClass('expanded')) {
      sidebarContent.stop().animate({opacity: 0.2}, 500);
      exploreBlock.addClass('expanded');
    }
    menu.slideDown(500);
    item.addClass('expanded');
  }	
    
}



