var DIVTEXT = "$*$*$HELLOTREE$*$*$";

function getTotalNumPages(maxSizePerPage)
{
    var totalNumFriends = parseInt(YAHOO.util.Dom.get("hdncnt").value);
   
    return Math.ceil( totalNumFriends / maxSizePerPage);
}

function getAllFriendsInviteHtml(pageNum)
{                
                resizeCanvasHeight(1650);
                
                YAHOO.util.Dom.get("hdcurpage").value = pageNum;
                
                var pageLimit = 35;
                var startIndex = (pageNum-1)*pageLimit;
                var params = {};
                params[opensocial.DataRequest.PeopleRequestFields.MAX] = pageLimit;
                params[opensocial.DataRequest.PeopleRequestFields.FIRST] = startIndex;                
                
                var req = opensocial.newDataRequest();
                req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
                req.add(req.newFetchPeopleRequest ('VIEWER_FRIENDS', params), 'viewerFriends');
                req.send(function(ds){
                        
                        var viewerFriends = ds.get('viewerFriends').getData();                    
                        var htmlPortion = "";     
                        var count = 1;           
                            
                            htmlPortion = writeOpenTable();
                            
                            viewerFriends.each(function(friend){                        
                                                    var recipientUserId = friend.getField(opensocial.Person.Field.ID);  
                                                    var recipientProfilePic = friend.getField(opensocial.Person.Field.THUMBNAIL_URL); 
                                                    var recipientName =  friend.getField(opensocial.Person.Field.NAME);                                                                                     
                                                    
                                                    if(count == 1)
                                                    {
                                                        htmlPortion += "<TR>";
                                                    }                         
                                                   
                                                    htmlPortion += writeFriendTd(recipientUserId, recipientProfilePic, recipientName);  
                                                    
                                                    count++;
                                                    
                                                    if(count > 7)
                                                    {
                                                        htmlPortion += "</TR>";
                                                        count = 1;
                                                    }                                                                                                                                  
                                                    
                                                });//end of viewFriends                                                    
                             
                             
		                            	                            
		                            YAHOO.util.Dom.get("hdncnt").value= viewerFriends.getTotalSize();
		                            
		                            var totalNumOfPages = getTotalNumPages(pageLimit);
		                            var nextPageNum = 1;
		                            var prevPageNum = 1;
		                            var curPageNum = parseInt(YAHOO.util.Dom.get("hdcurpage").value);
		                            		                            
		                            if(pageNum < totalNumOfPages)
		                            {	
		                                nextPageNum = curPageNum + 1;                           
		                            }	
		                            else if(pageNum == totalNumOfPages)
		                            {
		                                nextPageNum = 0;                                
		                            }
		                            
		                            if(pageNum > 1)
		                            {
		                                prevPageNum = curPageNum - 1;
		                            }
		                            else
		                                prevPageNum = 0;
		                            
		                            htmlPortion += writeCloseTable(pageNum, totalNumOfPages, nextPageNum, prevPageNum);  	                                
		                                
		                           var arrText = htmlPortion.split(DIVTEXT);
		                            YAHOO.util.Dom.get("bkFriends").innerHTML=arrText[0];
		                            YAHOO.util.Dom.get("pagenum").innerHTML=arrText[1];	
		                             
		                     var msgPanel = document.getElementById('msg');
		                            msgPanel.style.display = "block";
                        
                        });//end of send    
                        
}


//John added
function viewAppFriendsHtml()
{                
              resizeCanvasHeight(1650);	
                
                var pageNum = 1;
                var pageLimit = 35;
                var startIndex = (pageNum-1)*pageLimit;
                var params = {};
              
                params[opensocial.DataRequest.PeopleRequestFields.MAX] = pageLimit;
                params[opensocial.DataRequest.PeopleRequestFields.FIRST] = startIndex;
                params[opensocial.DataRequest.PeopleRequestFields.FILTER] = opensocial.DataRequest.FilterType.HAS_APP;
              
                
                var req = opensocial.newDataRequest();
                req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
                req.add(req.newFetchPeopleRequest ('VIEWER_FRIENDS', params), 'viewerFriends');
                req.send(function(cb){                     
                        
                        var viewerFriends = cb.get('viewerFriends').getData();
                        var htmlPortion = "";     
                        var count = 1;           
                            
                            htmlPortion = writeOpenTable();
                            
                            viewerFriends.each(function(friend){                        
                                                    var recipientUserId = friend.getField(opensocial.Person.Field.ID);  
                                                    var recipientProfilePic = friend.getField(opensocial.Person.Field.THUMBNAIL_URL); 
                                                    var recipientName =  friend.getField(opensocial.Person.Field.NAME);                                                                                     
                                                    
                                                    if(count == 1)
                                                    {
                                                        htmlPortion += "<TR>";
                                                    }                         
                                                   
                                                    htmlPortion += writeFriendTd_Friends(recipientUserId, recipientProfilePic, recipientName);  
                                                    
                                                    count++;
                                                    
                                                    if(count > 7)
                                                    {
                                                        htmlPortion += "</TR>";
                                                        count = 1;
                                                    }
                                                                                                                                    
                                                    
                                                });//end of viewFriends
                                                
                                                
                                                 YAHOO.util.Dom.get("hdncnt").value= viewerFriends.getTotalSize();
                                                 
                                                 
		                            
		                            var totalNumOfPages = getTotalNumPages(pageLimit);
		                            var nextPageNum = 1;
		                            var prevPageNum = 1;
		                            var curPageNum = parseInt(YAHOO.util.Dom.get("hdcurpage").value);
		                                      
		                            if(pageNum < totalNumOfPages)
		                            {	
		                                nextPageNum = curPageNum + 1;                           
		                            }	
		                            else if(pageNum == totalNumOfPages)
		                            {
		                                nextPageNum = 0;                                
		                            }
		                            else(pageNum > totalNumOfPages)
		                                nextPageNum = 0;
		                            
		                            if(pageNum > 1)
		                            {
		                                prevPageNum = curPageNum - 1;
		                            }
		                            else
		                                prevPageNum = 0;
		                                
		                              
                                                
                             htmlPortion += writeCloseTable(pageNum, totalNumOfPages, nextPageNum, prevPageNum);                         
                             
                             var arrText = htmlPortion.split(DIVTEXT);
		                            YAHOO.util.Dom.get("bkFriends").innerHTML=arrText[0];
		                            YAHOO.util.Dom.get("pagenum").innerHTML=arrText[1];
		                            
		                            YAHOO.util.Dom.get("hdncnt").value= viewerFriends.getTotalSize();
		                             
		                     var msgPanel = document.getElementById('msg');
		                            msgPanel.style.display = "block";
                        
                        });//end of send                    
                        
}




function writeFramework()
{
    var f = "";
    
    f= "<div style=\"font-family:verdana, helvetica, sans-serif;font-size:9pt;\" align=\"center\">   <br/>To send a shoutout to all your friends <a href=\"#\" onclick=\"postToBulletins('" + name + "')\">Send a Bulletin</a> <br/> <b>OR</b> <br/> Invite your friends individually below:  <div style=\"margin-top:15px;padding:15px;padding-top:20px;width:610px;border:1px solid #6698cb;background:#f0f8fb;-moz-border-radius:1em;border-radius:1em;-webkit-border-radius:1em;\" align=\"center\">  <form action=\"#\" onsubmit=\"return false;\">  <div style=\"clear:both;margin-top:5px;\"> 	 	<span style=\"font-family:verdana; font-size:12px; font-weight:bold;\">Select multiple friends on each page then click the Invite button</span><br> 	<input type='hidden' name='hdnInvite' id='hdnInvite' value=''> </div> <br/>     <div id=\"bkFriends\"></div> 									 										<div id=\"pagenum\"></div> 									 								<div id='msg'></div> 	<div id=\"picker\" style=\"margin-top:5px;\" ></div>";
    f +="<input type=\"button\" style=\"text-align:center;border-width: 1px; border-color:#D9DFEA #0E1F5B #0E1F5B #D9DFEA;border-style: solid;padding:3px 5px 3px; background-color:#cccccc; font-family:tahoma; color:#333333; font-size:11px; font-weight:bold;\" value=\"Invite\" name=\"save\" ";
    f += "onclick=\"iG();showTree();\"/> <input type=\"hidden\" name=\"hdncnt\" id=\"hdncnt\" value=\"\"><input type=\"hidden\" name=\"hdcurpage\" id=\"hdcurpage\" value=\"\"> 			 <div style=\"clear:both;margin-top:5px;\">  							   </div>  </div> </form>   </div> <iframe src=\"\" border=\"0\" width=\"1\" height=\"1\" scrolling=\"no\" frameborder=\"0\"/>";
    
    return f;
}


function writeFramework_friends()
{
    var f = "";
    
    f= "<div style=\"font-family:verdana, helvetica, sans-serif;font-size:9pt;\" align=\"center\">   <br/>To send a shoutout to all your friends <a href=\"#\" onclick=\"postToBulletins('" + name+ "')\">Send a Bulletin</a> <br/> <div style=\"margin-top:15px;padding:15px;padding-top:20px;width:610px;border:1px solid #6698cb;background:#f0f8fb;-moz-border-radius:1em;border-radius:1em;-webkit-border-radius:1em;\" align=\"center\">  <form action=\"#\" onsubmit=\"return false;\">  <div style=\"clear:both;margin-top:5px;\"> 	 	<span style=\"font-family:verdana; font-size:12px; font-weight:bold;\">Friends with a FamilyTree are listed below, click one to view.</span><br> 	<input type='hidden' name='hdnInvite' id='hdnInvite' value=''> </div> <br/>     <div id=\"bkFriends\"></div><div id=\"pagenum\" type=\"hidden\"></div><div id='msg' type=\"hidden\"></div><div id=\"picker\" style=\"margin-top:5px;\" type=\"hidden\"></div>";
    f += "<input type=\"hidden\" name=\"hdncnt\" id=\"hdncnt\" value=\"\"><input type=\"hidden\" name=\"hdcurpage\" id=\"hdcurpage\" value=\"\">  <div style=\"clear:both;margin-top:5px;\">  							   </div> </form></div> ";
    f += "<br/>To send a shoutout to all your friends <a href=\"#\" onclick=\"postToBulletins('" + name + "')\">Send a Bulletin</a><iframe src=\"\" border=\"0\" width=\"1\" height=\"1\" scrolling=\"no\" frameborder=\"0\"/>"; 
    return f;
}


function writeFriendTd(uid, purl, name)
{
    var f = "";
    
    f = "<td align=\"center\" id=\"" + uid + "\" style=\"background: #ffffff;width:75px; height:85px;border: 2px #B5B5B5 solid ;\">";
    f += "<div id=\"div1\" style=\"width:75px; height:85px; cursor: pointer;\" onclick=\"postToContainer('" + uid + "')\">";
    f += "<table border=\"0\" width=\"25%\"><tr><td  style=\"text-align: center; \" align=\"center\">";
    f += "<img src=\"" + purl + "\" width=\"50px\" height=\"50px\" border=\"0\">";
    f += "</td></tr><tr><td  style=\"text-align: center; font-family:tahoma;font-size:11px;color:#1E3A73; height:12px;\">";
    f += "<div style=\"width:75px; text-align:center; z-index:999;\">" + name + "</div></td></tr></table></div></td>";
    
    return f;
}

function writeFriendTd_Friends(uid, purl, name)
{
    var f = "";
    
    f = "<td align=\"center\" id=\"" + uid + "\" style=\"background: #ffffff;width:75px; height:85px;border: 2px #B5B5B5 solid ;\">";
    f += "<div id=\"div1\" style=\"width:75px; height:85px; cursor: pointer;\" onclick=\"goToFriendTree('" + uid + "')\">";
    f += "<table border=\"0\" width=\"25%\"><tr><td  style=\"text-align: center; \" align=\"center\">";
    f += "<img src=\"" + purl + "\" width=\"50px\" height=\"50px\" border=\"0\">";
    f += "</td></tr><tr><td  style=\"text-align: center; font-family:tahoma;font-size:11px;color:#1E3A73; height:12px;\">";
    f += "<div style=\"width:75px; text-align:center; z-index:999;\">" + name + "</div></td></tr></table></div></td>";
    
    return f;
}

function goToFriendTree(uid)
{
    window.location = htree.APP_URL + "&friendId=" + uid + "&appParams=null";
}

function goToMyTree()
{
    window.location = htree.APP_URL;
}

function writeOpenTable()
{
    var o = "";    
    o += "<table width=\"70%\" cellspacing=\"3\" cellpadding=\"3\" align=\"center\" border=\"2\"><tr><td><table width=\"40%\" cellspacing=\"5\" cellpadding=\"5\" align=\"center\" border=\"0\"><tr></tr><tr>";
    
    return o;   
}

function writeCloseTable(curPage, lastPage, nextPageNum, prevPageNum)
{
    var c = "";    
    
    c += "</table></td></tr></table>" + DIVTEXT + "<div class=\"pages\" align=\"center\"  ><table border=\"0\" cellpadding=\"2\" cellspacing=\"2\" width=\"25%\" ><tr>";
    
    if(curPage > 1)
       c += "<td><a href='#' onclick='javascript:getAllFriendsInviteHtml(1)'><span class=\"copygrey12Copy\">First</span></a></td>";
    else
        c += "<td><span class=\"copygrey12Copy\">First</span></td>";
    
    if(prevPageNum > 0)
        c += "<td><a href='#' onclick='javascript:getAllFriendsInviteHtml(" + prevPageNum + ")'><span class=\"copygrey12Copy\">Prev</span></a></td>";
    else    
        c += "<td><span class=\"copygrey12Copy\">Prev</span></td>";
    
    c += "<td><span class=\"copygrey12Copy\"><b>"+ curPage +"</b></span></td><td></td>";
    
    if(nextPageNum > 0)
    {
        c+= "<td><a href='#' onclick='javascript:getAllFriendsInviteHtml(" + nextPageNum + ")'><span class=\"copygrey12Copy\">Next</span></a></td>";
    }
    else
    {
        c+= "<td><span class=\"copygrey12Copy\">Next</span></td>";
    }
    
    if(curPage != lastPage && lastPage > 0)
        c += "<td><a href='#' onclick='javascript:getAllFriendsInviteHtml(" + lastPage + ")'><span class=\"copygrey12Copy\">Last</span></a></td>";
    else    
        c += "<td><span class=\"copygrey12Copy\">Last</span></td>";
    
    c += "</tr></table></div>";
    
    return c;
}


function inviteFriends()
{   
    YAHOO.util.Dom.get("output").innerHTML = "";      
    YAHOO.util.Dom.get("output").innerHTML = writeFramework();
    YAHOO.util.Dom.get("htContainer").style.display = "none";
    YAHOO.util.Dom.get("output").style.display = "";   

    getAllFriendsInviteHtml(1);
    
    return;   
}


function feedback()
{
   parent.location.href = htree.INST_URL;

    return;
}

//John added
function viewFriends()
{ 
    YAHOO.util.Dom.get("output").innerHTML = "";          
    YAHOO.util.Dom.get("output").innerHTML = writeFramework_friends();
    YAHOO.util.Dom.get("htContainer").style.display = "none";
    YAHOO.util.Dom.get("output").style.display = "";  
    
    viewAppFriendsHtml();
    
    return;   
}


function showTree()
{
    resizeCanvasHeight(600);
   
    YAHOO.util.Dom.get("htContainer").style.display = "";
     YAHOO.util.Dom.get("output").style.display = "none";
    
   
}



function postToBulletins(name)
{
    var req = opensocial.newDataRequest();
        req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');

    var os_token = MyOpenSpace.MySpaceContainer.OSToken;
    var osContainer = opensocial.Container.get();
    
    var supported = osContainer.getMySpaceEnvironment().getSupportedPostToTargets();
    
    req.send(function(data){   
            
            var person = data.get('viewer').getData();            
            var profile_name = person.getDisplayName();            
            var profile_id=person.getId();
            
            var target_is_supported = false; 
            var target2_is_supported = false;            
            var target;
            var target2;
            
            var messageParams = {};
            
            //message area
            var subject = "Check out my animated Family Tree";
            //var msg1= "View your friends Tree and display your own Tree on your profile."; 
            //var msg2= "<br/><img src=>";                      
            //var content = msg1 + msg2;
           var content="<br>&nbsp;&nbsp;View " + profile_name + "'s Tree and display your own Family Tree.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='" + htree.INST_URL + "'> Click here to get started ! </a>";
		   content+="<br><a href='" + htree.INST_URL + "'><img border=0 src=\"http://www.hellotree.com/resources/images/message_splash.jpg\"></a>";
		

            profile_name=profile_name.substr(0, 1).toUpperCase() + profile_name.substr(1);
            
	        target=MyOpenSpace.PostTo.Targets.BULLETINS;
	        
	        
	        for (var i = 0; i < supported.length; i++) {
                    if (supported[ i ] === target) {
                          target_is_supported = true;
                            break;
                        }
                 }           
                 
                 
      if (target_is_supported) {
      	  
	        var recipientPerson=person;	 	        
			var message = opensocial.newMessage(content);
			
			message.setField(opensocial.Message.Field.Type, MyOpenSpace.PostTo.Targets.BULLETINS);
            message.setField(opensocial.Message.Field.TITLE, subject);
            message.setField(opensocial.Message.Field.TYPE, target);           

            osContainer.postTo(os_token, message, recipientPerson);
            			
			}			

        });
} 	