$(document).ready(function() {
  initFavoriteLinks();
  initToggleDescriptions();
  //initSaveSearchCookie();
  initTabs();
});

// init tabs
function initTabs() {
  jQuery('ul.tabset').jqueryTabs({
    addToParent:true,
    holdHeight:false,
    activeClass:'active',
    tabLinks:'a.tab',
    fadeSpeed:0,
    event:'click'
  });
}

// jquery tabs plugin
jQuery.fn.jqueryTabs = function(_options){
  // default options
  var _options = jQuery.extend({
    addToParent:false,
    holdHeight:false,
    activeClass:'active',
    tabLinks:'a.tab',
    fadeSpeed:300,
    event:'click'
  },_options);

  return this.each(function(){
    var _holder = jQuery(this);
    var _fadeSpeed = _options.fadeSpeed;
    var _activeClass = _options.activeClass;
    var _addToParent = _options.addToParent;
    var _holdHeight = _options.holdHeight;
    var _tabLinks = jQuery(_options.tabLinks, _holder);
    var _tabset = (_addToParent ? _tabLinks.parent() : _tabLinks);
    var _event = _options.event;
    var _animating = false;

    // tabs init
    _tabLinks.each(function(){
      var _tmpLink = jQuery(this);
      var _tmpTab = jQuery(_tmpLink.attr('href'));
      var _classItem = (_addToParent ? _tmpLink.parent() : _tmpLink);
      if(_tmpTab.length) {
        if(_classItem.hasClass(_activeClass)) _tmpTab.show();
        else _tmpTab.hide();
      }
    });

    // tab switcher
    function switchTab(_switcher) {
      if(!_animating) {
        var _link = jQuery(_switcher);
        var _newItem = (_addToParent ? _link.parent() : _link);
        var _newTab = jQuery(_link.attr('href'));
        if(_newItem.hasClass(_activeClass)) return;

        var _oldItem = jQuery(_addToParent ? _tabset : _tabLinks).filter('.'+_activeClass);
        var _oldTab = jQuery(jQuery(_addToParent ? _oldItem.children('a') : _oldItem).attr('href'));
        if(_newTab.length) {
          _animating = true;

          if(_oldItem.length) {            
            _newItem.addClass(_activeClass);
            _oldItem.removeClass(_activeClass);

            var _parent = _oldTab.parent();
            if(_holdHeight) _parent.css({height:_parent.height()});

            _oldTab.fadeOut(_fadeSpeed,function(){
              _newTab.fadeIn(_fadeSpeed,function(){
                _animating = false;
              });
              if(_holdHeight) _parent.css({height:'auto'});
            });
          } else {
            _newItem.addClass(_activeClass);
            _newTab.fadeIn(_fadeSpeed,function(){
              _animating = false;
            });
          }
        }
      }
    }

    // control
    _tabLinks.each(function(){
      jQuery(this).bind(_event,function(){
        switchTab(this);
        return false;
      });
    });
  });
}

function initFavoriteLinks() {
  $('.favorite').each(function() {
    var lLink = $(this);
    var lTheaterID = lLink.attr('rel');
    
    lLink.click(function() {
      if (lLink.find('.favorite-img-on').length > 0)
        sendRemoveFavTheater(lTheaterID, theaterRemoved, null);
      else
        sendAddFavTheater(lTheaterID, theaterAdded, null);
    });
  });
}


function theaterAdded(vResponse) {
  $('.favorite[rel=' + vResponse + ']').each(function() {
    var lHolder = $(this);
    var lLink = lHolder.find('.with-tooltip').first();
    var lImg = lLink.find('img').first();
      
    lLink.attr('_f', false);
    lLink.attr('title', 'Remove Theatre');
    lImg.removeClass('favorite-img-off');
    lImg.addClass('favorite-img-on');
    lImg.attr('src', '/images/favstar_on.png');
    
    initTooltips(lHolder);
  });
}


function theaterRemoved(vResponse) {
  $('.favorite[rel=' + vResponse + ']').each(function() {
    var lHolder = $(this);
    var lLink = lHolder.find('.with-tooltip').first();
    var lImg = lLink.find('img').first();
    
    lLink.attr('_f', false);
    lLink.attr('title', 'Add Theatre');
    lImg.removeClass('favorite-img-on');
    lImg.addClass('favorite-img-off');
    lImg.attr('src', '/images/favstar_off.png');
    
    initTooltips(lHolder);
  });
}

function initToggleDescriptions(){
  $('a.printTypeBack').click(function() {
    history.go(-1);
  });
  
  var queryString = getQuerystring('type');
  if (queryString.length > 0)
  {
    $('div.overview').css('display', 'none');
    $('#printTypeOuter').css('display', 'block');
    
    switch(queryString)
    {
      case '1': $('#xDLong').css('display', 'block'); break;
      case '2': $('#realD3DLong').css('display', 'block'); break;
      case '3': $('#cineArtsLong').css('display', 'block'); break;
      case '4': $('#nextGenLong').css('display', 'block'); break;
      case '5': $('#imaxLong').css('display', 'block'); break;
      case '6': $('#concertsEventsLong').css('display', 'block'); break;        
    }
  }
  else
  {
    $('div.overview').css('display', 'block');
    $('#printTypeOuter').css('display', 'none');
  }
      
}

function getQuerystring(key, default_)
{
  if (default_==null) default_="";
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if(qs == null)
    return default_;
  else
    return qs[1];
}
/*
function initSaveSearchCookie() {
  $('#theatres_search').submit(function() {
    if ( ($('input[id=inp1]').val().trim()) && ($('input[id=inp1]').val().trim()!='Enter City, State, or ZIP code') ) {
      $.cookie("theatres_search", $('input[id=inp1]').val().trim(), { expires: 14 });
    }
  }); 
}
*/
