namespace('acme.flickr');acme.flickr.Initialize=function(appName) {acme.flickr.appName=appName;if(appName=='Discussr') {acme.flickr.apiKey='364bc8fdedc38d870e1523190f5a5a38';acme.flickr.cookieName='discussr';} else {acme.flickr.apiKey='feb753a0cad44ff8b04c214a04fc1d69';acme.flickr.cookieName='flickr';}} acme.flickr.restUrl='http://api.flickr.com/services/rest/' acme.flickr.xmlrpcUrl='http://api.flickr.com/services/xmlrpc/' acme.flickr.uploadUrl='http://api.flickr.com/services/upload/' acme.flickr.authPermIdNone=0;acme.flickr.authPermIdRead=1;acme.flickr.authPermIdWrite=2;acme.flickr.authPermIdDelete=3;acme.flickr.authPermIdUnknown=4;acme.flickr.authDiv=null;acme.flickr.authRequestedPermId=null;acme.flickr.authCallback=null;acme.flickr.authActualPermName=null;acme.flickr.authActualPermId=null;acme.flickr.authNsid=null;acme.flickr.authUsername=null;acme.flickr.authFullname=null;acme.flickr.authError='';acme.flickr.authRedirCookieName='flickrAuthRedir';acme.flickr.AuthGetNsid=function() {return acme.flickr.authNsid;} acme.flickr.AuthGetUsername=function() {return acme.flickr.authUsername;} acme.flickr.AuthGetFullname=function() {return acme.flickr.authFullname;} acme.flickr.AuthPermDescription=function(permId) {switch(permId) {case acme.flickr.authPermIdNone:return'to know who you are';case acme.flickr.authPermIdRead:return'permission to show you your private photos';case acme.flickr.authPermIdWrite:return'permission to let you add, edit and delete photo metadata, and let you upload photos';case acme.flickr.authPermIdDelete:return'permission to let you delete photos from your Flickr account';default:return'unknown permissions';}} acme.flickr.AuthPermName=function(permId) {switch(permId) {case acme.flickr.authPermIdNone:return'';case acme.flickr.authPermIdRead:return'read';case acme.flickr.authPermIdWrite:return'write';case acme.flickr.authPermIdDelete:return'delete';default:return'unknown';}} acme.flickr.AuthPermId=function(permName) {switch(permName) {case'':return acme.flickr.authPermIdNone case'read':return acme.flickr.authPermIdRead;case'write':return acme.flickr.authPermIdWrite;case'delete':return acme.flickr.authPermIdDelete;default:return acme.flickr.authPermIdUnknown;}} acme.flickr.GetVars=function(varsText) {var nVars=varsText.split('&');var aVars=[];for(var i=0;i';if(!acme.flickr.fauthToken) {html+='You are not authenticated. ';html+='This application needs '+acme.flickr.AuthPermDescription(acme.flickr.authRequestedPermId)+'. ';if(acme.flickr.authRequestedPermId==acme.flickr.authPermIdNone) acme.flickr.authRequestedPermId=acme.flickr.authPermIdRead;html+='
Authenticate.';} else {if(acme.flickr.fauthTokenChecked) {html+='You are authenticated as '+acme.flickr.authFullname+' ';if(acme.flickr.authUsername!=acme.flickr.authFullname) html+='('+acme.flickr.authUsername+') ';html+='with '+acme.flickr.authActualPermName+' permission. ';if(acme.flickr.authRequestedPermId>acme.flickr.authActualPermId) {html+='This application needs '+acme.flickr.AuthPermDescription(acme.flickr.authRequestedPermId)+'. ';html+='
Raise permission.';}} else {html+='Checking authentication token....';acme.utils.HttpGet('/flickr/proxy.cgi?method=flickr.auth.checkToken&api_key='+acme.flickr.apiKey+'&auth_token='+acme.flickr.fauthToken+'&app_name='+encodeURIComponent(acme.flickr.appName),acme.flickr.FAuthCheckTokenOk,acme.flickr.FAuthCheckTokenFail);} html+='
Revoke authentication.';} html+='';acme.flickr.authDiv.innerHTML=html;} acme.flickr.FAuthUrl=function(permId) {acme.utils.SaveCookie(acme.flickr.authRedirCookieName,window.location.href);return'/flickr/fauth_redir.cgi?api_key='+acme.flickr.apiKey+'&perms='+acme.flickr.AuthPermName(permId)+'&app_name='+encodeURIComponent(acme.flickr.appName);} acme.flickr.FAuthCheckTokenOk=function(response) {var tree=acme.utils.ParseXML(response.responseXML.documentElement);if(tree.stat=='ok') {acme.flickr.authActualPermName=tree.auth.perms.TEXT;acme.flickr.authActualPermId=acme.flickr.AuthPermId(acme.flickr.authActualPermName);var user=tree.auth.user;acme.flickr.authNsid=user.nsid;acme.flickr.authUsername=user.username;acme.flickr.authFullname=user.fullname;acme.flickr.fauthTokenChecked=true;acme.flickr.fauthTokenBad=false;acme.flickr.FAuthDisplay();if(acme.flickr.authCallback) acme.flickr.authCallback(acme.flickr.fauthToken);} else {var code=tree.err.code;var msg=tree.err.msg;if(code&&msg) acme.flickr.authError=code+' - '+msg;acme.utils.ClearCookie(acme.flickr.fauthTokenCookieName);acme.flickr.fauthToken=null;acme.flickr.fauthTokenBad=true;acme.flickr.FAuthDisplay();}} acme.flickr.FAuthCheckTokenFail=function(response) {acme.flickr.authError=response.status+' - '+response.statusText;acme.utils.ClearCookie(acme.flickr.fauthTokenCookieName);acme.flickr.fauthToken=null;acme.flickr.fauthTokenBad=true;acme.flickr.FAuthDisplay();} acme.flickr.oauthRequestTokenUrl='http://www.flickr.com/services/oauth/request_token';acme.flickr.oauthAuthorizeUrl='http://www.flickr.com/services/oauth/authorize';acme.flickr.oauthAccessTokenUrl='http://www.flickr.com/services/oauth/access_token';acme.flickr.oauthRequestToken=null;acme.flickr.oauthRequestSecret=null;acme.flickr.oauthAccessToken=null;acme.flickr.oauthAccessSecret=null;acme.flickr.oauthTokenChecked=false;acme.flickr.oauthTokenBad=false;acme.flickr.OAuth=function(div,requestedPermId,callback) {acme.flickr.oauthRequestTokenCookieName=acme.flickr.cookieName+'OAuthRequestToken';acme.flickr.oauthRequestSecretCookieName=acme.flickr.cookieName+'OAuthRequestSecret';acme.flickr.oauthAccessTokenCookieName=acme.flickr.cookieName+'OAuthAccessToken';acme.flickr.oauthAccessSecretCookieName=acme.flickr.cookieName+'OAuthAccessSecret';acme.flickr.authDiv=div;acme.flickr.authRequestedPermId=requestedPermId;acme.flickr.authCallback=callback;acme.flickr.OAuthDisplay();} acme.flickr.OAuthGetToken=function() {if(acme.flickr.oauthTokenChecked) return acme.flickr.oauthAccessToken;else return null;} acme.flickr.OAuthGetSecret=function() {if(acme.flickr.oauthTokenChecked) return acme.flickr.oauthAccessSecret;else return null;} acme.flickr.OAuthDisplay=function() {if(acme.flickr.oauthTokenBad) {acme.flickr.oauthRequestToken=null;acme.flickr.oauthRequestSecret=null;acme.flickr.oauthAccessToken=null;acme.flickr.oauthAccessSecret=null;acme.flickr.oauthTokenChecked=false;} else {acme.flickr.oauthAccessToken=acme.utils.GetCookie(acme.flickr.oauthAccessTokenCookieName);acme.flickr.oauthAccessSecret=acme.utils.GetCookie(acme.flickr.oauthAccessSecretCookieName);acme.flickr.oauthRequestToken=acme.utils.GetCookie(acme.flickr.oauthRequestTokenCookieName);acme.flickr.oauthRequestSecret=acme.utils.GetCookie(acme.flickr.oauthRequestSecretCookieName);} var query=acme.utils.GetParameters();var queryRequestToken=query['oauth_token'];var queryVerifier=query['oauth_verifier'];var html='
';if(acme.flickr.authError!=''&&acme.flickr.authError!='98 - Invalid auth token') html+='Authentication error! ('+acme.flickr.authError+')
';if(acme.flickr.oauthAccessToken&&acme.flickr.oauthAccessSecret&&acme.flickr.oauthTokenChecked) {html+='You are authenticated as '+acme.flickr.authFullname+' ';if(acme.flickr.authUsername!=acme.flickr.authFullname) html+='('+acme.flickr.authUsername+') ';html+='with '+acme.flickr.authActualPermName+' permission. ';if(acme.flickr.authRequestedPermId>acme.flickr.authActualPermId) {html+='This application needs '+acme.flickr.AuthPermDescription(acme.flickr.authRequestedPermId)+'. ';html+='
Raise permission.';} html+='
Revoke authentication.';} else if(acme.flickr.oauthAccessToken&&acme.flickr.oauthAccessSecret) {html+='Checking access token....';acme.utils.HttpGet('/flickr/proxy.cgi?method=flickr.auth.oauth.checkToken&api_key='+acme.flickr.apiKey+'&oauth_token='+acme.flickr.oauthAccessToken+'&oauth_secret='+acme.flickr.oauthAccessSecret+'&app_name='+encodeURIComponent(acme.flickr.appName),acme.flickr.OAuthCheckTokenOk,acme.flickr.OAuthHttpFail);} else if(queryRequestToken&&queryVerifier&&acme.flickr.oauthRequestToken&&acme.flickr.oauthRequestSecret) {html+='Getting access token....';acme.utils.HttpGet('/flickr/oauth_access_token.cgi?request_token='+encodeURIComponent(acme.flickr.oauthRequestToken)+'&request_secret='+encodeURIComponent(acme.flickr.oauthRequestSecret)+'&oauth_verifier='+encodeURIComponent(queryVerifier)+'&app_name='+encodeURIComponent(acme.flickr.appName),acme.flickr.OAuthAccessTokenOk,acme.flickr.OAuthHttpFail);} else if(acme.flickr.oauthRequestToken&&acme.flickr.oauthRequestSecret) {html+='You are not authenticated. ';html+='This application needs '+acme.flickr.AuthPermDescription(acme.flickr.authRequestedPermId)+'. ';if(acme.flickr.authRequestedPermId==acme.flickr.authPermIdNone) acme.flickr.authRequestedPermId=acme.flickr.authPermIdRead;html+='
Authenticate.';} else if(!acme.flickr.oauthTokenBad) {html+='Getting request token....';acme.utils.HttpGet('/flickr/oauth_request_token.cgi?oauth_callback='+encodeURIComponent(window.location.href)+'&app_name='+encodeURIComponent(acme.flickr.appName),acme.flickr.OAuthRequestTokenOk,acme.flickr.OAuthHttpFail);} else {html+='Please refresh to try anthenticating again.';} html+='
';acme.flickr.authDiv.innerHTML=html;} acme.flickr.OAuthUrl=function(requestToken,permId) {return acme.flickr.oauthAuthorizeUrl+'?oauth_token='+encodeURIComponent(requestToken)+'&perms='+encodeURIComponent(acme.flickr.AuthPermName(permId));} acme.flickr.OAuthRequestTokenOk=function(response) {var vars=acme.flickr.GetVars(response.responseText);acme.utils.SaveCookie(acme.flickr.oauthRequestTokenCookieName,vars['oauth_token']);acme.utils.SaveCookie(acme.flickr.oauthRequestSecretCookieName,vars['oauth_token_secret']);acme.flickr.OAuthDisplay();} acme.flickr.OAuthAccessTokenOk=function(response) {var vars=acme.flickr.GetVars(response.responseText);acme.utils.SaveCookie(acme.flickr.oauthAccessTokenCookieName,vars['oauth_token']);acme.utils.SaveCookie(acme.flickr.oauthAccessSecretCookieName,vars['oauth_token_secret']);acme.utils.ClearCookie(acme.flickr.oauthRequestTokenCookieName);acme.utils.ClearCookie(acme.flickr.oauthRequestSecretCookieName);window.location.search='';} acme.flickr.OAuthCheckTokenOk=function(response) {var tree=acme.flickr.OAuthParseResponse(response);if(tree) {acme.flickr.authActualPermName=tree.oauth.perms.TEXT;acme.flickr.authActualPermId=acme.flickr.AuthPermId(acme.flickr.authActualPermName);var user=tree.oauth.user;acme.flickr.authNsid=user.nsid;acme.flickr.authUsername=user.username;acme.flickr.authFullname=user.fullname;acme.flickr.oauthTokenChecked=true;acme.flickr.OAuthDisplay();if(acme.flickr.authCallback) acme.flickr.authCallback(acme.flickr.oauthAccessToken,acme.flickr.oauthAccessSecret);}} acme.flickr.OAuthParseResponse=function(response) {if(response.getResponseHeader('Content-Type')=='text/plain') {var vars=acme.flickr.GetVars(response.responseText);var problem=vars['oauth_problem'];if(problem) acme.flickr.authError='OAuth problem - '+problem;else acme.flickr.authError='Unknown OAuth problem';acme.flickr.OAuthClear();return null;} var tree=acme.utils.ParseXML(response.responseXML.documentElement);if(tree.stat!='ok') {if(tree.err) {var code=tree.err.code;var msg=tree.err.msg;if(code&&msg) acme.flickr.authError=code+' - '+msg;else acme.flickr.authError='Unknown flickr API error';} else acme.flickr.authError='Unknown flickr API error';acme.flickr.OAuthClear();return null;} return tree;} acme.flickr.OAuthClear=function() {acme.utils.ClearCookie(acme.flickr.oauthRequestTokenCookieName);acme.utils.ClearCookie(acme.flickr.oauthRequestSecretCookieName);acme.utils.ClearCookie(acme.flickr.oauthAccessTokenCookieName);acme.utils.ClearCookie(acme.flickr.oauthAccessSecretCookieName);acme.flickr.oauthTokenBad=true;acme.flickr.OAuthDisplay();} acme.flickr.OAuthHttpFail=function(response) {acme.flickr.authError=response.status+' - '+response.statusText;acme.flickr.OAuthClear();}