// page init
jQuery(function(){
  var _openers = jQuery('a.open-popup, input.open-popup');
  initPopups(_openers);
  initSearchArea();
  hoverForIE6(".search-holder", "hover");
  initMobileRedirect();
  initTooltips();
  initSignInClose();
  initSaveTheatresSearchCookie();  
});

function initMobileRedirect(){
  jQuery('span.mobile-text').find('a').click(function ()
   {
      $.cookie("sitetype", null);
   });
}
    
/*--- tooltips  ---*/
function initTooltips(h_hold){
  h_hold = h_hold || $('body');
  var _speed = 150; //in ms
  
  function _tooltip1(){
    if($('#tooltip').length == 0) $('body').append(' \
      <div id="tooltip"> \
        <div class="t"><div class="tl"></div><div class="tr"></div></div> \
        <div class="l"><div class="r"><div class="tooltip-inner"></div></div></div> \
        <div class="b"><div class="bl"></div><div class="br"></div></div> \
        <span class="arrow"></span> \
      </div> \
    ');
    var _tooltip = $('#tooltip');
    if(!_tooltip.data('flag')){
      _tooltip.hide().data('flag', true).data('text', _tooltip.find('div.tooltip-inner'));
      if(!jQuery.browser.msie) _tooltip.css('opacity', 0);
      else _tooltip.hide();
    }
    h_hold.find('.with-tooltip').each(function(){
      if(!this._f && this.title){
        this._f = true;
        var _text = this.title, _el = $(this).removeAttr('title');
        _el.mouseenter(function(){
          _tooltip.stop().data('text').html(_text);
          _tooltip.css({visibility:'hidden',width:''}).show().css({
            width: _tooltip.find('div.l').innerWidth()
          });
          _tooltip.css({visibility:''}).css({left: _el.offset().left+(_el.outerWidth() - _tooltip.outerWidth())/2, top: _el.offset().top - _tooltip.outerHeight()});
          if(!jQuery.browser.msie) _tooltip.stop().animate({opacity: 1}, _speed);
        }).mouseleave(function(){
          if(jQuery.browser.msie) _tooltip.hide();
          else _tooltip.stop().animate({opacity: 0}, _speed, function(){ $(this).hide();});
        });
      }
    });
  }
  function _tooltip2(){
    if($('#synopsis-tooltip').length == 0) $('body').append(' \
      <div id="synopsis-tooltip"> \
        <div class="t"></div> \
        <div class="c"></div> \
        <div class="b"></div> \
      </div> \
    ');
    var _tooltip = $('#synopsis-tooltip');
    if(!_tooltip.data('flag')){
      _tooltip.hide().data('flag', true).data('text', _tooltip.find('div.c'));
      if(!jQuery.browser.msie) _tooltip.css('opacity', 0);
      _tooltip.mouseleave(function(){
        if(this._t) clearTimeout(this._t);
        this._t = setTimeout(function(){
          if(jQuery.browser.msie) _tooltip.hide();
          else _tooltip.stop().animate({opacity:0}, _speed, function(){ $(this).hide();});
        }, 50);
      });
    }
    h_hold.find('.with-synopsis-tooltip').each(function(){
      if(!this._f){
        this._f = true;
        var _el = $(this);
        var _text = _el.next('.tooltip-cont:eq(0)');
        _el.mouseenter(function(){
          if(_tooltip.get(0)._t) clearTimeout(_tooltip.get(0)._t);
          _tooltip.stop().data('text').html(_text.html());
          _tooltip.show().css({left: _el.offset().left+(_el.outerWidth() - _tooltip.outerWidth())/2, top: _el.offset().top - _tooltip.outerHeight()});
          if(!jQuery.browser.msie) _tooltip.stop().animate({opacity: 1}, _speed);
        }).mouseleave(function(){
          if(_tooltip.get(0)._t) clearTimeout(_tooltip.get(0)._t);
          _tooltip.get(0)._t = setTimeout(function(){
            if(jQuery.browser.msie) _tooltip.hide();
            else _tooltip.stop().animate({opacity: 0}, _speed, function(){ $(this).hide();});
          }, 50);
        });
      }
    });
  }
  function _tooltip3(){
    if($('#tooltip2').length == 0) $('body').append(' \
      <div id="tooltip2"> \
        <div class="t"><div class="tl"></div><div class="tr"></div></div> \
        <div class="l"><div class="r"><div class="tooltip-inner"></div></div></div> \
        <div class="b"><div class="bl"></div><div class="br"></div></div> \
        <span class="arrow"></span> \
      </div> \
    ');
    var _tooltip = $('#tooltip2');
    if(!_tooltip.data('flag')){
      _tooltip.hide().data('flag', true).data('text', _tooltip.find('div.tooltip-inner'));
      if(!jQuery.browser.msie) _tooltip.css('opacity', 0);
      else _tooltip.hide();
    }
    h_hold.find('.with-tooltip-link').each(function(){
      var _t = null;
      if(!this._f && $(this).next('.hidden-info')){
        this._f = true;;
        var _el = $(this) , _text = $(this).next('.hidden-info').html();
        _el.mouseenter(function(){
          _tooltip.stop().data('text').html(_text);
          _tooltip.css({visibility:'hidden'}).show().css({
            width: _tooltip.find('div.l').innerWidth()
          });
          _tooltip.css({visibility:''}).css({left: _el.offset().left+(_el.outerWidth() - _tooltip.outerWidth())/2, top: _el.offset().top - _tooltip.outerHeight()});
          if(!jQuery.browser.msie) _tooltip.stop().animate({opacity: 1}, _speed);
        }).mouseleave(function(){
          _t = setTimeout(function(){
            if(jQuery.browser.msie) _tooltip.hide();
            else _tooltip.stop().animate({opacity: 0}, _speed, function(){ $(this).hide();});
          },50);
          _tooltip.mouseenter(function(){
            if(_t) clearTimeout(_t);
          }).mouseleave(function(){
            if(jQuery.browser.msie) _tooltip.hide();
            else _tooltip.stop().animate({opacity: 0}, _speed, function(){ $(this).hide();});
          });
        });
      }
    });
  }
  _tooltip1();
  _tooltip2();
  _tooltip3();
}

/*--- sign in functionality ---*/
function initSignIn(){
  var _hold = $('#sign-in-hold');
  if(_hold.length){
    _hold.find('div.title a.btn-sign').click(function(){
      _hold.height(_hold.height());
      if(jQuery.browser.msie){
        //_hold.find('div.title').hide();
        _request();
      }
      else{
        _hold.find('div.title').animate({opacity: 0}, 300, function(){
          //$(this).hide();
          _request();
        });
      }
      return false;
    });
  }
  
  function _request(){
    $.ajax({
      url: _hold.find('div.title a.btn-sign').attr('href'),
      success: function(_html){
        var _box = $(_html);
        
        _box.css('visibility', 'hidden').appendTo(_hold);
        _hold.animate({height: _box.outerHeight(true)}, 400, function(){ $(this).height('auto');});
        
        if(jQuery.browser.msie)
          _box.css('visibility', 'visible');
        else
          _box.css({opacity:0, visibility: 'visible'}).animate({opacity: 1}, 400);
        
        initTooltips(_box);
        
        $('.ads-holder').hide();
      }
    });
  }
}

// hover for IE
function hoverForIE6(_list, _class) {
  var _hoverClass = 'hover';
  if(_class) _hoverClass = _class;
  if (jQuery.browser.msie && jQuery.browser.version < 7) {
    jQuery(_list).hover(function() {
      jQuery(this).addClass(_hoverClass);
    }, function() {
      jQuery(this).removeClass(_hoverClass);
    });
  }
}

// search area init
function initSearchArea() {
  var _selectActive = 'select-active';
  $('div.search-holder').each(function(){
    var _holder = $(this);
    var _opener = _holder.find('.btn-search');
    var _drop = _holder.find('.drop').hide();

    // select toggle
    function toggleDrop(state) {
      if(state) {
        _holder.addClass(_selectActive);
        _drop.show();
      } else {
        _holder.removeClass(_selectActive);
        _drop.hide();
      }
    }

    _opener.click(function(){
      if(_holder.hasClass(_selectActive)) {
        toggleDrop(false);
      } else {
        toggleDrop(true);
      }
      return false;
    });
    $('body').click(function(e){
      if(!e) e = window.event;
      var _target = (e.target || e.srcElement);
      if (!$(_target).parents('div.search-holder').length) {toggleDrop(false)}
    });
    $(document).keydown(function (e) {
      if (!e) evt = window.event;
      if (e.keyCode == 27) {toggleDrop(false)}
    });
  });
}

// popups function
function initPopups(_openers) {
  var _zIndex = 1000;
  var _fadeSpeed = 350;
  var _faderOpacity = 0.65;
  var _faderBackground = '#000';
  var _faderId = 'lightbox-overlay';
  var _closeLink = 'a.btn-close, a.close, a.cancel';
  var _fader;
  var _lightbox = null;
  var _ajaxClass = 'ajax-load';
  //var _openers = jQuery('a.open-popup, input.open-popup');
  var _page = jQuery(document);
  var _minWidth = jQuery('body > div:eq(0)').outerWidth();
  var _scroll = false;

  // init popup fader
  _fader = jQuery('#'+_faderId);
  if(!_fader.length) {
    _fader = jQuery('<div />');
    _fader.attr('id',_faderId);
    jQuery('body').append(_fader);
  }
  _fader.css({
    opacity:_faderOpacity,
    backgroundColor:_faderBackground,
    position:'absolute',
    overflow:'hidden',
    display:'none',
    top:0,
    left:0,
    zIndex:_zIndex
  });

  // IE6 iframe fix
  if(jQuery.browser.msie && jQuery.browser.version < 7) {
    if(!_fader.children().length) {
      var _frame = jQuery('<iframe src="javascript:false" frameborder="0" scrolling="no" />');
      _frame.css({
        opacity:0,
        width:'100%',
        height:'100%'
      })
      _fader.empty().append(_frame);
    }
  }

  // lightbox positioning function
  function positionLightbox() {
    if(_lightbox) {
      
      var _windowHeight = jQuery(window).height();
      var _windowWidth = jQuery(window).width();
      var _lightboxWidth = _lightbox.outerWidth();
      var _lightboxHeight = _lightbox.outerHeight();
      var _pageHeight = _page.height();

      if (_windowWidth < _minWidth) _fader.css('width',_minWidth);
        else _fader.css('width','100%');
      if (_windowHeight < _pageHeight) _fader.css('height',_pageHeight);
        else _fader.css('height',_windowHeight);

      _lightbox.css({
        position:'absolute',
        zIndex:(_zIndex+1)
      });

      // vertical position
      if (_windowHeight > _lightboxHeight) {
        if (jQuery.browser.msie && jQuery.browser.version < 7) {
          _lightbox.css({
            position:'absolute',
            top: parseInt(jQuery(window).scrollTop()) + (_windowHeight - _lightboxHeight) / 2
          });
        } else {
          _lightbox.css({
            position:'fixed',
            top: (_windowHeight - _lightboxHeight) / 2
          });
        }
      } else {
        var _faderHeight = _fader.height();
        if(_faderHeight < _lightboxHeight) _fader.css('height',_lightboxHeight);
        if (!_scroll) {
          if (_faderHeight - _lightboxHeight > parseInt(jQuery(window).scrollTop())) {
            _faderHeight = parseInt(jQuery(window).scrollTop())
            _scroll = _faderHeight;
          } else {
            _scroll = _faderHeight - _lightboxHeight;
          }
        }
        _lightbox.css({
          position:'absolute',
          top: _scroll
        });
      }

      // horizontal position
      if (_fader.width() > _lightbox.outerWidth()) _lightbox.css({left:(_fader.width() - _lightbox.outerWidth()) / 2});
      else _lightbox.css({left: 0});
    }
  }

  // show/hide lightbox
  function toggleState(_state) {
    if(!_lightbox) return;
    if(_state) {
      _fader.fadeIn(_fadeSpeed,function(){
        _lightbox.fadeIn(_fadeSpeed);
      });
      _scroll = false;
      positionLightbox();
    } else {
      _lightbox.fadeOut(_fadeSpeed,function(){
        _fader.fadeOut(_fadeSpeed);
        _scroll = false;
      });
    }
  }

  // popup actions
  function initPopupActions(_obj) {
    if(!_obj.get(0).jsInit) {
      _obj.get(0).jsInit = true;
      // close link
      _obj.find(_closeLink).click(function(){
        _lightbox = _obj;
        toggleState(false);

        if(_lightbox.attr('id').indexOf('register') > -1 
         || _lightbox.attr('id').indexOf('popup2') > -1
         || _lightbox.attr('id').indexOf('popup-calendar') > -1)
          $('#' + _lightbox.attr('id')).remove();

        return false;
      });
    }
  }

  // lightbox openers
  _openers.each(function(){
    var _opener = jQuery(this);
    var _target = (_opener.is('a') ? _opener.attr('href') : _opener.attr('alt'));
    // popup load type - ajax or static
    if(_opener.hasClass(_ajaxClass)) {
      _opener.click(function(){

        // ajax load
        if(jQuery('div[rel*="'+_target+'"]').length == 0) {
          jQuery.ajax({
            url: _target,
            type: "GET",
            dataType: "html",
            success: function(msg){
              // append loaded popup
              _lightbox = jQuery(msg);
              _lightbox.find('img').load(positionLightbox)
              _lightbox.attr('rel', _target);

              // remove any lightboxes that might already exist with the same id.
              $('div[id="' + _lightbox.attr('id') + '"]').remove();

              //_lightbox.hide();
              _lightbox.css({
                position:'absolute',
                zIndex:(_zIndex+1),
                top: -9999,
                left: -9999,
                display:'none'
              });
              jQuery('body').append(_lightbox);

              // init js for lightbox
              initPopupActions(_lightbox);

              // show lightbox
              toggleState(true);
            },
            error: function(msg){alert(msg);
              alert('AJAX error!');
              return false;
            }
          });
        } else {
          _lightbox = jQuery('div[rel*="'+_target+'"]');
          toggleState(true);
        }
        return false;
      });
    } else {
      if(jQuery(_target).length) {
        // init actions for popup
        var _popup = jQuery(_target);
        initPopupActions(_popup);
          // open popup
        _opener.click(function(){
          if(_lightbox) {
            _lightbox.fadeOut(_fadeSpeed,function(){
              _lightbox = _popup.hide();
              toggleState(true);
            })
          } else {
            _lightbox = _popup.hide();
            toggleState(true);
          }
          return false;
        });
      }
    }
  });

  // event handlers
  jQuery(window).resize(positionLightbox);
  jQuery(window).scroll(positionLightbox);
  jQuery(document).keydown(function (e) {
    if (!e) evt = window.event;
    if (e.keyCode == 27) {
      toggleState(false);
    }
  })
  _fader.click(function () {
    //if (!_fader.is(':animated')) {

      toggleState(false);
      
      if ((_lightbox != null) && (_lightbox.attr('id').indexOf('register') > -1 
         || _lightbox.attr('id').indexOf('popup2') > -1
         || _lightbox.attr('id').indexOf('popup-calendar') > -1
         || _lightbox.attr('id').indexOf('popup') > -1))
        $('#' + _lightbox.attr('id')).remove();

    //}
    return false;
  }) 
}
function initSignInClose(){
  $('div.#popup2').find('guests').css('visibility', 'hidden');
}
      
function initSaveTheatresSearchCookie() {
  $('#main_theatres_search').submit(function() {
    if ( $.trim($('#main_inp1').val()).length>0 && $.trim($('#main_inp1').val())!='By City, State or ZIP code' ) {
      $.cookie("theatres_search", $('#main_inp1').val(), { expires: 365 });
    }
  }); 
  
  $('#widget_theatres_search').submit(function() {
    if ( $.trim($('#widget_inp1').val()).length>0 && $.trim($('#widget_inp1').val())!='ZIP code' ) {
      $.cookie("theatres_search", $('#widget_inp1').val(), { expires: 365 });
    }
  });  
  
  $('#theatres_search').submit(function() {
    if ( $.trim($('#inp1').val()).length>0 && $.trim($('#inp1').val())!='Enter City, State, or ZIP code' ) {
      $.cookie("theatres_search", $('#inp1').val(), { expires: 365 });
    }
  });

  $('#zip-search-form').submit(function() {
    if ( $.trim($('#search-zip').val()).length>0 && $.trim($('#inp1').val())!='Enter City, State, or ZIP' ) {
      $.cookie("theatres_search", $('#search-zip').val(), { expires: 365 });
    }
  });  
}
