Invite.SocialNetworks = {};
Invite.SocialNetworks.Facebook = {};

Invite.SocialNetworks.Facebook = {
		
	// used to track if we've posted from this page already.
	// in the litevite modal, we don't want to auto-post twice.
	alreadyPostedToWall: false,
		
	//Call this as the event handler when posting to facebook.
	//use additional tag elements on the anchor to tell it where to find what to post.
	//	<a 
	//		href="" [optional] what to use as the link back.
	//  	messageElement = "" [dom element to get the message to past...probably a text field]
	//  ...>post to facebook</a>
	//
	//  expects _INVITE, _FB_SHORT_STORY_TEMPLATE_ID, _BASEURL, _INVITE_IMAGE_SAFE_URL
	handlePostInviteToWall: function(event) {
		Event.stop(event);
    	var element = Event.findElement(event, 'a');
    	Invite.SocialNetworks.Facebook.postInviteToWall(element);
    	pageTracker._trackPageview('/LiteviteModal/facebook-post-to-wall-user-opened/')
	},
	
	//You can call this directly instead of using the event handle.
	//TODO: pass in the element that holds the messageElement and url.
	postInviteToWall: function(element) {
		//not doing anything with element now.
    	/* not including text
    	var text;
    	if (element.readAttribute("messageElement")) {
    		text = $F(element.readAttribute("messageElement"));
    	}
        if (text.length > 0) {
        	text = text.stripScripts().stripTags();//remove any scripts and ', "
        	if (text.length > 100) {
        		text = text.substring(0, 100) + "...";
        	}
        	text = "says '" + text + "'";
        } else {
        	text = " used 'invite' to create this.";
        }
        */
        //building strings.
        var params = {};
        params.url = _BASEURL + "/invite2/inviteId/" + _INVITE.invite.id + "/clickSource/facebook/";//TODO: allow this to be passed in from href attribute.
        params.template = _FB_SHORT_STORY_TEMPLATE_ID;
        params.title="wants to get friends together for: <br /><br /><strong>what:</strong>" + _INVITE.invite.title + " <br /><strong>where:</strong> " + _INVITE.invite.address.name + " <br /><strong>when:</strong>" + _INVITE.invite.date + " <br />";
        params.oneLiner = params.title + " - <a href='" + params.url + "'>RSVP Now!</a> -";
        params.body= "<a href='" + params.url + "'>RSVP Now</a> or <a href='" + params.url + "'>get more info.</a>";
        //params.invite = _INVITE.invite; //points to the big invite object written in json already.
        params.images = [{
	            "src":"" + _INVITE_IMAGE_SAFE_URL,
	            "href": params.url
	        }];
        
        //if ticketurl, else invite. event url, url.
        var ticketUrl = (_INVITE.invite.ticketUrl) ? _INVITE.invite.ticketUrl : _INVITE.invite.url ? _INVITE.invite.url : params.url;
        /*
         params.links = [
                        {"text":"Buy Tickets","href":ticketUrl},
                        {"text":"RSVP now", "href":params.url},
                        {"text":"Try invite", "href":_BASEURL + "/whatsup.iggli"}
                        ];
        */
        params.links = ticketUrl;
        Invite.SocialNetworks.Facebook.doPostToWall(params, null)

	},
	
	//You can call this directly instead of using the event handle.
	//TODO: pass in the element that holds the messageElement and url.
	postCommentToWall: function(text) {
        if (text.length > 0) {
        	text = text.stripScripts().stripTags();//remove any scripts and ', "
        	if (text.length > 100) {
        		text = text.substring(0, 100) + "...";
        	}
        	text = "<br />&quot;" + text + "&quot;";
        } else {
        	return;
        }
        //building strings.
        var params = {};
        params.url = _BASEURL + "/invite2/inviteId/" + _INVITE.invite.id + "/clickSource/facebook/";//TODO: allow this to be passed in from href attribute.
        params.template = _FB_SHORT_STORY_TEMPLATE_ID;
        params.title="commented on invite: <br /><br /><strong>what:</strong>" + _INVITE.invite.title + " <br /><strong>where:</strong> " + _INVITE.invite.address.name + " <br /><strong>when:</strong>" + _INVITE.invite.date + " <br />";
        params.oneLiner = params.title + " - <a href='" + params.url + "'>RSVP Now!</a> -";
        params.body= text + " <br /><br /><a href='" + params.url + "'>RSVP Now</a> or <a href='" + params.url + "'>join the conversation.</a>";
        //params.invite = _INVITE.invite; //points to the big invite object written in json already.
        params.images = [{
	            "src":"" + _INVITE_IMAGE_SAFE_URL,
	            "href": params.url
	        }];
        
        var ticketUrl = (_INVITE.invite.ticketUrl) ? _INVITE.invite.ticketUrl : _INVITE.invite.url ? _INVITE.invite.url : params.url;
        /*
         params.links = [
                        {"text":"Buy Tickets","href":ticketUrl},
                        {"text":"RSVP now", "href":params.url},
                        {"text":"Try invite", "href":_BASEURL + "/whatsup.iggli"}
                        ];
        */
        params.links = ticketUrl;
        Invite.SocialNetworks.Facebook.doPostToWall(params, null)

	},
	
	doPostToWall: function(params, callback) {
		if (!callback) callback = Invite.SocialNetworks.Facebook.callback;
		//alert(Object.values(params));
        var fbNewsFeedData = {
	          "fbOneLineMessage":params.oneLiner,
	          "fbShortStoryTitle":params.title ,
	          "fbShortStoryBody":params.body,
	          "images":params.images,
	          "actionLinks":params.links
	    };
        //alert(Object.toJSON(fbNewsFeedData));
        //alert(Object.toJSON(params));
		//alert(callback);
	    FB.ensureInit(function() {
	          FB.Connect.showFeedDialog(params.template, fbNewsFeedData, null, "", null, FB.RequireConnect.require, callback);
	    });
		
	},
	
	callback: function() {
    	try {
    		if (pageTracker) { 
				pageTracker._trackPageview('/LiteviteModal/facebook-post-to-wall-closed/');
    		}
		} catch(err) {
			//silent
		}
	}
	
}