var SERVER_URL = "http://gt.doflirt.com/friendGift/";
var ADD_SERVER_URL = "http://www.playgamesite.com/banner_420/";
var IMG_URL = SERVER_URL+"images/";
var user;
var userId = null, userName, userThumbnail, userProfile;
var selectedFriendId;
var selectedFriendName = "";
var selectedFriendThumbnail = "";
var allFriends = [];
var Request = new Object();
var osContainer;
var ownPhotos = false;
var canvas_url = "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=123842";


function getUser() {
	osContainer = opensocial.Container.get();
	var req = opensocial.newDataRequest();
   
	var paramViewer = {};
	paramViewer[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] =
			[MyOpenSpace.Person.Field.COUNTRY,
			 MyOpenSpace.Person.Field.PROFILE_URL,
			 MyOpenSpace.Person.Field.NAME];
     
	var paramOwner = {};
	paramOwner[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] =
			[MyOpenSpace.Person.Field.NAME];
     
	req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER, paramViewer), "viewer");
	req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER, paramOwner), "owner");
	req.send(resp_getUser);
}

function resp_getUser(data) {
    try{
        user = data.get("viewer").getData();
        userId = user.getId();
        userName = user.getField(opensocial.Person.Field.NAME);
        userProfile = user.getField(opensocial.Person.Field.PROFILE_URL);
        
        var owner = data.get("owner").getData(); 
		ownerId = owner.getId();
		
        if (userId == null || userId=="null"){
     	   showMask();
        }else{
        	getFriends();
        }
    }catch(ex){
    	showMask();
    }
}

function showMask(){
	 var bodyMask = document.createElement("div");
	 bodyMask.className = "body-mask";
	 bodyMask.id = "body-mask";
	 bodyMask.onclick = function(ev){
	  if (window.event) ev = window.event;
	  ev.cancelBubble = true;
	  return false;
	 }
	 document.body.appendChild(bodyMask);
	 
	 var wizardBox = document.createElement("div");
	 wizardBox.className = "wizardBox-dlg";
	 wizardBox.id = "wizardBox-dlg";
	 wizardBox.innerHTML = 
	 "<center><img src='"+IMG_URL+"arrow_jump.gif'></center>"+
	 "<div style='border: 3px solid red; padding:13px'>"+
	 "Add / Install this App to start using Tease Friend ! .</div>";
	 document.body.appendChild(wizardBox);
}


Request.sendPOST = function(url, data, responseHandler) {
	var os_params = {};
	os_params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	os_params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
	os_params[gadgets.io.RequestParameters.POST_DATA] = data;
	gadgets.io.makeRequest(url, responseHandler, os_params);
}

Request.sendGET = function(url, responseHandler) {
	var os_params = {};
	os_params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
	os_params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
	gadgets.io.makeRequest(url, responseHandler, os_params);
}

var Invite = function(){
	var curPage = 1;
	var containerId = "friend";
	var receivedFriendsCount = 0;
	var friendsTotalCount = 0;
	var cellCount=8;

return {
	prev: function(){
		_$(containerId+"_"+curPage).style.display = "none";
		_$(containerId+"_"+(curPage-1)).style.display = "";
		curPage--;
		_$(containerId).setAttribute("curPage", curPage);
		gadgets.window.adjustHeight();
	},

	next: function(){
		var nextPage = curPage + 1;
		if (_$(containerId+"_"+nextPage)){
			_$(containerId+"_"+nextPage).style.display = "";
			_$(containerId+"_"+(nextPage-1)).style.display = "none";
		}else{
			var height = _$(containerId+"_"+curPage).offsetHeight;
			_$(containerId+"_"+curPage).style.display = "none";
			_$(containerId).innerHTML += "<div id="+containerId+"_"+nextPage+"><div class=loading style='height:"+height+"px;'>Loading...</div></div>";
		Invite.req_getFriends(nextPage);
		}
		curPage++;
		_$(containerId).setAttribute("curPage", curPage);
		gadgets.window.adjustHeight();
	},

	req_getFriends: function(page){
		var req = opensocial.newDataRequest();
		MyOpenSpace.DefaultPageSize = cellCount*4;
		var params = {};
		params[opensocial.DataRequest.PeopleRequestFields.FIRST] = (page-1)*MyOpenSpace.DefaultPageSize;
		req.add(req.newFetchPeopleRequest("VIEWER_FRIENDS", params), "friends");
		req.send(Invite.resp_getFriends);
	},

	resp_getFriends: function(response){
		var friends = response.get("friends").getData().asArray();
		allFriends = allFriends.concat(friends);
		receivedFriendsCount += friends.length;
		friendsTotalCount = response.get('friends').getData().getTotalSize();
		var str = "<table width=100%>";
		for(var i=0; i<friends.length;i++) {
			if (i % cellCount == 0) str+= "<tr>";
				var friendId = friends[i].getField(opensocial.Person.Field.ID);
				var name = friends[i].getField(opensocial.Person.Field.NAME);
				var thumbnail = friends[i].getField(opensocial.Person.Field.THUMBNAIL_URL);
				thumbnail = thumbnail.replace("s_", "l_");

				var profile = friends[i].getField(opensocial.Person.Field.PROFILE_URL);
				
				str += "<td name=userCell width="+(100/cellCount)+"%  id='"+friendId+"_friend' >"+
						"<table valign=top width=100%>"+
							"<tr>"+
								"<td class=smallFont title='"+name+"'>"+name.substring(0,8)+"</td>"+
								"<td style='display:none' align=right><input checked type=checkbox name='checkBox' id='"+friendId+"' /></td>"+
							"</tr>"+
							"<tr>";
								if(ownPhotos) {
									str += 	"<td><img style='cursor:pointer' onclick='inviteFriend("+friendId+")'  class=smallImg src='"+thumbnail+"' /></td>";
								} else {
									str +=	"<td><img style='cursor:pointer' onclick='selectFriend( "+friendId+", \""+thumbnail+"\", \""+name+"\" )'  class=smallImg src='"+thumbnail+"' /></td>";
								}
						str += "</tr>"+
						"</table>"+
					"</td>";
				if (i % cellCount == cellCount-1) str += "</tr>";
		}
		var available = receivedFriendsCount < friendsTotalCount;
		if (available || curPage>1){
			str += "<tr><td colspan="+cellCount+" align=right>";
				if (curPage>1)
				str+=
					"<a href='javascript:Invite.prev()' style='margin-right:10px;font-size:14px;font-weight:bold;'>Previous</a>";
				if(available)
				str+=
					"<a href='javascript:Invite.next()' style='margin-right:10px;font-size:14px;font-weight:bold;'>Next</a>"+
			"</td></tr>";
		}
		str += "</table>";
		_$(containerId+"_"+curPage).innerHTML = str;
		gadgets.window.adjustHeight();
	},

	show: function(type){
		if(type == 'firstPage') {
			global_type = "save";
		} else {
			global_type = "";
		}
		var cont = _$(containerId);
		allFriends = [];
		curPage = 1;
		receivedFriendsCount = 0;
		friendsTotalCount = 0;
		
		cont.innerHTML = "<div id="+containerId+"_1></div>";
		cont.setAttribute("curPage", 1);
		
		Invite.req_getFriends(curPage);
	}
};
}();

function inviteFriend(id, callback){
	var imgsrc = "";
	if(ownPhotos) {
		imgsrc = SERVER_URL+"shared/"+globalGenImage;
	} else {
		imgsrc = SERVER_URL+"genSWF/"+userId+"/"+globalGenImage;
	}
	var title = "Tease Friend !!! ";
	var content =	"<span style='font-size:14px;color: #1A4460;'>I have made my funny picture :) !</span><br>"+
					"<a href='"+canvas_url+"'><img border='0' src='"+imgsrc+"' /></a><br />"+
					"<span style='font-size:14px;color: #1A4460;'><a target='_blank' href='"+canvas_url+"'>Make Your or Your Friends pictures too and send ! Click here !!!</a></span><br></br>"+
					"<a href='"+canvas_url+"'><span style='font-size:14px;color: #1A4460;text-decoration:underline;'>Tease Friends App </span></br></a>"+
					"<a href='"+canvas_url+"'><img src='"+IMG_URL+"/logo32.JPG' /><img src='"+IMG_URL+"/logo32.JPG' /><img src='"+IMG_URL+"/logo32.JPG' /><img src='"+IMG_URL+"/logo32.JPG' /><img src='"+IMG_URL+"/logo32.JPG' /></a>";
					
	postTo_(title, content, getFriendById(id), "COMMENTS", null);

}

var postTo_ = function(subject, content, receiver, postWhere, ptCallback){
	var postType = MyOpenSpace.PostTo.Targets[postWhere];
	var os_token = MyOpenSpace.MySpaceContainer.OSToken;
	var message = opensocial.newMessage(content);
	message.setField(opensocial.Message.Field.TITLE, subject);
	message.setField(opensocial.Message.Field.TYPE, postType);
	osContainer.postTo(os_token, message, receiver, ptCallback);
}

function loadSupportedTargets() {
	supported = osContainer.getMySpaceEnvironment().getSupportedPostToTargets();
    var temp = "<select id=\"target\">";
    for (var i = 0; i < supported.length; i++){
          temp += "<option value=\"" + supported[ i ] + "\">" + supported[ i ] + "</option>";
    }
    temp += "</select>";
    document.getElementById("targets").innerHTML = temp;
}

function getPhotos() {
    var personId = opensocial.DataRequest.PersonId.OWNER;
    var dr = opensocial.newDataRequest();
    var photoReq = dr.newFetchPhotosRequest(personId, {});

    dr.add(photoReq,'Photos');
    dr.send(response);
}

function checkPhotoPermissionResponse(result) {
    if(result == null) {
        alert("We can't access your photos unless you let us :(");    
    }
    else if(result["accesstopublicvideosphotos"]) {
        getPhotos();
    }
    else {
        alert("We can't access your photos unless you let us :(");
    }
}

function response(data){
    if(data.hadError()) {
        if(data.get("Photos").getErrorCode() == opensocial.ResponseItem.Error.UNAUTHORIZED) {
            opensocial.requestPermission(["accesstopublicvideosphotos"], "Because we need your photos!", checkPhotoPermissionResponse);
        }
    }
    else {
	ownPhotos = true;
	var cellCount = 8;
        var str = "<div>"+
			"<FIELDSET style='width: 700px; height: 300px; padding: 10px;border:1px solid #572559;'>"+
			"<LEGEND style='color: #F014D0'>"+
				"<span style='cursor:pointer;background-color: #CC11B0;color:white; font-size: 16px;border: 1px solid #E8A8F7; border-left: 0px;' onclick='getFriendsList()'> <b> &nbsp;Select Friend Photo &nbsp;</b> </span>"+
				"<span style='cursor:pointer;background-color: #FAE3FF; border: 1px solid #E8A8F7;'><b> &nbsp;Select Your Favorite Photo ! &nbsp; </b></span>"+
				"<span style='cursor:pointer;background-color: #CC11B0;color:white; font-size: 16px;border: 1px solid #E8A8F7; border-left: 0px;' onclick='getSharedStories()'> <b> &nbsp;Shared Funny Images &nbsp;</b> </span>"+
				"<span style='cursor:pointer;background-color: #CC11B0;color:white; font-size: 16px;border: 1px solid #E8A8F7; border-left: 0px;' onclick='uploadPhoto()'> <b> &nbsp;<span style='color:red'> New !</span> Upload Photo &nbsp;</b> </span>"+
			"</LEGEND>"+
			"<div style='overflow: auto;height: 300px;'>"+
				"<table width='100%'>";
       	var photos = data.get('Photos').getData().asArray();
        for(var i=0; i< photos.length; i++) {
		if (i % cellCount == 0) {
			str += "<tr>";
		}
		var imgUri = photos[i].getField(MyOpenSpace.Photo.Field.IMAGE_URI);
		str += "<td id='"+i+"_image' align=center height=80px width=90px>"+
				"<img height='70px' width='70px' class='smallImg_' onclick='selectImage(\""+imgUri+"\", "+i+")' src='"+imgUri+"' />"+
			"</td>";
		if (i % cellCount == cellCount-1) {
			str += "</tr>";
		}
		
        }
	str += 	"<tr>"+
			"<td id='next' align='right' colspan='"+cellCount+"'  style='margin-right:10px; padding-top:10px; font-size:15px;font-weight:bold; color: #1A4460; cursor:pointer;display:none;'>"+
				//"<span style='margin-right: 20px;'  onclick='getPhotos()'><img src='"+IMG_URL+"back.png' /></span>"+
				"<span onclick='selectBackgroundImg()'><img src='"+IMG_URL+"forward.png' /></span>"+
			"</td>"+
		"</tr>"+
		"</table></div></FIELDSET>";
	document.getElementById("container").innerHTML = str;
    }
}
