DanThMan
12-28-2003, 07:54 AM
I want the link fader script to work both in the menu and for the rest of
my site. When I call it just for the rest of my site the links in my menu
stops working. I'll get a "_gm" is null or not an object when using the menu. I have no coding experience worth mentioning and it feels like I'm stuck right now I am using the milonic menu. I do think it's a conflict with either mmenudom.js or
mmenuns4.js. I have not yet tried to implement it in the menu. Is it even possible? The fader script is well known, but I'll send it along and hope that someone has the skill and the time to look it over! Or maybe there's
an easier way to accomplish this effect in the menu?
Because it blocks the whole menu and makes it useless I will not load the script before I know it works like it's supposed to. However, the script makes a smooth, stunning effect that I really want to have. I've been at this for a couple of days now, trying everything I can think of! But it just won't work together with mmenudom.js. I use frames, so I use the
"body onload" which is known to cause conflicts with several scripts. I've
always been able to workaround this before, but not this time Also,
I have no clue how to embed it in the milonic menu ( if it's possible). My site is in swedish and I constantly change it for testing purposes, as I play
with different layouts to find new solutions ( someday maybe I'll even make it validate )
http://w1.474.telia.com/~u47403260/dannads/
Here's a site that has nothing to do with this but they do use the fader script!
http://www.ozzu.com/
If this post seems alittle bit odd it's because I've posted it in the milonic forum and copied and pasted it so it should make some sense in other forums. The milonic menu is fairly spread around the world and someone here would know what I'm trying to achieve. Help me please I'm grasping at straws!
/******************************************************************
* Script name: Link fader (http://projects.impenetrable.org/linkfader/)
* Version: 1.0
* Date: 12.05.02
* Usage: Freeware - You may modify this script as you wish,
* as long as you don't remove or edit this header comment.
*
* Script by: Fayez Zaheer (viol8r on #webdesign [uk.zanet.org.za])
* Email: fayez at impenetrable.org
* Web site: http://impenetrable.org
* Original idea: http://anarchos.xs.mw/fade.phtml
******************************************************************/
// DELETE COMMENTS THAT START WITH // TO MAKE THE FILE SIZE SMALLER.
// This script will no longer overwrite your current onmouseover and
// onmouseout attributes - it will instead skip those links. If you would
// still like to fade them, add findLink(this.id) to your onmouseover
// and clearFade() to your onmouseout, like so -
// <a href="#" onmouseover="findLink(this.id); yourFunction()"
// onmouseout="clearFade(); yourSecondFunction()">
// Make sure to put it BEFORE any "return" statements otherwise
// the fade will not execute.
// Fade-to colour without the # (6 character value only!)
var fadeTo = "ffaa22";
// Fade in colour increment/decrement by
var fiBy = 6;
// Fade out colour increment/decrement by
var foBy = 10;
// Speed - milliseconds between each colour change in the fade
// Less than 10ms doesn't really make all that much difference, so
// 10 is the minimum effective value.
var speed = 10;
// Class name of links to NOT fade (i.e. ignore)
// var ignoreClass = "somebogusvalue" if you don't want to
// use this feature. Alternatively, add onmouseover="clearFade()"
// to the link you do not wish to fade.
var ignoreClass = "ignore";
// No more changes required (unless you know what you are doing)
// Enjoy... and email me and let me know what site(s) you are using it on
var opera, ie, dom, x = 0, oc, fader, ocs = new Array();
if (navigator.userAgent.indexOf("Opera") != -1) opera = true
else if (document.all && !opera) ie = true
else if (!document.all && document.getElementById) dom = true;
function convertRGB(z)
{
var newfcS = "", splitter = "";
splitter = z.split(",");
splitter[0] = parseInt(splitter[0].substring(4, splitter[0].length));
splitter[1] = parseInt(splitter[1]);
splitter[2] = parseInt(splitter[2].substring(0, splitter[2].length-1));
for (var q = 0; q < 3; q++)
{
splitter[q] = splitter[q].toString(16);
if (splitter[q].length == 1) splitter[q] = "0" + splitter[q];
newfcS += splitter[q];
}
return newfcS;
}
function currentColour(index)
{
var temp, cc;
if (opera) cc = document.links[index].style.color
else if (ie) cc = document.links[index].currentStyle.color
else if (dom) cc = document.defaultView.getComputedStyle(document.links[index], '').getPropertyValue("color");
if (cc.length == 4 && cc.substring(0, 1) == "#")
{
temp = "";
for (var a = 0; a < 3; a++)
temp += cc.substring(a+1, a+2) + cc.substring(a+1, a+2);
cc = temp;
}
else if (cc.indexOf("rgb") != -1) cc = convertRGB(cc)
else if (cc.length == 7) cc = cc.substring(1, 7)
else cc = fadeTo;
return cc;
}
function convert2Dec(hex)
{
var rgb = new Array();
for (var u = 0; u < 3; u++)
rgb[u] = parseInt(hex.substring(u*2, u*2+2), 16);
return rgb;
}
function newRGB(f, n, d)
{
var change;
if (d == 1) change = fiBy
else change = foBy;
for (var g = 0; g < 3; g++)
{
if (n[g] > f[g] && n[g] - change >= 0) n[g] -= change;
if (n[g] < f[g] && n[g] + change <= 255) n[g] += change;
}
return n;
}
function fade(index, d)
{
var fc, nc, temp = new Array(), finished = false;
nc = convert2Dec(currentColour(index));
if (d == 1) fc = convert2Dec(fadeTo)
else fc = convert2Dec(ocs[x]);
temp = convert2Dec(currentColour(index));
nc = newRGB(fc, nc, d);
if ((nc[0] == temp[0]) && (nc[1] == temp[1]) && (nc[2] == temp[2]))
finished = true;
if (!finished) document.links[x].style.color = "rgb(" + nc[0] + "," + nc[1] + "," + nc[2] + ")"
else clearInterval(fader);
}
function findLink(over)
{
if (document.layers) return;
if (fader)
{
clearInterval(fader);
document.links[x].style.color = "#" + ocs[x];
}
if (over && !this.id) this.id = over;
x = 0;
while (!(this.id == document.links[x].id) && (x < document.links.length))
x++;
if (this.id == document.links[x].id)
{
oc = currentColour(x);
fader = setInterval("fade(" + x + ", 1)", speed);
}
}
function clearFade()
{
if (document.layers) return;
if (fader) clearInterval(fader);
fader = setInterval("fade(" + x + ", 0)", speed);
}
function init()
{
for (var i = 0; i < document.links.length; i++)
{
ocs[i] = currentColour(i);
var currentOver = document.links[i].onmouseover;
var currentOut = document.links[i].onmouseout;
var ignoreIt = document.links[i].className == ignoreClass;
if (!ignoreIt) document.links[i].id = "link" + i;
if (!currentOver && !currentOut && !ignoreIt)
{
document.links[i].onmouseover = findLink;
document.links[i].onmouseout = clearFade;
}
}
}
if (opera || ie || dom) window.onload = init;:) :)
my site. When I call it just for the rest of my site the links in my menu
stops working. I'll get a "_gm" is null or not an object when using the menu. I have no coding experience worth mentioning and it feels like I'm stuck right now I am using the milonic menu. I do think it's a conflict with either mmenudom.js or
mmenuns4.js. I have not yet tried to implement it in the menu. Is it even possible? The fader script is well known, but I'll send it along and hope that someone has the skill and the time to look it over! Or maybe there's
an easier way to accomplish this effect in the menu?
Because it blocks the whole menu and makes it useless I will not load the script before I know it works like it's supposed to. However, the script makes a smooth, stunning effect that I really want to have. I've been at this for a couple of days now, trying everything I can think of! But it just won't work together with mmenudom.js. I use frames, so I use the
"body onload" which is known to cause conflicts with several scripts. I've
always been able to workaround this before, but not this time Also,
I have no clue how to embed it in the milonic menu ( if it's possible). My site is in swedish and I constantly change it for testing purposes, as I play
with different layouts to find new solutions ( someday maybe I'll even make it validate )
http://w1.474.telia.com/~u47403260/dannads/
Here's a site that has nothing to do with this but they do use the fader script!
http://www.ozzu.com/
If this post seems alittle bit odd it's because I've posted it in the milonic forum and copied and pasted it so it should make some sense in other forums. The milonic menu is fairly spread around the world and someone here would know what I'm trying to achieve. Help me please I'm grasping at straws!
/******************************************************************
* Script name: Link fader (http://projects.impenetrable.org/linkfader/)
* Version: 1.0
* Date: 12.05.02
* Usage: Freeware - You may modify this script as you wish,
* as long as you don't remove or edit this header comment.
*
* Script by: Fayez Zaheer (viol8r on #webdesign [uk.zanet.org.za])
* Email: fayez at impenetrable.org
* Web site: http://impenetrable.org
* Original idea: http://anarchos.xs.mw/fade.phtml
******************************************************************/
// DELETE COMMENTS THAT START WITH // TO MAKE THE FILE SIZE SMALLER.
// This script will no longer overwrite your current onmouseover and
// onmouseout attributes - it will instead skip those links. If you would
// still like to fade them, add findLink(this.id) to your onmouseover
// and clearFade() to your onmouseout, like so -
// <a href="#" onmouseover="findLink(this.id); yourFunction()"
// onmouseout="clearFade(); yourSecondFunction()">
// Make sure to put it BEFORE any "return" statements otherwise
// the fade will not execute.
// Fade-to colour without the # (6 character value only!)
var fadeTo = "ffaa22";
// Fade in colour increment/decrement by
var fiBy = 6;
// Fade out colour increment/decrement by
var foBy = 10;
// Speed - milliseconds between each colour change in the fade
// Less than 10ms doesn't really make all that much difference, so
// 10 is the minimum effective value.
var speed = 10;
// Class name of links to NOT fade (i.e. ignore)
// var ignoreClass = "somebogusvalue" if you don't want to
// use this feature. Alternatively, add onmouseover="clearFade()"
// to the link you do not wish to fade.
var ignoreClass = "ignore";
// No more changes required (unless you know what you are doing)
// Enjoy... and email me and let me know what site(s) you are using it on
var opera, ie, dom, x = 0, oc, fader, ocs = new Array();
if (navigator.userAgent.indexOf("Opera") != -1) opera = true
else if (document.all && !opera) ie = true
else if (!document.all && document.getElementById) dom = true;
function convertRGB(z)
{
var newfcS = "", splitter = "";
splitter = z.split(",");
splitter[0] = parseInt(splitter[0].substring(4, splitter[0].length));
splitter[1] = parseInt(splitter[1]);
splitter[2] = parseInt(splitter[2].substring(0, splitter[2].length-1));
for (var q = 0; q < 3; q++)
{
splitter[q] = splitter[q].toString(16);
if (splitter[q].length == 1) splitter[q] = "0" + splitter[q];
newfcS += splitter[q];
}
return newfcS;
}
function currentColour(index)
{
var temp, cc;
if (opera) cc = document.links[index].style.color
else if (ie) cc = document.links[index].currentStyle.color
else if (dom) cc = document.defaultView.getComputedStyle(document.links[index], '').getPropertyValue("color");
if (cc.length == 4 && cc.substring(0, 1) == "#")
{
temp = "";
for (var a = 0; a < 3; a++)
temp += cc.substring(a+1, a+2) + cc.substring(a+1, a+2);
cc = temp;
}
else if (cc.indexOf("rgb") != -1) cc = convertRGB(cc)
else if (cc.length == 7) cc = cc.substring(1, 7)
else cc = fadeTo;
return cc;
}
function convert2Dec(hex)
{
var rgb = new Array();
for (var u = 0; u < 3; u++)
rgb[u] = parseInt(hex.substring(u*2, u*2+2), 16);
return rgb;
}
function newRGB(f, n, d)
{
var change;
if (d == 1) change = fiBy
else change = foBy;
for (var g = 0; g < 3; g++)
{
if (n[g] > f[g] && n[g] - change >= 0) n[g] -= change;
if (n[g] < f[g] && n[g] + change <= 255) n[g] += change;
}
return n;
}
function fade(index, d)
{
var fc, nc, temp = new Array(), finished = false;
nc = convert2Dec(currentColour(index));
if (d == 1) fc = convert2Dec(fadeTo)
else fc = convert2Dec(ocs[x]);
temp = convert2Dec(currentColour(index));
nc = newRGB(fc, nc, d);
if ((nc[0] == temp[0]) && (nc[1] == temp[1]) && (nc[2] == temp[2]))
finished = true;
if (!finished) document.links[x].style.color = "rgb(" + nc[0] + "," + nc[1] + "," + nc[2] + ")"
else clearInterval(fader);
}
function findLink(over)
{
if (document.layers) return;
if (fader)
{
clearInterval(fader);
document.links[x].style.color = "#" + ocs[x];
}
if (over && !this.id) this.id = over;
x = 0;
while (!(this.id == document.links[x].id) && (x < document.links.length))
x++;
if (this.id == document.links[x].id)
{
oc = currentColour(x);
fader = setInterval("fade(" + x + ", 1)", speed);
}
}
function clearFade()
{
if (document.layers) return;
if (fader) clearInterval(fader);
fader = setInterval("fade(" + x + ", 0)", speed);
}
function init()
{
for (var i = 0; i < document.links.length; i++)
{
ocs[i] = currentColour(i);
var currentOver = document.links[i].onmouseover;
var currentOut = document.links[i].onmouseout;
var ignoreIt = document.links[i].className == ignoreClass;
if (!ignoreIt) document.links[i].id = "link" + i;
if (!currentOver && !currentOut && !ignoreIt)
{
document.links[i].onmouseover = findLink;
document.links[i].onmouseout = clearFade;
}
}
}
if (opera || ie || dom) window.onload = init;:) :)