/*******************************************************************************

 

 Facebook Dock - L'Equipe.fr - Main Javascript

 

 Author : Hook Network SARL - http://www.hook-network.com

 

*******************************************************************************/



if (!window.HN) var HN = window.HN = {};

var userAgent = navigator.userAgent.toLowerCase();

HN.browser = {

	version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],

	safari: /webkit/.test( userAgent ),

	opera: /opera/.test( userAgent ),

	msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),

	mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )

};



HN.lequipe = {};

HN.lequipe.locals = {};

HN.lequipe.locals.base_url = "/facebook/";

HN.lequipe.CM = new HN.CookieManager();

HN.lequipe.fbwidget = {

	

	// Vars

	minWidth: 1000,

	marginsWidth: 21,

	contentBordersWidth: 1,

	maskUnfoldedWidth: 0, // set at the 1st resize call

	contentUnfoldedWidth: 0, // set at the 1st resize call

	maskFoldedWidth: 180, 

	contentFoldedLeft: -1000, // = minWidth

	contentFoldedWidth: 1179, // = (maskFoldedWidth - contentFoldedLeft) - contentBordersWidth;

	contentUnfoldedLeft: 0,

	resizeInterval : null,

	outWidth: null,

	connectedOnce: false,

	inputStatusFocusedOnce: false,

	liveFeedShowedOnce: false,

	profileLoaded: false,

	lastUpdatedFriendStatusLoaded: false,

	browserBoxShowed: false,

	optionsBoxShowed: false,

	statusBoxShowed: false,

	friendsBoxShowed: false,

	liveFeedShowed: false,

	dockFolded: true,

	dockShowed: true,

	

	// Functions

	onConnected: function (user_id) {

		//$("#fb_etat").append("Vous êtes d\u00e9j\u00e0 connect\u00e9 \u00e0 Facebook et \u00e0 cette application");

		if (!HN.lequipe.fbwidget.connectedOnce) {

			HN.lequipe.fbwidget.connectedOnce = true;
			
			FB.getLoginStatus(function(response) {
			if (response.session) {
					// user successfully logged in
					$("#fb-widget").show();
					
				HN.lequipe.fbwidget.loadProfile(function(){ HN.lequipe.fbwidget.TryUnfoldDock(); });

				HN.lequipe.fbwidget.getLastUpdatedFriendStatus(function() { HN.lequipe.fbwidget.TryUnfoldDock(); });

				

				// Logo options functions

				$("#fb-widget .fb-logo").click(function(){

					if (HN.lequipe.fbwidget.optionsBoxShowed)

						HN.lequipe.fbwidget.hideOptions();

					else

						HN.lequipe.fbwidget.showOptions();
						});
  } else {
    // user cancelled login
  }


				$("#fb-widget .fb-options-box-close").click(function(){ HN.lequipe.fbwidget.hideOptions(); });

				$("#fb-widget .fb-close-dock-link").click(function(){

					HN.lequipe.fbwidget.hideDock();

					//$("#fb_etat").html("<a href=\"javascript: HN.lequipe.fbwidget.showDock();\">Ouvrir le dock facebook</a>");

					if ($("#fb_etat"))

					{

						$("#fb_etat").html("<a href=\"javascript: HN.lequipe.fbwidget.showDock();\"><img src=\"/img_v5/FBConnect_light_large_short.gif\" title='Ouvrir le dock facebook / lequipe.fr' /></a>");

					}

				});

				
				$("#fb-widget .fb-disconnect-link").click(function(){ FB.logout(function (reponse){window.location.href=window.location.href; });});

				$("#fb-widget .fb-profile-pic").click(function(){ window.open("http://www.facebook.com", "facebook"); });

				

				// Status functions

				$("#fb-widget .fb-status-btn").click(function() { HN.lequipe.fbwidget.setStatus(); });

				$("#fb-widget .fb-status-update-box .fb_inputsubmit").click(function() { HN.lequipe.fbwidget.hideStatusBox(); });

				$("#fb-widget .fb-status-input").focus(function () {

					if (!HN.lequipe.fbwidget.inputStatusFocusedOnce) {

						HN.lequipe.fbwidget.inputStatusFocusedOnce = true;

						this.value = "";

					}

				});

				

				// Friends functions

				$("#fb-widget .fb-friends").click(function() {

					if (HN.lequipe.fbwidget.friendsBoxShowed)

						HN.lequipe.fbwidget.hideFriends();

					else

						HN.lequipe.fbwidget.showFriends();

				});

				$("#fb-widget .fb-friends-box-close").click(function() { HN.lequipe.fbwidget.hideFriends(); });

				

				// Live Feed functions

				$("#fb-widget .fb-lequipe-friends").click(function() {

					if (HN.lequipe.fbwidget.liveFeedShowed)

						HN.lequipe.fbwidget.hideLiveFeed();

					else

						HN.lequipe.fbwidget.showLiveFeed();

				});

				$("#fb-widget .fb-lequipe-friends-box-close").click(function() { HN.lequipe.fbwidget.hideLiveFeed(); });

				

				// Other functions

				$("#fb-widget .fb-become-fan").click(function() { window.open("http://www.new.facebook.com/pages/LEquipefr/76283417065", "devenirFan"); });

				

				
				if ($("#fb_etat"))

				{

					$("#fb_etat").html("<a href=\"javascript: FB.logout(function (rep){window.location.href=window.location.href;});\"><img src=\"/img_v5/FBConnect_light_large_short.gif\" title='Se d\u00e9connecter' /></a>");

				}

			});

		}

	},

	onNotConnected: function () {


					if ($("#fb_etat"))

					{

						$("#fb_etat").html("<a href=\"#\" onclick=\"HN.lequipe.fbwidget.connect(); return false;\"><img src=\"/img_v5/FBConnect_light_large_short.gif\" title='Se connecter avec son compte facebook' /></a>");

					}

				
 FB.XFBML.parse();
	},

	connect_auto: function () {

		if (HN.browser.opera || (HN.browser.msie && HN.browser.version < 7)) {

			HN.lequipe.fbwidget.showBrowserBox();

		}

		else {
			FB.getLoginStatus(function (reponse)
			{
			
			if (reponse.session)
				{
					HN.lequipe.fbwidget.onConnected();
				}
				else
				{
				HN.lequipe.fbwidget.onNotConnected();
				}
			});

		}

	},
	connect: function () {

		if (HN.browser.opera || (HN.browser.msie && HN.browser.version < 7)) {

			HN.lequipe.fbwidget.showBrowserBox();

		}

		else {

			FB.login(function (reponse)
			{
			if (reponse.session)
				{
					HN.lequipe.fbwidget.onConnected();
				}
				else
				{
				HN.lequipe.fbwidget.onNotConnected();
				}
			}); //, {perms:'read_stream,publish_stream'});

		}

	},

	showBrowserBox: function () { // Also used to reposition the box if the window is resized

		$("#fb-wrapper .fb-browser-box").css({

			left: Math.round(($(window).width() - $("#fb-wrapper .fb-browser-box").width()) / 2),

			bottom: Math.round(($(window).height() - $("#fb-wrapper .fb-browser-box").height()) / 2)

		});

		if (!HN.lequipe.fbwidget.browserBoxShowed) {

	/*		$("#fb-wrapper .fb-browser-box").show();

			HN.lequipe.fbwidget.browserBoxShowed = true;*/

		}

	},

	hideBrowserBox: function () {

		$("#fb-wrapper .fb-browser-box").hide();

		HN.lequipe.fbwidget.browserBoxShowed = false;

	},

	showOptions: function () {

		$("#fb-widget .fb-options-box").css({ display: "block" });

		HN.lequipe.fbwidget.hideFriends();

		HN.lequipe.fbwidget.hideLiveFeed();

		HN.lequipe.fbwidget.optionsBoxShowed = true;

	},

	hideOptions: function () {

		$("#fb-widget .fb-options-box").css({ display: "none" });

		HN.lequipe.fbwidget.optionsBoxShowed = false;

	},

	showStatusBox: function () { // Also used to reposition the box if the window is resized

		$("#fb-widget .fb-status-update-box").css({

			left: Math.round(($(window).width() - $("#fb-widget .fb-status-update-box").width()) / 2),

			bottom: Math.round(($(window).height() - $("#fb-widget .fb-status-update-box").height()) / 2)

		});

		if (!HN.lequipe.fbwidget.statusBoxShowed) {

			$("#fb-widget .fb-status-update-box").show();

			HN.lequipe.fbwidget.statusBoxShowed = true;

		}

	},

	hideStatusBox: function () {

		$("#fb-widget .fb-status-update-box").hide();

		HN.lequipe.fbwidget.statusBoxShowed = false;

	},

	friendsBoxIntervalCheck: null,

	checkFriendsBoxSize: function (check) {

		if (check) {

			var box_out = $("#fb-widget .fb-friends-box-out");

			var box_in = $("#fb-widget .fb-friends-box-in");

			HN.lequipe.fbwidget.friendsBoxIntervalCheck = setInterval(function(){

				var final_height;

				var box_in_height = box_in.height();

				var max_height = Math.round(($(window).height()-(25+15+4))*0.80);

				

				if (box_in_height > max_height)

					final_height = max_height;

				else

					final_height = box_in_height;

				

				if (box_out.height() != final_height)

					box_out.height(final_height);

			},13);

		}

		else {

			clearInterval(HN.lequipe.fbwidget.friendsBoxIntervalCheck);

		}

	},

	showFriends: function () {

		$("#fb-widget .fb-friends-box").css({ display: "block" });

		var html ="";
		var session  = FB.getSession();
		var user_id = session.uid;
		
		var depuis = Math.floor(new Date().getTime()/1000) - (2*24*60*60);

		var fbquery = "select uid,status_id,message, time from status where uid in (select uid2 from friend where uid1={0}) and time > {1} limit {2}";
		
		
		var query = FB.Data.query(fbquery, user_id,depuis,10);
			query.wait(function(rows) {
			for (var i=0;i<rows.length;i++)
			{
			
			html += "<div class=\"fb-friends-box-friend\">";
			html +="<div class=\"fb-friends-box-pic\" onclick=\"window.open('http://www.facebook.com/profile.php?id="+rows[i]['uid']+"','friend"+rows[i]['uid']+"');\"><fb:profile-pic uid='"+rows[i]['uid']+"' size='square' linked='false' facebook-logo='false'></fb:profile-pic></div>";
			html += "<div class=\"fb-friends-box-infos\">";
			html += "<div class=\"fb-friends-box-name\"><fb:name uid='"+rows[i]['uid']+"' linked='false'></fb:name></div>";
			html +="<div class=\"fb-friends-box-status\">"+rows[i]['message']+ "</div>";
			html +="</div>";
			html +="</div>";	
			
			}
		$("#fb-widget .fb-friends-box-in").html(html);
		FB.XFBML.parse();
		

		HN.lequipe.fbwidget.hideLiveFeed();

		HN.lequipe.fbwidget.friendsBoxShowed = true;

		HN.lequipe.fbwidget.checkFriendsBoxSize(true);
			});
		
		
		
		 

	},
	
	hideFriends: function () {

		$("#fb-widget .fb-friends-box").css({ display: "none" })

		HN.lequipe.fbwidget.friendsBoxShowed = false;

		HN.lequipe.fbwidget.checkFriendsBoxSize(false);

	},

	liveFeedIntervalCheck: null,

	checkLiveFeedSize: function (check) {

		if (check) {

			var box_out = $("#fb-widget .fb-lequipe-friends-box-out");

			var box_in = $("#fb-widget .fb-lequipe-friends-box-in");

			HN.lequipe.fbwidget.liveFeedIntervalCheck = setInterval(function(){

				var final_height;

				var box_in_height = box_in.height();

				var max_height = Math.round(($(window).height()-(25+15+4))*0.80);

				

				if (box_in_height > max_height)

					final_height = max_height;

				else

					final_height = box_in_height;

				

				if (box_out.height() != final_height)

					box_out.height(final_height);

			},13);

		}

		else {

			clearInterval(HN.lequipe.fbwidget.liveFeedIntervalCheck);

		}

	},

	showLiveFeed: function () {

		if (!HN.lequipe.fbwidget.liveFeedShowedOnce) {

			var xfbml_livefeed = '<fb:comments xid="lequipefr001" simple="1" width="600px" numposts="5" css="http://www.lequipe.fr/facebook/css/live_feed.css"  title="Live Feed L\'Equipe.fr" url="http://www.lequipe.fr"></fb:comments>';
			$("#fb-widget .fb-lequipe-friends-box-in").html(xfbml_livefeed);
			FB.XFBML.parse();

			$("#fb-widget .fb-lequipe-friends-box-in").css({ height: "auto" });
			
			HN.lequipe.fbwidget.liveFeedShowedOnce = true;

		}

		$("#fb-widget .fb-lequipe-friends-box").css({ display: "block" });

		HN.lequipe.fbwidget.hideFriends();

		HN.lequipe.fbwidget.liveFeedShowed = true;

		HN.lequipe.fbwidget.checkLiveFeedSize(true);

	},

	hideLiveFeed: function () {

		$("#fb-widget .fb-lequipe-friends-box").css({ display: "none" })

		HN.lequipe.fbwidget.liveFeedShowed = false;

		HN.lequipe.fbwidget.checkLiveFeedSize(false);

	},

	facebook_prompt_permission: function (permission, callbackFunc) {

		FB.getLoginStatus(callbackFunc);

	},

	loadProfile: function () {

		var callback_func = null;

		if (arguments.length > 0 && typeof arguments[0] == "function")

			callback_func = arguments[0];
	
		var session = FB.getSession();
		if (!session)
		{
		return false;
		}

		var pic = document.createElement("img");
		pic.src = "https://graph.facebook.com/"+session.uid+"/picture";
		$("#fb-widget .fb-profile-pic").append(pic);		
		var depuis = Math.floor(new Date().getTime()/1000) - (7*24*60*60);
		
		FB.api("/me/statuses",{limit:1,since:depuis},function (flux)
		{
			if (flux.data.length > 0)
			{
				$("#fb-widget .fb-status-input").val(flux.data[0].message);
			}
		});
		
		HN.lequipe.fbwidget.profileLoaded = true;

		if (callback_func) callback_func();
		
		
		

		

	},

	setStatus: function () {

	
		var user_status = $("#fb-widget .fb-status-input").val();
		
		if (user_status > 240)
		{
		return false;}
		if (user_status == "")
		{
			//on détruit le statut
		/*	FB.api("/me/statuses",{limit:1},function (flux)
			{
				if (flux.data.length > 0)
				{
					var id_statut = flux.data[0].id;
					FB.api(id_statut,{method:'delete'},function (reponse)
					{
					
					});
				}
			});			
			*/
			
			
			return true;
		}
		FB.api("/me/feed",{method:'post',message:user_status},function (reponse)
		{
		if (reponse && !reponse.error)
		{
			HN.lequipe.fbwidget.showStatusBox();
		}
		});

	},

	getLastUpdatedFriendStatus: function () {

			var callback_func = null;

		if (arguments.length > 0 && typeof arguments[0] == "function")

			callback_func = arguments[0];

		var html ="";
		var session  = FB.getSession();
		var user_id = session.uid;
		
		var depuis = Math.floor(new Date().getTime()/1000) - (2*24*60*60);
		

		var fbquery = "select uid,status_id,message, time from status where uid in (select uid2 from friend where uid1={0}) and time > {1} limit 1";
		
		var query = FB.Data.query(fbquery, user_id, depuis);
			query.wait(function(rows) {
			
			$("#fb-widget .fb-friends-pic").html("<fb:profile-pic uid=\""+rows[0]["uid"]+"\" width=\"24\" height=\"24\" linked=\"false\" facebook-logo=\"false\"></fb:profile-pic>");
			$("#fb-widget .fb-friends").css({ width: "auto" });
			var message = rows[0]["message"];
				if (message.length > 25) {

				message = message.substr(0,23)+"...";

			}

			$("#fb-widget .fb-friends-sep").show();

			$("#fb-widget .fb-friends-status").show().html(message);
				
		$("#fb-widget .fb-friends-box-in").html(html);
		FB.XFBML.parse();
		
				HN.lequipe.fbwidget.lastUpdatedFriendStatusLoaded = true;

				if (callback_func) callback_func();
		
			});
	},

	TryUnfoldDock: function () {

		if (HN.lequipe.fbwidget.profileLoaded && HN.lequipe.fbwidget.lastUpdatedFriendStatusLoaded) {

			var dockWasFolded = HN.lequipe.CM.read("fb-dock-folded");

			if (!dockWasFolded || dockWasFolded == "0")

				HN.lequipe.fbwidget.unFoldDock();

		}

	},

	showDock: function () {

		$("#fb-widget").show();

		//$("#fb_etat").html("<a href=\"\" onclick=\"FB.Connect.logoutAndRedirect(window.location.href);\">Se d\u00e9connecter</a>");

		if ($("#fb_etat"))

		{

			$("#fb_etat").html("<a href=\"#\" onclick=\"FB.logout(function (rep){window.location.href=window.location.href;});\"><img src=\"/img_v5/FBConnect_light_large_short.gif\" title='Se d\u00e9connecter' /></a>");

		}

	},

	hideDock: function () {

		$("#fb-widget").hide();

	},

	foldDock: function () {

		HN.lequipe.fbwidget.hideFriends();

		HN.lequipe.fbwidget.hideLiveFeed();

		$("#fb-widget .fb-bar-content").animate({

			width: HN.lequipe.fbwidget.contentFoldedWidth+"px",

			left: HN.lequipe.fbwidget.contentFoldedLeft+"px"

		},{

			duration: 500,

			complete: function() {

				HN.lequipe.fbwidget.dockFolded = true;

				$("#fb-widget .fb-bar-mask").width(HN.lequipe.fbwidget.maskFoldedWidth);

				$("#fb-widget .fb-dbl-arrow").removeClass("fb-dbl-arrow-left");

				$("#fb-widget .fb-dbl-arrow").addClass("fb-dbl-arrow-right");

				

				// Writing cookie

				var date = new Date;

				date.setMonth(date.getMonth()+1);

				HN.lequipe.CM.write("fb-dock-folded", "1", date);

			}

		});

	},

	unFoldDock: function () {

		$("#fb-widget .fb-bar-mask").width(HN.lequipe.fbwidget.maskUnfoldedWidth);

		$("#fb-widget .fb-bar-content").animate({

			width: HN.lequipe.fbwidget.contentUnfoldedWidth+"px",

			left: HN.lequipe.fbwidget.contentUnfoldedLeft+"px"

		},{

			duration: 500,

			complete: function() {

				HN.lequipe.fbwidget.dockFolded = false;

				$("#fb-widget .fb-dbl-arrow").removeClass("fb-dbl-arrow-right");

				$("#fb-widget .fb-dbl-arrow").addClass("fb-dbl-arrow-left");

				

				// Writing cookie

				var date = new Date;

				date.setMonth(date.getMonth()+1);

				HN.lequipe.CM.write("fb-dock-folded", "0", date);

			}

		});

	}

};



$(document).ready(function(){
window.fbAsyncInit = function() {
			 FB.init({
			   appId: "90f417b3796ccc719edc79345ef7c13d",
			   cookie: true, // 
			   status: true, // 
			   xfbml: true
			 });
			
  FB.Event.subscribe('edge.create',  log_like_facebook);
  
  HN.lequipe.fbwidget.connect_auto();				  

			};
			 // this will fire when any of the like widgets are "liked" by the user

			
			(function() {
			 var e = document.createElement('script'); e.async = true;
			 e.src = document.location.protocol + '//connect.facebook.net/fr_FR/all.js';
			 document.getElementById('fb-root').appendChild(e);
			}());



			var timestamp = Math.floor((new Date()).getTime() / 1000);


	
	

	// Preload Image

	var imageSrcList = ["dbl-arrow-left.png", "dbl-arrow-right.png", "loading.gif"];

	for(var i=0, max=imageSrcList.length; i < max; i++) {

		var img = new Image();

		img.src = HN.lequipe.locals.base_url+"images/"+imageSrcList[i];

	}

	
	var wv = HN.lequipe.fbwidget;

	$("#fb-widget .fb-dbl-arrow").click(function(){

		if (wv.dockFolded)

			wv.unFoldDock();

		else

			wv.foldDock();

	});

	

	$("#fb-wrapper .fb-browser-box .fb_inputsubmit").click(function() { wv.hideBrowserBox(); });

	

	// Mozilla browsers (firefox) only fire a onresize event once the resize is finished,

	// so we hook to the window jquery mouseleave event a interval check which watch out for width modification

	if (HN.browser.mozilla) {

		$(window).bind("mouseleave", function(e){

			wv.resizeInterval = setInterval(function(){

				var w = $(window).width();

				if (w != wv.outWidth) $(window).resize();

			}, 100);

		});

		$(window).bind("mouseenter", function(e){

			clearInterval(wv.resizeInterval);

		});

	}

	

	$(window).resize(function(){

		wv.outWidth = $(window).width();

		var width = ($(window).width() - wv.marginsWidth);

		if (width < wv.minWidth)

			width = wv.minWidth;

		

		wv.maskUnfoldedWidth = width;

		wv.contentUnfoldedWidth = width-wv.contentBordersWidth;

		if (!wv.dockFolded) {

			$("#fb-widget .fb-bar-mask").width(wv.maskUnfoldedWidth+"px");

			$("#fb-widget .fb-bar-content").width(wv.contentUnfoldedWidth+"px");

		}

		if (wv.statusBoxShowed) {

			wv.showStatusBox();

		}

		if (wv.browserBoxShowed) {

			wv.showBrowserBox();

		}

		

	});
$(window).resize();





});

function log_like_facebook(adresse,widget)
{
FB.api("/me/",function (infos)
{

$.ajax({url:"/facebook/logs_appels.php",type:'post',data:"action=like&adresse="+adresse+"&uid="+infos.id+"&nom="+infos.name});
});

} 
