Вход Регистрация
Файл: js/al/photoview.js
Строк: 3079
<?php
var Photoview = {
  
blank'/images/blank.gif',
  
blankf: function() {},
  
cacheSize3,
  
allSizes: ['x''y''z'/*, 'w'*/],
  
genUrl: function(baseadd) {
    if (!
add.match(/.[a-z]{3}$/i)) add += '.jpg';
    if (
add.match(/https?:///i)) return add;
    
return (base || '').replace(//[a-z0-9_:.]*$/i, '') + '/' + add;
  
},
  
genData: function(phsize) {
    var 
= (size == 'x') ? : ((size == 'y') ? : ((size == 'z') ? 0)), = ['w''z''y''x'].slice(f), dsil;
    for (
0f; ++i) {
      
c[i];
      if (
ph['_']) break;
      if (
ph['_src']) break;
    }
    if (!
d= [s];
    return {
srcPhotoview.genUrl(ph.based[0]), widthd[2] && d[1], heightd[1] && d[2]};
  },

  
updateArrows: function() {
    var 
sbw sbWidth() + 2;
    if (
cur.pvLeft) {
      
cur.pvLeft.style.left '20px';//(Math.floor((lastWindowWidth - sbw - cur.pvActualWidth - 52) / 2) - 39) + 'px';
    
}
    
cur.pvLeftNav.style.width Math.floor((lastWindowWidth sbw cur.pvActualWidth 52) / 2) + 'px';
    
cur.pvRightNav.style.left Math.floor((lastWindowWidth sbw cur.pvActualWidth 52) / 2) + 'px';
    
cur.pvRightNav.style.width Math.floor((lastWindowWidth sbw cur.pvActualWidth 52) / 2) + 'px';
    if (
cur.pvClose) {
      
cur.pvClose.style.left = (lastWindowWidth sbw 37) + 'px';//(Math.floor((lastWindowWidth - sbw + cur.pvActualWidth + 52) / 2) + 22) + 'px';
    
}
  },
  
updateHeight: function() {
    var 
cur.pvBox.offsetHeight 110sbw Math.floor(sbWidth() / 2);
    
cur.pvLeftNav.style.height cur.pvRightNav.style.height = (110) + 'px';
    
window.updateWndVScroll && updateWndVScroll();
    if (!
browser.mobile) return;
    var 
skipTop 10 cur.pvYOffset;
    
cur.pvLeft.style.top cur.pvClose.style.top = (cur.pvYOffset 25) + 'px';
    if (
lastWindowHeight cur.pvYOffset h) {
      
setTimeout(function() {
        var 
ge('footer');
        
f.style.height = (intval(getStyle(f'height')) + (cur.pvYOffset lastWindowHeight)) + 'px';
        
onBodyResize();
        
Photoview.onResize();
      }, 
1);
    }
  },
  
actionInfo: function() {
    return 
ge('pv_action_info') || cur.pvWide.insertBefore(ce('div', {id'pv_action_info'}), cur.pvTags);
  },

  
locNav: function(choldnwopts) {
    if ((
cur.pvListId == 'newtag' vk.id + (nw.rev '/rev' '')) && (nw[0] == 'albums' vk.id) && (nw.act == 'added')) {
      
Photoview.hide(opts.hist);
      return 
false;
    }
    
nw nav.toStr(nw);
    if (
nw.replace('?rev=1''/rev') == cur.pvListId && cur.pvShown) {
      
Photoview.hide(opts.hist);
      return 
false;
    }
    var 
nw.match(/^photo(-?d+_d+)??((all=1|newtag=d+)(&rev=1)?|(rev=1&)?tag=d+|rev=1)?$/);
    if (!
m) return;

    var 
listId cur.pvListId;
    if (!
listId || !cur.pvShown) {
      if (
nav.objLoc.act == 'added') {
        
listId 'newtag' vk.id + (nav.objLoc.rev '/rev' '');
      } else {
        
listId nav.strLoc.replace('?rev=1''/rev');
      }
    }
    var 
data cur.pvData[listId];
    if (!
data) return;

    for (var 
0data.lengthl; ++i) {
      if (
data[i] && data[i].id == m[1]) {
        
Photoview.show(listIdifalsecur.pvRoot);
        return 
false;
      }
    }
  },
  
updateLocNav: function() {
    if (
cur.pvRoot) {
      for (var 
0cur.nav.lengthl; ++i) {
        if (
cur.nav[i] == Photoview.locNav) return;
      }
      
cur.nav.push(Photoview.locNav);
    } else {
      for (var 
0cur.nav.lengthl; ++i) {
        if (
cur.nav[i] == Photoview.locNav) {
          
cur.nav.splice(i1);
          --
i; --l;
        }
      }
    }
  },

  
checkLayerVisibility: function() {
    if (
cur.pvShown) return true;

    
debugLog('layerqueue.hide from photoview');
    
layerQueue.hide();

    
addEvent(window'resize'Photoview.onResize);
    
addEvent(document'keydown'Photoview.onKeyDown);
    
addEvent(layerWrap'click'Photoview.onClick);
    
boxQueue.hideAll();
    
setStyle(layerBG, {opacity''});
    
layers.show();
    
layers.fullhide Photoview.hide;
  },
  
createLayer: function() {
    var 
colorClass vk.pvdark 'pv_dark' 'pv_light';

    
cur.pvFixed bodyNode.appendChild(ce('div', {className'pv_fixed fixed ' colorClassinnerHTML'
<div class="pv_left no_select" onmousedown="Photoview.show(false, cur.pvIndex - 1, event);" onmouseover="Photoview.activate(this)" onmouseout="Photoview.deactivate(this)"><div></div></div>
<div class="pv_close no_select" onmouseover="Photoview.activate(this)" onmouseout="Photoview.deactivate(this)" onmousedown="cur.pvClicked = true; Photoview.onClick(event, true);"><div></div></div>
    '
}));

    
cur.pvLeft cur.pvFixed.firstChild;
    
cur.pvClose cur.pvLeft.nextSibling;

    
addClass(layerWrapcolorClass);
    
addClass(layerBGcolorClass);
    
vkImage().src '/images/upload.gif';

    var 
hhHide Photoview.hhCheck() ? '' ' style="display: none;"',
        
albumsHtml cur.pvAlbumsShown cur.pvAlbumsData[cur.pvAlbumsShown].html '',
        
albumHtml cur.pvAlbumShown cur.pvAlbumData[cur.pvAlbumShown].html '',
        
pvVTagsHtml cur.pvVideoTagsShown cur.pvVideoTagsData.html '',
        
pwStyle cur.pvVideoTagsShown || cur.pvAlbumsShown || cur.pvAlbumShown || cur.pvPhotoTagShown 'display: none' '',
        
awStyle cur.pvAlbumsShown '' 'display: none',
        
sawStyle cur.pvAlbumShown '' 'display: none',
        
vtStyle cur.pvVideoTagsShown '' 'display: none';
    if (
cur.pvPhotoTagShown) {
      
albumHtml cur.pvPhotoTagData[cur.pvPhotoTagShown].html;
      
sawStyle '';
    }

    
layer.innerHTML '
<div class="pv_cont">

<table cellspacing="0" cellpadding="0">
<tr><td class="sidesh s1"><div></div></td><td>
<table cellspacing="0" cellpadding="0">
<tr><td class="sidesh s2"><div></div></td><td>
<table cellspacing="0" cellpadding="0">
<tr><td colspan="3" class="bottomsh s3"><div></div></td></tr>
<tr><td class="sidesh s3"><div></div></td><td>

<div id="pv_box" onclick="cur.pvClicked = true;">
  <a class="fl_r pv_close_link" onclick="Photoview.hide(0)">' 
getLang('global_close') + '</a>
  <div id="pv_summary"><span class="summary"></span></div>
  <div id="pv_photo_wrap" style="' 
pwStyle '">
    <div id="pv_tag_info" class="clear_fix"></div>
    <div class="no_select pv_data">
      <div id="pv_tag_frame"></div>
      <div id="pv_tag_faded"></div>
      <div id="pv_tag_person" onmouseout="Photoview.hideTag()"></div>
      <div id="pv_loader"></div>
      <div class="pvs_hh"' 
hhHide ' id="pv_hh"><div class="pvs_hh_cover"><div class="pvs_hh_bg"></div><div class="pvs_hh_fg" id="pv_hh_fg" onmouseover="Photoview.hhOver(this)" onmouseout="Photoview.hhOut(this)" onmousedown="return Photoview.hhClick(this, event, 1)"></div></div></div>
      <a onmouseout="Photoview.hideTag()" onmousedown="if (!cur.pvTagger && checkEvent(event) === false) return Photoview.show(false, cur.pvIndex + 1, event);" onselectstart="return cancelEvent(event);" onclick="return checkEvent(event)" href="" id="pv_photo"></a>
    </div>
    <div class="clear_fix select_fix" id="pv_comments_data">
      <div class="fl_l wide_column">
        <div id="pv_wide"></div>
        <div id="pv_your_comment" class="clear clear_fix" onclick="return cancelEvent(event);">
          <div id="pv_comment_header">' 
getLang('photos_yourcomment') + '</div>
          <textarea id="pv_comment" onkeyup="Photoview.commentChanged()" onkeypress="onCtrlEnter(event, Photoview.sendComment);"></textarea>
          <div id="pv_comment_warn"></div>
          <div id="pv_media_preview" class="clear_fix"></div>
          <div id="pv_comment_submit">
            <div class="button_blue fl_l"><button id="pv_comment_send">' 
getLang('box_send') + '</button></div>
            <div id="pv_reply_as_group" class="checkbox fl_l" onclick="checkbox(this)">
              <div></div>' 
getLang('wall_reply_as_group') + '
            </div>
            <div id="pv_reply_to_title" class="fl_l"></div>
            <div id="pv_del_reply_to" class="fl_l" onclick="Photoview.commentTo()"></div>
            <div id="pv_add_media" class="fl_r">
              <span class="add_media_lnk">' 
getLang('global_add_media') + '</span>
            </div>
          </div>
        </div>
      </div>
      <div class="fl_r narrow_column" id="pv_narrow"></div>
    </div>
  </div>
  <div id="pv_albums_wrap" style="' 
awStyle '">' albumsHtml '</div>
  <div id="pv_album_wrap" '
+ (cur.pvsaMini 'class="pv_album_wrap_mini"' '') +' style="' sawStyle '">' albumHtml '</div>
  <div id="pv_vtagged_wrap" style="' 
vtStyle '">' pvVTagsHtml '</div>
</div>

</td><td class="sidesh s3"><div></div></td></tr>
<tr><td colspan="3" class="bottomsh s3"><div></div></td></tr></table>
</td><td class="sidesh s2"><div></div></td></tr>
<tr><td colspan="3" class="bottomsh s2"><div></div></td></tr></table>
</td><td class="sidesh s1"><div></div></td></tr>
<tr><td colspan="3" class="bottomsh s1"><div></div></td></tr></table>
</div>
<div class="no_select" id="pv_left_nav" '
+'onmouseover="Photoview.activate(cur.pvLeft)" onmouseout="Photoview.deactivate(cur.pvLeft)" onmousedown="cur.pvClicked = true; Photoview.show(false, cur.pvIndex - 1, event);" onselectstart="return cancelEvent(event);"></div>
<div class="no_select" id="pv_right_nav" '
+'onmouseover="Photoview.activate(cur.pvClose)" onmouseout="Photoview.deactivate(cur.pvClose)" onmousedown="cur.pvClicked = true; Photoview.onClick(event, true);"></div>
<div class="pv_switch no_select" id="pv_switch" onmouseover="if (!browser.msie6) Photoview.activate(this)" onmouseout="if (!browser.msie6) Photoview.deactivate(this)" onmousedown="Photoview.switchColor(this); cur.pvClicked = true;"><div class="pv_switch_wrap"><img class="pv_switch_img" width="10" height="22" src="/images/photoswitch'
+(window.devicePixelRatio >= '_2x' '')+'.png" /></div></div>
    '
;

    if (
cur.pvYourComment) {
      
domPN(ge('pv_your_comment')).replaceChild(cur.pvYourCommentge('pv_your_comment'));
    }
    
extend(cur, {
      
pvContdomFC(layer),
      
pvBoxge('pv_box'),

      
pvLeftNavge('pv_left_nav'),
      
pvRightNavge('pv_right_nav'),

      
pvPhotoWrapge('pv_photo_wrap'),
      
pvAlbumWrapge('pv_album_wrap'),
      
pvAlbumsWrapge('pv_albums_wrap'),
      
pvVTagsWrapge('pv_vtagged_wrap'),

      
pvSummarydomFC(ge('pv_summary')),
      
pvTagInfoge('pv_tag_info'),
      
pvLoaderge('pv_loader'),
      
pvTagFramege('pv_tag_frame'),
      
pvTagFadedge('pv_tag_faded'),
      
pvTagPersonge('pv_tag_person'),
      
pvPhotoge('pv_photo'),
      
pvCommentsDatage('pv_comments_data'),

      
pvNarrowge('pv_narrow'),
      
pvWidege('pv_wide'),

      
pvHHge('pv_hh'),
      
pvHHFgge('pv_hh_fg'),

      
pvYourCommentge('pv_your_comment'),
      
pvAddMediadomFC(ge('pv_add_media')),
      
pvMediaPreviewge('pv_media_preview'),
      
pvCommentSendge('pv_comment_send'),
      
pvCommentge('pv_comment'),
      
pvAsGroupge('pv_reply_as_group'),

      
pvSwitchge('pv_switch')
    });
    
addEvent(cur.pvPhoto'mousemove'Photoview.onMouseMove);
    if (
browser.mobile) {
      
cur.pvYOffset intval(window.pageYOffset);

      
cur.pvCont.style.paddingTop cur.pvLeftNav.style.top =
      
cur.pvRightNav.style.top = (cur.pvYOffset 10) + 'px';

      
cur.pvSwitch.style.top cur.pvYOffset 'px';
    }
    
addEvent(layerWrap'scroll'Photoview.scrollResize);

    
Photoview.updateSize();
  },
  
doShowAlbums: function(ownerIdev) {
    
ownerId intval(ownerId);
    if (
ev && (ev.button == || ev.which == 3)) return;

    
clearTimeout(window.__pvhideTimer);
    if (
__afterFocus) {
      return 
ev cancelEvent(ev) : false;
    }
    if (
cur.pvTagger) {
      
Phototag.stopTag();
      if (
ev !== false) {
        return 
ev cancelEvent(ev) : false;
      }
    }

    var 
data = (cur.pvAlbumsData || {})[ownerId];
    if (!
data) return;

//    if (window.wkLayerWrap && isVisible(window.wkLayerWrap)) {
//      wkcur.scrollTop = window.wkLayerWrap.scrollTop;
//      hide(wkLayerWrap);
//    }

    
Photoview.checkLayerVisibility();
    
cur.pvRoot false;
    
Photoview.updateLocNav();

    if (
ev && ev.pageX && ev.pageY) {
      
extend(cur, {pvOldXev.pageXpvOldYev.pageYpvOldTvkNow()});
    }

    
cur.pvShown true;
    
cur.pvAlbumsShown ownerId;
    if (!
cur.pvFixed || val('pva_owner') != ownerId) {
      
extend(cur, {
        
pvaOffsetdata.opts.offset,
        
pvaCountdata.opts.count,
        
pvaPhotosOffsetdata.opts.photos_offset,
        
pvaPhotosCountdata.opts.photos_count,
        
pvShowAllAlbumsfalse
      
});
    }
    if (!
cur.pvFixed) {
      
Photoview.createLayer();
    } else {
      if (
val('pva_owner') != ownerId) {
        
val(cur.pvAlbumsWrapdata.html);
      }
      if (!
isVisible(cur.pvAlbumsWrap)) {
        
hide(cur.pvPhotoWrapcur.pvAlbumWrapcur.pvVTagsWrap);
        
show(cur.pvAlbumsWrap);
        
Photoview.updateSize();
        
layerWrap.scrollTop val('pva_scroll');
      }
    }

    
cur.pvSummary.innerHTML data.opts.summary;

    if (
cur.pvListId && cur.pvListId != 'temp') {
      
extend(cur, {
        
pvOldListIdcur.pvListId,
        
pvOldIndexcur.pvIndex
      
});
      var 
old = (cur.pvListId || '').split('/');
      if (
old[0]) {
        
Photoview.showRepeat(ge(old[0]));
      }

      
show(cur.pvLeftcur.pvLeftNavcur.pvRightNavcur.pvClose);
    } else {
      
hide(cur.pvLeftcur.pvLeftNavcur.pvRightNavcur.pvClose);
      if (!
browser.msie || browser.version 8cur.pvClicked false;
    }
    
cur.pvListId false;

    var 
nl extend(nav.objLoc, {z'albums' cur.pvAlbumsShown});
    if (
nav.strLoc != nav.toStr(nl)) {
      if (!
cur.pvNoHistory) {
        ++
cur.pvHistoryLength;
      }
      
nav.setLoc(nl);
    }

    return 
ev cancelEvent(ev) : false;
  },
  
jumpToAlbums: function(returning) {
    if (
cur.pvListId == 'temp') {
      
cur.pvCancelLoad();
      if (
cur.pvJumpTo.== 'albums' val('pva_owner') && cur.pvJumpTo.== nav.objLoc.z) {
        
showAlbums(val('pva_owner'), {noHistorytrue});
        return;
      }
    }
    if (
returning) {
      
cur.pvListId false;
    }
    
extend(cur, {
      
pvJumpFromfalse,
      
pvJumpSteps0
    
});
    
nav.change(cur.pvJumpTo);
  },
  
jumpToAlbum: function(returning) {
    if (
cur.pvListId == 'temp') {
      
cur.pvCancelLoad();
      if (
cur.pvJumpTo.== 'album' val('pvsa_album') && cur.pvJumpTo.== nav.objLoc.z) {
        
showAlbum(val('pvsa_album'), {noHistorytrue});
        return;
      }
    }
    if (
returning) {
      
cur.pvListId false;
    }
    
extend(cur, {
      
pvJumpFromfalse,
      
pvJumpSteps0
    
});
    
nav.change(cur.pvJumpTo);
  },
  
jumpToTagged: function(returning) {
    if (
cur.pvListId == 'temp') {
      
cur.pvCancelLoad();
      if (
cur.pvJumpTo.== 'tag' val('pvsa_tag') && cur.pvJumpTo.== nav.objLoc.z) {
        
showTagged(val('pvsa_tag'), {noHistorytrue});
        return;
      }
    }
    if (
cur.pvJumpTo.== 'tag' val('pvsa_tag')) {
      
cur.pvJumpTo.'photo_' cur.pvJumpTo.z;
    }
    if (
returning) {
      
cur.pvListId false;
    }
    
extend(cur, {
      
pvJumpFromfalse,
      
pvJumpSteps0
    
});
    
nav.change(cur.pvJumpTo);
  },
  
doShowAlbum: function(albumRawev) {
    if (
ev && (ev.button == || ev.which == 3)) return;

    
clearTimeout(window.__pvhideTimer);
    if (
__afterFocus) {
      return 
ev cancelEvent(ev) : false;
    }
    if (
cur.pvTagger) {
      
Phototag.stopTag();
      if (
ev !== false) {
        return 
ev cancelEvent(ev) : false;
      }
    }

    var 
data = (cur.pvAlbumData || {})[albumRaw];
    if (!
data) return;

//    if (window.wkLayerWrap && isVisible(window.wkLayerWrap)) {
//      wkcur.scrollTop = window.wkLayerWrap.scrollTop;
//      hide(wkLayerWrap);
//    }

    
Photoview.checkLayerVisibility();
    
cur.pvRoot false;
    
Photoview.updateLocNav();

    if (
ev && ev.pageX && ev.pageY) {
      
extend(cur, {pvOldXev.pageXpvOldYev.pageYpvOldTvkNow()});
    }

    
cur.pvShown true;
    
cur.pvAlbumShown albumRaw;
    if (!
cur.pvFixed || val('pvsa_album') != albumRaw) {
      
extend(cur, {
        
pvsaOffsetdata.opts.offset,
        
pvsaCountdata.opts.count,
        
pvsaMinidata.opts.count <= 40
      
});
    }
    if (!
cur.pvFixed) {
      
Photoview.createLayer();
    } else {
      
toggleClass(cur.pvAlbumWrap'pv_album_wrap_mini'cur.pvsaMini);
      if (
val('pvsa_album') != albumRaw) {
        
val(cur.pvAlbumWrapdata.html);
      }
      if (!
isVisible(cur.pvAlbumWrap)) {
        
hide(cur.pvPhotoWrapcur.pvAlbumsWrapcur.pvVTagsWrap);
        
show(cur.pvAlbumWrap);
        
Photoview.updateSize();
        
layerWrap.scrollTop val('pvsa_scroll');
      }
    }

    
val(cur.pvSummarydata.opts.summary);

    if (
cur.pvListId && cur.pvListId != 'temp') {
      
extend(cur, {
        
pvOldListIdcur.pvListId,
        
pvOldIndexcur.pvIndex
      
});
      var 
old = (cur.pvListId || '').split('/');
      if (
old[0]) {
        
Photoview.showRepeat(ge(old[0]));
      }

      
show(cur.pvLeftcur.pvLeftNavcur.pvRightNavcur.pvClose);
    } else {
      
hide(cur.pvLeftcur.pvLeftNavcur.pvRightNavcur.pvClose);
      if (!
browser.msie || browser.version 8cur.pvClicked false;
    }
    
cur.pvListId false;

    var 
nl extend(nav.objLoc, {z'album' cur.pvAlbumShown});
    if (
nav.strLoc != nav.toStr(nl)) {
      if (!
cur.pvNoHistory) {
        ++
cur.pvHistoryLength;
      }
      
nav.setLoc(nl);
    }

    return 
ev cancelEvent(ev) : false;
  },
  
doShowTagged: function(ownerIdev) {
    
ownerId intval(ownerId);
    if (
ev && (ev.button == || ev.which == 3)) return;

    
clearTimeout(window.__pvhideTimer);
    if (
__afterFocus) {
      return 
ev cancelEvent(ev) : false;
    }
    if (
cur.pvTagger) {
      
Phototag.stopTag();
      if (
ev !== false) {
        return 
ev cancelEvent(ev) : false;
      }
    }

    var 
data = (cur.pvPhotoTagData || {})[ownerId];
    if (!
data) return;

//    if (window.wkLayerWrap && isVisible(window.wkLayerWrap)) {
//      wkcur.scrollTop = window.wkLayerWrap.scrollTop;
//      hide(wkLayerWrap);
//    }

    
Photoview.checkLayerVisibility();
    
cur.pvRoot false;
    
Photoview.updateLocNav();

    if (
ev && ev.pageX && ev.pageY) {
      
extend(cur, {pvOldXev.pageXpvOldYev.pageYpvOldTvkNow()});
    }

    
cur.pvShown true;
    
cur.pvPhotoTagShown ownerId;
    if (!
cur.pvFixed || val('pvsa_tag') != ownerId) {
      
extend(cur, {
        
pvsaOffsetdata.opts.offset,
        
pvsaCountdata.opts.count,
        
pvsaMinidata.opts.count <= 40
      
});
    }
    if (!
cur.pvFixed) {
      
Photoview.createLayer();
    } else {
      
toggleClass(cur.pvAlbumWrap'pv_album_wrap_mini'cur.pvsaMini);
      if (
val('pvsa_tag') != ownerId) {
        
val(cur.pvAlbumWrapdata.html);
      }
      if (!
isVisible(cur.pvAlbumWrap)) {
        
hide(cur.pvPhotoWrapcur.pvAlbumsWrapcur.pvVTagsWrap);
        
show(cur.pvAlbumWrap);
        
Photoview.updateSize();
        
layerWrap.scrollTop val('pvsa_scroll');
      }
    }

    
val(cur.pvSummarydata.opts.summary);

    if (
cur.pvListId && cur.pvListId != 'temp') {
      
extend(cur, {
        
pvOldListIdcur.pvListId,
        
pvOldIndexcur.pvIndex
      
});
      var 
old = (cur.pvListId || '').split('/');
      if (
old[0]) {
        
Photoview.showRepeat(ge(old[0]));
      }

      
show(cur.pvLeftcur.pvLeftNavcur.pvRightNavcur.pvClose);
    } else {
      
hide(cur.pvLeftcur.pvLeftNavcur.pvRightNavcur.pvClose);
      if (!
browser.msie || browser.version 8cur.pvClicked false;
    }
    
cur.pvListId false;

    var 
nl extend(nav.objLoc, {z'photo_tag' cur.pvPhotoTagShown});
    if (
nav.strLoc != nav.toStr(nl)) {
      if (!
cur.pvNoHistory) {
        ++
cur.pvHistoryLength;
      }
      
nav.setLoc(nl);
    }

    return 
ev cancelEvent(ev) : false;
  },
  
doShowVideoTags: function(ownerIdev) {
    if (
ev && (ev.button == || ev.which == 3)) return;

    
clearTimeout(window.__pvhideTimer);
    if (
__afterFocus) {
      return 
ev cancelEvent(ev) : false;
    }
    if (
cur.pvTagger) {
      
Phototag.stopTag();
      if (
ev !== false) {
        return 
ev cancelEvent(ev) : false;
      }
    }

    var 
data cur.pvVideoTagsData;
    if (!
data) return;

//    if (window.wkLayerWrap && isVisible(window.wkLayerWrap)) {
//      wkcur.scrollTop = window.wkLayerWrap.scrollTop;
//      hide(wkLayerWrap);
//    }

    
Photoview.checkLayerVisibility();
    
cur.pvRoot false;
    
Photoview.updateLocNav();

    if (
ev && ev.pageX && ev.pageY) {
      
extend(cur, {pvOldXev.pageXpvOldYev.pageYpvOldTvkNow()});
    }

    
cur.pvShown true;
    
cur.pvVideoTagsShown ownerId;
    if (!
cur.pvFixed || val('pvsa_vtag') != ownerId) {
      
extend(cur, {
        
pvsaOffsetdata.opts.offset,
        
pvsaCountdata.opts.count
      
});
    }
    if (
data.opts.lang) {
      
cur.lang extend(cur.lang || {}, data.opts.lang);
    }
    if (!
cur.pvFixed) {
      
Photoview.createLayer();
    } else {
      if (
val('pvsa_vtag') != ownerId) {
        
val(cur.pvVTagsWrapdata.html);
      }
      if (!
isVisible(cur.pvVTagsWrap)) {
        
hide(cur.pvPhotoWrapcur.pvAlbumsWrapcur.pvAlbumWrap);
        
show(cur.pvVTagsWrap);
        
Photoview.updateSize();
        
layerWrap.scrollTop val('pvsa_scroll');
      }
    }

    
val(cur.pvSummarydata.opts.summary);

    
hide(cur.pvLeftcur.pvLeftNavcur.pvRightNavcur.pvClose);
    
cur.pvListId false;
    
cur.pvSummary.parentNode.style.width '606px';

    var 
nl extend(nav.objLoc, {z'video_tag' cur.pvVideoTagsShown});
    if (
nav.strLoc != nav.toStr(nl)) {
      if (!
cur.pvNoHistory) {
        ++
cur.pvHistoryLength;
      }
      
nav.setLoc(nl);
    }

    return 
ev cancelEvent(ev) : false;
  },
  
show: function(listIdindexevroot) {
    if (
ev && (ev.button == || ev.which == 3)) return;

    
clearTimeout(window.__pvhideTimer);

    if (
listId == 'temp' && cur.pvShown) {
      if (
cur.pvListId && cur.pvListId != 'temp') return;
      
cur.pvWasShown true;
    } else {
      
cur.pvWasShown false;
    }
    if (
__afterFocus) {
      return 
ev cancelEvent(ev) : false;
    }
    if (
cur.pvTagger) {
      
Phototag.stopTag();
      if (
ev !== false) {
        return 
ev cancelEvent(ev) : false;
      }
    }
    if (
listId === false) {
      if (
cur.pvAlbumsShown || cur.pvAlbumShown || cur.pvPhotoTagShown) {
        if (
cur.pvOldListId) {
          
extend(cur, {
            
pvJumpTocur.pvOldJumpTo,
            
pvJumpFromcur.pvOldJumpFrom,
            
pvJumpStepscur.pvOldJumpSteps
          
});
          if (
index == cur.pvOldIndex 1) ++cur.pvOldIndex;
          return 
Photoview.show(cur.pvOldListIdcur.pvOldIndexevroot);
        } else {
          
hide(cur.pvLeftcur.pvLeftNavcur.pvRightNavcur.pvClose);
        }
      }
      
listId cur.pvListId;
    }
    var 
count = ((cur.pvData || {})[listId] || {}).lengthotherList = (listId != cur.pvListId);
    if (!
count) return;

    if (
ev && ev.pageX && ev.pageY) {
      
extend(cur, {pvOldXev.pageXpvOldYev.pageYpvOldTvkNow()});
    }

    if ((
cur.pvOptions || {}).queue) {
      
debugLog('pushing in photoview.show');
      
layerQueue.push();
      
cur.pvOptions.queue false;
      
cur.pvHistoryLength 0;
    }

//    if (window.wkLayerWrap && isVisible(window.wkLayerWrap)) {
//      wkcur.scrollTop = window.wkLayerWrap.scrollTop;
//      hide(wkLayerWrap);
//    }

    
if (!Photoview.checkLayerVisibility()) {
      
otherList true;
    }

    var 
newIndex index + (index count : (index >= count ? (-count) : 0));
    var 
direction otherList : (cur.pvIndex index ? -1);

    if (!
otherList && !cur.pvCanvas) {
      if (
cur.pvJumpTo) {
        
cur.pvJumpSteps += (index cur.pvIndex);
        var 
needJump = (newIndex === cur.pvJumpFrom && cur.pvJumpSteps >= count);
        if (
needJump) {
          
extend(cur, {
            
pvOldJumpFromcur.pvJumpFrom,
            
pvOldJumpStepscur.pvJumpSteps - (index cur.pvIndex),
            
pvOldJumpTocur.pvJumpTo
          
});
          return 
Photoview.jumpToAlbums(cur.pvJumpSteps 0);
        }
        if (
direction 0) {
          if (
newIndex cur.pvJumpFrom && newIndex cur.pvJumpFrom || newIndex cur.pvJumpFrom count && newIndex cur.pvJumpFrom count) {
            
vkImage().src stManager._srcPrefix('.css')+'/images/icons/post_hh'+(window.devicePixelRatio >= '_2x' '')+'.png?2';
            var 
cur.pvJumpTo.z.match(/^albums(-?d+)$/);
            if (
m) {
              if (!
cur.pvAlbumsDatacur.pvAlbumsData = {};
              if (!
cur.pvAlbumsData[m[1]]) {
                
cur.pvAlbumsData[m[1]] = 'loading';
                
ajax.post('al_photos.php', {act'show_albums'ownerm[1], other1}, {onDonePhotoview.loadedAlbums});
              }
            }
          }
        }
        if (
cur.pvJumpSteps <= -count) {
          
cur.pvJumpSteps += count;
        }
      }
      if (
count == && index != cur.pvIndex && listId != 'temp') {
        
Photoview.hide();
        return 
ev cancelEvent(ev) : false;
      }
    }

    if (
otherList && listId != 'temp') {
      if (
cur.pvJumpFrom === false) {
        
cur.pvJumpFrom newIndex;
      }
      
cur.pvRoot root;
      
Photoview.updateLocNav();
    }

    
index newIndex;

    var 
ph cur.pvData[listId][index];

    if (!
ph || !ph.x_ && !ph.x_src) return;

    
cur.pvIndex index;
    
cur.pvShown true;
    
cur.pvAlbumsShowing cur.pvAlbumsShown false;
    
cur.pvAlbumShowing cur.pvAlbumShown false;
    
cur.pvPhotoTagShowing cur.pvPhotoTagShown false;
    
cur.pvVideoTagShowing cur.pvVideoTagsShown false;
    
cur.pvListId listId;
    if (!
cur.pvFixed) {
      
Photoview.createLayer();
    }
    
cur.pvCurData Photoview.genData(phvk.pvbig ? (cur.pvVeryBig ? (cur.pvVeryBig 'z' 'z') : 'y') : 'x');
    if (
cur.pvCurrent) {
      
cur.pvCurrent.onload Photoview.blankf;
      
cur.pvCurrent.src Photoview.blank;
    }
    
delete cur.pvCurrent;
    
cur.pvCurrent vkImage();
    
cur.pvCurrent.onload Photoview.preload.pbind(indexdirection);
    
cur.pvCurrent.src cur.pvCurData.src;

    if (
otherList) {
      var 
needControls = (count 1) || ((cur.pvJumpTo || {}).== 'albums' val('pva_owner')) || ((cur.pvJumpTo || {}).== 'album' val('pvsa_album'));
      (
needControls show hide)(cur.pvLeftcur.pvLeftNavcur.pvRightNavcur.pvClose);
    }
    
cur.pvSummary.innerHTML = (listId == 'temp') ? '<img src="/images/upload.gif" />' : ((count 1) ? getLang('photos_photo_num_of_N').replace('%s'cur.pvIndex 1).replace('%s'count) : getLang('photos_view_one_photo'));

    
cur.pvCurPhoto ph;
    if (!
cur.pvCurData.width || !cur.pvCurData.height) {
      
cur.pvCurData cur.pvCurrent;
      
cur.pvTimerPassed 0;
      
clearTimeout(cur.pvTimer);
      
cur.pvTimer setTimeout(Photoview.doShow0);
    } else {
      
Photoview.doShow();
    }

    return 
ev cancelEvent(ev) : false;
  },
  
doShow: function() {
    var 
img cur.pvCurData;
    if ((!
img.width || !img.height) && cur.pvTimerPassed 5000) {
      
clearTimeout(cur.pvTimer);
      
cur.pvTimerPassed += 100;
      
cur.pvTimer setTimeout(Photoview.doShow100);
      return;
    }
    if (!
cur.pvShown) return;

    if (
cur.pvCanvas) {
      
cur.pvScrWidth cur.pvCanvas.offsetWidth;
      
cur.pvScrHeight cur.pvCanvas.offsetHeight;

      var 
100img.width || 604img.height || 453vkImage();
//      if (w > cur.pvScrWidth) {
        
cur.pvScrWidth w;
//      }
      
if (cur.pvScrHeight) {
        
cur.pvScrHeight h;
      }
      if (
1.251.25;
      
cur.pvFSWidth Math.floor(c);
      
cur.pvFSHeight Math.floor(c);
      
cur.pvFSTop Math.floor((cur.pvScrHeight h) / 2);

      
val(domFC(cur.pvCanvas), '<img style="margin-top: ' 'px; width: ' 'px; height: ' 'px;" src="' img.src '" />');
      
i.onload Photoview.fullscreenOnLoad;
      
i.src img.src;

      if (
window.FullscreenPVFullscreenPV.updateInfo();
      return;
    }

    if (
isVisible(cur.pvAlbumsWrap)) {
      
val('pva_scroll'layerWrap.scrollTop);
      
hide(cur.pvAlbumsWrap);
      
show(cur.pvPhotoWrap);
      
Photoview.updateSize();
    }
    if (
isVisible(cur.pvAlbumWrap)) {
      
val('pvsa_scroll'layerWrap.scrollTop);
      
hide(cur.pvAlbumWrap);
      
show(cur.pvPhotoWrap);
      
Photoview.updateSize();
    }

    var 
lnk cur.pvPhoto1marginTop 0img.width || 604img.height || 453;
    if (
vk.pvbig) {
      if (
cur.pvWidth) {
        
cur.pvWidth w;
      }
      if (
cur.pvHeight) {
        
cur.pvHeight h;
      }
    }
    
marginTop positive(Math.floor((403 c) / 2));
    
cur.pvPhWidth Math.floor(c);
    
cur.pvPhHeight Math.floor(c);
    
cur.pvActualWidth Math.max(cur.pvPhWidth604);
    if (
>= 453) {
      
lnk.style.height Math.floor(c) + 'px';
    } else {
      
lnk.style.height Math.max(400cur.pvPhHeight)+'px';
    }

    if (
vk.pvbig) {
      
cur.pvCont.style.width = (cur.pvActualWidth 154) + 'px';
      
cur.pvSummary.parentNode.style.width = (cur.pvActualWidth 4) + 'px';
    }

    if (
cur.pvTaggerPhototag.stopTag();
    
Photoview.hideTag(true);

    if (
cur.pvLoader) {
      
hide(cur.pvLoader);
      
delete(cur.pvLoader);
    }

    
imgOpts '';

    var 
ph cur.pvCurPhotonotAvail = (ph.commshown >= 0) ? false : (-ph.commshown);

    if (!
cur.pvHHMove && Photoview.hhCheck() && !notAvail) {
      
addEvent(layer'mousemove'Photoview.photoAct);
      
cur.pvHHMove true;
    }

    
cur.pvHH.style[vk.rtl 'marginRight' 'marginLeft'] = Math.ceil((cur.pvActualWidth 50 72) / 2) + 'px';

    
lnk.innerHTML '<img '+imgOpts+' style="width: ' cur.pvPhWidth 'px; height: ' cur.pvPhHeight 'px; margin-top: ' marginTop 'px;" src="' img.src '" />';

    
layerWrap.scrollTop 0;
    if (
cur.pvListId == 'temp') {
      
hide(cur.pvCommentsData);
      
Photoview.updateArrows();
      return;
    }

    (
ph.liked addClass removeClass)(cur.pvHH'pvs_hh_liked');
    
Photoview.hhOut(cur.pvHHFg);

    if (
window.tooltips) {
      
tooltips.destroyAll(cur.pvBox);
    }

    var 
taglnkst = (!ph.taginfo && ph.actions.tag && ph.tags[0] < cur.pvMaxTags) ? '' ' style="display: none"';
    var 
shareacts = [], fs false;
    if (
vk.idshareacts.push(['pvs_send'getLang('photos_send_to_fr'), 'onclick="Photoview.sendPhoto()"']);
    if (
ph.actions.saveshareacts.push(['pvs_save'getLang('photos_save_to_alb'), 'onclick="Photoview.savePhoto()"']);
    
shareacts.push(['pvs_down'getLang('photos_download_hq'), 'target="_blank" href="' Photoview.genData(ph'w').src /* '?dl=1' + */'"']);

    var 
share ''shareacts.lengthsprg '<div id="pv_share_prg" class="progress fl_r"></div>';
    if (
1) {
      
share '';
    } else if (
== 1) {
      
share '<a ' shareacts[0][2] + '>' sprg shareacts[0][1] + '</a>';
    } else {
      for (var 
0l; ++i) {
        
share += '<a class="pvs_act" ' shareacts[i][2] + '><span class="fl_l ' shareacts[i][0] + '"></span><span class="pvs_act_text">' shareacts[i][1] + '</span></a>';
      }
      
share '<a id="pv_share" onclick="Photoview.showShare()">' sprg '<span id="pv_share_text">' getLang('photos_share_from_view') + '</span></a>
<div onmouseover="Photoview.showShare()" onmouseout="Photoview.hideShare(500)" onclick="Photoview.hideShare(-1)" id="pvs_dd" class="fixed"><table cellspacing="0" cellpadding="0"><tr>
  <td class="pvs_side_sh"><div class="pvs_side_sh_el"></div></td>
  <td>
    <div class="pvs_header_wrap"><div class="pvs_header"><span class="pvs_header_text">' 
getLang('photos_share_from_view') + '</span></div></div>
    <div class="pvs_acts">' 
share '</div>
    <div class="pvs_sh1"></div><div class="pvs_sh2"></div>
  </td>
  <td class="pvs_side_sh"><div class="pvs_side_sh_el"></div></td>
</tr></table></div>'
;
    }

if (
ph.actions.edit/* & 2*/) {
  
photoEditAct '<a id="pv_edit_link" onclick="return showBox('al_photos.php', {act: 'edit_photo', photo: cur.pvData[cur.pvListId][cur.pvIndex].id}, {stat: ['ui_controls.css', 'ui_controls.js']})">' getLang('photos_edit') + '</a>';
} else {
  
photoEditAct '';
}

    if (
img.width 200 || img.height 200) {
      
ph.actions.prof false;
    }
    
cur.pvNarrow.innerHTML '
+ ((ph.album != 'NA' && notAvail != || ph.graffiti) ? '<div class="pv_info">' getLang('photos_album_name') + '</div><div class="pv_info" id="pv_album">' ph.album '</div>' '') + '
+ (ph.author != 'NA' '<div class="pv_info">' getLang('photos_author') + '</div><div id="pv_author">' ph.author '</div>' '') + '
<div id="pv_actions">
+ (fs '<a onclick="Photoview.fullscreen()">' getLang('photos_fullscreen') + '</a>' '') + '
  <a id="pv_tag_link" onclick="stManager.add(['
phototag.js', 'phototag.css', 'tagger.css', 'tagger.js'], function() { Phototag.startTag(); })"' taglnkst '>' getLang('photos_tagperson') + '</a>
+ (ph.actions.prof ? ('<a id="pv_to_profile" onmouseover="Photoview.toProfileTag()" onmouseout="Photoview.hideTag()" onclick="showBox('al_page.php', {act: 'owner_photo_edit', photo: '' + ph.id + ''}, {stat: ['owner_photo.css', 'owner_photo.js', 'tagger.css', 'tagger.js']});">' getLang('photos_load_to_profile') + '</a>') : '') + '
photoEditAct '
+ ((ph.y_src || ph.y_) ? ('<a id="pv_large_link" onclick="Photoview.switchSize()">' getLang(vk.pvbig 'photos_smaller' 'photos_larger') + '</a>') : '') + '
share '
+ (ph.actions.del ? ('<a id="pv_delete_link" onclick="Photoview.deletePhoto()"><div class="progress fl_r" id="pv_delete_progress"></div>' getLang('global_delete') + '</a>') : '') + '
+ (ph.actions.spam ? ('<a id="pv_spam_link" onclick="Photoview.spamPhoto(this.firstChild)"><div class="progress fl_r"></div>' getLang('its_spam') + '</a>') : '') + '
+ (ph.actions.rot ? ('<div id="pv_rotate"><div id="pv_rotate_progress" class="progress fl_r"></div>' getLang('photos_rotate') + '
    <span onclick="Photoview.rotatePhoto(1)" class="right"></span>
    <span onclick="Photoview.rotatePhoto(-1)" class="left"></span>
    <form method="POST" target="pv_rotate_frame" name="pv_rotate_form" id="pv_rotate_form"></form>
  </div>'
) : '') + '
</div>'
;

    var 
likeop = (ph.liked 0.4), likest browser.msie ? ('filter: alpha(opacity=' Math.floor(likeop 100) + ')') : ('opacity: ' likeop);

    var 
commstyle ''commshown ''commlink ''commclass '',
        
commslikes cur.pvCommsLikes[ph.id], comms commslikes[0], likes commslikes[1];;
    if (
ph.commcount ph.commshown) {
      
commshown getLang('photos_show_prev_comments'ph.commcount ph.commshown);
    } else {
      
commstyle ' style="display: none"';
    }

    
Wall.cancelEdit(true);

    var 
additional notAvail '<div class="clear">' getLang('photos_in_closed_album') + '</div>' '
<div id="pv_comments_header" class="clear ' 
commclass '"' commstyle ' onclick="Photoview.comments()">
  <div>' 
commshown '</div><div id="pv_comments_progress" class="progress"></div>
</div>
<div id="pv_comments" class="clear wall_module">' 
+ (comms.tagName '' comms) + '</div>'commsNode;

    var 
tagsst ph.tagshtml '' ' style="display: none"',
        
descText '<div' + (ph.actions.edit ? (' class="pv_can_edit" onclick="Photoview.editInline(event)"' + (ph.desc ? (' onmouseover="Photoview.descTT(this)"') : '')) : ' class="pv_cant_edit"') + '>' + (ph.desc || ('<span class="pv_desc_edit">' getLang('photos_edit_desc') + '</span>')) + '</div>',
        
placeText ph.place ? ('<span class="pv_place_label">' getLang('photos_place_label') + '</span> <a class="pv_place_a" id="pv_place_a" onclick="Photoview.showPlace()">' ph.place '</a>') : '',
        
addPlace ph.actions.place ? ('<span' + (placeText ' style="display: none;"' '') + ' id="pv_add_place"><span class="divider fl_l">|</span><a class="fl_l" id="pv_app_place_link" onclick="Photoview.editPlace();">' getLang('photos_edit_add_place') + '</a></span>') : '';
    
cur.pvWide.innerHTML '
<div id="pv_desc" style="' 
+ ((ph.actions.edit || ph.desc) ? '' 'display: none') + '">' descText '</div>
<div id="pv_place">' 
placeText '</div>
<div id="pv_tags"' 
tagsst '>' getLang('photos_onthisphoto') + ': ' ph.tagshtml '</div>
<div id="pv_inlineedit_prg" class="fl_r progress"></div>
<div id="pv_date_wrap" class="fl_l">' 
getLang('photos_added') + ' <span id="pv_date">' ph.date '</span></div>
addPlace + (cur.pvNoLikes '' '<span class="divider fl_l">|</span>
<div id="pv_like_wrap" class="fl_l" onmouseover="Photoview.likeOver()" onmouseout="Photoview.likeOut()" onclick="Photoview.like()">
  <span class="fl_l" id="pv_like_link">' 
getLang('photos_i_like') + '</span>
  <i class="fl_l' 
+ (likes '' ' nolikes') + '" id="pv_like_icon" style="' likest '"></i>
  <span id="pv_like_count" class="fl_l">' 
+ (likes || '') + '</span>
</div>'
) + (notAvail == '' additional);
    if (
comms.tagName) {
      
each(geByClass('page_gif_loading'comms), function() { Page.hideGif(thisfalse); });
      
commsNode ge('pv_comments');
      
domPN(commsNode).replaceChild(commscommsNode);
    }

    
extend(cur, {
      
pvTagLinkge('pv_tag_link'),
      
pvLikeIconge('pv_like_icon'),
      
pvLikeLinkge('pv_like_link'),
      
pvDescge('pv_desc'),
      
pvTagsge('pv_tags'),
      
pvEditingfalse
    
});

    if (
ph.deleted || !ph.author) {
      
cleanElems('pv_confirm_tag''pv_delete_tag''pv_prof_cancel''pv_prof_done');
      if (
ph.deleted) {
        
cur.pvTagInfo.innerHTML ph.deleted;
        
show(cur.pvTagInfo);
      }
      
hide(cur.pvCommentsDatacur.pvHH);
    } else if (
ph.taginfo) {
      
cleanElems('pv_confirm_tag''pv_delete_tag''pv_prof_cancel''pv_prof_done');
      
cur.pvTagInfo.innerHTML '
<table cellspacing="0" cellpadding="0"><tr>
<td class="info">' 
ph.taginfo '</td>
<td><nobr><div class="button_blue"><button id="pv_confirm_tag">' 
getLang('photos_confirm_tag') + '</button></div></td>
<td><nobr><div class="button_gray"><button id="pv_delete_tag">' 
getLang('photos_delete_tag') + '</button></div></td>
<td><div id="pv_tag_handling" class="progress"></div></td>
</tr></table>'
;
      
show(cur.pvTagInfocur.pvCommentsData);
      if (
Photoview.hhCheck()) show(cur.pvHH);
      
ge('pv_confirm_tag').onclick Photoview.confirmTag.pbind(ph.tagid);
      
ge('pv_delete_tag').onclick Photoview.deleteTag.pbind(ph.tagid);
    } else {
      
hide(cur.pvTagInfo);
      
show(cur.pvCommentsData);
      if (
Photoview.hhCheck()) show(cur.pvHH);
    }

    if (
notAvail || !ph.actions.comm) {
      
hide(cur.pvYourComment);
    } else {
      
show(cur.pvYourComment);
      
Wall.initComposer(cur.pvComment, {
        
lang: {
          
introTextgetLang('profile_mention_start_typing'),
          
noResultgetLang('profile_mention_not_found')
        },
        
wddClass'pv_composer_dd',
        
widthgetSize(domPN(cur.pvYourComment))[0],
        
media: {
          
lnkcur.pvAddMedia,
          
previewcur.pvMediaPreview,
          
typescur.pvMediaTypes,
          
options: {limit2disabledTypes: ['album'], toggleLnktrueonChange: function() {
            
setTimeout(Photoview.updateHeight2);
          }}
        }
      });
      
cur.pvCommentSend.onclick Photoview.sendComment;
      if (!
cur.pvComment.phevents) {
        
cur.pvComment.placeholder getLang('reply_to_post');
        
placeholderSetup(cur.pvComment);
      }
      if (!
cur.pvComment.autosize) {
        
autosizeSetup(cur.pvComment, {minHeight65onResizePhotoview.updateHeight});
      }
      if (
cur.pvCommenting && cur.pvCommenting != ph.id) {
        var 
replyToName = (cur.pvReplyNames[(cur.pvReplyTo || {})[0]] || [])[1];
        if (
replyToName && !replyToName.indexOf(trim(val(cur.pvComment)))) {
          
val(cur.pvComment'');
        }
        
cur.pvReplyTo false;
        
hide('pv_reply_to_title''pv_del_reply_to');

        
cur.pvCommenting false;
      }
      
toggle(cur.pvAsGroup, !!ph.actions.asgr);
    }

    
Photoview.updateArrows();
    if ((
cur.pvOptions || {}).scroll) {
      
layerWrap.scrollTop cur.pvOptions.scroll;
    }

    
setTimeout(Photoview.afterShow2);
  },
  
afterShow: function() {
    
Photoview.updateHeight();
    
setStyle(layer, {marginTop0});

    
cur.pvPhoto.href '/photo' cur.pvCurPhoto.id;
    
cur.pvPhoto.focus();

    if ((
cur.pvCurPhoto.actions.edit 4) && !cur.pvCurPhoto.desc) {
      
Photoview.editInline();
    }

    var 
cur.pvPhoto.firstChild.offsetLeftcur.pvPhoto.firstChild.offsetTop;
    
cur.pvTagFrame.innerHTML '<img style="width: ' cur.pvPhWidth 'px; height: ' cur.pvPhHeight 'px;" src="' cur.pvCurData.src '" />';
    
setStyle(cur.pvTagFaded, {
      
widthcur.pvPhWidth 'px',
      
heightcur.pvPhHeight 'px',
      
left'px',
      
top'px'
    
});
    var 
deltaX browser.mozilla && ((lastWindowWidth cur.pvActualWidth) % 2) && ((cur.pvActualWidth cur.pvPhWidth) % 2) ? 3;
    
setStyle(cur.pvTagFrame, {
      
left: (deltaX) + 'px'// 3 - tag frame border, mozilla buggy
      
top: (3) + 'px'
    
});
    
setStyle(cur.pvTagPerson, {
      
left'px',
      
top'px'
    
});

    if ((
cur.pvOptions || {}).scroll) {
      
layerWrap.scrollTop cur.pvOptions.scroll;
      
cur.pvOptions.scroll 0;
    }

    
Photoview.updateLoc();
  },
  
updateLoc: function() {
    var 
nllistId cur.pvListId;
    if (
cur.pvRoot) {
      
nl = {0'photo' cur.pvCurPhoto.id};
      if (
listId.substr(06) == 'photos') {
        
nl.all 1;
      } else if (
listId.substr(03) == 'tag') {
        
nl.tag intval(listId.substr(3));
      } else if (
listId.substr(06) == 'newtag') {
        
nl.newtag intval(listId.substr(6));
      }
      if (
listId.indexOf('/rev') != -1) {
        
nl.rev 1;
      }
    } else {
      
nl extend(nav.objLoc, {z'photo' cur.pvCurPhoto.id '/' cur.pvListId});
    }

    if (
nav.strLoc != nav.toStr(nl)) {
      if (!
cur.pvNoHistory) {
        ++
cur.pvHistoryLength;
      }
      
nav.setLoc(nl);
      if ((
cur.pvOptions || {}).fromQueue) {
        
cur.pvNoHistory true;
        
cur.pvHistoryLength 0;
      }
    }
    if (
cur.pvOptionscur.pvOptions.fromQueue false;
  },

  
canFullscreen: function() {
    var 
browserfloatval(browser.version);
    return (
b.chrome && 15) ||
      (
b.mozilla && 9) ||
      (
b.safari && && !b.mobile);
  },
  
fullscreenOnLoad: function() {
    if (
window.FullscreenPV) {
      
FullscreenPV.slide();
    }
  },
  
fullscreenEnd: function(finishing) {
    var 
el cur.pvCanvas;
    if (!
el) return;
    
cleanElems(el);
    
re(el);
    
clearTimeout(cur.pvFSTimer);
    
clearTimeout(cur.pvFSControlsTimer);
    
cur.pvCanvas cur.pvFSControls cur.pvFSTimer cur.pvFSControlsTimer false;
    
removeEvent(document'webkitfullscreenchange mozfullscreenchange fullscreenchange webkitfullscreenerror mozfullscreenerror fullscreenerror');
    
show(pageNode);
    if (
cur.pvScrWasY !== undefined) {
      
scrollToY(cur.pvScrWasY0);
      
delete cur.pvScrWasY;
    }
    if (
finishing !== true) {
      
Photoview.updateSize();
      
Photoview.show(cur.pvListIdcur.pvIndex);
    }
  },
  
fullscreen: function() {
    if (
cur.pvCanvas) return;
    var 
el cur.pvCanvas bodyNode.appendChild(ce('div', {className'fixed'id'pv_fullscreen'innerHTML'<div></div>'})), method el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullScreen;

    
cur.pvFinishing false;
    
stManager.add(['fullscreen_pv.css''fullscreen_pv.js'], function() {
      
FullscreenPV.init();
    });

    
addEvent(document'webkitfullscreenchange mozfullscreenchange fullscreenchange'Photoview.onFullscreen);
    
addEvent(document'webkitfullscreenerror mozfullscreenerror fullscreenerror'Photoview.fullscreenEnd.pbind(true));

    try {
      
method.call(el);
    } catch(
e) {
      
cur.pvPartScreen true;
      
Photoview.onFullscreen();
    }
  },
  
fullscreenStop: function(finishing) {
    
cur.pvFinishing = (finishing === true);
    
cur.pvPartScreen false;
    var 
method document.exitFullscreen || document.mozCancelFullScreen || document.webkitCancelFullScreen;
    try {
      
method();
    } catch(
e) {
      
Photoview.onFullscreen();
    }
    
Photoview.fullscreenEnd();
  },
  
onFullscreen: function() {
    if (
document.fullScreenElement || document.mozFullScreen || document.webkitIsFullScreen || cur.pvPartScreen) {
      if (
cur.pvTagger) {
        
Phototag.stopTag();
      }
      
vk.oldpvbig vk.pvbig;
      
vk.pvbig true;
      
cur.pvScrWidth cur.pvCanvas.offsetWidth;
      
cur.pvScrHeight cur.pvCanvas.offsetHeight;
      
cur.pvScrWasY scrollGetY();
      
hide(pageNode);
      if (!
cur.pvFinishing) {
        
Photoview.updateSize();
        
Photoview.show(cur.pvListIdcur.pvIndex);
      }
    } else {
      
vk.pvbig vk.oldpvbig;
      
Photoview.fullscreenEnd(cur.pvFinishing);
    }
  },

  
showShare: function() {
    
clearTimeout(cur.hideShareTimer);
    var 
dd ge('pvs_dd');
    
ge('pv_share').blur();
    if (
isVisible(dd)) {
      return 
fadeIn(dd0);
    }
    
setTimeout(addEvent.pbind(document'click'Photoview.hideShare), 1);
    
show(dd);
  },
  
hideShare: function(timeout) {
    if (
timeout 0) {
      
cur.hideShareTimer setTimeout(Photoview.hideShare.pbind(0), timeout);
      return;
    }
    var 
dd ge('pvs_dd');
    if (!
dd) return;
    if (
timeout == -1) {
      
hide(dd);
    } else {
      
fadeOut(dd200);
    }
    
removeEvent(document'click'Photoview.hideShare);
  },
  
savePhoto: function() {
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    
ajax.post('al_photos.php', {act'save_me'photoph.id, list: listIdhashph.hash}, {progress'pv_share_prg'onDoneshowDoneBox});
  },
  
sendPhoto: function() {
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    
showBox('like.php', {act'publish_box'object'photo' ph.id, list: listIdto'mail'}, {stat: ['page.js''page.css''wide_dd.js''wide_dd.css''sharebox.js']});
  },

  
setTags: function(tags) {
    
Photoview.hideTag();
    if (!
tags) {
      
hide(cur.pvTags);
      return;
    }
    
show(cur.pvTags);
    if (
window.tooltips) {
      
each(geByClass('delete'cur.pvTags), function() {
        
tooltips.destroy(this);
      });
    }
    
cur.pvTags.innerHTML getLang('photos_onthisphoto') + ': ' tags;
  },
  
preload: function(fromdirection) {
    
window.updateWndVScroll && updateWndVScroll(); // Because called on photo load
    
var listId cur.pvListIdcount = ((cur.pvData || {})[listId] || {}).length;
    if (!
count) return;

    var 
s1 vk.pvbig ? (cur.pvVeryBig 'z' : (cur.pvVeryBig 'z' 'y')) : 'x';
    var 
s2 vk.pvbig ? (cur.pvVeryBig 'z' : (cur.pvVeryBig 'y' 'x')) : 0;
    var 
s3 vk.pvbig ? (cur.pvVeryBig 'y' : (cur.pvVeryBig 'x' 0)) : 0;

    
cur.pvLastFrom from;
    
cur.pvLastDirection direction;

    
// remove preloaded ones without touching preloading ones
    
for (var 0Math.min(Photoview.cacheSizecount Photoview.cacheSize); ++i) {
      var 
ind from + (1) * (-direction);
      while (
ind >= countind -= count;
      while (
ind 0ind += count;

      var 
cur.pvData[listId][ind];
      if (!
p) continue;
      for (var 
0Photoview.allSizes.lengthl; ++j) {
        var 
Photoview.allSizes[j];
        if (
p[s] && p[s].src) {
          
p[s].src Photoview.blank;
          
delete(p[s]);
        }
      }
    }
    for (var 
0Photoview.cacheSize; ++i) {
      var 
ind from + (1) * direction;
      while (
ind >= countind -= count;
      while (
ind 0ind += count;

      var 
cur.pvData[listId][ind];
      if (!
|| !p.id) {
        if (!
|| (vkNow() - 3000)) {
          
cur.pvData[listId][ind] = vkNow();
          
setTimeout(function() {
            
ajax.post('al_photos.php', {act'show', list: listIdoffsetPhotoview.realOffset(listIdind, -1), directiondirection}, {onDonePhotoview.loaded});
          }, 
10);
        }
        break;
      }

      if (
p[s1]) continue;
      if (
p[s1 '_src']) {
        
p[s1] = vkImage();
        
p[s1].src p[s1 '_src'];
        continue;
      } else {
        
p[s1] = 1;
      }

      if (
p[s2]) continue;
      if (
p[s2 '_src']) {
        
p[s2] = vkImage();
        
p[s2].src p[s2 '_src'];
        continue;
      } else {
        
p[s2] = 1;
      }

      if (
p[s3]) continue;
      if (
p[s3 '_src']) {
        
p[s3] = vkImage();
        
p[s3].src p[s3 '_src'];
        continue;
      } else {
        
p[s3] = 1;
      }

      if (
p.x) continue;
      
p.vkImage();
      
p.x.src p.x_src;
    }
  },
  
hide: function(noLocfromQueue) {
    if (!
cur.pvShown || __afterFocus && fromQueue !== true) return;
    if (
cur.pvCanvasPhotoview.fullscreenStop(true);

    if ((
cur.pvJumpTo || {}).== 'albums' val('pva_owner') && !cur.pvAlbumsShown && noLoc === 0) {
      return 
Photoview.jumpToAlbums(true);
    }
    if ((
cur.pvJumpTo || {}).== 'album' val('pvsa_album') && !cur.pvAlbumShown && noLoc === 0) {
      return 
Photoview.jumpToAlbum(true);
    }
    if ((
cur.pvJumpTo || {}).== 'tag' val('pvsa_tag') && !cur.pvPhotoTagShown && noLoc === 0) {
      return 
Photoview.jumpToTagged(true);
    }
    if (
cur.pvListId == 'temp') {
      
cur.pvCancelLoad();
    } else if (!
cur.pvNoHistory && !noLoc && cur.pvHistoryLength && cur.pvHistoryLength 10) {
      
cur.pvNoHistory true;
      
__adsLoaded 0;
      return 
history.go(-cur.pvHistoryLength);
    }

    if (
noLoc !== true && !layerQueue.count()) {
      var 
newLoc;
      if (
cur.pvRoot) {
        if (
cur.pvListId.substr(06) == 'newtag') {
          
newLoc 'albums' vk.id '?act=added';
          if (
cur.pvListId.indexOf('/rev') != -1) {
            
newLoc += '&rev=1';
          }
        } else {
          
newLoc cur.pvListId.replace('/rev''?rev=1');
        }
        
nav.setLoc(newLoc);
      } else {
        
newLoc = clone(nav.objLoc);
        
delete(newLoc.z);
      }
      if (
nav.strLoc != nav.toStr(newLoc)) {
        
nav.setLoc(newLoc);
      }
      
__adsLoaded 0;
    }

    
window.__pvhideTimer setTimeout(Photoview.doHide.pbind(cur), 0);
    
__adsUpdate();

//    if (window.wkcur && wkcur.scrollTop) {
//      setTimeout(function() {
//        window.wkLayerWrap.scrollTop = wkcur.scrollTop;
//        wkcur.scrollTop = false;
//      }, 0);
//    }
    
if (cur.pvHHMove) {
      
removeEvent(layer'mousemove'Photoview.photoAct);
      
cur.pvHHMove false;
    }
    
cur.pvAlbumsShowing cur.pvAlbumsShown false;
    
cur.pvAlbumShowing cur.pvAlbumShown false;
    
cur.pvPhotoTagShowing cur.pvPhotoTagShown false;
    
cur.pvVideoTagShowing cur.pvVideoTagsShown false;
  },
  
doHide: function(c) {
    
c.pvHistoryLength 0;
    if (
cur.pvTaggerPhototag.stopTag();
    
cleanElems('pv_confirm_tag''pv_delete_tag''pv_prof_cancel''pv_prof_done');
    if (
c.pvFriends) {
      
cleanElems('pv_add_tag''pv_cancel_tag'c.pvFriends.firstChild.firstChildc.pvFriends);
      
re(c.pvFriends);
      
c.pvFriends c.pvFriendName false;
    }

    
Wall.cancelEdit(true);

    
removeEvent(c.pvPhoto'mousemove'Photoview.onMouseMove);

    
// remove preloaded
    
var listId c.pvListIdcount = ((c.pvData || {})[listId] || {}).length;
    if (
c.pvLastDirection && count) {
      for (var 
0Photoview.cacheSize; ++i) {
        var 
ind c.pvLastFrom + (1) * c.pvLastDirection;
        while (
ind >= countind -= count;
        while (
ind 0ind += count;

        var 
c.pvData[listId][ind];
        if (!
p) continue;
        for (var 
0Photoview.allSizes.lengthl; ++j) {
          var 
Photoview.allSizes[j];
          if (
p[s] && p[s].src) {
            
p[s].src Photoview.blank;
            
delete(p[s]);
          }
        }
      }
      
c.pvLastDirection c.pvLastFrom false;
    }
    
debugLog('hiding layers');

    
cur.pvYourComment re(cur.pvYourComment);

    
layers.hide();
    
layers.fullhide false;

    
Photoview.hideTag(true);
    
each(['pvLeft''pvClose''pvSwitch''pvFixed'], function() {
      var 
this '';
      
re(c[n]);
      
c[n] = false;
    });
    if (
window.tooltips) {
      
tooltips.destroyAll(cur.pvBox);
    }

    if (
browser.mobile) {
      
ge('footer').style.height '';
    }

    var 
colorClass vk.pvdark 'pv_dark' 'pv_light';
    
removeClass(layerWrapcolorClass);
    
removeClass(layerBGcolorClass);
    
layerBG.style.opacity '';

    
c.pvShown c.pvListId c.pvClicked false;
    
removeEvent(window'resize'Photoview.onResize);
    
removeEvent(document'keydown'Photoview.onKeyDown);
    
removeEvent(layerWrap'click'Photoview.onClick);
    
removeEvent(layerWrap'scroll'Photoview.scrollResize);

//    if (window.wkcur && wkcur.shown) {
//      WkView.showLayer();
//    }
    
var onh cur.pvOptions && cur.pvOptions.onHide;
    if (
cur.pvOptions) {
      var 
onh cur.pvOptions.onHide;
      
cur.pvOptions.onHide false;
      if (
onhonh();
    }
    
layerQueue.pop();

    if (
c.pvPreloaded && === cur) {
      var 
cont ge('photos_container'), ce('div', {innerHTMLc.pvPreloaded});
      while (
d.firstChild) {
        
cont.appendChild(d.firstChild);
      }
      if (
cont.qsorter) {
        
setTimeout(qsorter.added.pbind(cont), 0);
      }
      
c.pvPreloaded false;
    }
  },
  
editPhoto: function() {
  },
  
descTT: function(el) {
    return 
showTooltip(el, {
      
textgetLang('photos_edit_desc'),
      
black1,
      
shift: [240],
      
showdt0
    
});
  },
  
editInline: function(evnoreq) {
    if (((
ev || window.event || {}).target || {}).tagName == 'A' || cur.pvEditing) return;

    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index], noreq = !ph.desc;
    var 
onDone = function(text) {
      if (!
cur.pvShown || cur.pvListId != listId || cur.pvIndex != index || cur.pvEditing) return;

      
cur.pvEditing = [listIdindex];
      var 
mrg '0px 0px 0px'taStyle '';
      if (
browser.chrome) {
        
mrg '0px 0px -5px';
        
taStyle ' style="padding-bottom: 0px"';
      } else if (
browser.mozilla) {
        
mrg '0px -1px 0px';
      } else if (
browser.msie) {
        
mrg '0px 0px -6px';
      }
      var 
el cur.pvDesc.appendChild(ce('div', {innerHTML'
<div style="margin: ' 
mrg '">
  <textarea id="pv_edit_text"' 
taStyle ' onkeydown="onCtrlEnter(event, Photoview.saveInline)" placeholder="' getLang('photos_edit_desc_intro') + '">' text '</textarea>
</div>'
}, {display'none'})), txt ge('pv_edit_text');
      
placeholderSetup(txt, {back1});
      
autosizeSetup(txt, {minHeight13});
      
setTimeout(function() {
        
show(el);
        
elfocus(txt);
        
addEvent(txt'blur'Photoview.saveInline);
        
hide(cur.pvDesc.firstChild);
      }, 
1);
    };
    if (!
noreq) {
      
ajax.post('al_photos.php', {act'edit_desc'photoph.id}, {onDoneonDoneprogress'pv_inlineedit_prg'});
    } else {
      
onDone('');
    }
  },
  
cancelInline: function() {
    
cur.pvEditing false;
    
removeEvent(ge('pv_edit_text'), 'blur');
    
show(cur.pvDesc.firstChild);
    
re(cur.pvDesc.firstChild.nextSibling);
  },
  
saveInline: function() {
    if (!
cur.pvEditing) return;
    
removeEvent(ge('pv_edit_text'), 'blur');

    var 
listId cur.pvEditing[0], index cur.pvEditing[1], ph cur.pvData[listId][index];
    
ajax.post('al_photos.php', {act'save_desc'photoph.idhashph.hashtextval('pv_edit_text')}, {onDone: function(text) {
      
ph.desc text;

      var 
shown cur.pvShown && listId == cur.pvListId && index == cur.pvIndex;
      if (!
shown) return;

      
cur.pvEditing false;
      var 
domFC(cur.pvDesc);
      
val(dtext || ('<span class="pv_desc_edit">' getLang('photos_edit_desc') + '</span>'));
      
d.onmouseover text Photoview.descTT.pbind(d) : function() {};
      
show(d);
      
re(domNS(d));
    }, 
progress'pv_inlineedit_prg'});
  },

  
cmp: function(id1id2) {
    var 
l1 id1.lengthl2 id2.length;
    if (
l1 l2) {
      return -
1;
    } else if (
l1 l2) {
      return 
1;
    } else if (
id1 id2) {
      return -
1;
    } else if (
id1 id2) {
      return 
1;
    }
    return 
0;
  },
  
receiveComms: function(listIdindextextnamesnoOldtoUp) {
    if (
listId != cur.pvListId || index != cur.pvIndex) return;

    var 
ce('div', {innerHTMLtext}), comms ge('pv_comments'), last current domLC(comms), frm getXY(currenttrue)[1], ph cur.pvData[listId][index];
    for (var 
el domLC(n); elel domLC(n)) {
      if (
ph.actions.commaddClass(el'reply_replieable');
      while (
current && Photoview.cmp(current.idel.id) > 0) {
        
current domPS(current);
      }
      if (
current && !Photoview.cmp(current.idel.id)) {
        
comms.replaceChild(elcurrent);
        
current el;
      } else {
        if (
current && domNS(current)) {
          
comms.insertBefore(eldomNS(current));
        } else if (!
current && domFC(comms)) {
          if (
noOld === true) {
            --
ph.commshown;
            
n.removeChild(el);
          } else {
            
comms.insertBefore(eldomFC(comms));
          }
        } else {
          
comms.appendChild(el);
        }
        ++
ph.commshown;
      }
    }
    if (
toUp && last) {
      
layerWrap.scrollTop += getXY(lasttrue)[1] - frm;
    }
    
cur.pvCommsLikes[ph.id][0] = comms;
    
extend(cur.pvReplyNamesnames);
    
Photoview.updateComms();
  },
  
commSaved: function(post) {
    if (!
cur.pvShown) return;
    var 
comms ge('pv_comments'), ph comms cur.pvData[cur.pvListId][cur.pvIndex] : falsecomm post.match(/^(-?d+)photo(_d+)/);
    if (!
ph || !comm || !ge('pv_comment' comm[1] + comm[2])) return;
    
cur.pvCommsLikes[ph.id][0] = comms;
  },
  
comments: function(showcomm) {
    if (
showcomm) {
      var 
frst domFC(ge('pv_comments')).id || '';
      if (
        !
isVisible('pv_comments_header') ||
        
isVisible('pv_comments_progress') ||
        
Photoview.cmp(frst'pv_comment' showcomm) < 0
      
) {
        return;
      }
    }
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    var 
prg ge('pv_comments_progress');
    
ajax.post('al_photos.php', {act'photo_comments'offsetph.commshownphotoph.id}, {
      
onDone: function(textnames) {
        
Photoview.receiveComms(listIdindextextnamesfalseshowcomm);
        if (
showcomm && ge('pv_comment' showcomm)) {
          
Photoview.showComment(showcomm);
        }
      },
      
showProgress: function() {
        
hide(prg.previousSibling);
        
show(prg);
      }, 
hideProgress: function() {
        
hide(prg);
        
show(prg.previousSibling);
      }
    });
  },
  
updateComms: function() {
    
setTimeout(Photoview.updateHeight2);

    var 
ph cur.pvData[cur.pvListId][cur.pvIndex];
    var 
commshown ''commprg ge('pv_comments_progress'), commheader ge('pv_comments_header');
    if (
ph.commcount ph.commshown) {
      
commshown getLang('photos_show_prev_comments'ph.commcount ph.commshown);
    }
    (
commshown show hide)(commheader);
    
domPS(commprg).innerHTML commshown;
  },
  
commentClick: function(eleventfrom) {
    var 
comm el.id.replace('pv_comment'''), cmnt comm.split('_');
    if (
Wall.checkReplyClick(elevent)) return;

    var 
moreLink geByClass1('wall_reply_more'el'a');
    if (
moreLink && isVisible(moreLink)) {
      
removeClass(el'reply_moreable');
      
moreLink.onclick();
      return;
    }
    if (
from && cmnt[1] && isVisible(cur.pvYourComment)) {
      
Photoview.commentTo(commfromevent);
    }
  },
  
commentChanged: function() {
    
checkTextLength(cur.pvCommLimitcur.pvCommentge('pv_comment_warn'));
    
cur.pvCommenting cur.pvData[cur.pvListId][cur.pvIndex].id;
  },
  
commentTo: function(commtoIdevent) {
    var 
cmnt = (comm || '').split('_'), commId cmnt[1], ph cur.pvData[cur.pvListId][cur.pvIndex], replyNameOld cur.pvReplyTo && cur.pvReplyNames[cur.pvReplyTo[0]] || ''replyName cur.pvReplyNames[toId] || ''rf cur.pvCommenttl ge('pv_reply_to_title');

    
cur.pvCommenting ph.id;

    if (
comm) {
      
cur.pvReplyTo = [toIdcommId];
      
val(tlreplyName[0]);
      
show(tl'pv_del_reply_to');
      
setStyle(tl, {maxWidthge('pv_comment_submit').offsetWidth domPN(ge('pv_comment_send')).offsetWidth - (isVisible(cur.pvAsGroup) ? cur.pvAsGroup.offsetWidth 0) - domPN(cur.pvAddMedia).offsetWidth 31});
    } else {
      
cur.pvReplyTo false;
      
hide(tl'pv_del_reply_to');
    }

    var 
trim(val(rf)), cEl comm && geByClass1('pv_reply_to'ge('pv_comment' comm));
    if (!
|| replyNameOld && !winToUtf(replyNameOld[1]).indexOf(v)) {
      
val(rf, (comm && !checkEvent(event)) ? replaceEntities(replyName[1]) : '');
    }
    
toggleClass(cur.pvAsGroup'on', !!(ph.actions.asgr && cEl && cEl.getAttribute('rid') === cmnt[0]));
    
elfocus(rf);
  },
  
sendComment: function() {
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index],
        
fld cur.pvCommentcomp fld && data(fld'composer'),
        
params comp Composer.getSendParams(compPhotoview.sendComment) : {messagetrim(val(fld))},
        
replyToName = (cur.pvReplyNames[(cur.pvReplyTo || {})[0]] || [])[1], btn 'pv_comment_send';

    if (
params.delayed) return;

    if (!
params.attach1_type && (!params.message || replyToName && !replyToName.indexOf(params.message))) {
      
elfocus(fld);
      return;
    }

    
hide('pv_comment_warn');
    
ajax.post('al_photos.php',  Wall.fixPostParams(extend(params, {
      
act'post_comment',
      
photoph.id,
      
hashph.hash,
      
fromview1,
      
from_groupisVisible(cur.pvAsGroup) ? isChecked(cur.pvAsGroup) : '',
      
reply_to: (cur.pvReplyTo || {})[1]
    })), {
onDone: function(textnames) {
      ++
ph.commcount;
      
Photoview.receiveComms(listIdindextextnamestrue);
      if (
data(cur.pvComment'composer')) {
        
Composer.reset(data(cur.pvComment'composer'));
      } else {
        
val(cur.pvComment'');
      }
      
cur.pvComment.blur();
      
cur.pvReplyTo false;
      
hide('pv_reply_to_title''pv_del_reply_to');
    }, 
showProgresslockButton.pbind(btn), hideProgressunlockButton.pbind(btn)});
  },
  
highlightComment: function(el) {
    
el ge(el);
    if (!
el) return;

    var 
hlfunc animate.pbind(el, {backgroundColor'#ECEFF3'}, 200, function() {
      
setTimeout(function() {
        
animate(el, {backgroundColor'#FFF'}, 200, function() {
          
setStyle(el, {backgroundColor''});
        });
      }, 
1000);
    }), 
top getXY(eltrue)[1];

    if (
top || top lastWindowHeight 200) {
      
animate(layerWrap, {scrollToplayerWrap.scrollTop top 50}, 300hlfunc);
    } else {
      
hlfunc();
    }
  },
  
showComment: function(comm) {
    var 
ge('pv_comment' comm);
    if (
p) {
      
Photoview.highlightComment(p);
    } else {
      
Photoview.comments(comm);
    }
    return 
false;
  },
  
commDone: function(commcontexttextdel) {
    var 
node ge('pv_comment' comm context);
    if (!
node) return;

    var 
msg node.firstChild.nextSiblingph context false cur.pvData[cur.pvListId][cur.pvIndex];
    if (!
text) {
      
show(node.firstChild);
      
hide(msg);
      if (
ph) {
        ++
ph.commcount;
        ++
ph.commshown;
        
Photoview.updateComms();
      } else if (
window.photos && cur.offset) {
        
photos.recache(cur.offset1);
      }
      return;
    }
    if (
msg) {
      
msg.innerHTML text;
      
show(msg);
    } else {
      
node.appendChild(ce('div', {innerHTMLtext}));
    }
    
hide(node.firstChild);
    if (
del) {
      if (
ph) {
        --
ph.commshown;
        --
ph.commcount;
        
Photoview.updateComms();
      } else if (
window.photos && cur.offset) {
        
photos.recache(cur.offset, -1);
      }
    } else {
      
Photoview.updateHeight();
    }
    if (
ph) {
      
cur.pvCommsLikes[ph.id][0] = ge('pv_comments');
    }
  },
  
commProgress: function(commsh) {
    var 
acts ge('pv_actions' comm);
    if (!
acts) return;

    var 
prg acts.firstChild.nextSibling;
    if (
sh !== true) {
      
hide(prg);
      
show(acts.firstChild);
      return;
    }
    
hide(acts.firstChild);
    if (!
prg) {
      
prg acts.appendChild(ce('div', {className'progress'}));
    }
    
show(prg);
  },
  
commParams: function(commcontext) {
    return {
      
onDonePhotoview.commDone.pbind(commcontext),
      
progress'pv_progress' comm context
    
}
  },
  
commAction: function(actcommcontexthash) {
    if (
isVisible('pv_progress' comm context)) return;
    
ajax.post('al_photos.php', {actact '_comment'commentcommcontextcontexthashhash}, Photoview.commParams(commcontext));
  },

  
onClick: function(eskipClicked) {
    if (
cur.pvClicked && !skipClicked || __afterFocus) {
      
cur.pvClicked false;
      return;
    }
    if (
&& (e.button == || e.which == || e.pvHandle)) return;
    if (
ee.pvHandle true;
    var 
px e.pageXpy e.pageY;
    if (
px == null && e.clientX != null) {
      var 
doc document.documentElementbody bodyNode;
      
px event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
      
py event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
    }
    var 
dx Math.abs(px intval(cur.pvOldX));
    var 
dy Math.abs(py intval(cur.pvOldY));
    if (
dx || dy 3) {
      if (
vkNow() - intval(cur.pvOldT) > 300) {
        if (
cur.pvTagger) {
          
Phototag.stopTag();
        } else {
          
Photoview.hide(0);
        }
      }
    }
  },
  
onMouseMove: function(ev) {
    var 
el cur.pvPhoto.firstChild;
    if (
cur.pvTagger || !el) return;

    var 
elemXY getXY(el), ph cur.pvData[cur.pvListId][cur.pvIndex];
    var 
= (ev.pageX elemXY[0]) * 100 cur.pvPhWidth= (ev.pageY elemXY[1]) * 100 cur.pvPhHeight;
    for (var 
i in ph.tags) {
      var 
coords ph.tags[i];
      if (
coords[0] && coords[2] && coords[1] && coords[3]) {
        
Photoview.showDynTag(i);
        return;
      }
    }
    
Photoview.hideTag();
  },
  
onKeyDown: function(e) {
    if (
e.returnValue === false) return false;
    if (
e.keyCode == KEY.ESC && cur.pvEditing) {
      
Photoview.cancelInline();
      return 
cancelEvent(e);
    }
    if (
e.altKey && e.keyCode == KEY.RETURN && Photoview.canFullscreen()) {
      (
cur.pvCanvas Photoview.fullscreenStop() : Photoview.fullscreen());
    }
    if (
e.target && (e.target.tagName == 'INPUT' || e.target.tagName == 'TEXTAREA')) {
      return 
true;
    }
    if (
e.keyCode == KEY.ESC) {
      if (
cur.pvCanvas) {
        
Photoview.fullscreenStop();
      } else if (
cur.pvTagger) {
        
Phototag.stopTag();
      } else if (!
e.vkCanceled && !curBox()) {
        
Photoview.hide(0);
      }
      return 
cancelEvent(e);
    } else if (!
cur.pvTagger && !boxQueue.count() && (!cur.pvComment || !cur.pvComment.focused)) {
      if (
e.keyCode == KEY.RIGHT) {
        
Photoview.show(cur.pvListIdcur.pvIndex 1);
      } else if (
e.keyCode == KEY.LEFT) {
        
Photoview.show(cur.pvListIdcur.pvIndex 1);
      }
    }
  },
  
onResize: function() {
    var 
dwidth lastWindowWidthdheight lastWindowHeightsbw sbWidth();
    if (
cur.pvCanvas) {
      var 
sizeChanged falseoldverybig cur.pvVeryBigcur.pvCanvas.offsetWidthcur.pvCanvas.offsetHeight;
      
cur.pvVeryBig = (1280 || 1280) ? : ((807 || 807) ? false);
      if (
sizeChanged = (oldverybig != cur.pvVeryBig)) {
        
setTimeout(Photoview.preload.pbind(cur.pvIndexcur.pvLastDirection || 1), 10);
      }
      return;
    }
    if (
cur.pvAlbumsShown || cur.pvAlbumShown || cur.pvPhotoTagShown) {
      
cur.pvActualWidth cur.pvsaMini 536 804;
      
cur.pvCont.style.width = (cur.pvActualWidth 154) + 'px';
      
cur.pvSummary.parentNode.style.width = (cur.pvActualWidth 4) + 'px';
    } else if (
vk.pvbig) {
      var 
dwidth sbw 120 34 50dheight 31 28 72;
      if (
1280) { // less than full hd - not size > 2
        
1280;
      } else if (
807 && 907) { // 1024x768 - not size > 1
        
807;
      } else if (
604) {
        
604;
      }
      if (
453) {
        
453;
      }
      
cur.pvWidth w;
      
cur.pvHeight h;

      var 
sizeChanged falseoldverybig cur.pvVeryBig;
      
cur.pvVeryBig = (1280) ? : (807 false);
      
sizeChanged = (oldverybig != cur.pvVeryBig);

      var 
lnk cur.pvPhoto;
      if (
lnk && lnk.firstChild && cur.pvCurData.src == lnk.firstChild.src && cur.pvCurData.width) {
        var 
= (cur.pvCurData.width cur.pvWidth) ? (cur.pvWidth cur.pvCurData.width) : 1;
        if (
cur.pvCurData.height cur.pvHeight) {
          
cur.pvHeight cur.pvCurData.height;
        }
        var 
cur.pvPhWidth Math.floor(cur.pvCurData.width c);
        var 
cur.pvPhHeight Math.floor(cur.pvCurData.height c);
        
cur.pvActualWidth Math.max(604w);

        if (
vk.pvbig) {
          
cur.pvCont.style.width = (cur.pvActualWidth 154) + 'px';
          
cur.pvSummary.parentNode.style.width = (cur.pvActualWidth 4) + 'px';
        }

        
lnk.style.height Math.max(453h) + 'px';
        
lnk.firstChild.style.width 'px';
        
lnk.firstChild.style.height 'px';
        if (
cur.pvTagger && cur.pvTagger != 'loading') {
          
cur.pvTagger.resize(wh);
        }

        var 
lnk.firstChild.offsetLeftlnk.firstChild.offsetTop;
        if (
browser.msie7 || browser.msie6) {
          
+= lnk.offsetLeft;
          
+= lnk.offsetTop;
        }
        
setStyle(cur.pvTagFrame.firstChild, {
          
width'px',
          
height'px'
        
});
        
setStyle(cur.pvTagFaded, {
          
width'px',
          
height'px',
          
left'px',
          
top'px'
        
});
        
setStyle(cur.pvTagFrame, {
          
left: (3) + 'px'// 3 - tag frame border
          
top: (3) + 'px'
        
});
        
setStyle(cur.pvTagPerson, {
          
left'px',
          
top'px'
        
});

        if (
sizeChanged) {
          
setTimeout(Photoview.preload.pbind(cur.pvIndexcur.pvLastDirection || 1), 10);
        }
      } else {
        
cur.pvActualWidth intval(getStyle(cur.pvBox'width'));
      }
    }
    if (!
cur.pvPhoto) return;
    if (
browser.mozilla && cur.pvPhoto.firstChild) {
      var 
cur.pvPhoto.firstChild.offsetLeftdeltaX = ((lastWindowWidth cur.pvActualWidth) % 2) && ((cur.pvActualWidth cur.pvPhWidth) % 2) ? 3;
      
setStyle(cur.pvTagFrame, {
        
left: (deltaX) + 'px' // 3 - tag w border, mozilla buggy
      
});
    }
    
Photoview.updateArrows();
    
Photoview.updateHeight();
    
cur.pvHH.style.marginLeft Math.ceil((cur.pvActualWidth 50 72) / 2) + 'px';

    
Photoview.scrollResize();
//    if (ge('pv_date')) { // debug
//      ge('pv_date').innerHTML = lastWindowWidth + ' ' + cur.pvActualWidth + ' ' + cur.pvPhWidth;
//    }
  
},
  
updateSize: function() {
    if (!
vk.pvbig) {
      
cur.pvActualWidth 604;
      
cur.pvSummary.parentNode.style.width '600px';
      
cur.pvCont.style.width '758px';
      
cur.pvPhoto.innerHTML '';
    }
    
onBodyResize();
    
Photoview.onResize();
  },

  
switchSize: function() {
    
vk.pvbig = !vk.pvbig;

    
ge('pv_large_link').innerHTML getLang(vk.pvbig 'photos_smaller' 'photos_larger');
    if (
cur.pvTaggerPhototag.stopTag();
    
Photoview.updateSize();
    
Photoview.show(cur.pvListIdcur.pvIndex);
    if (
vk.id) {
      
clearTimeout(cur.pvSaveBig);
      
cur.pvSaveBig setTimeout(ajax.post.pbind('al_photos.php', {act'viewer_big'big: (vk.pvbig ''), hashcur.pvHash}), 1000);
    }
  },
  
switchColor: function(el) {
    var 
old vk.pvdark 'pv_dark' 'pv_light';
    
vk.pvdark = !vk.pvdark;
    var 
cl vk.pvdark 'pv_dark' 'pv_light';

    
setStyle(el'opacity'vk.pvdark 0.7);

    
layerBG.className layerBG.className.replace(oldcl);
    
layerWrap.className layerWrap.className.replace(oldcl);
    
cur.pvFixed.className cur.pvFixed.className.replace(oldcl);
    if (
vk.id) {
      
clearTimeout(cur.pvSaveColor);
      
cur.pvSaveColor setTimeout(ajax.post.pbind('al_photos.php', {act'viewer_color'dark: (vk.pvdark ''), hashcur.pvHash}), 1000);
    }
  },

  
activate: function(arrow) {
    if (
arrow && arrow.timeout) {
      
clearTimeout(arrow.timeout);
      
removeAttr(arrow'timeout');
    } else if (
isVisible(arrow)) {
      
fadeTo(arrow200vk.pvdark 0.7);
    }
  },
  
deactivate: function(arrow) {
    if (!
arrow || !isVisible(arrow) || arrow.timeout) {
      return;
    }
    
arrow.timeout setTimeout(function() {
      
removeAttr(arrow'timeout');
      
fadeTo(arrow2000.4);
    }, 
1);
  },

  
deletePhoto: function(sure) {
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index], box curBox();
    var 
prg box box.progress 'pv_delete_progress';
    if (
isVisible(prg)) return;

    if (
cur.pvTagger && ev !== false) {
      
Phototag.stopTag();
      return;
    }

    
ajax.post('al_photos.php', {act'delete_photo'photoph.idhashph.hashset_previsChecked('pvb_prev_check'), sureintval(sure)}, {onDone: function(texthtml) {
      if (
box) {
        
box.hide();
        return 
nav.go('/id0'false, {nocurtrue});
      }
      if (
html) {
        return 
showFastBox(texthtmlgetLang('global_delete'), Photoview.deletePhoto.pbind(1), getLang('global_cancel'));
      }
      
ph.deleted text;
      if (
listId == cur.pvListId && index == cur.pvIndex) {
        
cleanElems('pv_confirm_tag''pv_delete_tag''pv_prof_cancel''pv_prof_done');
        
cur.pvTagInfo.innerHTML ph.deleted;
        
show(cur.pvTagInfo);
        
hide(cur.pvCommentsData);
        
Photoview.updateHeight();
      }
    }, 
progressprg});
  },
  
restorePhoto: function() {
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    if (
isVisible('pv_restore_progress')) return;

    
ajax.post('al_photos.php', {act'restore_photo'photoph.idhashph.hash}, {onDone: function(text) {
      
ph.deleted false;
      if (
listId == cur.pvListId && index == cur.pvIndex) {
        
cleanElems('pv_confirm_tag''pv_delete_tag''pv_prof_cancel''pv_prof_done');
        if (
ph.taginfo) {
          
cur.pvTagInfo.innerHTML '
<table cellspacing="0" cellpadding="0"><tr>
  <td class="info">' 
ph.taginfo '</td>
  <td><nobr><div class="button_blue"><button id="pv_confirm_tag">' 
getLang('photos_confirm_tag') + '</button></div></td>
  <td><nobr><div class="button_gray"><button id="pv_delete_tag">' 
getLang('photos_delete_tag') + '</button></div></td>
  <td><div id="pv_tag_handling" class="progress"></div></td>
</tr></table>'
;
          
show(cur.pvTagInfo);
          
ge('pv_confirm_tag').onclick Photoview.confirmTag.pbind(ph.tagid);
          
ge('pv_delete_tag').onclick Photoview.deleteTag.pbind(ph.tagid);
        } else {
          
cur.pvTagInfo.innerHTML '';
          
hide(cur.pvTagInfo);
        }
        
show(cur.pvCommentsData);
        
Photoview.updateHeight();
      }
    }, 
progress'pv_restore_progress'});
  },
  
spamPhoto: function(prgspamHash) {
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    if (
isVisible(prg)) return;

    if (
cur.pvTagger && ev !== false) {
      
Phototag.stopTag();
      return;
    }

    
ajax.post('al_photos.php', {act'spam_photo'photoph.idhashph.hashspam_hashspamHash}, {onDone: function(textdel) {
      if (
delph.deleted text;
      if (
listId == cur.pvListId && index == cur.pvIndex) {
        
cleanElems('pv_confirm_tag''pv_delete_tag''pv_prof_cancel''pv_prof_done');
        
cur.pvTagInfo.innerHTML text;
        
show(cur.pvTagInfo);
        if (
delhide(cur.pvCommentsData);
        
Photoview.updateHeight();
      }
    }, 
progressprg});
  },
  
rotatePhoto: function(to) {
    var 
prg ge('pv_rotate_progress');
    if (
isVisible(prg)) return;

    
show(prg);
    
ge('pv_rotate').appendChild(ce('div', {id'pv_rotate_frame'className'upload_frame'innerHTML'<iframe name="pv_rotate_frame"></iframe>'}));
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index], form ge('pv_rotate_form');
    
form.innerHTML '';
    
form.action ph.rotate[0];
    var 
data extend({act'do_rotate'totolist_idlistIdindexindexfrom_hostlocHostfidph.id}, ph.rotate);
    
to = (to 4) % 4;
    if (
data.act == 'rotate_photo') {
      
data.angle = (data.angle to) % 4;
    }
    if (
data['rot'+to]) {
      
data.act 'done_rotate';
      
data.complete 1;
      
ajax.post('/al_photos.php'data, {
        
onDonePhotoview.rotateDone,
        
onFail: function() {
          
Photoview.rotateDone();
        }
      });
      return;
    }
    for (var 
i in data) {
      if (
!= 0) {
        
form.appendChild(ce('input', {type'hidden'nameivaluedata[i]}));
      }
    }
    
form.submit();
  },
  
rotateDone: function(data) {
    
hide('pv_rotate_progress');
    var 
el ge('pv_rotate_frame');

    if (!
el) return;
    
re(el);

    if (!
data) return;
    var 
listId data.list_idindex data.indexph cur.pvData[listId][index];
    
extend(ph, {x_srcdata.x_srcy_srcdata.y_srcz_srcdata.z_srcw_srcdata.w_srcbasedata.basex_data.x_y_data.y_z_data.z_w_data.w_x0y0z0w0tagsdata.tagstaggeddata.taggedtagshtmldata.html})
    
extend(ph.rotate, {photodata.photohashdata.hashrhashdata.rhashangledata.anglerot1data.rot1rot3data.rot3});
    if (
listId == cur.pvListId && index == cur.pvIndex) {
      
Photoview.show(listIdindex);
    }
  },

  
likeUpdate: function(mycounttitle) {
    
count intval(count);

    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    var 
countInput ge('like_real_count_photo' ph.id) || {}, rows ge('like_table_photo' ph.id);
    var 
titleNode ge('like_title_photo' ph.id), countNode ge('pv_like_count');
    var 
icon cur.pvLikeIcon;
    var 
tt icon.parentNode.tt || {}, opts = clone(tt.opts || {}), newleft = (my : -36);

    if (
title && titleNode) {
      
val(titleNodetitle);
    }
    
cur.pvCommsLikes[ph.id][1] = countInput.value count;
    
animateCount(countNodecount);

    
ph.liked my;
    (
my addClass removeClass)(cur.pvHH'pvs_hh_liked');
    if (!
my) {
      var 
cb ge('like_share_photo' ph.id);
      if (
cbcheckbox(cbfalse);
    } else {
      
setStyle(icon, {opacity1});
    }
    if (
count) {
      var 
styleName vk.rtl 'right' 'left';
      if (
tt.el && !isVisible(tt.container) && !title) {
        
rows.style[styleName] = newleft 'px';
        
tooltips.show(tt.elextend(opts, {showdt0}));
      } else if (
rows) {
        var 
params = {};
        
params[styleName] = newleft;
        
animate(rowsparams200);
      }
      
removeClass(icon'no_likes');
    } else {
      if (
tt.eltt.hide();
      
addClass(icon'no_likes');
    }
  },
  
like: function() {
    if (!
vk.id) return;
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index], my = !ph.liked;
    
ajax.post('like.php', {act'a_do_' + (my '' 'un') + 'like'object'photo' ph.idhashph.hashfrom'photo_viewer'}, {
      
onDone: function(counttitle) {
        if (
cur.pvListId == listId && cur.pvIndex == index) {
          return 
Photoview.likeUpdate(mycounttitle);
        }
        
cur.pvCommsLikes[ph.id][1] = count;
        
ph.liked my;
      }
    });
    
Photoview.likeUpdate(mycur.pvCommsLikes[ph.id][1] + (my : -1));
  },
  
likeShare: function(hash) {
    if (!
vk.id) return;
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    var 
el ge('like_share_photo' ph.id), was isChecked(el);
    
checkbox(el);
    
ajax.post('like.php', {act'a_do_' + (was 'un' '') + 'publish'object'photo' ph.id, list: listIdhashhashfrom'photo_viewer'}, {
      
onDone: function(counttitle) {
        if (
cur.pvListId == listId && cur.pvIndex == index) {
          return 
Photoview.likeUpdate(truecounttitle);
        }
        
cur.pvCommsLikes[ph.id][1] = count;
        
ph.liked true;
      }
    });
    
Photoview.likeUpdate(truecur.pvCommsLikes[ph.id][1] + (ph.liked 1));
  },
  
likeOver: function() {
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    var 
icon cur.pvLikeIcon;
    if (!
ph.liked) {
      
setTimeout(animate.pbind(icon, {opacity1}, 200false), 1);
    } else {
      
setStyle(icon, {opacity1});
    }
    var 
linkW cur.pvLikeLink.offsetWidth;

    
showTooltip(icon.parentNode, {
      
url'like.php',
      
params: {act'a_get_stats'object'photo' ph.id, list: listId},
      
slide15,
      
shift: [059],
      
ajaxdt100,
      
showdt400,
      
hidedt200,
      
className'rich like_tt',
      
init: function (tt) {
        if (!
tt.container) return;
        var 
bp geByClass1('bottom_pointer'tt.container'div');
        var 
tp geByClass1('top_pointer'tt.container'div');
        
setStyle(bp, {marginLeftlinkW 2});
        
setStyle(tp, {marginLeftlinkW 2});
      }
    });
  },
  
likeOut: function() {
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    if (!
ph.liked) {
      
setTimeout(animate.pbind(cur.pvLikeIcon, {opacity0.4}, 200false), 1);
    }
  },

  
tagOver: function(el) {
    
animate(el, {backgroundColor'#6B8DB1'}, 200);
    
showTooltip(el, {textgetLang('photos_delete_tag'), shift: [0, -20]});
  },
  
tagOut: function(el) {
    if (!
el.parentNode || !el.parentNode.parentNode) return;
    
animate(el, {backgroundColor'#C4D2E1'}, 200);
  },
  
deleteTag: function(tagId) {
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    if (
ph.tagid) {
      if (
isVisible('pv_tag_handling')) return;
    } else {
      if (
ge('pv_action_progress')) return;
    }

    
ajax.post('al_photos.php', {act'delete_tag'photoph.idtagtagIdhashph.hash}, {onDone: function(texttagstaggedhtmlpadres) {
      if (
_pads.shown == 'ph') {
        
Pads.phDone(ph.idfalsepadres);
      }
      
Pads.invalidate('ph');
      if (
ph.tagid) {
        
ph.taginfo ph.tagid false;
        
cleanElems('pv_confirm_tag''pv_delete_tag''pv_prof_cancel''pv_prof_done');
        
cur.pvTagInfo.innerHTML '<div class="progress fl_r" id="pv_spam_progress"></div><div class="pv_info">' text '</div>';
      } else {
        
Photoview.actionInfo().innerHTML text;
      }
      
Photoview.updateHeight();
      if (
tags !== undefined) {
        
ph.tags tags;
        
ph.tagged tagged;
        
ph.tagshtml html;
        if (
cur.pvListId == listId && cur.pvIndex == index) {
          
Photoview.setTags(html);

          ((!
ph.taginfo && ph.actions.tag && tags[0] < cur.pvMaxTags) ? show hide)(cur.pvTagLink);
        }
      }
    }, 
onFail: function(text) {
      if (!
text) return;
      
Photoview.actionInfo().innerHTML text;
      return 
true;
    }, 
showProgress: function() {
      if (
ph.tagid) {
        
hide(ge('pv_confirm_tag').parentNodege('pv_delete_tag').parentNode);
        
show('pv_tag_handling');
      } else {
        
Photoview.actionInfo().innerHTML '<div id="pv_action_progress" class="progress" style="display: block"></div>';
      }
    }, 
hideProgress: function() {
      if (
ph.tagid) {
        
hide('pv_tag_handling');
        
show(ge('pv_confirm_tag').parentNodege('pv_delete_tag').parentNode);
      } else {
        
re(Photoview.actionInfo());
      }
    }});
  },
  
restoreTag: function(tagId) {
    if (
ge('pv_action_progress')) return;

    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    
ajax.post('al_photos.php', {act'restore_tag'photoph.idtagtagIdhashph.hash}, {onDone: function(texttagstaggedhtml) {
      if (
tags !== undefined) {
        
ph.tags tags;
        
ph.tagged tagged;
        
ph.tagshtml html;
        if (
cur.pvListId == listId && cur.pvIndex == index) {
          
Photoview.setTags(html);
          ((!
ph.taginfo && ph.actions.tag && tags[0] < cur.pvMaxTags) ? show hide)(cur.pvTagLink);
        }
      }
      
Photoview.actionInfo().innerHTML text;
    }, 
onFail: function(text) {
      if (!
text) return;
      
Photoview.actionInfo().innerHTML text;
      return 
true;
    }, 
showProgress: function() {
      
Photoview.actionInfo().innerHTML '<div id="pv_action_progress" class="progress" style="display: block"></div>';
    }, 
hideProgress: function() {
      
re(Photoview.actionInfo());
    }});
  },

  
confirmTag: function(tagId) {
    var 
listId cur.pvListIdindex cur.pvIndexph cur.pvData[listId][index];
    if (
isVisible('pv_tag_handling')) return;

    
ajax.post('al_photos.php', {act'confirm_tag'tagtagIdphotoph.idhashph.hash}, {onDone: function(tagstaggedhtmlpadres) {
      if (
_pads.shown == 'ph') {
        
Pads.phDone(ph.idfalsepadres);
      }
      
Pads.invalidate('ph');
      
ph.tags tags;
      
ph.tagged tagged;
      
ph.tagshtml html;
      
ph.taginfo ph.tagid false;
      if (
listId == cur.pvListId && index == cur.pvIndex) {
        
Photoview.setTags(html);
        ((!
ph.taginfo && ph.actions.tag && tags[0] < cur.pvMaxTags) ? show hide)(cur.pvTagLink);
        
cleanElems('pv_confirm_tag''pv_delete_tag''pv_prof_cancel''pv_prof_done');
        
cur.pvTagInfo.innerHTML '';
        
hide(cur.pvTagInfo);
      }
      
Photoview.updateHeight();
    }, 
showProgress: function() {
      
hide(ge('pv_confirm_tag').parentNodege('pv_delete_tag').parentNode);
      
show('pv_tag_handling');
    }, 
hideProgress: function() {
      
hide('pv_tag_handling');
      
show(ge('pv_confirm_tag').parentNodege('pv_delete_tag').parentNode);
    }});
  },

  
toProfileTag: function() {
    var 
tag cur.pvData[cur.pvListId][cur.pvIndex].tagged[vk.id];
    if (
tag && !cur.pvTagger) {
      
Photoview.showTag(tag);
    }
  },
  
showTag: function(tagId) {
    
clearTimeout(cur.pvHidingTag);
    if (
cur.pvShowingTag == tagId) return;

    var 
coords = clone(cur.pvData[cur.pvListId][cur.pvIndex].tags[tagId]);
    
each(coords, function(iv) {
      var 
wh cur[(2) ? 'pvPhHeight' 'pvPhWidth'];
      
coords[i] = Math.max(3Math.min(wh 3positive(wh 100)));
    });
    
setStyle(cur.pvTagFrame, {
      
marginLeftcoords[0] + 'px',
      
marginTopcoords[1] + 'px',
      
width: (coords[2] - coords[0]) + 'px',
      
height: (coords[3] - coords[1]) + 'px'
    
});
    
setStyle(cur.pvTagFrame.firstChild, {
      
marginLeft: -coords[0] + 'px',
      
marginTop: -coords[1] + 'px'
    
});
    
cur.pvShowingTag tagId;
    if (
browser.msie) {
      
show(cur.pvTagFramecur.pvTagFaded);
    } else {
      
fadeIn(cur.pvTagFrame200);
      
fadeIn(cur.pvTagFaded200);
    }
  },
  
showDynTag: function(tagId) {
    
clearTimeout(cur.pvHidingTag);
    if (
cur.pvShowingTag == tagId) return;

    var 
coords = clone(cur.pvData[cur.pvListId][cur.pvIndex].tags[tagId]), el ge('pv_tag' tagId);
    if (!
el) return;

    
each(coords, function(iv) {
      
coords[i] = positive(cur[(2) ? 'pvPhHeight' 'pvPhWidth'] / 100);
    });
    
setStyle(cur.pvTagPerson, {
      
marginLeftcoords[0] + 'px',
      
marginTopcoords[3] + 'px',
      
minWidth: (coords[2] - coords[0]) + 'px'
    
});
    
cur.pvTagPerson.innerHTML el.firstChild.innerHTML;
    var 
getSize(cur.pvTagPerson);
    if (
coords[3] + s[1] > cur.pvPhHeight) {
      
setStyle(cur.pvTagPerson, {marginTop: (cur.pvPhHeight s[1]) + 'px'});
    }
    
cur.pvTagPerson.onmouseover Photoview.showDynTag.pbind(tagId);
    
cur.pvShowingTag tagId;
    if (
browser.msie){
      
show(cur.pvTagPerson);
    } else {
      
fadeIn(cur.pvTagPerson200);
    }
  },
  
hideTag: function(quick) {
    if (
quick === true) {
      
clearTimeout(cur.pvHidingTag);
      
hide(cur.pvTagFadedcur.pvTagFramecur.pvTagPerson);
      
cur.pvShowingTag false;
    }
    if (!
cur.pvShowingTag) return;

    
clearTimeout(cur.pvHidingTag);
    
cur.pvHidingTag setTimeout(function() {
      if (
browser.msie) {
        
hide(cur.pvTagFadedcur.pvTagFramecur.pvTagPerson);
      } else if (
cur.pvShowingTag) {
        
fadeOut(cur.pvTagFaded200);
        
fadeOut(cur.pvTagFrame200);
        
fadeOut(cur.pvTagPerson200);
      }
      
cur.pvShowingTag false;
    }, 
0);
  },
  
realOffset: function(listIdoffsetinc) {
    var 
res offset;
    if (!
cur.pvData || !cur.pvData[listId]) {
      return 
res;
    }
    for (var 
0offseti++) {
      if (
cur.pvData[listId][i] && (cur.pvData[listId][i].deleted || cur.pvData[listId][i].moved)) {
        
res += inc;
      }
    }
    return 
res;
  },
  
realCount: function(listIdcount) {
    var 
res count;
    if (!
cur.pvData || !cur.pvData[listId]) {
      return 
res;
    }
    for (var 
0cur.pvData[listId].lengthi++) {
      if (
cur.pvData[listId][i] && (cur.pvData[listId][i].deleted || cur.pvData[listId][i].moved)) {
        
res++;
      }
    }
    return 
res;
  },

  list: function(
photoIdlistIdrealList) {
    if (
realList == 'deleted') return;
    if (!
cur.pvListcur.pvList = {};
    
cur.pvList[photoId '_' listId] = realList;
  },
  
loaded: function(listIdcountoffsetdataopts) {
    if (
listId == 'deleted') return;
    if (
opts) {
      
extend(cur, {
        
langextend(cur.lang || {}, opts.lang),
        
pvHashopts.hash,
        
pvCommLimitopts.commlimit,
        
pvMaxTagsopts.maxtags,
        
pvReplyNamesextend(cur.pvReplyNames || {}, opts.names || {}),
        
pvMediaTypesopts.media
      
});
      if (!
cur.optionscur.options = {};
      if (!
cur.options.sharecur.options.share opts.share;
      
val(cur.pvAsGroup'<div></div>' getLang('wall_reply_as_group'));
      
val('pv_comment_header'getLang('photos_yourcomment'));
      
val(domFC(ge('pv_add_media')), getLang('global_add_media'));
    }
    
count Photoview.realCount(listIdcount);
    
offset Photoview.realOffset(listIdoffset1);
    if (!
cur.pvDatacur.pvData = {};
    if (!
cur.pvCommsLikescur.pvCommsLikes = {};
    if (!
cur.pvData[listId]) {
      
cur.pvData[listId] = new Array(count);
    } else if (
cur.pvData[listId].length count) {
      for (var 
cur.pvData[listId].lengthcount; ++i) {
        
cur.pvData[listId].push(undefined);
      }
    } else if (
cur.pvData[listId].length count) {
      
cur.pvData[listId] = cur.pvData[listId].slice(0count);
    }
    var 
nw vkNow();
    for (var 
0len data.lengthlen; ++i) {
      var 
index = (offset i), ph data[i];
      while (
index >= countindex -= count;
      
cur.pvCommsLikes[ph.id] = [ph.commentsph.likesvkNow(), false];
      
delete(ph.comments);
      
delete(ph.likes);
      
cur.pvData[listId][index] = ph;
    }
  },
  
showDeleted: function(lstmsgspm) {
    if (
cur.pvShown && cur.pvListId == 'temp') {
      
msg += '<br><br>' spm;
    }

    
showFastBox({titlegetLang('global_error'), onHide: function() {
      if (
cur.pvShown && cur.pvListId == 'temp') {
        
Photoview.hide(true);
      }
    }}, 
msg);
  },
  
spamDeleted: function(elphhash) {
    if (
isVisible(curBox().progress)) return;
    
ajax.post('al_photos.php', {act'spam_photo'photophhashhashfrom'deleted'}, {onDone: function(text) {
      
domPN(el).replaceChild(ce('span', {innerHTMLtext}), el);
    }, 
showProgresscurBox().showProgresshideProgresscurBox().hideProgress});
  },
  
showPhoto: function(photoIdlistIdoptionsjust) {
    if (!
cur.pvShown || cur.pvListId == 'temp' && !cur.pvWasShown || options.noHistory !== undefined) {
      
debugLog('in showPhoto noHistory: ' options.noHistory);
      
cur.pvNoHistory options.noHistory;
      
cur.pvHistoryLength options.noHistory : (options.histLen || 0);
    }
    
extend(cur, {
      
pvJumpTooptions.jumpTo || false,
      
pvJumpFromfalse,
      
pvJumpSteps0
    
});
    
listId cur.pvList && cur.pvList[photoId '_' listId] || listId;
    if (!
cur.pvData || !cur.pvData[listId]) {
      return;
    }
    var 
data cur.pvData[listId], whole trueonh cur.pvOptions && cur.pvOptions.onHide;
    
cur.pvOptions options;
    if (!
cur.pvOptions.onHidecur.pvOptions.onHide onh;
    for (var 
0len data.lengthlen; ++i) {
      if (
data[i]) {
        if (
data[i].id === photoId) {
          
Photoview.show(listIdifalseoptions.root);
          if (
options.onShow) {
            
options.onShow();
          }
          return 
false;
        }
      } else {
        
whole false;
      }
    }
    if (
whole && just) {
      if (
options.onEmpty) {
        
options.onEmpty();
      }
      return 
false;
    }
  },

  
loadedAlbums: function(ownerIdhtmlpreloadpreloadPhotosopts) {
    if (!
cur.pvAlbumsData) return;

    
ajax.preload('al_photos.php'extend({offsetopts.offsetpart1ownerownerId}, {act'show_albums'}), preload);
    
ajax.preload('al_photos.php'extend({offsetopts.photos_offsetpart1ownerownerId}, {act'show_albums'only_photos1}), preloadPhotos);

    
cur.pvAlbumsData[ownerId] = {
      
htmlhtml,
      
optsopts
    
};
    if (
cur.pvAlbumsShowing == ownerId) {
      
Photoview.doShowAlbums(ownerIdfalse);
      
boxRefreshCoords(layer);
    }
  },
  
showAlbums: function(ownerIdoptions) {
    
ownerId intval(ownerId);
    if (!
cur.pvAlbumsDatacur.pvAlbumsData = {};
    if (
cur.pvListId == 'temp') {
      
cur.pvCancelLoad();
    }

    
cur.pvNoHistory options.noHistory;
    
cur.pvHistoryLength 0;
    
cur.pvAlbumsShowing ownerId;
    var 
of options.onFail;
    if (!
cur.pvAlbumsData[ownerId]) {
      
cur.pvAlbumsData[ownerId] = 'loading';
      
ajax.post('al_photos.php', {act'show_albums'ownerownerId}, extend(options, {onDonePhotoview.loadedAlbumsonFail: function(t) {
          if (
ofof(t);
          
delete(cur.pvAlbumsData[ownerId]);
          
cur.pvAlbumsData[ownerId];
          
layers.fullhide(true);
          return 
true;
        }
      }));
    } else if (
cur.pvAlbumsData[ownerId] != 'loading') {
      
Photoview.doShowAlbums(ownerIdfalse);
      
boxRefreshCoords(layer);
    }
  },
  
loadedAlbum: function(albumRawhtmlpreloadopts) {
    if (!
cur.pvAlbumData) return;

    if (
preload) {
      
ajax.preload('al_photos.php'extend({offsetopts.offsetpart1albumalbumRaw}, {act'show_album'}), preload);
    }

    
cur.pvAlbumData[albumRaw] = {
      
htmlhtml,
      
optsopts
    
};
    if (
cur.pvAlbumShowing == albumRaw) {
      
Photoview.doShowAlbum(albumRawfalse);
      
boxRefreshCoords(layer);
    }
  },
  
showAlbum: function(albumRawoptions) {
    if (!
cur.pvAlbumDatacur.pvAlbumData = {};
    if (
cur.pvListId == 'temp') {
      
cur.pvCancelLoad();
    }

    
cur.pvNoHistory options.noHistory;
    
cur.pvHistoryLength 0;
    
cur.pvAlbumShowing albumRaw;
    var 
of options.onFail;
    if (!
cur.pvAlbumData[albumRaw]) {
      
cur.pvAlbumData[albumRaw] = 'loading';
      
ajax.post('al_photos.php', {act'show_album'albumalbumRaw}, extend(options, {onDonePhotoview.loadedAlbumonFail: function(t) {
          if (
ofof(t);
          
delete(cur.pvAlbumData[albumRaw]);
          
cur.pvAlbumData[albumRaw];
          
layers.fullhide(true);
          return 
true;
        }
      }));
    } else if (
cur.pvAlbumData[albumRaw] != 'loading') {
      
Photoview.doShowAlbum(albumRawfalse);
      
boxRefreshCoords(layer);
    }
  },
  
loadedTagged: function(ownerIdhtmlpreloadpreloadPhotosopts) {
    if (!
cur.pvPhotoTagData) return;

    
ajax.preload('al_photos.php'extend({offsetopts.offsetpart1ownerownerId}, {act'show_tag'}), preload);
    
ajax.preload('al_photos.php'extend({offsetopts.photos_offsetpart1ownerownerId}, {act'show_tag'only_photos1}), preloadPhotos);

    
cur.pvPhotoTagData[ownerId] = {
      
htmlhtml,
      
optsopts
    
};
    if (
cur.pvPhotoTagShowing == ownerId) {
      
Photoview.doShowTagged(ownerIdfalse);
      
boxRefreshCoords(layer);
    }
  },
  
showTagged: function(ownerIdoptions) {
    
ownerId intval(ownerId);
    if (!
cur.pvPhotoTagDatacur.pvPhotoTagData = {};
    if (
cur.pvListId == 'temp') {
      
cur.pvCancelLoad();
    }

    
cur.pvNoHistory options.noHistory;
    
cur.pvHistoryLength 0;
    
cur.pvPhotoTagShowing ownerId;
    var 
of options.onFail;
    if (!
cur.pvPhotoTagData[ownerId]) {
      
cur.pvPhotoTagData[ownerId] = 'loading';
      
ajax.post('al_photos.php', {act'show_tag'midownerId}, extend(options, {onDonePhotoview.loadedTaggedonFail: function(t) {
          if (
ofof(t);
          
delete(cur.pvPhotoTagData[ownerId]);
          
cur.pvPhotoTagData[ownerId];
          
layers.fullhide(true);
          return 
true;
        }
      }));
    } else if (
cur.pvPhotoTagData[ownerId] != 'loading') {
      
Photoview.doShowTagged(ownerIdfalse);
      
boxRefreshCoords(layer);
    }
  },
  
loadedVideoTags: function(ownerIdhtmlpreloadopts) {
    
ajax.preload('/al_video.php', {act'show_video_tags'offsetopts.offsetpart1midownerId}, preload);

    
cur.pvVideoTagsData = {
      
htmlhtml,
      
optsopts
    
};
    if (
cur.pvVideoTagShowing == ownerId) {
      
Photoview.doShowVideoTags(ownerIdfalse);
      
boxRefreshCoords(layer);
    }
  },
  
showVideoTags: function(ownerIdoptions) {
    
cur.pvNoHistory options.noHistory;
    
cur.pvHistoryLength 0;
    
cur.pvVideoTagShowing ownerId;
    var 
of options.onFail;
    if (!
cur.pvVideoTagsData) {
      
cur.pvVideoTagsData 'loading';
      
ajax.post('/al_video.php', {act'show_video_tags'midownerId}, extend(options, {onDonePhotoview.loadedVideoTagsonFail: function(t) {
          if (
ofof(t);
          
delete(cur.pvVideoTagsData);
          
layers.fullhide && layers.fullhide(true);
          return 
true;
        }
      }));
    } else if (
cur.pvVideoTagsData != 'loading') {
      
Photoview.doShowVideoTags(ownerIdfalse);
      
boxRefreshCoords(layer);
    }
  },
  
scrollResize: function() {
    if (
browser.mobile || !cur.pvShown || (!cur.pvAlbumsShown && !cur.pvAlbumShown && !cur.pvPhotoTagShown && !cur.pvVideoTagsShown)) return;

    var 
bt lastWindowHeight,
        
lnk cur.pvVideoTagsShown ge('pva_more_videos') : (cur.pvAlbumsShown ge('pva_more_photos') : ge('pvsa_more_photos')),
        
albumsLnk ge('pva_more');

    if (
isVisible(lnk) && bt getXY(lnk)[1] - (browser.msie6 scrollGetY())) {
      if (
cur.pvVideoTagsShown) {
        
Photoview.loadVideoTags();
      } else if (
cur.pvPhotoTagShown) {
        
Photoview.loadTaggedPhotos();
      } else if (
cur.pvAlbumsShown) {
        
Photoview.loadAlbumsPhotos();
      } else {
        
Photoview.loadAlbumPhotos();
      }
    }
    if (
cur.pvAlbumsShown && cur.pvShowAllAlbums && isVisible(albumsLnk) && bt getXY(albumsLnk)[1] - (browser.msie6 scrollGetY())) {
      
Photoview.loadAlbums();
    }
  },
  
loadAlbums: function() {
    
cur.pvShowAllAlbums true;
    
Photoview.loadAlbumsPhotos(true);
  },
  
loadedAlbumsPhotos: function(offrowsalbums) {
    
cur.pvaLoading 0;

    if (!
cur.pvAlbumsShown) return;

    if (
albums) {
      
cur.pvaOffset off;
    } else {
      
cur.pvaPhotosOffset off;
    }

    var 
cont albums ge('pva_content') : ge('pva_content_photos'),
        
more albums ge('pva_more') : ge('pva_more_photos'),
        
opts albums ? {act'show_albums'} : {act'show_albums'only_photos1},
        
offset albums cur.pvaOffset cur.pvaPhotosOffset,
        
count albums cur.pvaCount cur.pvaPhotosCount,
        
ce('div', {innerHTMLrows});
    if (!
cont) return;

    while (
d.firstChild) {
      
cont.appendChild(d.firstChild);
    }

    
Photoview.onResize();

    if (
off >= count || !rows) {
      
hide(more);
      return;
    }
    
cur.pvaLoading 1;

    
ajax.post('al_photos.php'extend({offsetoffsetpart1ownercur.pvAlbumsShown}, opts || {}), {cache1onDone: function() {
      
debugLog('preload done: ' cur.pvaLoading);
      if (
cur.pvaLoading == 2) {
        
Photoview.loadedAlbumsPhotos.apply(windowarguments);
      } else {
        
cur.pvaLoading false;
      }
    }, 
onFail: function() {
      
cur.pvaLoading 0;
      return 
true;
    }});
  },
  
loadAlbumsPhotos: function(albums) {
    var 
more albums ge('pva_more') : ge('pva_more_photos'),
        
progress albums ge('pva_more_prg') : ge('pva_more_photos_prg'),
        
opts albums ? {act'show_albums'} : {act'show_albums'only_photos1},
        
offset albums cur.pvaOffset cur.pvaPhotosOffset;
    if (!
cur.pvAlbumsShown || !more || !isVisible(more) || isVisible(progress)) return;

    if (
cur.pvaLoading) {
      
cur.pvaLoading 2;
      return;
    }

    
ajax.post('al_photos.php'extend({offsetoffsetpart1ownercur.pvAlbumsShown}, opts || {}), {onDonePhotoview.loadedAlbumsPhotosonFail: function() {
      
cur.pvaLoading 0;
      return 
true;
    }, 
showProgress: function() {
      
show(progress);
      
hide(more.firstChild);
    }, 
hideProgress: function() {
      
show(more.firstChild);
      
hide(progress);
    }, 
cache1});
  },
  
loadedAlbumPhotos: function(offrows) {
    
cur.pvaLoading 0;

    if (!
cur.pvAlbumShown) return;

    
cur.pvsaOffset off;

    var 
cont ge('pvsa_content_photos'),
        
more ge('pvsa_more_photos');
    if (!
cont) return;

    
cont.appendChild(cf(rows));

    if (
off >= cur.pvsaCount) {
      
hide(more);
      
Photoview.onResize();
      return;
    }

    
Photoview.onResize();
    
cur.pvsaLoading 1;

    
ajax.post('al_photos.php'extend({offsetcur.pvsaOffsetpart1albumcur.pvAlbumShown}, {act'show_album'}), {cache1onDone: function() {
      
debugLog('preload done: 'cur.pvsaLoading);
      if (
cur.pvsaLoading == 2) {
        
Photoview.loadedAlbumPhotos.apply(windowarguments);
      } else {
        
cur.pvsaLoading false;
      }
    }, 
onFail: function() {
      
cur.pvsaLoading 0;
      return 
true;
    }});
  },
  
loadAlbumPhotos: function() {
    var 
more ge('pvsa_more_photos'),
        
progress ge('pvsa_more_photos_prg'),
        
offset cur.pvsaOffset;
    if (!
cur.pvAlbumShown || !more || !isVisible(more) || isVisible(progress)) return;

    if (
cur.pvsaLoading) {
      
cur.pvsaLoading 2;
      return;
    }

    
ajax.post('al_photos.php', {act'show_album'albumcur.pvAlbumShownoffsetoffsetpart1}, {onDonePhotoview.loadedAlbumPhotosonFail: function() {
      
cur.pvsaLoading 0;
      return 
true;
    }, 
showProgress: function() {
      
show(progress);
      
hide(more.firstChild);
    }, 
hideProgress: function() {
      
show(more.firstChild);
      
hide(progress);
    }, 
cache1});
  },
  
loadedTaggedPhotos: function(offrows) {
    
cur.pvaLoading 0;

    if (!
cur.pvPhotoTagShown) return;

    
cur.pvsaOffset off;

    var 
cont ge('pvsa_content_photos'),
        
more ge('pvsa_more_photos');
    if (!
cont) return;

    
cont.appendChild(cf(rows));

    
Photoview.onResize();

    if (
off >= cur.pvsaCount || !rows) {
      
hide(more);
      return;
    }
    
cur.pvsaLoading 1;

    
ajax.post('al_photos.php'extend({offsetcur.pvsaOffsetpart1midcur.pvPhotoTagShown}, {act'show_tag'}), {cache1onDone: function() {
      
debugLog('preload done: 'cur.pvsaLoading);
      if (
cur.pvsaLoading == 2) {
        
Photoview.loadedTaggedPhotos.apply(windowarguments);
      } else {
        
cur.pvsaLoading false;
      }
    }, 
onFail: function() {
      
cur.pvsaLoading 0;
      return 
true;
    }});
  },
  
loadTaggedPhotos: function(albums) {
    var 
more ge('pvsa_more_photos'),
        
progress ge('pvsa_more_photos_prg'),
        
offset cur.pvsaOffset;
    if (!
cur.pvPhotoTagShown || !more || !isVisible(more) || isVisible(progress)) return;

    if (
cur.pvsaLoading) {
      
cur.pvsaLoading 2;
      return;
    }

    
ajax.post('al_photos.php', {act'show_tag'midcur.pvPhotoTagShownoffsetoffsetpart1}, {onDonePhotoview.loadedTaggedPhotosonFail: function() {
      
cur.pvsaLoading 0;
      return 
true;
    }, 
showProgress: function() {
      
show(progress);
      
hide(more.firstChild);
    }, 
hideProgress: function() {
      
show(more.firstChild);
      
hide(progress);
    }, 
cache1});
  },
  
loadedMoreVideoTags: function(offrows) {
    
cur.pvaLoading 0;

    if (!
cur.pvVideoTagsShown) return;

    
cur.pvsaOffset off;

    var 
cont ge('pva_video_tags'),
        
more ge('pva_more_videos');
    if (!
cont) return;

    
cont.appendChild(cf(rows));

    
Photoview.onResize();

    if (
off >= cur.pvsaCount || !rows) {
      
hide(more);
      return;
    }
    
cur.pvsaLoading 1;

    
ajax.post('/al_video.php'extend({act'show_video_tags'offsetcur.pvsaOffsetpart1midcur.pvVideoTagsShown}), {cache1onDone: function() {
      
debugLog('preload done: 'cur.pvsaLoading);
      if (
cur.pvsaLoading == 2) {
        
Photoview.loadedMoreVideoTags.apply(windowarguments);
      } else {
        
cur.pvsaLoading false;
      }
    }, 
onFail: function() {
      
cur.pvsaLoading 0;
      return 
true;
    }});
  },
  
loadVideoTags: function(albums) {
    var 
more ge('pva_more_videos'),
        
progress ge('pva_more_videos_prg'),
        
offset cur.pvsaOffset;
    if (!
cur.pvVideoTagsShown || !more || !isVisible(more) || isVisible(progress)) return;

    if (
cur.pvsaLoading) {
      
cur.pvsaLoading 2;
      return;
    }

    
ajax.post('/al_video.php', {act'show_video_tags'midcur.pvVideoTagsShownoffsetoffsetpart1}, {onDonePhotoview.loadedMoreVideoTagsonFail: function() {
      
cur.pvsaLoading 0;
      return 
true;
    }, 
showProgress: function() {
      
show(progress);
      
hide(more.firstChild);
    }, 
hideProgress: function() {
      
show(more.firstChild);
      
hide(progress);
    }, 
cache1});
  },
  
thumbOver: function(objid) {
    
clearTimeout((cur.pvHideTO || {})[id]);
    var 
title geByClass1('pva_title'obj), title.previousSiblingdescY getSize(geByClass1('pva_desc'obj))[1];
    if (
descY 5) return;

    
animate(title, {marginTop238 - (descY 7)}, {duration200transitionFx.Transitions.easeOutCirc});
    if (
r.className == 'pva_repeat') {
      
animate(r, {marginTop86 Math.floor((descY 7) / 2)}, {duration200transitionFx.Transitions.easeOutCirc});
    }
  },
  
thumbOut: function(objid) {
    if (!
cur.pvHideTOcur.pvHideTO = {};
    
cur.pvHideTO[id] = setTimeout(function() {
      var 
title geByClass1('pva_title'obj), title.previousSibling;
      
animate(title, {marginTop238}, 200);
      if (
r.className == 'pva_repeat') {
        
animate(r, {marginTop86}, 200);
      }
    }, 
150);
  },

  
photoAct: function(ev) {
    if (
cur.pvAlbumsShown || cur.pvAlbumShown || cur.pvPhotoTagShown || !cur.pvCurPhoto.author) return;

    var 
pos getXY(cur.pvHHtrue);
    if (
pos[0]) {
      
cur.hhPos pos;
    } else {
      
pos cur.hhPos;
    }

    var 
next cur.pvHH;

    var 
dx Math.abs(ev.clientX pos[0] - 36);
    var 
dy ev.clientY pos[1];

    if (
dx 120 && dy 130 && dy > -30) {
      if (
cur.pvHHShowing) return;
      
cur.pvHHShowing true;
      
show(next);
      
animate(next.firstChild, {opacity1}, 400);

      if (!
cur.rvPreloadBig) {
        
vkImage().src '/images/icons/post_big_hh.png';
        
cur.rvPreloadBig true;
      }
    } else {
      if (!
cur.pvHHShowing) return;
      
cur.pvHHShowing false;
      
animate(next.firstChild, {opacity0}, 400);
    }

  },

  
hhLiked: function(objact) {
    return (
act || hasClass)(obj.parentNode.parentNode'pvs_hh_liked');
  },
  
hhOver: function(obj) {
    
clearTimeout(obj.parentNode.parentNode.getAttribute('timer'));
    var 
params Photoview.hhLiked(obj) ? [0.251] : [0.280.65];
    
animate(obj.previousSibling, {opacityparams[0]}, 200);
    
animate(obj, {opacityparams[1]}, 200);
  },
  
hhOut: function(obj) {
    var 
params Photoview.hhLiked(obj) ? [0.251] : [0.20.5];
    
animate(obj.previousSibling, {opacityparams[0]}, 200);
    
animate(obj, {opacityparams[1]}, 200);
  },
  
hhClick: function(objevpv) {
    if (
ev.button == 2) return;
    var 
liked Photoview.hhLiked(obj);

    
Photoview.like();
    
liked && Photoview.likeOut();

    
Photoview.hhOver(obj);

    if (!
liked && !(browser.msie && intval(browser.version) < || browser.mozilla && intval(browser.version) < 9)) {
      
obj.innerHTML '<img class="pvs_hh_ah" width="38" height="34" src="/images/icons/post_big_hh.png" />';
      var 
img obj.firstChild;
      
animate(img, {marginLeft: -3marginTop3width78height71opacity0}, {duration600transitionFx.Transitions.easeOutCubic});
    }

    return 
cancelEvent(ev);
  },
  
hhCheck: function() {
    return (!
browser.msie || intval(browser.version) > 8) && !cur.pvNoLikes;
  },

  
showRepeat: function(row) {
    if (!
row || geByClass1('pva_repeat'row)) return;

    
geByClass1('pva_link'row).insertBefore(ce('div', {className'pva_repeat'innerHTML'
<div class="pva_repeat_blob">
  <div class="pva_repeat_cont"><img class="pva_repeat_img png" src="'
+stManager._srcPrefix('.css')+'/images/icons/post_hh'+(window.devicePixelRatio >= '_2x' '')+'.png?2" /><span class="pva_repeat_text">' getLang('photos_repeat_album') + '</span></div>
</div>'
}), geByClass1('pva_title'row));
  },

  
showPlace: function() {
    var 
geohash cur.pvCurPhoto.geohash;
    
showBox('al_places.php', {act'show_photo_place'geohashgeohashphotocur.pvCurPhoto.id}, {width708hideButtonstruetitlefalsecache1});
  },

  
editPlace: function() {
    var 
geohash cur.pvCurPhoto.geohash;
    
showBox('al_places.php', {act'show_photo_place'edit1geohashgeohash || ''photocur.pvCurPhoto.id});
  },

  
updatePlace: function(photoplace) {
    var 
placeCont ge('pv_edit_place');
    if (
place) {
      
placeCont && (placeCont.innerHTML place place '.' '');
      
ge('pv_place').innerHTML place '<span class="pv_place_label">' getLang('photos_place_label') + '</span> <a class="pv_place_a" id="pv_place_a" onclick="Photoview.showPlace()">' place '</a>' '';
      
hide('pv_add_place');
    } else {
      
setTimeout(function() {
        
ajax.post('al_photos.php', {act'get_photo_place'photophoto}, {
          
onDone: function(placeplaceGeoHash) {
            
Photoview.updatePlace(photoplace);
          }
        })
      }, 
1000);
    }
  },

  
nearProgress: function(obj) {
    
obj.insertBefore(ce('div', {className'pv_load_near'}), obj.firstChild);
  }
/*,

  showPvLayer: function() {
    if (cur.pvFixedHide) {
      show(cur.pvFixed);
    }
    cur.pvNoHistory = true;
    layers.fullhide && layers.fullhide(true);

    layers.wrapshow(layerWrap, 0.7);
    layers.fullhide = Photoview.hide;
    onBodyResize();
    if (cur.pvVideoTagsShown) {
      var nl = extend(nav.objLoc, {z: 'video_tag' + cur.pvVideoTagsShown});
      if (nav.strLoc != nav.toStr(nl)) {
        setTimeout(nav.setLoc.pbind(nl), 0);
      }
    }
  }
*/
}, photoview Photoview;

try{
stManager.done('photoview.js');}catch(e){}
?>
Онлайн: 0
Реклама