Milonic provide full featured pull down web menus for some of the worlds largest companies
click here to see what it can do for you

Download Milonic DHTML Menu
Buy Milonic DHTML Menu

Back To Start Of Archive
Taken From The Forum: Help & Support for DHTML Menu Version 5+
Forum Topic: Click to view post
Last Updated: Saturday July 14 2012 - 06:07:54

Setting Alpha filters for a menu item? and manipulating them


Poster: cubefree
Dated: Saturday November 29 2003 - 15:58:53 GMT

I know about the overfilter attribute, however that controls the alpha filters for an entire menu.

Is there a way to control alpha filters for a single menu item cell?

Is there a way to set it from the get-go without using onfunction/offfunction attibutes?


I am experimenting with the following code for opacity changes...
Code:
function changeOpacity( objID, opacity )
{
  document.all[objID].style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + opacity + ");";
}


but the question remains how to identify the cell of the menu.

I have some other code I've got working to manipulate a table cell, but it needs some work.

Code:

var apl = new Array();
apl[0] = new Array(65,"");
apl[1] = new Array(65,"");
apl[2] = new Array(65,"");
apl[3] = new Array(65,"");

// Opacity variables and function
nOpac = 50
nPlus = 2
nMin = 1
speed = 30
timer = null;
timer2 = null;

function topfadein(teller)
{
apl[teller][1] = "Up";
topchanges();
}

function topfadeout(teller)
{
apl[teller][1] = "Down";
setTimeout("topchanges()",50);
}

function topchanges()
{
next_loop = true;
for (i=0;i<apl.length;i++)
{
  obj = main.rows[0].cells[i];
  opacity = apl[i][0]
  if (apl[i][1] == "Up")
  {
     opacity += nPlus;
     apl[i][0] = opacity;
     if (apl[i][0] > 105)
      {apl[i][1] = "";}
     else
     {next_loop = false;}
    nOpac = opacity;
  }
  else
  {
  if (apl[i][1] == "Down")
  {
     opacity -= nMin;
     apl[i][0] = opacity;
     if (apl[i][0] < 65)
      {apl[i][1] = "";}
     else
     {next_loop = false;}
    nOpac = opacity;
  }
  }
  if(ie5){
   obj.style.filter="alpha(opacity="+opacity+")";
    }
  if(ns6){
      obj.style.MozOpacity = opacity + '%';
   }
}
if (next_loop == false)
  {
   timer = setTimeout("topchanges()",speed);
  }
  else
  {
   clearTimeout(timer);
  }
}


You can see that code in action at http://www.cubefree.com ( the milonic menu is not yet activated on this site tho)[/b]


Poster: cubefree
Dated: Monday December 15 2003 - 19:06:14 GMT

Sorry to reply to my own post... but the length of my message requires a new post.

You can see my acceptable solution here: http://www.cubefree.com/menu.htm


Here's a reply from Andy:
Quote:
> Yes, the variable _itemRef is the currently selected item id and is global. Take a look at http://www.milonic.com/menusample.php?sampleid=15

AND

Try this.

function changeOpacity( objID, opacity )
{
var obj = gmobj("el"+objID);
obj.style.filter =
"progid:DXImageTransform.Microsoft.Alpha(opacity=" + opacity + ");";
}


I was still getting the following error trying to manipulate the opacity of an entire cell:

> Line: 17
> Char: 8672
> Error:'_m[...].23' is null or not an object

So, I manipulated the image only in the horizontial nav.

Here's the code I used:
Code:
// Opacity variables and function
var nPlus   = 2;
var nMin    = 3;
var speed   = 10;
var timer   = null;
var timer2  = null;

function changeOpacityUp( objID, zOpacity )   
{
   nOpac   = 65;
   upObj   = gmobj(objID);
   direction = "Up";
   fadeUp();
}

function changeOpacityDown( objID, zOpacity )
{
   dOpac = 65;
   downObj   = gmobj(objID);
   direction = "Down";
   setTimeout("fadeDown()", 50);
}

function fadeUp()
{
   //alert(nOpac);
   next_loop = true;
   opacity = nOpac;
   if (direction == "Up")
   {
   opacity += nPlus;
   nOpac = opacity;
   if (nOpac > 105)
      {direction = "";}
   else
      {next_loop = false;}
   nOpac = opacity;
   }
   
   if(document.all && document.getElementById){
      upObj.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity;
   }
   if(document.getElementById && !document.all){
      //obj.style.MozOpacity = opacity + '%';
   }
   
   if (next_loop == false)
   {
      timer = setTimeout("fadeUp()",speed);
   }
   else
   {
   //   alert("timer cleared");    
      clearTimeout(timer);
   }
}

function fadeDown()
{
   next_loop = true;
   opacity = dOpac;
   if (direction == "Down")
   {
      opacity -= nMin;
      dOpac = opacity;
      if (dOpac < 65)
      { direction = ""; }
      else
      { next_loop = false; }
      dOpac = opacity;
   }

     if(document.all && document.getElementById){
       downObj.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity;
      }
     if(document.getElementById && !document.all){
      //obj.style.MozOpacity = opacity + '%';
      }

    if (next_loop == false)
     {
      timer2 = setTimeout("fadeDown()",speed);
     }
     else
     {
        //alert("timer2 cleared and loop = " + next_loop);
      
      clearTimeout(timer2);
     }
}


Ok, hope someone else has some ideas on how to manipulate the cell itself.

Thx
Cubeman