var SERVER_URL = "http://s2.appotec.com/ha/gift_m/";
var SERVICE_URL = SERVER_URL;
var IMG_URL = SERVER_URL+"images/";
var PRESENT_IMG_URL = SERVER_URL+"uploads/";
var container;
var errorDiv;
var hasTaken;
var approved;
var osContainer;
var surveyImgUrl;
var PAGE=0;
var allFriends = []; 
var friendsTotalCount = 1;
var friendPage = 0;
var friendsToInvite = [];
var app=null;
var selectedFriend;
var selectedGift;
var userId=null, userThumbnail, userName, userProfile, userAge, userGender;
var CONTENT_TYPE_JSON = gadgets.io.ContentType.JSON;
var CONTENT_TYPE_TEXT = gadgets.io.ContentType.TEXT;
var loadingImgStr = '<img src="'+IMG_URL+'loading.gif" />';
var MP_APP = {};
var tableSuffix = "angels";
var GIFT_COUNT = 9;

//MyOpenSpace.ClientLibraries.includeScript(MyOpenSpace.ClientLibraries.Scripts.MYSPACE_WIDGETS);

var initApp=function(response){
	app=response.data;
	init(); 
}

var getAppInfo = function(){
	var mpApp = opensocial.getEnvironment().currentApplication;
	MP_APP.ICON_LARGE = mpApp.getField("ICON_LARGE");
	MP_APP.ICON_SMALL = mpApp.getField("ICON_SMALL");
	MP_APP.ID = mpApp.getField("ID");
	MP_APP.NAME = mpApp.getField("NAME");
	MP_APP.PROFILE_URL = mpApp.getField("PROFILE_URL");
	MP_APP.CANVAS_URL = "http://profile.myspace.com/Modules/Applications/Pages/Canvas.aspx?appId="+MP_APP.ID;
}

var init = function(){
	req_getLevels(false);
	embedGoogleAnalitics();
	$("advert").innerHTML = getAdVert();
}


var req_getInbox = function(page){
	if (!page) page = 1;
	Request.sendGET(SERVICE_URL+"q"+presentId+"?tableSuffix="+tableSuffix+"&t=inbox_din&userId="+userId+'&ajax=1&page='+page+'&count='+GIFT_COUNT, resp_getInbox, CONTENT_TYPE_JSON);
}

var resp_getInbox = function(response){
	var str = "<center style='font-size:18px;'>Your collection is not full yet. <br><a style='color:#FF84BD' href='javascript:postBulletin("+response.data.totalCount+")'>Ask your friends to send you more "+presentName+"s. Post Bulletin.</a></center>";
	str += getInboxHTML(response, "req_getInbox", "you");
	container.innerHTML = str;
}

var getInboxHTML = function(response, handler, receiverName){
	var gifts = response.data.gifts;
	var totalCount = response.data.totalCount;
	var str = "<table>";
	var colCount = 3;
	if (totalCount == 0) return "";	
	for (var i=0;i<gifts.length;i++){
		var gift = gifts[i];
		if (i % colCount == 0)
			str += '<tr>';
		str +=
			'<td><table><tr>'+
			'<td>'+
				'<img name=gift giftId='+gift.lvl_id+' src="'+SERVER_URL+gift.img_url+'_160.jpg" />'+
			'</td>'+
			'<td>'+
				'<div style="color: #333; font-size: 13px; margin-bottom: 5px;">'+
					'<a target="_blank" href="'+gift.from_profile_url+'">'+gift.from_username+'</a>'+
					'<span style="color: #B1B1B1"> has sent </span>'+
					"<div style='color: #59922F; font-size: 13px;'>"+gift.gift_name+"</div>"+
					'<span style="color: #B1B1B1">to '+receiverName+' </span>'+
				'</div>'+
				'<div style="color: #333; font-size: 11px;">'+
					gift.present_create_date+
				"</div>"+
			"</td>"+
			"</tr></table></td>";

		if (i % colCount == colCount-1)
			str += "</tr>";
	}
	var pageCount = Math.ceil(totalCount / GIFT_COUNT);
	str += getPagingHTML(colCount, pageCount, response.data.currentPage, "req_getInbox");
	str += "</table>";
	return str;
}

var resp_getRBInbox = function(response){
	var gifts = response.data.gifts;
	var str = "<table cellspacing=0 cellpadding=0><tr><td class=header><a href='javascript:showTab(1, true)'>Your "+presentName+"s</a></td></tr>"+
	"<tr><td class=content>";
	for (var i=0;i<gifts.length;i++){
		str += "<div style='margin:5px 0px;'><img width=50px src='"+SERVER_URL+gifts[i].img_url+"_50.jpg'></div>"+
			   "<div class=giftName>"+gifts[i].gift_name+"</div>";
	}
	str += 
	"<div style='margin-top:8px;'><a class=giftName href='javascript:showTab(1, true)'>more...</a></div>"+
	"</td></tr></table>";
	$("inbox_left").innerHTML = str;
}

var levels = [];

var req_getLevels = function(refresh){
	container.innerHTML = 
	'<table width=100%><tr>'+
		'<td id=inbox_left width=110px valign=top style="padding:0px 10px;"></td>'+
		'<td id=gamespace valign=top></td>'+
		//'<td id=inbox_right width=17% valign=top style="padding:0px 10px;">'+getAdVert()+'</td>'+
	'</tr></table>';
	Request.sendGET(SERVICE_URL+"q"+presentId+"?t=levels&userId="+userId+'&ajax=1', resp_getLevels, CONTENT_TYPE_JSON, false);
	Request.sendGET(SERVICE_URL+"q"+presentId+"?tableSuffix="+tableSuffix+"&t=inbox_din&userId="+userId+'&ajax=1&page=1&count=5', resp_getRBInbox, CONTENT_TYPE_JSON, refresh);
}

var resp_getLevels = function(response){
	levels = response.data;
	giftImgUrls = [];
	for (var i=0;i<levels.length;i++){
		giftImgUrls[i] = SERVER_URL+levels[i].img_url+"_100.jpg";
	}
	req_getFriends();
}

var getRandomElement = function(ar, limit){
	var limit = limit ? limit : ar.length; 
	return ar[Math.floor(Math.random()*(limit-1))];
}

var nextRandomPair = function(){
	var lvl = getRandomElement(levels);
	var friend = getRandomElement(allFriends);
	if (!$("currentGift")){
		var str = 
		"<center><table cellspacing=13>"+
		"<tr><td colspan=3 align=center style='margin-bottom:10px; font-size:18px;color:#5283CE'>"+
			"Help your friends in making their collection of "+presentName+"s."+
			"<p style='margin:5px 0px; color:#FF84BD'>Send "+presentName+"s to your friends.</p>"+
			"And soon you'll see the feedback ;)"+	
		"</td></tr>"+
		"<tr style=height:190px;>"+
		"<td id=currentGift style='border:1px solid #cccccc;padding:10px; width:180px;' align=center>"+
			"<img src='"+SERVER_URL+lvl.img_url+"_160.jpg'>"+ 
			"<br><b>"+lvl.name+"</b>"+
		"</td>"+
		"<td style='width:60px;' align=center>"+
			"<a href='javascript:sendGift(true)'><img src='http://gt.doflirt.com/SendGlitter/genimg/365337006/03_glitter.gif?t=1232191279734'></a>"+
			"<br><br><br>"+
			"<a href='javascript:nextRandomPair()'><img src='http://gt.doflirt.com/SendGlitter/genimg/365337006/04_glitter.gif?t=1232191279734'></a>"+
		"</td>"+
		"<td id=currentFriend style='border:1px solid #cccccc;padding:10px; width:180px;' align=center>"+
			"<img src='"+friend.getField(opensocial.Person.Field.THUMBNAIL_URL)+"'>"+
			"<br><b>"+friend.getDisplayName()+"</b>"+
		"</td>"+
		"</tr></table></center>";
		$("gamespace").innerHTML = str;
	}else{
		$("currentGift").innerHTML = 
			"<img src='"+SERVER_URL+lvl.img_url+"_160.jpg'>"+ 
			"<br><b>"+lvl.name+"</b>";
		$("currentFriend").innerHTML = 
			"<img src='"+friend.getField(opensocial.Person.Field.THUMBNAIL_URL)+"'>"+
			"<br><b>"+friend.getDisplayName()+"</b>";
	}
	selectedFriend = friend;
	selectedGift = lvl;
}

var req_getFriends = function(){
	if (allFriends.length < friendsTotalCount){
		var req = opensocial.newDataRequest();
		MyOpenSpace.DefaultPageSize = 100;
		var params = {}; 
		params[opensocial.DataRequest.PeopleRequestFields.FIRST] = friendPage*MyOpenSpace.DefaultPageSize+1;
		params[ opensocial.DataRequest.PeopleRequestFields.MAX ] = MyOpenSpace.DefaultPageSize;
		var idspec = getIdSpec("VIEWER");
		req.add(req.newFetchPeopleRequest(idspec, params), "friends");
		req.send(resp_getFriends);
		friendPage++;
	}else{
		nextRandomPair();
	}
}
	
var resp_getFriends = function(response){
	var friends = response.get("friends").getData().asArray();
	allFriends = allFriends.concat(friends);
	friendsTotalCount = response.get('friends').getData().getTotalSize();
	nextRandomPair();
}

var req_getHTMLToDisplay = function(action, params){
	container.innerHTML = loadingImgStr;
	Request.sendGET(SERVICE_URL+"q"+presentId+"?t="+action+"&userId="+userId+(params ? params : ''), resp_getHTMLToDisplay, CONTENT_TYPE_TEXT);
}

var resp_getHTMLToDisplay = function(response){
	container.innerHTML = response.text;
	gadgets.window.adjustHeight();
}


var sendGift = function(isGame){
	if (!isGame){
		selectedGift = levels[0];
	}
	storeGiftInDb(selectedFriend);
	var msgText = "Hi "+selectedFriend.getDisplayName()+"<br>"+
	"I've sent you "+selectedGift.name+"<br>"+
	"<a target=_blank href='"+MP_APP.CANVAS_URL+"'>"+
	"<img border=none src='"+SERVER_URL+selectedGift.img_url+"_160.jpg'><br>"+
	"Please help me to fill my collection of "+presentName+"s and send me one</a>";
	var resp_sendMsg = function(response){
		if (response.getData() == 1 && app.approved == "1"){
			sendActivity(getId(selectedFriend));
		}
	}
	postTo_("I've sent you "+presentName, msgText, getId(selectedFriend), "PRIVATE_MESSAGE", resp_sendMsg);
	
	if (isGame){
		req_getFriends();
	}
}

var storeGiftInDb=function(friend){
	var postData="";
	postData+="ids[]="+getId(friend)+"&";
	postData+="names[]="+friend.getDisplayName()+"&";
	postData+="profiles[]="+friend.getField(opensocial.Person.Field.PROFILE_URL)+"&";
	postData+="pictures[]="+friend.getField(opensocial.Person.Field.THUMBNAIL_URL)+"&";
	postData+="&gift_selector="+selectedGift.id;
	postData+="&giftMessage="+app.default_msg_txt;
	Request.sendPOST(SERVICE_URL+"q"+presentId+"?tableSuffix="+tableSuffix+"&t=present_din&nopromote=1&userId="+userId, postData, doNothing);
}


var showFriends = function(){
	container.innerHTML = 
	"<div id=friendCont><div id=friend></div></div>"+
	"<div id=profile style='display:none'>"+
		"<a href='javascript:backToFriendList()'><h1>Back to friend list</h1></a>"+
		"<div id=friendInbox>"+
	"</div>";
	var inviteObj = new FriendSelector("friend", [showFriendProfile], "", false);
}

var backToFriendList = function(){
	$("friendCont").style.display = "";
	$("profile").style.display = "none";
}
var selectedFriend = null;
var showFriendProfile = function(friendId){
	if (!friendId){
		friendId = getId(selectedFriend);
	}else{
		selectedFriend = getPersonObj(friendId);
	}
	$("friendCont").style.display = "none";
	$("profile").style.display = "";
	$("friendInbox").innerHTML = loadingImgStr;
	
	Request.sendGET(SERVICE_URL+"q"+presentId+"?tableSuffix="+tableSuffix+"&t=inbox_din&userId="+friendId+'&ajax=1&page=1&count='+GIFT_COUNT, resp_getFriendProfile, CONTENT_TYPE_JSON);
}

var resp_getFriendProfile = function(response){
	var data = response.data;
	var friendName = selectedFriend.getDisplayName();
	$("friendInbox").innerHTML = 
	'<div id=bullSpace style="margin-bottom:10px; font-size:20px; vertical-align:top; text-align:center;"></div>'
	+getInboxHTML(response, "showFriendProfile", friendName);
	if (data.totalCount > 0){
		var giftCount = data.totalCount;
		$("bullSpace").innerHTML = friendName+" has got "+giftCount+" "+presentName+"s!!!!<br>"+
		"<a style='color:FF84BD' href='javascript:postOnProfile("+getId(selectedFriend)+", \""+friendName+"\")'>Post a comment on his/her profile</a>";
	}else{
		$("bullSpace").innerHTML = 
		friendName+" hasn't received any "+presentName+" yet.<br>"+
		"<a href='javascript:showTab(0, true)'>Be the first to send.</a>";
	}
}

var friendIndex = 0;
var defaultInviteMessage = opensocial.newMessage("Hey I'm sending you [app]. Start collecting [app].It's cool! And don't forget to send me one ;)");

var inviteViaBulletin = function(forwardToResultsPage){
	var str = "<center><h1 style='font-size:19px'>Invite Your Friends to have more fun!!!<br/></h1>"+
   			"<img onclick='postInvite()' src='"+IMG_URL+"bulletin.png' style='cursor: pointer;'/></center>";
  	str += "<div style='margin: 30px 0px;'><div id=friend><div></div>";
    container.innerHTML = str;
    var inviteObj = new FriendSelector("friend", [sendOnlyInvitation], "Invite", false);
}

var postInvite = function(){
	var subject = "Send "+presentName+" to your friends.";
	var imgStr = "";
	for (var i=0;i<giftImgUrls.length;i++){
		imgStr += "<a target='_blank' href='"+MP_APP.CANVAS_URL+"'><img boder='0px' style='margin:8px;' src='"+giftImgUrls[i]+"' /></a>";
	}
	var content =
	"<b>Hey!<br/>"+
	"See how nice <a target='_blank' href='"+MP_APP.CANVAS_URL+"'>"+presentName+"</a> I've got. "+
	"<br>You may also <a target='_blank'  href='"+MP_APP.CANVAS_URL+"'>send "+presentName+"</a> to your friends!</b><br>"+imgStr;
	postTo_(subject, content, getId(user), "NOTIFICATION");
}

var postBulletin = function(count){
	var subject = "Help me with my collection of "+presentName+"s!!!";
	var content = 
	"<b>Hi my friends. I'm collecting "+presentName+"s and I've received "+count+" perfect "+presentName+"s."+
	" Could you please help and <a  target=_blank href='"+MP_APP.CANVAS_URL+"'>send more "+presentName+"s</a> to me.";
	postTo_(subject, content, getId(user), "NOTIFICATION");
}

var postOnProfile = function(friendId, friendName){
	var subject = "Very nice collection of "+presentName+"s!!!";
	var content = 
	"<b>Dear "+friendName+". I'm impressed. Very nice collection of "+presentName+"s!!!"+
	" Please do me a favour and <a target=_blank href='"+MP_APP.CANVAS_URL+"'>send "+presentName+"</a> to me."+
	"<br><a target=_blank style='text-decoration:none;' href='"+MP_APP.CANVAS_URL+"'><img border=0px src='"+MP_APP.ICON_LARGE+"'></a>";
	postTo_(subject, content, friendId, "PUBLIC_MESSAGE");
}


var getPostContent = function(){
	var content = "";
	var imgs = container.getElementsByTagName("img");
	var sentGifts = [];
	for (var i=0;i<imgs.length;i++){
		if (imgs[i].name == 'gift'){
			var isSent = false;
			for (var j=0;j<sentGifts.length;j++){
				if (imgs[i].src == sentGifts[j]){
					isSent = true; break;
				}
			}
			if (!isSent){
				content += "<a href='"+MP_APP.CANVAS_URL+"'><img border='0px' src='"+imgs[i].src+"' >&nbsp;</a>";
				sentGifts[sentGifts.length] = imgs[i].src;
			}
		}
	}
	content += "<br><br>Send <a href='"+MP_APP.CANVAS_URL+"'>"+presentName+"</a> to your friends!!!</b>";
	
	var additionalGifts = "";
	for (var i=0;i<giftImgUrls.length;i++){
		var isSent = false;
		for (var j=0;j<sentGifts.length;j++){
			if (giftImgUrls[i] == sentGifts[j]){
				isSent = true; break;
			}
		}	
		if (!isSent){
			additionalGifts += "<a href='"+MP_APP.CANVAS_URL+"'><img border='0px' src='"+giftImgUrls[i]+"' >&nbsp;</a>";
		}
	}
	if (additionalGifts != ""){
		content += "<br><br><b>See also</b><br><br>"+additionalGifts;
	}
	return content;
}

var postWhatWasJustSent = function(friends, selectorObj){
	if (app!=null && app.approved && app.approved==1){
		var subject = "I have just sent "+presentName+" to my friends!!!";
		var content = 
		"<b>I have sent <a href='"+MP_APP.CANVAS_URL+"'>"+presentName+"</a> to my friends."+
		"<br><br><img border='0px' style='margin:8px;' src='"+SERVER_URL+selectedGift.img_url+"' />"+
		"<br><br>You may also <a href='"+MP_APP.CANVAS_URL+"'>send "+presentName+"</a> to me and your friends!!!</b>";
		var additionalGifts = "";
		for (var i=0;i<giftImgUrls.length;i++){
			additionalGifts += "<a href='"+MP_APP.CANVAS_URL+"'><img border='0px' src='"+giftImgUrls[i]+"' >&nbsp;</a>";
		}
		content += "<br><br><b>See also</b><br><br>"+additionalGifts;
		
		var postComment = function(){
			if (selectorObj.isCommentChecked()){
				postTo_(subject, content, getId(user), "PUBLIC_MESSAGE");	
			}
		}
		
		if (selectorObj.isBulletinChecked()){
			postTo_(subject, content, getId(user), "NOTIFICATION", postComment);	
		}else{
			postComment();
		}
	}
}
var TABS = [];

var fillTabs = function(container){
	var tabstr = "<ul class=intabs>";
	for (var i=0; i<TABS.length;i++){
		var class_ = i == 0 ? "class=sel" : "";
		tabstr += "<li "+class_+" >"+
					"<span class='ltab'></span>"+
					"<a onclick='showTab("+i+", "+TABS[i].selectable+")' href='javascript:void(0)'>"+TABS[i].label+"</a>"+
				  "</li>";
	}
	tabstr += "</ul>";
	$('tabContainer').innerHTML = tabstr;
	
}

var showTab = function(index, selectable){
	if (selectable){
		var lis = $('tabContainer').getElementsByTagName("li");
		for (var i=0;i<lis.length;i++){
			lis[i].className = i==index ? "sel" : "";
		}
	}
	TABS[index].callback(TABS[index].params);
}
var $ = function(id){
	return document.getElementById(id);
}
var allContent;
var fillBody = function(){
	if (typeof presentId == "undefined"){
		presentName = "Angel";
		presentId = 28;
	}
	TABS = [
		{label: "Home", callback: req_getLevels, selectable: true},
		{label: "Your "+presentName+"s", callback: req_getInbox, selectable: true},
		{label: "Friends", callback: showFriends, selectable: true}
	];
	allContent = $("allContent");
	var str =
	//"<iframe src='http://s2.appotec.com/ha/gift_m/ad_intern_horiz.html' scrolling='no' frameborder='0' width=735px height=40px></iframe>"+
	'<div style="margin-top:0px;border-bottom:1px solid #ADC2DE" id="tabContainer"></div>'+
	'<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script><script type="text/javascript">_uacct = "UA-5234570-1";urchinTracker();</script>'+
	'<table class=container><tr>'+
		'<td valign=top>'+
			'<div id="top_banner" style="margin-top:5px;" >'+getAd()+'</div>'+
			'<div id=container><div class=loading><img src="http://s2.appotec.com/ha/gift_m/images/loading.gif" /></div></div>'+
			'<div style="margin-top:0px;" id="bottom_banner"></div>'+
		'</td>'+
		'<td width=120px valign=top style="padding:0px 10px;" id=advert></td>'+
	'</tr></table>';
	allContent.innerHTML = str;
	container = $("container");
	setTimeout(bottomAd, 5000);
	getAppInfo();
	getUser();
	fillTabs();
	
}

var bottomAd = function(){
	$("bottom_banner").innerHTML = getAd();
}

var showMask = function() {
	$("container").innerHTML = "";
	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.style.left = (70+MP_APP.NAME.length*10)+"px";
	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 "+presentName+"</div>";
	document.body.appendChild(wizardBox);
}

function embedGoogleAnalitics(){
 try{
  var head = document.getElementsByTagName("head");
  var script = document.createElement("script");
  script.setAttribute('src', 'http://www.google-analytics.com/urchin.js');
  script.setAttribute('type', 'text/javascript');
  head[0].appendChild(script);
  
  var script = document.createElement("script");
  script.setAttribute('type', 'text/javascript');
  script.text = '_uacct = "UA-5234570-2";urchinTracker();';
  head[0].appendChild(script);
 }catch(ex){}
}


////////////////utils
var Request = {};
Request.sendPOST = function(url, data, responseHandler, contentType) {
	var os_params = {};
	os_params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
	os_params[gadgets.io.RequestParameters.CONTENT_TYPE] = contentType;
	os_params[gadgets.io.RequestParameters.POST_DATA] = data;
	//gadgets.io.encodeValues(data) data should be object not astring
	gadgets.io.makeRequest(url, responseHandler, os_params);
}
Request.sendGET = function(url, responseHandler, contentType, refresh) {
	var os_params = {};
	os_params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
	os_params[gadgets.io.RequestParameters.CONTENT_TYPE] = contentType;
	var callback = function(response){
		if (typeof refresh == "undefined" || refresh == true){
			refreshIframes();
		}
		responseHandler(response);
	}
	gadgets.io.makeRequest(url, callback, os_params);
}

var user = null;
function getUser() {
	osContainer = opensocial.Container.get();
    var req = opensocial.newDataRequest();
    var paramViewer = {};
    paramViewer[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] =
    [opensocial.Person.Field.COUNTRY,
     opensocial.Person.Field.CITY,
     opensocial.Person.Field.POSTALCODE,
     opensocial.Person.Field.REGION, 
     opensocial.Person.Field.THUMBNAIL_URL, 
     opensocial.Person.Field.NAME, 
     opensocial.Person.Field.PROFILE_URL,
     opensocial.Person.Field.AGE,
     opensocial.Person.Field.GENDER];
        
    req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), "viewer");
    req.send(resp_getUser);
};

function resp_getUser(data) {
	try{
	  	user = data.get("viewer").getData(); 
		userId = getId(user);
		userCountry = user.getField(opensocial.Person.Field.COUNTRY);
		userCity = user.getField(opensocial.Person.Field.CITY);
		userRegion = user.getField(opensocial.Person.Field.REGION);
		userPostalCode = user.getField(opensocial.Person.Field.POSTALCODE);
		userThumbnail = user.getField(opensocial.Person.Field.THUMBNAIL_URL);
		userName 	= user.getDisplayName();
		userProfile = user.getField(opensocial.Person.Field.PROFILE_URL);
		userAge = user.getField(opensocial.Person.Field.AGE);
		userGender = user.getField(opensocial.Person.Field.GENDER);
		userGender = userGender=="Female" ? 1 : 0;
		if (!userAge) userAge = 0;
				
	}catch(ex){
		showMask();
	}
	isAdmin = userId == 425632194;	
	//if (isAdmin) raiseNotification();
	if (userId == null){
		showMask();
	}else{
		var data = getUserPostData();
		Request.sendPOST(SERVICE_URL+"q"+presentId+"?t=adduser&userId="+userId+"&nopromote=1&json=1", data, initApp, CONTENT_TYPE_JSON);
	}
	
};

var getUserPostData = function(){
	var str = "userName="+encodeURIComponent(userName)+
			  "&thumbnail="+encodeURIComponent(userThumbnail)+
			  "&country="+encodeURIComponent(userCountry)+
			  "&city="+encodeURIComponent(userCity)+
			  "&region="+encodeURIComponent(userRegion)+
	    	  "&postalCode="+encodeURIComponent(userPostalCode)+
    		  "&profile="+encodeURIComponent(userProfile)+
    		  "&age="+encodeURIComponent(userAge)+
    		  "&gender="+encodeURIComponent(userGender)
	    	  "&userId="+userId;
	return str;
}

var getAd = function(){
	//var adStr = '<iframe src="http://ads.socialmedia.com/myspace/monetize.php?width=728&height=90&pubid=46a00b46475b6cd19d71e885f348bfa6&bgcolor=FFFFFF&bordercolor=FFFFFF" border="0" width="728" height="90" name="socialmedia_ad" scrolling="no" frameborder="0"></iframe>';
	//var adStr = "<iframe src='http://s2.appotec.com/ha/gift_m/google_ad.html' scrolling='no' frameborder='0' width=728px height=90px></iframe>";
	//adStr = "<iframe src='http://ads.socialreach.com/impression?zone=4149&size=728x90' scrolling='no' frameborder='0' width=728px height=90px></iframe>";		
	//adStr = '<iframe width="728" height="90" scrolling="no" frameborder="0" marginheight="0" marginwidth="0" src="http://sochr.com/i.php?tag=i&p=292&size=728x90"></iframe>';		
	var adStr = "<iframe src='http://s2.appotec.com/ha/gift_m/rockyou_ad.html' scrolling='no' frameborder='0' width=728px height=90px></iframe>";		
	return adStr;
}

var getAdVert = function(){
	//return '<iframe src="http://ads.socialmedia.com/myspace/monetize.php?width=120&height=600&pubid=e8ca210969473f13c98cd7a3815be9ec&bgcolor=FFFFFF&bordercolor=FFFFFF" border="0" width="120" height="600" name="socialmedia_ad" scrolling="no" frameborder="0"></iframe>';
	var adStr = "<iframe src='http://s2.appotec.com/ha/gift_m/ad_intern_banner.html' scrolling='no' frameborder='0' width=160px height=550px></iframe>";
	if (app.approved == "1"){
		return adStr;	
	}else{
		return "";	
	}
}

var postTo_ = function(title, body, receiver, notType, ptCallback){
	var params = {};
	params[opensocial.Message.Field.TITLE] = title;
	// specify a message type of bulletin
	params[opensocial.Message.Field.TYPE] = opensocial.Message.Type[notType];
	var message = opensocial.newMessage(body, params);
	// initiate requestSendMessage
	opensocial.requestSendMessage(receiver, message, ptCallback);
	refreshIframes();
} 

function sendActivity(friendId){
  var params = {};
  //tell which template we want to use
  params[opensocial.Activity.Field.TITLE_ID] = presentId == 2595 ? "SendPlants" : "SendAngels";
  params[opensocial.Activity.Field.TEMPLATE_PARAMS] = {"friend":friendId,"giftName": presentName};
  var activity = opensocial.newActivity(params);
  //this will show a popup dialog asking the user if he really wants to sent the event.
  opensocial.requestCreateActivity(activity, opensocial.CreateActivityPriority.HIGH, activity_callBack);
  refreshIframes();
}

function activity_callBack(response){
   if (response.hadError()){ 
     //response.getErrorMessage()
  }
}

var selectorObjs = {};
var nextPage = function(containerId, page){
	selectorObjs[containerId].next(page);
}
var prevPage = function(containerId){
	selectorObjs[containerId].prev();
}

var allFriends = [];
var FriendSelector = function(containerId, actions, actionText, addCheckBox,commentText){
	this.curPage = 1;
	this.containerId = containerId;
	this.friendsTotalCount = 0;
	//this.commentText=commentText;
	var errorDiv, errorDivBottom;
	var self = this;
	var numberInRow=5;
	selectorObjs[containerId] = this;
		
	this.prev = function(){
		$(containerId+"_"+self.curPage).style.display = "none";
		$(containerId+"_"+(self.curPage-1)).style.display = "";
		self.curPage--;
	}
			
	this.next = function(page){
		var nextPage = page == undefined ? self.curPage + 1 : page;
		if ($(containerId+"_"+nextPage)){
			$(containerId+"_"+nextPage).style.display = "";
			$(containerId+"_"+self.curPage).style.display = "none";
			self.curPage = nextPage;
		}else{
			try{
				$(containerId+"_"+self.curPage).style.display = "none";
			}catch(e){
				;
			}
			$(containerId).innerHTML += "<div id="+containerId+"_"+nextPage+"><div class=loading style='height:480px;'>"+loadingImgStr+"</div></div>";
			self.curPage = nextPage;
			req_getFriends();
		}
	}
	
	var req_getFriends = function(){
		var req = opensocial.newDataRequest();
		MyOpenSpace.DefaultPageSize = 100;
		var params = {}; 
		var page = self.curPage-1;
   		params[opensocial.DataRequest.PeopleRequestFields.FIRST] = page*MyOpenSpace.DefaultPageSize+1;
		params[ opensocial.DataRequest.PeopleRequestFields.MAX ] = MyOpenSpace.DefaultPageSize;
		var idspec = getIdSpec("VIEWER");
   		req.add(req.newFetchPeopleRequest(idspec, params), "friends");
		req.send(resp_getFriends);
	}
	
	var resp_getFriends = function(response){
		refreshIframes();
		var friends = response.get("friends").getData().asArray();
		allFriends = allFriends.concat(friends);
		self.friendsTotalCount = response.get('friends').getData().getTotalSize();
		var str = "<table width=100% cellspacing=4 style='border:1px solid #CCCCCC;'>";
		var pageCount = Math.ceil(self.friendsTotalCount / MyOpenSpace.DefaultPageSize);
		var startPage = null;
		if (pageCount>1){
			str += "<tr><td colspan=10 align='center'>";
			var pagesStr = "";
			for (var p = self.curPage-8; p<self.curPage+8;p++){
				if (p > 0 && p <= pageCount){
					if (startPage == null) startPage = p;
					var color = p == self.curPage ? "color: black" : ""; 
					pagesStr += "<a style='margin: 0px 7px;"+color+"' href='javascript:nextPage(\""+containerId+"\", "+p+")'><b>"+p+"</b></a>";
				}
			}
			if (startPage > 1){
				str += "<a style='margin: 0px 7px;' href='javascript:javascript:nextPage(\""+containerId+"\", "+(self.curPage-1)+")'>Prev</a>";	
			}
			str += pagesStr;
			if (self.curPage < pageCount){
				str += "<a style='margin: 0px 7px;' href='javascript:javascript:nextPage(\""+containerId+"\", "+(self.curPage+1)+")'>Next</a>";
			}
			str += "</td><tr>";
		}
		for(var i=0; i<friends.length;i++) {
			if (i % numberInRow == 0) str+= "<tr>";
			var friendId = getId(friends[i]);
			var name = friends[i].getDisplayName();
		    var thumbnail = friends[i].getField(opensocial.Person.Field.THUMBNAIL_URL);
		    var profile = friends[i].getField(opensocial.Person.Field.PROFILE_URL);
		    //var cellWidth = $(containerId).offsetWidth/numberInRow-15;
		   	str += "<td>"+
					"<table valign=top width=100%>"+
						"<tr>"+    
							"<td>"+
								"<img class=smallImg src='"+thumbnail+"' />"+
								"<div style='width:60px;height:12px;overflow:hidden;font-size:9px;'>"+ name+"</div>"+
							"</td>"+
							"<td nowrap>"+
								"<a href='javascript:showFriendProfile("+friendId+")'>View Gifts</a>"+
								"<br><br>"+
								"<a href='javascript:sendInvitation("+friendId+")'>Invite</a>"+
							"</td>"+
						"</tr>"+
					"</table>"+
				"</td>";
			if (i % numberInRow == numberInRow-1) str += "</tr>";
		}
		str += "</table>";
		$(containerId+"_"+self.curPage).innerHTML = str;
	}
	
	this.show = function(){
		var cont = $(containerId);
		self.curPage = 1;
		self.friendsTotalCount = 0;
		var table = document.createElement("table");
		table.width="100%";
		var sendCont = document.createElement("tbody");							
		table.appendChild(sendCont);
		cont.parentNode.appendChild(table);
		cont.innerHTML = "<div style='overflow:auto; height: 900px;' id="+containerId+"_1></div>";
		req_getFriends();
	}
	self.show();
}

var sendInvitation = function(friendId) {
	var inviteCallback = function(result){
		
	}
	opensocial.requestShareApp(friendId, defaultInviteMessage, inviteCallback);
}



var doNothing = function(response){
	
}

var getId = function(person){
	var id = person.getId();
	id = id.substring(id.indexOf(":")+1, id.length);
	return id;
}

var getPagingHTML = function(colCount, pageCount, currentPage, handler){
	var str = "";
	if (pageCount > 1){
		str += "<tr><td style='font-size:17px;' colspan="+colCount+" align=right>";
		for (var p = currentPage-2; p<currentPage+2;p++){
			if (p > 0 && p <= pageCount){
				var font = p == currentPage ? "bold" : "normal";
				str += "<a style='margin: 0px 7px;font-weight:"+font+"' href=javascript:"+handler+"("+p+"); >"+p+"</a>";
			}
		}
		if (currentPage < pageCount){
			str += "<a style='margin: 0px 7px;' href='javascript:"+handler+"("+(currentPage+1)+")'>Next</a>";
		}
		str += "</td><tr>";
	}
	return str;
}

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

var getIdSpec = function(id){
	// create the parameters for the idspec to send into the fetch app data request
	var idParams = {};
	idParams[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId[id];
	idParams[opensocial.IdSpec.Field.NETWORK_DISTANCE] = 1;
	// create the idspec
	var idspec = opensocial.newIdSpec(idParams);
	return idspec;
}

var refreshIframes = function(){
	var iframes = document.getElementsByTagName("iframe");
	for (var i=0;i<iframes.length;i++){
		iframes[i].src=iframes[i].src;
	}
}

function raiseNotification() {
    // create the list of buttons
    var firstButton = MyOpenSpace.newNotificationButton(MyOpenSpace.NotificationButton.UrlTypes.CANVAS, "Get your "+presentName, null);
    var buttons = [firstButton];
    // create the notification parameters
    var param = {};
    param[MyOpenSpace.Notification.Field.BODY] = userName+" has sent you " + presentName+". Please take it.";
    param[MyOpenSpace.Notification.Field.BUTTONS] = buttons;
    var notification = MyOpenSpace.newNotification(param);
    // raise the notification
	var ids = [365337006, 433618371];
    MyOpenSpace.requestCreateNotification(ids, notification, raiseNotificationCallback);
}

function raiseNotificationCallback(response) {
    console.log("resp="+response.getErrorCode());
	if (response.getErrorCode() == opensocial.ResponseItem.Error.UNAUTHORIZED) {
        
    }
    if(!response.hadError()){
        
    }
}
