묻고답하기

function RecordingsList(id) {
  if (arguments.length > 0)
    this.init(id);
}

RecordingsList.prototype.init = function(id) {
  this.id = id;

  this.idElt = document.getElementById(id);
  if (this.idElt == undefined)   return;

  this.idStyle = document.defaultView.getComputedStyle(this.idElt, null);

  this.listElt = this.idElt.getElementsByTagName("ul")[0];
  this.listItemElt = this.listElt.getElementsByTagName("li");
  this.listLength = this.listItemElt.length;

  this.listItemStyle = document.defaultView.getComputedStyle(this.listItemElt[0], null);
  this.listItemHeight = parseInt(this.listItemStyle.height)
  + parseInt(this.listItemStyle.paddingTop)
  + parseInt(this.listItemStyle.paddingBottom)
  + parseInt(this.listItemStyle.borderTopWidth)
  + parseInt(this.listItemStyle.borderBottomWidth)
  + parseInt(this.listItemStyle.marginTop)
  + parseInt(this.listItemStyle.marginBottom);

  this.addHighlight();
  this.addFaders();
  this.addVideoPreviews();
  this.addFocusHandlers();

  // Nav left and nav right should do nothing for any list item.
  for (var li = 0; li < this.listLength; li++) {
    this.listItemElt[li].style.navLeft = "#" + this.listItemElt[li].id;
    this.listItemElt[li].style.navRight = "#" + this.listItemElt[li].id;
  }

  // Down from bottom goes to top, and vice versa
//  this.listItemElt[0].style.navUp = "#" + this.listItemElt[this.listLength - 1].id;
//  this.listItemElt[this.listLength - 1].style.navDown = "#" + this.listItemElt[0].id;

  this.scroller = new VerticalScroller(this.listElt);

  // Make sure the first list item is under the highlight and has focus.
  this.listItemElt[0].focus();
//  document.getElementById("corvette").focus();
}

// The highlight is styled and positioned by CSS.
// We just add the appropriate element to the document.
// NB it'+ '+ 's added to the document, NOT into the div.
// This is to ensure it isn't affected by any styles set for
// the div itself.
RecordingsList.prototype.addHighlight = function() {
  var highlight = document.createElement("div");
  highlight.className = "highlight";
  document.body.appendChild(highlight);

  // We'll need to know where it's actually positioned, relative
  // to the top of the list, so that we can move list items into
  // the appropriate position.
  this.highlightDelta =
    parseInt(document.defaultView.getComputedStyle(highlight, null).top)
    - parseInt(this.idStyle.top);
}

// Same applies to the two faders.
RecordingsList.prototype.addFaders = function() {
  var topFader = document.createElement("div");
  var botFader = document.createElement("div");

  topFader.className = "fade top";
  botFader.className = "fade bottom";

  document.body.appendChild(topFader);
  document.body.appendChild(botFader);
}

// Create an array of Image objects, holding video previews.
// Add an img element to the document with the appropriate id.
// These are then tied together in the showVideo method.
// A more exotic example might create an img element for each image
// and animate between the images.
RecordingsList.prototype.addVideoPreviews = function() {
  this.vidPreview = new Array();

  for (var li = 0; li < this.listLength; li++) {
    var id = this.listItemElt[li].id;
    var imgPath = "images/show-" + id + ".png";

    this.vidPreview[id] = document.createElement("img");
    this.vidPreview[id].id = "vidPreview-"+id;
    this.vidPreview[id].src = imgPath;
    this.vidPreview[id].className = "vidPreview";
  
    document.body.appendChild(this.vidPreview[id]);
  }
}

// When a list item receives focus, it is moved into the highlight area.
RecordingsList.prototype.addFocusHandlers = function() {
  var me = this;
  for (var li = 0; li < this.listLength; li++) {
    this.listItemElt[li].itemDelta = li * this.listItemHeight; // handy
    this.listItemElt[li].addEventListener("focus",
      function(e) { me.highlightElt(e.target) }, false);

    // Show and hide the video preview appropriately.
    this.listItemElt[li].addEventListener("focus",
      function(e) { me.showVideo(e.target) }, false);
    this.listItemElt[li].addEventListener("blur",
      function(e) { me.hideVideo(e.target) }, false);
  }
  
}

// Move the list so that elt sits inside the highlight area.
RecordingsList.prototype.highlightElt = function(elt) {
  this.scroller.scrollTo(this.highlightDelta - elt.itemDelta);
}

// Show the video preview for this recording.
RecordingsList.prototype.showVideo = function(elt) {
  this.vidPreview[elt.id].style.display = "block";

}

// Hide the video preview for this recording.
RecordingsList.prototype.hideVideo = function(elt) {
  this.vidPreview[elt.id].style.display = "none";
}


// A VerticalScroller object scrolls an element up or down smoothly.
// Instantiate it with an element, and call the scrollTo method
// to scroll that element to a new position.
function VerticalScroller(elt) {
  if (arguments.length > 0)
    this.init(elt);
}

VerticalScroller.prototype.init = function(elt) {
  this.elt = elt;

  // How far the list is moved up or down from its top=0 position.
  // Initially, the style sheet determines this. We store locally
  // to avoid calling getComputedStyle repeatedly.
  this.currentDelta = parseInt(document.defaultView.getComputedStyle(this.elt, null).top);
  // Holds a timeout handle so we can cancel scrolling when we need to.
  this.scrollHandle = null;

}

VerticalScroller.prototype.scrollTo = function(targetDelta) {
  if (this.scrollHandle)   clearTimeout(this.scrollHandle);

  var diff = targetDelta - this.currentDelta;
  this.scrollAnim(diff, 8); // magic move factor
}

// To get a move-past-target-and-spring-back effect we note that
// 8+7+6+5+4+3+2+1+0-1-2-3 = 30
// So decrementing a moveFactor from 8 to -3, and moving
// moveFactor/30 of the total distance each time, eventually gets
// us there. We could just scroll a fixed amount each time, of course,
// but this looks prettier.
VerticalScroller.prototype.scrollAnim = function(diff, moveFactor) {
  var me = this;

  this.currentDelta += (moveFactor * diff) / 30;
  this.elt.style.top = this.currentDelta + "px";
  
  if (moveFactor != -3)
    this.scrollHandle = setTimeout(function() { me.scrollAnim(diff, moveFactor - 1) }, 35);
}



// Initialise the page
function initPage() {
  var stateList = new RecordingsList("rec-list");

  if (top.loadListener) top.loadListener.hasLoaded();
}

function play1()
{
    var form = document.DATA;
    form.action = "http://127.0.0.1/cgi-bin/act.cgi?file=:554//Video/HD/HD-Texas.mpg"; // +"?"+now.getSeconds();
    form.submit();
}




window.onload = initPage;

--

알려주세요^^*
글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
DeificatioN PHP에 ''->'',''define'' 질문입니다. [3] 2007.08.10
이사기*^^* 이게 무슨 소스 일까요? [1] 2007.08.10
김종민 플래시 메뉴 삽입후 빈 공간이 생깁니다. [1] 2007.08.10
L330 엔지오사이트는 해상도에 관계없이 어떻게 화면에 꽉차게 나올수 있죠? [1] 2007.08.10
장원준 메뉴바가 로그인 하면움직입니다. [2] 2007.08.10
문준석 소스 질문입니다~급해용^^;; [1] 2007.08.10
신순성 하이퍼링크와 함께 질문합니다. [1] 2007.08.10
완규 php 함수에서 이런게 있나요? [2] 2007.08.10
김맹진 GD 라이브러리관련해서 질문 있습니다. [3] 2007.08.10
강율구 배경음악 급질문 입니다 소스 있음. [1] 2007.08.10
한용민 특정 아이프레임 새로고침(리로드) 하는 방법좀요.ㅠㅠ  
James 웹디자인을 배우려고 하는데 학원 좀 추천바랍니다.  
[monet] 가장 많이 사용하는 CGI가 뭔가요? [1] 2007.08.10
실시라 홈페이지 열리는 속도 측정하는 방법이 있나요?  
김상형 일본어 페이지에 자바 스크립트가 적용이 안됩니다..ㅠㅠ [1] 2007.08.10
장원준 음악 플레이어는 어떻게 설치하죠?? [1] 2007.08.10
최상덕 윈도우2003서버가 혼자 주기적으로 재부팅을 합니다.. [1] 2007.08.10
조규식 누가 좀 도와주세요.. [1] 2007.08.10
조규식 어떻게 해야할지... 누가좀 도와주세요 [1] 2007.08.10
정문창 엑셀파일을 업로드해서.... [1] 2007.08.10
rubin 이런거 어떻게 하는건가요?? [1] 2007.08.10
지연진 가운데 정렬이 안됩니다. 너무 답답해요. [2] 2007.08.10
장원준 이 홈페이지처럼요 [2] 2007.08.10
마땅해 위지윅 입력폼인 HTMLArea에 대한 질문입니다....^^아는 분 계시려나 [1] 2007.08.10
눈물 제목 링크 주소 자바로 감추고 특정한 이동방식 궁금해요  
민싱이 왜 이런오류가 나죠? 무슨구문이 잘못됫죠?  
미쿠 셀 높이 고정하기 [3] 2007.08.10
박미정 스타일 태그를 일부분만 적용하려면 어떻게 해야할까요?? [6] 2007.08.10
우라질넘 파일 다운받기 링크 만드는 법....ㅠㅜ;(똑같은 질문 여섯번째 올리고 있어요!!) [6] 2007.08.10
백승현 노프레임 홈페이지를 만들었으나 수정하기가 너무 벅찹니다. [1] 2007.08.10