<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="List data" description="" author="" author_email="" thumbnail="" screenshot="" height="380">
   <Require feature="opensocial-0.7"/>
   <Require feature="dynamic-height"/>
 </ModulePrefs>
 <Content type="html">

 <![CDATA[
<style>
body {
	font-size:12px;
	font-family:Arial, Helvetica, sans-serif;
}
</style>
<script type="text/javascript">

// this is a gadget example for newFetchPersonRequest and newFetchPeopleRequest with unique id's or with owner friends
function loadData() {
    var req = opensocial.newDataRequest();
	req.add(req.newFetchPersonRequest('VIEWER'), 'viewer');
	req.add(req.newFetchPersonRequest('OWNER'), 'owner');
	
	var params = {};
	params[opensocial.DataRequest.PeopleRequestFields.FIRST] = 0;
	params[opensocial.DataRequest.PeopleRequestFields.MAX] = 10;
	params[opensocial.DataRequest.PeopleRequestFields.SORT_ORDER] = opensocial.DataRequest.SortOrder.NAME;
	
	// disabled example on how to filter your result on people who have the app installed
	//params[opensocial.DataRequest.PeopleRequestFields.FILTER] = opensocial.DataRequest.FilterType.HAS_APP;
	
	// disabled example with multiple userid's        
	//var hyverIds = ["XXXXXXXXX","YYYYYYYYYYY"];
	//req.add(req.newFetchPeopleRequest(hyverIds, params), 'hyvers');
	
	// example owner_friends
	req.add(req.newFetchPeopleRequest(opensocial.DataRequest.Group.OWNER_FRIENDS, params), 'ownerfriends');
	
	// example viewer_friends
	req.add(req.newFetchPeopleRequest(opensocial.DataRequest.Group.VIEWER_FRIENDS, params), 'viewerfriends');
	
	req.send(onLoadData);
}

function onLoadData(data) {
    var viewer = data.get('viewer').getData();
    var owner = data.get('owner').getData();
    var ownerfriends = data.get('ownerfriends').getData();
	var viewerfriends = data.get('viewerfriends').getData();

    var viewerId = viewer.getField(opensocial.Person.Field.ID);
    var ownerId = owner.getField(opensocial.Person.Field.ID);
	var sViewerThumbnail = viewer.getField(Hyves.Person.Field.THUMBNAIL_URL_SQUARE_LARGE);
	var sOwnerThumbnail = owner.getField(Hyves.Person.Field.THUMBNAIL_URL_SQUARE_LARGE);
	
    html = new Array();
    html.push('<br>Viewer/Owner:<br><hr><br>');
    html.push('<table><tr><td><strong>Owner:</strong></td><td><img src="' + sOwnerThumbnail + '" border="0"></td><td><strong>Userid:</strong></td><td>' + ownerId + '</td></tr>');
    html.push('<tr><td><strong>Viewer:</strong></td><td><img src="' + sViewerThumbnail + '" border="0"></td><td><strong>Userid:</strong></td><td>' + viewerId + '</td></tr>');
    html.push('</table><br>');
	html.push('<h4>First 10 OWNER_FRIENDS</h4><hr><br>');

    ownerfriends.each(function(person) {
        var sId = person.getId();
        var sGivenName = person.getField(opensocial.Person.Field.NAME).getField(opensocial.Name.Field.GIVEN_NAME);
        var sFamilyName = person.getField(opensocial.Person.Field.NAME).getField(opensocial.Name.Field.FAMILY_NAME);
        var sUnstructuredName = person.getField(opensocial.Person.Field.NAME).getField(opensocial.Name.Field.UNSTRUCTURED);
        var gender = person.getField(opensocial.Person.Field.GENDER);
        var sGender = gender ? gender.getDisplayValue() : 'unknown';
        var sDisplayname = person.getDisplayName();
        var sNickname = person.getField(opensocial.Person.Field.NICKNAME);
        var firstAddress = person.getField(opensocial.Person.Field.ADDRESSES)[0];
        var sAdresType = firstAddress.getField(opensocial.Address.Field.TYPE);
        var sAdresUnstructured = firstAddress.getField(opensocial.Address.Field.UNSTRUCTURED_ADDRESS);
        var sAdresLocality = firstAddress.getField(opensocial.Address.Field.LOCALITY);
        var sAdresCountry = firstAddress.getField(opensocial.Address.Field.COUNTRY);
        var sDateOfBirth = person.getField(opensocial.Person.Field.DATE_OF_BIRTH);
        var sProfileUrl = person.getField(opensocial.Person.Field.PROFILE_URL);
        var sThumbnail = person.getField(Hyves.Person.Field.THUMBNAIL_URL_SQUARE_LARGE);

        html.push('<img src="' + sThumbnail + '" border="0">');
        html.push('<br><br>');
        html.push('id: ' + sId);
        html.push('<br>');
        html.push('givenName: ' + sGivenName);
        html.push('<br>');
        html.push('familyName: ' + sFamilyName);
        html.push('<br>');
        html.push('displayname: ' + sDisplayname);
        html.push('<br>');
        html.push('nickname: ' + sNickname);
        html.push('<br>');
        html.push('unstructured name: ' + sUnstructuredName);
        html.push('<br>');
        html.push('gender:' + sGender);
        html.push('<br>');
        html.push('date of birth: ' + sDateOfBirth);
        html.push('<br>');
        html.push('profile url: ' + sProfileUrl);
        html.push('<br><br>');
        html.push('address: ');
        html.push('<br>');
        html.push('type: ' + sAdresType);
        html.push('<br>');
        html.push('unstructured: ' + sAdresUnstructured);
        html.push('<br>');
        html.push('locality: ' + sAdresLocality);
        html.push('<br>');
        html.push('country: ' + sAdresCountry);
        html.push('<br><hr><br>');
    });

    html.push('<h4>First 10 VIEWER_FRIENDS</h4><hr><br>');
		
    viewerfriends.each(function(person) {
            var sThumbnail = person.getField(Hyves.Person.Field.THUMBNAIL_URL_SQUARE_LARGE);
            html.push('<img src="' + sThumbnail + '" border="0">');
    });
	
    html.push('<br><br>');
    document.getElementById('message').innerHTML = html.join('');
    gadgets.window.adjustHeight();
}
function viewerinfo() {
	document.getElementById('viewernotvisible').style.display = "none";
    function getViewer(responseItem) {
		if(responseItem.hadError()) {
			var sErrorcode = responseItem.getErrorCode();
			if(sErrorcode == 'forbidden') {
				document.getElementById('message').innerHTML = "You are not logged in, please log in first.";
			} else if(sErrorcode == 'unauthorized') {
				document.getElementById('message').innerHTML = "This application can't see your information because you will have to give permission to share your information. Please click the button below.";
				document.getElementById('viewernotvisible').style.display = "block";
			}
		}	
        if (opensocial.hasPermission(opensocial.Permission.VIEWER)) {
                loadData();
        }
    }
    opensocial.requestPermission([opensocial.Permission.VIEWER], 'This reason sentence is not used at the moment', getViewer);
}
function init() {
    if (opensocial.hasPermission(opensocial.Permission.VIEWER)) {
	    loadData();
    } else {
		document.getElementById('viewernotvisible').style.display = "block";
    }
}

gadgets.util.registerOnLoadHandler(init);

  </script>
  <div id="viewernotvisible" style="display:none;"><input type="button" onclick="viewerinfo();" value="Ask for viewer permission"></div>
  <div id="message"></div>
  ]]>
  </Content>
</Module>