/* 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 = jQuery(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() {
  jQuery('div.avatar.active .avatar_hover').remove();
  jQuery('div.avatar.active .avatar_dropdown').remove();
  jQuery('.avatar').removeClass('active');
}

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

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


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

  jQuery('.event_archive_day .divider a').click(function(e) {
    e.preventDefault();
    target = jQuery(e.target);
    jQuery('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) {
  jQuery(targets).slideUp(400);
}


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


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


/* POPUPS
------------------------------------------------------------------ */
function popup_init() {
  jQuery("a[rel^='popup'], a[rel^='ipopup']").click(function(e) {
    e.preventDefault();
    open_popup_window(this);
  });
  jQuery("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) {
  jQuery(function() {
    if (type='interactive') {
      jQuery('a').click(function(e) {
        e.preventDefault();
        window.location = this.href+'?popup=true&interactive=true';
      });
    }
    else {
      jQuery('a').click(function(e) {
        e.preventDefault();
        window.opener.location = this.href;
        window.close();
      });
    }

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


/* SHARE
------------------------------------------------------------------ */
function share_init() {
  jQuery('.content_tools .share > a').click(function(e) {
    e.preventDefault();
    target_li = jQuery(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() {
  jQuery('.sidebar .calendar_month').prepend('<div class="spinner"></div>');
  jQuery('.sidebar .calendar_month .spinner').css('display', 'none');
  jQuery('.sidebar .calendar_month .pagination .next').click(function(e) {
    e.preventDefault();
    jQuery('.sidebar .calendar_month .spinner').css('display', 'block');
    jQuery(e.target).parent().parent().load(e.target.href+' .content .calendar_month > *', sidebar_calendar_init);
  });
  jQuery('.sidebar .calendar_month .pagination .previous').click(function(e) {
    e.preventDefault();
    jQuery('.sidebar .calendar_month .spinner').css('display', 'block');
    jQuery(e.target).parent().parent().load(e.target.href+' .content .calendar_month > *', sidebar_calendar_init);
  });
}


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

  jQuery('.video_player').media();

  jQuery('.video_set').each(function() {
    var video_set = jQuery(this);
    var video_list = video_set.find('.video_list .flash_video');
    video_list.click(function(e) {
      e.preventDefault();
      target = jQuery(this);
      jQuery('body.video_list #video_details .title').replaceWith(target.find('.hidden .title'))
      jQuery('body.video_list #video_details .byline').replaceWith(target.find('.hidden .byline'))
      jQuery('body.video_list #video_details .caption').replaceWith(target.find('.hidden .caption'))
      jQuery('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) {
  jQuery('#map_results').map_results(marker_list);
  jQuery('.map_results .map_expand a').bind('click', mapResize);
  jQuery(document).bind('map:paneOpened', onPaneOpened);
  jQuery('table.place_list .locate a').bind('click', onPaneOpen);
}

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

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

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

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

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


/* SEARCH
------------------------------------------------------------------*/
function search_init() {
  var advanced = jQuery('.search_form .advanced');
  var advanced_fieldset = jQuery('.search_form fieldset');

  if (advanced.length) {
    advanced.click(function(e) {
      e.preventDefault();
      advanced.toggleClass('advanced_on');
      advanced_fieldset.toggle();
    });

    advanced_fieldset.find('.select_all').click(function(e) {
      e.preventDefault();
      advanced_fieldset.find('input[type=checkbox]').attr('checked', true);
    });
    advanced_fieldset.find('.clear_all').click(function(e) {
      e.preventDefault();
      advanced_fieldset.find('input[type=checkbox]').attr('checked', false);
    });
  }

  var input = jQuery('.sidebar .search input[type=text]');
  if (input.length) {
    var input_default_value = input.val();

    input.focus(function(e) {
      input.val('');
    });

    input.blur(function(e) {
      if (!input.val()) {
        input.val(input_default_value);
      }
    });
  }

  jQuery('.panel .title > a').click(function(e) {
    e.preventDefault();
    var target = jQuery(this);
    var list = target.parent();
    list.parent().toggleClass('panel_on');
    list.next().toggle();
  });
}


/* TABBED CONTENT
------------------------------------------------------------------ */
function tabbed_content_init() {
  jQuery('.tabbed_content:not(.tabbed_disabled) .tabs li a').click(function(e) {
    e.preventDefault();
    target = jQuery(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');
  });
}

