document.write("");
document.write("");
document.write("");
///constructor to create a new SiteLifeProxy
function SiteLifeProxy(url) {
// User Configurable Properties - these can be set at any time
// your apiKey, this value must be set!
this.apiKey = null;
// sniff the browser for custom behaviors
this.__isExplorer = navigator.userAgent.toLowerCase().indexOf('msie') != -1;
this.__isSafari = navigator.userAgent.toLowerCase().indexOf('safari') != -1;
this.__isMac = navigator.platform.toLowerCase().indexOf('mac') != -1;
this.__isMacIE = this.__isMac && this.__isExplorer;
// if enabled, spit out debug information through alert()
this.debug = false;
// used to track the id of the handler expecting the results from the immediately preceeding method invocation
// this is used only for testing purposes
this.lastHandlerId = "";
// Methods You can Overide
//
// OnSuccess(returnValue) - is passed the return value at the end of a successful call, default does nothing
// OnError(msg) - is passed an error message if a problem occurs
// OnDebug(msg) - is called when debugging is enabled
this.__baseUrl = url;
this.__sendInvokeCount = 0;
this.__eventHandlers = new Object();
};
SiteLifeProxy.prototype.AddEventHandler = function (event_name, callback) {this.__eventHandlers[event_name] = callback;}
SiteLifeProxy.prototype.FireEvent = function (event_name) {
var func;
if(func = this.__eventHandlers[event_name]) {
var A = new Array(); for (var i = 1; i < this.FireEvent.arguments.length; i++){ A[i - 1] = this.FireEvent.arguments[i];}
if (func.__Bound)
return func();
return this.__eventHandlers[event_name].apply(this, A);
}
}
SiteLifeProxy.prototype.ScriptId = function() { return this.__scriptId = "_bb_script_" + this.__sendInvokeCount++; }
// Default error handler for the proxy object, simple alert
SiteLifeProxy.prototype.OnError = function(msg) {
alert("OnError: " + msg);
}
// Default debug handler for the proxy object, simple alert
SiteLifeProxy.prototype.OnDebug = function(msg) {
if (this.debug)
alert("Debug: " + msg);
}
// fetch a named request parameter from the page URL
SiteLifeProxy.prototype.GetParameter = function(parameterName) {
var key = parameterName + "=";
var parameters = document.location.search.substring(1).split("&");
for (var i = 0; i < parameters.length; i++)
{
if (parameters[i].indexOf(key) == 0)
return parameters[i].substring(key.length);
}
return null;
};
// browser independent method to get elements by ID
SiteLifeProxy.prototype.GetElement = function(id) {
this.OnDebug("GetElement " + id);
if (document.getElementById)
return document.getElementById(id);
if (document.all)
return document.all[id];
this.OnError("No support for GetElement() in this browser");
return null;
}
// browser independent method to get elements by tag name
SiteLifeProxy.prototype.GetTags = function(tagName) {
this.OnDebug("GetTags " + tagName);
if (document.getElementsByTagName)
return document.getElementsByTagName(tagName);
if (document.all)
return document.tags(tagName);
this.OnError("No support for GetTags() in this browser");
return null;
}
SiteLifeProxy.prototype.EscapeValue = function(s) {
if (s == null) return null;
return encodeURIComponent(s);
};
SiteLifeProxy.prototype.__ArrayValidation = function(s)
{
if ((typeof s == 'undefined') || (s.length < 1))
{
return false;
}
return true;
}
SiteLifeProxy.prototype.__CheckErrorHandler = function(onError) {
this.OnDebug("__CheckErrorHandler " + onError);
if ((typeof onError == 'undefined') || (eval("window." + onError) == null))
{
return "gSiteLife.OnError";
}
return onError;
}
SiteLifeProxy.prototype.SetCookie = function SetCookie( name, value) {
var today = new Date(); today.setTime( today.getTime() );
var expires_date = new Date( today.getTime() + 126144000000 );
document.cookie = name + "=" +escape( value ) +
";expires=" + expires_date.toGMTString() +
";path=/" + ";domain=economist.com" ;
}
// validate and fetch arguments, if the argument is missing and optional, we return an empty string
SiteLifeProxy.prototype.__GetArgument = function(variableName, variableValue, isRequired, isArray) {
this.OnDebug("__GetArgument " + variableName + "," + variableValue + "," + isRequired + "," + isArray);
if (typeof variableValue == "undefined" || variableValue == null || variableValue == "")
{
if (isRequired)
{
this.OnError("Missing required parameter " + variableName);
this.__isValid = false;
return "";
}
else
return "";
}
if (isRequired && isArray)
{
if (!this.__ArrayValidation(variableValue))
{
this.OnError("Invalid array parameter " + variableName);
this.__isValid = false;
return "";
}
}
return "&" + variableName + "=" + this.EscapeValue(variableValue);
};
SiteLifeProxy.prototype.__StripAnchorFromUrl = function(url) {
var aIdx = url.indexOf("#");
return aIdx == -1 ? url : url.substring(0, aIdx);
}
SiteLifeProxy.prototype.__SafeAppendUrlValue = function(url, key, value) {
url += url.indexOf("?") != -1 ? "&" : "?";
return url + key + "=" + value;
}
SiteLifeProxy.prototype.__AppendUrlValues = function (url)
{
time = new Date();
url += this.__GetArgument("plckNoCache", time.getTime(), false, false);
url += this.__GetArgument("plckApiKey", this.apiKey, true, false);
return url;
}
SiteLifeProxy.prototype.ReloadPage = function(params) {
var sSearch = window.location.search.substring(1);
var sNVPs = sSearch.split('&');
var newSearch = "";
var anchorPoint = "";
for(var k in params) {
if(k == "extend") continue;
if(k == "#") {
anchorPoint = '#' + params[k];
continue;
}
if(newSearch == "") newSearch += "?"; else newSearch += "&";
newSearch += k + '=' + params[k];
}
for (var i = 0; i < sNVPs.length; i++) {
var kv = sNVPs[i].split('=');
if(kv[0] && kv[0].indexOf('plck') != 0 && ! params[kv[0]]) {
newSearch += "&" + sNVPs[i];
}
}
window.location.hash = anchorPoint;
window.location.search = newSearch;
}
function loadScript (url, callback) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.charset = 'utf-8';
if (callback)
script.onload = script.onreadystatechange = function() {
if (script.readyState && script.readyState != 'loaded' && script.readyState != 'complete')
return;
script.onreadystatechange = script.onload = null;
callback();
};
script.src = url;
document.getElementsByTagName('head')[0].appendChild (script);
}
SiteLifeProxy.prototype.__Send = function(url, scriptToUse, callbackName, args) {
this.OnDebug("_Send " + url);
function gLoadScript(url, callbackName) {
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('charset', 'utf-8');
script.setAttribute('src', url + (callbackName ? '&EVENT_ID=' + callbackName : ''));
document.getElementsByTagName('head')[0].appendChild (script);
}
function bind(_function, _this, _arguments) {
var f = function() {
_function.apply(_this, _arguments);
};
f['__Bound'] = true;
return f;
};
var func;
if ((typeof callbackName == 'string') && (func = this.__eventHandlers[callbackName]) && (typeof func == 'function') && !func['__Bound']) {
this.__eventHandlers[callbackName] = bind(func, this, args);
}
//append our various parameters as necessary
url = this.__AppendUrlValues(url);
this.OnDebug("_Send (updated) " + url);
// add the script node to the document
if (document.createElement && ! this.__isMacIE) {
gLoadScript(url, callbackName);
return;
}
// could fall back to sync at this point, but will bust if the page is already loaded
this.OnError("No support for async in this browser");
}
SiteLifeProxy.prototype.Logout = function(ScriptToUse, IsRestPage) {
var plckRest = IsRestPage ? true : false;
this.__Send(this.__baseUrl + '/Utility/Logout?plckRedirectUrl=' + escape(window.location.href) + '&plckRest=' + plckRest, ScriptToUse);
return false;
}
SiteLifeProxy.prototype.AddLoadEvent = function(func) {
if(window.addEventListener){
window.addEventListener("load", func, false);
}else{
if(window.attachEvent){
window.attachEvent("onload", func);
}else{
if(document.getElementById){
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}}}}}}
SiteLifeProxy.prototype.AdInsertHelper = function() {
for(var src in gSiteLife.__adsToInsert) {
if(src == "extend") continue;
var dest = gSiteLife.__adsToInsert[src];
var parent = document.getElementById(dest);
var newChild = document.getElementById(src);
if( ! parent || ! newChild ) {continue; }
parent.replaceChild( newChild, document.getElementById(dest + "Child"));
newChild.style.display = "block"; parent.style.display = "block";
}
}
SiteLifeProxy.prototype.InsertAds = function(source, destination) {
gSiteLife.__adsToInsert = new Object();
for(ii=0; ii< this.InsertAds.arguments.length; ii+=2) { gSiteLife.__adsToInsert[this.InsertAds.arguments[ii]] = this.InsertAds.arguments[ii+1];}
this.AddLoadEvent(gSiteLife.AdInsertHelper);
}
SiteLifeProxy.prototype.TitleTag = function() {
var titleTag = document.getElementById("plckTitleTag");
return titleTag ? titleTag.innerText || titleTag.textContent : null;
}
SiteLifeProxy.prototype.WriteDiv = function(id, divClass) {
var cssClass = divClass ? divClass : "";
document.write('
'); return id;
}
SiteLifeProxy.prototype.InnerHtmlWrite = function(elementId, innerContents ) {
var el = document.createElement("div");
try {
if(document.location.href.indexOf("debug=true") > -1) {
el.innerHTML += "";
} else {
el.innerHTML += innerContents;
el.style.display = "inline";
}
var destDiv = document.getElementById(elementId);
while (destDiv.childNodes.length >= 1) {
destDiv.removeChild(destDiv.childNodes[0]);
}
destDiv.appendChild(el);
} catch (error) {
alert(elementId + " Error " + error.number + ": " + error.description);
}
}
SiteLifeProxy.prototype.SortTimeStampDescending = "TimeStampDescending";
SiteLifeProxy.prototype.SortTimeStampAscending = "TimeStampAscending";
SiteLifeProxy.prototype.SortRecommendationsDescending = "RecommendationsDescending";
SiteLifeProxy.prototype.SortRecommendationsAscending = "RecommendationsAscending";
SiteLifeProxy.prototype.SortRatingDescending = "RatingDescending";
SiteLifeProxy.prototype.SortRatingAscending = "RatingAscending";
SiteLifeProxy.prototype.KeyTypeExternalResource = "ExternalResource";
SiteLifeProxy.prototype.PersonaHeaderRequest = function(UserId) {
var url = this.__baseUrl + '/Persona/PersonaHeader?plckElementId=personaHDest&plckUserId='+ UserId;
this.__Send(url, "personaHeaderScript", 'persona:header', arguments);
}
SiteLifeProxy.prototype.PersonaHeader = function(UserId) {
this.WriteDiv("personaHDest", "Persona_Main");
this.PersonaHeaderRequest(UserId);
}
SiteLifeProxy.prototype.Persona = function(UserId) {
this.WriteDiv("personaDest", "Persona_Main");
var action = this.GetParameter("plckPersonaPage");
if(action && (typeof this[action] == 'function')) this[action](UserId);
else this.PersonaComments(UserId);
}
SiteLifeProxy.prototype.LoadPersonaPage = function(PageName, UserId) {
var params = new Object(); params['plckPersonaPage'] = PageName; params['plckUserId'] = UserId;
params['econUId'] = UserId;
for(ii=2; ii< this.LoadPersonaPage.arguments.length; ii+=2) { params[this.LoadPersonaPage.arguments[ii]] = this.LoadPersonaPage.arguments[ii+1];}
this.ReloadPage(params);
return false;
}
SiteLifeProxy.prototype.PersonaHome = function(UserId) {
return this.PersonaSend('PersonaHome', 'personaDest', 'personaScript', UserId, null, 'persona:home');
}
SiteLifeProxy.prototype.WatchItem = function(Controller,Method,WatchKey, targetDiv) {
var url = this.__baseUrl + '/'+Controller+'/' + Method + '?' + 'plckWatchKey=' + WatchKey + '&plckElementId=' + targetDiv + '&plckWatchUrl=' + this.EscapeValue(window.location.href);
this.__Send(url, "AddWatchScript");
return false;
}
SiteLifeProxy.prototype.PersonaRemoveWatchItem= function(UserId, WatchKey, Div, View) {
return this.PersonaSend('PersonaRemoveWatchItem', Div, 'personaScript', UserId, 'plckWatchView=' + View + '&plckWatchKey=' + WatchKey);
}
SiteLifeProxy.prototype.PersonaAddFriend= function(UserId) {
return this.PersonaSend('PersonaAddFriend', 'personaHDest', 'personaScript', UserId);
}
SiteLifeProxy.prototype.PersonaRemoveFriend = function(UserId, Friend, Div, View, Expanded) {
if(!Expanded) Expanded = "false";
if (confirm("Are you sure you want to delete this user from your list of Friends?") == true) {
return this.PersonaSend('PersonaRemoveFriend', Div, 'personaScript', UserId, 'plckFriendView=' + View + '&plckFriend=' + Friend + '&plckExpanded=' + Expanded);
}
return false;
}
SiteLifeProxy.prototype.PersonaRemovePendingFriend = function(UserId, PendingFriend, Div) {
if (confirm("Are you sure you want to delete this user's invite?") == true) {
return this.PersonaSend('PersonaRemovePendingFriend', Div, 'personaScript', UserId, 'plckPendingFriend=' + PendingFriend);
}
return false;
}
SiteLifeProxy.prototype.PersonaAddPendingFriend = function(UserId, PendingFriend, Div) {
return this.PersonaSend('PersonaAddPendingFriend', Div, 'personaScript', UserId, 'plckPendingFriend=' + PendingFriend);
}
SiteLifeProxy.prototype.PersonaMessages = function(UserId) {
var AdParams = this.GetParameter('plckCurrentPage') ? 'plckCurrentPage=' + this.GetParameter('plckCurrentPage') : "";
var scrl = this.GetParameter('plckScrollToAnchor'); if(scrl){ if(AdParams) {AdParams +='&';} AdParams += 'plckScrollToAnchor=' + scrl;}
if(this.GetParameter('plckMessageSubmitted')){if(AdParams) {AdParams +='&';} AdParams += 'plckMessageSubmitted=' + this.GetParameter('plckMessageSubmitted');}
return this.PersonaSend('PersonaMessages', 'personaDest', 'personaScript', UserId, AdParams, 'persona:messages');
}
SiteLifeProxy.prototype.PersonaComments = function(UserId) {
var AdParams = this.GetParameter('plckCurrentPage') ? 'plckCurrentPage=' + this.GetParameter('plckCurrentPage') : "";
return this.PersonaSend('PersonaComments', 'personaDest', 'personaScript', UserId, AdParams, 'persona:comments');
}
SiteLifeProxy.prototype.PersonaBlog = function(UserId) {
var AdParams = this.GetParameter('plckCurrentPage') ? 'plckCurrentPage=' + this.GetParameter('plckCurrentPage') : "";
if(AdParams) {AdParams +='&';} AdParams += 'plckBlogId=' + UserId;
var url = this.__baseUrl + '/PersonaBlog/PersonaBlog?plckElementId=personaDest&plckUserId='+ UserId + '&' + AdParams;
this.__Send(url, 'personaScript', 'persona:blog', arguments);
return false;
}
SiteLifeProxy.prototype.PersonaProfile = function(UserId) {
return this.PersonaSend('PersonaProfile', 'personaDest', 'personaScript', UserId, null, 'persona:profile');
}
SiteLifeProxy.prototype.PersonaWatchListPaginate = function(UserId, pageNum) {
return this.PersonaPaginate('WatchList', pageNum, UserId);
}
SiteLifeProxy.prototype.PersonaFriendsPaginate = function(UserId, pageNum) {
return this.PersonaPaginate('Friends', pageNum, UserId);
}
SiteLifeProxy.prototype.PersonaPendingFriendsPaginate = function(UserId, pageNum) {
var AdParam = "plckPendingFriendsPageNum=" + pageNum;
return this.PersonaPaginate('Friends', 0, UserId,AdParam);
}
SiteLifeProxy.prototype.PersonaMessagesPreviewPaginate = function(UserId, pageNum) {
return this.PersonaPaginate('MessagesPreview', pageNum, UserId);
}
SiteLifeProxy.prototype.PersonaMessageRemove = function(UserId, pageNum, MessageKey) {
if (confirm("Are you sure you want to remove this message from the page?") == true) {
return this.PersonaSend('PersonaRemoveMessage', 'personaDest', 'PersonaMessagesPageScript', UserId, 'plckCurrentPage='+ pageNum + '&plckMessageKey='+MessageKey);
}
return false;
}
SiteLifeProxy.prototype.PersonaSend = function(ApiName, DestDiv, ScriptName, UserId, AddParams, eventId){
var url = this.__baseUrl + '/Persona/' + ApiName + '?plckElementId=' + DestDiv + '&plckUserId='+ UserId;
if(AddParams) url += '&' + AddParams;
this.__Send(url, ScriptName, eventId, arguments);
return false;
}
SiteLifeProxy.prototype.PersonaPaginate = function(ApiName, PageNum, UserId, AddParams){
var url = this.__baseUrl + '/Persona/Persona' + ApiName + '?plck' + ApiName + 'PageNum=' + PageNum + '&plckElementId=Persona' + ApiName + 'Dest&plckUserId='+ UserId;
if(AddParams) url += '&' + AddParams;
this.__Send(url, 'Persona'+ ApiName + 'Script');
return false;
}
SiteLifeProxy.prototype.PersonaPhotoSend = function(ApiName, DestDiv, ScriptName, UserId, AddParams, eventId){
var url = this.__baseUrl + '/PersonaPhoto/' + ApiName + '?plckElementId=' + DestDiv + '&plckUserId='+ UserId;
if(AddParams) url += '&' + AddParams;
this.__Send(url, ScriptName, eventId, arguments);
return false;
}
SiteLifeProxy.prototype.PersonaMostRecent = function(UserId, PhotoID, DestDiv) {
return this.PersonaPhotoSend('PersonaMostRecent', DestDiv, 'personaScript', UserId,'plckPhotoID=' + PhotoID);
}
SiteLifeProxy.prototype.PersonaCreateGallery = function(UserId) {
return this.PersonaPhotoSend('UserGalleryCreate', 'personaDestPhoto', 'personaScript', UserId);
}
SiteLifeProxy.prototype.PersonaEditGallery = function(UserId,GalleryID) {
return this.PersonaPhotoSend('UserGalleryEdit', 'userGalleryDest', 'personaScript', UserId,'plckGalleryID=' + GalleryID);
}
SiteLifeProxy.prototype.PersonaUploadToUserGallery = function(GalleryId) {
var url = this.__baseUrl + '/Photo/PhotoUpload?plckElementId=userGalleryDest&plckGalleryID='+ GalleryId;
this.__Send(url);
return false;
}
SiteLifeProxy.prototype.PersonaPhotos = function(UserId) {
return this.PersonaPhotoSend('PersonaPhotos', 'personaDest', 'personaScript', UserId, null, 'persona:photos');
}
SiteLifeProxy.prototype.PersonaAllPhotos = function(UserId) {
return this.PersonaPhotoSend('PersonaAllPhotos', 'personaDest', 'personaScript', UserId);
}
SiteLifeProxy.prototype.PersonaGalleryPhoto = function(UserId) {
return this.PersonaPhotoSend('PersonaGalleryPhoto', 'personaDest', 'personaScript', UserId);
}
SiteLifeProxy.prototype.PersonaMyRecentPhotos = function(UserId,ElementId, PageNum) {
return this.PersonaPhotoSend('PersonaMyRecentPhotos', ElementId, 'personaScript', UserId,'plckPageNum=' + PageNum);
}
SiteLifeProxy.prototype.PersonaGallery = function(UserId,GalleryId,PageNum) {
if(!PageNum){
PageNum = gSiteLife.GetParameter("plckPageNum") ? gSiteLife.GetParameter("plckPageNum") : 0;
}
if(!GalleryId) {
GalleryId = gSiteLife.GetParameter("plckGalleryID");
}
return this.PersonaPhotoSend('PersonaGallery', 'personaDest', 'personaScript', UserId,'plckGalleryID='+ GalleryId + '&plckPageNum=' + PageNum);
}
SiteLifeProxy.prototype.UserGalleryList = function(UserId,ElementId, PageNum) {
return this.PersonaPhotoSend('UserGalleryList', ElementId, 'personaScript', UserId,'plckPageNum=' + PageNum);
}
SiteLifeProxy.prototype.PersonaGallerySubmissions = function(UserId,ElementId, PageNum){
return this.PersonaPhotoSend('PersonaGallerySubmissions', ElementId, 'personaScript', UserId,'plckPageNum=' + PageNum);
}
SiteLifeProxy.prototype.PersonaGalleryPhoto = function(UserId) {
var photoid = gSiteLife.GetParameter('plckPhotoID');
return this.PersonaPhotoSend('PersonaGalleryPhoto', 'personaDest','personaScript', UserId,'&plckPhotoID=' +photoid);
}
SiteLifeProxy.prototype.PersonaRecentGalleryPhoto = function(UserId) {
var photoid = gSiteLife.GetParameter('plckPhotoID');
return this.PersonaPhotoSend('PersonaRecentGalleryPhoto', 'personaDest','personaScript', UserId,'&plckPhotoID=' +photoid);
}
SiteLifeProxy.prototype.LoadPersonaGalleryPage = function(UserId,GalleryID) {
var params = new Object(); params['plckPersonaPage'] = 'PersonaGallery'; params['plckUserId'] = UserId;
params['econUId'] = UserId;
params['plckGalleryID'] = GalleryID;
this.ReloadPage(params);
return false;
}
SiteLifeProxy.prototype.LoadPersonaPhotoPage = function(UserId,PhotoID) {
var params = new Object(); params['plckPersonaPage'] = 'PersonaGalleryPhoto'; params['plckUserId'] = UserId;
params['econUId'] = UserId;
params['plckPhotoID'] = PhotoID;
this.ReloadPage(params);
return false;
}
SiteLifeProxy.prototype.LoadPersonaRecentPhotoPage = function(UserId,PhotoID) {
var params = new Object(); params['plckPersonaPage'] = 'PersonaRecentGalleryPhoto'; params['plckUserId'] = UserId;
params['econUId'] = UserId;
params['plckPhotoID'] = PhotoID;
this.ReloadPage(params);
return false;
}
SiteLifeProxy.prototype.SolicitPhoto = function(galleryID) {
var elementId = 'plcksolicit' + galleryID;
this.WriteDiv(elementId);
var url = this.__baseUrl + '/Photo/SolicitPhoto?plckElementId=' + elementId + '&plckGalleryID=' +galleryID;
this.__Send(url);
return false;
}
SiteLifeProxy.prototype.PhotoUpload = function() {
var elementId = 'plcksubmit';
this.WriteDiv(elementId);
var galleryID = gSiteLife.GetParameter('plckGalleryID');
var url = this.__baseUrl + '/Photo/PhotoUpload?plckElementId=' + elementId + '&plckGalleryID=' +galleryID;
this.__Send(url);
return false;
}
SiteLifeProxy.prototype.PublicGallery = function() {
var elementId = 'plckgallery';
this.WriteDiv(elementId);
var galleryID = gSiteLife.GetParameter('plckGalleryID');
var pageNum = gSiteLife.GetParameter('plckPageNum');
var url = this.__baseUrl + '/Photo/PublicGallery?plckElementId=' + elementId + '&plckGalleryID=' +galleryID + '&plckPageNum=' +pageNum;
this.__Send(url);
return false;
}
SiteLifeProxy.prototype.GalleryPhoto = function() {
var elementId = 'plckphoto';
this.WriteDiv(elementId);
var photoid = gSiteLife.GetParameter('plckPhotoID');
var url = this.__baseUrl + '/Photo/GalleryPhoto?plckElementId=' + elementId + '&plckPhotoID=' +photoid;
this.__Send(url);
return false;
}
SiteLifeProxy.prototype.PublicGalleries = function() {
var elementId = 'plckgalleries';
this.WriteDiv(elementId);
var pageNum = gSiteLife.GetParameter('plckPageNum') ? gSiteLife.GetParameter('plckPageNum') : "0";
var url = this.__baseUrl + '/Photo/PublicGalleries?plckElementId=' + elementId + '&plckPageNum=' + pageNum;
this.__Send(url);
return false;
}
SiteLifeProxy.prototype.PhotoRecommend = function(targetid,recommendDiv,isGallery) {
var url = this.__baseUrl + '/Photo/Recommend?plckElementId=' + recommendDiv + '&plckTargetid=' +targetid + '&plckIsGallery=' +isGallery ;
this.__Send(url);
return false;
}
//parentKeyType can be any gSiteLife.KeyType* value, but for including this widget on an article page the value is
//typically gSiteLife.KeyTypeExternalResource
SiteLifeProxy.prototype.Comments = function(parentKeyType, parentKey, pageSize, sort, showTabs, tab, parentUrl, parentTitle, refreshPage)
{
return this.CommentsInternal(parentKeyType, parentKey, pageSize, sort, showTabs, tab, parentUrl, parentTitle, false, false, null, refreshPage);
};
SiteLifeProxy.prototype.CommentsInput = function(parentKeyType, parentKey, redirectToUrl)
{
return this.CommentsInternal(parentKeyType, parentKey, null, "TimeStampDescending", null, null, null, null, true, false, redirectToUrl, false);
};
SiteLifeProxy.prototype.CommentsOutput = function(parentKeyType, parentKey, refreshPage, pageSize, sortOrder)
{
sortOrder = sortOrder || "TimeStampDescending";
return this.CommentsInternal(parentKeyType, parentKey, pageSize, sortOrder, null, null, null, null, false, true, null, refreshPage);
}
SiteLifeProxy.prototype.CommentsRefresh = function(parentKeyType, parentKey, pageSize, sortOrder)
{
if (!parentKey || parentKey == "") throw "Must pass in value for parentKey!";
return this.CommentsInternal(parentKeyType, parentKey, pageSize, sortOrder, null, null, null, null, false, false, null, true);
}
SiteLifeProxy.prototype.CommentsInternal = function(parentKeyType, parentKey, pageSize, sort, showTabs, tab, parentUrl, parentTitle, hideView, hideInput, redirectToUrl, refreshPage)
{
var divId = 'Comments_Container';
if(this.numCommentsWidgets){ divId += this.numCommentsWidgets; } else { this.numCommentsWidgets = 0; }
document.write("");
this.numCommentsWidgets++;
var oldDocOnLoad = window.onload;
function loadComments() {
if (oldDocOnLoad != null) {
oldDocOnLoad();
}
gSiteLife.GetComments(parentKeyType, parentKey, parentUrl, parentTitle, 0, pageSize, sort, showTabs, tab, hideView, hideInput, redirectToUrl, refreshPage, divId);
}
window.onload = loadComments;
return false;
}
SiteLifeProxy.prototype.GetComments = function(parentKeyType, parentKey, parentUrl, parentTitle, page, pageSize, sort, showTabs, tab, hideView, hideInput, redirectTo, refreshPage, divId)
{
parentKeyType = parentKeyType || "ExternalResource";
parentUrl = parentUrl || gSiteLife.__StripAnchorFromUrl(window.location.href);
parentUrl = gSiteLife.EscapeValue(parentUrl);
parentKey = parentKey || gSiteLife.__StripAnchorFromUrl(window.location.href);
parentTitle = parentTitle || gSiteLife.EscapeValue(document.title);
page = page || gSiteLife.GetParameter('plckCurrentPage') || 0;
pageSize = pageSize || 10;
sort = sort || "TimeStampAscending";
showTabs = showTabs || false;
tab = tab || "MostRecent";
hideView = hideView || false;
hideInput = hideInput || false;
redirectTo =gSiteLife.EscapeValue(redirectTo) || "";
refreshPage = refreshPage || false;
var url = this.__baseUrl +
'/Comment/GetPage.rails?plckTargetKeyType='+ parentKeyType +
'&plckTargetKey=' + escape(parentKey) +
"&plckCurrentPage=" + page +
"&plckItemsPerPage=" + pageSize +
"&plckSort=" + sort +
"&plckElementId=" + divId +
"&plckTargetUrl=" + parentUrl +
"&plckTargetTitle=" + parentTitle +
"&plckHideView=" + hideView +
"&plckHideInput=" + hideInput +
"&plckRefreshPage=" + refreshPage +
"&plckRedirectToUrl=" + redirectTo ;
if (showTabs) {
url = url + "&plckShowTabs=true&plckTab=" + tab;
}
this.__Send(url);
return false;
};
SiteLifeProxy.prototype.Blog = function(BlogId) {
this.WriteDiv("blogDest", "Persona_Main");
var action = this.GetParameter("plckBlogPage");
if(action && action != "Blog" && (typeof this[action] == 'function')){
return this[action](BlogId);
}else{
var AdParams = this.GetParameter('plckCurrentPage') ? 'plckCurrentPage=' + this.GetParameter('plckCurrentPage') : "";
return this.BlogSend('Blog', 'Blog', 'blogDest', 'blogScript', BlogId, AdParams);
}
}
SiteLifeProxy.prototype.LoadBlogPage = function(PageName, BlogId) {
var params = new Object(); params['plckBlogPage'] = PageName; params['plckBlogId'] = BlogId;
for(ii=2; ii< this.LoadBlogPage.arguments.length; ii+=2) { params[this.LoadBlogPage.arguments[ii]] = this.LoadBlogPage.arguments[ii+1];}
this.ReloadPage(params);
return false;
}
SiteLifeProxy.prototype.BlogViewEdit = function(blogId) {
return this.BlogSend(null, 'BlogViewEdit', null, null, blogId);
}
SiteLifeProxy.prototype.BlogPostCreate = function(blogId) {
return this.BlogSend(null, 'BlogPostCreate', null, null, blogId, 'plckRedirectUrl=' + this.GetParameter("plckRedirectUrl"));
}
SiteLifeProxy.prototype.BlogPendingComments = function(blogId, currentPage) {
if( !currentPage) currentPage = 0;
return this.BlogSend(null, 'BlogPendingComments', null, null, blogId, 'plckCurrentPage='+currentPage);
}
SiteLifeProxy.prototype.BlogSettings = function(blogId) {
return this.BlogSend(null, 'BlogSettings', null, null, blogId);
}
SiteLifeProxy.prototype.BlogEditPost = function(blogId, controller, div, script, postId, selection, daysBack) {
return this.BlogSend(controller, 'BlogPostEdit', div, script, blogId, 'plckPostId=' + postId + '&plckSelection=' + selection + '&plckDaysBack=' + daysBack + '&plckRedirectUrl=' + this.EscapeValue(window.location.href));
}
SiteLifeProxy.prototype.BlogRemovePost = function(blogId, controller, div, script, postId, selection, daysBack) {
if (confirm("Are you sure you want to delete this item?") == true) {
return this.BlogSend(controller, 'BlogRemovePost', div, script, blogId, 'plckPostId=' + postId + '&plckSelection=' + selection + '&plckDaysBack=' + daysBack );
}
return false;
}
SiteLifeProxy.prototype.BlogViewPost = function(blogId, postId, selection, daysBack) {
if(!postId ) { postId = gSiteLife.GetParameter('plckPostId'); }
return this.BlogSend(null, 'BlogViewPost', null, null, blogId, 'plckPostId=' + postId + '&plckSelection=' + selection + '&plckDaysBack=' + daysBack + '&plckCommentSortOrder=' + this.GetParameter('plckCommentSortOrder'));
}
SiteLifeProxy.prototype.BlogViewMonth = function(blogId, monthId) {
if(!monthId ) { monthId = gSiteLife.GetParameter('plckMonthId'); }
var AdParams = 'plckMonthId=' + monthId;
AdParams += this.GetParameter('plckCurrentPage') ? '&plckCurrentPage=' + this.GetParameter('plckCurrentPage') : "";
return this.BlogSend(null, 'BlogViewMonth', null, null, blogId, AdParams);
}
SiteLifeProxy.prototype.AddBlogWatchItem= function(blogId, controller, script, Url, WatchKey) {
return this.BlogSend(controller, 'AddBlogWatch', 'plckBlogWatchDiv', script, blogId, 'plckWatchKey=' + WatchKey + '&plckWatchUrl=' + this.EscapeValue(Url));
}
SiteLifeProxy.prototype.RemoveBlogWatchItem= function(blogId, controller, script, WatchKey) {
return this.BlogSend(controller, 'RemoveBlogWatch', 'plckBlogWatchDiv', script, blogId, 'plckWatchKey=' + WatchKey);
}
SiteLifeProxy.prototype.BlogViewTag = function(blogId, tag) {
if(!tag ) { tag = gSiteLife.GetParameter('plckTag'); }
var AdParams = 'plckTag=' + tag;
AdParams += this.GetParameter('plckCurrentPage') ? '&plckCurrentPage=' + this.GetParameter('plckCurrentPage') : "";
return this.BlogSend(null, 'BlogViewTag', null, null, blogId, AdParams );
}
SiteLifeProxy.prototype.BlogRefreshViewEditList= function(blogId, controller, div, script, selection, daysBack) {
return this.BlogSend(controller, 'BlogRefreshViewEditList', div, script, blogId, 'plckSelection=' + selection + '&plckDaysBack=' + daysBack );
}
SiteLifeProxy.prototype.BlogSend = function(controller, apiName, destDiv, scriptName, blogId, addParams){
if(!controller) controller = this.GetParameter('plckController');
if(!destDiv) destDiv = this.GetParameter('plckElementId');
if(!scriptName) scriptName = this.GetParameter('plckScript');
var url = this.__baseUrl + '/' + controller + '/' + apiName + '?plckElementId=' + destDiv + '&plckBlogId=' + blogId + '&' + addParams;
this.__Send(url, scriptName, 'widget:blog');
return false;
}
SiteLifeProxy.prototype.Recommend = function(controller, itemId, recommendDiv) {
var url = this.__baseUrl + '/' + controller + '/Recommend?plckElementId=' + recommendDiv + '&plckItemId=' +itemId;
this.__Send(url);
return false;
}
SiteLifeProxy.prototype.BlogSelectPendingComments = function(formId, checked) {
var form = document.getElementById(formId);
for (i=0; i= 0) index = selectedIndex;
for(i=1; i <= stars.length; i++) {
if (index > 0 && i <= index) {
stars[i-1].src = this.__baseUrl + "/Content/images/icons/fullstar.gif";
}else {
stars[i-1].src = this.__baseUrl + "/Content/images/icons/emptystar.gif";
}
}
switch (index) {
case 0: label.innerHTML = "Not rated"; break;
case 1: label.innerHTML = "Horrible!"; break;
case 2: label.innerHTML = "Not for me."; break;
case 3: label.innerHTML = "It's alright."; break;
case 4: label.innerHTML = "I like it."; break;
case 5: label.innerHTML = "I love it!"; break;
default: label.innerHTML = "Not rated";
}
}
SiteLifeProxy.prototype.Review = function(parentKeyType, parentKey, reviewedTitle, reviewCategory, pageSize, sort, currentPage) {
var divId = "Reviews_Container";
this.WriteDiv(divId);
return this.GetReviews(parentKeyType, parentKey, reviewedTitle, reviewCategory, pageSize, sort, currentPage);
}
SiteLifeProxy.prototype.ReviewClickStar = function (index, targetKey) {
document.getElementById(targetKey+"Rating-value").value = index;
}
SiteLifeProxy.prototype.GetReviews = function(parentKeyType, parentKey, reviewedTitle, reviewCategory, pageSize, sort, currentPage) {
parentKeyType = parentKeyType || "ExternalResource";
parentKey = gSiteLife.EscapeValue(parentKey) || gSiteLife.EscapeValue(gSiteLife.__StripAnchorFromUrl(window.location.href));
reviewedTitle = gSiteLife.EscapeValue(reviewedTitle) || gSiteLife.EscapeValue(document.title);
reviewCategory = reviewCategory || "Uncategorized";
pageSize = pageSize || 10;
sort = sort || "TimeStampAscending";
currentPage = currentPage || 0;
var url = this.__baseUrl + '/Review/Reviews?plckElementId=Reviews_Container' +
'&plckTargetKey=' + parentKey +
'&plckTargetKeyType=' + parentKeyType +
'&plckReviewedTitle=' + reviewedTitle +
'&plckReviewCategory=' + reviewCategory +
'&plckSort=' + sort +
'&plckParentUrl=' + gSiteLife.EscapeValue(gSiteLife.__StripAnchorFromUrl(window.location.href)) +
'&plckParentTitle=' + gSiteLife.EscapeValue(document.title) +
'&plckCurrentPage=' + currentPage +
'&plckPageSize=' + pageSize;
this.__Send(url);
return false;
}
SiteLifeProxy.prototype.SummaryArticlesMostCommented = function(count) {
return this.SummaryPanel("SummaryArticlesMostCommented", count);
}
SiteLifeProxy.prototype.SummaryArticlesMostRecommended = function(count) {
return this.SummaryPanel("SummaryArticlesMostRecommended", count);
}
SiteLifeProxy.prototype.SummaryPhotosRecentPhotosByTag = function(count, tagFilter, filterBySiteOfOrigin) {
return this.SummaryPanel("SummaryPhotosRecentPhotosByTag", count, tagFilter, filterBySiteOfOrigin);
}
SiteLifeProxy.prototype.SummaryPhotosRecentUserPhotos = function(count, tagFilter, filterBySiteOfOrigin) {
return this.SummaryPanel("SummaryPhotosRecentUserPhotos", count, tagFilter, filterBySiteOfOrigin);
}
SiteLifeProxy.prototype.SummaryPhotosRecentPhotos = function(count, tagFilter, filterBySiteOfOrigin) {
return this.SummaryPanel("SummaryPhotosRecentPhotos", count, tagFilter, filterBySiteOfOrigin);
}
SiteLifeProxy.prototype.SummaryPhotosMostRecommendedPhotos = function(count, filterBySiteOfOrigin) {
return this.SummaryPanel("SummaryPhotosMostRecommendedPhotos", count, "", filterBySiteOfOrigin);
}
SiteLifeProxy.prototype.SummaryPhotosMostRecommendedUserPhotos = function(count, filterBySiteOfOrigin) {
return this.SummaryPanel("SummaryPhotosMostRecommendedUserPhotos", count, "", filterBySiteOfOrigin);
}
SiteLifeProxy.prototype.SummaryPhotosMostRecommendedGalleries = function(count) {
return this.SummaryPanel("SummaryPhotosMostRecommendedGalleries", count);
}
SiteLifeProxy.prototype.SummaryForumsRecentDiscussions = function(count, filterBySiteOfOrigin, parentIds) {
var divId= "Summary_Container" + this.SID;
if(this.numSummaryWidgets){ divId += this.numSummaryWidgets++; } else { this.numSummaryWidgets = 1; }
this.WriteDiv(divId, divId);
var methodName = "SummaryForumsRecentDiscussions";
var tagFilter = "";
return this.SummarySend(methodName, divId, divId + "Script", "plckCount", count, "plckTagFilter", tagFilter, "plckFilterBySiteOfOrigin", filterBySiteOfOrigin, "plckParentIds", parentIds);
}
SiteLifeProxy.prototype.SummaryBlogsRecent = function(count, tagFilter) {
return this.SummaryPanel("SummaryBlogsRecent", count, tagFilter);
}
SiteLifeProxy.prototype.SummaryBlogsRecentPostsByTag = function(count, tagFilter, filterBySiteOfOrigin) {
return this.SummaryPanel("SummaryBlogsRecentPostsByTag", count, tagFilter, filterBySiteOfOrigin);
}
SiteLifeProxy.prototype.SummaryBlogsRecentPosts = function(count, tagFilter, filterBySiteOfOrigin) {
return this.SummaryPanel("SummaryBlogsRecentPosts", count, tagFilter, filterBySiteOfOrigin);
}
SiteLifeProxy.prototype.SummaryBlogsMostRecommendedPosts = function(count, tagFilter, filterBySiteOfOrigin) {
return this.SummaryPanel("SummaryBlogsMostRecommendedPosts", count, tagFilter, filterBySiteOfOrigin);
}
SiteLifeProxy.prototype.SummaryPersonaProfileRecent = function(count) {
return this.SummaryPanel("SummaryPersonaProfileRecent", count);
}
SiteLifeProxy.prototype.SummaryPanel = function(methodName, count, tagFilter, filterBySiteOfOrigin) {
var divId= "Summary_Container" + this.SID;
if(this.numSummaryWidgets){ divId += this.numSummaryWidgets++; } else { this.numSummaryWidgets = 1; }
this.WriteDiv(divId, divId);
return this.SummarySend(methodName, divId, divId + "Script", "plckCount", count, "plckTagFilter", tagFilter, "plckFilterBySiteOfOrigin", filterBySiteOfOrigin);
}
SiteLifeProxy.prototype.SummarySend = function(ApiName, DestDiv, ScriptName) {
var url = this.__baseUrl + '/Summary/' + ApiName + '?plckElementId=' + DestDiv;
for(ii=3; ii< this.SummarySend.arguments.length; ii+=2) { if(this.SummarySend.arguments[ii+1]) { url += "&" + this.SummarySend.arguments[ii] + "=" + this.SummarySend.arguments[ii+1];} }
this.__Send(url, ScriptName);
return false;
}
var gSiteLife = new SiteLifeProxy("http://sitelife.economist.com/ver1.0");
gSiteLife.apiKey = "${APIKey}";
gSiteLife.SID = "";
// legacy behavior
gSiteLife.AddEventHandler('ExternalResourceLink', function(rk) {return rk;});
if(gSiteLife.GetParameter('plckPersonaPage') && gSiteLife.GetParameter('plckPersonaPage').indexOf('PersonaBlog') == 0) {
document.write(""); }