You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

149 lines
5.0 KiB

jQuery.fn.imgOnload = function(options) {
options = $.extend({
src : "",
bigW:1180,
bigH:800
},options);
var _self = this;
_self.hide();
options.loading.css('display','block');
var img = new Image();
$(img).load(function(){
_self.attr("src", options.src);
_self.fadeIn("slow");
if(img.height>options.bigH){
_self.attr('width',Math.ceil(img.width*options.bigH/img.height));
_self.attr('height',options.bigH);
}else if(img.width>options.bigW){
_self.attr('width',options.bigW);
_self.attr('height',Math.ceil(img.width*options.bigH/options.bigW));
}else{
_self.attr('width',img.width);
_self.attr('height',img.height);
}
options.loading.css('display','none');
}).attr("src", options.src);
}
$(function(){
function Gallery(option){
var t = this, ids = ['photo','pload','prevbtn','nextbtn','pintro','photolist','scprev','scnext','photoinfo','scb','vbig'], i = ids.length;
while(--i >= 0){
t[ids[i]] = $('#' + ids[i]);
}
var scrollMode = {
prev:function(){
var temp = t.nowli == 0 ? load_item - 1 : t.nowli - 1;
$(t.photolist.find('li img')[temp]).click();
},
next:function(){
if(t.nowli + 1 == load_item) {
PhotoLast();return;
}
var temp = t.nowli + 1 == load_item ? 0 : t.nowli + 1;
$(t.photolist.find('li img')[temp]).click();
}
};
t.scprev.bind("click",scrollMode.prev);
t.prevbtn.bind("click",scrollMode.prev);
t.scnext.bind("click",scrollMode.next);
t.nextbtn.bind("click",scrollMode.next);
t.scb.mousedown(function(event){
var e = event || window.event;
var scbL = parseInt($(this).css('left').match(/\d+/));
scbL = isNaN(scbL) ? 0 : scbL;
var ulML = parseInt(t.photolist.css('margin-left').match(/\d+/));
ulML = isNaN(ulML) ? 0 : ulML;
var ulW = option.simgW * (load_item - 7);
var pml;
if(ulW<0)return false;
$(document).mousemove(function(event){
var ev = event || window.event;
var moveX = ev.pageX - e.pageX;
if(moveX > 0){
t.scb.css('left',(moveX + scbL >= option.scrlscbW + 150 ? option.scrlscbW + 150 : moveX + scbL)+'px');
pml = Math.max(-ulW,(-ulW / option.scrlscbW * moveX - ulML))
t.photolist.css('margin-left',pml + 'px');
}else if(moveX < 0){
t.scb.css('left',(scbL + moveX <= 150 ? 150 : scbL + moveX)+'px');
pml = Math.min(0,(-ulW / option.scrlscbW * moveX-ulML));
t.photolist.css('margin-left',pml + 'px');
}
t.imgnum(-parseInt(pml/128)+3);
$(t.photolist.find('li span')[-parseInt(pml/128)]).hide();
});
$(document).mouseup(function(){document.onselectstart = null;$(this).unbind("mousemove");t.imgnum(-parseInt(pml/128)+3);});
document.onselectstart = function(){return false;};
});
t.scroll = function(){
var ulW = option.simgW * (load_item - 7);
var bw = option.scrlscbW/ulW * parseInt(t.photolist.css('margin-left').match(/\d+/));
t.scb.css('left',150 + bw);
}
t.loading = function(){
t.photoarr = [];
t.photoinfo.find('li').each(function(i){
var objLi = $(this);
t.photoarr.push([objLi.find("i[title=bimg]").html(),objLi.find("i[title=simg]").html(),objLi.find('p').html()]);
t.photolist.append('<li>' + t.photoarr[i][1] + '</li>');
if(i==(load_page-1)){
t.nowli = i;
t.photolist.find('li img:eq('+i+')').css({border:'1px solid #FF6600',background:'#FF6600'});
t.photo.imgOnload({loading:t.pload,src:t.photoarr[i][0]});
t.pintro.html(t.photoarr[i][2]);
t.vbig.attr('href', DTPath+'api/view.php?img='+t.photoarr[i][0]);
t.imgpos(i);
t.scroll();
}
});
t.imgnum(load_page-1);
t.photolist.find('li img').each(function(i){
$(this).click(function(){
t.photolist.find('li img').each(function(j){
$(this).css(i==j?{border:'1px solid #FF6600',background:'#FF6600'}:{border:'1px solid #BFBFBF',background:'#FFFFFF'});
t.nowli = i;
});
t.photo.imgOnload({loading:t.pload,src:t.photoarr[i][0]});
$('.count_a').html(i+1);
t.pintro.html(t.photoarr[i][2]);
t.vbig.attr('href',DTPath+'api/view.php?img='+t.photoarr[i][0]);
t.imgpos(i);
t.imgnum(i);
t.scroll();
});
});
}
t.imgpos = function(n){
if(load_item < 7) return false;
t.photolist.css('margin-left',(n - 3 > 0 ? (n > load_item - 4 ? (7 - load_item)*option.simgW + 'px' : (3 - n)*option.simgW + 'px') : '0px'));
}
t.imgnum = function(n){
var min_i, max_i;
if(load_item > 7) {
if(n < 3) {
min_i = 0; max_i = 6;
} else if(n > load_item - 3) {
min_i = load_item - 7; max_i = load_item - 1;
} else {
min_i = n - 3; max_i = n + 3;
}
} else {
min_i = 0; max_i = load_item - 1;
}
t.photolist.find('span').each(function(jj) {
if(jj >= min_i && jj <= max_i) { $(this).show(); } else { $(this).hide(); }
});
}
}
var G = new Gallery({simgW:128,scrlscbW:650});
G.loading();
document.onkeydown = function(e) {
var k = typeof e == 'undefined' ? event.keyCode : e.keyCode;
if(k == 37) {
$('#scprev')[0].click();
} else if(k == 39) {
$('#scnext')[0].click();
}
}
});