Skripti http://oppe.admin.ut.ee/ained/tulemus/aine.asp kood
VÄRVIDE TÄHENDUSED
| |
Serveripoolne skript
|
| |
Kliendipoolne skript
|
| |
Link
|
| |
Include-lause
|
| |
Freimid
|
| |
Kommentaarid
|
| |
Objekti link
|
| |
HTML ja tavaline tekst
|
<%
'Tartu Ülikooli õppeaineregistri WWW-liides
'Autor: Aulis Sibola
'Juhendaja: Jaanus Pöial
'Õppeaine info.
'Kood edastatakse kas meetodiga GET (QUERY_STRING) või meetodiga
'POST (muutujas aine).
'Aine leitakse järgmise koodi järgi: TTII.OO.000
'TT - teaduskonna kood
'II - instituudi kood
'OO - õppetooli kood
'000 - aine number õppetoolis
'Viited eeldusainetele, õppekavadele (koos astmetega) ja õppeainetele.
%>
<!--#INCLUDE file="header.lisamine"-->
<%
'Kui küsitakse vale pikkusega koodi järgi:
if len(Request("aine")) <> 11 and len(Request.ServerVariables("QUERY_STRING")) <> 11 then
Response.Redirect("algus.asp")
end if
'Muutuja ainekood järgi otsitakse andmebaasist aine.
if len(Request("aine")) = 11 then
ainekood = Request("aine")
else
ainekood = Request.ServerVariables("QUERY_STRING")
end if
'Ülakoma (') pole aine koodis lubatud:
if InStr(ainekood,"'") then
Response.Redirect("algus.asp")
end if
'Õppeaasta arvutamine:%>
<!--#INCLUDE file="jooksevaasta.inc"-->
<%
JargmAasta = JooksevAasta + 1
'Ühenduse loomine:
Set yhendus = Server.CreateObject("ADODB.Connection")
'Andmebaasi avamine:
yhendus.Open "Aineregister"
'Aine leidmine tabelist DBA_Aine:
'Päringustring:
Paring = "select kood, teaduskond, instituut, oppetool, nr, maht, " & _
"keel, loengutunde, praksitunde, seminaritunde, " & _
"omatootunde, eksam, arvestus, algoppeaasta, " & _
"loppoppeaasta from DBA_Aine where " & _
"teaduskond = '" & mid(ainekood,1,2) & "' and " & _
"instituut = '" & mid(ainekood,3,2) & "' and " & _
"oppetool = '" & mid(ainekood,6,2) & "' and " & _
"nr = '" & mid(ainekood,9,3) & "'"
'päring andmebaasis:
Set yldinfo = yhendus.Execute(Paring)
'Kui sellist ainet ei leidu:
if yldinfo.EOF then
%>
<head>
<title>Vale kood</title>
</head>
<!--#INCLUDE file="body.htm"-->
<h2>Teie poolt sisestatud koodiga ainet ei leidu andmebaasis.</h2>
<!--#INCLUDE file="footer.htm"-->
<%
'Väljundi lõpetamine:
Response.End
else
%>
<head>
<title><%=yldinfo("teaduskond")&yldinfo("instituut")&"."&yldinfo("oppetool")&"."&yldinfo("nr")%></title>
</head>
<!--#INCLUDE file="body.htm"-->
<%
'Muutuja ainekood saab nüüd väärtuseks aine numbri (ID-kood) tabelis:
ainekood=yldinfo("kood")
end if
'Aine lõpetatuse kontroll (selle järgi väljastatakse toimumiskava ja
'õppejõudude ette teade):
eitoimu = false
'Kas aine on lõpetetud (võib olla ka jooksval
'õppeaastal ühekordne aine):
if Not(IsNull(yldinfo("loppoppeaasta"))) then
if yldinfo("algoppeaasta") = yldinfo("loppoppeaasta") then
if yldinfo("algoppeaasta") <> JooksevAasta then
eitoimu = true
end if
jargmaasta = yldinfo("algoppeaasta") + 1
Response.Write "<b><blink>NB! Ühekordne aine ("
Response.Write yldinfo("algoppeaasta") & "/" & jargmaasta
Response.Write " õa.)</blink></b>" & vbNewLine
else
eitoimu = true
Response.Write "<b><blink>NB! Aine on lõpetatud (alates "
Response.Write yldinfo("loppoppeaasta")
Response.Write ". a.)</blink></b>" & vbNewLine
end if
end if
'Aine nime selgitamine:
'Päringustring:
Paring = "select nimi, inimi from DBA_Tekst where " & _
"lõppaasta is null and aine = " & ainekood
'Päring andmebaasis:
Set nimed = yhendus.Execute(Paring)
'Aine nime(de) ja koodi väljastus:
%>
<p align=center>
<font size=+2><b><%=nimed("nimi")%></b></font>
<br>
<%if len(nimed("inimi")) > 0 then%>
(<%=nimed("inimi")%>)
<br>
<%end if%>
<%=yldinfo("teaduskond")&yldinfo("instituut")&"."&yldinfo("oppetool")&"."&yldinfo("nr")%>
<br>
</p>
<%
'Nimede päringu sulgemine:
nimed.close
'Kas maht on tundides või ainepunktides:
if yldinfo("loengutunde") + yldinfo("praksitunde") + yldinfo("seminaritunde") = yldinfo("maht") then
ainepunkt = "T"
elseif yldinfo("loengutunde") = 0 and yldinfo("praksitunde") = 0 and yldinfo("seminaritunde") = 0 and yldinfo("omatootunde") = yldinfo("maht") then
ainepunkt = "T"
else
ainepunkt = "AP"
end if
'Millised tunnid väljastada (kui tundide kohal on null, siis ei väljastata):
'Tundide vahele väljastatakse plussid, selleks on eraldi muutujad.
'Loengutunnid:
if yldinfo("loengutunde") > 0 then
prpluss = " + "
sempluss = " + "
omapluss = " + "
ltunde = yldinfo("loengutunde") & " L"
else
prpluss = ""
sempluss = ""
omapluss = ""
ltunde = ""
end if
'Praktikumitunnid:
if yldinfo("praksitunde") > 0 then
sempluss = " + "
omapluss = " + "
prtunde = prpluss & yldinfo("praksitunde") & " P"
else
prtunde = ""
end if
'Seminaritunnid:
if yldinfo("seminaritunde") > 0 then
omapluss = " + "
semtunde = sempluss & yldinfo("seminaritunde") & " S"
else
semtunde = ""
end if
'Iseseiseva töö tunnid:
if yldinfo("omatootunde") > 0 then
omatunde = omapluss & yldinfo("omatootunde") & " i"
else
omatootunde = ""
end if
'Mitu eksamit/arvestust on (väljastuse jaoks):
'Eksamid:
if yldinfo("eksam") > 1 then
if yldinfo("arvestus") > 0 then
exam = yldinfo("eksam") & " eksami ja "
else
exam = yldinfo("eksam") & " eksamiga"
end if
elseif yldinfo("eksam") = 1 then
if yldinfo("arvestus") > 0 then
exam = "eksami ja "
else
exam = "eksamiga"
end if
else
exam = ""
end if
'Arvestused:
if yldinfo("arvestus") > 1 then
arvestus = yldinfo("arvestus") & " arvestusega"
elseif yldinfo("arvestus") = 1 then
arvestus = "arvestusega"
else
arvestus = ""
end if
%>
<p align=right>
<%
'Kui üldse on eksameid/arvestusi, siis väljastatakse:
if yldinfo("eksam") > 0 or yldinfo("arvestus") > 0 then%>
Lõpeb <%=exam&arvestus%><br>
<%end if%>
Maht: <b><%=yldinfo("maht")&" "&ainepunkt%></b>
<%
'Kui mõni tundidest on suurem nullist, siis väljastatakse mahu jagunemine tundideks:
if yldinfo("loengutunde") > 0 or yldinfo("praksitunde") > 0 or yldinfo("seminaritunde") > 0 or yldinfo("omatootunde") > 0 then%>
<br>
(õppetöö: <%=ltunde&prtunde&semtunde&omatunde%>)
<%end if%>
</p>
<hr>
<ul type=square>
<%
'Aine toimumiskava leidmine andmebaasist
if eitoimu then
lugemine = false 'Kui aine on lõpetatud, siis ei loeta jooksval õa.
else
lugemine = true
'Päringustring:
Paring = "select alg, lopp, tyyp, loengutund, praksitund, " & _
"seminaritund, praksikohustus, seminarikohustus, " & _
"ref_arv, kt_arv, eksam, arvestus " & _
"from DBA_ajakava where " & _
"aine = " & ainekood & " and aasta = " & JooksevAasta
'Päring andmebaasis:
Set ajakava = yhendus.Execute(Paring)
'Kui ajakavas midagi pole, siis ainet ei loeta
if ajakava.EOF then
lugemine = false
end if
end if
'Aine lugejate selgitamine
'Päringustring:
Paring = "select amet, enimi, pnimi " & _
"from DBA_lektor, DBA_tavalugeja, DBA_amet " & _
"where DBA_lektor.kood = DBA_tavalugeja.lektor and " & _
"DBA_amet.nimi = DBA_lektor.amet and " & _
"(DBA_tavalugeja.aastani is Null or " & _
"DBA_tavalugeja.aastast = " & JooksevAasta & ") and " & _
"dba_tavalugeja.aine = " & ainekood & _
" order by DBA_amet.kood, DBA_lektor.sort"
'Päring andmebaasis:
Set lugejad = yhendus.Execute(Paring)
'Väljade üle lugemine:
recount = 0
do while not lugejad.EOF
recount = recount + 1
lugejad.MoveNext
loop 'do while not...
'Kui ainel on mõni lugeja, pöördutakse lugejate algusse:
if recount then lugejad.MoveFirst
'Lugevate õppejõudude väljastuse algus:
if not lugejad.EOF then
Response.Write "<li>"
if lugemine then
Response.Write JooksevAasta & "/" & JargmAasta & " õa. "
if recount = 1 then
Response.Write "loeb"
else
Response.Write "loevad:"
end if
end if
end if
'Õppejõudude väljastus:
count = 0 'Kontrollimaks, kas õppejõu järele kirjutada koma
do while not lugejad.EOF
count = count + 1
'Viide õppejõu ainetele:
link = "<a href=oppejoud.asp?eesnimi=" & _
Server.URLEncode(lugejad("enimi")) & "&perenimi=" & _
Server.URLEncode(lugejad("pnimi")) & "&otsing=eesjapere>"
Response.Write " " & vbNewLine & lugejad("amet") & " " & link & lugejad("enimi") & " " & _
lugejad("pnimi") & "</a>"
'Viimase õppejõu järele koma ei väljastata:
if count <> recount then
Response.Write ","
end if
lugejad.MoveNext
loop 'do while not...
Response.Write vbNewLine
'Lugejate päringu sulgemine:
lugejad.close
'Kas loetakse 'mitte-eesti keeles'. Kui jah, siis väljastatakse õppekeel:
if lugemine and yldinfo("keel") <> "eesti" then%>
<p><li><i>Ainet loetakse <%=yldinfo("keel")%> keeles.</i>
<%end if
'Üldise info päringu sulgemine:
yldinfo.close
Response.Write "<p>"
'Kuulajaskond koosneb kahest osast (aine on õppekavas kohustuslik ja mitte)
'Õppekavad, kus aine on kohustuslik
'Päringustring:
Paring = "select õppekava, aste from Kuulajaskond, DBA_aste " & _
"where Kuulajaskond.aine = " & ainekood & " and " & _
"Kuulajaskond.aste = DBA_aste.nimi and " & _
"Kuulajaskond.kohustus <> 0 and " & _
"(Kuulajaskond.õppekava is not null or " & _
"Kuulajaskond.aste is not null) " & _
"order by Kuulajaskond.õppekava, DBA_aste.kood"
'Päring andmebaasis:
Set kuulajad = yhendus.Execute(Paring)
'Väljade lugemine:
recount = 0
do while not kuulajad.EOF
recount = recount + 1
kuulajad.MoveNext
loop
'Kui mõni õppekava leidub, siis minnakse algusse tagasi:
if recount then kuulajad.MoveFirst
'Väljastus
'Kuna õppekavas võib ka astmeid olla, siis on vaja kontrollida eelmist
'õppekava. Selleks on muutuja eelkava. Muutuja count on koma väljastuse
'kontrollimiseks.
count = 0
eelkava = ""
if not kuulajad.EOF then%>
<li>Aine on kohustuslik järgmis(t)es õppekava(de)s (ja astme(te)s): <i><b>
<%end if
do while not kuulajad.EOF
count = count + 1
'Koolon väljastatakse kui õppekavaga kaasneb aste ja õppekava pole tühi:
if (kuulajad("aste") <> " ") And Not(IsNull(kuulajad("õppekava"))) then
koolon = ": "
else
koolon = ""
end if
'Viide õppekava ainetele:
kavlink = "<a href=oppekava.asp?oppekava=" & _
Server.URLEncode(kuulajad("õppekava")) & _
"&aste=&otsing=kava&kohus=molemad>"
'Viide astme ainetele (kõik õppekavad):
astlink = "<a href=oppekava.asp?oppekava=&aste=" & _
Server.URLEncode(kuulajad("aste")) & _
"&otsing=aste&kohus=molemad>"
'Viide õppekava konkreetse astme ainetele:
kavastlink = "<a href=oppekava.asp?oppekava=" & _
Server.URLEncode(kuulajad("õppekava")) & "&aste=" & _
Server.URLEncode(kuulajad("aste")) & _
"&otsing=kavajaaste&kohus=molemad>"
'Kui õppekava vahetub:
if eelkava <> kuulajad("õppekava") then
'Kui aste pole 'üldine', väljastatakse õppekava ja aste,
'muidu väljastatakse ainult õppekava:
if kuulajad("aste") <> " " then
Response.Write kavlink & kuulajad("õppekava") & "</a>" & _
koolon & kavastlink & kuulajad("aste") & "</a>"
else
Response.Write kavlink & kuulajad("õppekava") & "</a>"
end if
'Kui õppekava pole tühi, siis eelmine kava saab väärtuseks õppekava,
'muidu saab ta väärtuseks tühja stringi:
if not(IsNull(kuulajad("õppekava"))) then
eelkava = kuulajad("õppekava")
else
eelkava = ""
end if
'õppekava ei vahetu:
else
'Kui õppekava pole väljastatakse link astme ainetele, muidu
'õppekava astme ainetele:
if IsNull(kuulajad("õppekava")) then
Response.Write astlink
else
Response.Write kavastlink
end if
'Astme väljastus:
Response.Write kuulajad("aste") & "</a>"
end if 'õppekava vahetus
'Viimase õppekava (astme) korral ei väljastata koma:
if count <> recount then
Response.Write ", "
end if
kuulajad.MoveNext
loop 'tsükkel väljastuseks
'Kuulajate päringu sulgemine:
kuulajad.close
Response.Write vbNewLine & "</b></i>" & vbNewLine
'Õppekavad, kus aine ei ole kohustuslik
'Päringustring:
Paring = "select õppekava, aste from Kuulajaskond, DBA_aste " & _
"where Kuulajaskond.aine = " & ainekood & " and " & _
"Kuulajaskond.aste = DBA_aste.nimi and " & _
"Kuulajaskond.kohustus = 0 and " & _
"(Kuulajaskond.õppekava is not null or " & _
"Kuulajaskond.aste is not null) " & _
"order by Kuulajaskond.õppekava, DBA_aste.kood"
'Päring andmebaasis:
Set kuulajad = yhendus.Execute(Paring)
'Väljade lugemine:
recount = 0
do while not kuulajad.EOF
recount = recount + 1
kuulajad.MoveNext
loop
if recount then kuulajad.MoveFirst
'Väljade lugemine:
recount = 0
do while not kuulajad.EOF
recount = recount + 1
kuulajad.MoveNext
loop
'Kui mõni õppekava leidub, siis minnakse algusse tagasi:
if recount then kuulajad.MoveFirst
'Väljastus
'Kuna õppekavas võib ka astmeid olla, siis on vaja kontrollida eelmist
'õppekava. Selleks on muutuja eelkava. Muutuja count on koma väljastuse
'kontrollimiseks.
count = 0
eelkava = ""
if not kuulajad.EOF then%>
<li>Aine on valikaine järgmis(t)es õppekava(de)s (ja astme(te)s): <i>
<%end if
do while not kuulajad.EOF
count = count + 1
'Koolon väljastatakse kui õppekavaga kaasneb aste ja õppekava pole tühi:
if (kuulajad("aste") <> " ") And Not(IsNull(kuulajad("õppekava"))) then
koolon = ": "
else
koolon = ""
end if
'Viide õppekava ainetele:
kavlink = "<a href=oppekava.asp?oppekava=" & _
Server.URLEncode(kuulajad("õppekava")) & _
"&aste=&otsing=kava&kohus=molemad>"
'Viide astme ainetele (kõik õppekavad):
astlink = "<a href=oppekava.asp?oppekava=&aste=" & _
Server.URLEncode(kuulajad("aste")) & _
"&otsing=aste&kohus=molemad>"
'Viide õppekava konkreetse astme ainetele:
kavastlink = "<a href=oppekava.asp?oppekava=" & _
Server.URLEncode(kuulajad("õppekava")) & "&aste=" & _
Server.URLEncode(kuulajad("aste")) & _
"&otsing=kavajaaste&kohus=molemad>"
'Kui õppekava vahetub:
if eelkava <> kuulajad("õppekava") then
'Kui aste pole 'üldine', väljastatakse õppekava ja aste,
'muidu väljastatakse ainult õppekava:
if kuulajad("aste") <> " " then
Response.Write kavlink & kuulajad("õppekava") & "</a>" & _
koolon & kavastlink & kuulajad("aste") & "</a>"
else
Response.Write kavlink & kuulajad("õppekava") & "</a>"
end if
'Kui õppekava pole tühi, siis eelmine kava saab väärtuseks õppekava,
'muidu saab ta väärtuseks tühja stringi:
if not(IsNull(kuulajad("õppekava"))) then
eelkava = kuulajad("õppekava")
else
eelkava = ""
end if
'õppekava ei vahetu:
else
'Kui õppekava pole väljastatakse link astme ainetele, muidu
'õppekava astme ainetele:
if IsNull(kuulajad("õppekava")) then
Response.Write astlink
else
Response.Write kavastlink
end if
'Astme väljastus:
Response.Write kuulajad("aste") & "</a>"
end if 'õppekava vahetus
'Viimase õppekava (astme) korral ei väljastata koma:
if count <> recount then
Response.Write ", "
end if
kuulajad.MoveNext
loop 'tsükkel väljastuseks
'Kuulajate päringu sulgemine:
kuulajad.close
Response.Write vbNenLine & "</i><p>" & vbNewLine
'Eeldusained
'Kohustuslikud:
'Päringustring:
Paring = "select teaduskond, instituut, oppetool, nr " & _
"from dba_aine, dba_eeldus where " & _
"dba_aine.kood = dba_eeldus.eeldusaine and " & _
"dba_eeldus.aine = " & ainekood & " and " & _
"dba_eeldus.tyyp <> 0 " & _
"order by teaduskond, instituut, oppetool, nr"
'Päring andmebaasis:
Set eeldus = yhendus.Execute(Paring)
'Väljade lugemine:
recount = 0
do while not eeldus.EOF
recount = recount + 1
eeldus.MoveNext
loop
'Kui mõni eeldusaine leidus, siis minnakse algusse tagasi:
if recount then eeldus.MoveFirst
'Väljastus:
'Alguse väljastus:
if not eeldus.EOF then
if recount = 1 then%>
<li>Kohustuslik eeldusaine:
<%else%>
<li>Kohustuslikud eeldusained:
<%end if
end if
'Ainete väljastus (koodid):
count = 0
do while not eeldus.EOF
count = count + 1
%><a href=aine.asp?<%=eeldus("teaduskond")&eeldus("instituut")&"."&eeldus("oppetool")&"."&eeldus("nr")%>><i><b><%=eeldus("teaduskond")&eeldus("instituut")&"."&eeldus("oppetool")&"."&eeldus("nr")%></b></i></a><%
'Viimase järel koma ei väljastata:
if count <> recount then
Response.Write ", " & vbNewLine
end if
eeldus.MoveNext
Loop 'tsükkel
'Eeldusainete päringu sulgemine:
eeldus.close
'Soovituslikud:
'Päringustring:
Paring = "select teaduskond, instituut, oppetool, nr " & _
"from dba_aine, dba_eeldus where " & _
"dba_aine.kood = dba_eeldus.eeldusaine and " & _
"dba_eeldus.aine = " & ainekood & " and " & _
"dba_eeldus.tyyp = 0 " & _
"order by teaduskond, instituut, oppetool, nr"
'Päring andmebaasis:
Set eeldus = yhendus.Execute(Paring)
'Väljade lugemine:
recount = 0
do while not eeldus.EOF
recount = recount + 1
eeldus.MoveNext
loop
'Kui mõni eeldusaine leidus, siis minnakse algusse tagasi:
if recount then eeldus.MoveFirst
'Väljastus:
'Alguse väljastus:
if not eeldus.EOF then
if recount = 1 then%>
<li>Soovituslik eeldusaine:
<%else%>
<li>Soovituslikud eeldusained:
<%end if
end if
'Ainete väljastus:
count = 0
do while not eeldus.EOF
count = count + 1
%><a href=aine.asp?<%=eeldus("teaduskond")&eeldus("instituut")&"."&eeldus("oppetool")&"."&eeldus("nr")%>><i><%=eeldus("teaduskond")&eeldus("instituut")&"."&eeldus("oppetool")&"."&eeldus("nr")%></i></a><%
'Viimase aine järel koma ei väljastata:
if count <> recount then
Response.Write ", " & vbNewLine
end if
eeldus.MoveNext
Loop 'tsükkel
'Eeldusainete päringu sulgemine:
eeldus.close
'Annotatsioon
'Päringustring:
Paring = "select annotatsioon from dba_sisu where " & _
"aine = " & ainekood & " and lopetus is Null"
'Päring andmebaasis:
Set sisu = yhendus.Execute(Paring)
'Väljastus:
%>
</ul>
<%=sisu("annotatsioon")%>
<%
'Annotatsiooni päringu sulgemine:
sisu.close
'Kui aine võib toimuda (pole lõpetatud), siis on ajakavaga vaja tegeleda:
if not eitoimu then%>
<hr>
<%
'Kui ajakava puudub, siis aine ei toimu sel aastal:
if ajakava.EOF then%>
<font size=+1><b>!</b></font> <%=JooksevAasta&"/"&JargmAasta%> õa. ei toimu
<%else
'Ajakava väljastatakse tabelisse:
Response.Write "<table>" & vbNewLine
Response.Write "<tr><td>Toimumiskava " & Jooksevaasta & "/" & JargmAasta & " õa.:</td>" & vbNewLine
'Väljastus:
count = 0
do while not ajakava.EOF
count = count + 1
'Esimesse ritta väljastati esimesse lahtrisse ülalpool, teistes
'ridades jääb see lahter tühjaks:
if count > 1 then
Response.Write "<tr><td></td>" & vbNewLine
end if
'Toimumise aeg:
'Kui aine on tavaline (tüüp N), siis rakendatakse funktsiooni nadalad:
if ajakava("tyyp") = "N" then
Response.Write "<td>" & nadalad(ajakava("alg"),ajakava("lopp")) & "</td>" & vbNewLine
'Korduva aine korral (tüüp K) rakendatakse funktsiooni korduv:
elseif ajakava("tyyp") = "K" then
Response.Write "<td>" & korduv(ajakava("lopp")) & "</td>" & vbNewLine
'Kui ajakava pole teada (tüüp U) rakendatakse funktsiooni kuu:
elseif ajakava("tyyp") = "U" then
Response.Write "<td>" & kuu(ajakava("alg"),ajakava("lopp")) & "</td>" & vbNewLine
end if
'Nädalas loenguid, praktikume, seminare:
Response.Write "<td>" & nadal(ajakava("loengutund"),ajakava("praksitund"),ajakava("seminaritund"),ajakava("praksikohustus"),ajakava("seminarikohustus")) & "</td>" & vbNewLine
'Kontrolltöid, referaate:
Response.Write "<td>" & kontroll(ajakava("kt_arv"),ajakava("ref_arv")) & "</td>" & vbNewLine
'Aine lõpeb (selles tsüklis) eksami/arvestusega:
Response.Write "<td>" & loppexam(ajakava("eksam"),ajakava("arvestus")) & "</td></tr>" & vbNewLine
ajakava.MoveNext
loop 'tsükkel
'Tabeli sulgemine:
Response.Write "</table>"
'Ajakava päringu sulgemine:
ajakava.close
end if 'ajakava.EOF
end if 'lõpetatuse kontroll
'Ühenduse sulgemine:
yhendus.close
'Ajakava jaoks funktsioonide faili sisselugemine:%>
<!--#INCLUDE file="toimumisfunc.inc"-->
<!--#INCLUDE file="footer.htm"-->