퇴근5분전

자바스크립트로  메뉴관리 객체를 만들었음.

/*
 자바스크립트
 메뉴 Display  
 제작 윤지송 aseuka@hanmail.net
 2008.07.27
*/ 
  // 크기정보 변수
  function Size(_width, _height)
  {
   this.Width = _width;
   this.Height = _height;
   
   this.toString = function()
   {
    return "Width:("+this.Width.toString() +"), Height:("+this.Height.toString()+")"+"\n";
   }
   return this;
  }
  // 위치정보 변수
  function Point( x, y)
  {
   this.X = x;
   this.Y = y;

   this.toString = function()
   {
    return "X:("+this.X +"), Y:("+this.Y+")"+"\n";
   }
   return this;
  }

  // 단일 1개의 이미지 Icon 정보.
  function  imgIcon( path, _x, _y, _width, _height, _linkURL )
  {  
   this.ImgPath =  path;  
   this.ImgLoction =  new Point(_x, _y);
   this.ImgSize =  new Size( _width, _height );
   this.LinkURL    = _linkURL;

   this.toString = function()
   {
    var  returnString =  "Path  :" + this.ImgPath+"\n";
      returnString +=  "Loction :" + this.ImgLoction.toString();
      returnString +=  "Size  :" + this.ImgSize.toString();
    return returnString;
   }
   return this;
  }

  // Sub 메뉴Icon별 관리 객체.
  function ImgIcons( _name )
  {
  
   this.Name  = _name;
   this.imgs  = new Array();
   this.Add  = function( _path, _x, _y, _width, _height, _linkURL )
   {
    this.imgs[ this.imgs.length ] = new imgIcon( _path, _x, _y, _width, _height, _linkURL );           
   }
   this.toString = function()
   {
     var returnString  = "";
     for( i = 0; i < this.imgs.length ; i ++ )
     {      
      returnString += this.imgs[i].toString() + "|";
     }
     return returnString;
   }
   return this;
  }
/*
 //////////////////////////////////////////////////////////////////////////////////
*/

  // 메뉴 관리 하는 객체.
  function MenuList( _Id ,  _divName )
  {
   this.Id  = _Id;
   // 나타날 divId
   this.divName  = _divName;

   this.ar  = new Array();   
   this.Add  = function( imgIcons )
   {    
    this.ar[ this.ar.length ] = imgIcons;
   } 
   
   this.GetImgIcons = function( ArrayName )
   {       
    for( i = 0; i < this.ar.length; i++)
    {       
     if(this.ar[i].Name == ArrayName)
     {      
      return this.ar[i];
     }
    }
    return null;
   }

      this.MakeImg  =  function( imgIcon )
   {
    var  CreateImgHTML =  "<img src='" +imgIcon.ImgPath +"' ";
      CreateImgHTML += " style='width:"+imgIcon.ImgSize.Width +";";
      CreateImgHTML += " height:"+imgIcon.ImgSize.Height+ ";border:0;'";
      CreateImgHTML += " onmouseover='"+this.Id+".bImgMouseOver=true;'";
      CreateImgHTML += " onmouseout='"+this.Id+".MouseOut();'";
      CreateImgHTML += " >";

    var  AtagHTML   = "<a href='"+imgIcon.LinkURL+"' >" +  CreateImgHTML +"</a>";
      
    if( imgIcon.LinkURL )
    {
     return  AtagHTML;
    }
    else
    {
     return CreateImgHTML;
    } 
   }

   this.ClearLayer  =  function( )
   {         
    if(this.bImgMouseOver == false)
    {
     var div  = document.getElementById(this.divName);    
     div.innerHTML = ""; 
     div.style.display = "none";
    }
   }
   return this;
  }

  // 객체 속성 정의
  MenuList.prototype =    
  {Vertical: false // 가로(false) 세로(true)...
  ,
  TimerInterVal : 1000
  , 
  bImgMouseOver: false
  ,
  MouseOut :   function(){
       var fn_repeater = this.Id+".ClearLayer()";
       this.bImgMouseOver = false;
       this.tmID = setTimeout( fn_repeater , this.TimerInterVal );
      } 
  ,
  MouseOver:  function( img, arName ){

     var  strTagString = "";
     var  div  = document.getElementById(this.divName);

     this.bImgMouseOver = true;  
         
     var subMenuArray =  this.GetImgIcons(arName);
           
     if( subMenuArray && div )
     {   
      div.innerHTML  = "";
     
      
      for( i = 0 ; i < subMenuArray.imgs.length ; i++)
      {
       strTagString  += this.MakeImg( subMenuArray.imgs[i] );    
      }  
      
      if( img )
      {
       div.style.top = ((img.style.top ? img.style.top : 0) +  img.height + 10);   
       div.style.left = (img.style.left? img.style.left : 0);
       
       // 가로
       if( this.Vertical == false )
       {
        div.style.width  = img.width * subMenuArray.imgs.length;
        div.style.height = 0;
       }
       else
       {
        div.style.width  = img.width;
        div.style.height = img.height;
       }       
       div.style.zindex = 200;
       div.style.position  ='absolute';      
      }

      div.innerHTML  = strTagString;
      div.visibility = "show";
      div.style.display = "block";            
     } 
    }
   
  }; 


메뉴를 구현한 js 파일


  

'# 6) JavaScript' 카테고리의 다른 글

자바 스크립트] XOR 암호화.  (0) 2010.12.31
[javascript] 정규식 관련..  (0) 2010.11.18
자바스크립트 Array사용  (0) 2009.05.08
자바스크립트 디버거  (0) 2009.05.08
웹 에서 F1키 사용하기.  (0) 2009.05.08