﻿$(document).ready(function() {
  $("#facebookLink").unbind('click').click(postFacebookRound);
  $("#facebookRoundLink").unbind('click').click(postFacebookRound);
  $("#twitterRoundLink, #twitterLink").click(twitterRoundShare);

  window.pageData.renderChart();
  
  scorecardEmailFormWrapper = $("#scorecardEmailFormWrapper");
  var roundStatisticsButton = $("a.btnRoundStats");
  var friendsScoresButton = $("a.btnFriendsScores");
  var showEmailForm = $("#showEmailForm");

  roundStatisticsButton.click(function() {
    return false;
  });

  friendsScoresButton.click(function() {
    return false;
  });

  showEmailForm.click(function() {
    scorecardEmailFormWrapper.fadeIn(400);
    $("#recipients").focus(); 
    scorecardEmailFormWrapper.find("a.close");
    return false;
  });

  initializeScorecardEmailFormWrapper();

  $('.toggle').click(function() {
    var me = $(this);
    me.toggleClass('on');
    me.text(me.hasClass('on') ? window.translations.show : window.translations.hide);
    me.parents('.titleBarBorder').next('div').slideToggle();
    $('#statOptions').hide();
    return false;
  });

  $('#viewAll').click(function() {
    $(this).hide();
    $(this).siblings('span').hide();
    $(this).siblings('.btnOptions').show();
    return false;
  });
  
  $('.btnStatOptions').click(function() {
    var off = $(this).offset();
    var options = $('#statOptions');
    options.css({ top: off.top - 67 });
    options.fadeToggle();
    
    $('html').click(function() {
      options.fadeOut();
      $(this).unbind('click');
    });
    $('#statOptions').click(function(event){
      event.stopPropagation();
    });
    if (options.children('.spinner').length > 0) {
      var form = $('#optionsForm, #optionForm');
      $.post(window.urls.options, form.serialize(), function(data) {
        options.html(data);
        $('#updateOptions').click(function() {
          $('.btnOptions').removeClass('on');
          $('.btnOptions.0').addClass('on');
          $('#statOptions').fadeOut();
          window.pageData.updateOptions();
          return false;
        });
      });
    }
    return false;
  });
});

$(window).load(function () {
	$('.photoGallery img').broken(hideIfEmpty);
});

function initializeScorecardEmailFormWrapper() {
  scorecardEmailFormWrapper.find("a.close").click(closeScorecardPopup);

  scorecardEmailFormWrapper.find("a.sendScorecardLink").click(function() {
    scorecardEmailFormWrapper.find("form").submit();
    return false;
  });

  scorecardEmailFormWrapper.find("form").submit(function() {
    if (!window.pageData.isSubmittingForm) {
      window.pageData.isSubmittingForm = true;
      var formData = $("#sendScorecardForm").serialize();
      scorecardEmailFormWrapper.find("input").attr("disabled", "true");
      $.post(window.urls.scorecardEmailUrl, formData, function(data) {
        scorecardEmailFormWrapper.html(data);
        window.pageData.isSubmittingForm = false;
        initializeScorecardEmailFormWrapper();
        scorecardEmailFormWrapper.find(".input-validation-error").focus();
      });
    }
    return false;
  });
}

function closeScorecardPopup() {
  $.get(window.urls.scorecardEmailUrl, null, function (data) {
    scorecardEmailFormWrapper.fadeOut(400, function () {
      scorecardEmailFormWrapper.html(data);
      initializeScorecardEmailFormWrapper();
    });
  });
  return false;
}

function postFacebookRound() {
  fbEnsureInit(function () {
    var loginStatus = false;
    FB.getLoginStatus(function (response) {
        if (response.session) {
            loginStatus = true;
        }
    });
    
    FB.ui({
      method: 'stream.publish',
      display: (loginStatus) ? 'iframe' : 'popup',
      message: window.pageData.shareDescription,
      attachment: {
        name: window.pageData.scorecardLinkText,
        description: window.pageData.aboutTemplate,
        href: location.href,
        media: [{ 'type': 'image', 'src': window.pageData.scoreIcon, 'href': location.href}]
      },
      action_links: [{ text: window.pageData.actionLinkText, href: 'http://golfshot.com'}]
    }, facebookCallback);
  });
  return false;
}

function getRounds(rounds) {
  $('#viewAll').click();
  if (rounds && rounds > 0) {
    $('[name="numberOfRounds"]').val(rounds);
    $('.btnOptions').removeClass('on');
    $('.btnOptions.' + rounds).addClass('on');
    updateRoundStats();
  }
  return false;
}

function updateRoundStats() {
  $.post(window.urls.statisticsUrl, $('#optionsForm').serialize(), function(data) {
    $('#roundStats').html(data.Statistics);
    $('#clubChart').attr('src', data.ShotChartUrl);
    window.pageData.renderChart();
  });
  return false;
}

function facebookCallback(response) {
  if (response && response.post_id) {
    $.post(window.urls.facebookShareUrl, { 'postId': response.post_id }, null, 'json');
  }
}

function twitterRoundShare() {
  window.open("http://twitter.com/share?url=" + encodeURIComponent(location.href) + "&related=GolfshotGPS&text=" + encodeURIComponent(window.pageData.shareDescription), "tweet", "toolbar=0,status=0,width=786,height=333");
  return false;
}

function hideIfEmpty(toHide) {
  var hide = $(toHide);
  var container = $('div.photoGallery');
  hide.remove();
  if (container.find('img.thumb').size() == 0) {
    container.remove();
  }
}

function showImage(toShow) {
  var show = $(toShow);
  var index = show.index()-1;
  var gallery = Galleria.get(0);
  if (typeof gallery === "undefined") {
    $('#galleria').galleria({
      transitionSpeed: 1,
      carouselSpeed: 1,
      lightboxFadeSpeed: 1,
      idleSpeed: 1,
      lightboxTransitionSpeed: 1,
      show: index,
      idleMode: false,
      clicknext: true,
      debug: false,
      showCounter: false,
      thumbnails: true,
      carousel: false,
      extend: function () {
        this.attachKeyboard({
          left: this.prev,
          right: this.next
        });
        this.bind('loadfinish', function() {
          var height = $('.galleria-info-description').height();
          $('.galleria-thumbnails-container').css('marginTop', height + 40 + 'px');
        });
      }
    });
    $('.closeGal, .closeGalText').click(function() {
      $('.photoOverlay').hide();
      return false;
    });
    $(document).keyup(function(e) {
      if (e.keyCode == 27) { $('.photoOverlay').hide(); }
    });
  }
  else {
    $('.galleria-stage .galleria-image').html('');
    gallery.show(index, false);  
  }
  $('.photoOverlay').show();
  $('html').scrollTop(0);   
  $('body').scrollTop(0);
  return false;
}
