function ScrollPic(scrollContId, arrLeftId, arrRightId, dotListId){ this.scrollContId = scrollContId; this.arrLeftId = arrLeftId; this.arrRightId = arrRightId; this.dotListId = dotListId; this.dotClassName = "dotItem"; this.dotOnClassName = "dotItemOn"; this.dotObjArr = []; this.pageWidth = 0; this.frameWidth = 0; this.speed = 10; this.space = 10; this.pageIndex = 0; var _autoTimeObj, _scrollTimeObj, _state = "ready"; this.stripDiv = document.createElement("DIV"); this.listDiv01 = document.createElement("DIV"); this.listDiv02 = document.createElement("DIV"); if (!ScrollPic.childs) { ScrollPic.childs = []; } this.ID = ScrollPic.childs.length; ScrollPic.childs.push(this); this.initialize = function(){ if (!this.scrollContId) { throw new Error("must defined scrollContId."); return; } this.scrollContDiv = document.getElementById(this.scrollContId); if (!this.scrollContDiv) { throw new Error("scrollContId is not object.(scrollContId = \"" + this.scrollContId + "\")"); return; } this.scrollContDiv.style.width = this.frameWidth + "px"; this.scrollContDiv.style.overflow = "hidden"; this.listDiv01.innerHTML = this.listDiv02.innerHTML = this.scrollContDiv.innerHTML; this.scrollContDiv.innerHTML = ""; this.scrollContDiv.appendChild(this.stripDiv); this.stripDiv.appendChild(this.listDiv01); this.stripDiv.appendChild(this.listDiv02); this.stripDiv.style.overflow = "hidden"; this.stripDiv.style.zoom = "1"; this.stripDiv.style.width = "32766px"; this.listDiv01.style.cssFloat = "left"; this.listDiv02.style.cssFloat = "left"; if (this.arrLeftId) { this.arrLeftObj = document.getElementById(this.arrLeftId); if (this.arrLeftObj) { this.addEvent(this.arrLeftObj, "mousedown", Function("ScrollPic.childs[" + this.ID + "].rightMouseDown()")); this.addEvent(this.arrLeftObj, "mouseup", Function("ScrollPic.childs[" + this.ID + "].rightEnd()")); this.addEvent(this.arrLeftObj, "mouseout", Function("ScrollPic.childs[" + this.ID + "].rightEnd()")); } } if (this.arrRightId) { this.arrRightObj = document.getElementById(this.arrRightId); if (this.arrRightObj) { this.addEvent(this.arrRightObj, "mousedown", Function("ScrollPic.childs[" + this.ID + "].leftMouseDown()")); this.addEvent(this.arrRightObj, "mouseup", Function("ScrollPic.childs[" + this.ID + "].leftEnd()")); this.addEvent(this.arrRightObj, "mouseout", Function("ScrollPic.childs[" + this.ID + "].leftEnd()")); } } }; this.leftMouseDown = function(){ if (_state != "ready") { return; } _state = "floating"; _scrollTimeObj = setInterval("ScrollPic.childs[" + this.ID + "].moveLeft()", this.speed); }; this.rightMouseDown = function(){ if (_state != "ready") { return; } _state = "floating"; _scrollTimeObj = setInterval("ScrollPic.childs[" + this.ID + "].moveRight()", this.speed); }; this.moveLeft = function(){ if (this.scrollContDiv.scrollLeft + this.space >= this.listDiv01.scrollWidth) { this.scrollContDiv.scrollLeft = this.scrollContDiv.scrollLeft + this.space - this.listDiv01.scrollWidth; } else { this.scrollContDiv.scrollLeft += this.space; } this.accountPageIndex(); }; this.moveRight = function(){ if (this.scrollContDiv.scrollLeft - this.space <= 0) { this.scrollContDiv.scrollLeft = this.listDiv01.scrollWidth + this.scrollContDiv.scrollLeft - this.space; } else { this.scrollContDiv.scrollLeft -= this.space; } this.accountPageIndex(); }; this.leftEnd = function(){ if (_state != "floating") { return; } _state = "stoping"; clearInterval(_scrollTimeObj); var fill = this.pageWidth - this.scrollContDiv.scrollLeft % this.pageWidth; this.move(fill); }; this.rightEnd = function(){ if (_state != "floating") { return; } _state = "stoping"; clearInterval(_scrollTimeObj); var fill = -this.scrollContDiv.scrollLeft % this.pageWidth; this.move(fill); }; this.move = function(num, quick){ var thisMove = num / 5; if (!quick) { if (thisMove > this.space) { thisMove = this.space; } if (thisMove < -this.space) { thisMove = -this.space; } }; if (Math.abs(thisMove) < 1 && thisMove != 0) { thisMove = thisMove >= 0 ? 1 : -1 } else { thisMove = Math.round(thisMove); } var temp = this.scrollContDiv.scrollLeft + thisMove; if (thisMove > 0) { if (this.scrollContDiv.scrollLeft + thisMove >= this.listDiv01.scrollWidth) { this.scrollContDiv.scrollLeft = this.scrollContDiv.scrollLeft + thisMove - this.listDiv01.scrollWidth; } else { this.scrollContDiv.scrollLeft += thisMove; } } else { if (this.scrollContDiv.scrollLeft - thisMove <= 0) { this.scrollContDiv.scrollLeft = this.listDiv01.scrollWidth + this.scrollContDiv.scrollLeft - thisMove; } else { this.scrollContDiv.scrollLeft += thisMove; } } num -= thisMove; if (Math.abs(num) == 0) { _state = "ready"; this.accountPageIndex(); return; } else { this.accountPageIndex(); setTimeout("ScrollPic.childs[" + this.ID + "].move(" + num + "," + quick + ")", this.speed); } }; this.accountPageIndex = function(){ this.pageIndex = Math.round(this.scrollContDiv.scrollLeft / this.frameWidth); if (this.pageIndex > Math.round(this.listDiv01.offsetWidth / this.frameWidth + 0.4) - 1) { this.pageIndex = 0; } var i; for (i = 0; i < this.dotObjArr.length; i++) { if (i == this.pageIndex) { this.dotObjArr[i].className = this.dotClassName; } else { this.dotObjArr[i].className = this.dotOnClassName; } } }; this.addEvent = function(l, i, I){ if (l.attachEvent) { l.attachEvent("on" + i, I); } else { l.addEventListener(i, I, false); } }; };