var url = document.location.href;
var end = url.indexOf('/',7); // first '/' after 'http://'
var base_url = url.substring(0, end);
var topdir = '';

/**
 * set Google Analytics click tracking on all links;
 * works for links created after ajax load too
 **/
function setAnalyticsClicks(tag)
{
  $(tag + ' a').click(function(){
    urchinTracker($(this).attr('href'));
/*
    var title = $(this).attr('title');
    if(title == '' || title == undefined)
    { urchinTracker($(this).attr('href')); }
    else
    { urchinTracker(title); }
*/
  });
}

function initHeader()
{
  $('#login-menu > li:eq(1) > a').click(function(){
    $('#login-menu').fadeOut('normal', function(){
      $('#login-inputs').fadeIn('normal');
      });
    return false;
    });

  $('#login-menu > li:eq(2) > a').click(function(){
    $('#login-menu').fadeOut('normal', function(){
      $('#login-other').fadeIn('normal');
      });
    return false;
    });

  $("#searchbutton").click(function(){
    var term = encodeURIComponent($("input[@name=term]").val());
    // need to recreate url each time b/c if user hits back-button,
    // the url has now been replaced with previous search term
    $("#searchform").attr("action", base_url+topdir+'/search/'+term);
    });
}

/**
 * attaches onclicks to recent / popular tabs in 'other nikurabes' box
 */
function initSidebar()
{
  $("a[@name=recentlink]").click(function(){
    $('#otherniksnav .loading').css('display','inline');
    $.post( topdir + "/archive/aj_getRecent", function(data){ renderOtherNiks(data); });
    $('a[@name=popularlink]').removeClass("selected");
    $(this).addClass('selected');
    return false;
  });
  
  $('a[@name=popularlink]').click(function(){
    $('#otherniksnav .loading').css('display','inline');
    $.post( topdir + "/archive/aj_getPopular", function(data){ renderOtherNiks(data); });
    $('a[@name=recentlink]').removeClass('selected');
    $(this).addClass('selected');
    return false;
  });
  
  $('a[@name=recentusers]').click(function(){
    $('#usersgrouping .loading').css('display','inline');
    $.post( topdir + "/users/aj_getRecent", function(data){ renderOtherUsers(data); });
    $('a[@name=similarusers]').removeClass('selected');
    $(this).addClass('selected');
    return false;
  });

  $('a[@name=similarusers]').click(function(){
    $('#usersgrouping .loading').css('display','inline');
    $.post( topdir + "/users/aj_getSimilar", function(data){ renderOtherUsers(data); });
    $('a[@name=recentusers]').removeClass('selected');
    $(this).addClass('selected');
    return false;
  });
}

/**
 * updates list of nikurabes in recent / popular box
 */
function renderOtherNiks(jsondata)
{
  $('#otherniksnav .loading').css('display','none');

  var json_data = eval('('+jsondata+')');
  var all_link = json_data.alllink;
  var nik_data = json_data.nikdata;
  
  $('.loading').css('display','none');
  $('a[@name=allniks]').attr('href', all_link);
  
  $('#othernikslist').empty();
  for(var i = 0; i < nik_data.length; i++)
  {
    var cn = nik_data[i];
    var item = '<li><a href="' + cn.niklink + '" title="' + cn.niktitle + '>' + cn.niktitle + '</a></li>';
    $('#othernikslist').append(item);
  }
  
  setAnalyticsClicks('#othernikslist');
}

/**
 * updates list of users in recent / similar box
 */
function renderOtherUsers(jsondata)
{
  $('#usersgrouping .loading').css('display','none');

  var json_data = eval('('+jsondata+')');
  if(json_data.result == 1)
  {
    var udata = json_data.userdata;
    var all_link = json_data.alllink;
    var ubox = $('#usersgrouping');
    var html = '';

    $("a[@name=allusers]").attr("href", all_link);
    
    if(json_data.grouping == 'recent')
    {
      for(var i = 0; i < udata.length; i++)
      {
        user = udata[i];
        html += '<div class="usermini">';
        html += '<a href="'+user.url+'" >';
        html += '<img src="'+user.avatar+'" width="'+user.width+'" height="'+user.height+'" class="avatar" alt="'+user.nickname+'" />';
        html += '</a><span class="small">'+user.nickname_wrapped+'</span>';
        html += '</div>';
      }
      
      ubox.addClass('no-rating');
    }
    else // must be 'similar'
    {
      for(var i = 0; i < udata.length; i++)
      {
        user = udata[i];
        html += '<div class="usermini">';
        html += '<p class="simrating small">'+user.simrating+'%</p>';
        html += '<a href="'+user.url+'">';
        html += '<img src="'+user.avatar+'" width="'+user.width+'" height="'+user.height+'" class="avatar" alt="'+user.nickname+'" />';
        html += '</a><span class="small">'+user.nickname_wrapped+'</span>';
        html += '</div>';
      }
      
      ubox.removeClass('no-rating');
    }
    
    ubox.children('#users-box').empty();
    ubox.children('#users-box').append(html);
    
    setAnalyticsClicks('#users-box');
  }
  else // something bad happened ... maybe no users?
  {
    // return to default of recent users
    $('.content-wrap > .alert-box').text('ログインすれば似ている友達をみれますよ！').show();
    setTimeout("fadeOutAlertbox()", 3000);
    $('a[@name=recentusers]').addClass('selected');
    $('a[@name=similarusers]').removeClass('selected');
    $('#usersgrouping').addClass('no-rating');
  }
}

// used by setTimeout, above
function fadeOutAlertbox()
{ $('.content-wrap > .alert-box').slideUp('fast'); }

function renderNikitems()
{
  $('.nikitem').children('ul').next('a').hide();
  $('.nikitem').hover(function(){ $(this).addClass('hover'); },
                      function(){ $(this).removeClass('hover'); });
  $('.nikitem').click(function(){ window.location.href = $(this).children('a:first').attr('href'); });
}

/*** helper functions ***/

// just count char length
function wc(input, maxlen)
{
  var str = input.value;

  // turns out one double-byte char is still counted as one char
  var display = document.getElementById("charsleft");
  var curlen = maxlen - str.length;
  display.innerHTML = curlen;
  
  if(curlen < 0)
  {
    $('#charsleft').addClass('error');
  }
  else
  {
    $('#charsleft').removeClass('error');
  }
}

function crop(input, maxlen)
{
  if(input.value.length > maxlen)
  {
    input.value = input.value.substring(0, maxlen);
  }
  
  var display = document.getElementById("charsleft");
  display.innerHTML =  maxlen - input.value.length;
}

$(function(){ initHeader(); });
$(function(){ initSidebar(); });
$(function(){ renderNikitems(); });
$(function(){ setAnalyticsClicks(''); });
