/* AJAX */
$(function() {
  $("a.rjs").click(function() {
    $.ajax({ url: this.href, dataType: "script" });
  });
  var options = { dataType: "script", resetForm: true };
  $("form.rjs").ajaxForm(options);
  $(document).bind("afterReveal.facebox", function() {
    $("form.rjs").ajaxForm(options);
  });
});

$(function() {
  $(".focus").focus();
  $(document).bind("afterReveal.facebox", function() {
    $(".focus").focus();
  });
});

$(function() {
  $().ajaxSend(function(event, request, settings) {
    if (typeof(window._auth_token) == "undefined") return;
    // IE6 fix for http://dev.jquery.com/ticket/3155
    if (settings.type == 'GET' || settings.type == 'get') return;
    settings.data = settings.data || "";
    settings.accepts.html = settings.accepts.script; 
    settings.data += (settings.data ? "&" : "") + window._auth_token_name + "=" + encodeURIComponent(window._auth_token);
    // fix for empty posts not setting the content-type 
    request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    //request.setRequestHeader("Accept", "text/javascript");
  });
});

/* Ticker */
$(function() {
  $("#ticker.scrollable").scrollable({
    interval: 6000, 
     
    // when last item is encountered go back to first item 
    loop: true,  
     
    // make animation a little slower than the default 
    speed: 800, 
     
    // when seek starts make items little transparent 
    onBeforeSeek: function() { 
        this.getItems().fadeTo(400, 0.2);         
    }, 
     
    // when seek ends resume items to full transparency 
    onSeek: function() { 
        this.getItems().fadeTo(400, 1); 
    } 
  });
});

/* Leaderboard */
$(function() {
  $("#leaderboards tr:odd").addClass("stripe");
});

$(function() {
  $(".striped table tr:odd").addClass("stripe");
});

/* Charity Info */
$(function() {
  $(".buzz .news").click(function(e) {
    e.preventDefault();
  });
});

/* Charity Picker */

$.fn.charityPicker = function(options) {
  return this.each(function() {
    var target = $(this).attr("rel");

    // overlay effect on target rel attribute
    var overlay = $(target).overlay({
      expose: {
        color: '#2c2c2c'
      },
      onBeforeLoad: function() {
        $(target).removeData("charity-selection");
        if (options["onBeforeLoad"]) {
          options["onBeforeLoad"]();
        }
      },
      api: true,
      onClose: function() {
        var selection = $(target).data("charity-selection");
        if (options["onClose"]) {
          options["onClose"](selection);
        }
        $(".subscriber.charity-selection").trigger("notify.charity-changed", [selection]); // raise page event
        $("object:first").focus();
      }
    });

    // open hook
    $(this).click(function(e) {
      e.preventDefault();
      //scroller.seekTo(0); // BUG: fix the scroller reset CSS
      overlay.load();
      $.tracker.record("charity_picker", "open");
    });
    
    // selection hook
    $(target).find("a.select").click(function(e) {
      e.preventDefault();
      overlay.close();
      $(target).data("charity-selection", this.rel);
      $.tracker.record("charity_picker", "select", this.rel);
    });

    // scroll container
    var scroller = $(target).find(".scrollable").scrollable({
      vertical: true, 
      size: 3,
      api: true
    });
    return this;
  });
};

$(function() {
  $("select#charity-picker-simple").change(function() {
    $(".subscriber.charity-selection").trigger("notify.charity-changed", [this.value]); // raise page event   
    $("#sidebar.wrapped").load(this.value, function() {
      $("#sidebar").donationTicker();
    });
    $.tracker.record("charity_picker", "select", this.value);
  });

  $("#select-charity a.open-charity-picker").charityPicker({
    onBeforeLoad: function() {
      GTG.Player.getInstance().onPause();
    },
    onClose: function(selection) {
      if (selection) {
        $("#sidebar.wrapped").load(selection, function() {
          $("#sidebar").donationTicker();
        });
      } 
      GTG.Player.getInstance().onUnPause();
    }
  });
  $(".ticker-container").donationTicker();
});

/* Donation Ticker */

$.fn.donationTicker = function() {
  return this.each(function() {
    var owner = $(this);
    var amount = window.__ticker_amount;
    var rate = window.__ticker_rate;
    if (rate == 0) {
      return;
    }
    var timer = setInterval(function() {
      amount += rate;
      owner.find("span#amount").text("$ " + amount.toFixed(7));
    }, 1000);

    $(owner).bind("notify.charity-changed", function() {
      clearInterval(timer);
    });
    return this;
  });
};

/* Favorite Charity */

$(function() {
  $("#select-favorite-charity a.open-charity-picker").charityPicker({
    onClose: function(selection) {
      if (selection == null) { return; }
      var url = '/charities/' + selection;
      $.ajax({
        url: url + '/followings',
        type: 'POST',
        complete: function() {
          $(".wrapped").load(url + '/summary', function() {
            $("a.open-charity-picker").text("Click to change charity");
          });
        }
      });
    }
  });
});

/* Follow Charity */

$(function() {
  $("a.select-favorite").click(function(e) {
    e.preventDefault();
    $.ajax({
      url: this.rel,
      type: 'POST',
      complete: function() {
        var target = $("a.select-favorite");
        target.removeClass("select-favorite").addClass("current-favorite");
        target.attr("rel", null);
        target.attr("href", "/profile");
        target.text("My Favorite");
        target.unbind("click");
      }
    })
  });
});

/* Profile Form */
$(function() {
  var options = { 
    target: $("#profile-form"),
    success: function() {
      $("#profile-form form.remote").ajaxForm(options);
    } 
  };
  $("#profile-form form.remote").ajaxForm(options);
});

/* Account Form */
$(function() {
  var options = { 
    target: $("#account-form"),
    resetForm: true,
    clearForm: true,
    success: function() {
      $("#account-form form.remote").ajaxForm(options);
    } 
  };
  $("#account-form form.remote").ajaxForm(options);
});

/* Game List */

$(function() {
  $(".index .scrollable").scrollable({
    clickable: false,
    size: 4,	
    speed: 800
  });
});

/* Tabs */
$(function() {
  $(".tabs").tabs(".panes > div");
});

/* Game Browser */
$(function() {
  $("#game-browser .scrollable").scrollable({
   	clickable: false,
    size: 1
  });
  $("#mini-game-browser .scrollable").scrollable({
	clickable: false,
	size: 3
  });
});

$(function() {
  $(".popular-widget .scrollable").scrollable({
    clickable: false,
    size: 6
  });
});

/* Challenge Dialog */

$(function() {
  $("#game-player.authenticated").each(function() {
    $(document).bind("inviteFriends.player", function(e, token) {
      if (document.cookie.toString().indexOf("no_invites") > -1) { return; }  // opt-outs
      $.facebox({ ajax: "/challenges/new?token=" + token });
      $.tracker.record("challenge", "show");
    });
    $(document).bind("afterReveal.facebox", function() {
      $("#challenge-dialog * form").ajaxForm({ dataType: 'script' });
      $("#recipients").focus();
    });
    $(document).bind("close.facebox", function(e, closing) {
      GTG.Player.getInstance().onUnPause();
      if (closing) { return; }
      $.tracker.record("challenge", "abandon");
    });
  });
});

/* Product Tour */

$(function() {
  var api = $("#tour-links ul.tabs").tabs("#tour .panes > div", {
    api: true,
    effect: 'fade',
    current: 'active'
  });
  $("#tour .panes > div").removeClass('hidden');  // remove hide effect which improves load appearance
  $("#tour .btn-next").click(function(e){
    e.preventDefault();
    api.next();
  });
});

/* Show Hide Charity Description*/

$('a.charity-description-toggle').toggle( 
    function() { 
        $('#sliding-div').slideDown(); 
        $(this).html('Show Less...');
    }, 
    function() { 
        $('#sliding-div').slideUp(); 
        $(this).html('Show More...');
    } 
);

/* Show Hide Team Member Descriptions*/

$('a.team-member-1-toggle').toggle( 
    function() { 
        $('.sliding-div-1').slideDown(); 
    }, 
    function() { 
        $('.sliding-div-1').slideUp(); 
    } 
);

$('a.team-member-2-toggle').toggle( 
    function() { 
        $('.sliding-div-2').slideDown(); 
    }, 
    function() { 
        $('.sliding-div-2').slideUp(); 
    } 
);

$('a.team-member-3-toggle').toggle( 
    function() { 
        $('.sliding-div-3').slideDown(); 
    }, 
    function() { 
        $('.sliding-div-3').slideUp(); 
    } 
);

$('a.team-member-4-toggle').toggle( 
    function() { 
        $('.sliding-div-4').slideDown(); 
    }, 
    function() { 
        $('.sliding-div-4').slideUp(); 
    } 
);

$('a.team-member-5-toggle').toggle( 
    function() { 
        $('.sliding-div-5').slideDown(); 
    }, 
    function() { 
        $('.sliding-div-5').slideUp(); 
    } 
);

/* Show Hide Charity Impact  */

$('a.more-charities').toggle( 
    function() { 
        $('.sliding-div').slideDown();
		$(this).html('Show Fewer Charities...'); 
    }, 
    function() { 
        $('.sliding-div').slideUp();
 		$(this).html('Show More Charities...');
    } 
);

/* Select All/None Contact Importing */

$(document).ready(function() { 
    $("#invited_all").click(function() 
    { 
        var checked_status = this.checked; 
        $("input[name=invited[]]").each(function() 
        { 
            this.checked = checked_status; 
        }); 
    }); 
});

/* Boss Link */ 

$(function() {
  $("#boss a").click(function(e) {
    e.preventDefault();
    GTG.Player.getInstance().onPause();
    window.open('/boss.html', '', 'fullscreen=yes, scrollbars=yes');
  });
});

/* Page Scroll */ 

$('.scrollPage').click(function() {
   var elementClicked = $(this).attr("href");
   var destination = $(elementClicked).offset().top;
   $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination-40}, 500 );
   return false;
});

$(function() {
  $("#games-index a.prevPage").click(function() {
    $.tracker.record("slider", "game-index", "back");
  });
  $("#games-index a.nextPage").click(function() {
    $.tracker.record("slider", "game-index", "forward");
  });
  $("#charities-index a.prevPage").click(function() {
    $.tracker.record("slider", "charity-index", "back");
  });
  $("#charities-index a.nextPage").click(function() {
    $.tracker.record("slider", "charity-index", "forward");
  });
  $("#charities-show a.prevPage").click(function() {
    $.tracker.record("slider", "charity-landing", "back");
  });
  $("#charities-show a.nextPage").click(function() {
    $.tracker.record("slider", "charity-landing", "forward");
  });
  $("#game_sessions-new a.prevPage").click(function() {
    $.tracker.record("slider", "game-landing", "back");
  });
  $("#game_sessions-new a.nextPage").click(function() {
    $.tracker.record("slider", "game-landing", "forward");
  });
  $("#home-index a.prevPage").click(function() {
    $.tracker.record("slider", "user-landing", "back");
  });
  $("#home-index a.nextPage").click(function() {
    $.tracker.record("slider", "user-landing", "forward");
  });
});
