var _$_controller_prohibit_user=false;
var _$_controller_nonactive_user=false;
var _$_controller_undefined_error_a=false;
var _$_controller_undefined_error_p=false;
var g_album_log_util={
maxLength:50,
logs:[],
browserInfo:window.navigator.userAgent,
clearedCookies:null,
needLog:function(){
var result=UD.hostId==UD.visitorId;
g_album_log_util.needLog=function(){
return result;
}
return g_album_log_util.needLog();
},
addLog:function(){
if(!g_album_log_util.needLog()){
g_album_log_util.addLog=function(){};
return;
}
if(g_album_log_util.logs.length>g_album_log_util.maxLength){
g_album_log_util.logs.shift();
}
g_album_log_util.logs.push(g_album_log_util.getTime()+'\t'+$A(arguments).join('\t')+'\n');
},
getLog:function(){
g_album_log_util.logs.unshift(g_album_log_util.getBasicInfo());
if(g_album_log_util.clearedCookies!=null){
g_album_log_util.logs.unshift(g_album_log_util.getClearedCookies());
}
var result=g_album_log_util.logs.join('|');
g_album_log_util.logs=[];
return result;
},
getBasicInfo:function(){
return'BrowserInfo:'+g_album_log_util.browserInfo+'\n';
},
getClearedCookies:function(){
return'ClearedCookies:'+g_album_log_util.clearedCookies+'\n';
},
getTime:function(){
var d=new Date();
return d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate()+' '+d.getHours()+':'+d.getMinutes()+':'+d.getSeconds()+'.'+d.getMilliseconds();
},
notify163WhenError:function(url){
var headLoc,scriptId,scriptObj;
headLoc=document.getElementsByTagName("head").item(0);
scriptObj=document.createElement("script");
scriptObj.setAttribute("src",url);
headLoc.appendChild(scriptObj);
}
};
var g_album_cookie_util={
reloadCount:0,
g_saveCookieKeys:['JSESSIONID','NTES_UFC','NTESBLOGSI','NTESBLOGMSGSI','NTES_PASSPORT','NEBLOG_LOGIN','NTES_SESS','NETEASE_AUTH_USERNAME','NETEASE_AUTH_SOURCE','ALBUMAPPID','S_INFO','P_INFO'],
get:function(name){
var pattern="(^|;)\\s*"+escape(name)+"=([^;]+)";
var m=document.cookie.match(pattern);
if(m&&m[2]){
return unescape(m[2]);
}else{
return null;
}
},
set:function(name,value,expirationInDays,path,domain){
var cookie=escape(name)+"="+escape(value);
if(expirationInDays){
var date=new Date();
date.setDate(date.getDate()+expirationInDays);
cookie+="; expires="+date.toGMTString();
}
if(path){
cookie+=";path="+path;
}
if(domain){
cookie+=";domain="+domain;
}
document.cookie=cookie;
if(value&&(expirationInDays==undefined||expirationInDays>0)&&!g_album_cookie_util.get(name)){
return false;
}
},
clearMine:function(name){
g_album_cookie_util.set(name,"",-1,'/','163.com');
},
isSaveCookie:function(key){
for(var i=0,l=g_album_cookie_util.g_saveCookieKeys.length;i<l;i++){
if(g_album_cookie_util.g_saveCookieKeys[i]==key)
return true;
}
return false;
},
clearOtherCookie:function(hostName,callback){
if(g_album_controller.getUserSpaceDone){
g_album_controller.getUserSpaceDone=null;
return;
}
var cookieStr='';
for(var i=0,_arr=document.cookie.split(';'),l=_arr.length,_idx,_key;i<l;i++){
_arr[i]=_arr[i].replace(/(?:^\s+)|(?:\s+$)/g,'');
_idx=_arr[i].indexOf('=');
if(_idx!=-1){
_key=_arr[i].substring(0,_idx);
if(!g_album_cookie_util.isSaveCookie(_key)){
cookieStr+=(_key+'='+g_album_cookie_util.get(_key)+';');
g_album_cookie_util.clearMine(_key);
}
}
}
g_album_log_util.clearedCookies=cookieStr;
if(g_album_cookie_util.reloadCount==0){
g_album_cookie_util.reloadCount=1;
g_album_controller.getUserSpace(hostName,callback);
}
}
};
var g_album_controller_w={
iframeLoadStatus:0,
crossdomain:true,
loadIframeCountLimit:20,
retryTime:1000,
setCrossdomain:function(crossdomain){
this.crossdomain=crossdomain;
},
addIframe:function(hostName){
this.iframeLoadStatus=1;
document.domain="163.com";
var _iframe=document.getElementById('photo163Iframe');
if(_iframe==null){
g_album_log_util.addLog(hostName,"load iframe begin");
_iframe=document.createElement('iframe');
_iframe.id='photo163Iframe';
_iframe.name='photo163Iframe';
var visitorName=UD.visitorName||data_map_util.getCookie('NETEASE_AUTH_USERNAME');
if(!visitorName){
_iframe.src='http://photo.163.com/photo/dwrcross/'+hostName+'/';
}else{
_iframe.src='http://photo.163.com/photo/dwrcross/'+hostName+'/?u='+visitorName;
}
isIE?_iframe.onreadystatechange=this.ld_stateChange.bind(this,_iframe)
:_iframe.onload=this.ld_callback.bind(this,_iframe);
_iframe.style.display='none';
document.body.appendChild(_iframe);
}
},
ld_stateChange:function(_iframe){
var _state=_iframe.readyState;
if(_state=='loaded'||_state=='complete'){
this.ld_callback(_iframe);
}
},
ld_callback:function(_iframe){
g_album_log_util.addLog(hostName,"iframe readystate change");
this.iframeLoadStatus=2;
},
isIframeLoadingComplete:function(hostName){
if(this.iframeLoadStatus==0){
this.addIframe(hostName);
return true;
}else if(this.iframeLoadStatus==1){
return true;
}
try{
var result=!window.frames['photo163Iframe']||!window.frames['photo163Iframe'].g_dwrcrossphoto;
if(result==false){
g_album_log_util.addLog(hostName,"load iframe end");
}
return result;
}catch(e){
if(this.loadIframeCountLimit-->=0){
if(this.loadIframeCountLimit==14){
this.notifyLoadIframeFailed(hostName);
}
return true;
}
throw e;
}
},
notifyLoadIframeFailed:function(hostName){
var headLoc,scriptId,scriptObj;
headLoc=document.getElementsByTagName("head").item(0);
scriptObj=document.createElement("script");
scriptObj.setAttribute("src","http://photo.163.com/photo/dwrcross/iframefailedagain.js?h="+hostName+"&domain="+document.domain);
headLoc.appendChild(scriptObj);
},
createAlbum:function(hostName,album,callback){
g_album_controller.getAlbums(hostName,function(albums){
if(albums!=null&&albums.length>=1000){
alert('最多只能创建1000个相册。');
}else{
g_album_controller_w.createAlbum0(hostName,album,callback);
}
});
},
createAlbum0:function(hostName,album,callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.createAlbum.bind(this,hostName,album,callback),this.retryTime);
return;
}
window.frames['photo163Iframe'].g_dwrcrossphoto._$createAlbum(album,function(album){
if(album==null||album.errorType==2){
callback(album);
return;
}
g_album_controller.clearUserSpace(hostName);
NewAlbum.needUpdateModifyTime('CreateAlbum');
callback(data_map_util.getOldAlbum(album));
});
},
deleteAlbum:function(hostName,id,callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.deleteAlbum.bind(this,hostName,id,callback),this.retryTime);
return;
}
g_album_log_util.addLog(hostName,'delete album begin','aid:'+id);
window.frames['photo163Iframe'].g_dwrcrossphoto._$deleteAlbum(id,function(suc){
g_album_log_util.addLog(hostName,'delete album end');
g_album_controller.clearUserSpace(hostName);
NewAlbum.needUpdateModifyTime();
callback(suc);
});
},
deletePhotos:function(hostName,aid,pids,callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.deletePhotos.bind(this,hostName,aid,pids,callback),this.retryTime);
return;
}
g_album_log_util.addLog(hostName,'delete photo begin','aid:'+aid,'pid:'+pids);
window.frames['photo163Iframe'].g_dwrcrossphoto._$deletePhotos(aid,pids,function(album){
g_album_log_util.addLog(hostName,'delete photo end');
g_album_controller.clearUserSpace(hostName);
NewPhoto.needUpdateModifyTime();
callback(data_map_util.getOldAlbum(album));
});
},
movePhotos:function(hostName,pids,srcId,destId,callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.movePhotos.bind(this,hostName,pids,srcId,destId,callback),this.retryTime);
return;
}
window.frames['photo163Iframe'].g_dwrcrossphoto._$movePhotos(pids,srcId,destId,function(albumList){
g_album_controller.clearUserSpace(hostName);
NewPhoto.needUpdateModifyTime();
callback(data_map_util.getOldAlbums(albumList));
});
},
copyPhotos:function(hostName,pids,srcId,destId,callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.copyPhotos.bind(this,hostName,pids,srcId,destId,callback),this.retryTime);
return;
}
window.frames['photo163Iframe'].g_dwrcrossphoto._$copyPhotos(pids,srcId,destId,function(album){
g_album_controller.clearUserSpace(hostName);
NewPhoto.needUpdateModifyTime();
callback(data_map_util.getOldAlbum(album));
});
},
updateAlbumName:function(hostName,_id,_name,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.updateAlbumName.bind(this,hostName,_id,_name,_callback),this.retryTime);
return;
}
g_album_log_util.addLog(hostName,'update album name begin','aid:'+_id);
window.frames['photo163Iframe'].g_dwrcrossphoto._$updateAlbumName(_id,_name,function(album){
if(album==null||album.errorType==2){
_callback(album);
return;
}
g_album_log_util.addLog(hostName,'update album name end','aid:'+_id);
g_album_controller.clearUserSpace(hostName);
NewAlbum.needUpdateModifyTime();
_callback(data_map_util.getOldAlbum(album));
});
},
updateAlbumDesc:function(hostName,_id,_desc,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.updateAlbumDesc.bind(this,hostName,_id,_desc,_callback),this.retryTime);
return;
}
g_album_log_util.addLog(hostName,'update album desc begin','aid:'+_id);
window.frames['photo163Iframe'].g_dwrcrossphoto._$updateAlbumDesc(_id,_desc,function(album){
if(album==null||album.errorType==2){
_callback(album);
return;
}
g_album_log_util.addLog(hostName,'update album desc end','aid:'+_id);
g_album_controller.clearUserSpace(hostName);
NewAlbum.needUpdateModifyTime();
_callback(data_map_util.getOldAlbum(album));
});
},
updateAlbumType:function(hostName,_id,_type,_password,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.updateAlbumType.bind(this,hostName,_id,_type,_password,_callback),this.retryTime);
return;
}
window.frames['photo163Iframe'].g_dwrcrossphoto._$updateAlbumType(_id,_type,_password,function(album){
g_album_controller.clearUserSpace(hostName);
NewAlbum.needUpdateModifyTime();
_callback(data_map_util.getOldAlbum(album));
});
},
updateAlbumCover:function(hostName,_aid,_pid,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.updateAlbumCover.bind(this,hostName,_aid,_pid,_callback),this.retryTime);
return;
}
window.frames['photo163Iframe'].g_dwrcrossphoto._$updateAlbumCover(_aid,_pid,function(album){
g_album_controller.clearUserSpace(hostName);
_callback(data_map_util.getOldAlbum(album));
});
},
changeAlbumSort:function(hostName,_type,_seq,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.changeAlbumSort.bind(this,hostName,_type,_seq,_callback),this.retryTime);
return;
}
window.frames['photo163Iframe'].g_dwrcrossphoto._$changeAlbumSort(_type,_seq,function(suc){
g_album_controller.clearUserSpace(hostName);
_callback(suc);
});
},
changePhotoSort:function(hostName,_id,_type,_seq,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.changePhotoSort.bind(this,hostName,_id,_type,_seq,_callback),this.retryTime);
return;
}
window.frames['photo163Iframe'].g_dwrcrossphoto._$changePhotoSort(_id,_type,_seq,function(suc){
g_album_controller.clearUserSpace(hostName);
_callback(suc);
});
},
updatePhotoDesc:function(hostName,_aid,_pid,_desc,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.updatePhotoDesc.bind(this,hostName,_aid,_pid,_desc,_callback),this.retryTime);
return;
}
g_album_log_util.addLog(hostName,'update photo desc begin','aid:'+_aid,'pid:'+_pid);
window.frames['photo163Iframe'].g_dwrcrossphoto._$updatePhotoDesc(_aid,_pid,_desc,function(photo){
if(photo==null||photo.errorType==2){
_callback(photo);
return;
}
g_album_log_util.addLog(hostName,'update photo desc end','aid:'+_aid,'pid:'+_pid);
g_album_controller.clearUserSpace(hostName);
NewPhoto.needUpdateModifyTime();
g_album_controller.getAlbum(hostName,_aid,function(album){
_callback(data_map_util.getOldPhoto(photo,album));
});
});
},
updatePhotoKeywordPhoto:function(hostName,_aid,_pid,_keyword,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.updatePhotoKeywordPhoto.bind(this,hostName,_aid,_pid,_keyword,_callback),this.retryTime);
return;
}
window.frames['photo163Iframe'].g_dwrcrossphoto._$updatePhotoKeyword(_aid,_pid,_keyword,function(photo){
g_album_controller.clearUserSpace(hostName);
g_album_controller.getAlbum(hostName,_aid,function(album){
_callback(data_map_util.getOldPhoto(photo,album));
});
});
},
getAvatar:function(avatar){
if(avatar==null||avatar=='-1000'){
return'';
}
return avatar;
},
createAlbumCom:function(hostName,_id,_content,_visitName,_visitNickName,_visitAvatar,replyToUserName,_valCode,_callback){
this.createAlbumComEx(hostName,_id,_content,_visitName,_visitNickName,_visitAvatar,1,"",replyToUserName,_valCode,_callback)
},
createCircleAlbumCom:function(hostName,_id,_content,_visitName,_visitNickName,_visitAvatar,replyToUserName,circleName,circleUrlName,_valCode,_callback){
var dataEx=circleName+";"+circleUrlName;
this.createAlbumComEx(hostName,_id,_content,_visitName,_visitNickName,_visitAvatar,2,dataEx,replyToUserName,_valCode,_callback)
},
createAlbumComEx:function(hostName,_id,_content,_visitName,_visitNickName,_visitAvatar,_reviewerType,_dataEx,replyToUserName,_valCode,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.createAlbumComEx.bind(this,hostName,_id,_content,_visitName,_visitNickName,_visitAvatar,_reviewerType,_dataEx,replyToUserName,_valCode,_callback),this.retryTime);
return;
}
_visitAvatar=this.getAvatar(_visitAvatar);
if(_valCode==-1){
window.frames['photo163Iframe'].g_dwrcrossphoto._$createAlbumCom(_id,_content,_visitName,_visitNickName,_visitAvatar,_reviewerType,_dataEx,replyToUserName,function(comm){
if(comm==null||comm.errorType>0){
_callback(comm);
return;
}
NewAlbum.monitorAlbumCommCreate();
_callback(data_map_util.getOldComm(comm));
});
}else{
window.frames['photo163Iframe'].g_dwrcrossphoto._$createAlbumComAnonymous(_id,_content,_visitName,_visitNickName,_visitAvatar,_reviewerType,_dataEx,replyToUserName,_valCode,function(comm){
if(comm==null||comm.errorType>0){
_callback(comm);
return;
}
NewAlbum.monitorAlbumCommCreate();
_callback(data_map_util.getOldComm(comm));
});
}
},
createPhotoCom:function(hostName,_aid,_pid,_content,_visitName,_visitNickName,_visitAvatar,replyToUserName,_valCode,_callback){
this.createPhotoComEx(hostName,_aid,_pid,_content,_visitName,_visitNickName,_visitAvatar,1,"",replyToUserName,_valCode,_callback);
},
createCirclePhotoCom:function(hostName,_aid,_pid,_content,_visitName,_visitNickName,_visitAvatar,replyToUserName,circleName,circleUrlName,_valCode,_callback){
var dataEx=circleName+";"+circleUrlName;
this.createPhotoComEx(hostName,_aid,_pid,_content,_visitName,_visitNickName,_visitAvatar,2,dataEx,replyToUserName,_valCode,_callback);
},
createPhotoComEx:function(hostName,_aid,_pid,_content,_visitName,_visitNickName,_visitAvatar,_reviewerType,_dataEx,replyToUserName,_valCode,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.createPhotoComEx.bind(this,hostName,_aid,_pid,_content,_visitName,_visitNickName,_visitAvatar,_reviewerType,_dataEx,replyToUserName,_valCode,_callback),this.retryTime);
return;
}
_visitAvatar=this.getAvatar(_visitAvatar);
if(_valCode==-1){
window.frames['photo163Iframe'].g_dwrcrossphoto._$createPhotoCom(_aid,_pid,_content,_visitName,_visitNickName,_visitAvatar,_reviewerType,_dataEx,replyToUserName,function(comm){
if(comm==null||comm.errorType>0){
_callback(comm);
return;
}
_callback(data_map_util.getOldComm(comm));
});
}else{
window.frames['photo163Iframe'].g_dwrcrossphoto._$createPhotoComAnonymous(_aid,_pid,_content,_visitName,_visitNickName,_visitAvatar,_reviewerType,_dataEx,replyToUserName,_valCode,function(comm){
if(comm==null||comm.errorType>0){
_callback(comm);
return;
}
_callback(data_map_util.getOldComm(comm));
});
}
},
deleteAlbumCom:function(hostName,_aid,_cids,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.deleteAlbumCom.bind(this,hostName,_aid,_cids,_callback),this.retryTime);
return;
}
window.frames['photo163Iframe'].g_dwrcrossphoto._$deleteAlbumCom(_aid,_cids,function(success){
if(success)
g_album_controller.clearUserSpace(hostName);
_callback(success);
});
},
deletePhotoCom:function(hostName,_aid,_pid,_cids,_callback){
if(this.isIframeLoadingComplete(hostName)){
setTimeout(this.deletePhotoCom.bind(this,hostName,_aid,_pid,_cids,_callback),this.retryTime);
return;
}
window.frames['photo163Iframe'].g_dwrcrossphoto._$deletePhotoCom(_aid,_pid,_cids,function(success){
if(success)
g_album_controller.clearUserSpace(hostName);
_callback(success);
});
}
}
var g_album_controller={
getVisitorName:function(){
var visitorName=UD.visitorName||data_map_util.getCookie('NETEASE_AUTH_USERNAME')||'';
g_album_controller.getVisitorName=function(){
return visitorName;
}
return g_album_controller.getVisitorName();
},
userSpaces:{},
privacyMap:{
0:-100,
1:9000,
2:10000,
4:100
},
getUserSpace:function(hostName,callback){
if(this.userSpaces[hostName]!=null){
callback(this.userSpaces[hostName]);
return;
}
g_album_log_util.addLog(hostName,'getUserSpace begin');
window.setTimeout(function(){
g_album_cookie_util.clearOtherCookie(hostName,callback);
},5000);
window.setTimeout(function(){
if(!g_album_controller.userspaceReturned){
var v=g_album_controller.getVisitorName();
var owner=(v==hostName)?'&owner':'';
g_album_log_util.notify163WhenError("http://photo.163.com/photo/dwrcross/userSpaceError.js/?u="+hostName+owner);
if(v==hostName){
var photo_content=$('_$_photo_list_content');
if(photo_content!=null&&photo_content.innerHTML=='数据加载中...'){
photo_content.innerHTML='数据加载中...<br>如果长时间没有加载成功，请向我们<a style="color:#0000FF;line-height:25px;text-decoration:underline;" href="#" onclick="showFeedbackDialog(1);return false;">反馈</a>';
}
}
}
},12000);
Photo163.getUserSpace(hostName,this.getVisitorName(),function(user){
this.userspaceReturned=true;
this.getUserSpaceDone=true;
g_album_log_util.addLog(hostName,'getUserSpace end','cacheUrl:'+(user&&user.cacheFileUrl));
if(user!=null){
if(user.userType==-1){
_$_controller_prohibit_user=true;
if(UD.visitorRank==10000){
this.getUserSpaceWithSec(hostName,function(user){
this.getUserSpaceCb(user,hostName,callback);
}.bind(this));
}else{
this.getUserSpaceCb(null,hostName,callback);
}
}else{
this.getUserSpaceCb(user,hostName,callback);
}
}else{
if(UD.visitorRank==10000){
this.getUserSpaceWithSec(hostName,function(user){
this.getUserSpaceCb(user,hostName,callback);
}.bind(this));
}else{
_$_controller_nonactive_user=true;
this.getUserSpaceCb(user,hostName,callback);
}
}
}.bind(this));
},
getUserSpaceCb:function(user,hostName,callback){
if(!!user){
user.cacheFileUrl="http://"+user.cacheFileUrl;
this.userSpaces[hostName]=user;
callback(user);
}else{
callback(null);
}
},
clearUserSpace:function(hostName){
this.userSpaces[hostName]=null;
},
getpurlOfAlbum:function(hostName,album,callback){
var b=(!!album.id)&&(!album.purl);
if(b){
this.getPhotoIndexUrl(hostName,album.id,album.modifyTime,function(purl){
if(!!purl){
album.purl="http://"+purl;
album.album.purl=purl;
}
callback(album);
});
}else{
callback(album);
}
},
getVisiblePhotoCount:function(hostName,callback){
this.getAlbums(hostName,function(albumList){
albumList=this.getVisibleAlbumList(albumList);
var count=0;
albumList.each(function(item){
count+=item.photoCount;
});
callback(count);
}.bind(this));
},
getAlbum:function(hostName,albumId,callback){
this.getUserSpace(hostName,function(userSpace){
if(!userSpace){
callback({});
}
LD.dynamicLoadJS(userSpace.cacheFileUrl,function(){
var albumList=this.getAlbumListFromJS(userSpace);
var album=this.getAlbumFromList(albumList,albumId);
callback(data_map_util.getOldAlbum(album));
}.bind(this));
}.bind(this));
},
getAlbumRankStr:function(hostName,albumId,callback){
this.getUserSpace(hostName,function(userSpace){
if(!userSpace){
callback("未知");
}
LD.dynamicLoadJS(userSpace.cacheFileUrl,function(){
var albumList=this.getAlbumListFromJS(userSpace);
var album=this.getAlbumFromList(albumList,albumId);
return callback(data_map_util.getRankString(album.au));
}.bind(this));
}.bind(this));
},
getAlbums:function(hostName,callback){
this.getUserSpace(hostName,function(userSpace){
if(!userSpace){
callback([]);
}
LD.dynamicLoadJS(userSpace.cacheFileUrl,function(){
var albumList=this.getAlbumListFromJS(userSpace);
callback(data_map_util.getOldAlbums(albumList));
}.bind(this));
}.bind(this));
},
getPhoto:function(hostName,albumId,photoId,callback){
this.getAlbum(hostName,albumId,function(album){
this.getPhotoCb(hostName,photoId,album,callback);
}.bind(this));
},
getPhotoCb:function(hostName,photoId,album,callback){
this.getpurlOfAlbum(hostName,album,function(retAlbum){
if(!retAlbum.purl){
callback({});
return;
}
LD.dynamicLoadJS(retAlbum.purl,function(){
var photoList=this.getPhotoListFromJS(retAlbum);
var photo=this.getPhotoFromList(photoList,photoId);
callback(data_map_util.getOldPhoto(photo,retAlbum));
}.bind(this),{type:1,albumId:album.id});
}.bind(this));
},
getCommentsInAlbum:function(hostName,albumId,limit,offset,callback){
this.getAlbum(hostName,albumId,function(album){
if(!album.comm){
callback([]);
}
LD.dynamicLoadJS(album.comm,function(){
var commList=this.getAlbumCommFromJS(album.id);
callback(data_map_util.getOldComms(commList.slice(offset,offset+limit)));
}.bind(this),{type:2,albumId:albumId});
}.bind(this));
},
getCommentsInPhoto:function(hostName,albumId,photoId,limit,offset,callback){
this.getPhoto(hostName,albumId,photoId,function(photo){
if(!photo.comm){
callback([]);
}
LD.dynamicLoadJS(photo.comm,function(){
var commList=this.getPhotoCommFromJS(photo.id);
callback(data_map_util.getOldComms(commList.slice(offset,offset+limit)));
}.bind(this),{type:3,albumId:albumId,photoId:photoId});
}.bind(this));
},
getAllPhotosInAlbum:function(hostName,albumId,callback){
this.getAlbum(hostName,albumId,function(album){
this.getAllPhotosInAlbumCb(hostName,album,callback);
}.bind(this));
},
getAllPhotosInAlbumCb:function(hostName,album,callback){
this.getpurlOfAlbum(hostName,album,function(retAlbum){
if(!retAlbum.purl){
callback([]);
return;
}
LD.dynamicLoadJS(retAlbum.purl,function(){
var photoList=this.getPhotoListFromJS(retAlbum);
callback(data_map_util.getOldPhotos(photoList,retAlbum));
}.bind(this),{type:1,albumId:album.id});
}.bind(this));
},
getPhotosInAlbumByLimitOffset:function(hostName,albumId,limit,offset,callback){
this.getAlbum(hostName,albumId,function(album){
this.getPhotosInAlbumCb(hostName,album,limit,offset,callback);
}.bind(this));
},
getPhotosInAlbumCb:function(hostName,album,limit,offset,callback){
this.getpurlOfAlbum(hostName,album,function(retAlbum){
if(!retAlbum.purl){
callback([]);
return;
}
if(offset==0){
g_album_log_util.addLog(hostName,'getPhotos begin','aid:'+album.id,'purl:'+retAlbum.purl);
}
LD.dynamicLoadJS(retAlbum.purl,function(){
if(offset==0){
g_album_log_util.addLog(hostName,'getPhotos end','aid:'+album.id);
}
var photoList=this.getPhotoListFromJS(retAlbum);
callback(data_map_util.getOldPhotos(photoList.slice(offset,offset+limit),retAlbum));
}.bind(this),{type:1,albumId:album.id});
}.bind(this));
},
getPhotosInAlbum:function(hostName,albumId,photoId,preLimit,nextLimit,callback){
if(preLimit==0&&nextLimit==0){
callback([]);
return;
}
this.getAlbum(hostName,albumId,function(album){
this.getpurlOfAlbum(hostName,album,function(retAlbum){
LD.dynamicLoadJS(retAlbum.purl,function(){
var photoList=this.getPhotoListFromJS(retAlbum);
var photo=this.getPhotoFromList(photoList,photoId);
if(photo==null){
return;
}
var count=photoList.length;
var index=photoList.indexOf(photo);
var prePart=[];
var nextPart=[];
if(preLimit>0){
var start=index-preLimit;
if(start<0){
start=0;
}
prePart=photoList.slice(start,index);
}
if(nextLimit>0){
var end=index+nextLimit+1;
if(end>=count){
end=count;
}
nextPart=photoList.slice(index+1,end);
}
if(preLimit>0&&nextLimit>0){
photoList=prePart.concat([photo],nextPart);
}else{
photoList=prePart.concat(nextPart);
}
callback(data_map_util.getOldPhotos(photoList,album));
}.bind(this),{type:1,albumId:retAlbum.id});
}.bind(this));
}.bind(this));
},
getVisibleAlbumList:function(albumList){
if(UD.visitorRank==10000){
return albumList;
}else if(UD.visitorRank==100){
var ret=[];
albumList.each(function(item){
if(item.au==0||item.au==4||!!item.purl){
ret.push(item);
}
});
return ret;
}else{
var ret=[];
albumList.each(function(item){
if(item.au==0||!!item.purl){
ret.push(item);
}
});
return ret;
}
},
getPhotosInUserByLimitOffset:function(hostName,limit,offset,callback){
if(limit<=0||offset<0){
return;
}
this.getAlbums(hostName,function(albumList){
var startAlbumIndex=-1;
albumList=this.getVisibleAlbumList(albumList);
for(var i=0;i<albumList.length;i++){
if(offset<albumList[i].photoCount){
startAlbumIndex=i;
break;
}else{
offset-=albumList[i].photoCount;
}
}
if(startAlbumIndex>=0){
this.addPhotosToList(hostName,albumList,startAlbumIndex,[],offset+limit,function(photoList){
callback(photoList.slice(offset,offset+limit));
});
}else{
callback([]);
}
}.bind(this));
},
addPhotosToList:function(hostName,albumList,index,photoList,limit,callback){
if(index>=albumList.length){
callback(photoList);
return;
}
var album=albumList[index];
this.getpurlOfAlbum(hostName,album,function(retAlbum){
if(!retAlbum.purl){
this.addPhotosToList(hostName,albumList,index+1,photoList,limit,callback);
return;
}
LD.dynamicLoadJS(retAlbum.purl,function(){
var list=this.getPhotoListFromJS(retAlbum);
photoList=photoList.concat(data_map_util.getOldPhotos(list,retAlbum));
if(photoList.length<limit){
this.addPhotosToList(hostName,albumList,index+1,photoList,limit,callback);
}else{
callback(photoList);
}
}.bind(this),{type:1,albumId:retAlbum.id});
}.bind(this));
},
getPhotosInUser:function(hostName,albumId,photoId,preLimit,nextLimit,callback){
if(preLimit==0&&nextLimit==0){
callback([]);
return;
}
this.getAlbums(hostName,function(albumList){
var album=this.getAlbumFromList(albumList,albumId);
this.getpurlOfAlbum(hostName,album,function(retAlbum){
if(!retAlbum.purl){
callback([]);
return;
}
LD.dynamicLoadJS(retAlbum.purl,function(){
var photoList=this.getPhotoListFromJS(retAlbum);
var photo=this.getPhotoFromList(photoList,photoId);
if(photo==null){
return;
}
albumList=this.getVisibleAlbumList(albumList);
var index=photoList.indexOf(photo);
var albumIndex=-1;
for(var i=0;i<albumList.length;i++){
if(albumList[i].id==retAlbum.id){
albumIndex=i;
break;
}
}
if(albumIndex<0){
return;
}
var offset=0;
var limit=preLimit;
if(preLimit==0){
offset=index+1;
}else if(index>=preLimit){
offset=index-preLimit;
}else{
preLimit-=index;
for(var i=albumIndex-1;i>=0;i--){
if(preLimit<albumList[i].photoCount){
albumIndex=i;
offset=albumList[i].photoCount-preLimit;
preLimit=0;
break;
}else if(albumList[i].photoCount>0){
albumIndex=i;
preLimit-=albumList[i].photoCount;
}
}
limit-=preLimit;
}
if(nextLimit>0&&limit>0){
limit+=nextLimit+1;
}else{
limit+=nextLimit;
}
this.addPhotosToList(hostName,albumList,albumIndex,[],offset+limit,function(photoList){
callback(photoList.slice(offset,offset+limit));
});
}.bind(this),{type:1,albumId:retAlbum.id});
}.bind(this));
}.bind(this));
},
getPhotoListFromJS:function(album){
var photoListkey='g_p$'+album.id+'d';
if(typeof window[photoListkey]=='undefined'){
_$_controller_undefined_error_p=true;
g_album_log_util.addLog(photoListkey+" is undefined");
var user=UD.hostName?UD.hostName:"";
g_album_log_util.notify163WhenError("http://photo.163.com/photo/dwrcross/undefinedError.js/?u="+user+"&purl="+album.purl);
}else{
_$_controller_undefined_error_p=false;
}
var photoList=window[photoListkey]||[];
if(photoList.length==0){
return[];
}
if(album.photoCount!=photoList.length){
g_album_log_util.addLog(album.id,"photo count:"+album.photoCount+",count:"+photoList.length);
}
var sortKey='g_p$'+album.id+'s';
var retList=[].concat(photoList);
var sortedList=this.sortList(retList,album.seqType,sortKey,1);
if(album.photoCount!=sortedList.length){
g_album_log_util.addLog(album.id,"photo count:"+album.photoCount+",sorted count:"+sortedList.length);
}
return sortedList;
},
getAlbumListFromJS:function(userSpace){
var albumListkey='g_a$'+userSpace.userId+'d';
if(typeof window[albumListkey]=='undefined'){
_$_controller_undefined_error_a=true;
g_album_log_util.addLog(albumListkey+" is undefined");
var user=UD.hostName?UD.hostName:userSpace.userId;
g_album_log_util.notify163WhenError("http://photo.163.com/photo/dwrcross/undefinedError.js/?u="+user+"&cacheUrl="+userSpace.cacheFileUrl);
}else{
_$_controller_undefined_error_a=false;
}
var albumList=window[albumListkey]||[];
if(albumList.length==0){
return[];
}
if(userSpace.albumCount!=albumList.length){
g_album_log_util.addLog("album count in userspace:"+userSpace.albumCount+",count:"+albumList.length);
}
var sortKey='g_a$'+userSpace.userId+'s';
var retList=[].concat(albumList);
var sortedList=this.sortList(retList,userSpace.seqType,sortKey,0);
if(userSpace.albumCount!=sortedList.length){
g_album_log_util.addLog("album count in userspace:"+userSpace.albumCount+",sorted count:"+sortedList.length);
}
return sortedList;
},
sortList:function(list,seqType,sortKey,apType){
switch(seqType){
case 0:
list.sort(function(val1,val2){
return val1.t-val2.t;
});
break;
case 1:
list.sort(function(val1,val2){
return val2.t-val1.t;
});
break;
case 2:
if(apType==0){
list.sort(function(val1,val2){
return val1.count-val2.count;
});
}
break;
case 3:
if(apType==0){
list.sort(function(val1,val2){
return val2.count-val1.count;
});
}
break;
case 4:
if(apType==0){
list.sort(function(val1,val2){
return val1.name.localeCompare(val2.name);
});
}else if(apType==1){
list.sort(function(val1,val2){
return val1.desc.localeCompare(val2.desc);
});
}
break;
case 5:
if(apType==0){
list.sort(function(val1,val2){
return val2.name.localeCompare(val1.name);
});
}else if(apType==1){
list.sort(function(val1,val2){
return val2.desc.localeCompare(val1.desc);
});
}
break;
case 6:
if(apType==0){
list.sort(function(val1,val2){
return val1.ut-val2.ut;
});
}
break;
case 7:
if(apType==0){
list.sort(function(val1,val2){
return val2.ut-val1.ut;
});
}
break;
case 8:
var _hash={};
var ids=window[sortKey].split(';')||[];
list.each(function(item){
_hash[item.id]=item;
ids.push(item.id);
});
var ret=[];
ids.find(function(id){
if(_hash[id]!=null){
ret.push(_hash[id]);
if(ret.length>=list.length){
return true;
}
_hash[id]=null;
}
});
list=ret;
break;
}
return list;
},
getAlbumCommFromJS:function(albumId){
var _key='g_ac$'+albumId+'d';
return window[_key]||[];
},
getPhotoCommFromJS:function(photoId){
var _key='g_pc$'+photoId+'d';
return window[_key]||[];
},
getPhotoFromList:function(photoList,photoId){
return photoList.find(function(item){
if(item.id==photoId){
return true;
}
});
},
getAlbumFromList:function(albumList,albumId){
return albumList.find(function(item){
if(item.id==albumId){
return true;
}
});
},
getAlbumWithPassword:function(hostName,album,password,callback){
this.checkAlbumPassword(hostName,album.id,password,'fromblog',album.modifyTime,function(purl){
if(purl){
album.purl="http://"+purl;
}
callback(album);
});
},
getAlbumsInSession:function(hostName,callback){
Photo163.getAlbumData4PwdInSession(hostName,this.getVisitorName(),callback).bind(this);
},
checkAlbumPassword:function(hostName,_id,_password,_key,_modifyTime,_callback){
g_album_log_util.addLog(hostName,"getAlbumData begin",'aid:'+_id);
Photo163.getAlbumData(hostName,this.getVisitorName(),_id,_password,_key,_modifyTime,function(purl){
g_album_log_util.addLog(hostName,"getAlbumData end",'aid:'+_id,'purl:'+purl);
_callback(purl);
});
},
getPhotoIndexUrl:function(hostName,_id,_modifyTime,_callback){
this.checkAlbumPassword(hostName,_id,'','fromblog',_modifyTime,_callback);
},
getUserSpaceWithSec:function(hostName,_callback){
Photo163.getUserSpaceWithSec(hostName,this.getVisitorName(),_callback).bind(this);
},
getPhotoFav:function(hostName,apUserName,albumId,photoId,callback){
this.getAlbum(apUserName,albumId,function(album){
this.getPhotoFavCb(hostName,apUserName,photoId,album,callback);
}.bind(this));
},
getPhotoFavCb:function(hostName,apUserName,photoId,album,callback){
this.getpurlOfAlbumFav(hostName,apUserName,album,function(retAlbum){
if(!retAlbum.purl){
callback({});
return;
}
LD.dynamicLoadJS(retAlbum.purl,function(){
var photoList=this.getPhotoListFromJS(retAlbum);
var photo=this.getPhotoFromList(photoList,photoId);
callback(data_map_util.getOldPhoto(photo,retAlbum));
}.bind(this),{type:1,albumId:retAlbum.id});
}.bind(this));
},
getpurlOfAlbumFav:function(hostName,apUserName,album,_callback){
Photo163.getAlbumData4Fav(hostName,this.getVisitorName(),album.id,apUserName,function(purl){
if(purl){
album.purl="http://"+purl;
}
_callback(album);
});
}
}
var data_map_util={
completeURL:function(url,s){
if(url==null||url.indexOf("http")>=0){
return url;
}
var _tmp0=/^(.*?)\//,_tmp1='http://img$1.'+(s==3?'ph':'bimg')+'.126.net/';
if(url){
return url.replace(_tmp0,_tmp1);
}
},
setWidthAndHeight:function(originWidth,originHeight,width,height){
if(originWidth<=width&&originHeight<=height){
return[originWidth,originHeight];
}
if((originWidth/width)>=(originHeight/height)){
return[width,Math.floor(originHeight*width/originWidth)];
}else{
return[Math.floor(originWidth*height/originHeight),height];
}
},
setMediumWidthAndHeight:function(originWidth,originHeight){
var width=600.0,height=750.0;
return this.setWidthAndHeight(originWidth,originHeight,width,height);
},
setSmallWidthAndHeight:function(originWidth,originHeight){
var width=240.0,height=240.0;
return this.setWidthAndHeight(originWidth,originHeight,width,height);
},
getOldPhoto:function(photo,album){
var oldPhoto={};
if(!!photo){
var size=this.setMediumWidthAndHeight(photo.ow,photo.oh);
var smallSize=this.setSmallWidthAndHeight(photo.ow,photo.oh);
oldPhoto.id=photo.id;
oldPhoto.mediumUrl=this.completeURL(photo.murl,photo.s);
oldPhoto.smallWidth=smallSize[0];
oldPhoto.smallHeight=smallSize[1];
oldPhoto.mediumWidth=size[0];
oldPhoto.mediumHeight=size[1];
oldPhoto.originWidth=photo.ow;
oldPhoto.originHeight=photo.oh;
oldPhoto.smallUrl=this.completeURL(photo.surl,photo.s);
oldPhoto.url=this.completeURL(photo.ourl,photo.s);
oldPhoto.squareUrl=this.completeURL(photo.qurl,photo.s);
oldPhoto.timeStamp=photo.t;
oldPhoto.createTime=photo.t;
oldPhoto.photoName=photo.desc;
oldPhoto.description=photo.desc;
oldPhoto.commentCount=photo.comnum;
if(!!photo.comm){
oldPhoto.comm="http://"+photo.comm;
}else{
oldPhoto.comm='';
}
oldPhoto.tag=photo.kw;
oldPhoto.storeType=photo.s;
}
if(!!album){
oldPhoto.albumId=album.id;
oldPhoto.albumName=album.albumName;
oldPhoto.albumCount=1;
oldPhoto.hasPassword=album.hasPassword;
oldPhoto.au=album.au;
oldPhoto.privacy=g_album_controller.privacyMap[album.au];
}
return oldPhoto;
},
getOldPhotos:function(photoList,album){
var oldPhotoList=[];
photoList.each(function(item){
oldPhotoList.push(data_map_util.getOldPhoto(item,album));
});
return oldPhotoList;
},
getOldAlbum:function(album){
var oldAlbum={};
if(!!album){
oldAlbum.id=album.id;
oldAlbum.albumName=album.name;
oldAlbum.albumDescription=album.desc;
oldAlbum.friendPhotoCount=album.count;
oldAlbum.pwdFriendPhotoCount=album.count;
oldAlbum.guestPhotoCount=album.count;
oldAlbum.pwdGuestPhotoCount=album.count;
oldAlbum.au=album.au;
if(!!album.purl){
oldAlbum.purl="http://"+album.purl;
}else{
oldAlbum.purl='';
}
if(!!album.comm){
oldAlbum.comm="http://"+album.comm;
}else{
oldAlbum.comm='';
}
oldAlbum.photoCount=album.count;
oldAlbum.seqType=album.st;
oldAlbum.coverPhUrl=this.completeURL(album.surl,album.s);
oldAlbum.hasPassword=(album.au==1?1:0);
oldAlbum.checkPassword=(album.au==1?0:1);
oldAlbum.createTime=album.t;
oldAlbum.modifyTime=album.dmt;
if(!!album.comnum){
oldAlbum.commentCount=album.comnum;
}else{
oldAlbum.commentCount=0;
}
oldAlbum.album=album;
oldAlbum.rankStr=this.getRankString(album.au);
}
return oldAlbum;
},
getOldAlbums:function(albumList){
var oldAlbumList=[];
if(albumList!=null){
for(var i=0;i<albumList.length;i++){
oldAlbumList.push(data_map_util.getOldAlbum(albumList[i]));
}
}
return oldAlbumList;
},
getAlbumString:function(album){
var t=[];
t.push(album.id);
t.push(album.photoCount);
t.push('['+album.albumName+']');
t.push(album.au);
return t.join('&!&')+'&!&#';
},
getAlbumListString:function(albumList){
var tList=[];
if(albumList!=null){
albumList.each(function(item){
tList.push(data_map_util.getAlbumString(item));
});
}
return tList.join('&!&');
},
getOldComm:function(comm){
var oldComm={};
if(!!comm){
oldComm.id=comm.id;
if(!!comm.con)
oldComm.content=comm.con.replace(/\r\n/g,'<br>');
oldComm.publishTime=comm.t;
oldComm.publisherName=comm.runame;
if(!comm.rnname){
oldComm.publisherNickname=comm.runame;
}else{
oldComm.publisherNickname=comm.rnname;
}
if(!comm.rav){
oldComm.publisherAvatar="http://b.bst.126.net/style/common/user_default.gif";
}else{
oldComm.publisherAvatar=comm.rav;
}
oldComm.publisherAvatarUrl=oldComm.publisherAvatar;
oldComm.rtype=comm.rtype;
if(!comm.ip){
oldComm.ip="";
}else{
oldComm.ip=comm.ip;
}
if(!comm.ipname){
oldComm.ipName="";
}else{
oldComm.ipName=comm.ipname;
}
if(!!comm.dataex){
var dataExs=comm.dataex.split(';')||[];
if(dataExs.length>=2){
oldComm.CircleName=dataExs[0];
oldComm.CircleUrlName=dataExs[1];
}
}
oldComm.valcode=comm.valcode===false?false:true;
}
return oldComm;
},
getOldComms:function(comms){
var oldComms=[];
comms.each(function(item){
oldComms.push(data_map_util.getOldComm(item));
});
return oldComms;
},
getRankString:function(au){
switch(au){
case 0:return"公开";
case 1:return"加密";
case 2:return"私密";
case 4:return"博友可见";
default:return"未知";
}
},
getCookie:function(c_name){
if(document.cookie.length>0){
c_start=document.cookie.indexOf(c_name+"=");
if(c_start!=-1){
c_start=c_start+c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if(c_end==-1)
c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return"";
}
}
var LD={
count:0,
pool:{},
urls:{},
dynamicLoadJS:function(_url,_callback,errArg){
if(!_url){
_callback();
return;
}
if(this.urls[_url]==null){
if(this.pool[_url]!=null){
this.pool[_url].callbacks.push(_callback);
return;
}
var _script=document.createElement('script');
_script.type='text/javascript';
_script.charset='gbk';
isIE?_script.onreadystatechange=this.dynamicLoadJS_StateChange.bind(this,_url,_callback,errArg)
:_script.onload=this.dynamicLoadJS_Callback.bind(this,_url);
_script.onerror=function(){
this.pool[_url]=null;
if(errArg!=null){
this.reloadData(errArg,_callback);
}else{
_callback();
}
}.bind(this);
this.pool[_url]={script:_script,callbacks:[_callback]};
if(_url!=''){
_script.src=_url;
}
document.getElementsByTagName('head')[0].appendChild(_script);
}else{
_callback();
}
},
dynamicLoadJS_StateChange:function(_url,_callback,errArg){
var _obj=this.pool[_url],
_state=_obj.script.readyState;
if(_state=='loaded'||_state=='complete'){
if(errArg!=null&&this.is404Response(errArg)){
this.pool[_url]=null;
this.reloadData(errArg,_callback);
}else{
setTimeout(function(){LD.dynamicLoadJS_Callback(_url);},0);
}
}
},
dynamicLoadJS_Callback:function(_url){
var _obj=this.pool[_url];
this.urls[_url]=1;
_obj.callbacks.each(function(callback){
try{
callback();
}catch(ex){}
});
},
is404Response:function(errArg){
switch(errArg.type){
case 1:
return typeof window['g_p$'+errArg.albumId+'d']=='undefined'?true:false;
case 2:
return typeof window['g_ac$'+errArg.albumId+'d']=='undefined'?true:false;
case 3:
return typeof window['g_pc$'+errArg.photoId+'d']=='undefined'?true:false;
default:return false;
}
},
reloadData:function(errArg,_callback){
switch(errArg.type){
case 1:
Photo163.reloadAlbumData(hostName,g_album_controller.getVisitorName(),errArg.albumId,function(url){
LD.dynamicLoadJS("http://"+url,_callback);
});
break;
case 2:
Photo163.reloadCommentsInAlbum(hostName,g_album_controller.getVisitorName(),errArg.albumId,g_album_controller.userSpaces[hostName].userId,function(album){
LD.dynamicLoadJS("http://"+album.comm,_callback);
});
break;
case 3:
Photo163.reloadCommentsInPhoto(hostName,g_album_controller.getVisitorName(),errArg.albumId,errArg.photoId,g_album_controller.userSpaces[hostName].userId,function(photo){
LD.dynamicLoadJS("http://"+photo.comm,_callback);
});
break;
default:_callback();
}
}
};
var isHomepage;
var hostName;
var photoModuleUrl;
var albumModuleId=4;
try{
if(!!initParas){
var paras=initParas[albumModuleId][initParas[albumModuleId].length-1];
isHomepage=paras.isHomepage;
hostName=paras.hostName;
photoModuleUrl=paras.newPhotoModuleUrl;
}else{
isHomepage=false;
}
}catch(ex){
isHomepage=false;
}
var isIE;
if(!isIE){
isIE=(navigator.appVersion.indexOf("MSIE")!=-1)?true:false;
}
initNewPhotoModule(hostName);
function initNewPhotoModule(hostName){
if(isHomepage&&typeof UD!='undefined'&&UD.migStat==3){
g_album_controller.getAlbums(hostName,function(albumList){
if(albumList==null||albumList.length==0){
initAlbumListPage([]);
initEBDPlayer(null);
}
var album,albums=[];
if(UD.hostId==UD.visitorId){
albums=albumList;
album=albums.find(function(item){
if(item.photoCount>0){
return true;
}
});
}else{
albumList.each(function(album){
if((album.au==4&&UD.visitorRank>=100)||album.au==0){
albums.push(album);
}
});
album=albums.find(function(item){
if(item.photoCount>0&&item.au==0){
return true;
}
});
}
if(typeof album=='undefined'||album==null){
initAlbumListPage([]);
initEBDPlayer(null);
return;
}
g_album_controller.getPhotosInAlbumCb(hostName,album,50,0,function(photoList){
UD.photos=photoList;
initAlbumListPage(albums);
initEBDPlayer(album.id);
});
});
}
}