/* slide-album.js */
var dmtrack_url = dmtrack_refer = "",
dmtrack_ignoredPicOnce = 0,
dmtrack_ignoredAlbumOnce = 0; //忽略页面加载时第一次相册、照片打点请求（防止与页面自身打点重复）
var readyFunc = {
init: function () {
slide.reSize();
slide.ajFrm = slide.mkAjFrm();
$D.setStyle("playCtrl", "display", "block");
slide.btns.push(new CtrlBtn("prePhoto", -1));
slide.btns.push(new CtrlBtn("nextPhoto", 1));
slide.btns.push(new AutoPlayBtn("autoPlay"));
$E.on(window, "resize", slide.reSize);
$E.on("replay", "click", function () {
this.blur();
slide.btns[2].replay();
});
$E.on("pswd", "focus", slide.chkPswd);
$E.on("pswd", "blur", slide.chkPswd2);
$E.on("pswd", "change", slide.chkPswd2);
$E.on("pswd", "keyup", slide.chkPswd2);
$E.on("pswd", "keydown", slide.chkSubmit);
$E.on("actAltDetail", "mouseover", slide.photoHover);
$E.on("actAltDetail", "mouseout", slide.photoUnHover);
$E.on("actAltBigPhoto2", "click", slide.altDetail);
$E.on("pwdNeeded-inputInform", "click", function () {
$("pswd").focus();
});
$E.on("actAltDetail", "click", function () {
this.blur();
slide.altDetail();
});
$E.on("close-noPhoto", "click", function () {
$D.setStyle("noPhoto", "display", "none");
});
$("slide-wrapper").appendChild($("pwdNeeded"));
},
/**
* @selectOtherAlbum
* 方法：选择其它相册
*/
selectOtherAlbum: function () {
var ul = $("selectOtherAlbum-list"), li, arr, a, title2;
arr = g_albums.albums;
for (var i = 0; i < arr.length; i ++) {
title2 = $J.strLeft(arr[i].title || "", 12, "..");
a = mkEl(
"a", {href: "#" + arr[i].id, title: arr[i].title}, mkTxtEl(title2)
);
li = mkEl("li", arr[i].lock ? {className: "lock"} : null, a);
ul.appendChild(li);
a.onclick = albums.selectOther;
}
selectOrder();
},
/**
* 初始化输入密码相关
*/
initPswdNeeded: function () {
var ac = $D.getElementsByClassName("close", "a", "pwdNeeded")[0];
$E.on(ac, "click", albums.back);
$E.on("pwdNeeded-returnBtn", "click", albums.back);
},
/**
* 初始化时显示当前相册的照片
*/
initPhoto: function () {
$("preAlbum").onclick = albums.previous;
$("nextAlbum").onclick = albums.next;
albums.curIdx = albums.getIdxById(g_currentAlbum.id);
albums.select();
},
/**
* 右上角诚信通年数滚动图标
*/
tpLogo_years: function () {
slideLine("slidetexts", 2000, 24, 20);
},
/**
* 鼠标经过时的提示信息
*/
mousePopInform: function () {
popInform.reg("autoPlay", "自动播放");
popInform.reg("actAltDetail", "查看详情");
$E.on("photoBig", "mouseover", slide.btns[2].pause2, slide.btns[2], true);
$E.on("photoBig", "mouseout", slide.btns[2].resume2, slide.btns[2], true);
$E.on("autoPlay", "mouseover", slide.btns[2].pause2, slide.btns[2], true);
$E.on("autoPlay", "mouseout", slide.btns[2].resume2, slide.btns[2], true);
},
/**
* 详细信息面板上的滚动条
*/
scrollerInDetail: function () {
slide.detailScroll();
//将slide移到外面，解决IE下影响图片margin的问题
/*document.body.appendChild($("photoDesc-scroll"));
var xy = $D.getXY("playCtrl");
alert(xy);
xy[0] += 450;
xy[1] -= 450;
$D.setXY("photoDesc-scroll", xy);*/
},
footAddress: function () {
//底部地址栏
$D.getElementsByClassName("address", "span", "slide-foot", function (o) {
var s = o.innerHTML;
o.title = s;
o.innerHTML = $J.strLeft(s, 40, "..");
});
}
};
//Fibonacci: [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
// 幻灯对象
var slide = {
width: 0,	//可用显示区域的宽度
height: 0,	//可用显示区域的高度
start: 1,
end: 20,
isBigPhoto: true,	//是否在显示大图的状态
bigPhotoWidth: 0,
bigPhotoHeight: 0,
photos: [],
curIdx: -1,	//当前显示照片的index，从0开始
targetIdx: 0,	//目标index
_maxLiCount: 500,	//右边小图HTML Li最多的数量
_listUl: null,
isScrolling: false,		//是否正在滚动中
btns: [],	//翻页按钮，[上一张，下一张，自动播放]
/**
* 根据相册包含的照片数生成右侧空列表
*/
_initHTML0: function () {
var len = albums.list[albums.curIdx].count, li;
slide._listUl = $("photoListUl");
while (slide._listUl.firstChild) {
slide._listUl.removeChild(slide._listUl.firstChild);
}
for (var i = 0; i < len; i ++) {
li = mkEl("li");
slide._listUl.appendChild(li);
popInform.reg(li, "查看大图", function (msg) {
return Math.floor($D.getStyle(this, "opacity"));
});
}
$("photoListBox").scrollTop = 0;
},
/**
* 根据传入的对象数组，生成相应的HTML
*/
_initHTML: function (arr, start, end) {
var end2 = start + arr.length - 1, lis, a, img;
slide._listUl = $("photoListUl");
lis = slide._listUl.getElementsByTagName("li");
var imgResize = function () {
var wh = g_imgMaxSize(this, 48, 48);
$D.setStyle(this, "marginTop", (48 - wh[1]) / 2 + "px");
};
for (var i = start - 1; i < end2 && i < end; i ++) {
img = mkEl("img", {src: arr[i - start + 1].summSrc});
img.onload = imgResize;
try {
imgResize.call(img);
} catch (e) {}
a = mkEl("a", {href: "#" + i}, img);
$E.on(a, "mouseover", slide.photoHover);
$E.on(a, "mouseout", slide.photoUnHover);
$E.on(a, "click", slide.photoSelect);
lis[i].appendChild(a);
if (i == 0) {
$D.setStyle(lis[i], "opacity", 0);
}
}
},
photoHover: function () {
$D.addClass(this, "hover");
},
photoUnHover: function () {
$D.removeClass(this, "hover");
},
/**
* 选择了某个图片
*/
photoSelect: function () {
var idx = parseInt(this.href.match(/\d+$/));
if (isNaN(idx) || idx == slide.curIdx || slide.isScrolling) return;
slide.isScrolling = true;
this.blur();
var _isPlaying = slide.btns[2].isPlaying;
slide.btns[2].pause();
var lis = slide._listUl.getElementsByTagName("li");
var a1 = new $Y.Anim(lis[slide.curIdx], {
opacity: {to: 1}
}, 0.5), a2 = new $Y.Anim(lis[idx], {
opacity: {to: 0}
}, 0.5), a3 = new $Y.Anim("actAltDetail", {
opacity: {to: 0}
}, 0.5);
a1.onComplete.subscribe(function () {
});
a3.onComplete.subscribe(function () {
});
a1.animate();
a2.animate();
a3.animate();
$D.setStyle("photoListUl", "backgroundPosition", "0 " + (60 * idx + (parseInt($D.getStyle("photoListUl", "paddingTop")) || 0)) + "px");
slide.anim_bd(lis[idx], function () {
slide.show(idx);
slide.btns[2]._tm = setTimeout(function () {
if (_isPlaying)
slide.btns[2].autoPlay();
}, 3000);
});
return false;
},
/**
* 显示某个照片
*/
show: function (idx, isAlways) {
if (idx == -1 || idx >= albums.list[albums.curIdx].count || (slide.curIdx == idx && !isAlways)) return;
if (!slide.isBigPhoto) {
slide.hideDetail(function () {
setTimeout(function () {
slide.show(idx, isAlways);
}, 500);
});
return;
}
$D.setStyle("replay", "display", "none");
$D.setStyle("photoListUl", "backgroundPosition", "0 " + (60 * idx + (parseInt($D.getStyle("photoListUl", "paddingTop")) || 0)) + "px");
slide.curIdx = idx;
slide.scrollTo(idx);
slide.scroller.setValue(slide.scrollHeight * idx / (albums.list[albums.curIdx].count + 1));
if (idx == albums.list[albums.curIdx].count - 1) {
slide.scroller.setValue(slide.scrollHeight, true, false, true);
}
if (idx == 0) {
slide.btns[0].disable();
} else {
slide.btns[0].enable();
}
if (idx == slide.photos.length - 1) {
slide.btns[1].disable();
} else {
slide.btns[1].enable();
}
var box = $("actAltDetail"), img = mkEl("img", {src: slide.photos[idx].src});
$D.setStyle(img, "visibility", "hidden");
img.onload = slide._bigPhotoReSize;
try {
slide._bigPhotoReSize.call(img);
} catch (e) {}
while (box.firstChild) {
box.removeChild(box.firstChild);
}
$D.setStyle(box, "opacity", 0);
box.appendChild(img);
box.appendChild(mkEl("div", {id: "lnkShowDetail"}, mkTxtEl("查看详情>>")));
var a1 = new $Y.Anim(box, {
opacity: {to: 1}
});
a1.animate();
// 数据打点
if (dmtrack_ignoredPicOnce) {
dmtrack_url = "/china.alibaba.com/xwp/slide-pic.html?pid=" + slide.photos[idx].id + "&albumid=" + albums.list[albums.curIdx].id + "&pageurl=" + location.href;
//-------------------------------------
/*
* Begin DW javascript code version: 3.0
* Very important data,can not be copied or pasted from elsewhere.
* If you need to modify is required to notify the DW.
*
*/
var url = dmtrack_url;
var refer = dmtrack_refer;
/*** DO NOT ALTER ANYTHING BELOW THIS LINE ! ****/
dmtrack.flash_dmtracking(url, refer);
/********** DO NOT REMOVE **********/
/**** End DW code version: 3.0 *****/
//-----------------------------------
dmtrack_refer = dmtrack_url;
} else {
dmtrack_ignoredPicOnce = 1;
dmtrack_refer = location.href;
}
},
/**
* 显示或隐藏详细信息
*/
altDetail: function () {
if (slide.curIdx == -1) {
slide.btns[2]._isJustReplay = false;
slide.curIdx = slide._listUl.getElementsByTagName("li").length - 1;
}
slide.btns[2].pause();
if (slide.isZooming) return;
slide.isZooming = true;
if (slide.isBigPhoto) {
$D.setStyle("lnkShowDetail", "display", "none");
$D.setStyle("replay", "display", "none");
slide.showDetail();
popInform.setMsg("actAltDetail", "查看大图");
} else {
slide.hideDetail();
popInform.setMsg("actAltDetail", "查看详情");
}
},
/**
* 根据大图的尺寸，算出缩小的小图的尺寸
*/
getSmallSize: function (wh) {
if (wh[0] != 0 && wh[1] != 0) {
if (wh[1] / wh[0] > 0.75) {
//长图
if (wh[1] > 130)
return [wh[0] * 130 / wh[1], 130];
} else {
//宽图
if (wh[0] > 173)
return [173, wh[1] * 173 / wh[0]];
}
}
return wh;
},
showDetail: function () {
slide._isTmpPause = false;
slide.btns[2].pause();
slide.btns[2].disabled = true;
var img = $("actAltDetail").getElementsByTagName("img")[0];
slide.tmp_imgWH = [img.offsetWidth - 6, img.offsetHeight - 6];
slide.tmp_photoBig_top = parseInt($D.getStyle("photoBig", "top"));
var wh = slide.getSmallSize(slide.tmp_imgWH),
mgL = (slide.tmp_imgWH[0] - wh[0]) / (YAHOO.env.ua.ie != 6 ? 2 : 4),
mgT = (130 - wh[1]) / 2,
a = new $Y.Anim(img, {
width: {to: wh[0]},
height: {to: wh[1]}
}),
a2 = new $Y.Anim("actAltDetail", {
marginLeft: {to: mgL},
marginTop: {to: mgT}
}),
a3 = new $Y.Anim("photoBig", {
top: {to: 10}
});
a.onComplete.subscribe(slide.showDetail2);
a.animate();
a2.animate();
a3.animate();
slide.isBigPhoto = false;
// 数据打点
dmtrack_url = "/china.alibaba.com/xwp/slide-detail.html?pid=" + slide.photos[slide.curIdx].id + "&albumid=" + albums.list[albums.curIdx].id + "&pageurl=" + location.href;
//-------------------------------------
/*
* Begin DW javascript code version: 3.0
* Very important data,can not be copied or pasted from elsewhere.
* If you need to modify is required to notify the DW.
*
*/
var url = dmtrack_url;
var refer = dmtrack_refer;
/*** DO NOT ALTER ANYTHING BELOW THIS LINE ! ****/
dmtrack.flash_dmtracking(url, refer);
/********** DO NOT REMOVE **********/
/**** End DW code version: 3.0 *****/
//-----------------------------------
dmtrack_refer = dmtrack_url;
},
showDetail2: function () {
$D.setStyle("actAltBigPhoto", "display", "block");
$D.setStyle("photoDetail", "display", "block");
var strPhotoTitle = slide.photos[slide.curIdx].title.replace(/&/g, "&amp;").replace(/</g, "&lt;");
$("photoTitle").innerHTML = strPhotoTitle;
$D.setStyle("photoTitle", "font-size", strPhotoTitle.length < 30 ? "14px" : "13px");
//$("photoDesc-cont").innerHTML = slide.photos[slide.curIdx].desc.replace(/<(?!br)/ig, "&lt;");
$("photoDesc-cont").innerHTML = slide.photos[slide.curIdx].desc.replace(/&/g, "&amp;").replace(/</ig, "&lt;").replace(/\n/g, "<br />");
var a = new $Y.Anim("photoDetail", {
opacity: {
from: 0,
to: 1
}
});
a.onComplete.subscribe(function () {
slide.isZooming = false;
setTimeout(function () {
slide.detailScroll();
slide.btns[2].disabled = false;
}, 100);
});
a.animate();
popInform.setMsg("autoPlay", "自动播放");
popInform.setMsg("actAltDetail", "查看大图");
},
hideDetail0: function (callback) {
$D.setStyle("actAltBigPhoto", "display", "none");
var a = new $Y.Anim("photoDetail", {
opacity: {
from: 1,
to: 0
}
});
a.animate();
a.onComplete.subscribe(function () {
$D.setStyle("photoDetail", "display", "none");
});
},
hideDetail: function (callback) {
slide.hideDetail0();
var img = $("actAltDetail").getElementsByTagName("img")[0];
var a = new $Y.Anim(img, {
width: {to: slide.tmp_imgWH[0]},
height: {to: slide.tmp_imgWH[1]}
}),
a2 = new $Y.Anim("actAltDetail", {
marginLeft: {to: 0},
marginTop: {to: 0}
}),
a3 = new $Y.Anim("photoBig", {
top: {to: slide.tmp_photoBig_top}
});
a.animate();
a2.animate();
a3.animate();
a.onComplete.subscribe(function () {
//slide.show(slide.curIdx, true);
slide.isZooming = false;
$D.setStyle("lnkShowDetail", "display", "block");
if (typeof(callback) == "function")
callback();
});
slide.isBigPhoto = true;
// 数据打点
dmtrack_url = "/china.alibaba.com/xwp/slide-pic.html?pid=" + slide.photos[slide.curIdx].id + "&albumid=" + albums.list[albums.curIdx].id + "&pageurl=" + location.href;
if (dmtrack_ignoredPicOnce) {
//-------------------------------------
/*
* Begin DW javascript code version: 3.0
* Very important data,can not be copied or pasted from elsewhere.
* If you need to modify is required to notify the DW.
*
*/
var url = dmtrack_url;
var refer = dmtrack_refer;
/*** DO NOT ALTER ANYTHING BELOW THIS LINE ! ****/
dmtrack.flash_dmtracking(url, refer);
/********** DO NOT REMOVE **********/
/**** End DW code version: 3.0 *****/
//-----------------------------------
dmtrack_refer = dmtrack_url;
} else {
dmtrack_ignoredPicOnce = 1;
dmtrack_refer = location.href;
}
},
_bigPhotoReSize: function () {
if (!slide.isBigPhoto) return;
var _this = this,
w0 = this.width || this.offsetWidth || 0;
if (w0 == 0) {
setTimeout(function () {
slide._bigPhotoReSize.call(_this);
}, 50);
return;
}
var wh = g_imgMaxSize(this, slide.bigPhotoWidth - 24, slide.bigPhotoHeight - 24);
$D.setStyle("photoBig", "left", (slide.bigPhotoWidth - wh[0] - 12) / 2 + "px");
$D.setStyle("photoBig", "top", (slide.bigPhotoHeight - wh[1] - 12) / 2 + "px");
setTimeout(function () {
$D.setStyle(_this, "visibility", "visible");
}, 200);
slide._bigPhoto_wh = wh;
},
/**
* 取得显示区域及相关尺寸
*/
getSize: function () {
var w = $("slide-body").offsetWidth,
h = $("slide-body").offsetHeight;
slide.width = w;
slide.bodyHeight = h;
slide.height = h - $("slide-head").offsetHeight - $("slide-foot").offsetHeight;
slide._showPhotoNum = Math.floor(slide.height / 60) - 1;
if (slide.isBigPhoto) {
slide.bigPhotoWidth = w - 360;
slide.bigPhotoHeight = slide.height - 105;
if (slide.bigPhotoHeight < 200) slide.bigPhotoHeight = 200;
}
if (slide._showPhotoNum % 2 == 0) slide._showPhotoNum --;
if (slide._showPhotoNum < 1) slide._showPhotoNum == 1;
slide.scrollHeight = slide._showPhotoNum * 60;
slide.scrollBtnHeight = 32;
},
/**
* 页面大小改变时重新计算尺寸及部分元素的位置
*/
reSize: function () {
slide.getSize();
$D.setStyle("photoList", "height", slide.scrollHeight + "px");
$D.setStyle("photoListBox", "height", slide.scrollHeight + "px");
if (slide.isBigPhoto) {
$D.setStyle("photoArea", "width", slide.bigPhotoWidth + "px");
$D.setStyle("photoArea", "height", slide.bigPhotoHeight + "px");
}
$D.setStyle("photoListUl", "padding-top", Math.floor(slide._showPhotoNum / 2) * 60 + "px");
$D.setStyle("photoListUl", "padding-bottom", Math.floor(slide._showPhotoNum / 2) * 60 + "px");
$D.setStyle("playCtrl", "left", (slide.width / 2 - 100) + "px");
$D.setStyle("overlay", "top", $("slide-head").offsetHeight + "px");
$D.setStyle("overlay", "height", slide.height + "px");
$D.setStyle("pwdNeeded", "top", (slide.bodyHeight - 412) / 2 + "px");
$D.setStyle("pwdNeeded", "left", (slide.width - 642) / 2 + "px");
$D.setStyle("noPhoto", "top", (slide.height - 101) / 2 + "px");
$D.setStyle("noPhoto", "left", (slide.width - 318) / 2 + "px");
try {
//slide._bigPhotoReSize.call($("photoBig").getElementsByTagName("img")[0]);
slide.show(slide.curIdx, true);
} catch (e) {}
slide.setScroll();
slide.scroller.setValue(slide.curIdx, true, false, true);
},
/**
* 设置滚动条
*/
setScroll: function () {
$("scroller").innerHTML = "";
var sBar = mkEl("div", {className: "scrollBar"}),
sBtn = mkEl("div", {className: "scrollBtn"});
sBar.appendChild(sBtn);
$("scroller").appendChild(sBar);
$D.setStyle(sBar, "height", (slide.scrollHeight - 2) + "px");
slide.scroller = YAHOO.widget.Slider.getVertSlider(sBar, sBtn, 0, slide.scrollHeight - slide.scrollBtnHeight);
slide.scroller.enableKeys = false;
slide.scroller.getRealValue = function () {
var count = albums.list[albums.curIdx].count,
v = Math.round(count * this.getValue() / (slide.scrollHeight - slide.scrollBtnHeight));
return v;
};
$E.on(sBtn, "mousedown", function () {
slide._isScrollingByHand = true;
slide.btns[2].pause2();
});
$E.on(sBtn, "mouseup", function () {
slide._isScrollingByHand = false;
});
slide.scroller.subscribe("change", function(offsetFromStart) {
var v = slide.scroller.getRealValue();
if (slide._isScrollingByHand)
slide.scrollTo(v);
});
slide.scroller.subscribe("slideStart", function() {
slide.isScrolling = true;
$D.setStyle("photoList", "backgroundImage", "none");
$D.setStyle("photoListUl", "backgroundImage", "url(http://img.china.alibaba.com/images/cn/market/danai/090210/photo_cur.gif)");
});
slide.scroller.subscribe("slideEnd", function() {
slide.isScrolling = false;
slide._isScrollingByHand = false;
slide.btns[2].resume2();
/*$D.setStyle("photoList", "backgroundImage", "url(http://img.china.alibaba.com/images/cn/market/danai/090210/photo_cur.gif)");
$D.setStyle("photoListUl", "backgroundImage", "none");*/
});
},
pwdNeeded: function () {
//需要密码
$D.removeClass("overlay", "hidden");
$D.addClass("albumNav", "white");
$D.removeClass("pwdNeeded", "hidden");
$D.addClass("pwdNeeded-info2", "hidden");
$("pswd").value = "";
BTN902.btns["btnSubmit"].disable(1);
$("pswd-albumId").value = albums.curIdx;
slide._isShowPwdNeeded = true;
$D.addClass("pwdNeeded-info2", "hidden");
},
/**
* 隐藏密码输入框
*/
pwdNeeded_hide: function () {
$("pswd").value = "";
$D.addClass("overlay", "hidden");
$D.removeClass("albumNav", "white");
$D.addClass("pwdNeeded", "hidden");
$D.removeClass("pwdNeeded-info2", "hidden");
},
/**
* Ajax请求获得成功后的处理函数
*/
reqOK: function (r, start, end, pswd) {
var j = YAHOO.lang.JSON.parse(r.responseText);
if (j.result == "success") {
$D.addClass("overlay", "hidden");
$D.removeClass("albumNav", "white");
if (slide.start == 1) {
slide._initHTML0();
slide.loadPhotos(j.dataList, true, start, end);
} else {
slide.loadPhotos(j.dataList, false, start, end);
}
$("curAlbumName").innerHTML = g_albums.albums[albums.curIdx].title.replace(/&/g, "&amp;").replace(/</g, "&lt;");
albums.backIdx = albums.curIdx;
albums.list[albums.curIdx].pswd = pswd || "";
slide.pwdNeeded_hide();
$D.setStyle(slide._listUl, "height", albums.list[albums.curIdx].count * 60 + "px");
} else if (j.errMsg[0] == "pwdNeeded") {
//需要密码
slide.pwdNeeded();
$("curAlbumName").innerHTML = g_albums.albums[albums.curIdx].title.replace(/&/g, "&amp;").replace(/</g, "&lt;");
$("albumName2").innerHTML = g_albums.albums[albums.curIdx].title.replace(/&/g, "&amp;").replace(/</g, "&lt;");
} else if (j.errMsg[0] == "pwdValidateFail") {
slide.pwdNeeded();
$D.removeClass("pwdNeeded-info2", "hidden");
} else {
alert(j.errMsg.join("\n"));
}
},
mkAjFrm: function (start, end) {
return new $J.ajaxForm("ajfrm_getAlbumDetail", {
btnSubmit: "btnSubmit",
before: function () {
var v = $("pswd").value;
this.ipts["password"] = v || albums.list[albums.curIdx].pswd || "";
this.ipts["start"] = start || slide.start;
this.ipts["end"] = end || slide.end;
//return !BTN902.btns["btnSubmit"].disabled;
if (start && slide.start < start) {
slide.start = start;
slide.end = start + 19;
}
},
success: function (r) {
slide.reqOK(r, this.ipts["start"], this.ipts["end"], this.ipts["password"]);
}
});
},
ajFrm: null,
/**
* 获得当前相册下一组照片
*/
getPhotos: function (v) {
if (slide.start < v && slide.end < albums.list[albums.curIdx].count) {
slide.start += 20;
slide.end += 20;
var pswd = albums.list[albums.curIdx].pswd || $("pswd").value,
postData = {
_csrf_token: _csrf_token,
albumId: albums.list[albums.curIdx].id,
password: escape(pswd),
start: slide.start,
end: slide.end
},
c = $Y.Connect.asyncRequest("POST", $("ajfrm_getAlbumDetail").action, {
success: function (r) {
slide.reqOK(r, postData.start, postData.end, pswd);
}
}, $J.ob2param(postData));
}
},
loadPhotos: function (arr, clearOldData, start, end) {
if (clearOldData) {
slide.photos = [];
slide.curIdx = -1;
}
for (var i = 0; i < arr.length; i ++) {
slide.photos[start + i - 1] = new Photo(arr[i]);
//slide.photos.push(new Photo(arr[i]));
}
if (slide.photos.length != 0) {
$D.setStyle("playCtrl", "display", "block");
$D.setStyle("photoList", "display", "block");
$D.setStyle("noPhoto", "display", "none");
$D.setStyle("actAltDetail", "display", "block");
slide._initHTML(arr, start, end);
if (start == 1) {
slide.show(0);
slide.setScroll();
}
} else {
//没有相片
$D.setStyle("playCtrl", "display", "none");
$D.setStyle("photoList", "display", "none");
$D.setStyle("noPhoto", "display", "block");
$D.setStyle("actAltDetail", "display", "none");
$D.setStyle("photoDetail", "display", "none");
$D.setStyle("actAltBigPhoto", "display", "none");
}
},
/**
* 显示指定照片
*/
scrollTo: function (idx) {
if (slide.targetIdx == idx) return;
slide.targetIdx = idx;
slide._scroll();
//setTimeout(function () {
slide.getPhotos(idx);
//}, 1000);
},
_scroll: function () {
var dd = $("photoListBox"),
top = dd.scrollTop,
top2 = slide.targetIdx * 60,
distance = top2 - top;
if (distance == 0) {
return;
}
var step = Math.floor(distance / 4);
step = (step == 0 ? Math.floor(distance / Math.abs(distance)) : step);
dd.scrollTop += step;
setTimeout(slide._scroll, 100);
},
chkPswd: function () {
$D.setStyle("pwdNeeded-inputInform", "display", "none");
},
chkPswd2: function () {
var ipt = $("pswd");
if (ipt.value == "") {
$D.setStyle("pwdNeeded-inputInform", "display", "block");
BTN902.btns["btnSubmit"].disable(1);
} else {
$D.setStyle("pwdNeeded-inputInform", "display", "none");
BTN902.btns["btnSubmit"].disable(0);
}
},
/**
* 当在密码输入框按回国键时，提交表单
*/
chkSubmit: function (e) {
if (e.keyCode == 13) {
slide.ajFrm.submit();
this.blur();
}
},
/**
* 选中某个照片时显示方框变大动画
*/
anim_bd: function (fromOb, callback) {
if (!slide.anim_bd_ob) {
slide.anim_bd_ob = mkEl("div", {className: "animBd hidden"});
$("slide-wrapper").appendChild(slide.anim_bd_ob);
}
var xy0 = $D.getXY(fromOb),
xy1 = $D.getXY("photoBig");
$D.setStyle(slide.anim_bd_ob, "width", "60px");
$D.setStyle(slide.anim_bd_ob, "height", "60px");
$D.removeClass(slide.anim_bd_ob, "hidden");
$D.setXY(slide.anim_bd_ob, xy0);
var a1 = new $Y.Anim(slide.anim_bd_ob, {
opacity: {from: 1, to: 0},
left: {to: xy1[0]},
top: {to: xy1[1]},
width: {to: 300},
height: {to: 300}
}, 0.5);
if (typeof(callback) == "function") {
a1.onComplete.subscribe(callback);
}
a1.animate();
},
/**
* 详情页面滚动条
*/
detailScroll: function () {
$("photoDesc-scroll").innerHTML = "";
var sBar = mkEl("div", {className: "scrollBar"}),
sBtn = mkEl("div", {className: "scrollBtn"});
sBar.appendChild(sBtn);
$("photoDesc-scroll").appendChild(sBar);
slide.detailHeight = slide.bigPhotoHeight - 260;
$D.setStyle("photoDesc-cont", "height", slide.detailHeight + "px");
$D.setStyle("photoDesc-scroll", "height", slide.detailHeight + "px");
$D.setStyle(sBar, "height", (slide.detailHeight - 4) + "px");
slide.detailScrollerHeight = slide.detailHeight - slide.scrollBtnHeight - 4;
if (slide.detailScrollerHeight < 0) slide.detailScrollerHeight = 1;
slide.detailScroller = YAHOO.widget.Slider.getVertSlider(sBar, sBtn, 0, slide.detailScrollerHeight);
slide.detailScroller.enableKeys = false;
slide.detailScrollHeight = $("photoDesc-cont").scrollHeight - slide.detailHeight + 20;
slide.detailScroller.subscribe("change", function(v) {
$("photoDesc-cont").scrollTop = slide.detailScrollHeight * (v / (slide.detailScrollerHeight));
});
}
};
//相册对象
var albums = {
backIdx: -1,
curIdx: -1,
length: 0,
list: g_albums.albums,
/**
* 返回上一个相册
*/
back: function () {
if (albums.backIdx != -1) {
albums.select(albums.backIdx);
} else {
if (typeof(g_fallbackURL) == "string")
location.href = g_fallbackURL;
else
alert("没有设置fallbackURL！");
}
},
select: function (idx) {
slide.btns[2].pause();
if (!slide.isBigPhoto) {
slide.hideDetail(function () {
albums.select(idx);
});
return;
}
slide.start = 1;
slide.end = 20;
if (typeof(idx) != "number") idx = albums.curIdx;
$D.addClass("preAlbum", "disabled");
$D.addClass("nextAlbum", "disabled");
if (idx > 0)
$D.removeClass("preAlbum", "disabled");
if (idx < albums.length - 1)
$D.removeClass("nextAlbum", "disabled");
var as = $("selectOtherAlbum-list").getElementsByTagName("a");
$D.removeClass(as[albums.curIdx], "selected");
$D.addClass(as[idx], "selected");
albums._tmpIdx = albums.curIdx;
albums.curIdx = idx;
$("ipt_albumId").value = albums.list[idx].id;
slide.ajFrm.submit();
$D.setStyle("replay", "display", "none");
// 数据打点
dmtrack_url = "/china.alibaba.com/xwp/slide-album.html?albumid=" + albums.list[idx].id + "&pageurl=" + location.href;
if (dmtrack_ignoredAlbumOnce) {
//-------------------------------------
/*
* Begin DW javascript code version: 3.0
* Very important data,can not be copied or pasted from elsewhere.
* If you need to modify is required to notify the DW.
*
*/
var url = dmtrack_url;
var refer = dmtrack_refer;
/*** DO NOT ALTER ANYTHING BELOW THIS LINE ! ****/
dmtrack.flash_dmtracking(url, refer);
/********** DO NOT REMOVE **********/
/**** End DW code version: 3.0 *****/
//-----------------------------------
dmtrack_refer = dmtrack_url;
} else {
dmtrack_ignoredAlbumOnce = 1;
dmtrack_refer = location.href;
}
},
previous: function () {
if (this.blur) this.blur();
var idx = albums.curIdx - 1;
if (idx >= 0)
albums.select(idx);
return false;
},
next: function () {
if (this.blur) this.blur();
var idx = albums.curIdx + 1;
if (idx < albums.length)
albums.select(idx);
return false;
},
getIdxById: function (id) {
var i;
albums.length = g_albums.albums.length;
for (i = 0; i < albums.length; i ++) {
if (g_albums.albums[i].id == id) {
break;
}
}
return i < albums.length ? i : albums.length - 1;
},
selectOther: function () {
var id = parseInt(this.href.match(/-{0,1}\d+$/));
albums.select(albums.getIdxById(id));
}
};
/**
* 照片类
*/
function Photo(ob) {
this.id = ob.id;
this.title = ob.title;
this.desc = ob.desc || "";
this.src = ob.src;
this.summSrc = ob.summSrc;
};
Photo.prototype = {
init: function () {
}
};
/**
* 上一页、下一页按钮类
* 参数：
* 	el <String>: 按钮元素id
* 	d <Integer>: 翻页方向，1：下一页；-1：上一页
*/
function CtrlBtn(el, d) {
this.el = $(el);
this.d = d > 0 ? 1 : -1;
this.disabled = true;
var _this = this;
$E.on(this.el, "click", function () {
_this.click();
this.blur();
return false;
});
}
CtrlBtn.prototype = {
click: function () {
if (this.disabled) return;
slide._isTmpPause = false;
slide.btns[2].pause();
var t = slide.curIdx, t1 = t + this.d;
if (t1 >= 0 && t1 < slide.photos.length) {
slide.show(t1);
var lis = slide._listUl.getElementsByTagName("li");
var a1 = new $Y.Anim(lis[t], {
opacity: {to: 1}
}), a2 = new $Y.Anim(lis[t1], {
opacity: {to: 0}
});
a1.animate();
a2.animate();
}
/*if ((t == 0 && this.d == 1) || (t == slide.photos.length && this.d == -1)) {
this.disable();
} else {
this.enable();
}*/
popInform.setMsg("autoPlay", "自动播放");
$D.setStyle("photoList", "backgroundImage", "url(http://img.china.alibaba.com/images/cn/market/danai/090210/photo_cur.gif)");
$D.setStyle("photoListUl", "backgroundImage", "none");
return false;
},
disable: function () {
if (!this.disabled) {
this.disabled = true;
$D.addClass(this.el, "disabled" + (this.d == 1 ? "1" : ""));
}
},
enable: function () {
if (this.disabled) {
this.disabled = false;
$D.removeClass(this.el, "disabled" + (this.d == 1 ? "1" : ""));
}
}
};
/**
* 自动播放按钮
*/
function AutoPlayBtn (el) {
this.el = $(el);
this.isPlaying = false;
this._tm = 0;
this.disabled = false;
var _this = this;
$E.on(this.el, "click", function () {
this.blur();
_this._click();
return false;
});
}
AutoPlayBtn.prototype = {
_click: function () {
if (this.disabled) return;
if (this.isPlaying || slide._isTmpPause) {
slide._isTmpPause = false;
this.pause();
popInform.setMsg("autoPlay", "自动播放");
} else {
this.autoPlay();
}
},
autoPlay: function () {
var t = slide.curIdx, t1 = idx = slide.curIdx + 1, _this = this;
clearTimeout(this._tm);
if (!slide.isBigPhoto) {
//slide.hideDetail();
//$D.setStyle("actAltBigPhoto", "display", "none");
//$D.setStyle("photoDetail", "display", "none");
slide.altDetail();
this._tm = setTimeout(function () {
_this.autoPlay();
}, 3000);
return;
}
this.isPlaying = true;
this._isJustReplay = false;
$D.replaceClass(this.el, "pause", "playing");
if (idx < slide.photos.length) {
slide.show(idx);
var lis = slide._listUl.getElementsByTagName("li");
if (t < 0) t = 0;
var a1 = new $Y.Anim(lis[t], {
opacity: {to: 1}/*,
marginLeft: {to: 0}*/
}), a2 = new $Y.Anim(lis[t1], {
opacity: {to: 0}/*,
marginLeft: {to: -12}*/
});
a1.animate();
a2.animate();
$D.setStyle("photoList", "backgroundImage", "url(http://img.china.alibaba.com/images/cn/market/danai/090210/photo_cur.gif)");
$D.setStyle("photoListUl", "backgroundImage", "none");
this._tm = setTimeout(function () {
_this.autoPlay();
}, 3000);
popInform.setMsg("autoPlay", "暂停");
} else {
this.showReplay();
popInform.reg("autoPlay", "自动播放");
}
},
pause: function () {
this.isPlaying = false;
if (!slide._isTmpPause)
$D.replaceClass(this.el, "playing", "pause");
clearTimeout(this._tm);
if (slide._tmpPauseResume) {
clearTimeout(slide._tmpPauseResume);
}
},
pause2: function () {
//暂停播放
if (this.isPlaying) {
slide._isTmpPause = true;
}
this.pause();
},
resume2: function () {
//恢复播放
if (slide._isTmpPause || this._isJustReplay) {
var _this = this;
slide._tmpPauseResume = setTimeout(function () {
slide._isTmpPause = false;
if (_this._isJustReplay) {
var lis = slide._listUl.getElementsByTagName("li");
$D.setStyle(lis[lis.length - 1], "opacity", 1);
}
if (!_this.isPlaying) {
_this.autoPlay();
}
}, 1000);
}
},
showReplay: function () {
this.pause();
var _this = this;
if (!slide.isBigPhoto) {
slide.hideDetail(function () {
_this.showReplay();
});
return;
}
if (slide._bigPhoto_wh) {
var rp = $("replay");
$D.setStyle(rp, "display", "block");
$D.setStyle(rp, "width", slide._bigPhoto_wh[0] + "px");
rp.blur();
var top = (slide._bigPhoto_wh[1] - rp.offsetHeight) / 2;
if (top < 0) top = 0;
$D.setStyle(rp, "top", top + "px");
}
},
replay: function () {
slide.curIdx = -1;
//slide.show(0);
//this.autoPlay();
this._isJustReplay = true;
var a = new $Y.Anim("replay", {
opacity: {to: 0}
});
a.animate();
a.onComplete.subscribe(function () {
$D.setStyle("replay", "opacity", 0.6);
$D.setStyle("replay", "display", "none");
});
}
};
/**
* 鼠标提示，单例对象
*/
var popInform = {
el: null,
_elCnt: null,
isDisplay: false,
msg: {},
init: function () {
this._elCnt = mkEl("div", {className: "popInform-cnt"});
this.el = mkEl("div", {className: "popInform-wrapper"}, [
this._elCnt,
mkEl("div", {className: "popInform-tail"})
]);
$("slide-wrapper").appendChild(this.el);
},
show: function (el, msg, pos) {
//if (this.isDisplay) return;
this.isDisplay = true;
if (!this.el) {
this.init();
}
this._elCnt.innerHTML = this.msg[el] || msg;
$D.setStyle(this.el, "display", "block");
$D.setXY(this.el, pos);
},
move: function (pos) {
},
hide: function () {
this.isDisplay = false;
$D.setStyle(this.el, "display", "none");
},
reg: function (el, msg, conFunc) {
var _t = this;
this.msg[el] = msg;
$E.on(el, "mouseover", function (e) {
var rg = $D.getRegion(el), pos = [], ep = $E.getXY(e);
pos = [ep[0] - 7, ep[1] - 36];
if (typeof(conFunc) != "function" || (typeof(conFunc) == "function" && conFunc.call(el, msg)))
_t.show(el, msg, pos);
});
$E.on(el, "mousemove", function (e) {
var ep = $E.getXY(e),
pos = [ep[0] - 7, ep[1] - 36];
$D.setXY(_t.el, pos);
});
$E.on(el, "mouseout", this.hide, this, true);
},
setMsg: function (el, msg) {
this.msg[el] = msg;
if (this._elCnt)
this._elCnt.innerHTML = msg;
}
};
$E.onDOMReady(function () {
for (var k in readyFunc) {
try {
readyFunc[k].call();
} catch (e) {}
}
});
