i had used a script file for desigining the menu,its working fine but i need some enhancements..like if i open a main menu, the previous menu which was opened should closed automatically(if any menu was opened previously), at once only one menu should be opened.this script file i got from one of the site.i m copying that file.Please help me in solving.....please its Urgent

// vouwmenu.js
var open_close = false // true of false, false = sluit het vorige vooraleer een nieuw te openen

var height = 20; // hoogte hoofditems
var iheight = 15; // hoogte subitems


var bgc = "#94BDCE" // achtergrondkleur subitems
var tc = "white" // tekstkleur subitems

var over_bgc = "#0A7BC2"; // achtergrondkleur bij muisover
var over_tc = "#c98a1c"; // tekstkleur bij muisover

var speed = 0; // snelheid
var steps = 1; // aantal stappen
var timerID = "";
var N = (document.all) ? 0 : 1;
var width = 140

var lable_main_menu=0;

var self_menu = new Array();

function write_menu()
{
smc = 0; // telt de positie van self_menu

//document.write("<div width="+200+"' ></div>");

document.write("<div style='position:absolute;left:39'>");
mn = 0;
mni = 1;
start = -1;

for(i=0;i<Link.length;i++)
{
la = Link[i].split("|");

if (la[0] == "0")
{
if(start == 0)
{
document.write("</div>");
h = csmc * iheight;
tmn = mn;
self_menu[smc] = new Array(tmn,h,0,-2);
smc++;
mn--;
}
csmc = 0;

lable_main_menu++;
//alert(la[0]+la[1]+la[2]+lable_main_menu+lable_sub_menu);
var lable_sub_menu=0

document.write("<div class='menu' style='top:"+mn+";height:"+height+"' id='down"+smc+"' onclick='prepare("+smc+","+mni+")'>&nbsp;"+lable_main_menu+" "+la[1] + "</div>");
self_menu[smc] = new Array(mn,height,0,mni);
smc++;
mni++;
mn+=height;
start = 1;
}
else
{
if(start == 1)
{
if(N)mn+=2;
document.write("<div class='item_panel' id='down"+smc+"' style='top:"+mn+"'>");
start = 0;
}



document.write("<a href='"+la[2]+"'");
if (la[3] != "") document.write(" target='" + la[3] + "' ");
document.write("><div class='item' id='d"+i+"' style='height:"+iheight);
if (N) document.write(";width:150");
document.write("' onmouseover='color(this.id)' onmouseout='uncolor(this.id)'>&nbsp;&nbsp;"+lable_main_menu+" "+ ++lable_sub_menu +"."+ la[1] +"</div></a>");
csmc++;
}
}
if (start == 0)
{
document.write("</div>");
h = csmc * iheight;
tmn = mn + 5;
self_menu[smc] = new Array(tmn,h,0,-2);
name = "down" + (self_menu.length-1);
obj = document.getElementById(name);
obj.style.borderBottomColor = "darkblue";
obj.style.borderBottomWidth = 1;
obj.style.borderBottomStyle = "solid";
}
document.write("</div>");
}


function color(obj)
{
document.getElementById(obj).style.backgroundColor = over_bgc;
document.getElementById(obj).style.color = over_tc
}

function uncolor(obj)
{
document.getElementById(obj).style.backgroundColor = bgc;
document.getElementById(obj).style.color = tc
}

var prevnr = -1;
var prevc = -1;
var vprepare = "stop";
var step = 0;
function prepare(nr,c)
{
if (open_close)
{
if(prevnr == -1)
{
if(self_menu[nr+1][2] == 0)
{
prevnr = nr;
prevc = c;
}
else
{
prevnr = -1;
prevc = -1;
}
step = 0;
pull_down(nr,c);
}
else
{
if((step == 0) && (prevnr != -1))
{
if (self_menu[nr+1][2] == 1)
{
step = 0;
prevnr = -1;
prevc = -1;
pull_down(nr,c);
}
else
{
step = 1;
pull_down(prevnr,prevc);
prevnr = nr;
prevc = c;
}
}
else
{
step = 0;
pull_down(prevnr,prevc);
}
}}
else {pull_down(nr,c);vprepare = "stop"}
}

function end_prepare()
{
if (step == 1) prepare();
else {if (timerID != "") clearTimeout(timerID);}
}

function pull_down(nr,c)
{
if (timerID == "")
{
to = self_menu[nr+1][1]
begin = nr + 2;
if (timerID != "") clearTimeout(timerID);
if (self_menu[nr+1][2] == 0)
{
self_menu[nr+1][2] = 1;
if(nr == self_menu.length-2) {to++;}
epull_down(begin,to,0);
}
else
{
to = 0;
self_menu[nr+1][2] = 0;
name = "down"+(nr+2);
open_item = 0;
for(i=0;i<nr;i++)
{
if(self_menu[i][2] == 1)
{open_item += self_menu[i][1];
}
}
if (N == false) {open_item-= (c*1)};
if (nr== self_menu.length-2) {val = self_menu[self_menu.length-1][1];to=-1;}
else val = parseInt(document.getElementById(name).style.top) -(open_item)-(c*height);
epull_up(begin,to,val);
}
}
}

function epull_down(nr,to,nowv)
{
if((nowv + steps) >= to) {vsteps = to - nowv;}
else {vsteps = steps;}
name = "down" + (nr-1);
obj = document.getElementById(name).style.clip = "rect(0,"+width+","+(nowv+vsteps)+",0)";
for (i=nr;i<self_menu.length;i++)
{
name = "down" + i;
obj = document.getElementById(name);
obj.style.top = parseInt(obj.style.top)+vsteps;
}
nowv+=vsteps;
if(nowv < to) timerID = setTimeout("epull_down("+nr+","+to+","+nowv+")",speed);
else {timerID = "";if(startid != "stop") open_all(); else end_prepare()}
}

function epull_up(nr,to,nowv)
{
if((nowv-steps) <= to) {vsteps = nowv-to;nowv = 0;if(to == -1) vstep = nowv}
else {vsteps = steps;}
name = "down" + (nr-1);
obj = document.getElementById(name).style.clip = "rect(0,"+width+","+nowv+",0)";
for (i=nr;i<self_menu.length;i++)
{
name = "down" + i;
obj = document.getElementById(name);
obj.style.top = parseInt(obj.style.top)-vsteps;
}
nowv-=vsteps;
if(nowv > to) timerID = setTimeout("epull_up("+nr+","+to+","+nowv+")",speed);
else {timerID = "";end_prepare();}
}

var lb = new Array();

function startup(nr)
{
write_menu();
if(nr)
{
if(((nr.indexOf("|") != -1) || (nr.indexOf("all") != -1)) && (open_close == true)) alert("Fout: de open_close eigenschap kan alleen gebruikt worden met 1 item.");
if (nr == "all")
{
j = 0;
for(i=0;i<self_menu.length;i++)
{
if(self_menu[i][3] != -2) {lb[j] = self_menu[i][3];j++;}
}
}
else
{
lb = nr.split("|");
}
open_all();
}
else startid = "stop";
}

var startid = 0;
var open_part = 0;


function open_all()
{
startid = lb[open_part];
for(i=0;i<self_menu.length;i++)
{
if(self_menu[i][3] == startid)
{
open_part++;
prevnr = i;
prevc = startid;
pull_down(i,startid);
i==self_menu.length;
}
}
if(open_part == lb.length) startid = "stop";
}