var SERVER_URL = "http://gt.doflirt.com/myspace/graphic/drawing/";
var IMG_URL = SERVER_URL + "images/";
var APP_NAME = "Simple Drawing!";
var SWF_NAME = SERVER_URL+"draw.swf";
var Request = new Object();
var user;
var userId = null, userName, userThumbnail, userProfile;
var canvas_url = "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=133679";
var puzzleUrl = "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId=137422";
var sendingImage = "";

function getUser() {
	osContainer = opensocial.Container.get();
	var req = opensocial.newDataRequest();
   
	var paramViewer = {};
	paramViewer[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] =
			[MyOpenSpace.Person.Field.PROFILE_URL,
			 MyOpenSpace.Person.Field.NAME,
			 MyOpenSpace.Person.Field.THUMBNAIL_URL];
     
	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);
        userThumbnail = user.getField(opensocial.Person.Field.THUMBNAIL_URL);
        
        var owner = data.get("owner").getData(); 
		ownerId = owner.getId();
		
        if (userId == null || userId=="null"){
     	   showMask();
        }else{
        	fillHTML();
        }
    }catch(ex){
    	//showError(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 #8E361C; padding:13px'>"+
	 "Add / Install this App to start using <b> "+APP_NAME+".</b></div>";
	 document.body.appendChild(wizardBox);
}

function showError(error){
	 var bodyMask = document.createElement("div");
	 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.innerHTML = "<div>"+error+"</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 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);
}

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

	show: function(id, title, img){
		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 url = "http://adturns.com/channelStatistics.php?act_own=32&socialType=myspace&appId=drawing&userId="+userId+"&channel=comment";
	Request.sendGET(url, "", "");
	
    var subject = APP_NAME;
    var content = 	"<img style='width:300px' src='"+SERVER_URL+sendingImage+"' /><br />"+
					"<span style='color: #3B5998; font-size: 13px;'>"+
						"<a href='"+canvas_url+"'>Generated By <i>"+APP_NAME+"</i> App.</a>"+
					"</span>";
	
	postTo_(subject, content, getFriendById(id), "COMMENTS", callback);
}

var getFriendById = function(id){
	for (var i=0;i<allFriends.length;i++){
		if (allFriends[i].getId() == id) return allFriends[i];
	}
}