F.API={};F.API.callMethod=function(b,l,c,e,n,k,f,r){if(_qs_args.APIdelayMS){r=_qs_args.APIdelayMS}var s={};if(typeof l=="object"){for(var j in l){s[j]=l[j]}}s.method=b;var d=(f)?0:1;var t=F.config.flickr.flags.enable_client_fullpath_api?F.config.flickrAPI.flickr_api_uri:"/services/rest/";if(k){t=k+t}s.src="js";s.api_key=global_magisterLudi;s.auth_hash=global_auth_hash;s.auth_token=global_auth_token;s.cb=new Date().getTime();var o=[];var h="";for(var j in s){if(j=="RESTURL"){continue}s[j]=s[j];o.push(j);h+="&"+j+"="+escape_utf8(s[j])}o.sort();var g=global_flickr_secret;if(g!=""&&window.md5_calcMD5){for(var q=0;q<o.length;q++){g+=o[q]+s[o[q]]}g=md5_calcMD5(g);h="api_sig="+g+h}s.RESTURL=h;var n=(n==undefined)?1:n;var a=new XHR();var m={};if(d){F.eb_add(m);m.window_onbeforeunload=function(i){F.eb_remove(m);a.onreadystatechange=function(){};a.abort();if(i&&typeof F.API=="object"){F.API.handleResponse(null,b,s,"Action cancelled by window unload. Try again please!",c)}}}s.timer_index=_page_timer.add("before api call "+s.method);if(a){a.onreadystatechange=function(){if(a.readyState==4){if(a.responseText==""&&n<2){n++;a.abort();F.API.callMethod(b,s,c,e,n,k,d)}else{F.eb_remove(m);if(typeof F.API=="object"){F.API.handleResponse(a.responseXML,b,s,a.responseText,c)}}this.onreadystatechange=null}};if(e){t=e}a.open("POST",t,d);a.withCredentials=true;a.setRequestHeader("Content-Type","application/x-www-form-urlencoded");if(d&&r){if(_qs_args.no_api_debug!="1"){writeAPIDebug("delaying API call "+r+" milliseconds for "+t+"?"+h)}setTimeout(function(){if(_qs_args.no_api_debug!="1"){writeAPIDebug(t+"?"+h)}a.send(h)},r)}else{if(_qs_args.no_api_debug!="1"){writeAPIDebug(t+"?"+h)}a.send(h)}if(!d){this.handleResponse(a.responseXML,b,s,a.responseText,c)}}return a};F.API.getCallBackName=function(a){return a.split(".").join("_")+"_onLoad"};F.API.handleResponse=function(responseXML,APIMethod,params,responseText,listener){if(params.format=="json"){var success=0;var jsonFlickrApi=function(rsp){if(rsp.stat=="ok"){success=1}responseXML=rsp};try{eval(responseText)}catch(e){}}else{if(!responseXML){var success=(responseText.indexOf('<?xml version="1.0" encoding="utf-8" ?>\n<rsp stat="ok">')==0)?true:false}else{if(navigator.userAgent.indexOf("Gecko")>-1&&!F.is_safari){responseXML=F.str_to_XML(responseText)}var success=(responseXML.documentElement&&responseXML.documentElement.getAttribute("stat")=="ok")?true:false}}if(success){if(_qs_args.no_api_debug!="1"){writeAPIDebug(responseText)}}else{writeAPIDebug(responseText+"\r"+_uber_toString(params))}if((window.global_rper&&!success)||_qs_args.rper=="1"){var code="";var msg="";var rsp_str="";if(responseXML&&responseXML.documentElement){if(responseXML.documentElement.getElementsByTagName("err")){var err=responseXML.documentElement.getElementsByTagName("err")[0];if(err){code=err.getAttribute("code");msg=err.getAttribute("msg");rsp_str=responseText}}}F.fragment_getter.get("/report_error.gne",{report:"api_err",json_str:JSON.stringify({req_params:params,success:success,code:code,rsp_str:rsp_str,user_nsid:window.global_nsid,user_name:window.global_name,agent:navigator.userAgent})},{rp:function(){}},"rp")}_page_timer.add("after api call "+params.method);_page_timer.dump(params.timer_index);listener=(listener)?listener:this;if(typeof listener[this.getCallBackName(APIMethod)]=="function"){listener[this.getCallBackName(APIMethod)](success,responseXML,responseText,params)}else{if(typeof listener.generic_api_onLoad=="function"){listener.generic_api_onLoad(success,responseXML,responseText,params)}}};F.fragment_getter={};F.fragment_getter.get=function(b,h,e,c,n,g,k,i){if(typeof h!="object"){h={}}var f=(k)?0:1;var m=b;if(g){m=g+m}if(b&&b.indexOf("?")==-1){var a="?src=js"}else{var a="&src=js"}for(var d in h){a+="&"+d+"="+escape_utf8(h[d])}a+="&cb="+new Date().getTime();h.RESTURL=m+a;var n=(n==undefined)?1:n;var j=new XHR();if(j){j.onreadystatechange=function(){if(j.readyState==4){if(j.responseText==""&&n<1){n++;j.abort();F.fragment_getter.get(b,h,e,c,n,g,k,i)}else{F.fragment_getter.handleResponse(c,h,j.responseText,e)}this.onreadystatechange=null}};var l=a.length>1000||window.page_always_post_fragment_requests;if(l){j.open("POST",m,f)}else{j.open("GET",m+a,f)}j.setRequestHeader("Content-Type","application/x-www-form-urlencoded");if(f&&i){setTimeout(function(){if(l){j.send(a)}else{j.send(null)}},i)}else{if(l){j.send(a)}else{j.send(null)}}}};F.fragment_getter.handleResponse=function(a,e,d,c){c=(c)?c:this;if(_qs_args.no_api_debug!="1"){writeAPIDebug(d)}try{c[a](1,d,e)}catch(b){}};var escape_utf8=function(k){if(k===""||k===null||k===undefined){return""}if(F&&F.config&&F.config.flickr&&F.config.flickr.flags.enable_simple_client_side_utf8_escaping){return encodeURIComponent(k)}k=k.toString();var d="";for(var g=0;g<k.length;g++){var l=k.charCodeAt(g);var f=new Array();if(l>65536){f[0]=240|((l&1835008)>>>18);f[1]=128|((l&258048)>>>12);f[2]=128|((l&4032)>>>6);f[3]=128|(l&63)}else{if(l>2048){f[0]=224|((l&61440)>>>12);f[1]=128|((l&4032)>>>6);f[2]=128|(l&63)}else{if(l>128){f[0]=192|((l&1984)>>>6);f[1]=128|(l&63)}else{f[0]=l}}}if(f.length>1){for(var e=0;e<f.length;e++){var a=f[e];var h=nibble_to_hex((a&240)>>>4)+nibble_to_hex(a&15);d+="%"+h}}else{if(encodeURIComponent&&typeof encodeURIComponent=="function"){d+=encodeURIComponent(String.fromCharCode(f[0]))}else{d+=(String.fromCharCode(f[0]))}}}return d};var nibble_to_hex=function(a){var b="0123456789ABCDEF";return b.charAt(a)};