演示地址:
http://www.yaohaixiao.com/code/albums/index.html
代码:
代码:
- /**
- * Album.js
- * @author Yaohaixiao <haixiao_yao@yahoo.com.cn>
- * @version 1.0.1.1 Beta
- * @copyright (c) 2008 Yaohaixiao, All Right Reserved.
- */
- if (JSEasy.isUndefined(Album)) {
- var Album = {
- imagesArray: [],
- loadingShardow: JSEasy.Builder.Node("div", {
- id: "album-loadingshardow"
- }),
- loadingImage: JSEasy.Builder.Node("img", {
- id: "album-loading",
- src: "img/loading.gif",
- alt: "loading"
- }),
- Shardow: JSEasy.Builder.Node("div", {
- id: "album-shardow"
- }),
- Window: JSEasy.Builder.Node("div", {
- id: "album-window"
- }),
- TitleBar: JSEasy.Builder.Node("div", {
- id: "album-titlebar"
- }),
- Title: JSEasy.Builder.Node("h2"),
- CloseBar: JSEasy.Builder.Node("div", {
- id: "album-closebar"
- }),
- ActiveImage: JSEasy.Builder.Node("img", {
- id: "album-activeimage"
- }),
- LoadingImage: JSEasy.Builder.Node("img", {
- id: "album-loadingimage"
- }),
- InfoBar: JSEasy.Builder.Node("p", {
- id: "album-infobar"
- }),
- StatusBar: JSEasy.Builder.Node("div", {
- id: "album-statusbar"
- }),
- ControlBar: JSEasy.Builder.Node("div", {
- id: "album-controls"
- }),
- FirstBtn: JSEasy.Builder.Node("img", {
- id: "album-first",
- src: "img/icon/resultset_first.png",
- alt: "第一张"
- }),
- PreviousBtn: JSEasy.Builder.Node("img", {
- id: "album-previous",
- src: "img/icon/resultset_previous.png",
- alt: "上一张"
- }),
- IndexInfoBar: JSEasy.Builder.Node("p", {
- id: "album-indexinfo"
- }),
- NextBtn: JSEasy.Builder.Node("img", {
- id: "album-next",
- src: "img/icon/resultset_next.png",
- alt: "下一张"
- }),
- LastBtn: JSEasy.Builder.Node("img", {
- id: "album-last",
- src: "img/icon/resultset_last.png",
- alt: "最后一张"
- }),
- Name: "我的JSEasy相册"
- };
- }
- Album.Unit = {
- init: function(){
- if (!document.getElementsByTagName) {
- return false;
- }
- var cTags = JSEasy.getElementsByClassName("albumbox", "a", document);
- for (var i = 0; i < cTags.length; i++) {
- Album.imagesArray.push([cTags[i], 0]);
- }
- var albumCSS = JSEasy.Builder.Node("link", {
- rel: "stylesheet",
- type: "text/css",
- id: "albumCSS",
- media: "all",
- href: "css/album.css"
- });
- var docHead = document.getElementsByTagName("head")[0];
- docHead.appendChild(albumCSS);
- for (var j = 0; j < Album.imagesArray.length; j++) {
- Album.imagesArray[j][0].setAttribute("ren", j);
- Album.imagesArray[j][0].onclick = this.Start;
- }
- },
- Start: function(){
- JSEasy.setStyle(Album.Shardow, {
- height: (JSEasy.getDocumentSize()[1] + 30) + "px"
- });
- document.body.appendChild(Album.Shardow);
- JSEasy.Builder.Slider.Opacity(Album.Shardow, 40);
- var path = this.href;
- var alt = this.title;
- var index = parseInt(this.getAttribute("ren"));
- Album.Title.innerHTML = Album.Name;
- Album.TitleBar.appendChild(Album.Title);
- JSEasy.Builder.Attributes(Album.CloseBar, {
- title: "关闭窗口"
- });
- Album.TitleBar.appendChild(Album.CloseBar);
- Album.Window.appendChild(Album.TitleBar);
- JSEasy.Builder.Attributes(Album.ActiveImage, {
- src: path,
- alt: alt,
- ren: index
- });
- Album.Window.appendChild(Album.ActiveImage);
- Album.InfoBar.innerHTML = alt;
- JSEasy.Builder.Slider.Opacity(Album.InfoBar, 70);
- Album.Window.appendChild(Album.InfoBar);
- Album.ControlBar.appendChild(Album.FirstBtn);
- Album.ControlBar.appendChild(Album.PreviousBtn);
- Album.IndexInfoBar.innerHTML = JSEasy.stringBuffer((index + 1) + " / " + Album.imagesArray.length);
- Album.ControlBar.appendChild(Album.IndexInfoBar);
- Album.ControlBar.appendChild(Album.NextBtn);
- Album.ControlBar.appendChild(Album.LastBtn);
- Album.StatusBar.appendChild(Album.ControlBar);
- Album.Window.appendChild(Album.StatusBar);
- document.body.appendChild(Album.Window);
- Album.Unit.PerLoading();
- Album.CloseBar.onmouseover = function(){
- this.style.background = "transparent url(img/tool-sprites.gif) -15px 0 no-repeat";
- }
- Album.CloseBar.onmouseout = function(){
- this.style.background = "transparent url(img/tool-sprites.gif) 0 0 no-repeat";
- }
- Album.CloseBar.onclick = Album.Unit.End;
- Album.Shardow.onclick = Album.Unit.End;
- Album.FirstBtn.onclick = Album.Unit._First;
- Album.PreviousBtn.onclick = Album.Unit._Previous;
- Album.NextBtn.onclick = Album.Unit._Next;
- Album.LastBtn.onclick = Album.Unit._Last;
- return false;
- },
- _First: function(){
- if (parseInt(Album.ActiveImage.getAttribute("ren")) > 0) {
- Album.Unit.ChangeImage(0);
- }
- },
- _Previous: function(){
- if (parseInt(Album.ActiveImage.getAttribute("ren")) > 0) {
- Album.Unit.ChangeImage((parseInt(Album.ActiveImage.getAttribute("ren")) - 1));
- }
- },
- _Next: function(){
- if (parseInt(Album.ActiveImage.getAttribute("ren")) < (Album.imagesArray.length - 1)) {
- Album.Unit.ChangeImage((parseInt(Album.ActiveImage.getAttribute("ren")) + 1));
- }
- },
- _Last: function(){
- if (parseInt(Album.ActiveImage.getAttribute("ren")) < (Album.imagesArray.length - 1)) {
- Album.Unit.ChangeImage((Album.imagesArray.length - 1));
- }
- },
- ChangeImage: function(index){
- var imgAlt = Album.imagesArray[index][0].getAttribute("title");
- var imgPath = Album.imagesArray[index][0].getAttribute("href");
- JSEasy.Builder.Attributes(Album.ActiveImage, {
- src: imgPath,
- alt: imgAlt,
- ren: index
- });
- Album.InfoBar.innerHTML = imgAlt;
- Album.IndexInfoBar.innerHTML = JSEasy.stringBuffer((index + 1), " / ", Album.imagesArray.length);
- Album.Unit.PerLoading();
- },
- PerLoading: function(){
- var iVisited = Album.imagesArray[parseInt(Album.ActiveImage.getAttribute("ren"))][1];
- if (iVisited == 0) {
- Album.Unit.Loading.show();
- }
- var tempImg = new Image();
- tempImg.src = Album.ActiveImage.getAttribute("src");
- if (tempImg.complete) {
- Album.Unit.FixPosition.call(tempImg);
- }
- else {
- tempImg.onload = function(){
- Album.Unit.FixPosition.call(tempImg);
- }
- }
- },
- Loading: {
- show: function(){
- JSEasy.Builder.Slider.Opacity(Album.loadingShardow, 40);
- Album.Window.appendChild(Album.loadingShardow);
- Album.Window.appendChild(Album.loadingImage);
- },
- hide: function(){
- var loadingshardow = $("album-loadingshardow");
- var loading = $("album-loading");
- if (loading) {
- Album.Window.removeChild(loadingshardow);
- Album.Window.removeChild(loading);
- }
- }
- },
- FixPosition: function(){
- var actWidth = this.width;
- var actHeight = this.height;
- var actIndex = parseInt(Album.ActiveImage.getAttribute("ren"));
- var yScroll = JSEasy.getScroll()[1];
- var winHeight = JSEasy.getWindowSize()[1];
- var actTop = actHeight > winHeight ? "0" : JSEasy.stringBuffer((yScroll + ((winHeight - (actHeight + 6))/2)) + "px");
- var actLeft = JSEasy.stringBuffer("-" + (actWidth/ 2 + 3), "px");
- JSEasy.setStyle(Album.ActiveImage, {
- width: actWidth + "px",
- height: actHeight + "px"
- });
- JSEasy.setStyle(Album.Window, {
- width: actWidth + "px",
- height: actHeight + "px",
- marginTop:"0",
- top: actTop,
- marginLeft: actLeft,
- display: "block"
- });
- Album.Unit.Loading.hide();
- if (Album.imagesArray[actIndex][1] == 0) {
- Album.imagesArray[actIndex][1] = 1;
- }
- },
- End: function(){
- document.body.removeChild(Album.Shardow);
- document.body.removeChild(Album.Window);
- }
- };