$(function(){
  
  $(".countdown").each(function(){
    var el = $(this);
    var v = Number(el.text());
    var CID = setInterval(function(){
      el.text(--v);
      if(!v) clearInterval(CID);
    }, 1000);
  })
  
  $("li.link-login a").click(function () { 
      $("div#block-loginform").slideToggle('normal');
      return false;
  });
  
  $("div.top-login-form form.loginForm").submit(loginSubmit);
  
  
  $("a.left").click(rotateleft);
  $("a.right").click(rotateright);
  
  initPagination();
  initWingsLinks();
  
  setInterval(updateTS, 5000)
  
  $("img.cast-image").load(function(){
    $(this).parent().width($(this).width() + 20)
  }).parent().width($("img.cast-image").width() + 20)
  
})



function loginSubmit() {
  $.post("/login", $(this).serialize(), loginOnData, "json");
  return false;
}
function loginOnData( data ) {
  if(data.valid) {
    window.location.reload();
  }  else  {
    // faut faire un truc quoi...
  }
}


function initPagination() {
  $("div#pagination a").click(function(){
    $.post($(this).attr("href"), {}, onPaginationLoaded, "json");
    return false;
  });
}
function onPaginationLoaded( data ) {
  C_PAGE = data.page;
  $("ul#crowdcast").replaceWith( data.posts );
  //$("ul#crowdcast").append( $("li",$(data.posts)) );
  $("div#pagination").replaceWith( data.pagination );
  initPagination();
  initWingsLinks();
  $.scrollTo($("div#page").prev(), 500);
  
  $("div.cast-rotate a.left").click(rotateleft);
  $("div.cast-rotate a.right").click(rotateright);
}

function initWingsLinks() {
  $("a.wingsLinkAuth").click(function(){
    $.post($(this).attr("href"), {}, onWingsLoaded, "json")
    return false;
  });
  $("a.wingsLink").click(function(){
    alert("ログインまたはメンバー登録してください。");
    return false;
  });
}
function onWingsLoaded( data ) {
  var selector = "li#post-"+data.id+" div.cast-wing a";
  $(selector).text(data.wings);
  $("div.cast-wing-big a.wingie").text(data.wings);
  $(".wingers-list").show();
  $(".wings-users").show();
  $(".wings-users-first").hide();
  
  $("p.wings-users").append( $("<a></a>").attr("href","/user/"+data["userid"]+"/"+data["username"]).text( ($(".wings-users").html()?", ":"")+data["username"] ) )
}



function updateTS()
{
  $("ul#crowdcast li").each(function(){
    var ts = getClassVar(this, "ts_");
    var dtw = distance_of_time_in_words(ts);
    $("span.cast-date", $(this)).text(dtw+"前");
  });
}


function rotateleft()
{
  $.post($(this).attr("href"), {}, onrotated, "json");
  return false;
}
function rotateright()
{
  $.post($(this).attr("href"), {}, onrotated, "json");
  return false;
}
function onrotated(data)
{
  var s = "post-"+data["id"];
  $("li#"+s+" img.crowtmb").attr("src", data["img"]);
  $("img.cast-image").attr("src", data["bigimg"]);
}

function getClassVar(element, var_name)
{
  /*var_name = var_name+"-";
  var elem    = document.getElementById($(element).attr("id"));*/
  var elem    = element;
  var classes = elem.className.split(" ");
  for(var a = classes.length-1; a>=0; a--)
  {
    if(classes[a].indexOf(var_name) == 0)
    {
      return classes[a].split(var_name).join("");
      break;
    }
  }
  return false;
}

function strstr( haystack, needle, bool ) {
    // Finds first occurrence of a string within another  
    // 
    // version: 905.3010
    // discuss at: http://phpjs.org/functions/strstr
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: strstr('Kevin van Zonneveld', 'van');
    // *     returns 1: 'van Zonneveld'
    // *     example 2: strstr('Kevin van Zonneveld', 'van', true);
    // *     returns 2: 'Kevin '
    // *     example 3: strstr('name@example.com', '@');
    // *     returns 3: '@example.com'
    // *     example 4: strstr('name@example.com', '@', true);
    // *     returns 4: 'name'
    var pos = 0;
    
    haystack += '';
    pos = haystack.indexOf( needle );
    if (pos == -1) {
        return false;
    } else{
        if( bool ){
            return haystack.substr( 0, pos );
        } else{
            return haystack.slice( pos );
        }
    }
}


function distance_of_time_in_words($from_time, $include_seconds)
{
  $to_time = (((new Date()).getTime())/1000 >> 0);

  $distance_in_minutes = Math.floor(Math.abs($to_time - $from_time) / 60);
  $distance_in_seconds = Math.floor(Math.abs($to_time - $from_time));

  $string = '';
  $parameters = [];

  if ($distance_in_minutes <= 1)
  {
    if (!$include_seconds)
    {
      $string = $distance_in_minutes == 0 ? '1分以内' : '1分';
    }
    else
    {
      if ($distance_in_seconds <= 5)
      {
        $string = '5秒以内';
      }
      else if ($distance_in_seconds >= 6 && $distance_in_seconds <= 10)
      {
        $string = '10秒以内';
      }
      else if ($distance_in_seconds >= 11 && $distance_in_seconds <= 20)
      {
        $string = '20秒以内';
      }
      else if ($distance_in_seconds >= 21 && $distance_in_seconds <= 40)
      {
        $string = '30秒以内';
      }
      else if ($distance_in_seconds >= 41 && $distance_in_seconds <= 59)
      {
        $string = '1分以内';
      }
      else
      {
        $string = '1分';
      }
    }
  }
  else if ($distance_in_minutes >= 2 && $distance_in_minutes <= 44)
  {
    $string = '%minutes%分';
    $parameters['%minutes%'] = $distance_in_minutes;
  }
  else if ($distance_in_minutes >= 45 && $distance_in_minutes <= 89)
  {
    $string = '約1時間';
  }
  else if ($distance_in_minutes >= 90 && $distance_in_minutes <= 1439)
  {
    $string = '約%hours%時間';
    $parameters['%hours%'] = Math.round($distance_in_minutes / 60);
  }
  else if ($distance_in_minutes >= 1440 && $distance_in_minutes <= 2879)
  {
    $string = '1日';
  }
  else if ($distance_in_minutes >= 2880 && $distance_in_minutes <= 43199)
  {
    $string = '%days%日';
    $parameters['%days%'] = Math.round($distance_in_minutes / 1440);
  }
  else if ($distance_in_minutes >= 43200 && $distance_in_minutes <= 86399)
  {
    $string = '約1ヶ月';
  }
  else if ($distance_in_minutes >= 86400 && $distance_in_minutes <= 525959)
  {
    $string = '%months%月';
    $parameters['%months%'] = Math.round($distance_in_minutes / 43200);
  }
  else if ($distance_in_minutes >= 525960 && $distance_in_minutes <= 1051919)
  {
    $string = '約1年';
  }
  else
  {
    $string = '%years%年以上';
    $parameters['%years%'] = Math.floor($distance_in_minutes / 525960);
  }

  for(var it in $parameters)
  {
    $string = $string.split(it).join($parameters[it])
  }
  return $string;
  
}

$(document).ready(function () {
  
  var allw = $(".wings-users").html();
  if(allw) {
    var wingers = allw.split(", ");
    if(wingers.length>3)
    {
    	var sw = wingers.slice(0,3);
      $(".wings-users").after(
    	 $("<span></span>").html(sw.join(", ")).addClass("wings-users-first").append(
    	   $("<br/><a href='#'>もっと...</a>").attr("href", "#").click(function(){
    	     $(this).hide();
    	     $(".wings-users-first").hide();
    	     $(".wings-users").show();
    	     return false;
    	   })
    	 )
    	).hide();
    	
    	
    }
  }
	
});



