SiteExperts.com Logo Home | Community | Developer's Paradise | Jobs
User Groups | Site Tools | Site Information | Search

Inside Technique : Animated Page Sets : Code

<SCRIPT>
    /* The animated page library is copyright 1998 insideDHTML.com, LLC. All rights reserved.
       This code can be reused as long as the above copyright notice and www.insideDHTML.com
       URL is maintained. */

    ie4 = document.all!=null

    var pageLists = new Array()

    function Constants() {
      // Sliding contents
      this.PAGE_STANDARD = 0
      this.PAGE_SLIDELEFT = 1
      this.PAGE_SLIDERIGHT = 2
      this.PAGE_SLIDEUP = 3
      this.PAGE_SLIDEDOWN = 4
    }

    var _constants = new Constants()
    function getItem(id) {
      if (ie4) 
          return document.all[id]
      else
          return document.layers[id]
    }

    function getChildren(el) {
      if (ie4) 
          return el.children
      else
          return el.document.layers
    }


    function slideAway(cnt, p, idx, dir, how) {
      var page = pageLists[idx].pageList[p]
      switch (dir) {
        case 0:  
          if (!how) 
            hideElement(page)
          else
            showElement(page)
          cnt = pageLists[idx].cnt
          break;
        case 1:
          if (ie4)  
            page.style.pixelLeft=page.offsetLeft + pageLists[idx]._amount
          else
            page.left=page.left + pageLists[idx]._amount
          break;
        case 2:
          if (ie4)  
            page.style.pixelLeft=page.offsetLeft + pageLists[idx]._amount
          else
            page.left=page.left + pageLists[idx]._amount
          break;
        case 3:
          if (ie4) 
            page.style.pixelTop=page.offsetTop + pageLists[idx]._amount
          else
            page.top=page.top + pageLists[idx]._amount
          break;
        case 4:
          if (ie4) 
            page.style.pixelTop=page.offsetTop + pageLists[idx]._amount
          else 
            page.top=page.top + pageLists[idx]._amount
          break;
      }
      cnt++
      if (cnt=this.pageCount) || (idx==this.currentPage)) return
      if (arguments[1]==null)
        type = _constants.PAGE_STANDARD
      else
        type = arguments[1]
      if (arguments[2]!=null)
        this._nextType = arguments[2]
      else
        this._nextType = type
      if (this._animation==null) {
        this._next = idx
        if (ie4) {
          setupType(this, type, this.currentPage, false)	    
        } else
        {
          setupTypeNS(this, type, this.currentPage, false)	  
        }
        var f =  "slideAway(0,"+this.currentPage+"," + this.index+","+type+",false)"
        this._animation = setTimeout(f,0)       

      }
    }

    function getVisible(list) {
      var idx = 0
      var pages = list.length
      if (ie4) 
        while ((idx < pages) && (list[idx].style.visibility=="")) 
          idx++
      return idx
    }

    function hideElement(el) {
      if (ie4) 
        el.style.visibility="hidden"
     else
       el.visibility = "hidden"
    }

    function showElement(el) {
      if (ie4) 
        el.style.visibility="visible"
      else
        el.visibility="show"
    }

    function nextPage()  {
      var idx = this.currentPage+1
      if (idx == this.pageCount)
        idx = 0
      this.setPage(idx, arguments[0], arguments[1])
    }

    function prevPage()  {
      var idx = this.currentPage-1
      if (idx == -1)
        idx = this.pageCount-1
      this.setPage(idx, arguments[0], arguments[1])
    }


    function hidePage(idx) {
      hideElement(this.pageList[idx])
      
    }   

    function showPage(idx) {
      showElement(this.pageList[idx])
    }

    function PageList(el,cnt) {
      var curPage = null
      this.owner = el
      this.pageList = getChildren(el)
      this.pageCount = this.pageList.length
      this.currentPage = getVisible(this.pageList)
      this.setPage = setPage
      this.hidePage = hidePage
      this.showPage = showPage
      this.nextPage = nextPage
      this.prevPage = prevPage
      this.cnt = cnt
      // Used to track animations
      this.index = pageLists.length
      pageLists[pageLists.length] = this      
      return this
    }

    function setPageSet(id) {
      var el = getItem(id)
      cnt = arguments[1]
      if (cnt==null)
        cnt=10
        
      el._pageList = new PageList(el,cnt)
      return el._pageList
    }
</SCRIPT>
Discuss and Rate this Article