if(window.Evri===undefined){window.Evri={};}
if(window.Evri.defineNamespace===undefined){window.Evri.defineNamespace=function(root,namespace,items){items=items||{};if(root[namespace]===undefined){root[namespace]=items;}};window.Evri.extendNamespace=function(namespace,extensions){for(var i in extensions){if(namespace[i]===undefined){namespace[i]=extensions[i];}}};window.Evri.defineClass=function(root,className,constructor){if(root[className]===undefined){root[className]=function(){constructor.apply(this,arguments);};}};window.Evri.extendClass=function(klass,extensions){for(var i in extensions){if(klass.prototype[i]===undefined){klass.prototype[i]=extensions[i];}}};};Evri.defineNamespace(Evri,"API");Evri.extendNamespace(Evri.API,{isSetup:false,requestFailed:function(options){console.log(options.httpCode+": "+options.message);},setup:function(options){options=options||{};Evri.API.Environment.setTransport(options.transport);if(Evri.API.isSetup===false){Evri.API.Transport.setup();Evri.API.isSetup=true;}}});Evri.defineNamespace(Evri.API,"Environment");Evri.extendNamespace(Evri.API.Environment,{apiHost:"api.evri.com",apiPort:80,apiVersion:"v1",staticAssetBaseUrl:"http://www.evri.com/widget",portalHost:"www.evri.com",swfProxyHost:"www.evri.com",articleInIframe:false,set:function(key,value){if(key=="Transport"){alert("Use setTransport to change transport.");}else{Evri.API.Environment[key]=value;}
return Evri.API.Environment;},setTransport:function(transport){switch(transport){case"XmlHttp":Evri.API.Transport=Evri.API.XmlHttp;break;default:Evri.API.Transport=Evri.API.CrossDomain;break;}
return Evri.API.Environment;}});Evri.defineNamespace(Evri.API,"Utilities");Evri.extendNamespace(Evri.API.Utilities,{articleTracker:{'evri-washington-post':'waporef=evri.widget.1'},Date:{relativeDate:function(date,options){var displayDate="";options=options||{};if(date!==undefined){var nowDate=new Date();var pubDate=new Date(date);var nowDateUTCEpoch=Evri.API.Utilities.Date.utcEpochFor(nowDate);var pubDateUTCEpoch=Evri.API.Utilities.Date.utcEpochFor(pubDate);var epochDiff=Math.abs(nowDateUTCEpoch-pubDateUTCEpoch);var minute=60;var hour=60*minute;var day=24*hour;var week=7*day;var months=['January','February','March','April','May','June','July','August','September','October','November','December'];if(epochDiff<week){if(epochDiff<minute){displayDate="less than a minute ago";}else if(epochDiff<hour){var minutesAgo=Math.floor(epochDiff/minute);displayDate=""+minutesAgo+" minute"+(minutesAgo==1?'':'s')+" ago";}else if(epochDiff<day){var hoursAgo=Math.floor(epochDiff/hour);displayDate=""+hoursAgo+" hour"+(hoursAgo==1?'':'s')+" ago";}else{var daysAgo=Math.floor(epochDiff/day)
displayDate=""+daysAgo+" day"+(daysAgo==1?'':'s')+" ago";}}else{displayDate=months[pubDate.getUTCMonth()]+" "+pubDate.getUTCDate()+", "+pubDate.getUTCFullYear();}}
return displayDate;},utcEpochFor:function(date){return parseInt(Date.UTC(date.getFullYear(),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds(),date.getMilliseconds())/1000);}},HTML:{attributesFrom:function(attrs){var attrString="";for(var attrName in attrs){switch(attrName){case'class':attrString+=" "+attrName+'="'+attrs[attrName].replace(/\"/,'&quot;')+'"';break;default:break;}}
return attrString;},tokenizeStringHighlights:function(session,content,matches){var tokens=[];if(matches.length>0){var startPosition=0;for(var i=0;i<matches.length;i++){var match=matches[i];if(match.start>startPosition){tokens.push(new session.models.ContentRange(content.substr(startPosition,(match.start-startPosition))));}
tokens.push(new session.models.ContentRange(content.substr(match.start,match.snippetLength),match));startPosition=match.start+match.snippetLength;}
if(startPosition<content.length){tokens.push(new session.models.ContentRange(content.substr(startPosition,(content.length-startPosition))));}}else{tokens.push(new session.models.ContentRange(content));}
return tokens;},highlightContent:function(session,content,matches,tag,attrs){attrs=attrs||{};var tokens=Evri.API.Utilities.HTML.tokenizeStringHighlights(session,content,matches);var newContent="";var startTag="<"+tag+Evri.API.Utilities.HTML.attributesFrom(attrs)+">";var endTag="</"+tag+">";for(var i=0;i<tokens.length;i++){var range=tokens[i];newContent+=(range.matchedLocation!==undefined?startTag+range.content+endTag:range.content)}
return newContent;}},String:{capitalize:function(content){return content.charAt(0).toUpperCase()+content.substring(1).toLowerCase();}},URI:{cleanDomain:function(possibleDomain){return possibleDomain;},params:function(url){var hasQueryString=url.indexOf('?')>-1?true:false;var queryParams={};if(hasQueryString){var queryString=url.substring(url.indexOf('?')+1);var queryItems=queryString.split('&');for(var i=0;i<queryItems.length;i++){var queryItem=queryItems[i].split('=');queryParams[queryItem[0]]=decodeURIComponent(queryItem[1]);}}
return queryParams;}},baseUrl:function(){var url="http://"
+Evri.API.Environment.apiHost
+(isNaN(Evri.API.Environment.apiPort)==true||parseInt(Evri.API.Environment.apiPort)==80?"":":"+Evri.API.Environment.apiPort)
+"/"
+Evri.API.Environment.apiVersion;return url;},toQueryString:function(params,options){var prefix='?';options=options||{};if(options.truncateLongValues===undefined){options.truncateLongValues=false;}
if(options.hasQueryString!==undefined&&options.hasQueryString===true){prefix='&';}
var paramsList=[];for(var key in params){if(params[key]!==undefined){if((params[key]instanceof Array)===true){for(var i=0;i<params[key].length;i++){var value=encodeURIComponent(params[key][i]);paramsList.push(key+"="+value);}}else{var value=params[key];if(typeof(value)==="string"){if(key=="text"&&options.truncateLongValues===true){value=value.substr(0,1250).replace(/\s\S+?$/,'');}}
value=encodeURIComponent(value);paramsList.push(key+"="+value);}}}
var queryString=paramsList.join("&");return prefix+queryString;},currentURI:function(){return window.location.href.split('#')[0];},getRequestDuration:function(requestKey){return((new Date()).getTime()-(parseInt(requestKey.split("_")[0])))/1000;},apiURIForPath:function(uriPath){return window.location.protocol+"//"+Evri.API.Environment.apiHost+"/"+Evri.API.Environment.apiVersion+uriPath;},portalURIForPath:function(uriPath){var hasQueryString=uriPath.indexOf('?')>-1?true:false;return window.location.protocol+"//"
+Evri.API.Environment.portalHost+uriPath
+Evri.API.Utilities.toQueryString({jsapi:window.location.host},{hasQueryString:hasQueryString});},Class:{create:function(klassName){function klass(){this.klass=klassName;this.initialize.apply(this,arguments);}
return klass;}},JSON:{bindChildrenAndAttributesToObject:function(jsonNode,target){if(target.instanceAttributes===undefined){}
for(var member in jsonNode){if(Evri.API.Utilities.JSON.isAttribute(member)===true){target[member.substring(1)]=Evri.API.Utilities.JSON.getAttributeForNode(jsonNode,member);}else{target[member]=Evri.API.Utilities.JSON.getValueForPath(jsonNode,member);}}},getAttributeForNode:function(jsonNode,attr){return jsonNode[attr];},getNodeForPath:function(jsonNode,path){var nodeSet=Evri.API.Utilities.JSON.getNodeSetForPath(jsonNode,path);var node=undefined;if(nodeSet!==undefined&&nodeSet.length>0){node=nodeSet[0];}
return node;},getNodeSetForPath:function(jsonNode,path){var traversal=Evri.API.Utilities.JSON.__traversal(jsonNode,path);var referenceNodeSet=[];if(traversal.status===true){referenceNodeSet=traversal.referenceNodeSet;}
return referenceNodeSet;},getValueForPath:function(jsonNode,path){var referenceNodeSet=Evri.API.Utilities.JSON.getNodeSetForPath(jsonNode,path);var value=null;if(referenceNodeSet!==undefined&&referenceNodeSet.length>0&&referenceNodeSet[0]['$']!==undefined){value=referenceNodeSet[0]['$'];}
return value;},getValueForNode:function(jsonNode){return(jsonNode.$===undefined?undefined:jsonNode.$);},getValueForNodeSet:function(jsonNode,path){var nodeSet=Evri.API.Utilities.JSON.getNodeSetForPath(jsonNode,path);var values=[];if(nodeSet.length>0){for(var cntr=0;cntr<nodeSet.length;cntr++){values.push(Evri.API.Utilities.JSON.getValueForNode(nodeSet[cntr]));}}
return values;},hasDescendantsForPath:function(jsonNode,path){return Evri.API.Utilities.JSON.__traversal(jsonNode,path).status;},isAttribute:function(path){return path.substring(0,1)=='@';},__traversal:function(jsonNode,path){var pathItems=path.split('/');var status=true;var referenceNode=jsonNode;var referenceNodeSet=[];for(var i=0;i<pathItems.length;i++){var pathItem=pathItems[i];if(referenceNode[pathItem]!==undefined){if((referenceNode[pathItem]instanceof Array)===true){referenceNodeSet=referenceNode[pathItem];referenceNode=referenceNodeSet[0];}else{referenceNodeSet=[referenceNode[pathItem]];referenceNode=referenceNodeSet[0];}}else{status=false;}}
return{referenceNode:referenceNode,referenceNodeSet:referenceNodeSet,status:status};}},buildMediaSourceUrl:function(pageUrl,title,defaultUrl,articleLinkTrackerKey){var mediaSourceUrl=defaultUrl;if(Evri.API.Environment.articleInIframe===true){if(articleLinkTrackerKey){var hasQueryString=pageUrl.indexOf('?')>-1?true:false;var articleLinkTrackerToken='';if(hasQueryString){articleLinkTrackerToken="&"+articleLinkTrackerKey;}
else{articleLinkTrackerToken="?"+articleLinkTrackerKey;}
pageUrl+=articleLinkTrackerToken;}
var portalUrl=window.location.protocol+"//"+Evri.API.Environment.portalHost;var widgetHostUrl=window.location.protocol+"//"+window.location.host;var mediaIFramePath="/media/article?page="+encodeURIComponent(pageUrl)+"&source="+encodeURIComponent(widgetHostUrl)+"&title="+encodeURIComponent(title);mediaSourceUrl=portalUrl+mediaIFramePath;}
else{if(articleLinkTrackerKey){var hasQueryString=mediaSourceUrl.indexOf('?')>-1?true:false;if(hasQueryString){var queryParams=Evri.API.Utilities.URI.params(mediaSourceUrl);var mediaSourceUrlStrippedQueryString=mediaSourceUrl.substring(0,mediaSourceUrl.indexOf('?'));var urlqueryTokenValue=queryParams["url"];if(urlqueryTokenValue){var articleLinkTrackerToken='';var hasQueryString=urlqueryTokenValue.indexOf('?')>-1?true:false;if(hasQueryString){articleLinkTrackerToken="&"+articleLinkTrackerKey;}
else{articleLinkTrackerToken="?"+articleLinkTrackerKey;}
queryParams["url"]=urlqueryTokenValue+articleLinkTrackerToken;mediaSourceUrlStrippedQueryString+=Evri.API.Utilities.toQueryString(queryParams);mediaSourceUrl=mediaSourceUrlStrippedQueryString;}}}}
return mediaSourceUrl;}});Evri.defineNamespace(Evri.API,"CrossDomain");Evri.extendNamespace(Evri.API.CrossDomain,{Model:{KeyGenerator:Evri.API.Utilities.Class.create('KeyGenerator')},Callbacks:{},setup:function(){Evri.API.CrossDomain.Model.KeyGenerator.prototype={initialize:function(){var self=this;var requestCounter=0;self.generateKey=function(){return""+(new Date()).getTime()+"_"+(++requestCounter);};}};Evri.API.CrossDomain.KeyGenerator=new Evri.API.CrossDomain.Model.KeyGenerator();},request:function(resource,params){if(params.uri===undefined&&params.queryToken===undefined){params.uri=Evri.API.Utilities.currentURI();}
Evri.API.CrossDomain.requestViaScriptTag(resource,params);},requestViaScriptTag:function(resource,params){var requestUrl='';if(params.isThirdPartyAPICall===true){params.appId=undefined;params.isThirdPartyAPICall=undefined;params.uri=undefined;var options={truncateLongValues:true};if(params.hasQueryString!==undefined&&params.hasQueryString===true){options.hasQueryString=true;params.hasQueryString=undefined;}
requestUrl=resource+Evri.API.Utilities.toQueryString(params,options);}
else{requestUrl=Evri.API.Utilities.baseUrl()+resource+".json"+Evri.API.Utilities.toQueryString(params,{truncateLongValues:true});}
var script=document.createElement("script");script.type="text/javascript";script.src=requestUrl;script.setAttribute("class","evri-jsonp-request");document.body.appendChild(script);},callRemoteMethod:function(session,resource,jsonpCallback,params,responseCallbacks){var requestKey=Evri.API.CrossDomain.KeyGenerator.generateKey();Evri.API.CrossDomain.Callbacks["_"+requestKey]={handler:function(responseJSON){responseJSON.requestDuration=Evri.API.Utilities.getRequestDuration(requestKey);jsonpCallback.call(null,responseJSON,responseCallbacks);}};for(var paramKey in session.sharedQueryStringParameters){params[paramKey]=session.sharedQueryStringParameters[paramKey];}
params.callback="Evri.API.CrossDomain.Callbacks._"+requestKey+".handler";if(responseCallbacks.onCreate!==undefined){responseCallbacks.onCreate.call();}
Evri.API.CrossDomain.request(resource,params);},handleJSONResponse:function(session,responseJSON,callbacks,responseHandler){var evriThingNode=responseJSON.evriThing;var responseStatus=Evri.API.Utilities.JSON.getAttributeForNode(evriThingNode,'@status');var requestDuration=responseJSON.requestDuration;if(callbacks!==undefined){var responseMessages=Evri.API.Utilities.JSON.getNodeSetForPath(evriThingNode,"messages/message");var errorMessages=[];if(responseStatus!="OK"&&responseMessages.length>1){for(var i=0;i<responseMessages.length;i++){var message=responseMessages[i];if(parseInt(message["@code"])!==0){errorMessages.push(Evri.API.Utilities.JSON.getValueForNode(message));}}}
if(responseStatus=="ERROR"&&callbacks.onFailure!==undefined){var errorMessage="An error occurred";if(errorMessages.length>=1){errorMessage=errorMessages.join("; ");}
var error=new session.models.APIError(errorMessages,{"responseJSON":responseJSON});error.requestDuration=requestDuration;callbacks.onFailure.call(null,error);return;}
var responseItem=null;if(callbacks.onLoaded!==undefined){callbacks.onLoaded.call(null,responseJSON);}
responseItem=responseHandler.call(null,responseJSON.evriThing);if(responseItem===null||responseItem===undefined){if(callbacks.onFailure!==undefined){var error=new session.models.APIError("Response object could not be instantiated",{"responseJSON":responseJSON});error.requestDuration=requestDuration;callbacks.onFailure.call(null,error);}}else{responseItem.requestDuration=requestDuration;if(callbacks.bindWith!==undefined){callbacks.bindWith.call(null,responseItem);}
callbacks.onComplete.call(null,responseItem);}}}});Evri.defineNamespace(Evri.API,"XmlHttp");Evri.defineNamespace(Evri.API,"Model");Evri.extendNamespace(Evri.API.Model,{entityTypes:['animal','bacterium','chemical','concept','condition','disorder','event','location','organism','organization','person','plant','product','substance','virus'],classes:['APIError','Article','ArticleLink','ArticleList','ContentRange','Entity','EntityConstraint','EntityList','EntityHistories','EntityHistory','EntityHistoryMention','EntityProperty','EntityPropertyList','EntityRelation','EntityRelationList','EntitySet','Facet','Graph','Image','ImageList','MatchedLocation','Media','MediaConstraint','Pair','Product','ProductList','Quote','QuoteList','Sentiment','SentimentList','SentimentSummary','SentimentSummaryList','Target','TargetList','Tweet','TweetList','TwitterQuery','TweetMatchedLocation','Video','VideoList','VideoStillImage','Zeitgeist'],generateForSession:function(session){session.models={};for(var i=0;i<Evri.API.Model.classes.length;i++){var klassName=Evri.API.Model.classes[i];Evri.API.Model.Class.create(klassName,session);}},generateResponseHandler:function(session,klass,handlerOptions){handlerOptions=handlerOptions||{};return function(responseJSON,responseCallbacks){Evri.API.Transport.handleJSONResponse(session,responseJSON,responseCallbacks,function(jsonNode){if(handlerOptions.beforeInstantiate!==undefined){switch(typeof(handlerOptions.beforeInstantiate)){case"function":jsonNode=handlerOptions.beforeInstantiate.call(null,jsonNode);break;case"string":jsonNode=Evri.API.Utilities.JSON.getNodeForPath(jsonNode,handlerOptions.beforeInstantiate);break;default:break;}}
return new(session.models[klass])(jsonNode);});};}});Evri.defineNamespace(Evri.API.Model,"Class");Evri.extendNamespace(Evri.API.Model.Class,{create:function(klassName,session){if(Evri.API.Model[klassName]._prototypeWith!==undefined){session.models[klassName]=function(){this.klass=klassName;this.session=session;this.documentationUrl=Evri.API.Utilities.portalURIForPath("/developer/jsapi/index")+"#"+klassName+"Model";this.initialize.apply(this,arguments);};for(var prototypeDef in Evri.API.Model[klassName]._prototypeWith){session.models[klassName].prototype[prototypeDef]=Evri.API.Model[klassName]._prototypeWith[prototypeDef];}}else{session.models[klassName]={};}
for(var classMethodName in Evri.API.Model[klassName]._classMethodGenerators){session.models[klassName][classMethodName]=Evri.API.Model[klassName]._classMethodGenerators[classMethodName](session);}}});Evri.defineNamespace(Evri.API.Model,"APIError");Evri.extendNamespace(Evri.API.Model.APIError,{_classMethodGenerators:{},_prototypeWith:{initialize:function(message,options){var self=this;options=options||{};self.message=message;for(var key in options){if(self[key]===undefined){self[key]=options[key];}}
return self;},instanceAttributes:['documentationUrl','klass','message'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"Article");Evri.extendNamespace(Evri.API.Model.Article,{_classMethodGenerators:{},_prototypeWith:{initialize:function(articleJSON){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(articleJSON,self);var linkNode=Evri.API.Utilities.JSON.getNodeForPath(articleJSON,"link");if(linkNode!==undefined){self.link=new self.session.models.ArticleLink(linkNode,self);}
self.titleMatchedLocations=[];self.contentMatchedLocations=[];var titleMatchedLocationJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(articleJSON,"titleMatchedLocations/matchedLoc");var contentMatchedLocationJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(articleJSON,"contentMatchedLocations/matchedLoc");for(var i=0;i<titleMatchedLocationJSONNodes.length;i++){self.titleMatchedLocations.push(new self.session.models.MatchedLocation(titleMatchedLocationJSONNodes[i]));}
for(var i=0;i<contentMatchedLocationJSONNodes.length;i++){self.contentMatchedLocations.push(new self.session.models.MatchedLocation(contentMatchedLocationJSONNodes[i]));}
self.titleQueryMatches=[];self.contentQueryMatches=[];for(var i=0;i<self.titleMatchedLocations.length;i++){var match=self.titleMatchedLocations[i];if(match.matchType!='nonQueryEntity'){self.titleQueryMatches.push(match);}}
for(var i=0;i<self.contentMatchedLocations.length;i++){var match=self.contentMatchedLocations[i];if(match.matchType!='nonQueryEntity'){self.contentQueryMatches.push(match);}}
self.topEntities=[];var topEntitiesJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(articleJSON,"topEntities/entity");for(var i=0;i<topEntitiesJSONNodes.length;i++){self.topEntities.push(new self.session.models.Entity(topEntitiesJSONNodes[i]));}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','author','content','contentMatchedLocations','link','mentionedEntities','published','title','titleMatchedLocations'],instanceMethods:['getContentRanges','getGraph','getHighlightedContent','getHighlightedTitle','getRelativePublicationDate','getTitleRanges'],getGraph:function(callbacks,options){var self=this;self.session.models.Graph.getForURI(self.link.sourceUrl,callbacks,options);},getHighlightedTitle:function(tag,attrs){var self=this;return Evri.API.Utilities.HTML.highlightContent(self.session,self.title,self.titleQueryMatches,tag,attrs);},getTitleRanges:function(){var self=this;return Evri.API.Utilities.HTML.tokenizeStringHighlights(self.session,self.title,self.titleMatchedLocations);},getHighlightedContent:function(tag,attrs){var self=this;return Evri.API.Utilities.HTML.highlightContent(self.session,self.content,self.contentQueryMatches,tag,attrs);},getContentRanges:function(){var self=this;return Evri.API.Utilities.HTML.tokenizeStringHighlights(self.session,self.content,self.contentMatchedLocations);},getRelativePublicationDate:function(options){var self=this;return Evri.API.Utilities.Date.relativeDate(self.published,options);}}});Evri.defineNamespace(Evri.API.Model,"Quote");Evri.extendNamespace(Evri.API.Model.Quote,{_classMethodGenerators:{findQuotesAboutEntity:function(session){return function(resource,callbacks,options){var params={};options=options||{};params["entityURI"]=resource;session.models.QuoteList.handleRequestOptions(params,options);Evri.API.Transport.callRemoteMethod(session,"/quotes/about",session.models.QuoteList.handleResponse,params,callbacks);};},findQuotesByEntity:function(session){return function(resource,callbacks,options){var params={};options=options||{};params["speaker"]=resource;session.models.QuoteList.handleRequestOptions(params,options);Evri.API.Transport.callRemoteMethod(session,"/quotes",session.models.QuoteList.handleResponse,params,callbacks);};}},_prototypeWith:{initialize:function(quoteJSON){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(quoteJSON,self);var articleNode=Evri.API.Utilities.JSON.getNodeForPath(quoteJSON,"article");self.article=new self.session.models.Article(articleNode);var entityNode=Evri.API.Utilities.JSON.getNodeForPath(quoteJSON,"speaker/entity");if(entityNode!==undefined){self.speaker=new self.session.models.Entity(entityNode);}
self.quoteBoundaryMatchedLocations=[];var quoteBoundaryMatchedLocationJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(quoteJSON,"quoteBoundaryMatchedLocations/matchedLoc");self.quoteBoundaryQueryMatches=[];for(var i=0;i<quoteBoundaryMatchedLocationJSONNodes.length;i++){self.quoteBoundaryMatchedLocations.push(new self.session.models.MatchedLocation(quoteBoundaryMatchedLocationJSONNodes[i]));}
for(var i=0;i<self.quoteBoundaryMatchedLocations.length;i++){var match=self.quoteBoundaryMatchedLocations[i];if(match.matchType!='nonQueryEntity'){self.quoteBoundaryQueryMatches.push(match);}}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','content','quoteBoundaryMatchedLocations','article','speaker'],instanceMethods:['getQuoteBoundaryRanges','getHighlightedContent','getRelativePublicationDate'],getQuoteBoundaryRanges:function(){var self=this;return Evri.API.Utilities.HTML.tokenizeStringHighlights(self.session,self.content,self.quoteBoundaryMatchedLocations);},getHighlightedContent:function(tag,attrs){var self=this;return Evri.API.Utilities.HTML.highlightContent(self.session,self.content,self.quoteBoundaryQueryMatches,tag,attrs);},getRelativePublicationDate:function(options){var self=this;return Evri.API.Utilities.Date.relativeDate(self.article.published,options);}}});Evri.defineNamespace(Evri.API.Model,"Sentiment");Evri.extendNamespace(Evri.API.Model.Sentiment,{findSentimentsAboutEntity:function(session,params,options,callbacks){session.models.SentimentList.handleRequestOptions(params,options);Evri.API.Transport.callRemoteMethod(session,"/sentiment/about",session.models.SentimentList.handleResponse,params,callbacks);},setParamameter:function(entityURI,sentimentSource,sentimentType){var params={};if(entityURI){params.entityURI=entityURI;}
if(sentimentSource){params.sentimentSource=sentimentSource;}
if(sentimentType){params.sentimentType=sentimentType;}
return params;},_classMethodGenerators:{findPositiveSentiments:function(session){return function(entityURI,sentimentSource,callbacks,options){options=options||{};var params=Evri.API.Model.Sentiment.setParamameter(entityURI,sentimentSource,"positive");Evri.API.Model.Sentiment.findSentimentsAboutEntity(session,params,options,callbacks);};},findNegativeSentiments:function(session){return function(entityURI,sentimentSource,callbacks,options){options=options||{};var params=Evri.API.Model.Sentiment.setParamameter(entityURI,sentimentSource,"negative");Evri.API.Model.Sentiment.findSentimentsAboutEntity(session,params,options,callbacks);};},findPositiveSentimentsAboutEverything:function(session){return function(sentimentSource,callbacks,options){this.findPositiveSentiments(null,sentimentSource,callbacks,options);};},findNegativeSentimentsAboutEverything:function(session){return function(sentimentSource,callbacks,options){this.findNegativeSentiments(null,sentimentSource,callbacks,options);};},findPositiveSentimentsByEverything:function(session){return function(entityURI,callbacks,options){this.findPositiveSentiments(entityURI,null,callbacks,options);};},findNegativeSentimentsByEverything:function(session){return function(entityURI,callbacks,options){this.findNegativeSentiments(entityURI,null,callbacks,options);};}}});Evri.defineNamespace(Evri.API.Model,"SentimentSummary");Evri.extendNamespace(Evri.API.Model.SentimentSummary,{_classMethodGenerators:{findSentimentsSummaryAboutEntity:function(session){return function(resource,callbacks,options){var params={};options=options||{};params.entityURI=resource;params.includeSummaryDetails=true;session.models.SentimentSummaryList.handleRequestOptions(params,options);Evri.API.Transport.callRemoteMethod(session,"/sentiment/summary/about",session.models.SentimentSummaryList.handleResponse,params,callbacks);};},findSentimentsSummaryByEntity:function(session){return function(resource,callbacks,options){var params={};options=options||{};params.sentimentSource=resource;params.includeSummaryDetails=true;session.models.SentimentSummaryList.handleRequestOptions(params,options);Evri.API.Transport.callRemoteMethod(session,"/sentiment/summary",session.models.SentimentSummaryList.handleResponse,params,callbacks);};}},_prototypeWith:{initialize:function(sentimentSummaryJSON){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(sentimentSummaryJSON,self);self.entityList=new Array();var sentimentSourceEntityList=Evri.API.Utilities.JSON.getNodeForPath(sentimentSummaryJSON,"sentimentSourceEntityList");if(sentimentSourceEntityList===undefined){sentimentSourceEntityList=Evri.API.Utilities.JSON.getNodeForPath(sentimentSummaryJSON,"sentimentSubjectEntityList");}
if(sentimentSourceEntityList){var entityList=Evri.API.Utilities.JSON.getNodeSetForPath(sentimentSourceEntityList,"entity");if(entityList!==undefined){for(var j=0;j<entityList.length;j++){var entity=new self.session.models.Entity(entityList[j]);entity.belongsTo=self;self.entityList.push(entity);}}}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','entityList'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"ArticleLink");Evri.extendNamespace(Evri.API.Model.ArticleLink,{_classMethodGenerators:{},_prototypeWith:{initialize:function(linkJSONNode,article){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(linkJSONNode,self);self.sourceUrl="http://"+self.hostName+self.path;var articleLinkTrackerKey=Evri.API.Utilities.articleTracker[self.session.sharedQueryStringParameters["appId"]];var defaultArticleUrl=window.location.protocol+"//"+Evri.API.Environment.portalHost+self.href;self.href=Evri.API.Utilities.buildMediaSourceUrl(self.sourceUrl,article.title,defaultArticleUrl,articleLinkTrackerKey);return self;},instanceAttributes:['documentationUrl','klass','href','path','sourceUrl'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"ArticleList");Evri.extendNamespace(Evri.API.Model.ArticleList,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'ArticleList',{beforeInstantiate:"mediaResult"});},handleEntityRelationResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'ArticleList',{beforeInstantiate:"relations/relation"});},handleTargetRelationResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'ArticleList',{beforeInstantiate:"relations/relation/targets/entity"});},handleRequestOptions:function(session){return function(params,options){var boolean_params=['includeMatchedLocations','includeTopEntities'];for(var i=0;i<boolean_params.length;i++){var paramKey=boolean_params[i];if(params[paramKey]===undefined&&options[paramKey]===true){params[paramKey]=true;}}
if(options.mediaConstraint!==undefined&&options.mediaConstraint.klass=="MediaConstraint"){var constraints=options.mediaConstraint.toParams();if(constraints.includeDomains!==undefined){params.includeDomains=constraints.includeDomains;}
if(constraints.includeSourceTags!==undefined){params.includeSourceTags=constraints.includeSourceTags;}
if(constraints.excludedDomains!==undefined){params.excludedDomains=constraints.excludedDomains;}}
if(options.articleSnippetLength!==undefined){params.articleSnippetLength=parseInt(options.articleSnippetLength);}
if(options.resultsPerPage!==undefined){params.resultsPerPage=parseInt(options.resultsPerPage);}
if(options.includeDates!==undefined){params.includeDates=options.includeDates;}};}},_prototypeWith:{initialize:function(jsonNode){var self=this;self.articles=[];var articleListNode=Evri.API.Utilities.JSON.getNodeForPath(jsonNode,"articleList");if(articleListNode!==undefined){var articleJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(articleListNode,"article");for(var i=0;i<articleJSONNodes.length;i++){var article=new self.session.models.Article(articleJSONNodes[i]);article.belongsTo=self;self.articles.push(article);}}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','articles'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"QuoteList");Evri.extendNamespace(Evri.API.Model.QuoteList,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'QuoteList',{beforeInstantiate:"mediaResult"});},handleRequestOptions:function(session){return function(params,options){var boolean_params=['includeMatchedLocations'];for(var i=0;i<boolean_params.length;i++){var paramKey=boolean_params[i];if(params[paramKey]===undefined&&options[paramKey]===true){params[paramKey]=true;}}
if(options.resultsPerPage!==undefined){params.resultsPerPage=parseInt(options.resultsPerPage);}};}},_prototypeWith:{initialize:function(jsonNode){var self=this;self.quotes=[];var quoteListNode=Evri.API.Utilities.JSON.getNodeForPath(jsonNode,"quoteList");if(quoteListNode!==undefined){var quoteJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(quoteListNode,"quote");for(var i=0;i<quoteJSONNodes.length;i++){var quote=new self.session.models.Quote(quoteJSONNodes[i]);quote.belongsTo=self;self.quotes.push(quote);}}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','quotes'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"SentimentList");Evri.extendNamespace(Evri.API.Model.SentimentList,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'SentimentList',{beforeInstantiate:"mediaResult"});},handleRequestOptions:function(session){return function(params,options){if(params.includeMatchedLocations===undefined&&options.includeMatchedLocations===true){params.includeMatchedLocations=true;}
if(options.mediaConstraint!==undefined&&options.mediaConstraint.klass==="MediaConstraint"){var constraints=options.mediaConstraint.toParams();if(constraints.includeDomains!==undefined){params.includeDomains=constraints.includeDomains;}
if(constraints.excludedDomains!==undefined){params.excludedDomains=constraints.excludedDomains;}}
if(options.articleSnippetLength!==undefined){params.articleSnippetLength=parseInt(options.articleSnippetLength);}
if(options.resultsPerPage!==undefined){params.resultsPerPage=parseInt(options.resultsPerPage);}
if(options.sentimentType!==undefined){params.sentimentType=options.sentimentType;}
if(options.sort!==undefined){params.sort=options.sort;}};}},_prototypeWith:{initialize:function(jsonNode){var self=this;self.articles=[];var sentimentListNode=Evri.API.Utilities.JSON.getNodeForPath(jsonNode,"sentimentList");var sentimentNodes=Evri.API.Utilities.JSON.getNodeSetForPath(sentimentListNode,"sentiment");if(sentimentNodes!==undefined){for(var i=0;i<sentimentNodes.length;i++){var articleJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(sentimentNodes[i],"article");for(var j=0;j<articleJSONNodes.length;j++){var article=new self.session.models.Article(articleJSONNodes[j]);article.belongsTo=self;self.articles.push(article);}}}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','articles'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"SentimentSummaryList");Evri.extendNamespace(Evri.API.Model.SentimentSummaryList,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,"SentimentSummaryList",{beforeInstantiate:"mediaResult"});},handleRequestOptions:function(session){return function(params,options){if(params.includeMatchedLocations===undefined&&options.includeMatchedLocations===true){params.includeMatchedLocations=true;}
if(options.mediaConstraint!==undefined&&options.mediaConstraint.klass==="MediaConstraint"){var constraints=options.mediaConstraint.toParams();if(constraints.includeDomains!==undefined){params.includeDomains=constraints.includeDomains;}
if(constraints.excludedDomains!==undefined){params.excludedDomains=constraints.excludedDomains;}}
if(options.resultsPerPage!==undefined){params.resultsPerPage=parseInt(options.resultsPerPage);}
if(options.sentimentType!==undefined){params.sentimentType=options.sentimentType;}
if(options.sort!==undefined){params.sort=options.sort;}
if(options.includeSummaryDetails!==undefined){params.includeSummaryDetails=options.includeSummaryDetails;}};}},_prototypeWith:{initialize:function(jsonNode){var self=this;var sentimentSummaryListNode=Evri.API.Utilities.JSON.getNodeForPath(jsonNode,"sentimentSummaryList");var sentimentSummaryNodes=Evri.API.Utilities.JSON.getNodeSetForPath(sentimentSummaryListNode,"sentimentSummary");for(var i=0;i<sentimentSummaryNodes.length;i++){var summaryDetail=new self.session.models.SentimentSummary(sentimentSummaryNodes[i]);if(summaryDetail.type==="positive"){self.positiveSummaryDetail=summaryDetail;}
else if(summaryDetail.type==="negative"){self.negativeSummaryDetail=summaryDetail;}}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','positiveSummaryDetail','negativeSummaryDetail'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"ContentRange");Evri.extendNamespace(Evri.API.Model.ContentRange,{_classMethodGenerators:{},_prototypeWith:{initialize:function(content,matchedLocation,options){var self=this;options=options||{};self.content=content||"";self.matchedLocation=matchedLocation||undefined;return self;},instanceAttributes:['documentationUrl','klass','content','matchedLocation'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"Entity");Evri.extendNamespace(Evri.API.Model.Entity,{_classMethodGenerators:{getById:function(session){return function(entityIds,property,callbacks){Evri.API.Transport.callRemoteMethod(session,"/entities",session.models.Entity.handleResponse,{entityId:entityIds,property:property},callbacks);};},findByName:function(session){return function(name,callbacks){Evri.API.Transport.callRemoteMethod(session,"/entities/find",session.models.EntityList.handleResponse,{name:name},callbacks);};},findById:function(session){return function(entityIds,callbacks){Evri.API.Transport.callRemoteMethod(session,"/entities/find",session.models.EntityList.handleResponse,{'entityId':entityIds},callbacks);};},findByPrefix:function(session){return function(prefix,callbacks){Evri.API.Transport.callRemoteMethod(session,"/entities/find",session.models.EntityList.handleResponse,{prefix:prefix},callbacks);};},findByResource:function(session){return function(resource,callbacks){Evri.API.Transport.callRemoteMethod(session,resource,session.models.Entity.handleResponse,{},callbacks);};},handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,"Entity",{beforeInstantiate:"entity"});},parseIdFromResource:function(session){return function(resource){var entityId=undefined;if(resource.match(/0x[A-Fa-f0-9]+$/)!==null){entityId=parseInt(resource.match(/0x[A-Fa-f0-9]+$/)[0],16)}
return entityId;};}},_prototypeWith:{initialize:function(entityJSON){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(entityJSON,self);self.resource=self.href;self.relationsResource=self.resource+"/relations"
self.mediaResource=self.resource+"/media/related"
self.relatedEntitiesResource=self.resource+"/related/entities";self.known=false;if(self.resource!==undefined&&self.resource.match(/0x[a-fA-F0-9]+$/)!==null){self.known=true;if(self.id===undefined){self.id=self.session.models.Entity.parseIdFromResource(self.resource);}}
self.portalURI=self.resource===undefined?undefined:Evri.API.Utilities.portalURIForPath(self.resource);self.relationsServiceURI=Evri.API.Utilities.apiURIForPath(self.resource+"/relations");self.media=new self.session.models.Media(self);self.facets=[];var facetNodes=Evri.API.Utilities.JSON.getNodeSetForPath(entityJSON,"facets/facet");for(var i=0;i<facetNodes.length;i++){self.facets.push(new self.session.models.Facet(facetNodes[i]));}
self.propertyList=new self.session.models.EntityPropertyList(Evri.API.Utilities.JSON.getNodeForPath(entityJSON,"properties"));if(self.propertyList.findByName('wikipedia_paragraph').length>0){self.description=self.propertyList.findByName('wikipedia_paragraph')[0].value;}
else if(self.propertyList.findByName('crunchbase_paragraph').length>0){self.description=self.propertyList.findByName('crunchbase_paragraph')[0].value;}
return self;},instanceAttributes:['documentationUrl','klass','description','facets','href','id','known','media','mediaResource','name','portalURI','properties','relatedEntitiesResource','relationsResource','relationsServiceURI','resource','type'],instanceMethods:['getMentionStatistics','getName','getRelatedEntities','getRelations','getTopRelationsTargets','getTweetsAbout'],getRelatedEntities:function(callbacks,options){var self=this;options=options||{}
callbacks.bindWith=function(graph){self.graph=graph;graph.belongsTo=self;};if(self.queryToken!==undefined){Evri.API.Transport.callRemoteMethod(self.session,self.relatedEntitiesResource,self.session.models.Graph.handleResponse,{queryToken:self.queryToken},callbacks);}else{Evri.API.Transport.callRemoteMethod(self.session,self.relationsResource,self.session.models.EntityList.handleEntityRelationsGraphResponse,{'graphRelationsCount':(options.count!==undefined?options.count:10)},callbacks);}},getTopRelationsTargets:function(callbacks,options){var self=this;var params={};options=options||{};callbacks.bindWith=function(targetList){self.topTargetsList=targetList;targetList.belongsTo=self;};self.session.models.EntityList.handleRequestOptions(params,options);Evri.API.Transport.callRemoteMethod(self.session,self.relationsResource,self.session.models.TargetList.handleEntityRelationsGraphResponse,params,callbacks);},getRelations:function(callbacks,options){var self=this;options=options||{};callbacks.bindWith=function(relationList){self.relationList=relationList;relationList.belongsTo=self;};Evri.API.Transport.callRemoteMethod(self.session,self.relationsResource,self.session.models.EntityRelationList.handleResponse,{},callbacks);},getName:function(){var self=this;return self.name;},getMentionStatistics:function(callbacks,options){var self=this;options=options||{};callbacks.bindWith=function(entityHistory){entityHistory.belongsTo=self;};Evri.API.Transport.callRemoteMethod(self.session,"/zeitgeist/entity-history",self.session.models.EntityHistory.handleResponse,{data:"mentions",uri:self.resource,count:30,timeSpan:"day"},callbacks);},getTweetsAbout:function(callbacks,options){var self=this;options=options||{};callbacks.bindWith=function(tweetList){tweetList.belongsTo=self;};self.session.models.Tweet.findForEntityResource(self.resource,callbacks);}}});Evri.defineNamespace(Evri.API.Model,"EntityList");Evri.extendNamespace(Evri.API.Model.EntityList,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'EntityList',{beforeInstantiate:"entities"});},handleZeitgeistEntitiesPopularResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'EntityList',{beforeInstantiate:"zeitgeist/popular/entities"});},handleZeitgeistEntitiesRisingResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'EntityList',{beforeInstantiate:"zeitgeist/rising/entities"});},handleZeitgeistEntitiesFallingResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'EntityList',{beforeInstantiate:"zeitgeist/falling/entities"});},handleEntityRelationsGraphResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'EntityList',{beforeInstantiate:function(jsonNode){var relationNodes=Evri.API.Utilities.JSON.getNodeSetForPath(jsonNode,"relations/graph/relation");var responseNode={entity:[]};if(relationNodes.length>0){for(var i=0;i<relationNodes.length;i++){var entityNodes=Evri.API.Utilities.JSON.getNodeSetForPath(relationNodes[i],"targets/entity");if(entityNodes.length>0){for(var j=0;j<entityNodes.length;j++){responseNode.entity.push(entityNodes[j]);}}}}
return responseNode;}});},handleRequestOptions:function(session){return function(params,options){if(options.entityConstraint!==undefined&&options.entityConstraint.klass=="EntityConstraint"){var constraints=options.entityConstraint.toParams();if(constraints.includeDomains!==undefined){params.includeDomains=constraints.includeDomains;}
if(constraints.excludedDomains!==undefined){params.excludedDomains=constraints.excludedDomains;}}
params.graphRelationsCount=(options.count!==undefined?options.count:10);};}},_prototypeWith:{initialize:function(listJSON){var self=this;var entityNodes=Evri.API.Utilities.JSON.getNodeSetForPath(listJSON,"entity");self.entities=[];for(var i=0;i<entityNodes.length;i++){self.entities.push(new self.session.models.Entity(entityNodes[i]));}
return self;},instanceAttributes:['documentationUrl','klass','entities'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"EntityHistories");Evri.extendNamespace(Evri.API.Model.EntityHistories,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'EntityHistories',{beforeInstantiate:"entityHistories"});},findByEntityResource:function(session){return function(entityResources,callbacks,options){options=options||{};if(typeof(entityResources)==="string"){entityResources=[entityResources];}
Evri.API.Transport.callRemoteMethod(session,"/zeitgeist/entity-history",session.models.EntityHistories.handleResponse,{data:"mentions",uri:entityResources,count:30,timeSpan:"day"},callbacks);};},findForEntityList:function(session){return function(entityList,callbacks,options){options=options||{};var entityResources=[];for(var i=0;i<entityList.entities.length;i++){entityResources.push(entityList.entities[i].resource);}
Evri.API.Transport.callRemoteMethod(session,"/zeitgeist/entity-history",session.models.EntityHistories.handleResponse,{data:"mentions",uri:entityResources,count:30,timeSpan:"day"},callbacks);};}},_prototypeWith:{initialize:function(historiesJSON){var self=this;var historyJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(historiesJSON,"entityHistory");self.histories=[];self.historyMapByEntityResource={};for(var i=0;i<historyJSONNodes.length;i++){var history=new self.session.models.EntityHistory(historyJSONNodes[i])
self.histories.push(history);self.historyMapByEntityResource[history.entityResource]=history;}
return self;},instanceAttributes:['documentationUrl','klass','histories','historyMapByEntityResource'],instanceMethods:['getStatisticsForEntity'],getStatisticsForEntity:function(entity){var self=this;return self.historyMapByEntityResource[entity.resource];}}});Evri.defineNamespace(Evri.API.Model,"EntityHistory");Evri.extendNamespace(Evri.API.Model.EntityHistory,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'EntityHistory',{beforeInstantiate:"entityHistories/entityHistory"});}},_prototypeWith:{initialize:function(historyJSON){var self=this;self.entityResource=Evri.API.Utilities.JSON.getAttributeForNode(historyJSON,"@href");self.mentions=[];var mentionData=Evri.API.Utilities.JSON.getValueForPath(historyJSON,"mentions");var now=(new Date()).getTime();var dayLength=24*60*60*1000;if(mentionData!==null){var mentions=mentionData.split(/,/);var mentionsLastIndex=mentions.length-1;for(var i=0;i<=mentionsLastIndex;i++){var count=parseInt(mentions[i]);var date=new Date(now-(dayLength*(mentionsLastIndex-i)));self.mentions.push(new self.session.models.EntityHistoryMention(count,date));}}
return self;},instanceAttributes:['documentationUrl','klass','mentions'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"EntityHistoryMention");Evri.extendNamespace(Evri.API.Model.EntityHistoryMention,{_classMethodGenerators:{},_prototypeWith:{initialize:function(count,date){var self=this;self.count=count;self.date=date;return self;},instanceAttributes:['documentationUrl','klass','count','date'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"EntityProperty");Evri.extendNamespace(Evri.API.Model.EntityProperty,{_classMethodGenerators:{},_prototypeWith:{initialize:function(propertyJSON){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(propertyJSON,self);if(self.linkHref!==undefined){self.resource=self.linkHref;self.portalURI=Evri.API.Utilities.portalURIForPath(self.resource);}
return self;},instanceAttributes:['documentationUrl','klass','linkObjectName','linkHref','portalURI','name','resource','value'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"EntityPropertyList");Evri.extendNamespace(Evri.API.Model.EntityPropertyList,{_classMethodGenerators:{},_prototypeWith:{initialize:function(propertyListJSON){var self=this;self.properties=[];self.propertyNames=[];self.propertyMap={};if(propertyListJSON!==undefined){var propertyJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(propertyListJSON,"property");for(var i=0;i<propertyJSONNodes.length;i++){self.properties.push(new self.session.models.EntityProperty(propertyJSONNodes[i]));}
for(var i=0;i<self.properties.length;i++){var property=self.properties[i];if(self.propertyMap[property.name]===undefined){self.propertyMap[property.name]=[];}
self.propertyMap[property.name].push(property);}
for(var name in self.propertyMap){self.propertyNames.push(name);}
self.propertyNames=self.propertyNames.sort();}
return self;},instanceAttributes:['documentationUrl','klass','properties','propertyMap','propertyNames'],instanceMethods:['findByName','findHavingResource'],findByName:function(name){var self=this;var matchProperties=[];if(self.propertyMap[name]!==undefined){matchProperties=self.propertyMap[name];}
return matchProperties;},findHavingResource:function(){var self=this;var propertiesHavingResources=[];for(var i=0;i<self.properties.length;i++){var property=self.properties[i];if(property.resource!==undefined){propertiesHavingResources.push(property);}}
return propertiesHavingResources;}}});Evri.defineNamespace(Evri.API.Model,"EntityRelation");Evri.extendNamespace(Evri.API.Model.EntityRelation,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'EntityRelation');}},_prototypeWith:{initialize:function(relationJSON){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(relationJSON,self);self.resource=self.href;self.mediaResource=self.resource;self.portalURI=Evri.API.Utilities.portalURIForPath(self.resource);self.media=new self.session.models.Media(self,{responseHandlerMethod:"handleEntityRelationResponse",mediaTypeSpecifier:'media'});return self;},instanceAttributes:['documentationUrl','klass','href','media','mediaResource','portalURI','resource'],instanceMethods:['getName','getTargets'],getName:function(){var self=this;return self.name;},getTargets:function(callbacks,options){var self=this;options=options||{};callbacks.bindWith=function(targetList){self.targetList=targetList;targetList.belongsTo=self;};Evri.API.Transport.callRemoteMethod(self.session,self.resource,self.session.models.TargetList.handleResponse,{},callbacks);}}});Evri.defineNamespace(Evri.API.Model,"EntityRelationList");Evri.extendNamespace(Evri.API.Model.EntityRelationList,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'EntityRelationList');}},_prototypeWith:{initialize:function(listJSON){var self=this;var relationsNodeSet=Evri.API.Utilities.JSON.getNodeSetForPath(listJSON,"relations/relation");var graphNode=Evri.API.Utilities.JSON.getNodeForPath(listJSON,"relations/graph");self.relations=[];for(var i=0;i<relationsNodeSet.length;i++){self.relations.push(new self.session.models.EntityRelation(relationsNodeSet[i]));}
return self;},instanceAttributes:['documentationUrl','klass','relations'],instanceMethods:['getFacets','getVerbs'],getFacets:function(){var self=this;var facets=[];for(var i=0;i<self.relations.length;i++){var relation=self.relations[i];switch(relation.type.toLowerCase()){case"facet":facets.push(relation);break;default:break;}}
return facets;},getVerbs:function(){var self=this;var verbs=[];for(var i=0;i<self.relations.length;i++){var relation=self.relations[i];switch(relation.type.toLowerCase()){case"verb":case"qt":verbs.push(relation);break;default:break;}}
return verbs;}}});Evri.defineNamespace(Evri.API.Model,"EntitySet");Evri.extendNamespace(Evri.API.Model.EntitySet,{_classMethodGenerators:{},_prototypeWith:{initialize:function(entityResources){var self=this;self.mediaResource="/entity-set/media";var entityIds=[];for(var cntr=0;cntr<entityResources.length;cntr++){var entityId=self.session.models.Entity.parseIdFromResource(entityResources[cntr]);if(entityId!==undefined){entityIds.push(entityId);}}
self.entityIdList=entityIds.join(",");self.media=new self.session.models.Media(self);return self;},instanceAttributes:['documentationUrl','klass'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"Facet");Evri.extendNamespace(Evri.API.Model.Facet,{_classMethodGenerators:{},_prototypeWith:{initialize:function(facetJSON){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(facetJSON,self);return self;},instanceAttributes:['documentationUrl','klass','name'],instanceMethods:['getName'],getName:function(){return self.name;}}});Evri.defineNamespace(Evri.API.Model,"Graph");Evri.extendNamespace(Evri.API.Model.Graph,{_classMethodGenerators:{getForContent:function(session){return function(content,callbacks,options){options=options||{};var remoteMethodParams={text:content};if(options.uri!==undefined){remoteMethodParams.uri=options.uri;}
Evri.API.Transport.callRemoteMethod(session,"/media/entities",session.models.Graph.handleResponse,remoteMethodParams,callbacks);};},getForURI:function(session){return function(uri,callbacks,options){var params={uri:uri};options=options||{};if(options.nocache===true){params.nocache=true;if(uri.match(/\?/)===null){params.uri+='?nocache='+(new Date()).getTime();}else{params.uri+='&nocache='+(new Date()).getTime();}}
Evri.API.Transport.callRemoteMethod(session,"/media/entities",session.models.Graph.handleResponse,params,callbacks);};},getForCurrentPage:function(session){return function(callbacks,options){session.models.Graph.getForURI(Evri.API.Utilities.currentURI(),callbacks,options);};},handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'Graph');}},_prototypeWith:{initialize:function(jsonNode){var self=this;var entityJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(jsonNode,"graph/entities/entity");self.belongsTo=undefined;self.entities=[];self.pairs=[];for(var i=0;i<entityJSONNodes.length;i++){self.entities.push(new self.session.models.Entity(entityJSONNodes[i]));};var pairJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(jsonNode,"graph/pairs/pair");if(pairJSONNodes!==undefined){for(var i=0;i<pairJSONNodes.length;i++){var pairJSONNode=pairJSONNodes[i];var pairEntityNodes=Evri.API.Utilities.JSON.getNodeSetForPath(pairJSONNode,"entity");var entities=[];for(var j=0;j<pairEntityNodes.length;j++){entities.push(new self.session.models.Entity(pairEntityNodes[j]));}
self.pairs.push(new self.session.models.Pair(entities[0],entities[1],pairJSONNode));}}
self.queryToken=Evri.API.Utilities.JSON.getValueForPath(jsonNode,"graph/queryToken");self.media=new self.session.models.Media(self);return self;},instanceAttributes:['documentationUrl','klass','entities','media','pairs','queryToken'],instanceMethods:['getName'],getName:function(){var self=this;return self.belongsTo===undefined?"Text Content Graph":self.belongsTo.getName()+" "+self.belongsTo.klass+" Graph";}}});Evri.defineNamespace(Evri.API.Model,"Image");Evri.extendNamespace(Evri.API.Model.Image,{_classMethodGenerators:{},_prototypeWith:{initialize:function(imageJSON){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(imageJSON,self);var thumbnailNode=Evri.API.Utilities.JSON.getNodeForPath(imageJSON,"thumbnail");if(thumbnailNode!==undefined){self.thumbnail=new self.session.models.Image(thumbnailNode);self.clickUrl=Evri.API.Utilities.buildMediaSourceUrl(self.clickUrl,self.title,self.clickUrl);self.thumbnail.belongsTo=self;}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','articleHref','clickUrl','content','date','height','mimeType','size','thumbnail','title','url','width'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"ImageList");Evri.extendNamespace(Evri.API.Model.ImageList,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'ImageList',{beforeInstantiate:"mediaResult"});},handleTargetRelationResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'ImageList',{beforeInstantiate:"relations/relation/targets/entity"});},handleRequestOptions:function(session){return function(params,options){var acceptedOptions=['resultsPerPage'];for(var i=0;i<acceptedOptions.length;i++){var key=acceptedOptions[i];if(options[key]!==undefined){params[key]=options[key];}}
if(options.page!==undefined){var page=parseInt(options.page);var resultsPerPage=params.resultsPerPage||10;params.startId=((page-1)*resultsPerPage);}};}},_prototypeWith:{initialize:function(jsonNode){var self=this;self.images=[];var listNode=Evri.API.Utilities.JSON.getNodeForPath(jsonNode,"imageList");if(listNode!==undefined){var imageJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(listNode,"image");for(var i=0;i<imageJSONNodes.length;i++){var image=new self.session.models.Image(imageJSONNodes[i]);image.belongsTo=self;self.images.push(image);}}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','images'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"MatchedLocation");Evri.extendNamespace(Evri.API.Model.MatchedLocation,{_classMethodGenerators:{},_prototypeWith:{initialize:function(jsonNode){var self=this;self.start=parseInt(jsonNode["@startPtr"]);self.end=parseInt(jsonNode["@endPtr"]);self.href=jsonNode["@href"];self.portalURI=undefined;self.matchType=jsonNode["@matchType"];self.snippetLength=self.end-self.start+1;if(self.href!==undefined&&self.href.length>0){self.portalURI=Evri.API.Utilities.portalURIForPath(self.href);}
return self;},instanceAttributes:['documentationUrl','klass','end','href','matchType','portalURI','snippetLength','start'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"Media");Evri.extendNamespace(Evri.API.Model.Media,{getMediaByTypeGenerator:function(mediaListClass,mediaType,listsContainer){return function(callbacks,options){var self=this;var params={};options=options||{};params[self.mediaTypeSpecifier]=mediaType;if(self.belongsTo.queryToken!==undefined){params.queryToken=self.belongsTo.queryToken;}
if(self.belongsTo.entityIdList!==undefined){params.entityIdList=self.belongsTo.entityIdList;}
if(self.belongsTo.mediaParams!==undefined){for(var paramKey in self.belongsTo.mediaParams){params[paramKey]=self.belongsTo.mediaParams[paramKey];}}
callbacks.bindWith=function(list){list.belongsTo=self;self[listsContainer].push(list);};self.session.models[mediaListClass].handleRequestOptions(params,options)
Evri.API.Transport.callRemoteMethod(self.session,self.resource,self.session.models[mediaListClass][self.responseHandlerMethod],params,callbacks);};}});Evri.extendNamespace(Evri.API.Model.Media,{_classMethodGenerators:{},_prototypeWith:{initialize:function(belongsTo,options){var self=this;options=options||{}
self.belongsTo=belongsTo;self.mediaTypeSpecifier=options.mediaTypeSpecifier!==undefined?options.mediaTypeSpecifier:'type';self.responseHandlerMethod=(options.responseHandlerMethod!==undefined?options.responseHandlerMethod:"handleResponse");self.articleLists=[];self.imageLists=[];self.videoLists=[];self.productLists=[];self.tweetLists=[];self.resource=(belongsTo.mediaResource||"/media/related");return self;},instanceAttributes:['belongsTo','documentationUrl','klass','articleLists','imageLists','videoLists','productLists','tweetLists'],instanceMethods:['getArticles','getImages','getName','getVideos','getProducts','getRecommendedProducts','getTweets'],getArticles:Evri.API.Model.Media.getMediaByTypeGenerator("ArticleList","article","articleLists"),getImages:Evri.API.Model.Media.getMediaByTypeGenerator("ImageList","image","imageLists"),getVideos:Evri.API.Model.Media.getMediaByTypeGenerator("VideoList","video","videoLists"),getProducts:Evri.API.Model.Media.getMediaByTypeGenerator("ProductList","product","productLists"),getRecommendedProducts:Evri.API.Model.Media.getMediaByTypeGenerator("ProductList","productad","productLists"),getTweets:Evri.API.Model.Media.getMediaByTypeGenerator("TweetList","tweet","tweetLists"),getName:function(){var self=this;return self.belongsTo.getName()+" Media";}}});Evri.defineNamespace(Evri.API.Model,"MediaConstraint");Evri.extendNamespace(Evri.API.Model.MediaConstraint,{_classMethodGenerators:{},_prototypeWith:{initialize:function(){var self=this;self.includedDomains=[];self.excludedDomains=[];self.includedSourceTags=[];return self;},instanceAttributes:['documentationUrl','klass','excludedDomains','includedDomains','includedSourceTags'],instanceMethods:['excludeDomain','includeDomain','includeSourceTags','toParams'],excludeDomain:function(domain){var self=this;if(typeof(domain)==="string"){self.excludedDomains.push(Evri.API.Utilities.URI.cleanDomain(domain));}
return self;},includeDomain:function(domain){var self=this;if(typeof(domain)==="string"){self.includedDomains.push(Evri.API.Utilities.URI.cleanDomain(domain));}
return self;},includeSourceTags:function(sourceTag){var self=this;if(typeof(sourceTag)==="string"){self.includedSourceTags.push(sourceTag);}
return self;},toParams:function(){var self=this;var params={};if(self.includedDomains.length>0){params.includeDomains=self.includedDomains.join(',');}
if(self.excludedDomains.length>0){params.excludeDomains=self.excludedDomains.join(',');}
if(self.includedSourceTags.length>0){params.includeSourceTags=self.includedSourceTags.join(',');}
return params;}}});Evri.defineNamespace(Evri.API.Model,"EntityConstraint",Evri.API.Model.MediaConstraint);Evri.defineNamespace(Evri.API.Model,"Product");Evri.extendNamespace(Evri.API.Model.Product,{_classMethodGenerators:{},_prototypeWith:{initialize:function(productJSON){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(productJSON,self);var productCreatorData=["author","artist","composer","creator","director","manufacturer"];for(var cntr=0;cntr<productCreatorData.length;cntr++){var nodeName=productCreatorData[cntr];var key=nodeName.toLowerCase()+"s";self[key]=Evri.API.Utilities.JSON.getValueForNodeSet(productJSON,nodeName);}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','name','id','group','url','imageurl','rating','price','label','releaseDate','height','width','referringUri','authors','artists','composers','directors','manufacturers','creators'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"ProductList");Evri.extendNamespace(Evri.API.Model.ProductList,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'ProductList',{beforeInstantiate:"mediaResult"});},handleRequestOptions:function(session){return function(params,options){};}},_prototypeWith:{initialize:function(jsonNode){var self=this;self.products=[];var productListNode=Evri.API.Utilities.JSON.getNodeForPath(jsonNode,"productList");if(productListNode!==undefined){var productJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(productListNode,"product");for(var i=0;i<productJSONNodes.length;i++){var product=new self.session.models.Product(productJSONNodes[i]);product.belongsTo=self;self.products.push(product);}}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','products'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"Pair");Evri.extendNamespace(Evri.API.Model.Pair,{_classMethodGenerators:{},_prototypeWith:{initialize:function(entity1,entity2,pairJSON){var self=this;self.entity1=entity1;self.entity2=entity2;if(pairJSON!==undefined){Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(pairJSON,self);}
if(self.queryToken===undefined){self.mediaParams={'entityURI':[self.entity1.resource,self.entity2.resource]};}
self.media=new self.session.models.Media(self);return self;},instanceAttributes:['documentationUrl','klass','entity1','entity2','media','mediaParams','queryToken'],instanceMethods:['getName'],getName:function(){var self=this;return self.entity1.name+" => "+self.entity2.name;}}});Evri.defineNamespace(Evri.API.Model,"Target");Evri.extendNamespace(Evri.API.Model.Target,{_classMethodGenerators:{},_prototypeWith:{initialize:function(entityJSON){var self=this;self.entity=new self.session.models.Entity(entityJSON);self.href=self.entity.targetHref;self.resource=self.href;self.portalURI=Evri.API.Utilities.portalURIForPath(self.resource);self.mediaResource=self.resource;self.media=new self.session.models.Media(self,{responseHandlerMethod:"handleTargetRelationResponse",mediaTypeSpecifier:'media'});return self;},instanceAttributes:['documentationUrl','klass','entity','href','media','mediaResource','portalURI','resource'],instanceMethods:['getName'],getName:function(){var self=this;return self.entity.getName();}}});Evri.defineNamespace(Evri.API.Model,"TargetList");Evri.extendNamespace(Evri.API.Model.TargetList,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'TargetList',{beforeInstantiate:"relations/relation/targets"});},handleEntityRelationsGraphResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'TargetList',{beforeInstantiate:function(jsonNode){var relationNodes=Evri.API.Utilities.JSON.getNodeSetForPath(jsonNode,"relations/graph/relation");var responseNode={entity:[]};if(relationNodes.length>0){for(var i=0;i<relationNodes.length;i++){var entityNodes=Evri.API.Utilities.JSON.getNodeSetForPath(relationNodes[i],"targets/entity");if(entityNodes.length>0){for(var j=0;j<entityNodes.length;j++){responseNode.entity.push(entityNodes[j]);}}}}
return responseNode;}});}},_prototypeWith:{initialize:function(targetsJSON){var self=this;var targetNodes=Evri.API.Utilities.JSON.getNodeSetForPath(targetsJSON,"entity");self.targets=[];for(var i=0;i<targetNodes.length;i++){self.targets.push(new self.session.models.Target(targetNodes[i]));}
return self;},instanceAttributes:['documentationUrl','klass','targets'],instanceMethods:['getName'],getName:function(){var self=this;return"Targets for '"+self.belongsTo.getName()+"' EntityRelation";}}});Evri.defineNamespace(Evri.API.Model,"Tweet");Evri.extendNamespace(Evri.API.Model.Tweet,{_classMethodGenerators:{findForQuery:function(session){return function(query,callbacks){Evri.API.Transport.callRemoteMethod(session,"/mashups/twitter/tag",session.models.TweetList.handleResponse,{'q':query},callbacks);};},findForEntityResource:function(session){return function(entityResource,callbacks){Evri.API.Transport.callRemoteMethod(session,"/mashups/twitter/tag",session.models.TweetList.handleResponse,{'entityURI':entityResource},callbacks);};},findFromUsername:function(session){return function(username,callbacks){var query="from:"+username.replace('@','');session.models.Tweet.findForQuery(query,callbacks);};},findToUsername:function(session){return function(username,callbacks){var query="to:"+username.replace('@','');session.models.Tweet.findForQuery(query,callbacks);};},getFindForEntityResourceFunction:function(session){return function(entityResource,callbacks){Evri.API.Transport.callRemoteMethod(session,"/mashups/twitter/query",session.models.TwitterQuery.handleResponse,{'entityURI':entityResource},callbacks);};},callTwitterForEntityResource:function(session){return function(twitterQuery,callbacks){Evri.API.Transport.callRemoteMethod(session,twitterQuery,session.models.TweetList.handleTwitterResponse,{isThirdPartyAPICall:true,hasQueryString:true},callbacks);};}},_prototypeWith:{initialize:function(tweetJSON){var self=this;var twitterEntryJSON=Evri.API.Utilities.JSON.getNodeForPath(tweetJSON,"twitterEntry");Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(twitterEntryJSON,self);self.matchedLocations=[];self.entityResources=[];self.entityIds=[];var entityResourcesNodes=Evri.API.Utilities.JSON.getNodeSetForPath(tweetJSON,"entities/taggedEntityData/entityUris/string");for(var i=0;i<entityResourcesNodes.length;i++){var resource=Evri.API.Utilities.JSON.getValueForNode(entityResourcesNodes[i]);self.entityResources.push(resource);var entityId=self.session.models.Entity.parseIdFromResource(resource);if(entityId!==undefined){self.entityIds.push(entityId);}}
var entityMatchedLocations=Evri.API.Utilities.JSON.getNodeSetForPath(tweetJSON,"entities/taggedEntityData/entityLocations/location");for(var i=0;i<entityMatchedLocations.length;i++){self.matchedLocations.push(new self.session.models.TweetMatchedLocation(entityMatchedLocations[i],self.entityResources));}
return self;},instanceAttributes:['documentationUrl','klass','belongsTo','authorName','authorURI','content','entityIds','entityResources','id','imageURI','matchedLocations','permalink','published','title','updated'],instanceMethods:['getEntityDetails','getRelativePublicationDate','getTitleRanges'],getEntityDetails:function(callbacks){var self=this;self.session.models.Entity.findById(self.entityIds,callbacks)},getRelativePublicationDate:function(options){var self=this;return Evri.API.Utilities.Date.relativeDate(self.published,options);},getTitleRanges:function(){var self=this;return Evri.API.Utilities.HTML.tokenizeStringHighlights(self.session,self.title,self.matchedLocations);}}});Evri.defineNamespace(Evri.API.Model,"TweetList");Evri.extendNamespace(Evri.API.Model.TweetList,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,"TweetList",{beforeInstantiate:"twitterNet/twitterEntryData"});},handleTwitterResponse:function(session){return function(responseJSON,responseCallbacks){if(responseCallbacks!==undefined){if(responseJSON!==null){if(responseJSON.error!==undefined){var error=new session.models.APIError(responseJSON.error,{"responseJSON":responseJSON});responseCallbacks.onFailure.call(null,error);}
else{var responseItem=new(session.models["TweetList"])(responseJSON,{twitterResponse:true});responseCallbacks.onComplete.call(null,responseItem);}}
else{var error=new session.models.APIError("Response object is null");responseCallbacks.onFailure.call(null,error);}}};},handleRequestOptions:function(session){return function(params,options){};}},_prototypeWith:{initialize:function(tweetListJSON,options){var self=this;options=options||{};self.tweets=[];self.entityIds=[];self.entityResources=[];var tweetNodes=[];if(options.twitterResponse===true){tweetNodes=Evri.API.Utilities.JSON.getNodeSetForPath(tweetListJSON,"results");}
else{tweetNodes=Evri.API.Utilities.JSON.getNodeSetForPath(tweetListJSON,"taggedTwitterEntryData");}
var entityIdsMap={};var entityResourcesMap={};for(var i=0;i<tweetNodes.length;i++){var tweetNode=tweetNodes[i];var tweet=new self.session.models.Tweet(tweetNode);if(options.twitterResponse===true){tweet.authorName=tweetNode.from_user;tweet.authorURI="http://www.twitter.com/"+tweetNode.from_user;tweet.content=tweetNode.text;tweet.title=tweetNode.text;tweet.imageURI=tweetNode.profile_image_url;tweet.published=tweetNode.created_at;tweet.id=tweetNode.id;tweet.permalink='';tweet.updated='';}
self.tweets.push(tweet);for(var j=0;j<tweet.entityIds.length;j++){var entityId=tweet.entityIds[j];if(entityIdsMap[entityId]===undefined){entityIdsMap[entityId]=1;self.entityIds.push(entityId);}}
for(var j=0;j<tweet.entityResources.length;j++){var resource=tweet.entityResources[j];if(entityResourcesMap[resource]===undefined){entityResourcesMap[resource]=1;self.entityResources.push(resource);}}}
return self;},instanceAttributes:['entityIds','entityResources','tweets'],instanceMethods:['getEntityDetails'],getEntityDetails:function(callbacks){var self=this;self.session.models.Entity.findById(self.entityIds,callbacks)}}});Evri.defineNamespace(Evri.API.Model,"TweetMatchedLocation");Evri.extendNamespace(Evri.API.Model.TweetMatchedLocation,{_classMethodGenerators:{},_prototypeWith:{initialize:function(locationJSON,entityResources){var self=this;var entityIndex=parseInt(Evri.API.Utilities.JSON.getValueForPath(locationJSON,"ei"));self.href=entityResources[entityIndex];self.start=parseInt(Evri.API.Utilities.JSON.getValueForPath(locationJSON,"sp"));self.end=parseInt(Evri.API.Utilities.JSON.getValueForPath(locationJSON,"ep"));self.snippetLength=self.end-self.start;self.portalURI=Evri.API.Utilities.portalURIForPath(self.href);return self;},instanceAttributes:['documentationUrl','klass','end','href','portalURI','snippetLength','start',],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"TwitterQuery");Evri.extendNamespace(Evri.API.Model.TwitterQuery,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,"TwitterQuery",{beforeInstantiate:"twitterResult"});},handleRequestOptions:function(session){return function(params,options){};}},_prototypeWith:{initialize:function(twitterQueryJSON){var self=this;var twitterQueryJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(twitterQueryJSON,"query");if(twitterQueryJSONNodes.length>0){self.twitterSearchAPI=Evri.API.Utilities.JSON.getValueForNode(twitterQueryJSONNodes[0]);self.callTwitterForEntityResource=function(callbacks){self.session.models.Tweet.callTwitterForEntityResource(self.twitterSearchAPI,callbacks);};}
return self;},instanceAttributes:['twitterSearchAPI'],instanceMethods:['findByResource']}});Evri.defineNamespace(Evri.API.Model,"Video");Evri.extendNamespace(Evri.API.Model.Video,{_classMethodGenerators:{},_prototypeWith:{initialize:function(videoJSON){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(videoJSON,self);var thumbnailNodes=Evri.API.Utilities.JSON.getNodeSetForPath(videoJSON,"thumbnails/image");self.thumbnails=[];for(var i=0;i<thumbnailNodes.length;i++){var thumbnail=new self.session.models.VideoStillImage(thumbnailNodes[i]);thumbnail.belongsTo=self;self.thumbnails.push(thumbnail);}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','author','content','duration','id','medium','thumbnails','title','type','url'],instanceMethods:['getSourceUrl'],getSourceUrl:function(){var self=this;var sourceUrl="";if(self.id.match(/gdata\.youtube\.com/)!==-1){var youtubeBaseUrl="http://www.youtube.com/watch?v=";var urlComponents=self.id.split("/");var youtubeVideoId=urlComponents[urlComponents.length-1];sourceUrl=youtubeBaseUrl+youtubeVideoId;}
return sourceUrl;}}});Evri.defineNamespace(Evri.API.Model,"VideoList");Evri.extendNamespace(Evri.API.Model.VideoList,{_classMethodGenerators:{handleResponse:function(session){return Evri.API.Model.generateResponseHandler(session,'VideoList',{beforeInstantiate:"mediaResult"});},handleTargetRelationResponse:function(session){Evri.API.Model.generateResponseHandler(session,'VideoList',{beforeInstantiate:"relations/relation/targets/entity"});},handleRequestOptions:function(session){return function(params,options){};}},_prototypeWith:{initialize:function(jsonNode){var self=this;self.videos=[];var videoListNode=Evri.API.Utilities.JSON.getNodeForPath(jsonNode,"videoList");if(videoListNode!==undefined){var videoJSONNodes=Evri.API.Utilities.JSON.getNodeSetForPath(videoListNode,"video");for(var i=0;i<videoJSONNodes.length;i++){var video=new self.session.models.Video(videoJSONNodes[i]);video.belongsTo=self;self.videos.push(video);}}
return self;},instanceAttributes:['belongsTo','documentationUrl','klass','videos'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"VideoStillImage");Evri.extendNamespace(Evri.API.Model.VideoStillImage,{_classMethodGenerators:{},_prototypeWith:{initialize:function(jsonNode){var self=this;Evri.API.Utilities.JSON.bindChildrenAndAttributesToObject(jsonNode,self);return self;},instanceAttributes:['belongsTo','documentationUrl','klass','height','size','time','url','width'],instanceMethods:[]}});Evri.defineNamespace(Evri.API.Model,"Zeitgeist");Evri.extendNamespace(Evri.API.Model.Zeitgeist,{getEntitiesByEntityTypeAndZeitgeistTypeGenerator:function(session,zeitgeistType){return function(entityType,callbacks,options){var params={};options=options||{};if(options.resultsPerPage!==undefined){params.max=parseInt(options.resultsPerPage);}
if(options.facet!==undefined){params.facet=options.facet;}
Evri.API.Transport.callRemoteMethod(session,"/zeitgeist/entities/"+entityType+"/"+zeitgeistType,session.models.EntityList["handleZeitgeistEntities"+Evri.API.Utilities.String.capitalize(zeitgeistType)+"Response"],params,callbacks);};},_classMethodGenerators:{getPopularEntitiesByType:function(session){return Evri.API.Model.Zeitgeist.getEntitiesByEntityTypeAndZeitgeistTypeGenerator(session,'popular');},getRisingEntitiesByType:function(session){return Evri.API.Model.Zeitgeist.getEntitiesByEntityTypeAndZeitgeistTypeGenerator(session,'rising');},getFallingEntitiesByType:function(session){return Evri.API.Model.Zeitgeist.getEntitiesByEntityTypeAndZeitgeistTypeGenerator(session,'falling');}}});Evri.defineClass(Evri.API,"Session",function(options){var self=this;self.klass="Session";self.requiredQueryStringParameterKeys=['appId'];self.sharedQueryStringParameters={};for(var i=0;i<self.requiredQueryStringParameterKeys.length;i++){var key=self.requiredQueryStringParameterKeys[i];if(options[key]===undefined){alert(key+" is a required to create an Evri.API.Session");return undefined;}else{self.sharedQueryStringParameters[key]=options[key];}}
Evri.API.Model.generateForSession(self);return self;});Evri.API.setup({'transport':'CrossDomain'});