﻿var 
    IsLoggedIn = false,
    SongID = 0,
    ArtistID = 0,
    AlbumID = 0,
    CommentSongID = 0,
    Member = null,
    Url = "",
    MemberCodeCookieName = "MemberCode",
    MemberEmailCookieName = "Email";

function SetSearchValue(input)
{
   var message = 'Aranacak şarkı ya da sanatçı adını giriniz...';
    if (input.value == message)
    {
        input.value = ''
    }
    else if (input.value == '')
    {
        input.value = message;
    }
}

function PageOnLoad()
{
   MusicSite.MusicWebService.IsLoggedIn(IsMemberLoggedInSucceeded);
}

function IsMemberLoggedInSucceeded(member)
{
   IsLoggedIn = (member != null);
   if (IsLoggedIn)
   {
      MemberLoggedIn(member);
   }
   else
   {
      var memberCode = GetCookie(MemberCodeCookieName);
      var email = GetCookie(MemberEmailCookieName);      
      if(memberCode != null)
      {
         MusicSite.MusicWebService.Login(email, memberCode, MemberLogInSucceeded);
      }
      MemberNotLoggedIn();
   }
}

function MemberLogInSucceeded(loginContext)
{
   if (loginContext.LoginSuccessful)
   {
      MemberLoggedIn(loginContext.Member);
   }
   else
   {
      MemberNotLoggedIn();
   }
}

function MemberLoggedIn(member)
{
   HideLoginSection(member);
   if (ArtistID > 0 || SongID > 0 || AlbumID > 0)
   {
      MusicSite.MusicWebService.IsFavorite(ArtistID, SongID, AlbumID, IsFavoriteSucceeded);
   }
   
   if (CommentSongID > 0)
   {
      CommentSectionVisible(true);
   }
}

function MemberNotLoggedIn()
{
   ShowLoginSection();
   if (ArtistID > 0 || SongID > 0 || AlbumID > 0)
   {
     IsFavoriteSucceeded(false);
   }

   if (CommentSongID > 0)
   {
      CommentSectionVisible(false);
   }
}

function IsFavoriteSucceeded(isFavorite)
{
    var aAddFavorite = $get("aAddFavorite");
    var aFavorite = $get("aFavorite");
    var aFavoriteLogin = $get("aFavoriteLogin");

    aAddFavorite.style.display = (!isFavorite && IsLoggedIn) ? "" : "none";
    aFavorite.style.display = (isFavorite && IsLoggedIn) ? "" : "none";
    aFavoriteLogin.style.display = !IsLoggedIn ? "" : "none";
}

function AddSongToMember(songID, currentItem)
{
    ShowFavoriteProgress(true);
    MusicSite.MusicWebService.AddSongToMember(songID, AddFavoriteToMemberSucceeded, null, currentItem);
}

function AddArtistToMember(artistID, currentItem)
{
   ShowFavoriteProgress(true);
   MusicSite.MusicWebService.AddArtistToMember(artistID, AddFavoriteToMemberSucceeded, null, currentItem);
}

function AddAlbumToMember(albumID, currentItem)
{
    ShowFavoriteProgress(true);
    MusicSite.MusicWebService.AddAlbumToMember(albumID, AddFavoriteToMemberSucceeded, null, currentItem);
}

function AddFavoriteToMemberSucceeded(member, currentItem)
{
   var isAdded = member != null;
   if (isAdded && member.FBUserID > 0)
   {
      FB.ensureInit(function()
      {
         FB.Connect.showFeedDialog(currentItem.TemplateID, currentItem, null, "", null, FB.RequireConnect.promptConnect);
      });
   }
   ShowFavoriteProgress(false);
   var aAddFavorite = $get("aAddFavorite");
   var aFavorite = $get("aFavorite");
   var divFavoriteMessage = $get("divFavoriteMessage");

   aAddFavorite.style.display = !isAdded ? "" : "none";
   aFavorite.style.display = isAdded ? "" : "none";
   divFavoriteMessage.innerHTML = "Favorilerinize eklendi";
}

function RemoveArtistFromMember(artistID, tdNode)
{
    if(window.confirm("Favorilerinizden çıkarmak istediğinizden emin misiniz?"))
    {
        MusicSite.MusicWebService.RemoveArtistFromMember(artistID, RemoveFavoriteFromMemberSucceeded, null, tdNode);
    }
}

function RemoveSongFromMember(songID, tdNode)
{
   if (window.confirm("Favorilerinizden çıkarmak istediğinizden emin misiniz?"))
   {
      MusicSite.MusicWebService.RemoveSongFromMember(songID, RemoveFavoriteFromMemberSucceeded, null, tdNode);
   }
}

function RemoveAlbumFromMember(albumID, tdNode)
{
    if (window.confirm("Favorilerinizden çıkarmak istediğinizden emin misiniz?"))
    {
        MusicSite.MusicWebService.RemoveAlbumFromMember(albumID, RemoveFavoriteFromMemberSucceeded, null, tdNode);
    }
}

function RemoveFavoriteFromMemberSucceeded(isRemoved, tdNode)
{
    var tr = tdNode.parentNode;
    var rowIndex = tr.sectionRowIndex;
    tr.parentNode.deleteRow(rowIndex);
}

function LoginUser(form)
{
    var inputUserName = $get("inputUserName", form).value;
    var inputPassword = $get("inputPassword", form).value;

    CleanLoginMessage();
    if (inputUserName.length > 5 && inputPassword.length >= 5)
    {
        ShowLoginProgress(true);
        MusicSite.MusicWebService.Login(inputUserName, inputPassword, LoginSucceeded, null, form);
    }
    else
    {
        ShowLoginMessage("Eksik giriş yaptınız");
    }
}

function LogoutUser(form)
{
   if (window.confirm("Siteden çıkış yapmak istediğinize emin misiniz?"))
   {
      DeleteCookie(MemberEmailCookieName);
      DeleteCookie(MemberCodeCookieName);
      ShowLoginProgress(true);
      MusicSite.MusicWebService.Logout(LogoutSucceeded);
   }
}

function LogoutSucceeded()
{
    ShowLoginProgress(false);
    ShowLoginSection();
}

function LoginSucceeded(loginContext, form)
{
   ShowLoginProgress(false);
   ShowLoginMessage(loginContext.ErrorMessage);
   if (loginContext.LoginSuccessful)
   {
      var inputRememberMe = $get("inputRememberMe", form);
      if(inputRememberMe.checked)
      {
         SetCookie(MemberEmailCookieName, loginContext.Member.Email);
         SetCookie(MemberCodeCookieName, loginContext.Member.Code);
      }
      
      if (Url.length > 0)
      {
         window.location = Url;
      }
      HideLoginSection(loginContext.Member);
   }
}

function HideLoginSection(member)
{
   var DivLoginBox = $get("DivLoginBox");
   var DivLoggedIn = $get("DivLoggedIn");
   var SpanLogOut = $get("SpanLogOut");
   var SpanFBLogOut = $get("SpanFBLogOut");
   var SpanFBImage = $get("SpanFBImage");
   
   DivLoginBox.style.display = "none";
   DivLoggedIn.style.display = "";

   var LoginUserName = $get("LoginUserName");
   var LoginAge = $get("LoginAge");
   var LoginCity = $get("LoginCity");

   if (member.FBUserID > 0)
   {
      SpanFBLogOut.style.display = "";
      SpanLogOut.style.display = "none";
      SpanFBImage.style.display = "";
   }
   else
   {
      SpanFBImage.style.display = "none";
      SpanFBLogOut.style.display = "none";
      SpanLogOut.style.display = "";
      LoginUserName.innerHTML = member.Name;
   }

   LoginCity.innerHTML = member.City;
   LoginAge.innerHTML = member.Age;
   if (member.PictureUrl.length > 0)
   {
      SetMemberPicture(member.PictureUrl, member.PictureWidth, member.PictureHeight);
   }
   else
   {
      SetMemberPicture("", 0, 0);
   }
}

function SetMemberPicture(url, width, height)
{
   var LoginMemberPicture = $get("LoginMemberPicture");
   LoginMemberPicture.src = url;
   LoginMemberPicture.style.display = url == "" ? "none" : "";
}

function ShowLoginSection()
{
   var DivLoginBox = $get("DivLoginBox");
   var DivLoggedIn = $get("DivLoggedIn");
   var SpanLogOut = $get("SpanLogOut");
   var SpanFBLogOut = $get("SpanFBLogOut");

   DivLoginBox.style.display = "";
   DivLoggedIn.style.display = "none";
   ShowFbLogin(true);
}

function ShowFbLogin(show)
{
   var DivFBLogin = $get("DivFBLogin");
   DivFBLogin.style.display = show?"":"none";
}

function ShowLoginProgress(show)
{
    var ImageLoading = $get("LoginImageLoading");
    ImageLoading.style.visibility = show ? "visible" : "hidden";
}

function ShowLoginMessage(message)
{
   var divMessage = $get("divLoginMessage");
   divMessage.innerHTML = message;
}

function CleanLoginMessage()
{
   ShowLoginMessage("");
}

function ShowFavoriteProgress(show)
{
    var ImageLoading = $get("LoginImageLoading");
    ImageLoading.style.visibility = show ? "visible" : "hidden";
}

function IsEnterPressed(e)
{
    var keycode;
    if (window.event) 
        keycode = window.event.keyCode;
    else if (e) 
        keycode = e.which;
    else 
        return false;
    return (keycode == 13);
}

function SetCookie(sName, sValue)
{
  date = new Date();
  document.cookie = sName + "=" + escape(sValue) + "; expires=Fri, 31 Dec 2020 23:59:59 GMT;";
}

function DeleteCookie(sName)
{
   date = new Date();
   document.cookie = sName + "=; expires=Fri, 31 Dec 2000 23:59:59 GMT;";
}

function GetCookie(sName)
{
   var aCookie = document.cookie.split("; ");
   for (var i=0; i < aCookie.length; i++)
   {
      var aCrumb = aCookie[i].split("=");
      if (sName == aCrumb[0])
      {
         return unescape(aCrumb[1]);
      }
   }

   return null;
}

function onFbLogin(currentItem)
{
   ShowFbLogin(false);
   FB.Connect.showPermissionDialog("share_item", redirectPage);
   //FB.Connect.showFeedDialog(currentItem.TemplateID, currentItem, null, "", null, FB.RequireConnect.promptConnect);
}

function redirectPage(permissions)
{
   document.location = document.URL;
}

function fbLogout()
{
   MusicSite.MusicWebService.Logout(LogoutSucceeded);
}

function AddComment(songID, text)
{
   if (text.length <= 10)
   {
      window.alert("Yorumunuz çok kısa");
      return;
   }
   MusicSite.MusicWebService.AddComment(songID, text, AddCommentSucceeded, null, text);
}

function AddCommentSucceeded(added, text)
{
   var DivComment = $get("DivComment");
   if (added)
   {
      CommentSectionVisible(false);
      DivComment.innerHTML = text + "<br/><br/>Yorumunuz onaylandıktan sonra yayınlanacaktır";
      var aCommentLogin = $get("aCommentLogin");
      aCommentLogin.style.display = "none";
   }
   else
   {
      DivComment.innerHTML = "Yorumunuz onaylanana kadar aynı şarkı için başka yorum gönderemezsiniz.";
   }
}

function CommentSectionVisible(isVisible)
{
   var showComment = isVisible ? "" : "none";
   var hideComment = !isVisible ? "" : "none";
   var aCommentLogin = $get("aCommentLogin");
   aCommentLogin.style.display = hideComment;
   var TextareaComment = $get("TextareaComment");
   TextareaComment.style.display = showComment;
   var liAddComment = $get("liAddComment");
   liAddComment.style.display = showComment;
}
