/* AVATARS
------------------------------------------------------------------ */
function avatar_dropdown(username, relation) {
  var avatar_dropdown = '<div class="avatar_dropdown">';
  avatar_dropdown += '<ul>';
  if (relation == 'friend' || relation == 'contact') {
    avatar_dropdown += '<li><a href="/social/disconnect/'+username+'/">Stop following</a></li>';
  }
  if (relation == 'none' || relation == 'fan') {
    avatar_dropdown += '<li><a href="/social/connect/'+username+'/">Follow</a></li>';
  }
  avatar_dropdown += '<li><a href="/users/'+username+'/">Profile</a></li>';
  avatar_dropdown += '<li><a href="/users/'+username+'/comments/">Comment history</a></li>';
  if (relation) {
    avatar_dropdown += '<li class="last"><a href="/users/'+username+'/contact/">Send private message</a></li>';
  }
  avatar_dropdown += '</ul></div>';
  return avatar_dropdown;
}

function avatar_click(e) {
  target = $(e.target);
  avatar = target.parent().parent();

  if (target.is('.avatar_drop_trigger')) {
    e.preventDefault();
    if (avatar.hasClass('active')) {
      avatar.find('.avatar_dropdown').remove();
      avatar.removeClass('active');
    }
    else {
      avatar_reset();
      avatar.append(avatar_dropdown(avatar.find('img').attr('title'), avatar.find('a').attr('rel')));
      avatar.addClass('active');
    }
  }
  else {
    avatar_reset();
  }
}

function avatar_reset() {
  $('div.avatar.active .avatar_hover').remove();
  $('div.avatar.active .avatar_dropdown').remove();
  $('.avatar').removeClass('active');
}

function avatar_init() {
  $(document).click(avatar_click);

  $('div.avatar').hover(
    function(e) {
      avatar = $(this);
      if (!avatar.hasClass('active')) {
        $(this).append('<div class="avatar_hover"><a href="#" class="avatar_drop_trigger">drop</a></div>');
      }
    },
    function(e) {
      avatar = $(this);
      if (!avatar.hasClass('active')) {
        $('.avatar_hover', this).remove();
      }
    }
  );
}


/* DAYPART INIT
------------------------------------------------------------------ */
function daypart_init() {
  var body = $('body');

  $('.event_archive_day .divider a').click(function(e) {
    e.preventDefault();
    target = $(e.target);
    $('div.daypart_'+target.attr('href').slice(1)).slideToggle(400);
  });

  if (body.hasClass('daypart_afternoon')) {
    hide_dayparts('div.daypart_morning');
  }
  if (body.hasClass('daypart_evening')) {
    hide_dayparts('div.daypart_morning, div.daypart_afternoon');
  }
  if (body.hasClass('daypart_night')) {
    hide_dayparts('div.daypart_morning, div.daypart_afternoon, div.daypart_evening');
  }
}

function hide_dayparts(targets) {
  $(targets).slideUp(400);
}


/* MODULES
------------------------------------------------------------------ */
function module_init() {
  if ($('.module h2').length > 1) {
    $('.module').accordion({
      header: 'h2',
      autoHeight: false
    });
  }
}


/* NAV
------------------------------------------------------------------ */
function nav_init() {
  $('#nav .wrapper > ul').menu();
}


/* POPUPS
------------------------------------------------------------------ */
function popup_init() {
  $("a[rel^='popup'], a[rel^='ipopup']").click(function(e) {
    e.preventDefault();
    open_popup_window(this);
  });
  $("a[rel^='ipopup']").click(function(e) {
    e.preventDefault();
    open_popup_window(this, 'interactive');
  });
}

function open_popup_window(target, type) {
  width = 500;
  height = 600;
  size = target.rel.replace(/(popup|ipopup)\(/, '').replace(/\)/, '');
  if (size && size != 'popup') {
    size = size.split('x');
    if (size[0]) { width = size[0]; }
    if (size[1]) { height = size[1]; }
  }
  features = "height="+height+",width="+width+",scrollTo,resizable=1,scrollbars=1,location=0";
  if (type='interactive') {
    window.open(target.href+'?popup=true&interactive=true', 'Popup', features);
  }
  else {
    window.open(target.href+'?popup=true', 'Popup', features);
  }
}

function handle_popup_links(type) {
  $(function() {
    if (type='interactive') {
      $('a').click(function(e) {
        e.preventDefault();
        window.location = this.href+'?popup=true&interactive=true';
      });
    }
    else {
      $('a').click(function(e) {
        e.preventDefault();
        window.opener.location = this.href;
        window.close();
      });
    }

    $('a.cancel').unbind();
    $('a.cancel').click(function(e) {
      e.preventDefault();
      window.close();
    });
  });
}


/* SHARE
------------------------------------------------------------------ */
function share_init() {
  $('.content_tools .share > a').click(function(e) {
    e.preventDefault();
    target_li = $(e.target).parent();
    if (target_li.hasClass('on')) {
      target_li.removeClass('on');
    }
    else {
      target_li.addClass('on');
    }

    target_li.find('.close a').click(function(e) {
      e.preventDefault();
      target_li.removeClass('on');
    });
  });
}


/* SIDEBAR CALENDAR
------------------------------------------------------------------ */
function sidebar_calendar_init() {
  $('.sidebar .calendar_month').prepend('<div class="spinner"></div>');
  $('.sidebar .calendar_month .spinner').css('display', 'none');
  $('.sidebar .calendar_month .pagination .next').click(function(e) {
    e.preventDefault();
    $('.sidebar .calendar_month .spinner').css('display', 'block');
    $(e.target).parent().parent().load(e.target.href+' .content .calendar_month > *', sidebar_calendar_init);
  });
  $('.sidebar .calendar_month .pagination .previous').click(function(e) {
    e.preventDefault();
    $('.sidebar .calendar_month .spinner').css('display', 'block');
    $(e.target).parent().parent().load(e.target.href+' .content .calendar_month > *', sidebar_calendar_init);
  });
}


/* TOGGLE
------------------------------------------------------------------ */
jQuery.fn.toggle = function() {
  return this.each(function() {
    var toggle = $(this);
    var trigger = toggle.find('h2 a:first');
    toggle.find('> h2').addClass('trigger');

    trigger.click(function(e) {
      e.preventDefault();
      target = $(e.target);
      target_div = trigger.parent().next();
      if (target_div.css('display') == 'none') {
        target_div.slideDown(300);
        target.removeClass('collapsed');
      }
      else {
        target_div.slideUp(300);
        target.addClass('collapsed');
      }
    });
  });
}


/* VIDEO PLAYER
------------------------------------------------------------------ */
function video_player_init() {
  $.fn.media.defaults.attrs = {allowScriptAccess: 'always', allowFullScreen: 'true', salign: 'lt'};
  $.fn.media.defaults.flashVersion = '9.0.124.0';
  $.fn.media.defaults.caption = false;

  $('.video_player').media();

  $('.video_set').each(function() {
    var video_set = $(this);
    var video_list = video_set.find('.video_list .flash_video');
    video_list.click(function(e) {
      e.preventDefault();
      target = $(this);
      $('body.video_list #video_details .title').replaceWith(target.find('.hidden .title'))
      $('body.video_list #video_details .byline').replaceWith(target.find('.hidden .byline'))
      $('body.video_list #video_details .caption').replaceWith(target.find('.hidden .caption'))
      $('html,body').animate({scrollTop: 0}, 200);
      obj = { 'flv': target.find('[name=flv]').val(), 'auto_play': true };
      swf = swfobject.getObjectById(target.find('a').attr('rel'));
      swf.sendToActionscript(obj);
    });
  });
}


/* MAP RESULTS
------------------------------------------------------------------ */
function mapResultsInit(marker_list) {
  $('#map_results').map_results(marker_list);
  $('.map_results .map_expand a').bind('click', mapResize);
  $(document).bind('map:paneOpened', onPaneOpened);
  $('table.place_list .locate a').bind('click', onPaneOpen);
}

// Map resize
function mapResize(e) {
  e.preventDefault();
  map_div = $('#map_results');
  map_wrapper = map_div.parent();
  target = $(e.target);

  if (map_wrapper.hasClass('map_enlarged')) {
    map_wrapper.removeClass('map_enlarged');
    $('.sidebar').prepend(map_wrapper);
    target.html('Enlarge map');
  }
  else {
    map_wrapper.addClass('map_enlarged');
    $('#body').prepend(map_wrapper);
    target.html('Minimize map');
  }
  $(document).trigger('map:resize');
}

// Pane Opened
function onPaneOpened(e, marker_index) {
  $('.place_list .locate a').removeClass('on');
  $('#marker_'+marker_index).addClass('on');
}

// Pane Open
function onPaneOpen(e) {
  e.preventDefault();
  $('html,body').animate({scrollTop: 0}, 200);
  marker_index = $(e.target).attr('id').replace('marker_', '');
  $(document).trigger('map:paneOpen', [marker_index])
}

// Pane Close
function paneClose() {
  $(document).trigger('map:paneClose');
}


/* SIDEBAR SEARCH
------------------------------------------------------------------*/
function search_init() {
  var input = $('.search input[name=search_form]');
  var input_default_value = input.val();
  
  input.focus(function(e) {
    input.val('');
  });
  
  input.blur(function(e) {
    if (!input.val()) {
      input.val(input_default_value);
    }
  });
}


/* TABBED CONTENT
------------------------------------------------------------------ */
function tabbed_content_init() {
  $('.tabbed_content .tabs li a').click(function(e) {
    e.preventDefault();
    target = $(this);
    tabbed_content = target.parent().parent().parent();
    
    // Turn off all tab contents
    tabbed_content.find('.tab_content').removeClass('tab_content_on');
    
    // Turn off all tabs
    tabbed_content.find('.tabs li').removeClass('on');
    
    // Turn on tab and tab content
    target.parent().addClass('on');
    tabbed_content.find('#'+target.attr('href').slice(1)).addClass('tab_content_on');
  });
}
