﻿

function FaceBook() {
    this.profileName = ""; //Required Field
    this.accessToken = "", //Required Field
    this.maxNo = 10;
	this.msgLength = 100;
    this.albumID = "";
    this.albumName = "";
    this.faceBookAPIURL = "https://api.facebook.com/method/";
    this.faceBookGraphAPI = "http://graph.facebook.com/";
	this.faceBookURL = "http://facebook.com/";
	this.url = "";
    this.getAlbumMethod = "photos.getalbums";
    this.getPicsMethod = "photos.get";
    this.objName = "FaceBookGalleryObj";
	this.divName = "";
    this.albumFBLink = "";
    this.albumPics = new Array();
    this.wallPosts = new Array();
}

function FaceBookPics() {
    this.picID = "";
    this.pic = new Pic();
    this.smallPic = new Pic();
    this.bigPic = new Pic();
}

function Pic() {
    this.width = "";
    this.height = "";
    this.src = "";
}

function Post() {
    this.message = "";
    this.name = "";
	this.formatedMsg = "";
	this.from = "";
	this.fromID = "";
}

FaceBook.prototype.__GetFeed = function() {
var url = this.faceBookGraphAPI + this.profileName + "/feed?callback=" + this.objName + ".__FaceBookWallFeed";
    document.writeln('<script type="text/javascript" src="' + url + '"></script>');
}

FaceBook.prototype.__GetAlbumID = function() {
    if (this.albumID != "") {
        var url = this.faceBookAPIURL + this.getPicsMethod + "?aid=" + this.albumID + "&access_token=" + this.accessToken + "&format=json&callback=" + this.objName + ".__FaceBookPicsFeed";
        document.writeln('<script type="text/javascript" src="' + url + '"></script>');
    }
    else {
        var url = this.faceBookAPIURL + this.getAlbumMethod + "?uid=" + this.profileName + "&access_token=" + this.accessToken + "&format=json&callback=" + this.objName + ".__FaceBookAlbumsFeed";
        document.writeln('<script type="text/javascript" src="' + url + '"></script>');
    }
}

FaceBook.prototype.__FaceBookWallFeed = function(data) {
	var profURL = "";
    for (var post in data.data) {
        if (data.data[post]['message'] != null) {
            postObj = new Post();
            postObj.message = data.data[post]['message'].length > this.msgLength ? data.data[post]['message'].substr(0, this.msgLength) + '....': data.data[post]['message'];
            postObj.name = data.data[post]['name'];
			postObj.from = data.data[post]['from']['name'];
			postObj.fromID = data.data[post]['from']['id'];
			profURL = "";
			if(this.url != null && this.url != "" && this.url.indexOf("facebook.com") > 0)
			{
				profURL = this.url;
			}
			else
			{
				profURL = this.faceBookURL + '/' + this.profileName;
			}
			postObj.formatedMsg = '<a target="_blank" href="'+this.faceBookURL + 'profile.php?id=' + postObj.fromID + '"><b>' + postObj.from + ': </b></a>' + postObj.message + '<a target="_blank" href="'+ profURL + '" title="view post on facebook"><span>'+fb_relative_time(data.data[post]['created_time'])+'</span></a>';
            this.wallPosts.push(postObj);
        }
		if(this.wallPosts.length >= this.maxNo)
			break;
    }
	//document.writeln('<script type="text/javascript"> document.getElementById("' + this.divName +'").innetHTML = "' + this.wallPosts[0].message + '" </script>');
}

FaceBook.prototype.__FaceBookAlbumsFeed = function(data) {
	if(this.albumName == null)
		this.albumName = "";
    for (var albm in data) {
        if (data[albm]['name'].toString().toLowerCase() == this.albumName.toString().toLowerCase()) {
            this.albumName = data[albm]['name'];
            this.albumFBLink = data[albm]['link'];
            this.albumID = data[albm]['aid'];
            break;
        }
    }
    if (this.albumID == null || this.albumID == "")
    {
        this.albumName = data[0]['name'];
        this.albumID = data[0]['aid'];
        this.albumFBLink = data[0]['link'];    
    }
    var url = this.faceBookAPIURL + this.getPicsMethod + "?aid=" + this.albumID + "&access_token=" + this.accessToken + "&format=json&callback=" + this.objName + ".__FaceBookPicFeed";
    document.writeln('<script type="text/javascript" src="' + url + '"></script>');
}

FaceBook.prototype.__FaceBookPicFeed = function(data) {
    for (var pics in data) {
        picObj = new FaceBookPics();
        picObj.picID = data[pics]['pid'];
		
        picObj.pic.src = data[pics]['src'];
        picObj.pic.width = data[pics]['src_width'];
        picObj.pic.height = data[pics]['src_height'];
		
		picObj.smallPic.src = data[pics]['src_small'];
		picObj.smallPic.width = data[pics]['src_small_width'];
        picObj.smallPic.height = data[pics]['src_small_height'];
		
		picObj.bigPic.src = data[pics]['src_big'];
		picObj.bigPic.width = data[pics]['src_big_width'];
        picObj.bigPic.height = data[pics]['src_big_height'];
		
        this.albumPics[this.albumPics.length] = picObj;
		if(this.albumPics.length >= this.maxNo)
			break;
    }
    //printPics();
}

function parseFBDate(fbDate)
{
var arrDateTime = fbDate.split("T");
var strTimeCode = arrDateTime[1].substring(0, arrDateTime[1].indexOf("+"));
var arrDate = arrDateTime[0].replace(/-/g,'/');
var valid_date = new Date(arrDate);
var arrTimeCode = strTimeCode.split(":");
valid_date.setHours(arrTimeCode[0]);
valid_date.setMinutes(arrTimeCode[1]);
valid_date.setSeconds(arrTimeCode[2]);
return valid_date;
}
function fb_relative_time(time_value) {
      var parsed_date = parseFBDate(time_value); //parse_date(time_value);
      var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
	  var delta = parseInt(((relative_to.getTime() - parsed_date.getTime()) / 1000) + relative_to.getTimezoneOffset()*60);
	  var r = '';
      if (delta < 60) {
	r = delta + ' seconds ago';
      } else if(delta < 120) {
	r = 'a minute ago';
      } else if(delta < (45*60)) {
	r = (parseInt(delta / 60, 10)).toString() + ' minutes ago';
      } else if(delta < (2*60*60)) {
	r = 'an hour ago';
      } else if(delta < (24*60*60)) {
	r = '' + (parseInt(delta / 3600, 10)).toString() + ' hours ago';
      } else if(delta < (48*60*60)) {
	r = 'a day ago';
      } else {
	r = (parseInt(delta / 86400, 10)).toString() + ' days ago';
      }
      return 'about ' + r;
    }

