Svjetlana
asked on
Displaying recorsets in dropdown menu
I am trying to display records called "Title" from the Sections DB table horizontally in the dropdown menu and any related recordsets (connected via secondary key SectionID) called "Title" from the Files DB table vertically and every time I add
while not objRs.eof
objRs.MoveNext
wend
when getting recordsets from the Section DB table I receive Either BOF or EOF is True Error. Otherwise the code below displays random menu (see below) where I can not figure out what File Title belongs to what Section. Any ideas, please help. I am just going in circles now and can not find any solution what so ever.
code:
Sub readItemsFromDatabase
Dim db,q,sql,objRs,rsarr,rsarr 2,p_page_i d,p_title, p_sec_id,p _sec,p_par ent_id,col s,max,menu
'The path to database:
db ="Provider=Microsoft.Jet.O LEDB.4.0;D ata Source=" & Server.MapPath("DB.mdb")
q = "SELECT sectionid, Title, parentid From Sections Order by sectionid"
Set objRs=Server.CreateObject( "ADODB.Rec ordset")
Set sqlobjRs=Server.CreateObje ct("ADODB. Recordset" )
objRs.CacheSize = 25
objRs.CursorType = 3
objRs.LockType = 3
'Opening database --- --
objRs.Open q,db
sql = "Select fileid, title, sectionid From Files Where sectionid = " & objRs("sectionid") & " and Files.DLCId = 4"
sqlobjRs.Open sql,db
if NOT objRs.EOF then
rsarr = objRs.GetRows()
max = Ubound(rsarr,2)
else
max = ""
end if
if NOT sqlobjRs.EOF then
rsarr2 = sqlobjRs.GetRows()
max = Ubound(rsarr2,2)
else
max = ""
end if
'Closing database
row=0
do while(row<=max) 'Looping rows
'Setting variables
menuparentlink = "m" & rsarr(0,row)
p_sec_id = rsarr(0,row)
p_sec = rsarr(1,row)
p_page_id = rsarr2(0,row)
p_title = rsarr2(1,row)
pagelink = "mypage.asp?id=" & p_page_id
p_parent_id = rsarr2(2,row)
if(p_parent_id<>0) then
p_parent_id = "m" & p_parent_id
else
p_parent_id=""
end if
'Making menu item
menu = menu & ""
Response.write("oCMenu.mak eMenu('" & menuparentlink & "','" &p_parent_id & "','" & p_sec & "','" & pagelink & "')" & vbcrlf)
row = row + 1
loop
objRs.close()
Set objRs = Nothing
sqlobjRs.close()
Set sqlobjRs = Nothing
End Sub
random menu display:
oCMenu.makeMenu('m71','m71 ','company ','mypage. asp?id=297 ')
oCMenu.makeMenu('m72','m71 ','discipl ines','myp age.asp?id =298')
oCMenu.makeMenu('m73','m71 ','library ','mypage. asp?id=306 ')
oCMenu.makeMenu('m74','m71 ','gallery ','mypage. asp?id=309 ')
oCMenu.makeMenu('m75','m71 ','web','m ypage.asp? id=310')
oCMenu.makeMenu('m76','m71 ','marketi ng','mypag e.asp?id=3 14')
oCMenu.makeMenu('m77','m71 ','section ','mypage. asp?id=351 ')
oCMenu.makeMenu('m79','m71 ','test',' mypage.asp ?id=352')
oCMenu.makeMenu('m80','m71 ','The Project','mypage.asp?id=35 3')
oCMenu.makeMenu('m81','m71 ','Project Management','mypage.asp?id =354')
while not objRs.eof
objRs.MoveNext
wend
when getting recordsets from the Section DB table I receive Either BOF or EOF is True Error. Otherwise the code below displays random menu (see below) where I can not figure out what File Title belongs to what Section. Any ideas, please help. I am just going in circles now and can not find any solution what so ever.
code:
Sub readItemsFromDatabase
Dim db,q,sql,objRs,rsarr,rsarr
'The path to database:
db ="Provider=Microsoft.Jet.O
q = "SELECT sectionid, Title, parentid From Sections Order by sectionid"
Set objRs=Server.CreateObject(
Set sqlobjRs=Server.CreateObje
objRs.CacheSize = 25
objRs.CursorType = 3
objRs.LockType = 3
'Opening database --- --
objRs.Open q,db
sql = "Select fileid, title, sectionid From Files Where sectionid = " & objRs("sectionid") & " and Files.DLCId = 4"
sqlobjRs.Open sql,db
if NOT objRs.EOF then
rsarr = objRs.GetRows()
max = Ubound(rsarr,2)
else
max = ""
end if
if NOT sqlobjRs.EOF then
rsarr2 = sqlobjRs.GetRows()
max = Ubound(rsarr2,2)
else
max = ""
end if
'Closing database
row=0
do while(row<=max) 'Looping rows
'Setting variables
menuparentlink = "m" & rsarr(0,row)
p_sec_id = rsarr(0,row)
p_sec = rsarr(1,row)
p_page_id = rsarr2(0,row)
p_title = rsarr2(1,row)
pagelink = "mypage.asp?id=" & p_page_id
p_parent_id = rsarr2(2,row)
if(p_parent_id<>0) then
p_parent_id = "m" & p_parent_id
else
p_parent_id=""
end if
'Making menu item
menu = menu & ""
Response.write("oCMenu.mak
row = row + 1
loop
objRs.close()
Set objRs = Nothing
sqlobjRs.close()
Set sqlobjRs = Nothing
End Sub
random menu display:
oCMenu.makeMenu('m71','m71
oCMenu.makeMenu('m72','m71
oCMenu.makeMenu('m73','m71
oCMenu.makeMenu('m74','m71
oCMenu.makeMenu('m75','m71
oCMenu.makeMenu('m76','m71
oCMenu.makeMenu('m77','m71
oCMenu.makeMenu('m79','m71
oCMenu.makeMenu('m80','m71
oCMenu.makeMenu('m81','m71
If it helps, here is a simplistic example of connecting to a db, opening a rs, looping thru rs, closing rs, closing db connection:
dim adoConn
dim strConnect
dim strSQL
dim oRS
strConnect ="Provider=Microsoft.Jet.O LEDB.4.0;D ata Source=" & Server.MapPath("DB.mdb")
set adoConn = server.CreateObject("ADODB .CONNECTIO N")
adoConn.Open strConnect
strSQL = "select * from sometable"
SET oRS = server.CreateObject("ADODB .Recordset ")
oRS.Open strSQL,adoConn
If not oRS.BOF and not oRS.EOF Then
Do while not oRS.EOF
response.write(oRS("field1 "))
oRS.MoveNext
Loop
End if
oRS.Close
adoConn.Close
dim adoConn
dim strConnect
dim strSQL
dim oRS
strConnect ="Provider=Microsoft.Jet.O
set adoConn = server.CreateObject("ADODB
adoConn.Open strConnect
strSQL = "select * from sometable"
SET oRS = server.CreateObject("ADODB
oRS.Open strSQL,adoConn
If not oRS.BOF and not oRS.EOF Then
Do while not oRS.EOF
response.write(oRS("field1
oRS.MoveNext
Loop
End if
oRS.Close
adoConn.Close
ASKER
Connection to the database is OK, records are displayed in the menu but not in the right order as I want them to be displayed. However I have added:
if NOT objRs.EOF and not objRs.EOF then
Do while not objRs.EOF
rsarr = objRs.GetRows()
max = Ubound(rsarr,2)
objRs.MoveNext
Loop
else
max = ""
end if
and still getting an errror:
ADODB.Recordset
error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
script.asp, line 152
LINE 152 IS objRs.MoveNext
Thanks,
Lana
if NOT objRs.EOF and not objRs.EOF then
Do while not objRs.EOF
rsarr = objRs.GetRows()
max = Ubound(rsarr,2)
objRs.MoveNext
Loop
else
max = ""
end if
and still getting an errror:
ADODB.Recordset
error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
script.asp, line 152
LINE 152 IS objRs.MoveNext
Thanks,
Lana
This:
if NOT objRs.EOF and not objRs.EOF then
should be:
if NOT objRs.BOF and not objRs.EOF then
Preece
if NOT objRs.EOF and not objRs.EOF then
should be:
if NOT objRs.BOF and not objRs.EOF then
Preece
ASKER
Sorry typing mistake in the if-then-else statement, it is actually
if NOT objRs.BOF and NOT objRs.EOF then
Do while not objRs.EOF
rsarr = objRs.GetRows()
max = Ubound(rsarr,2)
objRs.MoveNext
Loop
else
max = ""
end if
and still getting an errror:
ADODB.Recordset
error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
script.asp, line 152
LINE 152 IS objRs.MoveNext
if NOT objRs.BOF and NOT objRs.EOF then
Do while not objRs.EOF
rsarr = objRs.GetRows()
max = Ubound(rsarr,2)
objRs.MoveNext
Loop
else
max = ""
end if
and still getting an errror:
ADODB.Recordset
error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
script.asp, line 152
LINE 152 IS objRs.MoveNext
You had EOF (end of file) twice, and should have BOF (beginning of file) and then EOF.
Preece
Preece
What does this do:
rsarr = objRs.GetRows()
Preece
rsarr = objRs.GetRows()
Preece
I would recommend taking a step back and really simplifying this code if you are really getting nowhere with it. Unless this is a really large recordset I would scrap the whole getrows method. The code could be much cleaner and far easier to debug without that.
Whatever you do, I would temporarily remove the inner recordset and make sure that your outer recordset is working on it's own.
Whatever you do, I would temporarily remove the inner recordset and make sure that your outer recordset is working on it's own.
In your example, you may not need the objRs.MoveNext.
Preece
Preece
Seems to me that you are getting the rs to begin with and you may not need the objRs.GetRows().
Preece
Preece
What are you attempting to do with this code:
if NOT objRs.BOF and NOT objRs.EOF then
Do while not objRs.EOF
rsarr = objRs.GetRows()
max = Ubound(rsarr,2)
objRs.MoveNext
Loop
else
max = ""
end if
Preece
if NOT objRs.BOF and NOT objRs.EOF then
Do while not objRs.EOF
rsarr = objRs.GetRows()
max = Ubound(rsarr,2)
objRs.MoveNext
Loop
else
max = ""
end if
Preece
ASKER
Preece,
I tried without "objRs.MoveNext" and "if NOT objRs.BOF and NOT objRs.EOF then" but no luck.
This is what I am attempting to do:
q = "SELECT sectionid, Title, parentid From Sections Order by sectionid"
objRs.Open q,db
objRs.GetRows() should display all the "Titles" recordsets from the "Sections" table horizontally in the dropdown menu. After that I have
sql = "Select fileid, title, sectionid From Files Where sectionid = " & objRs("sectionid") & " and Files.DLCId = 4"
sqlobjRs.Open sql,db
where sqlobjRs.GetRows() should call all the "Titles" recordsets from the "Files" table belonging to that specific section in horizontal menu.
Thanks....
I tried without "objRs.MoveNext" and "if NOT objRs.BOF and NOT objRs.EOF then" but no luck.
This is what I am attempting to do:
q = "SELECT sectionid, Title, parentid From Sections Order by sectionid"
objRs.Open q,db
objRs.GetRows() should display all the "Titles" recordsets from the "Sections" table horizontally in the dropdown menu. After that I have
sql = "Select fileid, title, sectionid From Files Where sectionid = " & objRs("sectionid") & " and Files.DLCId = 4"
sqlobjRs.Open sql,db
where sqlobjRs.GetRows() should call all the "Titles" recordsets from the "Files" table belonging to that specific section in horizontal menu.
Thanks....
ASKER
peterxlane,
The code was simplifed to begin with when I started displaying recorset "Title" from the Files table. It only started to get very confusing when I had to create and open another object recorset to connect to another DB table called "Sections" within the same database. Those two tables (Files & Sections) are joined by "sectionid". After that I have added another array to get Rows from Files table i.e.
if NOT sqlobjRs.EOF then
rsarr2 = sqlobjRs.GetRows()
max = Ubound(rsarr2,2)
else
max = ""
end if
Hope this make sense.
The code was simplifed to begin with when I started displaying recorset "Title" from the Files table. It only started to get very confusing when I had to create and open another object recorset to connect to another DB table called "Sections" within the same database. Those two tables (Files & Sections) are joined by "sectionid". After that I have added another array to get Rows from Files table i.e.
if NOT sqlobjRs.EOF then
rsarr2 = sqlobjRs.GetRows()
max = Ubound(rsarr2,2)
else
max = ""
end if
Hope this make sense.
No, I understand what you are trying to do, but unless you are dealing with really large recordsets, I think that GetRows() is not necessary and any performance gains that you might get are lost in time spent debugging the code. This is how I would do the same thing:
<%
connStr = "Provider=Microsoft.Jet.OL EDB.4.0; Data Source=" & Server.MapPath("db.mdb")
Set oConn = Server.CreateObject("ADODB .Connectio n")
oConn.Open(connStr)
strOuterSQL = "SELECT sectionid, Title, parentid From Sections Order by sectionid"
Set oRecordset = oConn.Execute(strOuterSQL)
Do While Not oRecordset.EOF
intSectionID = oRecordset("sectionid")
strTitle = oRecordset("Title")
intParentID = oRecordset("parentid")
strInnerSQL = "Select fileid, title, sectionid From Files Where sectionid = " & intSectionID & " and Files.DLCId = 4"
Set oInnerRecordset = oConn.Execute(strInnerSQL)
Do While Not oInnerRecordset.EOF
strInnerTitle = oInnerRecordset("title")
strInnerSectionID = oInnerRecordset("sectionid ")
strParentLink = "m" & intSectionID
strPageLink = "mypage.asp?id=" & oInnerRecordset("fileid")
Response.Write "oCMenu.makeMenu('" & strParentLink & "','" & strInnerSectionID & "','" & strTitle & "','" & strPageLink & "')"
Response.Write "<br />" & vbcrlf
oInnerRecordset.MoveNext
Loop
oRecordset.MoveNext
Loop
oConn.Close
Set oConn = Nothing
%>
I was not able to test it, since I don't have the database, but from what I see, that title that is being displayed should come from the inner recordset and not the outer one. I would also think that you would be doing a Response.Write in the outer loop to display the parent section name as well.
Maybe if you post the Javascript used to create the menu, it would make more sense
<%
connStr = "Provider=Microsoft.Jet.OL
Set oConn = Server.CreateObject("ADODB
oConn.Open(connStr)
strOuterSQL = "SELECT sectionid, Title, parentid From Sections Order by sectionid"
Set oRecordset = oConn.Execute(strOuterSQL)
Do While Not oRecordset.EOF
intSectionID = oRecordset("sectionid")
strTitle = oRecordset("Title")
intParentID = oRecordset("parentid")
strInnerSQL = "Select fileid, title, sectionid From Files Where sectionid = " & intSectionID & " and Files.DLCId = 4"
Set oInnerRecordset = oConn.Execute(strInnerSQL)
Do While Not oInnerRecordset.EOF
strInnerTitle = oInnerRecordset("title")
strInnerSectionID = oInnerRecordset("sectionid
strParentLink = "m" & intSectionID
strPageLink = "mypage.asp?id=" & oInnerRecordset("fileid")
Response.Write "oCMenu.makeMenu('" & strParentLink & "','" & strInnerSectionID & "','" & strTitle & "','" & strPageLink & "')"
Response.Write "<br />" & vbcrlf
oInnerRecordset.MoveNext
Loop
oRecordset.MoveNext
Loop
oConn.Close
Set oConn = Nothing
%>
I was not able to test it, since I don't have the database, but from what I see, that title that is being displayed should come from the inner recordset and not the outer one. I would also think that you would be doing a Response.Write in the outer loop to display the parent section name as well.
Maybe if you post the Javascript used to create the menu, it would make more sense
ASKER
peterxlane,
Javascript used to create the menu:
<script>
//Menu object creation
oCMenu=new makeCM("oCMenu") //Making the menu object. Argument: menuname
//Menu properties
oCMenu.pxBetween=2
oCMenu.fromLeft=1
oCMenu.fromTop=85
oCMenu.rows=1
oCMenu.menuPlacement="left "
oCMenu.offlineRoot="/wwwro ot/"
oCMenu.onlineRoot="/dir/"
oCMenu.resizeCheck=1
oCMenu.wait=1000
oCMenu.fillImg="fill.gif"
oCMenu.zIndex=0
//Background bar properties
oCMenu.useBar=1
oCMenu.barWidth="100%"
oCMenu.barHeight="menu"
oCMenu.barClass="clBar"
oCMenu.barX=0
oCMenu.barY=0
oCMenu.barBorderX=0
oCMenu.barBorderY=0
oCMenu.barBorderClass=""
//Level properties - ALL properties have to be spesified in level 0
oCMenu.level[0]=new cm_makeLevel() //Add this for each new level
oCMenu.level[0].width=68
oCMenu.level[0].height=30
oCMenu.level[0].regClass=" clLevel0"
oCMenu.level[0].overClass= "clLevel0o ver"
oCMenu.level[0].borderX=1
oCMenu.level[0].borderY=1
oCMenu.level[0].borderClas s="clLevel 0border"
oCMenu.level[0].offsetX=0
oCMenu.level[0].offsetY=0
oCMenu.level[0].rows=0
oCMenu.level[0].arrow=0
oCMenu.level[0].arrowWidth =0
oCMenu.level[0].arrowHeigh t=0
oCMenu.level[0].align="bot tom"
//EXAMPLE SUB LEVEL[2] PROPERTIES - You have to specify the properties you want different from LEVEL[0] - If you want all items to look the same just remove this
oCMenu.level[1]=new cm_makeLevel() //Add this for each new level (adding one to the number)
oCMenu.level[1].width=140
oCMenu.level[1].height=20
oCMenu.level[1].regClass=" clLevel1"
oCMenu.level[1].overClass= "clLevel1o ver"
oCMenu.level[1].borderX=1
oCMenu.level[1].borderY=1
oCMenu.level[1].align="rig ht"
oCMenu.level[1].offsetX=-( oCMenu.lev el[0].widt h-2)/2+20
oCMenu.level[1].offsetY=0
oCMenu.level[1].borderClas s="clLevel 1border"
//EXAMPLE SUB LEVEL[1] PROPERTIES - You have to spesify the properties you want different from LEVEL[1] OR LEVEL[0] - If you want all items to look the same just remove this
oCMenu.level[2]=new cm_makeLevel() //Add this for each new level (adding one to the number)
oCMenu.level[2].width=140
oCMenu.level[2].height=20
oCMenu.level[2].offsetX=0
oCMenu.level[2].offsetY=0
oCMenu.level[2].regClass=" clLevel1"
oCMenu.level[2].overClass= "clLevel1o ver"
oCMenu.level[2].borderClas s="clLevel 1border"
oCMenu.level[2].align="mid dle"
<%
Sub readItemsFromDatabase
'code listed in question
End Sub
'Calling sub
Function makeCMDisplay(Params, DBConn, PageID, ParentID, TopID)
objBODY = makeCM
objHEAD = ""
objONLOAD = makeCM
objONRESIZE = ""
objONUNLOAD = ""
makeCMDisplay = True
End Function
call readItemsFromDatabase
'ASP CODE END READING ITEMS FROM THE DATABASE
%>
//constructing the menu
oCMenu.construct()
</script>
Javascript used to create the menu:
<script>
//Menu object creation
oCMenu=new makeCM("oCMenu") //Making the menu object. Argument: menuname
//Menu properties
oCMenu.pxBetween=2
oCMenu.fromLeft=1
oCMenu.fromTop=85
oCMenu.rows=1
oCMenu.menuPlacement="left
oCMenu.offlineRoot="/wwwro
oCMenu.onlineRoot="/dir/"
oCMenu.resizeCheck=1
oCMenu.wait=1000
oCMenu.fillImg="fill.gif"
oCMenu.zIndex=0
//Background bar properties
oCMenu.useBar=1
oCMenu.barWidth="100%"
oCMenu.barHeight="menu"
oCMenu.barClass="clBar"
oCMenu.barX=0
oCMenu.barY=0
oCMenu.barBorderX=0
oCMenu.barBorderY=0
oCMenu.barBorderClass=""
//Level properties - ALL properties have to be spesified in level 0
oCMenu.level[0]=new cm_makeLevel() //Add this for each new level
oCMenu.level[0].width=68
oCMenu.level[0].height=30
oCMenu.level[0].regClass="
oCMenu.level[0].overClass=
oCMenu.level[0].borderX=1
oCMenu.level[0].borderY=1
oCMenu.level[0].borderClas
oCMenu.level[0].offsetX=0
oCMenu.level[0].offsetY=0
oCMenu.level[0].rows=0
oCMenu.level[0].arrow=0
oCMenu.level[0].arrowWidth
oCMenu.level[0].arrowHeigh
oCMenu.level[0].align="bot
//EXAMPLE SUB LEVEL[2] PROPERTIES - You have to specify the properties you want different from LEVEL[0] - If you want all items to look the same just remove this
oCMenu.level[1]=new cm_makeLevel() //Add this for each new level (adding one to the number)
oCMenu.level[1].width=140
oCMenu.level[1].height=20
oCMenu.level[1].regClass="
oCMenu.level[1].overClass=
oCMenu.level[1].borderX=1
oCMenu.level[1].borderY=1
oCMenu.level[1].align="rig
oCMenu.level[1].offsetX=-(
oCMenu.level[1].offsetY=0
oCMenu.level[1].borderClas
//EXAMPLE SUB LEVEL[1] PROPERTIES - You have to spesify the properties you want different from LEVEL[1] OR LEVEL[0] - If you want all items to look the same just remove this
oCMenu.level[2]=new cm_makeLevel() //Add this for each new level (adding one to the number)
oCMenu.level[2].width=140
oCMenu.level[2].height=20
oCMenu.level[2].offsetX=0
oCMenu.level[2].offsetY=0
oCMenu.level[2].regClass="
oCMenu.level[2].overClass=
oCMenu.level[2].borderClas
oCMenu.level[2].align="mid
<%
Sub readItemsFromDatabase
'code listed in question
End Sub
'Calling sub
Function makeCMDisplay(Params, DBConn, PageID, ParentID, TopID)
objBODY = makeCM
objHEAD = ""
objONLOAD = makeCM
objONRESIZE = ""
objONUNLOAD = ""
makeCMDisplay = True
End Function
call readItemsFromDatabase
'ASP CODE END READING ITEMS FROM THE DATABASE
%>
//constructing the menu
oCMenu.construct()
</script>
there must be an external script that it is included as well that has some of the functions being used in that code though...
ASKER
The example you have posted doesn't display menu on the page but when I click “view source” it displays sections, again not in the right order as I want them to be. This is the menu it is making:
oCMenu.makeMenu('m71','71' ,'company' ,'mypage.a sp?id=297' )<br />
oCMenu.makeMenu('m71','71' ,'company' ,'mypage.a sp?id=298' )<br />
oCMenu.makeMenu('m71','71' ,'company' ,'mypage.a sp?id=306' )<br />
oCMenu.makeMenu('m71','71' ,'company' ,'mypage.a sp?id=309' )<br />
oCMenu.makeMenu('m71','71' ,'company' ,'mypage.a sp?id=310' )<br />
oCMenu.makeMenu('m71','71' ,'company' ,'mypage.a sp?id=314' )<br />
oCMenu.makeMenu('m71','71' ,'company' ,'mypage.a sp?id=351' )<br />
oCMenu.makeMenu('m71','71' ,'company' ,'mypage.a sp?id=352' )<br />
oCMenu.makeMenu('m71','71' ,'company' ,'mypage.a sp?id=353' )<br />
oCMenu.makeMenu('m71','71' ,'company' ,'mypage.a sp?id=354' )<br />
oCMenu.makeMenu('m75','75' ,'web','my page.asp?i d=299')<br />
oCMenu.makeMenu('m79','79' ,'test','m ypage.asp? id=325')<b r />
oCMenu.makeMenu('m80','80' ,'The Project','mypage.asp?id=32 0')<br />
oCMenu.makeMenu('m82','82' ,'Who?','m ypage.asp? id=321')<b r />
oCMenu.makeMenu('m82','82' ,'Who?','m ypage.asp? id=322')<b r />
Maybe there is a problem with the SQL statements? Can I join two tables where Sections.Online = true, Sections.ParentId=Sections .SectionId , Sections.BaseId=Sections.S ectionId, Files.DLCid=4, Files.Online = true and Files.Major=(Select Max(Files.Major))
Thanks.
oCMenu.makeMenu('m71','71'
oCMenu.makeMenu('m71','71'
oCMenu.makeMenu('m71','71'
oCMenu.makeMenu('m71','71'
oCMenu.makeMenu('m71','71'
oCMenu.makeMenu('m71','71'
oCMenu.makeMenu('m71','71'
oCMenu.makeMenu('m71','71'
oCMenu.makeMenu('m71','71'
oCMenu.makeMenu('m71','71'
oCMenu.makeMenu('m75','75'
oCMenu.makeMenu('m79','79'
oCMenu.makeMenu('m80','80'
oCMenu.makeMenu('m82','82'
oCMenu.makeMenu('m82','82'
Maybe there is a problem with the SQL statements? Can I join two tables where Sections.Online = true, Sections.ParentId=Sections
Thanks.
ASKER
External javascript is fine, as I have managed to display recordsets from Files table horizontally. The problem occures only when two tables are joined together and when I try to display child recordsets i.e. strInnerSQL from parent i.e. strOuterSQL . It somehow reads first recordset section.title from the database horizontally and then all other recordsets from "Files" & "Sections" tables are displayed verticaly within that first recordset, but not in the right order.
Here is the main javascript function anyway:
/***Making the main menu object**/
function makeCM(name){
var c=this; c.mc=0; c.name = name; c.m=new Array(); c.scrollY=-1; c.level=new Array(); c.l=new Array(); c.tim=100; c.isresized=0;
c.isover=0; c.zIndex=100; c.frameStartLevel=1; c.bar=0; c.z=0; c.totw=0; c.toth=0; c.maxw=0; c.maxh=0; cmpage = new cm_page(); c.constructed = 0;
return this
}//events
makeCM.prototype.onshow="" ; makeCM.prototype.onhide="" ; makeCM.prototype.onconstru ct="";
Here is the main javascript function anyway:
/***Making the main menu object**/
function makeCM(name){
var c=this; c.mc=0; c.name = name; c.m=new Array(); c.scrollY=-1; c.level=new Array(); c.l=new Array(); c.tim=100; c.isresized=0;
c.isover=0; c.zIndex=100; c.frameStartLevel=1; c.bar=0; c.z=0; c.totw=0; c.toth=0; c.maxw=0; c.maxh=0; cmpage = new cm_page(); c.constructed = 0;
return this
}//events
makeCM.prototype.onshow=""
It wasn't that I thought something was wrong with the Javascript, but if I can't see the menu actually being created, it is hard to determine where the ASP code is going wrong.
Maybe if you posted a very quick sample of code that would display the menus as they should be, that would also help determine what the problem is. Something like:
oCMenu.makeMenu('m71','m71 ','Parent Title','mypage.asp?id=297' )
oCMenu.makeMenu('m72','m71 ','Child Item 1','mypage.asp?id=298')
oCMenu.makeMenu('m73','m71 ','Child Item 2','mypage.asp?id=306')
but something that would actually produce the results that you are expecting. The ASP code that I posted should be producting EXACTLY what your script should have been producing but without errors. So if it is doing that and the menu is still not being created as you would expect, then there had to have been some issues with your code even before you got the errors. A hard coded sample that shows what you are aiming for would make things clearer.
Maybe if you posted a very quick sample of code that would display the menus as they should be, that would also help determine what the problem is. Something like:
oCMenu.makeMenu('m71','m71
oCMenu.makeMenu('m72','m71
oCMenu.makeMenu('m73','m71
but something that would actually produce the results that you are expecting. The ASP code that I posted should be producting EXACTLY what your script should have been producing but without errors. So if it is doing that and the menu is still not being created as you would expect, then there had to have been some issues with your code even before you got the errors. A hard coded sample that shows what you are aiming for would make things clearer.
ASKER
Code that would display the menus as they should be:
oCMenu.makeMenu('m71','m71 ','company ','')
oCMenu.makeMenu('m297','m7 1','missio n','mypage .asp?id=29 7')
oCMenu.makeMenu('m298','m7 1','our process','mypage.asp?id=29 8')
oCMenu.makeMenu('m351','m7 1','link 1','mypage.asp?id=351')
oCMenu.makeMenu('m352','m7 1','link 2','mypage.asp?id=352')
oCMenu.makeMenu('m72','m72 ','discipl ines','')
oCMenu.makeMenu('m75','m72 ','web','' )
oCMenu.makeMenu('m299','m7 5','link 1','mypage.asp?id=299')
oCMenu.makeMenu('m79','m72 ','test',' ')
oCMenu.makeMenu('m325','m7 9','link 2','mypage.asp?id=325')
oCMenu.makeMenu('m80','m80 ','The Project','')
oCMenu.makeMenu('m297','m8 0','Home Test','mypage.asp?id=320')
oCMenu.makeMenu('m82','m80 ','Who','' )
oCMenu.makeMenu('m322','m8 2','Our People','mypage.asp?id=322 ')
oCMenu.makeMenu('m321','m8 2','Who are we','mypage.asp?id=321')
company, disciplines and The Project should be in horizontal menu. Web and test should be vertically displayed from disciplines and call corresponding horizontal Web - link 1, test - link 2.
Home Test & Who should be vertically displayed from The Project. Who should display Our People and Who are we.
Here is the full javascript called menu.js that is included in my asp page.
/*Browsercheck object*/
function cm_bwcheck(){
this.ver=navigator.appVers ion
this.agent=navigator.userA gent.toLow erCase()
this.dom=document.getEleme ntById?1:0
this.ns4=(!this.dom && document.layers)?1:0;
this.op=window.opera
this.moz=(this.agent.index Of("gecko" )>-1 || window.sidebar)
this.ie=this.agent.indexOf ("msie")>- 1 && !this.op
if(this.op){
this.op5=(this.agent.index Of("opera 5")>-1 || this.agent.indexOf("opera/ 5")>-1)
this.op6=(this.agent.index Of("opera 6")>-1 || this.agent.indexOf("opera/ 6")>-1)
this.op7=this.dom&&!this.o p5&&!this. op6 //So all higher opera versions will use it
}else if(this.moz) this.ns6 = 1
else if(this.ie){
this.ie4 = !this.dom && document.all
this.ie5 = (this.agent.indexOf("msie 5")>-1)
this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1)
this.ie6 = this.dom && !this.ie4 && !this.ie5 && ! this.ie55
}
this.mac=(this.agent.index Of("mac")> -1)
this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6 || this.op7)
this.usedom= this.ns6||this.op7//Use dom creation
this.reuse = this.ie||this.op7||this.us edom //Reuse layers
this.px=this.dom&&!this.op 5?"px":""
return this
}
var bw=new cm_bwcheck()
/*Variable declaration*/
var cmpage
/*Crossbrowser objects functions*/
function cm_message(txt){alert(txt) ; return false}
function cm_makeObj(obj,nest,o,doc) {
if(!doc) doc=document
if(bw.usedom&&o) this.evnt=o
else{nest=(!nest) ? "doc.":'doc.layers.'+nest+ '.'
this.evnt=bw.dom? doc.getElementById(obj):
bw.ie4?doc.all[obj]:bw.ns4 ?eval(nest +"layers." +obj):0;
}
if(!this.evnt) return cm_message('The layer does not exist ('+obj+')'
+'- \nIf your using Netscape please check the nesting of your tags (on the entire page)\nNest:'+nest)
this.css=bw.dom||bw.ie4?th is.evnt.st yle:this.e vnt; this.ok=0
this.ref=bw.dom||bw.ie4?do c:this.css .document;
this.obj = obj + "Object"; eval(this.obj + "=this");
this.x=0; this.y=0; this.w=0; this.h=0; this.vis=0; return this
}
cm_makeObj.prototype.moveI t = function(x,y){this.x=x;thi s.y=y; this.css.left=x+bw.px;this .css.top=y +bw.px}
cm_makeObj.prototype.showI t = function(o){this.css.visib ility="vis ible"; this.vis=1; if(bw.op5&&this.arr){ this.arr.showIt(); }}//alert('showing arrow')}}
cm_makeObj.prototype.hideI t = function(no){this.css.visi bility="hi dden"; this.vis=0;}
cm_makeObj.prototype.clipT o = function(t,r,b,l,setwidth) {
this.w=r; this.h=b; if(bw.ns4){this.css.clip.t op=t;this. css.clip.r ight=r; this.css.clip.bottom=b;thi s.css.clip .left=l
}else{if(t<0)t=0;if(r<0)r= 0;if(b<0)b =0;if(b<0) b=0; this.css.clip="rect("+t+bw .px+","+r+ bw.px+","+ b+bw.px+", "+l+bw.px+ ")";
if(setwidth){if(bw.op5||bw .op6){this .css.pixel Width=r; this.css.pixelHeight=b;}el se{this.cs s.width=r+ bw.px; this.css.height=b+bw.px;}} }}
function cm_active(on,h){
if(this.o.arr) on?this.o.arr.hideIt():bw. op5?this.o .arr.showI t():this.o .arr.css.v isibility= "inherit"
if(bw.reuse||bw.usedom){
if(!this.img2) this.o.evnt.className=on?t his.cl2:th is.cl
else this.o.ref.images["img"+th is.name].s rc=on?this .img2.src: this.img1. src;
if(on && bw.ns6){this.o.hideIt(); this.o.css.visibility='inh erit' };
}else{
if(!this.img2){ if(on) this.o.over.showIt(); else this.o.over.hideIt();
}else this.o.ref.images["img"+th is.name].s rc=on?this .img2.src: this.img1. src;
}this.isactive=on?1:0
}
function cm_page(frame){
if(!frame) frame = self
this.x=0; this.x2 =(!bw.ie)?frame.innerWidth :frame.doc ument.body .offsetWid th-20;
this.y=0; this.orgy=this.y2= (!bw.ie)?frame.innerHeight :frame.doc ument.body .offsetHei ght-6;
this.x50=this.x2/2; this.y50=this.y2/2; return this
}
/***check positions**/
function cm_cp(num,w,minus){
if(num){if(num.toString(). indexOf("% ")!=-1){va r t = w?cmpage.x2:cmpage.y2; num=parseInt((t*parseFloat (num)/100) )
if(minus) num-=minus }else num=eval(num);} else num=0; return num
}
/**Level object**/
function cm_makeLevel(){
var c=this, a=arguments; c.width=a[0]||null; c.height=a[1]||null;
c.regClass=a[2]||null; c.overClass=a[3]||null; c.borderX=a[4]>-1?a[4]:nul l;
c.borderY=a[5]>-1?a[5]:nul l; c.borderClass=a[6]||null; c.rows=a[7]>-1?a[7]:null;
c.align=a[8]||null; c.offsetX=a[9]||null; c.offsetY=a[10]||null; c.arrow=a[11]||null;
c.arrowWidth=a[12]||null; c.arrowHeight=a[13]||null; c.roundBorder=a[14]||null; return c
}
/***Making the main menu object**/
function makeCM(name){
var c=this; c.mc=0; c.name = name; c.m=new Array(); c.scrollY=-1; c.level=new Array(); c.l=new Array(); c.tim=100; c.isresized=0;
c.isover=0; c.zIndex=100; c.frameStartLevel=1; c.bar=0; c.z=0; c.totw=0; c.toth=0; c.maxw=0; c.maxh=0; cmpage = new cm_page(); c.constructed = 0;
return this
}//events
makeCM.prototype.onshow="" ; makeCM.prototype.onhide="" ; makeCM.prototype.onconstru ct="";
/***Creating layers**/
function cm_divCreate(id,cl,txt,w,c ,app,ex,tx t2){
if(bw.usedom){var div=document.createElement ("DIV"); div.className=cl; div.id=id;
if(txt) div.innerHTML=txt; if(app){app.appendChild(di v); return div}
if(w) document.body.appendChild( div); return div
}else{var dstr='<div id="'+id+'" class="'+cl+'"'
if(ex&&bw.reuse) dstr+=" "+ex; dstr+=">"+txt; ; if(txt2) dstr+=txt2;
if(c) dstr+='</div>'; if(w) document.write(dstr); else return dstr
}return ""
}
/***Getting layer string for each menu**/
function cm_getLayerStr(m,app,name, fill,clb,a rrow,ah,aw ,root){
var no=m.nolink,arrstr='',l=m. lev,str='' ,txt=m.txt ,ev='', id=name + '_' + m.name,d1; if(app) d1=app
if((!bw.reuse||l==0) && !no){
ev=' onmouseover="'+name+'.show sub(\''+m. name+'\')" '
+' onmouseout="'+name+'.mout( \''+m.name +'\')"'
+' onclick="'+name+'.onclck(\ ''+m.name+ '\'); return false" '
}
if(bw.reuse&&l!=0) txt=''; if(l==0) str+=d1=cm_divCreate(id+'_ 0',clb,'') ; str+=m.d2=cm_divCreate(id, m.cl,txt,0 ,0,d1,ev)
if(l==0&&bw.usedom){
m.d2.onclick=new Function(name+'.onclck("'+ m.name+'") ');
m.d1=d1;
m.d2.onmouseover=new Function(name+'.showsub("' +m.name+'" )');
m.d2.onmouseout=new Function(name+'.mout("'+m. name+'")')
}if(!bw.reuse && !m.img1 && !no){
str+=cm_divCreate(id+'_1', m.cl2,txt, 0,1)
str+=cm_divCreate(id+'_3', "clCMAbs", '<a href="#" '+ev+'><img alt="" src="'+root+fill+'" width="'+m.w+'" height="'+m.h+'" border="0" /></a>',0,1)
}str+='</div>';
if(l==0){if(arrow)str+=m.d 3=cm_divCr eate(id+'_ a','clCMAb s','<img alt="" height="'+aw+'" width="'+ah+'" src="'+root+arrow+'" />',0,1,d1); str+="</div>"}
str+="\n"; if(!bw.reuse){m.txt=null; m.d2=null; m.d3=null;}
if(bw.usedom){ if(l==0) document.body.appendChild( d1); str=''}
return str
}
/***get align num from text (better to evaluate numbers later)**/
function cm_checkalign(a){
switch(a){
case "right": return 1; break; case "left": return 2; break;
case "bottom": return 3; break; case "top": return 4; break;
case "righttop": return 5; break; case "lefttop": return 6; break;
case "bottomleft": return 7; break; case "topleft": return 8; break;
}return null
}
/**Making each individual menu **/
makeCM.prototype.makeMenu= function(n ame,parent ,txt,lnk,t arg,w,h,im g1,img2,cl ,cl2,align ,rows,noli nk,onclick ,onmouseov er,onmouse out){
var c = this; if(!name) name = c.name+""+c.mc; var p = parent!=""&&parent&&c.m[pa rent]?pare nt:0;
if(c.mc==0){
if(bw.op7 && this.frames) bw.usedom=0
var tmp=location.href;
if(tmp.indexOf('file:')>-1 ||tmp.char At(1)==':' ) c.root=c.offlineRoot; else c.root=c.onlineRoot
if(c.useBar){if(!c.barBord erClass) c.barBorderClass=c.barClas s; c.bar1 = cm_divCreate(c.name+'bbar_ 0',c.barCl ass,'',0,1 );
c.bar = cm_divCreate(c.name+'bbar' ,c.barBord erClass,'' ,1,1,0,0,c .bar1); if(bw.usedom) c.bar.appendChild(c.bar1);
}}var create=1,img,arrow; var m = c.m[name] = new Object(); m.name=name; m.subs=new Array(); m.parent=p; m.arnum=0; m.arr=0
var l = m.lev = p?c.m[p].lev+1:0; c.mc++; m.hide=0;
if(l>=c.l.length){
var p1,p2=0; if(l>=c.level.length) p1=c.l[c.level.length-1];
else p1=c.level[l]; c.l[l]=new Array(); if(!p2) p2=c.l[l-1]
if(l!=0){ if(isNaN(p1.align)) p1["align"]=cm_checkalign( p1.align)
for(var i in p1){if(i!="str"&&i!="m"){i f(p1[i]==n ull) c.l[l][i]=p2[i]; else c.l[l][i]=p1[i] }}
}else{c.l[l]=c.level[0]; c.l[l].align=cm_checkalign (c.l[l].al ign)}
c.l[l]["str"]=''; c.l[l].m=new Array(); if(!c.l[l].borderClass) c.l[l].borderClass=c.l[l]. regClass
c.l[l].app=0; c.l[l].max=0; c.l[l].arnum=0; c.l[l].o=new Array(); c.l[l].arr=new Array()
c.level[l]=p1=p2=null
if(l!=0) c.l[l].str=c.l[l].app=cm_d ivCreate(c .name+ '_' +l+'_0',c.l[l].borderClass ,'')
}if(p){p = c.m[p]; p.subs[p.subs.length]=name ;
if(p.subs.length==1&&c.l[l -1].arrow) { p.arr=1;
if(p.parent){c.m[p.parent] .arnum++
if(c.m[p.parent].arnum>c.l [l-1].arnu m){
c.l[l-1].str+=c.l[l-1].arr [c.l[l-1]. arnum]=cm_ divCreate( c.name+ '_a' +(l-1)+'_'+c.l[l-1].arnum, 'clCMAbs', '<img height="'+c.l[l-1].arrowHe ight
+'" width="'+c.l[l-1].arrowWid th+'" src="'+c.root+c.l[l-1].arr ow+'" alt="" />',0,1,c.l[l-1].app); c.l[l-1].arnum++
}}}if(bw.reuse) if(p.subs.length>c.l[l].ma x) c.l[l].max = p.subs.length; else create=0
}m.rows=rows>-1?rows:c.l[l ].rows; m.w=cm_cp(w||c.l[l].width, 1); m.h=cm_cp(h||c.l[l].height ,0); m.txt=txt; m.lnk=lnk;
if(align) align=cm_checkalign(align) ; m.align=align||c.l[l].alig n; m.cl=cl=cl||c.l[l].regClas s;
m.targ=targ; m.cl2=cl2||c.l[l].overClas s; m.create=create; m.mover=onmouseover; m.mout=onmouseout;
m.onclck=onclick; m.active = cm_active; m.isactive=0; m.nolink=nolink
if(create) c.l[l].m[c.l[l].m.length]= name
if(img1){m.img1 = new Image(); m.img1.src=c.root+img1; if(!img2) img2=img1; m.img2 = new Image(); m.img2.src=c.root+img2;
m.cl="clCMAbs"; m.txt=''; if(!bw.reuse&&!nolink) m.txt = '<a href="#" onmouseover="'+c.name+'.sh owsub(\''+ name+'\')" onmouseout="'+c.name+'.mou t(\''+name +'\')" onclick="'+c.name+'.onclck (\''+name+ '\'); return false">';;
m.txt+='<img alt="" src="'+c.root+img1+'" width="'+m.w+'" height="'+m.h+'" id="img'+m.name+'" '
if(bw.dom&&!nolink) m.txt+='style="cursor:poin ter; cursor:hand"'; if(!bw.reuse){if(!bw.dom) m.txt+='name="img'+m.name+ '"'; m.txt+=' border="0"'}; m.txt+=' />'; if(!bw.reuse&&!nolink) m.txt+='</a>'
}else{m.img1=0; m.img2=0};
if(l==0||create) c.l[l].str+=cm_getLayerStr (m,c.l[l]. app,c.name ,c.fillImg ,c.l[l].bo rderClass, c.l[l].arr ow,c.l[l]. arrowWidth ,c.l[l].ar rowHeight, c.root)
if(l==0){if(m.w>c.maxw) c.maxw=m.w; if(m.h>c.maxh) c.maxh=m.h; c.totw+=c.pxBetween+m.w+c. l[0].borde rX;c.toth+ =c.pxBetwe en+m.h+c.l [0].border Y}
if(lnk && !onmouseover){
var path=lnk.indexOf("mailto:" )>-1||lnk. indexOf("http://" )>-1?"":c. root
m.mover="self.status='"+pa th+m.lnk+" '"
if(!m.mout) m.mout=""; m.mout+=";self.status='';"
}
}
/**Getting x/y coords for subs **/
makeCM.prototype.getcoords =function( m,bx,by,x, y,maxw,max h,ox,oy){
var a=m.align; x+=m.o.x; y+=m.o.y
switch(a){
case 1: x+=m.w+bx; break; case 2: x-=maxw+bx; break;
case 3: y+=m.h+by; break; case 4: y-=maxh+by; break;
case 5: x-=maxw+bx; y-=maxh-m.h; break;
case 6: x+=m.w+bx; y-=maxh-m.h; break;
case 7: y+=m.h+by; x-=maxw-m.w; break;
case 8: y-=maxh+by; x-=maxw-m.w+bx; break;
}
if(m.lev==this.frameStartL evel-1 && this.frames){
switch(a){
case 1: x=0; break;
case 2: x=this.cmpage.x2-maxw; break;
case 3: y=0; break;
case 4: y-=maxh+by; break;
case 5: x-=maxw+bx; y-=maxh-m.h; break;
case 6: x+=m.w+bx; y-=maxh-m.h; break;
case 7: y+=m.h+by; x-=maxw-m.w; break;
case 8: y-=maxh+by; x-=maxw-m.w+bx; break;
}
}
m.subx=x + ox; m.suby=y + oy
}
/**Showing sub elements**/
makeCM.prototype.showsub=f unction(el ){
var c=this,pm=c.m[el],m,o,nl
if(!pm.b||(c.isresized&&pm .lev>0)) pm.b=c.l[pm.lev].b; c.isover=1
clearTimeout(c.tim);
var ln=pm.subs.length,l=pm.lev +1
if(c.l[pm.lev].a==el&&l!=c .l.length && !c.openOnClick){if(c.l[pm. lev+1].a) c.hidesub(l+1,el); return}
c.hidesub(l,el); if(pm.mover) eval(pm.mover); if(!pm.isactive) pm.active(1);
c.l[pm.lev].a = el; if(ln==0) return;
if(c.openOnClick && !c.clicked) return
if(!c.l[l].b) return
var b = c.l[l].b, bx=c.l[l].borderX, by=c.l[l].borderY, rows=pm.rows
var rb=c.l[l].roundBorder;
var x=bx+rb,y=by+rb,maxw=0,max h=0,cn=0; b.hideIt()
for(var i=0;i<c.l[l].m.length;i++) {
if(!bw.reuse) m=c.m[c.l[l].m[i]]
else m=c.m[c.m[el].subs[i]]
if(m && m.parent==el&&!m.hide){
if(!bw.reuse) o=m.o; else o=m.o=c.l[l].o[i]
if(x!=o.x||y!=o.y) o.moveIt(x,y); nl=m.subs.length
if(bw.reuse){
if(o.w!=m.w || o.h!=m.h) o.clipTo(0,m.w,m.h,0,1)
if(o.evnt.className!=m.cl) {
m.isactive=0; o.evnt.className=m.cl
if(bw.ns6){o.hideIt(); o.css.visibility='inherit' }
}if(bw.ie6) b.showIt()
o.evnt.innerHTML=m.txt; if(bw.ie6) b.hideIt()
if(!m.nolink){
o.evnt.onmouseover=new Function(c.name+".showsub( '"+m.name+ "')")
o.evnt.onmouseout=new Function(c.name+".mout('"+ m.name+"') ")
o.evnt.onclick=new Function(c.name+".onclck(' "+m.name+" ')")
if(o.oldcursor){o.css.curs or=o.oldcu rsor; o.oldcursor=0;}
}else{o.evnt.onmouseover=' '; o.evnt.onclick=''; if(o.css.cursor=='') o.oldcursor=bw.ns6?"pointe r":"hand"; else o.oldcursor=o.css.cursor; o.css.cursor="auto"}
}if(m.arr){o.arr=c.l[l].ar r[cn]; o.arr.moveIt(x + m.w-c.l[l].arrowWidth-3,y+ m.h/2-(c.l [l].arrowH eight/2));
o.arr.css.visibility="inhe rit"; cn++;} else o.arr=0
if(!rows){y+=m.h+by; if(m.w>maxw) maxw=m.w; maxh=y}
else{x+=m.w+bx; if(m.h>maxh) maxh=m.h; maxw=x;}
o.css.visibility="inherit" ; if(bw.op5||bw.op6) o.showIt()
}else{o = c.m[c.l[l].m[i]].o; o.hideIt();} }
if(!rows) maxw+=bx*2+rb; else maxh+=by*2+rb;
if(rb){maxw+=rb; maxh+=rb}
b.clipTo(0,maxw,maxh,0,1)
if(c.chkscroll) c.chkscroll()
if(c.chkscroll||!pm.subx|| !pm.suby|| c.scrollY> -1||c.isre sized) c.getcoords(pm,c.l[l-1].bo rderX,c.l[ l-1].borde rY,pm.b.x, pm.b.y,max w,maxh,c.l [l-1].offs etX,c.l[l- 1].offsetY )
x=pm.subx; if(c.chkscroll&&l==c.frame StartLevel ) pm.suby+=c.scrollY; y=pm.suby; b.moveIt(x,y); if(c.onshow) eval(c.onshow); b.showIt()
}
makeCM.prototype.hidesub=f unction(l, el){
var c = this,tmp,m,i,j,hide
if(!l) {l=1; hide=1; c.clicked=0}
for(i=l-1;i<c.l.length;i++ ){
if(i>0&&i>l-1) if(c.l[i].b) c.l[i].b.hideIt()
if(c.l[i].a&&c.l[i].a!=el) {
m=c.m[c.l[i].a]; m.active(0,1); if(m.mout) eval(m.mout); c.l[i].a=0
if(i>0&&i>l-1) if(bw.op5||bw.op6) for(j=0;j<c.l[i].m.length; j++) c.m[c.l[i].m[j]].o.hideIt( )
}if(i>l){for(j=0;j<c.l[i-1 ].arnum;j+ +){c.l[i-1 ].arr[j].h ideIt(); if(bw.op6) c.l[i-1].arr[j].moveIt(-10 00,-1000)} }
}if(hide&&c.onhide) eval(c.onhide)
}
makeCM.prototype.makeObjec ts=functio n(nowrite, fromframe) {
var c = this,oc,name,bx,by,w,h,l,n o,ar,id,ne st,st=0,en =c.l.lengt h,bobj,o,m ,i,j
if(fromframe){
st = this.frameStartLevel
this.body = fromframe.document.body
this.doc = fromframe.document
this.deftarget=fromframe
this.cmpage = new cm_page(fromframe)
}else{
this.body=document.body
this.doc=document
if(this.frames) en = this.frameStartLevel
this.deftarget=self
}
if(!nowrite){
for(i=st;i<en;i++){
if(!bw.usedom) this.doc.write(c.l[i].str)
else if(i>0) this.body.appendChild(c.l[ i].app)
if(!this.frames) c.l[i].str=null
}}c.z=c.zIndex+2
for(i=st;i<en;i++){oc=0
if(i!=0){bobj=c.l[i].b = new cm_makeObj(c.name + "_"+i+"_0","",c.l[i].app,t his.doc); bobj.css.zIndex=c.z;
if(bw.dom) bobj.css.overflow='hidden' }; bx=c.l[i].borderX; by=c.l[i].borderY; c.l[i].max=0;
for(j=0;j<c.l[i].m.length; j++){
m = c.m[c.l[i].m[j]]; name=m.name; w=m.w; h=m.h; l=m.lev; no=m.nolink;
if(i>0){m.b = bobj; nest=i}
else{m.b = new cm_makeObj(c.name + "_"+name+"_0","",m.d1,this .doc); m.b.css.zIndex=c.z; m.b.clipTo(0,w+bx*2,h+by*2 ,0,1); nest=name}
id = c.name + "_"+name; nest=c.name + "_"+nest;
if(m.create){
o=m.o=new cm_makeObj(id,nest+"_0",m. d2,this.do c); o.z=o.css.zIndex=c.z+1; if(bw.reuse){c.l[l].o[oc]= o; oc++};
if(l==0&&m.img1) o.css.visibility='inherit' ; if(bw.op5) o.showIt(); o.arr=0;
}if(!bw.reuse||l==0) o.clipTo(0,w,h,0,1); o.moveIt(bx,by); o.z=o.css.zIndex=c.z+2
if(j<c.l[i].arnum){
c.l[i].arr[j]=new cm_makeObj(c.name+"_a"+i+" _"+j,nest+ "_0",nowri te?0:c.l[i ].arr[j],t his.doc)
c.l[i].arr[j].css.zIndex=c .z+30+j;
}else if(l==0&&m.arr==1){
o.arr=new cm_makeObj(id+"_a",nest+"_ 0",m.d3,th is.doc)
o.arr.moveIt(bx+m.w-c.l[i] .arrowWidt h-3,by+m.h /2-(c.l[i] .arrowHeig ht/2));
o.arr.css.zIndex=c.z+20;
}if(!no && !bw.reuse && !m.img1){
o.over=new cm_makeObj(c.name + "_"+name+"_1",nest+"_0"+". document.l ayers."+id ,"",this.d oc)
o.over.moveIt(0,0); o.over.hideIt(); o.over.clipTo(0,w,h,0,1); o.over.css.zIndex=c.z+3
img=new cm_makeObj(c.name + "_"+name+"_3",nest+"_0"+". document.l ayers."+id ,"",this.d oc); img.moveIt(0,0)
img.css.visibility="inheri t"; img.css.zIndex=c.z+4; if(bw.op5) img.showIt()
}c.z++;
}
}
if(fromframe){
c.chkscroll = function(){
if (bw.ie&&!bw.ie6) this.scrollY=this.body.scr ollTop;
else if (bw.ie6 || bw.op7){
if (this.doc.compatMode && document.compatMode != "BackCompat") this.scrollY=this.doc.docu mentElemen t.scrollTo p
else this.scrollY=this.body.scr ollTop
}else this.scrollY=this.deftarge t.pageYOff set;
}
}
}
/**Onmouseout**/
makeCM.prototype.mout = function(){
var c = this; clearTimeout(c.tim); c.isover = 0; var f="if(!"+c.name+".isover)" +c.name+". hidesub()"
if(!c.closeOnClick) c.tim = setTimeout(f,c.wait)
else{
if(bw.ns4){ document.captureEvents("Ev ent.MOUSED OWN"); document.onmousedown=new Function(f)}
else document.onclick=new Function(f);
if(this.frames){
if(bw.ns4){this.doc.captur eEvents("E vent.MOUSE DOWN"); this.doc.onmousedown=new Function(f)}
else this.doc.onclick=new Function(f)
}
}
}
/**Constructing and initiating top items and bar**/
makeCM.prototype.construct =function( nowrite){
var c=this; if(!c.l[0]||c.l[0].m.lengt h==0) return cm_message('No menus defined');
if(!nowrite){for(var i=1;i<c.l.length;i++){c.l[ i].str+="< /div>"}}
c.makeObjects(nowrite); cmpage = new cm_page();
var mpa,o,maxw=c.maxw,maxh=c.m axh,i,totw =c.totw,to th=c.toth, m,px=c.pxB etween
var bx=c.l[0].borderX,by=c.l[0 ].borderY, x=c.fromLe ft,y=c.fro mTop,mp=c. menuPlacem ent,rows=c .rows
if(rows){toth=maxh+by*2; totw=totw-px+bx;}else{totw =maxw+bx*2 ; toth=toth-px+by;}
switch(mp){
case "center": x=cmpage.x2/2-totw/2; if(bw.ns4) x-=9; break;
case "right": x=cmpage.x2-totw; break;
case "bottom": case "bottomcenter": y=cmpage.y2-toth; if(mp=="bottomcenter") x=cmpage.x2/2-totw/2; break;
default: if(mp.toString().indexOf(" ,")>-1) mpa=1; break;
}for(var i=0;i<c.l[0].m.length;i++) {
m = c.m[c.l[0].m[i]]; o = m.b; if(mpa) rows?x=cm_cp(mp[i]):y=cm_c p(mp[i],0, 0,1);
o.moveIt(x,y); o.showIt(); if(m.arr) m.o.arr.showIt(); o.oy=y;
if(!mpa) rows?x+=m.w+px+bx:y+=m.h+p x+by
}if(c.useBar==1){ //Background-Bar
var bbx=c.barBorderX,bby=c.bar BorderY;
var bar1=c.bar1= new cm_makeObj(c.name+'bbar_0' ,c.name+'b bar',nowri te?0:c.bar 1,document )
var bar=c.bar= new cm_makeObj(c.name+'bbar',' ',nowrite? 0:c.bar,do cument); bar.css.zIndex=c.zIndex+1
var barx=c.barX=="menu"?c.m[c. l[0].m[0]] .b.x-bbx:c m_cp(c.bar X,1);
var bary=c.barY=="menu"?c.m[c. l[0].m[0]] .b.y-bby:c m_cp(c.bar Y);
var barw=c.barWidth=="menu"?to tw:cm_cp(c .barWidth, 1,bbx*2);
var barh=c.barHeight=="menu"?t oth:cm_cp( c.barHeigh t,0,bby*2) ;
bar1.clipTo(0,barw,barh,0, 1); bar1.moveIt(bbx,bby); bar1.showIt();
bar.clipTo(0,barw+bbx*2,ba rh+bby*2,0 ,1); bar.moveIt(barx,bary); bar.showIt();
}if(c.resizeCheck){ //Window resize code
if(bw.ns4||bw.op5||bw.op6) setTimeout ('window.o nresize=ne w Function("'+c.name+'.resiz ed()")',50 0)
else window.onresize=new Function(c.name+".resized( )")
c.resized=cm_resized; if(bw.op5||bw.op6) document.onmousemove=new Function(c.name+".resized( )")
}if(c.onconstruct) eval(c.onconstruct) //onconstruct event
c.constructed = 1
return true
}
/**Capturing resize**/
var cm_inresize=0
function cm_resized(){
if(cm_inresize) return
page2=new cm_page(); var off=(bw.op6||bw.op5)?20:5
if(page2.x2<cmpage.x2-off || page2.y2<cmpage.orgy-off || page2.x2>cmpage.x2+off || page2.y2>cmpage.orgy+off){
if(bw.ie||bw.ns6||bw.op7|| bw.ns4){
cmpage=page2; this.isresized=1;
if(this.onresize) eval(this.onresize); this.construct(1);
if(this.onafterresize) eval(this.onafterresize);
}else{cm_inresize=1; location.reload()}
}
}
/**Onclick of an item**/
makeCM.prototype.onclck=fu nction(m){
m = this.m[m]
if(m.onclck) eval(m.onclck);
if(this.openOnClick && m.subs.length>0){
this.clicked = 1; this.showsub(m.name); return
}
var lnk=m.lnk, targ=m.targ
if(lnk){
if(lnk.indexOf("mailto")!= 0 && lnk.indexOf("http")!=0) lnk=this.root+lnk
if(String(targ)=="undefine d" || targ=="" || targ==0 || targ=="_self"){
if(this.frames){ //Turning of all level 1 + vars
if(this.l[0].a){
this.m[this.l[0].a].active (0,1)
this.l[0].a =0
}
for(i=this.frameStartLevel ;i<this.l. length;i++ ){
if(this.l[i].b){
this.l[i].b.hideIt()
this.l[i].b = null
for(j=0;j<this.l[i].m.leng th;j++){
this.m[this.l[i].m[j]].b = null;
}
}
}
this.isover=0
}
this.deftarget.location.hr ef=lnk
}
else if(targ=="_blank") window.open(lnk)
else if(targ=="_top" || targ=="window") top.location.href=lnk
else if(top[targ]) top[targ].location.href=ln k
else if(parent[targ]) parent[targ].location.href =lnk
}else return false
}
oCMenu.makeMenu('m71','m71
oCMenu.makeMenu('m297','m7
oCMenu.makeMenu('m298','m7
oCMenu.makeMenu('m351','m7
oCMenu.makeMenu('m352','m7
oCMenu.makeMenu('m72','m72
oCMenu.makeMenu('m75','m72
oCMenu.makeMenu('m299','m7
oCMenu.makeMenu('m79','m72
oCMenu.makeMenu('m325','m7
oCMenu.makeMenu('m80','m80
oCMenu.makeMenu('m297','m8
oCMenu.makeMenu('m82','m80
oCMenu.makeMenu('m322','m8
oCMenu.makeMenu('m321','m8
company, disciplines and The Project should be in horizontal menu. Web and test should be vertically displayed from disciplines and call corresponding horizontal Web - link 1, test - link 2.
Home Test & Who should be vertically displayed from The Project. Who should display Our People and Who are we.
Here is the full javascript called menu.js that is included in my asp page.
/*Browsercheck object*/
function cm_bwcheck(){
this.ver=navigator.appVers
this.agent=navigator.userA
this.dom=document.getEleme
this.ns4=(!this.dom && document.layers)?1:0;
this.op=window.opera
this.moz=(this.agent.index
this.ie=this.agent.indexOf
if(this.op){
this.op5=(this.agent.index
this.op6=(this.agent.index
this.op7=this.dom&&!this.o
}else if(this.moz) this.ns6 = 1
else if(this.ie){
this.ie4 = !this.dom && document.all
this.ie5 = (this.agent.indexOf("msie 5")>-1)
this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1)
this.ie6 = this.dom && !this.ie4 && !this.ie5 && ! this.ie55
}
this.mac=(this.agent.index
this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6 || this.op7)
this.usedom= this.ns6||this.op7//Use dom creation
this.reuse = this.ie||this.op7||this.us
this.px=this.dom&&!this.op
return this
}
var bw=new cm_bwcheck()
/*Variable declaration*/
var cmpage
/*Crossbrowser objects functions*/
function cm_message(txt){alert(txt)
function cm_makeObj(obj,nest,o,doc)
if(!doc) doc=document
if(bw.usedom&&o) this.evnt=o
else{nest=(!nest) ? "doc.":'doc.layers.'+nest+
this.evnt=bw.dom? doc.getElementById(obj):
bw.ie4?doc.all[obj]:bw.ns4
}
if(!this.evnt) return cm_message('The layer does not exist ('+obj+')'
+'- \nIf your using Netscape please check the nesting of your tags (on the entire page)\nNest:'+nest)
this.css=bw.dom||bw.ie4?th
this.ref=bw.dom||bw.ie4?do
this.obj = obj + "Object"; eval(this.obj + "=this");
this.x=0; this.y=0; this.w=0; this.h=0; this.vis=0; return this
}
cm_makeObj.prototype.moveI
cm_makeObj.prototype.showI
cm_makeObj.prototype.hideI
cm_makeObj.prototype.clipT
this.w=r; this.h=b; if(bw.ns4){this.css.clip.t
}else{if(t<0)t=0;if(r<0)r=
if(setwidth){if(bw.op5||bw
function cm_active(on,h){
if(this.o.arr) on?this.o.arr.hideIt():bw.
if(bw.reuse||bw.usedom){
if(!this.img2) this.o.evnt.className=on?t
else this.o.ref.images["img"+th
if(on && bw.ns6){this.o.hideIt(); this.o.css.visibility='inh
}else{
if(!this.img2){ if(on) this.o.over.showIt(); else this.o.over.hideIt();
}else this.o.ref.images["img"+th
}this.isactive=on?1:0
}
function cm_page(frame){
if(!frame) frame = self
this.x=0; this.x2 =(!bw.ie)?frame.innerWidth
this.y=0; this.orgy=this.y2= (!bw.ie)?frame.innerHeight
this.x50=this.x2/2; this.y50=this.y2/2; return this
}
/***check positions**/
function cm_cp(num,w,minus){
if(num){if(num.toString().
if(minus) num-=minus }else num=eval(num);} else num=0; return num
}
/**Level object**/
function cm_makeLevel(){
var c=this, a=arguments; c.width=a[0]||null; c.height=a[1]||null;
c.regClass=a[2]||null; c.overClass=a[3]||null; c.borderX=a[4]>-1?a[4]:nul
c.borderY=a[5]>-1?a[5]:nul
c.align=a[8]||null; c.offsetX=a[9]||null; c.offsetY=a[10]||null; c.arrow=a[11]||null;
c.arrowWidth=a[12]||null; c.arrowHeight=a[13]||null;
}
/***Making the main menu object**/
function makeCM(name){
var c=this; c.mc=0; c.name = name; c.m=new Array(); c.scrollY=-1; c.level=new Array(); c.l=new Array(); c.tim=100; c.isresized=0;
c.isover=0; c.zIndex=100; c.frameStartLevel=1; c.bar=0; c.z=0; c.totw=0; c.toth=0; c.maxw=0; c.maxh=0; cmpage = new cm_page(); c.constructed = 0;
return this
}//events
makeCM.prototype.onshow=""
/***Creating layers**/
function cm_divCreate(id,cl,txt,w,c
if(bw.usedom){var div=document.createElement
if(txt) div.innerHTML=txt; if(app){app.appendChild(di
if(w) document.body.appendChild(
}else{var dstr='<div id="'+id+'" class="'+cl+'"'
if(ex&&bw.reuse) dstr+=" "+ex; dstr+=">"+txt; ; if(txt2) dstr+=txt2;
if(c) dstr+='</div>'; if(w) document.write(dstr); else return dstr
}return ""
}
/***Getting layer string for each menu**/
function cm_getLayerStr(m,app,name,
var no=m.nolink,arrstr='',l=m.
if((!bw.reuse||l==0) && !no){
ev=' onmouseover="'+name+'.show
+' onmouseout="'+name+'.mout(
+' onclick="'+name+'.onclck(\
}
if(bw.reuse&&l!=0) txt=''; if(l==0) str+=d1=cm_divCreate(id+'_
if(l==0&&bw.usedom){
m.d2.onclick=new Function(name+'.onclck("'+
m.d1=d1;
m.d2.onmouseover=new Function(name+'.showsub("'
m.d2.onmouseout=new Function(name+'.mout("'+m.
}if(!bw.reuse && !m.img1 && !no){
str+=cm_divCreate(id+'_1',
str+=cm_divCreate(id+'_3',
}str+='</div>';
if(l==0){if(arrow)str+=m.d
str+="\n"; if(!bw.reuse){m.txt=null; m.d2=null; m.d3=null;}
if(bw.usedom){ if(l==0) document.body.appendChild(
return str
}
/***get align num from text (better to evaluate numbers later)**/
function cm_checkalign(a){
switch(a){
case "right": return 1; break; case "left": return 2; break;
case "bottom": return 3; break; case "top": return 4; break;
case "righttop": return 5; break; case "lefttop": return 6; break;
case "bottomleft": return 7; break; case "topleft": return 8; break;
}return null
}
/**Making each individual menu **/
makeCM.prototype.makeMenu=
var c = this; if(!name) name = c.name+""+c.mc; var p = parent!=""&&parent&&c.m[pa
if(c.mc==0){
if(bw.op7 && this.frames) bw.usedom=0
var tmp=location.href;
if(tmp.indexOf('file:')>-1
if(c.useBar){if(!c.barBord
c.bar = cm_divCreate(c.name+'bbar'
}}var create=1,img,arrow; var m = c.m[name] = new Object(); m.name=name; m.subs=new Array(); m.parent=p; m.arnum=0; m.arr=0
var l = m.lev = p?c.m[p].lev+1:0; c.mc++; m.hide=0;
if(l>=c.l.length){
var p1,p2=0; if(l>=c.level.length) p1=c.l[c.level.length-1];
else p1=c.level[l]; c.l[l]=new Array(); if(!p2) p2=c.l[l-1]
if(l!=0){ if(isNaN(p1.align)) p1["align"]=cm_checkalign(
for(var i in p1){if(i!="str"&&i!="m"){i
}else{c.l[l]=c.level[0]; c.l[l].align=cm_checkalign
c.l[l]["str"]=''; c.l[l].m=new Array(); if(!c.l[l].borderClass) c.l[l].borderClass=c.l[l].
c.l[l].app=0; c.l[l].max=0; c.l[l].arnum=0; c.l[l].o=new Array(); c.l[l].arr=new Array()
c.level[l]=p1=p2=null
if(l!=0) c.l[l].str=c.l[l].app=cm_d
}if(p){p = c.m[p]; p.subs[p.subs.length]=name
if(p.subs.length==1&&c.l[l
if(p.parent){c.m[p.parent]
if(c.m[p.parent].arnum>c.l
c.l[l-1].str+=c.l[l-1].arr
+'" width="'+c.l[l-1].arrowWid
}}}if(bw.reuse) if(p.subs.length>c.l[l].ma
}m.rows=rows>-1?rows:c.l[l
if(align) align=cm_checkalign(align)
m.targ=targ; m.cl2=cl2||c.l[l].overClas
m.onclck=onclick; m.active = cm_active; m.isactive=0; m.nolink=nolink
if(create) c.l[l].m[c.l[l].m.length]=
if(img1){m.img1 = new Image(); m.img1.src=c.root+img1; if(!img2) img2=img1; m.img2 = new Image(); m.img2.src=c.root+img2;
m.cl="clCMAbs"; m.txt=''; if(!bw.reuse&&!nolink) m.txt = '<a href="#" onmouseover="'+c.name+'.sh
m.txt+='<img alt="" src="'+c.root+img1+'" width="'+m.w+'" height="'+m.h+'" id="img'+m.name+'" '
if(bw.dom&&!nolink) m.txt+='style="cursor:poin
}else{m.img1=0; m.img2=0};
if(l==0||create) c.l[l].str+=cm_getLayerStr
if(l==0){if(m.w>c.maxw) c.maxw=m.w; if(m.h>c.maxh) c.maxh=m.h; c.totw+=c.pxBetween+m.w+c.
if(lnk && !onmouseover){
var path=lnk.indexOf("mailto:"
m.mover="self.status='"+pa
if(!m.mout) m.mout=""; m.mout+=";self.status='';"
}
}
/**Getting x/y coords for subs **/
makeCM.prototype.getcoords
var a=m.align; x+=m.o.x; y+=m.o.y
switch(a){
case 1: x+=m.w+bx; break; case 2: x-=maxw+bx; break;
case 3: y+=m.h+by; break; case 4: y-=maxh+by; break;
case 5: x-=maxw+bx; y-=maxh-m.h; break;
case 6: x+=m.w+bx; y-=maxh-m.h; break;
case 7: y+=m.h+by; x-=maxw-m.w; break;
case 8: y-=maxh+by; x-=maxw-m.w+bx; break;
}
if(m.lev==this.frameStartL
switch(a){
case 1: x=0; break;
case 2: x=this.cmpage.x2-maxw; break;
case 3: y=0; break;
case 4: y-=maxh+by; break;
case 5: x-=maxw+bx; y-=maxh-m.h; break;
case 6: x+=m.w+bx; y-=maxh-m.h; break;
case 7: y+=m.h+by; x-=maxw-m.w; break;
case 8: y-=maxh+by; x-=maxw-m.w+bx; break;
}
}
m.subx=x + ox; m.suby=y + oy
}
/**Showing sub elements**/
makeCM.prototype.showsub=f
var c=this,pm=c.m[el],m,o,nl
if(!pm.b||(c.isresized&&pm
clearTimeout(c.tim);
var ln=pm.subs.length,l=pm.lev
if(c.l[pm.lev].a==el&&l!=c
c.hidesub(l,el); if(pm.mover) eval(pm.mover); if(!pm.isactive) pm.active(1);
c.l[pm.lev].a = el; if(ln==0) return;
if(c.openOnClick && !c.clicked) return
if(!c.l[l].b) return
var b = c.l[l].b, bx=c.l[l].borderX, by=c.l[l].borderY, rows=pm.rows
var rb=c.l[l].roundBorder;
var x=bx+rb,y=by+rb,maxw=0,max
for(var i=0;i<c.l[l].m.length;i++)
if(!bw.reuse) m=c.m[c.l[l].m[i]]
else m=c.m[c.m[el].subs[i]]
if(m && m.parent==el&&!m.hide){
if(!bw.reuse) o=m.o; else o=m.o=c.l[l].o[i]
if(x!=o.x||y!=o.y) o.moveIt(x,y); nl=m.subs.length
if(bw.reuse){
if(o.w!=m.w || o.h!=m.h) o.clipTo(0,m.w,m.h,0,1)
if(o.evnt.className!=m.cl)
m.isactive=0; o.evnt.className=m.cl
if(bw.ns6){o.hideIt(); o.css.visibility='inherit'
}if(bw.ie6) b.showIt()
o.evnt.innerHTML=m.txt; if(bw.ie6) b.hideIt()
if(!m.nolink){
o.evnt.onmouseover=new Function(c.name+".showsub(
o.evnt.onmouseout=new Function(c.name+".mout('"+
o.evnt.onclick=new Function(c.name+".onclck('
if(o.oldcursor){o.css.curs
}else{o.evnt.onmouseover='
}if(m.arr){o.arr=c.l[l].ar
o.arr.css.visibility="inhe
if(!rows){y+=m.h+by; if(m.w>maxw) maxw=m.w; maxh=y}
else{x+=m.w+bx; if(m.h>maxh) maxh=m.h; maxw=x;}
o.css.visibility="inherit"
}else{o = c.m[c.l[l].m[i]].o; o.hideIt();} }
if(!rows) maxw+=bx*2+rb; else maxh+=by*2+rb;
if(rb){maxw+=rb; maxh+=rb}
b.clipTo(0,maxw,maxh,0,1)
if(c.chkscroll) c.chkscroll()
if(c.chkscroll||!pm.subx||
x=pm.subx; if(c.chkscroll&&l==c.frame
}
makeCM.prototype.hidesub=f
var c = this,tmp,m,i,j,hide
if(!l) {l=1; hide=1; c.clicked=0}
for(i=l-1;i<c.l.length;i++
if(i>0&&i>l-1) if(c.l[i].b) c.l[i].b.hideIt()
if(c.l[i].a&&c.l[i].a!=el)
m=c.m[c.l[i].a]; m.active(0,1); if(m.mout) eval(m.mout); c.l[i].a=0
if(i>0&&i>l-1) if(bw.op5||bw.op6) for(j=0;j<c.l[i].m.length;
}if(i>l){for(j=0;j<c.l[i-1
}if(hide&&c.onhide) eval(c.onhide)
}
makeCM.prototype.makeObjec
var c = this,oc,name,bx,by,w,h,l,n
if(fromframe){
st = this.frameStartLevel
this.body = fromframe.document.body
this.doc = fromframe.document
this.deftarget=fromframe
this.cmpage = new cm_page(fromframe)
}else{
this.body=document.body
this.doc=document
if(this.frames) en = this.frameStartLevel
this.deftarget=self
}
if(!nowrite){
for(i=st;i<en;i++){
if(!bw.usedom) this.doc.write(c.l[i].str)
else if(i>0) this.body.appendChild(c.l[
if(!this.frames) c.l[i].str=null
}}c.z=c.zIndex+2
for(i=st;i<en;i++){oc=0
if(i!=0){bobj=c.l[i].b = new cm_makeObj(c.name + "_"+i+"_0","",c.l[i].app,t
if(bw.dom) bobj.css.overflow='hidden'
for(j=0;j<c.l[i].m.length;
m = c.m[c.l[i].m[j]]; name=m.name; w=m.w; h=m.h; l=m.lev; no=m.nolink;
if(i>0){m.b = bobj; nest=i}
else{m.b = new cm_makeObj(c.name + "_"+name+"_0","",m.d1,this
id = c.name + "_"+name; nest=c.name + "_"+nest;
if(m.create){
o=m.o=new cm_makeObj(id,nest+"_0",m.
if(l==0&&m.img1) o.css.visibility='inherit'
}if(!bw.reuse||l==0) o.clipTo(0,w,h,0,1); o.moveIt(bx,by); o.z=o.css.zIndex=c.z+2
if(j<c.l[i].arnum){
c.l[i].arr[j]=new cm_makeObj(c.name+"_a"+i+"
c.l[i].arr[j].css.zIndex=c
}else if(l==0&&m.arr==1){
o.arr=new cm_makeObj(id+"_a",nest+"_
o.arr.moveIt(bx+m.w-c.l[i]
o.arr.css.zIndex=c.z+20;
}if(!no && !bw.reuse && !m.img1){
o.over=new cm_makeObj(c.name + "_"+name+"_1",nest+"_0"+".
o.over.moveIt(0,0); o.over.hideIt(); o.over.clipTo(0,w,h,0,1); o.over.css.zIndex=c.z+3
img=new cm_makeObj(c.name + "_"+name+"_3",nest+"_0"+".
img.css.visibility="inheri
}c.z++;
}
}
if(fromframe){
c.chkscroll = function(){
if (bw.ie&&!bw.ie6) this.scrollY=this.body.scr
else if (bw.ie6 || bw.op7){
if (this.doc.compatMode && document.compatMode != "BackCompat") this.scrollY=this.doc.docu
else this.scrollY=this.body.scr
}else this.scrollY=this.deftarge
}
}
}
/**Onmouseout**/
makeCM.prototype.mout = function(){
var c = this; clearTimeout(c.tim); c.isover = 0; var f="if(!"+c.name+".isover)"
if(!c.closeOnClick) c.tim = setTimeout(f,c.wait)
else{
if(bw.ns4){ document.captureEvents("Ev
else document.onclick=new Function(f);
if(this.frames){
if(bw.ns4){this.doc.captur
else this.doc.onclick=new Function(f)
}
}
}
/**Constructing and initiating top items and bar**/
makeCM.prototype.construct
var c=this; if(!c.l[0]||c.l[0].m.lengt
if(!nowrite){for(var i=1;i<c.l.length;i++){c.l[
c.makeObjects(nowrite); cmpage = new cm_page();
var mpa,o,maxw=c.maxw,maxh=c.m
var bx=c.l[0].borderX,by=c.l[0
if(rows){toth=maxh+by*2; totw=totw-px+bx;}else{totw
switch(mp){
case "center": x=cmpage.x2/2-totw/2; if(bw.ns4) x-=9; break;
case "right": x=cmpage.x2-totw; break;
case "bottom": case "bottomcenter": y=cmpage.y2-toth; if(mp=="bottomcenter") x=cmpage.x2/2-totw/2; break;
default: if(mp.toString().indexOf("
}for(var i=0;i<c.l[0].m.length;i++)
m = c.m[c.l[0].m[i]]; o = m.b; if(mpa) rows?x=cm_cp(mp[i]):y=cm_c
o.moveIt(x,y); o.showIt(); if(m.arr) m.o.arr.showIt(); o.oy=y;
if(!mpa) rows?x+=m.w+px+bx:y+=m.h+p
}if(c.useBar==1){ //Background-Bar
var bbx=c.barBorderX,bby=c.bar
var bar1=c.bar1= new cm_makeObj(c.name+'bbar_0'
var bar=c.bar= new cm_makeObj(c.name+'bbar','
var barx=c.barX=="menu"?c.m[c.
var bary=c.barY=="menu"?c.m[c.
var barw=c.barWidth=="menu"?to
var barh=c.barHeight=="menu"?t
bar1.clipTo(0,barw,barh,0,
bar.clipTo(0,barw+bbx*2,ba
}if(c.resizeCheck){ //Window resize code
if(bw.ns4||bw.op5||bw.op6)
else window.onresize=new Function(c.name+".resized(
c.resized=cm_resized; if(bw.op5||bw.op6) document.onmousemove=new Function(c.name+".resized(
}if(c.onconstruct) eval(c.onconstruct) //onconstruct event
c.constructed = 1
return true
}
/**Capturing resize**/
var cm_inresize=0
function cm_resized(){
if(cm_inresize) return
page2=new cm_page(); var off=(bw.op6||bw.op5)?20:5
if(page2.x2<cmpage.x2-off || page2.y2<cmpage.orgy-off || page2.x2>cmpage.x2+off || page2.y2>cmpage.orgy+off){
if(bw.ie||bw.ns6||bw.op7||
cmpage=page2; this.isresized=1;
if(this.onresize) eval(this.onresize); this.construct(1);
if(this.onafterresize) eval(this.onafterresize);
}else{cm_inresize=1; location.reload()}
}
}
/**Onclick of an item**/
makeCM.prototype.onclck=fu
m = this.m[m]
if(m.onclck) eval(m.onclck);
if(this.openOnClick && m.subs.length>0){
this.clicked = 1; this.showsub(m.name); return
}
var lnk=m.lnk, targ=m.targ
if(lnk){
if(lnk.indexOf("mailto")!=
if(String(targ)=="undefine
if(this.frames){ //Turning of all level 1 + vars
if(this.l[0].a){
this.m[this.l[0].a].active
this.l[0].a =0
}
for(i=this.frameStartLevel
if(this.l[i].b){
this.l[i].b.hideIt()
this.l[i].b = null
for(j=0;j<this.l[i].m.leng
this.m[this.l[i].m[j]].b = null;
}
}
}
this.isover=0
}
this.deftarget.location.hr
}
else if(targ=="_blank") window.open(lnk)
else if(targ=="_top" || targ=="window") top.location.href=lnk
else if(top[targ]) top[targ].location.href=ln
else if(parent[targ]) parent[targ].location.href
}else return false
}
It should work like this:
<%
connStr = "Provider=Microsoft.Jet.OL EDB.4.0; Data Source=" & Server.MapPath("db.mdb")
Set oConn = Server.CreateObject("ADODB .Connectio n")
oConn.Open(connStr)
strOuterSQL = "SELECT sectionid, Title, parentid From Sections Order by sectionid"
Set oRecordset = oConn.Execute(strOuterSQL)
Do While Not oRecordset.EOF
intSectionID = oRecordset("sectionid")
strTitle = oRecordset("Title")
strParentSection = "parent" & oRecordset("sectionid")
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
strInnerSQL = "Select fileid, title, sectionid From Files Where sectionid = " & intSectionID & " and Files.DLCId = 4"
Set oInnerRecordset = oConn.Execute(strInnerSQL)
Do While Not oInnerRecordset.EOF
strInnerTitle = oInnerRecordset("title")
strInnerPageLink = "mypage.asp?id=" & oInnerRecordset("fileid")
strChildSection = "child" & oInnerRecordset("fileid")
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & strParentSection & "','" & strInnerTitle & "','" & strPageLink & "')" & vbcrlf
oInnerRecordset.MoveNext
Loop
oRecordset.MoveNext
Loop
oConn.Close
Set oConn = Nothing
%>
<%
connStr = "Provider=Microsoft.Jet.OL
Set oConn = Server.CreateObject("ADODB
oConn.Open(connStr)
strOuterSQL = "SELECT sectionid, Title, parentid From Sections Order by sectionid"
Set oRecordset = oConn.Execute(strOuterSQL)
Do While Not oRecordset.EOF
intSectionID = oRecordset("sectionid")
strTitle = oRecordset("Title")
strParentSection = "parent" & oRecordset("sectionid")
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
strInnerSQL = "Select fileid, title, sectionid From Files Where sectionid = " & intSectionID & " and Files.DLCId = 4"
Set oInnerRecordset = oConn.Execute(strInnerSQL)
Do While Not oInnerRecordset.EOF
strInnerTitle = oInnerRecordset("title")
strInnerPageLink = "mypage.asp?id=" & oInnerRecordset("fileid")
strChildSection = "child" & oInnerRecordset("fileid")
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & strParentSection & "','" & strInnerTitle & "','" & strPageLink & "')" & vbcrlf
oInnerRecordset.MoveNext
Loop
oRecordset.MoveNext
Loop
oConn.Close
Set oConn = Nothing
%>
ASKER
Thank you, I think we are getting there. The menu is displayed horizontally with vertical dropdown, although vertical dropdown doesn't show their horizontal child menu . For example,
oCMenu.makeMenu('m72','m72 ','discipl ines','')
oCMenu.makeMenu('m75','m72 ','web','' )
oCMenu.makeMenu('m299','m7 5','link 1','mypage.asp?id=299')
oCMenu.makeMenu('m79','m72 ','test',' ')
oCMenu.makeMenu('m325','m7 9','link 2','mypage.asp?id=325')
Web and test should be vertically displayed from horizontal disciplines and web should display horizontal link 1, while test should display link 2.
Also, hyperlinks are not working for strPageLink. Is it because of
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & strParentSection & "','" & strInnerTitle & "','" & strPageLink & "')" & vbcrlf
Thanks.
oCMenu.makeMenu('m72','m72
oCMenu.makeMenu('m75','m72
oCMenu.makeMenu('m299','m7
oCMenu.makeMenu('m79','m72
oCMenu.makeMenu('m325','m7
Web and test should be vertically displayed from horizontal disciplines and web should display horizontal link 1, while test should display link 2.
Also, hyperlinks are not working for strPageLink. Is it because of
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & strParentSection & "','" & strInnerTitle & "','" & strPageLink & "')" & vbcrlf
Thanks.
ASKER
Hyperlinks are ok now, I have changed:
strPageLink to strInnerPageLink
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & strParentSection & "','" & strInnerTitle & "','" & strInnerPageLink & "')" & vbcrlf
Still trying to work out how to display:
disciplines
web
link 1 (as strInnerPageLink)
test
link 2 (as strInnerPageLink)
Web and test should be vertically displayed from horizontal disciplines and web should display horizontal link 1, while test should display link 2.
strPageLink to strInnerPageLink
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & strParentSection & "','" & strInnerTitle & "','" & strInnerPageLink & "')" & vbcrlf
Still trying to work out how to display:
disciplines
web
link 1 (as strInnerPageLink)
test
link 2 (as strInnerPageLink)
Web and test should be vertically displayed from horizontal disciplines and web should display horizontal link 1, while test should display link 2.
ASKER
Anyone out there???? I have managed to add strSubParentSection
strSubParentSection = "subparent" & oRecordset("sectionid")
If strParentSection = strSubParentSection then
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
Response.Write VBTab & "oCMenu.makeMenu('" & strSubParentSection & "','" & strParentSection & "','" & strTitle & "','')" & vbcrlf
else
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
End if
But now I have my strParentSection repeating, rather then displaying strSubParentSection.
For example, it should display my strParentSection (disciplines) and strSubParentSection (web) if it exists and it's strTitle, otherwise just display strParentSection and it's strTitle. I.E.
oCMenu.makeMenu('m72','m72 ','discipl ines','')
oCMenu.makeMenu('m75','m72 ','web','' )
oCMenu.makeMenu('m299','m7 5','link 1','mypage.asp?id=299')
oCMenu.makeMenu('m79','m72 ','test',' ')
oCMenu.makeMenu('m325','m7 9','link 2','mypage.asp?id=325')
strSubParentSection = "subparent" & oRecordset("sectionid")
If strParentSection = strSubParentSection then
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
Response.Write VBTab & "oCMenu.makeMenu('" & strSubParentSection & "','" & strParentSection & "','" & strTitle & "','')" & vbcrlf
else
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
End if
But now I have my strParentSection repeating, rather then displaying strSubParentSection.
For example, it should display my strParentSection (disciplines) and strSubParentSection (web) if it exists and it's strTitle, otherwise just display strParentSection and it's strTitle. I.E.
oCMenu.makeMenu('m72','m72
oCMenu.makeMenu('m75','m72
oCMenu.makeMenu('m299','m7
oCMenu.makeMenu('m79','m72
oCMenu.makeMenu('m325','m7
ASKER
I just increased the points for this question, as it is urgent.
So in plain English, let's translate this:
oCMenu.makeMenu('m71','m71 ','company ','') -------------------------- ----This is a parent item that is displayed on the main screen
oCMenu.makeMenu('m297','m7 1','missio n','mypage .asp?id=29 7')------- --This is the first child of the company that gets displayed only when the mouse is over 'company'
oCMenu.makeMenu('m298','m7 1','our process','mypage.asp?id=29 8')----Thi s is the second child of the company that gets displayed only when the mouse is over 'company'
oCMenu.makeMenu('m351','m7 1','link 1','mypage.asp?id=351')--- ---------T his is the first child of 'our process', that gets displayed only when the mouse is over 'our process'
oCMenu.makeMenu('m352','m7 1','link 2','mypage.asp?id=352')--- ---------T his is the second child of 'our process', that gets displayed only when the mouse is over 'our process'
Is that all correct? Is so, then I would think that the last two items (link 1 and link 2) should be pulled from a third database query based on the inner recordset. At a high level, it looks like you have this:
PARENT - Main Sections
--CHILD - Sub Sections
----GRANDCHILD - Sub Section of Sub Section
If that is the desired menu, then either you would have a third database table, another query, or at the very least something in that inner query that would allow to differentiate that an item is a grandchild rather than a child.
oCMenu.makeMenu('m71','m71
oCMenu.makeMenu('m297','m7
oCMenu.makeMenu('m298','m7
oCMenu.makeMenu('m351','m7
oCMenu.makeMenu('m352','m7
Is that all correct? Is so, then I would think that the last two items (link 1 and link 2) should be pulled from a third database query based on the inner recordset. At a high level, it looks like you have this:
PARENT - Main Sections
--CHILD - Sub Sections
----GRANDCHILD - Sub Section of Sub Section
If that is the desired menu, then either you would have a third database table, another query, or at the very least something in that inner query that would allow to differentiate that an item is a grandchild rather than a child.
ASKER
This is how it should be displayed:
oCMenu.makeMenu('m72','m72 ','discipl ines','') ---------This is a parent item that is displayed on the main screen
oCMenu.makeMenu('m75','m72 ','web','' ) )---------This is the first child of the disciplines that gets displayed only when the mouse is over 'disciplines'
oCMenu.makeMenu('m299','m7 5','link 1','mypage.asp?id=299')--- -----This is the first child of 'web', and grandchild of disciplines, that gets displayed when the mouse is moved over 'disciplines', then 'web'
oCMenu.makeMenu('m79','m72 ','test',' ')-------- -This is the second child of the disciplines that gets displayed only when the mouse is over 'disciplines'
oCMenu.makeMenu('m325','m7 9','link 2','mypage.asp?id=325')--- -----This is the first child of 'test', and grandchild of disciplines, that gets displayed when the mouse is moved over 'disciplines', then 'test'
Database contains 2 tables 'Files' and 'Sections'
'Files' table recordsets are:
FileId Title SectionId DLCId Online BaseFileId PreviousFileId
299 link 1 75 4 yes 0 0
325 link 2 79 4 yes 0 0
317 another 80 3 no 317 317
320 another 80 4 yes 317 317
etc..
'Section' table recordsets are:
SectionId Title ParentId BaseId
72 disciplines 0 0
75 web 72 72
79 test 72 72
80 another 0 0
81 anoher 1 80 80
82 another 2 81 80
etc....
I have tried several SQL statements, but it's just not working and I can figure it out what I'm doing wrong. I have also changed this to:
strOuterSQL = "SELECT sectionid, Title, parentid, online, BaseId From Sections where online=true Order by sectionid"
Set oRecordset = oConn.Execute(strOuterSQL)
Do While Not oRecordset.EOF
intSectionID = oRecordset("sectionid")
strTitle = oRecordset("Title")
strparentid = oRecordset("parentid")
strBaseId = oRecordset("BaseId")
stronline = oRecordset("online")
strParentSection = "parent" & oRecordset("sectionid")
strSubParentSection = "subparent" & oRecordset("sectionid")
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
If oRecordset("online") = true then
Response.Write VBTab & "oCMenu.makeMenu('" & strSubParentSection & "','" & strParentSection & "','" & strTitle & "','')" & vbcrlf
else
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
End if
HEEEELP....
oCMenu.makeMenu('m72','m72
oCMenu.makeMenu('m75','m72
oCMenu.makeMenu('m299','m7
oCMenu.makeMenu('m79','m72
oCMenu.makeMenu('m325','m7
Database contains 2 tables 'Files' and 'Sections'
'Files' table recordsets are:
FileId Title SectionId DLCId Online BaseFileId PreviousFileId
299 link 1 75 4 yes 0 0
325 link 2 79 4 yes 0 0
317 another 80 3 no 317 317
320 another 80 4 yes 317 317
etc..
'Section' table recordsets are:
SectionId Title ParentId BaseId
72 disciplines 0 0
75 web 72 72
79 test 72 72
80 another 0 0
81 anoher 1 80 80
82 another 2 81 80
etc....
I have tried several SQL statements, but it's just not working and I can figure it out what I'm doing wrong. I have also changed this to:
strOuterSQL = "SELECT sectionid, Title, parentid, online, BaseId From Sections where online=true Order by sectionid"
Set oRecordset = oConn.Execute(strOuterSQL)
Do While Not oRecordset.EOF
intSectionID = oRecordset("sectionid")
strTitle = oRecordset("Title")
strparentid = oRecordset("parentid")
strBaseId = oRecordset("BaseId")
stronline = oRecordset("online")
strParentSection = "parent" & oRecordset("sectionid")
strSubParentSection = "subparent" & oRecordset("sectionid")
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
If oRecordset("online") = true then
Response.Write VBTab & "oCMenu.makeMenu('" & strSubParentSection & "','" & strParentSection & "','" & strTitle & "','')" & vbcrlf
else
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strTitle & "','')" & vbcrlf
End if
HEEEELP....
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
peterxlane, thanks for your help. I think I am getting somewhere with your advice, but still can not figure out why this code still not running properly. I have increased the points again, can you please get back to me, as I am tumbling in the dark now.
This is the latest code:
'-------START OF PARENT LOOP---------'
strParentSQL = "SELECT sectionid, Title, parentid From Sections WHERE ParentID = 0 Order by sectionid"
Set oParentRecordset = oConn.Execute(strParentSQL )
Do While Not oParentRecordset.EOF
intParentSectionID = oParentRecordset("sectioni d")
strParentTitle = oParentRecordset("Title")
intParentID = oParentRecordset("parentid ")
strParentSection = "parent" & oParentRecordset("sectioni d")
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strParentTitle & "','')" & vbcrlf
'-------START OF ParentCHILD LOOP---------'
strParentChildSQL = "Select fileid, title, sectionid From Files Where sectionid = " & intParentSectionID & " and Files.DLCId = 4 and online= -1"
Set oParentChildRecordset = oConn.Execute(strParentChi ldSQL)
Do While Not oParentChildRecordset.EOF
intParentChildSectionID = oParentChildRecordset("sec tionid")
intParentChildFileID = oParentChildRecordset("fil eid")
strParentChildTitle = oParentChildRecordset("tit le")
strParentChildSection = "parentchild" & intParentChildSectionID
strParentChildPageLink = "mypage.asp?id=" & intParentChildFileID
If intParentSectionID = intParentChildSectionID then
Response.Write VBTab & "oCMenu.makeMenu('" & strParentChildSection & "','" & strParentChildTitle & "','" & strParentChildPageLink & "')" & vbcrlf
else
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & strParentSection & "','" & strChildTitle & "','')" & vbcrlf
end if
'''''''''''''''''''''''''' '''''''''' '''''''''' '''''''''' ''''
'-------START OF CHILD LOOP---------'
strChildSQL = "SELECT sectionid, Title, parentid From Sections WHERE ParentID = " & intParentSectionID & " Order by sectionid"
Set oChildRecordset = oConn.Execute(strChildSQL)
Do While Not oChildRecordset.EOF
strChildTitle = oChildRecordset("title")
intChildSectionID = oChildRecordset("sectionid ")
strChildSection = "child" & intChildSectionID
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & strParentSection & "','" & strChildTitle & "','')" & vbcrlf
'-------START OF GRANDCHILD LOOP---------'
strGrandChildSQL = "Select fileid, title, sectionid From Files Where sectionid = " & intChildSectionID & " and Files.DLCId = 4 and online= -1"
Set oGrandChildRecordset = oConn.Execute(strGrandChil dSQL)
Do While Not oGrandChildRecordset.EOF
intGrandChildSectionID = oGrandChildRecordset("sect ionid")
intGrandChildFileID = oGrandChildRecordset("file id")
strGrandChildTitle = oGrandChildRecordset("titl e")
strGrandChildSection = "grandchild" & intGrandChildSectionID
strGrandChildPageLink = "mypage.asp?id=" & intGrandChildFileID
Response.Write VBTab & VBTab & "oCMenu.makeMenu('" & strGrandChildSection & "','" & strChildSection & "','" & strGrandChildTitle & "','" & strGrandChildPageLink & "')" & vbcrlf
oGrandChildRecordset.MoveN ext
Loop
oGrandChildRecordset.Close
'-------END OF GRANDCHILD LOOP---------'
oChildRecordset.MoveNext
Loop
oChildRecordset.Close
'-------END OF CHILD LOOP---------'
'''''''''''''''''''''''''' '''''''''' '''''''''' '''''''''' ''''
oParentChildRecordset.Move Next
Loop
oParentChildRecordset.Clos e
'-------END OF ParentCHILD LOOP---------'
oParentRecordset.MoveNext
Loop
oParentRecordset.Close
'-------END OF PARENT LOOP---------'
Displaying:
oCMenu.makeMenu('parent71' ,'','compa ny','')
oCMenu.makeMenu('parentchi ld71','mis sion','myp age.asp?id =297')
oCMenu.makeMenu('parentchi ld71','our process','mypage.asp?id=29 8')
oCMenu.makeMenu('parentchi ld71','mis sion','myp age.asp?id =306')
oCMenu.makeMenu('parentchi ld71','mis sion','myp age.asp?id =309')
oCMenu.makeMenu('parentchi ld71','our process','mypage.asp?id=31 0')
oCMenu.makeMenu('parentchi ld71','mis sion','myp age.asp?id =314')
oCMenu.makeMenu('parentchi ld71','lin k 1','mypage.asp?id=351')
oCMenu.makeMenu('parentchi ld71','lin k 2','mypage.asp?id=352')
oCMenu.makeMenu('parentchi ld71','lin k 2','mypage.asp?id=353')
oCMenu.makeMenu('parentchi ld71','lin k 1','mypage.asp?id=354')
oCMenu.makeMenu('parent72' ,'','disci plines','' )
oCMenu.makeMenu('parent73' ,'','portf olio library','')
oCMenu.makeMenu('parent77' ,'','secti on','')
oCMenu.makeMenu('parentchi ld77','tek ','mypage. asp?id=364 ')
oCMenu.makeMenu('parent80' ,'','The Project','')
oCMenu.makeMenu('parentchi ld80','Hom e test','mypage.asp?id=320')
oCMenu.makeMenu('child81', 'parent80' ,'Project Management','')
oCMenu.makeMenu('child82', 'parent80' ,'Who?','' )
oCMenu.makeMenu('grandchil d82','chil d82','Who are we','mypage.asp?id=321')
oCMenu.makeMenu('grandchil d82','chil d82','Our People','mypage.asp?id=322 ')
oCMenu.makeMenu('child83', 'parent80' ,'Technica l','')
oCMenu.makeMenu('child84', 'parent80' ,'Solution s','')
oCMenu.makeMenu('child85', 'parent80' ,'Products ','')
oCMenu.makeMenu('child86', 'parent80' ,'Enterpri se','')
oCMenu.makeMenu('child87', 'parent80' ,'Contact Us','')
oCMenu.makeMenu('child88', 'parent80' ,'Area','' )
oCMenu.makeMenu('child118' ,'parent80 ','test stuff','')
oCMenu.makeMenu('parentchi ld80','Hel lo','mypag e.asp?id=3 59')
oCMenu.makeMenu('child81', 'parent80' ,'Project Management','')
oCMenu.makeMenu('child82', 'parent80' ,'Who?','' )
oCMenu.makeMenu('grandchil d82','chil d82','Who are we','mypage.asp?id=321')
oCMenu.makeMenu('grandchil d82','chil d82','Our People','mypage.asp?id=322 ')
oCMenu.makeMenu('child83', 'parent80' ,'Technica l','')
oCMenu.makeMenu('child84', 'parent80' ,'Solution s','')
oCMenu.makeMenu('child85', 'parent80' ,'Products ','')
oCMenu.makeMenu('child86', 'parent80' ,'Enterpri se','')
oCMenu.makeMenu('child87', 'parent80' ,'Contact Us','')
oCMenu.makeMenu('child88', 'parent80' ,'Area','' )
oCMenu.makeMenu('child118' ,'parent80 ','test stuff','')
oCMenu.makeMenu('parent119 ','','Anot her Service','')
Problems:
1. Parent72 and parent73 are not showing their children and grandchildren
2. Child81 & Child82 is repeated
3. The menu is created but is not displayed on the page
4. If there are more recordsets in the database, rather then just 3 dynamic levels, how can I add them to the menu
Cheers.
This is the latest code:
'-------START OF PARENT LOOP---------'
strParentSQL = "SELECT sectionid, Title, parentid From Sections WHERE ParentID = 0 Order by sectionid"
Set oParentRecordset = oConn.Execute(strParentSQL
Do While Not oParentRecordset.EOF
intParentSectionID = oParentRecordset("sectioni
strParentTitle = oParentRecordset("Title")
intParentID = oParentRecordset("parentid
strParentSection = "parent" & oParentRecordset("sectioni
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strParentTitle & "','')" & vbcrlf
'-------START OF ParentCHILD LOOP---------'
strParentChildSQL = "Select fileid, title, sectionid From Files Where sectionid = " & intParentSectionID & " and Files.DLCId = 4 and online= -1"
Set oParentChildRecordset = oConn.Execute(strParentChi
Do While Not oParentChildRecordset.EOF
intParentChildSectionID = oParentChildRecordset("sec
intParentChildFileID = oParentChildRecordset("fil
strParentChildTitle = oParentChildRecordset("tit
strParentChildSection = "parentchild" & intParentChildSectionID
strParentChildPageLink = "mypage.asp?id=" & intParentChildFileID
If intParentSectionID = intParentChildSectionID then
Response.Write VBTab & "oCMenu.makeMenu('" & strParentChildSection & "','" & strParentChildTitle & "','" & strParentChildPageLink & "')" & vbcrlf
else
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & strParentSection & "','" & strChildTitle & "','')" & vbcrlf
end if
''''''''''''''''''''''''''
'-------START OF CHILD LOOP---------'
strChildSQL = "SELECT sectionid, Title, parentid From Sections WHERE ParentID = " & intParentSectionID & " Order by sectionid"
Set oChildRecordset = oConn.Execute(strChildSQL)
Do While Not oChildRecordset.EOF
strChildTitle = oChildRecordset("title")
intChildSectionID = oChildRecordset("sectionid
strChildSection = "child" & intChildSectionID
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & strParentSection & "','" & strChildTitle & "','')" & vbcrlf
'-------START OF GRANDCHILD LOOP---------'
strGrandChildSQL = "Select fileid, title, sectionid From Files Where sectionid = " & intChildSectionID & " and Files.DLCId = 4 and online= -1"
Set oGrandChildRecordset = oConn.Execute(strGrandChil
Do While Not oGrandChildRecordset.EOF
intGrandChildSectionID = oGrandChildRecordset("sect
intGrandChildFileID = oGrandChildRecordset("file
strGrandChildTitle = oGrandChildRecordset("titl
strGrandChildSection = "grandchild" & intGrandChildSectionID
strGrandChildPageLink = "mypage.asp?id=" & intGrandChildFileID
Response.Write VBTab & VBTab & "oCMenu.makeMenu('" & strGrandChildSection & "','" & strChildSection & "','" & strGrandChildTitle & "','" & strGrandChildPageLink & "')" & vbcrlf
oGrandChildRecordset.MoveN
Loop
oGrandChildRecordset.Close
'-------END OF GRANDCHILD LOOP---------'
oChildRecordset.MoveNext
Loop
oChildRecordset.Close
'-------END OF CHILD LOOP---------'
''''''''''''''''''''''''''
oParentChildRecordset.Move
Loop
oParentChildRecordset.Clos
'-------END OF ParentCHILD LOOP---------'
oParentRecordset.MoveNext
Loop
oParentRecordset.Close
'-------END OF PARENT LOOP---------'
Displaying:
oCMenu.makeMenu('parent71'
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('parent72'
oCMenu.makeMenu('parent73'
oCMenu.makeMenu('parent77'
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('parent80'
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('child81',
oCMenu.makeMenu('child82',
oCMenu.makeMenu('grandchil
oCMenu.makeMenu('grandchil
oCMenu.makeMenu('child83',
oCMenu.makeMenu('child84',
oCMenu.makeMenu('child85',
oCMenu.makeMenu('child86',
oCMenu.makeMenu('child87',
oCMenu.makeMenu('child88',
oCMenu.makeMenu('child118'
oCMenu.makeMenu('parentchi
oCMenu.makeMenu('child81',
oCMenu.makeMenu('child82',
oCMenu.makeMenu('grandchil
oCMenu.makeMenu('grandchil
oCMenu.makeMenu('child83',
oCMenu.makeMenu('child84',
oCMenu.makeMenu('child85',
oCMenu.makeMenu('child86',
oCMenu.makeMenu('child87',
oCMenu.makeMenu('child88',
oCMenu.makeMenu('child118'
oCMenu.makeMenu('parent119
Problems:
1. Parent72 and parent73 are not showing their children and grandchildren
2. Child81 & Child82 is repeated
3. The menu is created but is not displayed on the page
4. If there are more recordsets in the database, rather then just 3 dynamic levels, how can I add them to the menu
Cheers.
ASKER
peterxlane I couldn't do it without you, thanks.... but I have managed to find the answer:
'-------START OF PARENT LOOP---------'
strParentSQL = "SELECT sectionid, Title, parentid From Sections WHERE ParentID = 0 Order by sectionid"
Set oParentRecordset = oConn.Execute(strParentSQL )
Do While Not oParentRecordset.EOF
intParentSectionID = oParentRecordset("sectioni d")
strParentTitle = oParentRecordset("Title")
strParentSection = "section" & oParentRecordset("sectioni d")
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strParentTitle & "','')" & vbcrlf
'-------START OF CHILD LOOP---------'
rem strChildSQL = "SELECT sectionid, Title, parentid From Sections WHERE sectionid = " & intParentSectionID & " Order by sectionid"
strChildSQL = "SELECT sectionid, Title, parentid From Sections S WHERE sectionid = " & intParentSectionID & " and (Exists (Select S1.SectionId From Sections S1 Where S1.ParentId = S.SectionId) Or Exists (Select F.FileId From Files F Where F.SectionId= S.SectionId and DLCId = 4 and OnLine = true))"
Set oChildRecordset = dbConn.Execute(strChildSQL )
Do While Not oChildRecordset.EOF
strChildTitle = oChildRecordset("title")
intChildSectionID = oChildRecordset("sectionid ")
strChildSection = "section" & intChildSectionID
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & "section" & oChildRecordset("ParentId" ) & "','" & strChildTitle & "','')" & vbcrlf
'-------START OF GRANDCHILD LOOP---------'
strGrandChildSQL = "Select fileid, title, sectionid, online, From Files Where sectionid = " & intChildSectionID & " and DLCId = 4 and online = true order by title, MajorVersion Desc"
Set oGrandChildRecordset = dbConn.Execute(strGrandChi ldSQL)
oldTitle = ""
Do While Not oGrandChildRecordset.EOF
intGrandChildSectionID = oGrandChildRecordset("sect ionid")
intGrandChildFileID = oGrandChildRecordset("file id")
strGrandChildTitle = oGrandChildRecordset("titl e")
strGrandChildSection = "grandchild" & intGrandChildFileID
strGrandChildPageLink = "mypage.asp?id=" & intGrandChildFileID
if oldTitle <> strGrandChildTitle then
Response.Write VBTab & VBTab & "oCMenu.makeMenu('" & strGrandChildSection & "','" & strChildSection & "','" & strGrandChildTitle & "','" & strGrandChildPageLink & "')" & vbcrlf
oldTitle = strGrandChildTitle
end if
oGrandChildRecordset.MoveN ext
Loop
''''oGrandChildRecordset.C lose
'-------END OF GRANDCHILD LOOP---------'
oChildRecordset.MoveNext
Loop
oChildRecordset.Close
'-------END OF CHILD LOOP---------'
'-------START OF GRANDCHILD LOOP FOR TOP LEVEL FOLDES ONLY---------'
strGrandChildSQL = "Select fileid, title, sectionid From Files Where sectionid = " & intParentSectionID & " and DLCId = 4 and online = true order by title Desc"
Set oGrandChildRecordset = dbConn.Execute(strGrandChi ldSQL)
oldTitle = ""
Do While Not oGrandChildRecordset.EOF
intGrandChildSectionID = oGrandChildRecordset("sect ionid")
intGrandChildFileID = oGrandChildRecordset("file id")
strGrandChildTitle = oGrandChildRecordset("titl e")
strGrandChildSection = "grandchild" & intGrandChildFileID 'intGrandChildSectionID User FileId for Grand Child name instead of section Id (Id must be unique)'
strGrandChildPageLink = "mypage.asp?id=" & intGrandChildFileID
if oldTitle <> strGrandChildTitle then
Response.Write VBTab & VBTab & "oCMenu.makeMenu('" & strGrandChildSection & "','" & "section" & intGrandChildSectionID & "','" & strGrandChildTitle & "','" & strGrandChildPageLink & "')" & vbcrlf
oldTitle = strGrandChildTitle
end if
oGrandChildRecordset.MoveN ext
Loop
'-------END OF GRANDCHILD LOOP FOR TOP LEVEL FOLDES ONLY---------'
oParentRecordset.MoveNext
Loop
oParentRecordset.Close
'-------END OF PARENT LOOP---------''
'-------START OF PARENT LOOP---------'
strParentSQL = "SELECT sectionid, Title, parentid From Sections WHERE ParentID = 0 Order by sectionid"
Set oParentRecordset = oConn.Execute(strParentSQL
Do While Not oParentRecordset.EOF
intParentSectionID = oParentRecordset("sectioni
strParentTitle = oParentRecordset("Title")
strParentSection = "section" & oParentRecordset("sectioni
Response.Write "oCMenu.makeMenu('" & strParentSection & "','','" & strParentTitle & "','')" & vbcrlf
'-------START OF CHILD LOOP---------'
rem strChildSQL = "SELECT sectionid, Title, parentid From Sections WHERE sectionid = " & intParentSectionID & " Order by sectionid"
strChildSQL = "SELECT sectionid, Title, parentid From Sections S WHERE sectionid = " & intParentSectionID & " and (Exists (Select S1.SectionId From Sections S1 Where S1.ParentId = S.SectionId) Or Exists (Select F.FileId From Files F Where F.SectionId= S.SectionId and DLCId = 4 and OnLine = true))"
Set oChildRecordset = dbConn.Execute(strChildSQL
Do While Not oChildRecordset.EOF
strChildTitle = oChildRecordset("title")
intChildSectionID = oChildRecordset("sectionid
strChildSection = "section" & intChildSectionID
Response.Write VBTab & "oCMenu.makeMenu('" & strChildSection & "','" & "section" & oChildRecordset("ParentId"
'-------START OF GRANDCHILD LOOP---------'
strGrandChildSQL = "Select fileid, title, sectionid, online, From Files Where sectionid = " & intChildSectionID & " and DLCId = 4 and online = true order by title, MajorVersion Desc"
Set oGrandChildRecordset = dbConn.Execute(strGrandChi
oldTitle = ""
Do While Not oGrandChildRecordset.EOF
intGrandChildSectionID = oGrandChildRecordset("sect
intGrandChildFileID = oGrandChildRecordset("file
strGrandChildTitle = oGrandChildRecordset("titl
strGrandChildSection = "grandchild" & intGrandChildFileID
strGrandChildPageLink = "mypage.asp?id=" & intGrandChildFileID
if oldTitle <> strGrandChildTitle then
Response.Write VBTab & VBTab & "oCMenu.makeMenu('" & strGrandChildSection & "','" & strChildSection & "','" & strGrandChildTitle & "','" & strGrandChildPageLink & "')" & vbcrlf
oldTitle = strGrandChildTitle
end if
oGrandChildRecordset.MoveN
Loop
''''oGrandChildRecordset.C
'-------END OF GRANDCHILD LOOP---------'
oChildRecordset.MoveNext
Loop
oChildRecordset.Close
'-------END OF CHILD LOOP---------'
'-------START OF GRANDCHILD LOOP FOR TOP LEVEL FOLDES ONLY---------'
strGrandChildSQL = "Select fileid, title, sectionid From Files Where sectionid = " & intParentSectionID & " and DLCId = 4 and online = true order by title Desc"
Set oGrandChildRecordset = dbConn.Execute(strGrandChi
oldTitle = ""
Do While Not oGrandChildRecordset.EOF
intGrandChildSectionID = oGrandChildRecordset("sect
intGrandChildFileID = oGrandChildRecordset("file
strGrandChildTitle = oGrandChildRecordset("titl
strGrandChildSection = "grandchild" & intGrandChildFileID 'intGrandChildSectionID User FileId for Grand Child name instead of section Id (Id must be unique)'
strGrandChildPageLink = "mypage.asp?id=" & intGrandChildFileID
if oldTitle <> strGrandChildTitle then
Response.Write VBTab & VBTab & "oCMenu.makeMenu('" & strGrandChildSection & "','" & "section" & intGrandChildSectionID & "','" & strGrandChildTitle & "','" & strGrandChildPageLink & "')" & vbcrlf
oldTitle = strGrandChildTitle
end if
oGrandChildRecordset.MoveN
Loop
'-------END OF GRANDCHILD LOOP FOR TOP LEVEL FOLDES ONLY---------'
oParentRecordset.MoveNext
Loop
oParentRecordset.Close
'-------END OF PARENT LOOP---------''
Sub readItemsFromDatabase
Dim db,q,sql,objRs,rsarr,rsarr
'The path to database:
db ="Provider=Microsoft.Jet.O
'/////// add these two lines
set adoConn = server.CreateObject("ADODB
adoConn.Open db
q = "SELECT sectionid, Title, parentid From Sections Order by sectionid"
Set objRs=Server.CreateObject(
Set sqlobjRs=Server.CreateObje
objRs.CacheSize = 25
objRs.CursorType = 3
objRs.LockType = 3
'Opening database --- --
objRs.Open q,db
Preece