Forum Moderators: open

Message Too Old, No Replies

Why won't these two scripts play nice together

multiple javascript problem

         

lenashore

12:13 am on Jan 12, 2007 (gmt 0)

10+ Year Member



I have two functions:

One is a navigation area (you mouse over the name and a layer pops up with the sub menus).

One is a way to view samples of a product. When you mouse over a button, the product shot appears. It changes by which button your mouse over.

Both of these things work great independently. UNTIL you put them on the same page. Then one will work, but not both.

I can't see that any of the function names are the same, but I don't write javascript. I can only copy/paste.

So can anyone give me a clue as to why these two pieces of code don't play nice?

I would appreciate any hints or direction I could get. Thank you for looking.

PRODUCT JAVASCRIPT CODE:

function newImage(arg) {
if (document.images) {
rslt = new Image();
rslt.src = arg;
return rslt;
}
}

function changeImages() {
if (document.images && (preloadFlag == true)) {
for (var i=0; i<changeImages.arguments.length; i+=2) {
document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
}
}
}

var preloadFlag = false;
function preloadImages() {
if (document.images) {
large_Asize_over = newImage("images/large-Asize_over.gif");
large_commercial_over = newImage("images/large-commercial_over.gif");
large_baronial_over = newImage("images/large-baronial_over.gif");
large_policy_over = newImage("images/large-policy_over.gif");
large_remittance_over = newImage("images/large-remittance_over.gif");
large_openend_over = newImage("images/large-openend_over.gif");
large_coins_over = newImage("images/large-coins_over.gif");
large_booklet_over = newImage("images/large-booklet_over.gif");
large_window_over = newImage("images/large-window_over.gif");
preloadFlag = true;
}
}

MENU JAVASCRIPT CODE:

function MM_findObj(n, d) {
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function P7_setMM2(){
//set the image over and down name convention
document.p7TabOver="_over";
document.p7TabDown="_down";
var dt=false;if(document.getElementsByTagName){dt=true;}if(document.P7TabBar){return;}
var i,k=-1,g,x,gg,tl,ts,ti,tm,tt,tsn,tu,el,args=P7_setMM2.arguments;
P7TabProp=new Array();for(i=0;i<args.length;i++){P7TabProp[i]=args[i];}
P7TabIM=new Array();P7TabSB=new Array();if(dt){tm=document.getElementsByTagName("IMG");
}else{tm=document.images;}tm=document.images;tt=new Array();tt=tt.concat(tm);
if(document.layers){for(i=0;i<document.layers.length;i++){ti=document.layers[i].document.images;
if(ti){tt=tt.concat(ti);}for(x=0;x<document.layers[i].document.layers.length;x++){
ti=document.layers[i].document.layers[x].document.images;if(ti){tt=tt.concat(ti);}}}tm=tt;}
for(i=0;i<tm.length;i++){tl=tm[i].name; if(dt&&!tl){tl=tm[i].id;}
if(tl.indexOf("p7TBim")==0){ts=tl.replace("p7TBim","");
tsn="p7TBsub"+ts;k++;P7TabIM[k]=tl;if((g=MM_findObj(tsn))!=null){P7TabSB[k]=tsn;
gg=(document.layers)?g:g.style;gg.visibility="hidden";}else{P7TabSB[k]='N';}}}
document.P7_TBswapd=new Array();document.P7_TBswapo=new Array();for(i=0;i<P7TabIM.length;i++){
g=MM_findObj(P7TabIM[i]);gg=g.src;g.p7TBim=g.src;tu=gg.lastIndexOf(".");
g.p7TBimo=gg.substring(0,tu)+document.p7TabOver+gg.substring(tu,gg.length);
g.p7TBimd=gg.substring(0,tu)+document.p7TabDown+gg.substring(tu,gg.length);
if(P7TabProp[2]>1){document.P7_TBswapo[i]=new Image();document.P7_TBswapo[i].src=g.p7TBimo;}
if(P7TabProp[2]>0){if(P7TabProp[2]==3){g.p7TBimd=g.p7TBimo;}document.P7_TBswapd[i]=new Image();
document.P7_TBswapd[i].src=g.p7TBimd;}}if((g=MM_findObj('P7TabH'))!=null){gg=(document.layers)?g:g.style;
gg.visibility="hidden";}if(dt&&P7TabProp[3]!='none'&&!window.opera){
g=document.getElementsByTagName("A");for(i=0;i<g.length;i++){if(g[i].hasChildNodes()){el=g[i].firstChild;
while (el){if(el.nodeType==3){gg=el.nodeValue;if(P7TabProp[3]==gg.replace("\n","")){
g[i].className=P7TabProp[4];break;}}el=el.firstChild;}}}}document.P7TabBar=true;
}

function P7_trigMM2(bu){
if(!document.P7TabBar){return;}var i,g,d,dB=-1,tF=false,sF=false;
for(i=0;i<P7TabSB.length;i++){sF=false;if((g=MM_findObj(P7TabSB[i]))!=null){g=MM_findObj(P7TabSB[i]);
gg=(document.layers)?g:g.style;sF=true;}d=MM_findObj(P7TabIM[i]);if(P7TabIM[i]==P7TabProp[0]){
dB=i;}if(P7TabIM[i]==bu){tF=true;if(sF){gg.visibility="visible";}if(P7TabProp[2]>0){
if(i==dB){d.src=d.p7TBimd;}else if (P7TabProp[2]>1){d.src=d.p7TBimo;}}if((g=MM_findObj('P7TabH'))!=null){
gg=(document.layers)?g:g.style;gg.visibility="visible";}}else{if(sF){gg.visibility="hidden";}
if(P7TabProp[2]>0){d.src=d.p7TBim;}}}if(!tF){if(dB>-1){d=MM_findObj(P7TabIM[dB]);
if((g=MM_findObj(P7TabSB[dB]))!=null&&P7TabProp[1]==0){gg=(document.layers)?g:g.style;
gg.visibility="visible";}if(P7TabProp[2]>0){d.src=d.p7TBimd;}}
if((g=MM_findObj('P7TabH'))!=null){gg=(document.layers)?g:g.style;gg.visibility="hidden";}}
}

phranque

1:41 am on Jan 12, 2007 (gmt 0)

WebmasterWorld Administrator 10+ Year Member Top Contributors Of The Month



function newImage has a "new Image();" and function P7_setMM2 has two such references.
are these the same "Image" function?
if not, you want to give them unique names.

lenashore

1:18 pm on Jan 12, 2007 (gmt 0)

10+ Year Member



Okay. I see what you are saying. I'll see if I can change the name of that and see if that fixes my problem. Thank you!

Fotiman

3:18 pm on Jan 12, 2007 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member Top Contributors Of The Month



Image is a part of the JavaScript language. It's not the cause of your problem.

This is not all of the code. How are these functions getting called? There's probably something like:

<body onload="...">

or

window.onload=...

And I suspect that the code that performs one of these actions is not starting onload because the other has overwritten the onload event handler.