namespace('acme.flickr');acme.flickr.Initialize=function(appName) {acme.flickr.appName=appName;acme.flickr.authTokenName='flickrAuthToken';if(appName=='Discussr') acme.flickr.apiKey='364bc8fdedc38d870e1523190f5a5a38';else acme.flickr.apiKey='feb753a0cad44ff8b04c214a04fc1d69';acme.flickr.authUrl='http://api.flickr.com/services/auth/' 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.authToken=null;acme.flickr.authActualPermName=null;acme.flickr.authActualPermId=null;acme.flickr.authNsid=null;acme.flickr.authUsername=null;acme.flickr.authFullname=null;acme.flickr.authTokenChecked=false;acme.flickr.authTokenBad=false;acme.flickr.authError='';} acme.flickr.Auth=function(div,requestedPermId,callback) {acme.flickr.authDiv=div;acme.flickr.authRequestedPermId=requestedPermId;acme.flickr.authCallback=callback;acme.flickr.AuthDisplay();} 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.AuthGetToken=function() {if(acme.flickr.authTokenChecked) return acme.flickr.authToken;else return null;} acme.flickr.AuthDisplay=function() {var html='
';if(acme.flickr.authTokenBad) acme.flickr.authToken=null;else acme.flickr.authToken=GetCookie(acme.flickr.authTokenName);if(acme.flickr.authError!=''&&acme.flickr.authError!='98 - Invalid auth token') html+='Authentication error! ('+acme.flickr.authError+')
';if(!acme.flickr.authToken) {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.authTokenChecked) {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... ';HttpGet('/flickr/proxy.cgi?method=flickr.auth.checkToken&app_name='+acme.flickr.appName+'&api_key='+acme.flickr.apiKey+'&auth_token='+acme.flickr.authToken,acme.flickr.AuthCheckToken,acme.flickr.AuthCheckTokenFailed);} html+='
Revoke authentication.';} html+='
';acme.flickr.authDiv.innerHTML=html;} acme.flickr.AuthUrl=function(permId) {return'/flickr/auth_redir.cgi?app_name='+acme.flickr.appName+'&api_key='+acme.flickr.apiKey+'&perms='+acme.flickr.AuthPermName(permId);} acme.flickr.AuthCheckToken=function(request) {var doc=request.responseXML.documentElement;var rspElement=FindDeepChildNamed(doc,'rsp');var rspStat=rspElement.getAttribute('stat');if(rspStat=='ok') {var permsElement=FindDeepChildNamed(rspElement,'perms');acme.flickr.authActualPermName=GetXmlText(permsElement);acme.flickr.authActualPermId=acme.flickr.AuthPermId(acme.flickr.authActualPermName);var userElement=FindDeepChildNamed(rspElement,'user');acme.flickr.authNsid=userElement.getAttribute('nsid');acme.flickr.authUsername=userElement.getAttribute('username');acme.flickr.authFullname=userElement.getAttribute('fullname');acme.flickr.authTokenChecked=true;acme.flickr.authTokenBad=false;acme.flickr.AuthDisplay();if(acme.flickr.authCallback) acme.flickr.authCallback(acme.flickr.authToken);} else {var errElement=FindDeepChildNamed(rspElement,'err');var errCode=errElement.getAttribute('code');var errMsg=errElement.getAttribute('msg');if(errCode!=null&&errMsg!=null) acme.flickr.authError=errCode+' - '+errMsg;ClearCookie(acme.flickr.authTokenName);acme.flickr.authToken=null;acme.flickr.authTokenBad=true;acme.flickr.AuthDisplay();}} acme.flickr.AuthCheckTokenFailed=function(request) {acme.flickr.authError=request.status+' - '+request.statusText;ClearCookie(acme.flickr.authTokenName);acme.flickr.authToken=null;acme.flickr.authTokenBad=true;acme.flickr.AuthDisplay();} 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;}}