// these vars will be set by the calling page var hasConfig = false; var wUrl = null; var appRegId = null; var pnCode = null; var insertWidgetScriptUrl = null; var channel = null; var baseTrackerUrl = null; var runtimeCdnUrl = null; // these vars are local var head = document.getElementsByTagName('head').item(0); var appId = null; var owner = null; var viewer = null; var firstView = false; var resizeOpenSocialGadget = function(height){ if(gadgets.window){ gadgets.window.adjustHeight(height); } }; function init() { var dataRequest = opensocial.newDataRequest(); dataRequest.add(dataRequest.newFetchPersonRequest(opensocial.DataRequest.PersonId.OWNER), 'owner'); dataRequest.add(dataRequest.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), 'viewer'); dataRequest.add(dataRequest.newFetchPersonAppDataRequest(opensocial.DataRequest.PersonId.OWNER, 'appId'), 'appId'); dataRequest.send(loadData); } function loadData(response) { var ownerData = response.get('owner'); if (response.hadError() || ownerData.hadError()) { return; } owner = ownerData.getData(); var viewerData = response.get('viewer'); if (viewerData.hadError()) { return; } viewer = viewerData.getData(); var appData = response.get('appId'); if (response.hadError() || appData.hadError()) { return; } var allAppData = appData.getData(); if (allAppData[owner.getId()]) { appId = allAppData[owner.getId()]['appId']; } if ((!appId || appId == 'false') && (viewer.getId() == owner.getId())) { doInstall(); } else { loadMain(); } } function doInstall() { var installScript = document.createElement('script'); installScript.setAttribute('src', wUrl + '/OpenSocialInstall.js?regId=' + appRegId + '&pn=' + pnCode + '&ownerId=' + escape(owner.getId()) + '&callback=handleInstall'); head.appendChild(installScript); } function handleInstall(response) { if (response.appId) { appId = response.appId; var req = opensocial.newDataRequest(); req.add(req.newUpdatePersonAppDataRequest(opensocial.DataRequest.PersonId.VIEWER, 'appId', appId)); req.send(); firstView = true; } if (appId == null) { return; } loadMain(); } function loadMain() { var insertWidgetScript = document.createElement('script'); insertWidgetScript.setAttribute('src', insertWidgetScriptUrl); insertWidgetScript.setAttribute('id', 'widgetbox_insertwidget_script'); insertWidgetScript.type = 'text/javascript'; head.appendChild(insertWidgetScript); if (!window.WIDGETBOX) { if (!window.WIDGETBOXINITLISTENERS) window.WIDGETBOXINITLISTENERS = new Array(); window.WIDGETBOXINITLISTENERS.push(loadHandler); } else { loadHandler(); } } function loadHandler() { WIDGETBOX.load('opensocial.snapp', libReadyCallback); } function libReadyCallback() { WIDGETBOX.subscriber.WbxSnapp.appInstId = appId; WIDGETBOX.subscriber.WbxSnapp.ownerId = owner.getId(); WIDGETBOX.subscriber.WbxSnapp.isOwner = (viewer.getId() == owner.getId()); WIDGETBOX.subscriber.WbxSnapp.hasConfig = hasConfig; WIDGETBOX.subscriber.WbxSnapp.openSocialView = "profile"; WIDGETBOX.subscriber.WbxSnapp.resizeOpenSocialGadget = resizeOpenSocialGadget; if (firstView) { WIDGETBOX.subscriber.WbxSnapp.addCookieSwf(runtimeCdnUrl, appId); } WIDGETBOX.subscriber.WbxSnapp.showWidget(); } function setSkin() { if(gadgets.skins){ document.write(''); } } function navigateToCanvasView(editMode){ var mode = editMode ? "edit" : "full"; if(gadgets.views){ var canvas_view = new gadgets.views.View("canvas"); gadgets.views.requestNavigateTo(canvas_view, { mode : mode }); } } function navigateToFullPage(){ navigateToCanvasView(false); } function navigateToEditPage(){ navigateToCanvasView(true); }