JSP, JavaScript or JSTL redirect command needed

I have written a page using jstl which checks to see if a user is logged in.
          At the moment it displays relevant info if logged in, or displays a link to
          the login page so the user can login. However i would like the user to be
          taken to the login page directly rather than have to click the link. i have
          seen a jsp command which looks like :<jsp:forward page="login.html /> but i
          cant get it to work. HELP PLEASE
          

          Change your login.html to login.jsp. If it does not work, post your code and error
          messages here.
          "Matt Beighton" <[email protected]> wrote:
          >I have written a page using jstl which checks to see if a user is logged
          >in.
          >At the moment it displays relevant info if logged in, or displays a link
          >to
          >the login page so the user can login. However i would like the user
          >to be
          >taken to the login page directly rather than have to click the link.
          >i have
          >seen a jsp command which looks like :<jsp:forward page="login.html />
          >but i
          >cant get it to work. HELP PLEASE
          >
          >
          >
          >
          

Similar Messages

  • Books needed for JSP,Javascript,EJB

    Hello frds,
    Any one can tell me ,is there any book on jsp,javascript which is available for free download.
    If any hardcopy book u know,then also let me know.
    This will be great help .Plz frd do reply at [email protected] also.
    Naresh

    CORE SERVLETS and JAVASERVER PAGES (TM)
    by Marty HallI've read this book cover to cover as well as bits and pieces from other books. THis is a good book and good starting point - it does however assume you are familiar with Java and HTML.

  • Are there known issues concerning double clicking in FF? We found bug 542068. Most of the issue we found have to do with Flash. Does it affect other applications (JSP/Javascript) too?

    Are there known issues concerning double clicking in FF? We found bug 542068. Most of the issue we found have to do with Flash. Does it affect other applications (JSP/Javascript) too?

    If there is a pattern of the application working up to Firefox 3.6.3 and not working starting with Firefox 3.6.4, there could be a problem with trying to communicate events between firefox.exe (which hosts pages) and plugin-container.exe (which hosts some plugins). You can tweak your settings to force plugins to run in firefox.exe to see whether this is the problem. This article has some background information on that:
    http://kb.mozillazine.org/Plugin-container_and_out-of-process_plugins
    ''Do you know if there are problems with Firefox 3.6 when you double click in a JSP/JAVA/Javascript application?''
    No, I don't know. Obviously I can't read every post here, but I haven't read about it before.
    Is it a stupid question to ask: why does that matter?? To fix the application to work in Firefox 3.6 and above, we need to see a page that works on other browsers and fails in Firefox. It doesn't need to be the whole application, just enough to demonstrate the problem so that if we solve it, then you can apply that learning back to your application.

  • Evaluation of excel formula to jsp/javascript

    hi,
    i am having one typical problem (this is returns on investment(ROI)based)i am having a formula in excel sheet that has to be implimented in jsp or java script. the inbuilt function in excel is NPV
    NPV($F$11,H19:Q19)+G19(it is like this in my formula bar)
    Syntax
    NPV(rate,value1,value2, ...) even some formula is given in the help
    can anybody help me how to calculate this using jsp/javascript and can give me the src code for this calculation.
    thanks in advance
    regards,
    srikanth

    Calculating the IRR is an iteration.
    You try different interest rates until the NPV is as close
    to 0 as you can get.
    To calculate the IRR you will need the following:
    (1) A starting point for the rate (the 'guess' argument in Excel)
    (2) Your cash flows array (the 'values' argument in Excel)
    You will also have to decide:
    (3) How many attempts to make before giving up.
    (4) How close to NPV = 0 is acceptable
    (5) How to increment the interest rate
    Now you make a loop.
    Calculate the NPV.
    If the NPV is > 0 try a higher rate.
    If the NPV is < 0 try a lower rate.
    If you are 'close enough' then return the rate.
    If you have exceeded your maximum attempts then return
    some value like 'not-a-number'

  • One JSP Coded in JSTL with an Action Link and a Form

    My JSP written in JSTL with an action link works fine. The checkboxes are well recognized ( I have a "form" specified in both the action mapping and form bean).
    <%@ page import="......common.pojo.user.User" %>
    <!-- Create a variable in scope called userRows from the Users object -->
    <c:set var="userRows" value="${requestScope.Users}" />
    <c:choose>
         <c:when test="${not empty userRows}">
              <!-- create a "user" object for each element in the userRows -->               
              <c:forEach var="user" items="${userRows}" varStatus="idx">
                      <c:choose>
                              <c:when test="${( idx.count+1 )%2==0}">
                                 <tr class="contentCell1">
                              </c:when>
                              <c:otherwise>
                                 <tr class="contentCell2">
                              </c:otherwise>
                      </c:choose>
                                           <td align="center">
                                                              <html-el:checkbox property="selectedUsers[${idx.index}].selected" />
                                                              <html-el:hidden property="selectedUsers[${idx.index}].id" value="${user.id}"/>
                                           </td>
                                           <td align="center"><c:out value="${user.createdByUserID}" /></td>
                                           <td align="center"><c:out value="${user.firstName}" /></td>
                                           <td align="center"><c:out value="${user.lastName}" /></td>
                             </tr>
              </c:forEach>
                        <tr>
                             <td colspan="6" align="left">
                                      <html-el:link action="/admin/selectUsers.do">Edit Selected Users</html-el:link>
                             </td>
                           </tr>
                   </table>
              </c:when>
              <c:otherwise>
                   <center><H1>No User Found.</H1></center>
              </c:otherwise>
         </c:choose>
    ......But, if I add another form (form B) with some textfield(s) and a submit button in between the opening <c:when ...> and <c:forEach ... > tag, I get the "runtime" JSP error: "cannot find bean: "org.apache.struts.taglib.html.BEAN" in any scope".
    The form B also works well. And varStatus="idx" and var="user" still work. The complaint points specifically to the <html-el:checkbox property="selectedUsers[${idx.index}].selected" />. The getter method for selectedUsers[0].selected can no longer be recognized:
    <%@ page import="......common.pojo.user.User" %>
    <!-- Create a variable in scope called userRows from the Users object -->
    <c:set var="userRows" value="${requestScope.Users}" />
    <c:choose>
         <c:when test="${not empty userRows}">
                                    <html-el:form action="/admin/findUsers.do">
                                               // many textfields and a submit button
                                    </html-el:form>
              <!-- create a "user" object for each element in the userRows -->               
              <c:forEach var="user" items="${userRows}" varStatus="idx">
                      <c:choose>
                              <c:when test="${( idx.count+1 )%2==0}">
                                 <tr class="contentCell1">
                              </c:when>
                              <c:otherwise>
                                 <tr class="contentCell2">
                              </c:otherwise>
                      </c:choose>
                                           <td align="center">
                                                              <html-el:checkbox property="selectedUsers[${idx.index}].selected" />
                                                              <html-el:hidden property="selectedUsers[${idx.index}].id" value="${user.id}"/>
                                           </td>
                                           <td align="center"><c:out value="${user.createdByUserID}" /></td>
                                           <td align="center"><c:out value="${user.firstName}" /></td>
                                           <td align="center"><c:out value="${user.lastName}" /></td>
                             </tr>
              </c:forEach>
                        <tr>
                             <td colspan="6" align="left">
                                      <html-el:link action="/admin/selectUsers.do">Edit Selected Users</html-el:link>
                             </td>
                           </tr>
                   </table>
              </c:when>
              <c:otherwise>
                   <center><H1>No User Found.</H1></center>
              </c:otherwise>
         </c:choose>
    ......

    Hi,
    your strtus config file looks like
    <form-beans >
    <form-bean name="manageAuditFindingsForm" type="com.lib.struts.form.ManageAuditFindingsForm" />
    </form-beans >
    <action
          attribute="manageAuditFindingsForm"
          input="/New.jsp"
          name="manageAuditFindingsForm"
          path="/manageauditfindings"
          scope="request"
          type="com.lib.struts.action.ManageAuditFindingsAction">
          <forward name="success" path="/AuditFindings.jsp" />
        </action>Thanks
    Edward

  • Is X-windows and GUI desktops supported on the ODA "engineered system" running a RAC database?  If it is, what is the yum command needed to install the X-windows, Gnome, and KDE package groups?

    Is X-windows and GUI desktops supported on the ODA "engineered system" running a RAC database?  If it is, what is the yum command needed to install the X-windows, Gnome, and KDE package groups?

    While I agree with the direction of the suggestions with installing packages for X-windows, we do not have a blanket 'apply any package' recommendation.
    In particular we do not support altering the kernel (although we do have exceptions which we review on a case by case basis).
    Basically, if the you want to alter functionality that would not impact core functionality you are usually fine.
    A good guideling is : The more dependencies that there are between the package / rpm you are considering using the higher the potential impact on functionality - meaning higher chance for problems
    Note: We do use VNC including Real and Tiger regularly , but we have no hard recommendation on how you may want to use X-windows. I have never seen a limitation other than comments on bugs
    or incompatibility within the X-window product itself with certain kernel levels.
    Patching may overwrite some packages that you may install, however,  _depending on packages/rpms added_ there is also the possibility that you will break existing functionality to the point
    that patching itself will fail ( we have already seen a few cases of this in which case the proper mitigation is to remove / roll-back any alterations to the ODA before patching, and then adding the packages/rpms
    back after the patching is completed.
    From what you are discussing the impact should be low without conflicts, but please consider the above, and if you have specific packages which you consider potential problems
    please create an SR so that we can review packages / rpms on an individual basis.
    Once again: the main criteria for not supporting rpms is regarding the kernel itself
    Chuck

  • TBridge must have at least one redirect command error!

    Hi there,
    Possibly this is a very dork question!, sorry I can't find the trick.
    We are connecting Tux8.0 and WLS7.0sp1 through WTC. and the following error is
    showed when trying to deployed WTCServer component. in the log file attached is
    showed that connecction is successfully established and the problem comes with
    Tbride.
    Any suggestions really very welcomed!
    Config info:
    <WTCServer Name="WTCServer" Targets="cfeserver">
    <WTCImport LocalAccessPoint="BEA2"
    Name="WTCImport-1044988984998"
    RemoteAccessPointList="S74DEMO" RemoteName="QUERYSAP"
    ResourceName="QUERYSAP"/>
    <WTCImport LocalAccessPoint="BEA2"
    Name="WTCImport-1044989017524"
    RemoteAccessPointList="S74DEMO"
    RemoteName="QUERYSICOM" ResourceName="QUERYSICOM"/>
    <WTCLocalTuxDom AccessPoint="BEA2" AccessPointId="BEA2"
    ConnectionPolicy="ON_STARTUP"
    NWAddr="//16.179.26.99:6550"
    Name="WTCLocalTuxDom-1044988580045"/>
    <WTCRemoteTuxDom AccessPoint="S74DEMO"
    AccessPointId="S74DEMO"
    ConnectionPolicy="ON_STARTUP" LocalAccessPoint="BEA2"
    NWAddr="//16.179.20.132:6540"
    Name="WTCRemoteTuxDom-1044988657236"/>
    <WTCResources FldTbl32Classes="fmls.cfemsgflds"
    Name="WTCResources-1044989048309"/>
    <WTCtBridgeGlobal
    JmsFactory="weblogic.jms.ConnectionFactory"
    JndiFactory="weblogic.jndi.WLInitialContextFactory"
    Name="WTCtBridgeGlobal-1044989083549"
    Transactional="NO"
    TuxFactory="tuxedo.services.TuxedoConnection"
    WlsErrorDestination="weblogic.jms.errorqueue">
    <WTCtBridgeRedirect Direction="JmsQ2TuxS"
    Name="WTCtBridgeRedirect-1044989289125"
    ReplyQ="weblogic.jms.replyq"
    SourceAccessPoint="BEA2"
    SourceName="weblogic.jms.ConsultaPedido"
    TargetAccessPoint="S74DEMO"
    TargetName="QUERYSAP" TranslateFML="FLAT"/>
    </WTCtBridgeGlobal>
    </WTCServer>
    Error:
    <Feb 11, 2003 12:31:11 PM CST> <Notice> <WebLogicServer> <000365> <Server state
    changed to RUNNING>
    <Feb 11, 2003 12:31:11 PM CST> <Notice> <WebLogicServer> <000360> <Server started
    in RUNNING mode>
    <Feb 11, 2003 12:50:41 PM CST> <Error> <WTC> <180047> <tBridge must have at least
    one redirect command>
    <Feb 11, 2003 12:50:41 PM CST> <Error> <WTC> <180115> <tBridge cannot parse the
    configuration MBeans: Failure: no tbridge redirect info defined>
    [wtcdebug.txt]

    Mauricio,
    I think this is an old console error in creating this mbean. The
    WTCtBridgeRedirect
    is mistakenly defined under the scope of the WTCtBridgeGlobal mbean
    where it should be at the same level(ie a child of the WTCServer mbean).
    The WTCService expects to find it as a child of the WTCServer mbean and
    throws the exeption when it doesn't see it.
    I think the fix is to edit the config.xml and move the termination for
    WTCtBridgeGlobal("</WTCtBridgeGlobal>") to before the declaration
    of the WTCtBridgeRedirect.
    Bob Finan
    Mauricio Del Moral wrote:
    Config info:
    WTCServer Name="WTCServer" Targets="cfeserver">
    <WTCImport LocalAccessPoint="BEA2"
    Name="WTCImport-1044988984998"
    RemoteAccessPointList="S74DEMO" RemoteName="QUERYSAP"
    ResourceName="QUERYSAP"/>
    <WTCImport LocalAccessPoint="BEA2"
    Name="WTCImport-1044989017524"
    RemoteAccessPointList="S74DEMO"
    RemoteName="QUERYSICOM" ResourceName="QUERYSICOM"/>
    <WTCLocalTuxDom AccessPoint="BEA2" AccessPointId="BEA2"
    ConnectionPolicy="ON_STARTUP"
    NWAddr="//16.179.26.99:6550"
    Name="WTCLocalTuxDom-1044988580045"/>
    <WTCRemoteTuxDom AccessPoint="S74DEMO"
    AccessPointId="S74DEMO"
    ConnectionPolicy="ON_STARTUP" LocalAccessPoint="BEA2"
    NWAddr="//16.179.20.132:6540"
    Name="WTCRemoteTuxDom-1044988657236"/>
    <WTCResources FldTbl32Classes="fmls.cfemsgflds"
    Name="WTCResources-1044989048309"/>
    <WTCtBridgeGlobal
    JmsFactory="weblogic.jms.ConnectionFactory"
    JndiFactory="weblogic.jndi.WLInitialContextFactory"
    Name="WTCtBridgeGlobal-1044989083549"
    Transactional="NO"
    TuxFactory="tuxedo.services.TuxedoConnection"
    WlsErrorDestination="weblogic.jms.errorqueue">
    <WTCtBridgeRedirect Direction="JmsQ2TuxS"
    Name="WTCtBridgeRedirect-1044989289125"
    ReplyQ="weblogic.jms.replyq"
    SourceAccessPoint="BEA2"
    SourceName="weblogic.jms.ConsultaPedido"
    TargetAccessPoint="S74DEMO"
    TargetName="QUERYSAP" TranslateFML="FLAT"/>
    </WTCtBridgeGlobal>
    </WTCServer>
    Error:
    <Feb 11, 2003 12:31:11 PM CST> <Notice> <WebLogicServer> <000365> <Server>state
    changed to RUNNING>
    <Feb 11, 2003 12:31:11 PM CST> <Notice> <WebLogicServer> <000360> <Server>startedin
    RUNNING mode>
    <Feb 11, 2003 12:50:41 PM CST> <Error> <WTC> <180047> <tBridge must have at least
    one redirect command>
    <Feb 11, 2003 12:50:41 PM CST> <Error> <WTC> <180115> <tBridge cannot parse the
    configuration MBeans: Failure: no tbridge redirect info defined>
    [att1.html]

  • JSP 2.0 JSTL in weblogic 8.1

    Has anyone successfully using JSP 2.0 & JSTL in weblogic 8.1? We built a project using tomcat 5 and work well. The problem is weblogic 8.1 does seem to support the code. Is there any work around? Thanks
              

              "Chi Mok" <[email protected]> wrote in message
              news:4028ea91$[email protected]..
              > Has anyone successfully using JSP 2.0 & JSTL in weblogic 8.1? We built a
              project using tomcat 5 and work well. The problem is weblogic 8.1 does seem
              to support the code. Is there any work around? Thanks
              WebLogic 8.1 doesnt support JSP2.0 & Servlet 2.4 (or any of the J2EE 1.4
              apis) The next version (an upcoming release) will support J2EE 1.4 and thus
              jsp20 + JSTL 1.1
              JSTL 1.0 and JSP1.2 gel pretty well on weblogic 81
              --Nagesh
              

  • Book for servlet 2.4, jsp 2.0 & JSTL 1.1 ?

    but i am looking book covering the topic servlet 2.4 , jsp 2.0, JSTL 1.1 in detail because i am looking for in depth knowledge of all the topics (specially JSP, EL, JSTL, Custom Tags)

    I think the best source would be the specification. Seriously, they are really well written ( especially for JSTL ).
    regards,
    Tuan

  • Unknown problem with JSP, JavaScript - Pls help

    Hi Friends,
    I am facing a strange problem. Explained it below. Kindly help me as it is really affecting my work. Thanks in advance.
    I am working on building a web application using jsp, servlet, ejb. the IDE used is WSAD 5.1.2.
    I have the below :
    1 JSP - Input page - for user input entry
    2. Java script1 - For all client side validations
    Java script2 - For handling the data submission to servlet (as selected by user)
    Javascript3 - Header & Menu Bar
    3 Servlet - This actually retrieves the values from the hidden parameters, sets them in session and redirects the control back to the jsp.
    Logic for one small iteration : Two drop downs are there. On selecting the first drop down the second drop down should be populated and the first drop down should display the user selected value.
    1. When the user selects the first drop down onchange() event gets fired which calls a method in the javascript.
    2. In the javascript I set the value of a hidden form field to the selected combo index and submit the form to the servlet
    3. In the servlet, I retrieve the hidden request parameter (Index),
    set the index in session. Do my business logic based on the value of the index. Set the collection (to be displayed) in second drop down in session.
    4. Send the response back to the JSP.
    5. In the JSP, we have a method which is called during the onload() event of the body
    6. This method sets the user selected values in appropriate controls(by taking from session)
    Problem faced: I have a javascript which creates the menu bar for my application and this i've included it in my jsp. I dont know whats wrong with this javascript, when it is commented out the page works perfectly fine. Both the user selected value and the collection are loaded exactly as expected. But when it is included the collection is loaded in the second drop down but the selected index of the first drop down is not set - the drop down gets reset to the default value.
    Also on body load of my jsp, I call a javascript method which sets the current date in one text field of my form. Even this is not working fine when I include this javascript. I don't see any script error in this javascript in my browser though. Strange but guess something basic :(
    I'm sure there is nothing to do with session. I've tried printing the entire flow. The Servlet sets the values correctly in session and they are also correctly available in the JSP page. The JSP also gets loaded with the user selected values but something happens on page load which clears the values to default.
    Am also confused in what way javascript is related to this, coz when I remove it things are working fine.
    Am really helpless here pls do the needful. any help is appreciated.
    Header.js [which includes the menu bar code]
    document.write("<!-- COMMON HEADER CODE -->")
    document.write("     <table id='mplPageHeader' cellspacing='0' cellpadding='2' border='0'>")
    document.write("          <tr> ")
    document.write("               <td rowspan='2' bgcolor='#FFFFFF' width='1%'>")
    document.write("                    <a href='http://www.web.com' target='_top'>")
    document.write("                         <img src='./images/ford.gif' alt='BLogistics' border='0'>")
    document.write("                    </a>     ")
    document.write("               </td>")
    document.write("               <td rowspan='2' class='appTitle' title='Mp' width='1%'>MP&L</td>")
    document.write("               <td class='appTitle' title='M R'>M R</td>")
    document.write("               <td class='pageIdentifier'>"+' '+"</td>");
    document.write("          </tr>")
    document.write("          <tr>")
    document.write("               <td class='pageTitle' nowrap></td>");
    document.write("               <td class='dateInfo' nowrap>Thu Jan 22 2004 12:24 PM</td>")
    document.write("          </tr>")
    document.write("     </table>")
    document.write("<!-- Display Menu Items -->")
    document.write("<div id='navigationMenu'>")
    document.write("     <script type='text/javascript' src='./javascript/MRmenuItem.js'></script>")
    document.write("     <script type='text/javascript' src='./javascript/menuScript.js'></script>")
    document.write("</div>")-------------------------------------------------------
    Menu Bar Code
    var AgntUsr=navigator.userAgent.toLowerCase();
    var AppVer=navigator.appVersion.toLowerCase();
    var DomYes=document.getElementById?1:0,NavYes=AgntUsr.indexOf("mozilla")!=-1&&AgntUsr.indexOf("compatible")==-1?1:0,ExpYes=AgntUsr.indexOf("msie")!=-1?1:0,Opr=AgntUsr.indexOf("opera")!=-1?1:0;
    var DomNav=DomYes&&NavYes?1:0,DomExp=DomYes&&ExpYes?1:0;
    var Nav4=NavYes&&!DomYes&&document.layers?1:0,Exp4=ExpYes&&!DomYes&&document.all?1:0;
    var MacCom=(AppVer.indexOf("mac")!= -1)?1:0,MacExp4=(MacCom&&AppVer.indexOf("msie 4")!= -1)?1:0,Mac4=(MacCom&&(Nav4||Exp4))?1:0;
    var Exp5=AppVer.indexOf("msie 5")!= -1?1:0,Fltr=(AppVer.indexOf("msie 6")!= -1||AppVer.indexOf("msie 7")!= -1)?1:0,MacExp5=(MacCom&&Exp5)?1:0,PosStrt=(NavYes||ExpYes)&&!Opr?1:0;
    var RmbrNow=null,FLoc,ScLoc,DcLoc,SWinW,SWinH,FWinW,FWinH,SLdAgnWin,FColW,SColW,DColW,RLvl=0,FrstCreat=1,Ldd=0,Crtd=0,IniFlg,AcrssFrms=1,FrstCntnr=null,CurOvr=null,CloseTmr=null,CntrTxt,TxtClose,ImgStr,ShwFlg=0,M_StrtTp=StartTop,M_StrtLft=StartLeft,StaticPos=0,LftXtra=DomNav?LeftPaddng:0,TpXtra=DomNav?TopPaddng:0,FStr="",M_Hide=Nav4?"hide":"hidden",M_Show=Nav4?"show":"visible",Par=MenuUsesFrames?parent:window,Doc=Par.document,Bod=Doc.body,Trigger=NavYes?Par:Bod;
    var Ztop=100,InitLdd=0,P_X=DomYes?"px":"";
    var OpnTmr=null;
    if(PosStrt){if(MacExp4||MacExp5)LdTmr=setInterval("ChckInitLd()",100);
              else{if(Trigger.onload)Dummy=Trigger.onload;
                   if(DomNav)Trigger.addEventListener("load",Go,false);
                   else Trigger.onload=Go}}
    function ChckInitLd(){
         InitLdd=(MenuUsesFrames)?(Par.document.readyState=="complete"&&Par.frames[FirstLineFrame].document.readyState=="complete"&&Par.frames[SecLineFrame].document.readyState=="complete")?1:0:(Par.document.readyState=="complete")?1:0;
         if(InitLdd){clearInterval(LdTmr);Go()}}
    function Dummy(){return}
    function CnclSlct(){return false}
    function RePos(){
         FWinW=ExpYes?FLoc.document.body.clientWidth:FLoc.innerWidth;
         FWinH=ExpYes?FLoc.document.body.clientHeight:FLoc.innerHeight;
         SWinW=ExpYes?ScLoc.document.body.clientWidth:ScLoc.innerWidth;
         SWinH=ExpYes?ScLoc.document.body.clientHeight:ScLoc.innerHeight;
         if(MenuCentered.indexOf("justify")!=-1&&FirstLineHorizontal){
              ClcJus();
              var P=FrstCntnr.FrstMbr,W=Menu1[5],a=BorderBtwnMain?NoOffFirstLineMenus+1:2,i;
              FrstCntnr.style.width=NoOffFirstLineMenus*W+a*BorderWidthMain+P_X;
              for(i=0;i<NoOffFirstLineMenus;i++){
                   P.style.width=W-(P.value.indexOf("<")==-1?LftXtra:0)+P_X;               
                   if(P.ai&&!RightToLeft)
                        P.ai.style.left=BottomUp?W-BorderColor-2+P_X:W-Arrws[4]-2+P_X;
                        P=P.PrvMbr
         StaticPos=-1;
         ClcRl();
         if(TargetLoc)ClcTrgt();ClcLft();ClcTp();
         PosMenu(FrstCntnr,StartTop,StartLeft);
         if(RememberStatus)StMnu()}
    function NavUnLdd(){Ldd=0;Crtd=0;SetMenu="0"}
    function UnLdd(){
         NavUnLdd();
         if(ExpYes){var M=FrstCntnr?FrstCntnr.FrstMbr:null;
              while(M!=null){if(M.CCn){MakeNull(M.CCn);M.CCn=null}
                   M=M.PrvMbr}}
         if(!Nav4){LdTmr=setInterval("ChckLdd()",100)}}
    function UnLddTotal(){MakeNull(FrstCntnr);FrstCntnr=RmbrNow=FLoc=ScLoc=DcLoc=SLdAgnWin=CurOvr=CloseTmr=Doc=Bod=Trigger=null}
    function MakeNull(P){
         var M=P.FrstMbr,Mi;
         while(M!=null){Mi=M;
              if(M.CCn){MakeNull(M.CCn);M.CCn=null}
              M.Cntnr=null;M=M.PrvMbr;Mi.PrvMbr=null;Mi=null}
         P.FrstMbr=null}
    function ChckLdd(){
         if(!ExpYes){if(ScLoc.document.body){clearInterval(LdTmr);Go()}}
         else if(ScLoc.document.readyState=="complete"){if(LdTmr)clearInterval(LdTmr);Go()}}
    function NavLdd(e){if(e.target!=self)routeEvent(e);if(e.target==ScLoc)Go()}
    function ReDoWhole(){if(AppVer.indexOf("4.0")==-1)Doc.location.reload();else if(SWinW!=ScLoc.innerWidth||SWinH!=ScLoc.innerHeight||FWinW!=FLoc.innerWidth||FWinH!=FLoc.innerHeight)Doc.location.reload()}
    function Go(){
         if(!Ldd&&PosStrt){
              BeforeStart();
              Crtd=0;Ldd=1;
              FLoc=MenuUsesFrames?parent.frames[FirstLineFrame]:window;
              ScLoc=MenuUsesFrames?parent.frames[SecLineFrame]:window;
              DcLoc=MenuUsesFrames?parent.frames[DocTargetFrame]:window;
              if(MenuUsesFrames){
                   if(!FLoc){FLoc=ScLoc;if(!FLoc){FLoc=ScLoc=DcLoc;if(!FLoc)FLoc=ScLoc=DcLoc=window}}
                   if(!ScLoc){ScLoc=DcLoc;if(!ScLoc)ScLoc=DcLoc=FLoc}
                   if(!DcLoc)DcLoc=ScLoc}
              if(FLoc==ScLoc)AcrssFrms=0;
              if(AcrssFrms)FirstLineHorizontal=MenuFramesVertical?0:1;
              FWinW=ExpYes?FLoc.document.body.clientWidth:FLoc.innerWidth;
              FWinH=ExpYes?FLoc.document.body.clientHeight:FLoc.innerHeight;
              SWinW=ExpYes?ScLoc.document.body.clientWidth:ScLoc.innerWidth;
              SWinH=ExpYes?ScLoc.document.body.clientHeight:ScLoc.innerHeight;
              FColW=Nav4?FLoc.document:FLoc.document.body;
              SColW=Nav4?ScLoc.document:ScLoc.document.body;
              DColW=Nav4?DcLoc.document:ScLoc.document.body;
              if(TakeOverBgColor){
                   if(ExpYes&&MacCom)FColW.style.backgroundColor=AcrssFrms?SColW.bgColor:DColW.bgColor;
                   else FColW.bgColor=AcrssFrms?SColW.bgColor:DColW.bgColor}
              if(MenuCentered.indexOf("justify")!=-1&&FirstLineHorizontal)ClcJus();
              if(FrstCreat||FLoc==ScLoc)FrstCntnr=CreateMenuStructure("Menu",NoOffFirstLineMenus,null);
              else CreateMenuStructureAgain("Menu",NoOffFirstLineMenus);
              ClcRl();
              if(TargetLoc)ClcTrgt();ClcLft();ClcTp();
              PosMenu(FrstCntnr,StartTop,StartLeft);
              IniFlg=1;Initiate();Crtd=1;
              SLdAgnWin=ExpYes?ScLoc.document.body:ScLoc;SLdAgnWin.onunload=Nav4?NavUnLdd:UnLdd;
              if(ExpYes)Trigger.onunload=UnLddTotal;
              Trigger.onresize=Nav4?ReDoWhole:RePos;
              AfterBuild();
              if(RememberStatus)StMnu();
              if(Nav4&&FrstCreat){Trigger.captureEvents(Event.LOAD);Trigger.onload=NavLdd}
              if(FrstCreat)Dummy();FrstCreat=0;
              if(MenuVerticalCentered=="static"&&!AcrssFrms)setInterval("KeepPos()",250)     }}
    function KeepPos(){
         var TS=ExpYes?FLoc.document.body.scrollTop:FLoc.pageYOffset;
         if(TS!=StaticPos){var FCSt=Nav4?FrstCntnr:FrstCntnr.style;
              FrstCntnr.OrgTop=StartTop+TS;FCSt.top=FrstCntnr.OrgTop+P_X;StaticPos=TS}}
    function ClcRl(){
         StartTop=M_StrtTp<1&&M_StrtTp>0?M_StrtTp*FWinH:M_StrtTp;
         StartLeft=M_StrtLft<1&&M_StrtLft>0?M_StrtLft*FWinW:M_StrtLft}
    function ClcJus(){
         var a=BorderBtwnMain?NoOffFirstLineMenus+1:2,Sz=Math.round((PartOfWindow*FWinW-a*BorderWidthMain)/NoOffFirstLineMenus),i,j;
         for(i=1;i<NoOffFirstLineMenus+1;i++){j=eval("Menu"+i);j[5]=Sz}
         StartLeft=0}
    function ClcTrgt(){
         var TLoc=Nav4?FLoc.document.layers[TargetLoc]:DomYes?FLoc.document.getElementById(TargetLoc):FLoc.document.all[TargetLoc];
         if(DomYes){while(TLoc){StartTop+=TLoc.offsetTop;StartLeft+=TLoc.offsetLeft;TLoc=TLoc.offsetParent}}
         else{StartTop+=Nav4?TLoc.pageY:TLoc.offsetTop;StartLeft+=Nav4?TLoc.pageX:TLoc.offsetLeft}}
    function ClcLft(){
         if(MenuCentered.indexOf("left")==-1){
              var Sz=FWinW-(!Nav4?parseInt(FrstCntnr.style.width):FrstCntnr.clip.width);
              StartLeft+=MenuCentered.indexOf("right")!=-1?Sz:Sz/2;
              if(StartLeft<0)StartLeft=0}}
    function ClcTp(){
         if(MenuVerticalCentered!="top"&&MenuVerticalCentered!="static"){
              var Sz=FWinH-(!Nav4?parseInt(FrstCntnr.style.height):FrstCntnr.clip.height);
              StartTop+=MenuVerticalCentered=="bottom"?Sz:Sz/2;
              if(StartTop<0)StartTop=0}}
    function PosMenu(Ct,Tp,Lt){
         RLvl++;
         var Ti,Li,Hi,Mb=Ct.FrstMbr,CStl=!Nav4?Ct.style:Ct,MStl=!Nav4?Mb.style:Mb,PadL=Mb.value.indexOf("<")==-1?LftXtra:0,PadT=Mb.value.indexOf("<")==-1?TpXtra:0,MWt=!Nav4?parseInt(MStl.width)+PadL:MStl.clip.width,MHt=!Nav4?parseInt(MStl.height)+PadT:MStl.clip.height,CWt=!Nav4?parseInt(CStl.width):CStl.clip.width,CHt=!Nav4?parseInt(CStl.height):CStl.clip.height,CCw,CCh,STp,SLt;
         var BRW=RLvl==1?BorderWidthMain:BorderWidthSub,BTWn=RLvl==1?BorderBtwnMain:BorderBtwnSub;
         if(RLvl==1&&AcrssFrms)!MenuFramesVertical?Tp=BottomUp?0:FWinH-CHt+(Nav4?MacCom?-2:4:0):Lt=RightToLeft?0:FWinW-CWt+(Nav4?MacCom?-2:4:0);
         if(RLvl==2&&AcrssFrms)!MenuFramesVertical?Tp=BottomUp?SWinH-CHt+(Nav4?MacCom?-2:4:0):0:Lt=RightToLeft?SWinW-CWt:0;
         if(RLvl==2){Tp+=VerCorrect;Lt+=HorCorrect}
         CStl.top=RLvl==1?Tp+P_X:0;Ct.OrgTop=Tp;
         CStl.left=RLvl==1?Lt+P_X:0;Ct.OrgLeft=Lt;
         if(RLvl==1&&FirstLineHorizontal){Hi=1;Li=CWt-MWt-2*BRW;Ti=0}
         else{Hi=Li=0;Ti=CHt-MHt-2*BRW}
         while(Mb!=null){
              MStl.left=Li+BRW+P_X;
              MStl.top=Ti+BRW+P_X;
              if(Nav4)Mb.CLyr.moveTo(Li+BRW,Ti+BRW);
              if(Mb.CCn){if(RightToLeft)CCw=Nav4?Mb.CCn.clip.width:parseInt(Mb.CCn.style.width);
                   if(BottomUp)CCh=Nav4?Mb.CCn.clip.height:parseInt(Mb.CCn.style.height);
                   if(Hi){STp=BottomUp?Ti-CCh:Ti+MHt+2*BRW;SLt=RightToLeft?Li+MWt-CCw:Li}
                   else{SLt=RightToLeft?Li-CCw+ChildOverlap*MWt+BRW:Li+(1-ChildOverlap)*MWt;
                        STp=RLvl==1&&AcrssFrms?BottomUp?Ti-CCh+MHt:Ti:BottomUp?Ti-CCh+(1-ChildVerticalOverlap)*MHt+2*BRW:Ti+ChildVerticalOverlap*MHt+BRW}
                   PosMenu(Mb.CCn,STp,SLt)}
              Mb=Mb.PrvMbr;
              if(Mb){     MStl=!Nav4?Mb.style:Mb;PadL=Mb.value.indexOf("<")==-1?LftXtra:0;
                   PadT=Mb.value.indexOf("<")==-1?TpXtra:0;
                   MWt=!Nav4?parseInt(MStl.width)+PadL:MStl.clip.width;
                   MHt=!Nav4?parseInt(MStl.height)+PadT:MStl.clip.height;
                   Hi?Li-=BTWn?(MWt+BRW):(MWt):Ti-=BTWn?(MHt+BRW):MHt}}
         status="Ready";RLvl--}
    function StMnu(){
         if(!Crtd)return;
         var i,Pntr=FrstCntnr,Str=ScLoc.SetMenu?ScLoc.SetMenu:"0";
         while(Str.indexOf("_")!=-1&&RememberStatus==1){
              i=Pntr.NrItms-parseInt(Str.substring(0,Str.indexOf("_")));
              Str=Str.slice(Str.indexOf("_")+1);
              Pntr=Pntr.FrstMbr;
              for(i;i;i--)Pntr=Pntr.PrvMbr;
              if(Nav4)Pntr.CLyr.OM();
              else Pntr.OM();
              Pntr=Pntr.CCn}
         i=Pntr.NrItms-parseInt(Str);
         Pntr=Pntr.FrstMbr;
         for(i;i;i--)Pntr=Pntr.PrvMbr;
         if(RmbrNow!=null){SetItem(RmbrNow,0);RmbrNow.Clckd=0}
         if(Pntr!=null){SetItem(Pntr,1);Pntr.Clckd=1;
         if(RememberStatus==1){if(Nav4)Pntr.CLyr.OM();else Pntr.OM()}}
         RmbrNow=Pntr;
         ClrAllChlds(FrstCntnr.FrstMbr);
         Rmbr(FrstCntnr)}
    function Initiate(){
         if(IniFlg&&Ldd){Init(FrstCntnr);IniFlg=0;if(RememberStatus)Rmbr(FrstCntnr);if(ShwFlg)AfterCloseAll();ShwFlg=0}}
    function Rmbr(CntPtr){
         var Mbr=CntPtr.FrstMbr,St;
         while(Mbr!=null){
              if(Mbr.DoRmbr){
                   HiliteItem(Mbr);
                   if(Mbr.CCn&&RememberStatus==1){St=Nav4?Mbr.CCn:Mbr.CCn.style;St.visibility=M_Show;Rmbr(Mbr.CCn)}
                   break}
              else Mbr=Mbr.PrvMbr}}
    function Init(CPt){
         var Mb=CPt.FrstMbr,MCSt=Nav4?CPt:CPt.style;
         RLvl++;MCSt.visibility=RLvl==1?M_Show:M_Hide;CPt.Shw=RLvl==1?1:0;
         while(Mb!=null){if(Mb.Hilite)LowItem(Mb);if(Mb.CCn)Init(Mb.CCn);Mb=Mb.PrvMbr}
         RLvl--}
    function ClrAllChlds(Pt){
         var PSt,Pc;
         while(Pt){if(Pt.Hilite){Pc=Nav4?Pt.CLyr:Pt;if(Pc!=CurOvr){LowItem(Pt)}
              if(Pt.CCn){PSt=Nav4?Pt.CCn:Pt.CCn.style;if(Pc!=CurOvr){PSt.visibility=M_Hide;Pt.CCn.Shw=0}ClrAllChlds(Pt.CCn.FrstMbr)}
              break}
         Pt=Pt.PrvMbr}}
    function SetItem(Pntr,x){while(Pntr!=null){Pntr.DoRmbr=x;Pntr=Nav4?Pntr.CLyr.Ctnr.Cllr:Pntr.Ctnr.Cllr}}
    function GoTo(){
         var HP=Nav4?this.LLyr:this;
         if(HP.Arr[1]){status="";LowItem(HP);IniFlg=1;Initiate();
              HP.Arr[1].indexOf("javascript:")!=-1?eval(HP.Arr[1]):DcLoc.location.href=BaseHref+HP.Arr[1]}}
    function HiliteItem(P){
         if(Nav4){     if(P.ro)P.document.images[P.rid].src=P.ri2;
              else{     
                    P.bgColor = HighBgColor;
                   if(P.value.indexOf("<img")==-1){P.document.write(P.Ovalue);P.document.close()}}}
                   else{     
                        if(P.ro){var Lc=P.Lvl==1?FLoc:ScLoc;Lc.document.images[P.rid].src=P.ri2}
                        else{               
                             P.style.backgroundColor=HighBgColor;
                             P.style.color=FontHighColor;
         P.Hilite=1
    function LowItem(P){
         P.Hilite=0;
         if(P.ro){if(Nav4)P.document.images[P.rid].src=P.ri1;
              else{var Lc=P.Lvl==1?FLoc:ScLoc;Lc.document.images[P.rid].src=P.ri1}}
         else{
              if(Nav4){
                        P.bgColor=LowBgColor;
              if(P.value.indexOf("<img")==-1){P.document.write(P.value);P.document.close()}}
              else{
                        P.style.backgroundColor=LowBgColor;
                        P.style.color=FontLowColor;
    function OpenMenu(){
         if(!Ldd||!Crtd)return;
         if(OpnTmr)clearTimeout(OpnTmr);
         var P=Nav4?this.LLyr:this;
         if(P.NofChlds&&!P.CCn){
              RLvl=this.Lvl;
              P.CCn=CreateMenuStructure(P.MN+"_",P.NofChlds,P);
              var Ti,Li,Hi;
              var MStl=!Nav4?P.style:P;
              var PadL=P.value.indexOf("<")==-1?LftXtra:0;
              var PadT=P.value.indexOf("<")==-1?TpXtra:0;
              var MWt=!Nav4?parseInt(MStl.width)+PadL:MStl.clip.width;
              var MHt=!Nav4?parseInt(MStl.height)+PadT:MStl.clip.height;
              var CCw,CCh,STp,SLt;
              var BRW=RLvl==1?BorderWidthMain:BorderWidthSub;
              if(RightToLeft)CCw=Nav4?P.CCn.clip.width:parseInt(P.CCn.style.width);
              if(BottomUp)CCh=Nav4?P.CCn.clip.height:parseInt(P.CCn.style.height);
              if(RLvl==1&&FirstLineHorizontal){Hi=1;Li=(Nav4?P.left:parseInt(P.style.left))-BRW;Ti=0}
              else{Hi=Li=0;Ti=(Nav4?P.top:parseInt(P.style.top))-BRW}
              if(Hi){STp=BottomUp?Ti-CCh:Ti+MHt+2*BRW;SLt=RightToLeft?Li+MWt-CCw:Li}
              else{SLt=RightToLeft?Li-CCw+ChildOverlap*MWt+BRW:Li+(1-ChildOverlap)*MWt;
              STp=RLvl==1&&AcrssFrms?BottomUp?Ti-CCh+MHt:Ti:BottomUp?Ti-CCh+(1-ChildVerticalOverlap)*MHt+2*BRW:Ti+ChildVerticalOverlap*MHt+BRW}
              PosMenu(P.CCn,STp,SLt);
              RLvl=0}
         var CCnt=Nav4?this.LLyr.CCn:this.CCn,HP=Nav4?this.LLyr:this;
         CurOvr=this;IniFlg=0;ClrAllChlds(this.Ctnr.FrstMbr);
         if(!HP.Hilite)HiliteItem(HP);
         if(CCnt!=null&&!CCnt.Shw)RememberStatus?Unfld():OpnTmr=setTimeout("Unfld()",UnfoldDelay);
    //alert(HP.value);
         status=HP.value;
    function Unfld(){
         var P=CurOvr;
         var TS=ExpYes?ScLoc.document.body.scrollTop:ScLoc.pageYOffset,LS=ExpYes?ScLoc.document.body.scrollLeft:ScLoc.pageXOffset,CCnt=Nav4?P.LLyr.CCn:P.CCn,THt=Nav4?P.clip.height:parseInt(P.style.height),TWt=Nav4?P.clip.width:parseInt(P.style.width),TLt=AcrssFrms&&P.Lvl==1&&!FirstLineHorizontal?0:Nav4?P.Ctnr.left:parseInt(P.Ctnr.style.left),TTp=AcrssFrms&&P.Lvl==1&&FirstLineHorizontal?0:Nav4?P.Ctnr.top:parseInt(P.Ctnr.style.top);
         // TS != 0 is only needed if the menu DIVs are positioned relative to the body.
         // We've made them positioned relative to div#navigationMenu which causes
         // a problem if TS is based on how the body is scrolled.  So set TS to zero.
         // Note: the code below will adjust the final top offset based on the height of
         // the menu bar so the dropdown appears below (and not on top of) the nav bar.
         TS = 0;
         var CCW=Nav4?P.LLyr.CCn.clip.width:parseInt(P.CCn.style.width),CCH=Nav4?P.LLyr.CCn.clip.height:parseInt(P.CCn.style.height),CCSt=Nav4?P.LLyr.CCn:P.CCn.style,SLt=AcrssFrms&&P.Lvl==1?CCnt.OrgLeft+TLt+LS:CCnt.OrgLeft+TLt,STp=AcrssFrms&&P.Lvl==1?CCnt.OrgTop+TTp+TS:CCnt.OrgTop+TTp;
         if(!ShwFlg){ShwFlg=1;BeforeFirstOpen()}
         if(MenuWrap){
              if(RightToLeft){if(SLt<LS)SLt=P.Lvl==1?LS:SLt+(CCW+(1-2*ChildOverlap)*TWt);if(SLt+CCW>SWinW+LS)SLt=SWinW+LS-CCW}
              else{if(SLt+CCW>SWinW+LS)SLt=P.Lvl==1?SWinW+LS-CCW:SLt-(CCW+(1-2*ChildOverlap)*TWt);if(SLt<LS)SLt=LS}
              if(BottomUp){if(STp<TS)STp=P.Lvl==1?TS:STp+(CCH-(1-2*ChildVerticalOverlap)*THt);if(STp+CCH>SWinH+TS)STp=SWinH+TS-CCH+(Nav4?4:0)}
              else{if(STp+CCH>TS+SWinH)STp=P.Lvl==1?STp=TS+SWinH-CCH:STp-CCH+(1-2*ChildVerticalOverlap)*THt;if(STp<TS)STp=TS}}
         CCSt.top=STp+P_X;CCSt.left=SLt+P_X;
         if(Fltr&&MenuSlide){P.CCn.filters[0].Apply();P.CCn.filters[0].play()}
         CCSt.visibility=M_Show}
    function OpenMenuClick(){
         if(!Ldd||!Crtd)return;
         var HP=Nav4?this.LLyr:this;CurOvr=this;
         IniFlg=0;ClrAllChlds(this.Ctnr.FrstMbr);HiliteItem(HP);
    function CloseMenu(){
         if(!Ldd||!Crtd)return;
         status="";
         if(this==CurOvr){if(OpnTmr)clearTimeout(OpnTmr);if(CloseTmr)clearTimeout(CloseTmr);IniFlg=1;CloseTmr=setTimeout("Initiate(CurOvr)",DissapearDelay)}}
    function CntnrSetUp(W,H,NoOff,WMu,Mc){
         var x=BorderColor;
         this.FrstMbr=null;this.NrItms=NoOff;this.Cllr=Mc;this.Shw=0;
         this.OrgLeft=this.OrgTop=0;
         if(Nav4){if(x)this.bgColor=x;this.visibility="hide";this.resizeTo(W,H)}
         else{if(x)this.style.backgroundColor=x;this.style.width=W+P_X;this.style.height=H+P_X;
              if(!NavYes)this.style.zIndex=RLvl+Ztop;
              if(Fltr){FStr="";if(MenuSlide&&RLvl!=1)FStr=MenuSlide;if(MenuShadow)FStr+=MenuShadow;
                   if(MenuOpacity)FStr+=MenuOpacity;if(FStr!="")this.style.filter=FStr}}}
    function MbrSetUp(MbC,PrMmbr,WMu,Wd,Ht,Nofs){
         var Lctn=RLvl==1?FLoc:ScLoc,Tfld=this.Arr[0],t,T,L,W,H,S,a;
         this.PrvMbr=PrMmbr;this.Lvl=RLvl;this.Ctnr=MbC;this.CCn=null;this.ai=null;this.Hilite=0;this.DoRmbr=0;
         this.Clckd=0;this.OM=OpenMenu;this.style.overflow="hidden";
         this.MN=WMu;this.NofChlds=Nofs;
         this.style.cursor=(this.Arr[1]||(RLvl==1&&UnfoldsOnClick))?ExpYes?"hand":"pointer":"default";this.ro=0;
         if(Tfld.indexOf("rollover")!=-1){this.ro=1;this.ri1=Tfld.substring(Tfld.indexOf("?")+1,Tfld.lastIndexOf("?"));
              this.ri2=Tfld.substring(Tfld.lastIndexOf("?")+1,Tfld.length);this.rid=WMu+"i";
              Tfld="<img src=\""+this.ri1+"\" name=\""+this.rid+"\" width=\""+Wd+"\" height=\""+Ht+"\">"}
         this.value=Tfld;
         this.style.color=FontLowColor;
         this.style.fontFamily=FontFamily;
         this.style.fontSize = FontSize + "pt";
         this.style.fontWeight="normal";
         this.style.fontStyle="normal";
         this.style.backgroundColor=LowBgColor;
         if (WMu.length > 6)
         { MenuTextCentered = 'left';}
         else
         {MenuTextCentered = 'center';}     
         this.style.textAlign=MenuTextCentered;
         if(this.Arr[2])this.style.backgroundImage="url(\""+this.Arr[2]+"\")";
         if(Tfld.indexOf("<")==-1){this.style.width=Wd-LftXtra+P_X;this.style.height=Ht-TpXtra+P_X;this.style.paddingLeft=LeftPaddng+P_X;this.style.paddingTop=TopPaddng+P_X}
         else{this.style.width=Wd+P_X;this.style.height=Ht+P_X}
         if(Tfld.indexOf("<")==-1&&DomYes){t=Lctn.document.createTextNode(Tfld);this.appendChild(t)}
         else this.innerHTML=Tfld;
         if(this.Arr[3]){a=RLvl==1&&FirstLineHorizontal?BottomUp?9:3:RightToLeft?6:0;
              if(Arrws[a]!=""){S=Arrws[a];W=Arrws[a+1];H=Arrws[a+2];T=RLvl==1&&FirstLineHorizontal?BottomUp?2:Ht-H-2:(Ht-H)/2;L=RightToLeft?2:Wd-W-2;
                   if(DomYes){t=Lctn.document.createElement("img");this.appendChild(t);
                        t.style.position="absolute";t.src=S;t.style.width=W+P_X;t.style.height=H+P_X;t.style.top=T+P_X;t.style.left=L+P_X}
                   else{Tfld+="<div id=\""+WMu+"_im\" style=\"position:absolute; top:"+T+"; left:"+L+"; width:"+W+"; height:"+H+";visibility:inherit\"><img src=\""+S+"\"></div>";
                        this.innerHTML=Tfld;t=Lctn.document.all[WMu+"_im"]}
                   this.ai=t}}
         if(ExpYes){this.onselectstart=CnclSlct;this.onmouseover=RLvl==1&&UnfoldsOnClick?OpenMenuClick:OpenMenu;
              this.onmouseout=CloseMenu;this.onclick=RLvl==1&&UnfoldsOnClick&&this.Arr[3]?OpenMenu:GoTo}
         else{RLvl==1&&UnfoldsOnClick?this.addEventListener("mouseover",OpenMenuClick,false):this.addEventListener("mouseover",OpenMenu,false);
              this.addEventListener("mouseout",CloseMenu,false);
              RLvl==1&&UnfoldsOnClick&&this.Arr[3]?this.addEventListener("click",OpenMenu,false):this.addEventListener("click",GoTo,false)}}
    function NavMbrSetUp(MbC,PrMmbr,WMu,Wd,Ht,Nofs){
         var a;
         this.value=this.Arr[0];this.ro=0;
         if(this.value.indexOf("rollover")!=-1){
              this.ro=1;this.ri1=this.value.substring(this.value.indexOf("?")+1,this.value.lastIndexOf("?"));
              this.ri2=this.value.substring(this.value.lastIndexOf("?")+1,this.value.length);this.rid=WMu+"i";
              this.value="<img src=\""+this.ri1+"\" name=\""+this.rid+"\">"}
         CntrTxt="<div align=\""+MenuTextCentered+"\">";
         TxtClose="</font>"+ "</div>";
         if(LeftPaddng&&this.value.indexOf("<")==-1&&MenuTextCentered=="left")this.value="�\;"+this.value;
         this.Ovalue=this.value;
         this.value=this.value.fontcolor(FontLowColor);
         this.Ovalue=this.Ovalue.fontcolor(FontHighColor);
         this.value=CntrTxt+"<font face=\""+FontFamily+"\" point-size=\""+FontSize+"\">"+this.value+TxtClose;
         this.Ovalue=CntrTxt+"<font face=\""+FontFamily+"\" point-size=\""+FontSize+"\">"+this.Ovalue+TxtClose;
         this.CCn=null;this.PrvMbr=PrMmbr;this.Hilite=0;this.DoRmbr=0;this.Clckd=0;this.visibility="inherit";
         this.MN=WMu;this.NofChlds=Nofs;
         this.bgColor=LowBgColor;
         this.resizeTo(Wd,Ht);
         if(!AcrssFrms&&this.Arr[2])this.background.src=this.Arr[2];
         this.document.write(this.value);this.document.close();
         this.CLyr=new Layer(Wd,MbC);
         this.CLyr.Lvl=RLvl;this.CLyr.visibility="inherit";
         this.CLyr.onmouseover=RLvl==1&&UnfoldsOnClick?OpenMenuClick:OpenMenu;this.CLyr.onmouseout=CloseMenu;
         this.CLyr.captureEvents(Event.MOUSEUP);this.CLyr.onmouseup=RLvl==1&&UnfoldsOnClick&&this.Arr[3]?OpenMenu:GoTo;
         this.CLyr.OM=OpenMenu;
         this.CLyr.LLyr=this;this.CLyr.resizeTo(Wd,Ht);this.CLyr.Ctnr=MbC;
         if(this.Arr[3]){a=RLvl==1&&FirstLineHorizontal?BottomUp?9:3:RightToLeft?6:0;
              if(Arrws[a]!=""){this.CLyr.ILyr=new Layer(Arrws[a+1],this.CLyr);this.CLyr.ILyr.visibility="inherit";
                   this.CLyr.ILyr.top=RLvl==1&&FirstLineHorizontal?BottomUp?2:Ht-Arrws[a+2]-2:(Ht-Arrws[a+2])/2;
                   this.CLyr.ILyr.left=RightToLeft?2:Wd-Arrws[a+1]-2;this.CLyr.ILyr.width=Arrws[a+1];this.CLyr.ILyr.height=Arrws[a+2];
                   ImgStr="<img src=\""+Arrws[a]+"\" width=\""+Arrws[a+1]+"\" height=\""+Arrws[a+2]+"\">";
                   this.CLyr.ILyr.document.write(ImgStr);this.CLyr.ILyr.document.close()}}}
    function CreateMenuStructure(MNm,No,Mcllr){
         status="Building menu";RLvl++;
         var i,NOs,Mbr,W=0,H=0,PMb=null,WMnu=MNm+"1",MWd=eval(WMnu+"[5]"),MHt=eval(WMnu+"[4]"),Lctn=RLvl==1?FLoc:ScLoc;
         var BRW=RLvl==1?BorderWidthMain:BorderWidthSub,BTWn=RLvl==1?BorderBtwnMain:BorderBtwnSub;
         if(RLvl==1&&FirstLineHorizontal){
              for(i=1;i<No+1;i++){WMnu=MNm+eval(i);W=eval(WMnu+"[5]")?W+eval(WMnu+"[5]"):W+MWd}
              W=BTWn?W+(No+1)*BRW:W+2*BRW;H=MHt+2*BRW}
         else{for(i=1;i<No+1;i++){WMnu=MNm+eval(i);H=eval(WMnu+"[4]")?H+eval(WMnu+"[4]"):H+MHt}
              H=BTWn?H+(No+1)*BRW:H+2*BRW;W=MWd+2*BRW}
         if(DomYes){var MbC=Lctn.document.createElement("div");MbC.style.position="absolute";MbC.style.visibility="hidden";Lctn.document.getElementById("navigationMenu").appendChild(MbC)}
         else{if(Nav4)var MbC=new Layer(W,Lctn);
              else{WMnu+="c";Lctn.document.body.insertAdjacentHTML("AfterBegin","<div id=\""+WMnu+"\" style=\"visibility:hidden; position:absolute;\"><\/div>");
                   var MbC=Lctn.document.all[WMnu]}}
         MbC.SetUp=CntnrSetUp;MbC.SetUp(W,H,No,MNm+"1",Mcllr);
         if(Exp4){MbC.InnerString="";
              for(i=1;i<No+1;i++){WMnu=MNm+eval(i);MbC.InnerString+="<div id=\""+WMnu+"\" style=\"position:absolute;\"><\/div>"}
              MbC.innerHTML=MbC.InnerString}
         for(i=1;i<No+1;i++){WMnu=MNm+eval(i);NOs=eval(WMnu+"[3]");
              W=RLvl==1&&FirstLineHorizontal?eval(WMnu+"[5]")?eval(WMnu+"[5]"):MWd:MWd;
              H=RLvl==1&&FirstLineHorizontal?MHt:eval(WMnu+"[4]")?eval(WMnu+"[4]"):MHt;
              if(DomYes){Mbr=Lctn.document.createElement("div");     Mbr.style.position="absolute";Mbr.style.visibility="inherit";MbC.appendChild(Mbr)}
              else Mbr=Nav4?new Layer(W,MbC):Lctn.document.all[WMnu];
              Mbr.Arr=eval(WMnu);                    
              Mbr.SetUp=Nav4?NavMbrSetUp:MbrSetUp;Mbr.SetUp(MbC,PMb,WMnu,W,H,NOs);
              if(NOs&&!BuildOnDemand){Mbr.CCn=CreateMenuStructure(WMnu+"_",NOs,Mbr)}
              PMb=Mbr}
         MbC.FrstMbr=Mbr;
         RLvl--;
         return(MbC)}
    function CreateMenuStructureAgain(MNm,No){
         if(!BuildOnDemand){
              var i,WMnu,NOs,PMb,Mbr=FrstCntnr.FrstMbr;RLvl++;
              for(i=No;i>0;i--){WMnu=MNm+eval(i);NOs=eval(WMnu+"[3]");PMb=Mbr;if(NOs)Mbr.CCn=CreateMenuStructure(WMnu+"_",NOs,Mbr);Mbr=Mbr.PrvMbr}
              RLvl--}
         else{     var Mbr=FrstCntnr.FrstMbr;
              while(Mbr){Mbr.CCn=null;Mbr=Mbr.PrvMbr}}}

    Hi thanks...As you said I am performing only on onload event..only thing i am confused is if i remove the javacript MRHeader.js everything works fine...am totally confused...pls help
    Here is my JSP code for my input page
    <%@page import="java.util.*" %>
    <%@page import="com.ford.mr.*" %>
    <HTML>
    <HEAD>
    <link href="./css/mplstyle.css" rel="STYLESHEET" type="text/css">
    <title>Input Frame</title>
    <link type="text/css" rel="STYLESHEET" href="./css/classic.css">
    <STYLE>
        .vis1 { visibility:visible }
        .vis2 { visibility:hidden }
    </STYLE>
    <%--
    MRIFValidation.js contains the java script for the following requirement:
    1. Setting the current date in date to compare
    2. All input frame client validations.
    E.g Plant id should not be empty.
    --%>
    <script type="text/javascript" src="./javascript/MRIFValidation.js"> </script>
    <%--
    MRR2HandleDropdown.js is the javascript for the input frame server side actions
    It has many functions related to drop down populating and rendering the data
    to user from server.
    --%>
    <script language="javascript" src="./javascript/MRR2HandleDropdown.js"> </script>
    <%--
    MRheader.js is the javascript which displays the header for our application
    plus it has an internal call to MRMenuItem.js and menuscript.js which
    builds the menu bar for our application
    Issue is here - On commenting the below the previously entered user
    inputs are displayed correctly. Else they are not displayed.
    --%>
    <script language="javascript" src="./javascript/MRheader.js"> </script>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
    <!--
    a:visited {
         color: #0000FF;
    .style1 {font-weight: bold}
    .style2 {color: #FF0000}
    body {
         background-color: #FFFFFF;
    -->
    </style>
    <%--
    Declaring all the JSP variables used in the page
    These variables are used for holding the session parameters
    and are used while setting the selected values in the screen.
    --%>
    <%!      
         // HTTPSession object
         HttpSession sess;
         // To hold session Variables //
         // Selected plant index
         String plantIndex;
         // Selected supplier index
         String supplierIndex;
         // Selected part index
         String partIndex;
         // List of plant codes
         Vector plantCodes = new Vector();
         // List of supplier codes
         Vector supplierCodes = new Vector();
         // List of part codes
         Vector partCodes = new Vector();
         // To hold the part description for the selected part
         String partDescription;
         // List of release numbers matching the selected plant, supplier & part
         Vector releaseNumbers = new Vector();
         // Type of release - Weekly / Daily
         String releaseType;
         // Selected release1 index
         String release1Index;
         // Selected release2 index
         String release2Index;
         // Holds the issue date 1 corresponding to release 1 selected
         String issueDate1;
         // Holds the issue date 2 corresponding to release 2 selected
         String issueDate2;
         // List of matching release numbers to the entered issue date1 (Might be one or two
         // in case if amended release exist)
         Vector matchingRelease1Number = new Vector();
         // List of matching release numbers to the entered issue date2 (Might be one or two
         // in case if amended release exist)
         Vector matchingRelease2Number = new Vector();
         // Size of matchingRelease1Number collection
         int matchingRelease1Size = 0;
         // Size of matchingRelease2Number collection
         int matchingRelease2Size = 0;
         // Boolean flags to hold if amended release exists in the release numbers
         // matching the issue dates entered by user.
         boolean amendedRelease1Exist;
         boolean amendedRelease2Exist;
         String pageName = "";
    %>
    <%--
    The below code does the following:
    1. Fetches the various values available in session
    2. Stores the same in various JSP variables for access within the page
    --%>
    <%
    System.out.println("In input frame page");
    sess = request.getSession(true);
         if(sess != null) {
              System.out.println("Session id in input frame: "+ sess.getId());
              plantIndex = (String) sess.getAttribute("selectedPlantIndex");
              supplierIndex = (String) sess.getAttribute("selectedSupplierIndex");
              partIndex = (String) sess.getAttribute("selectedPartIndex");
              //plantCodes = (Vector) sess.getAttribute("plantCodes");
              supplierCodes = (Vector) sess.getAttribute("supplierCodes");
              partCodes = (Vector) sess.getAttribute("partCodes");
              partDescription = (String) sess.getAttribute("partDescription");
              releaseNumbers = (Vector) sess.getAttribute("releaseNumbers");
              releaseType = (String) sess.getAttribute("releaseType");
              release1Index = (String) sess.getAttribute("selectedRelease1Index");
              release2Index =(String)  sess.getAttribute("selectedRelease2Index");
              issueDate1 = (String) sess.getAttribute("issueDate1");
              issueDate2 = (String) sess.getAttribute("issueDate2");
              matchingRelease1Number = (Vector) sess.getAttribute("correspondingRelease1Number");
              matchingRelease2Number = (Vector) sess.getAttribute("correspondingRelease2Number");
              System.out.println("Displaying values in session *******************");
              Enumeration enum = sess.getAttributeNames();
              while(enum.hasMoreElements()) {
                   String elementName = (String) enum.nextElement();
                   System.out.println("element:"+ elementName+": Value: "+ sess.getAttribute(elementName));
              System.out.println("Plant Index JSP variable:"+ plantIndex);
    %>
    <%--
    This code is used for getting the plant codes from
    the DB. Currently it is hardcoded.
    --%>
    <%
    MRR2GetPlantCodes obj = new MRR2GetPlantCodes();
    plantCodes = obj.getPlantCodes();
    %>
    <%--
    The below two blocks are used to iterate through matchingRelease1Number & matchingRelease2Number
    and checks if it has amended release. If yes, sets a boolean flag.
    matchingRelease1Number & matchingRelease2Number are two collections which
    contains the release number(s) matching the inputted issue date
    --%>
    <%
    // Code to set boolean flag amendedRelease1Exist
    if(matchingRelease1Number != null) {
         Iterator relIter = matchingRelease1Number.iterator();
         while(relIter.hasNext()) {
              if( ((String)relIter.next()).endsWith("A") ) {                    
                   amendedRelease1Exist = true;
    // Code to set boolean flag amendedRelease2Exist
    if(matchingRelease2Number != null) {
         Iterator relIter = matchingRelease2Number.iterator();
         while(relIter.hasNext()) {
              if( ((String)relIter.next()).endsWith("A") ) {                    
                   amendedRelease2Exist = true;
    %>
    <%--
    The below script has one method fillDropDown which is used for setting the
    values of the various I/P controls to user selected values:
    It sets the below selected values:
    1. Plant Index, Supplier Index, Part Index, Part description
    2. Release Type (Daily / weekly)
    3. Release 1 Index, Release 2 Index
    4. Issue date1 & Issue date2
    --%>
    <script language="javascript">
    function fillDropDown(field) {
         with(field) {
              var partD = "<%=partDescription%>"
              <% System.out.println("Loading the index values in input frame......");%>
              // inputform.country.selectedIndex = inputform.hiddencountry.value
              // Loading plant Index, supplier Index, part index and part description to selected values
              <% if(plantIndex != null && !plantIndex.equals("")) {%>
                   inputframe.plant.selectedIndex = "<%=Integer.parseInt(plantIndex)%>"               
              <% System.out.println("Selected Plant Index after loading:"+plantIndex);} %>
              <% if(supplierIndex != null && !supplierIndex.equals("")) { System.out.println("****Supplier Index not equals null..."+Integer.parseInt(supplierIndex)); %>
                   inputframe.supplier.selectedIndex = "<%=Integer.parseInt(supplierIndex)%>"
              <% } %>
              <% if(partIndex != null && !partIndex.equals("")) { %>
                   inputframe.part.selectedIndex = "<%=Integer.parseInt(partIndex)%>"
              <% } %>
              <% if(partDescription != null && !partDescription.equals("")) { %>
                   document.getElementById("partDescription").innerHTML = partD
              <%     } %>
              // Making the default release type selection as done by user
              <% if(releaseType != null && !"".equals(releaseType)) {
                        if("daily".equals(releaseType)) {%>
                             inputframe.release[0].checked = "checked"
                        <%     //isDaily = true;
                        } else { %>
                             inputframe.release[1].checked = "checked"
                        <%     //isWeekly = true;
                   } %>
              <%--
                   The below code is used to fetch the session variable issueDate1
                   & issueDate2 (based on the release numbers selected)
                   and sets the same in two text fields.
               --%>          
              <% if(issueDate1 != null && !issueDate1.equals("")) { %>
                   inputframe.issueDate1.value = "<%=issueDate1%>"
              <% } %>
              <% if(issueDate2 != null && !issueDate2.equals("")) { %>
                   inputframe.issueDate2.value = "<%=issueDate2%>"
              <% } %>     
         <%--
              Loading release drop down with the value matching with the entered issue date.
              Scenario : User enters the issue date and the corresponding release number is
              selected in drop down.
              Logic 1:
              1. Pass the issue date entered by user and get the matching release numbers
              from EJB
              2. Compare this with the combo collection and get the perfect match.
              3. If more than one match is found take the one with amendment by default
              4. Else get the matching one
              5. Update the selected index of dropdown to this value
         --%>          
              if(inputframe.release1.options.length > 0) {
                   var matchingCombo1Index = 0
                   var comboValue               
                   var matchFound = "false"
                   var size
                   var amended = false;
                   var amendedReleaseExist = "<%=amendedRelease1Exist%>";
                   var firstValue = ""
                   var secondValue = ""
                   var amendedValue = ""
                   var j = 0
                <%                 
                     if(matchingRelease1Number != null && matchingRelease1Number.size() != 0) {
                          Iterator iter = matchingRelease1Number.iterator();                          
                        matchingRelease1Size = matchingRelease1Number.size(); %>
                        size = "<%=     matchingRelease1Size %>"
                        //alert("Size of collection to be matched:"+size)
                   <%     while(iter.hasNext()) {                         
                             //String matchFound1 = "false";
                             String relValue = (String)iter.next();%>
                             //alert("Collection value under iteration:"+ "<%=relValue%>")                         
                             amended = "<%=relValue.endsWith("A")%>"
                             if(amended) {
                                  amendedValue = "<%=relValue%>"
                             //alert("Collection value under iteration ends with A:"+amended)
                             var comb = "<%=relValue%>"
                             j = j + 1
                             for(var i = 0; i < inputframe.release1.options.length; i++) {
                                  //      breaking the for loop when matchingCombo1Index is set greater than 0
                                  /*if(matchFound == true) {
                                       break
                                  comboValue = inputframe.release1.options.value                              
                                  //alert("Combo value:->"+comboValue)
                                  //alert("rel value in comparison:"+ comb);
                                  if(comboValue == comb) {
                                       if(size == 1) {
                                            matchFound = "true";
                                       if(size == 2) {
                                            if(j == 1)
                                                 firstValue = comb
                                            if(j == 2)
                                                 secondValue = comb
                                            // The below if block shall be also kept as if((amended||(!amendedReleaseExist)==true)
                                            // The below one perfectly works fine
                                            if(amended || !amendedReleaseExist) {
                                                 matchFound = "true";
                                  if(matchFound == "true") {
                                       matchingCombo1Index = i
                                       // alert("Matching combo index set to:"+ matchingCombo1Index)                                   
                                       inputframe.release1.selectedIndex = matchingCombo1Index
                                       if(size == 2)
                                            document.getElementById('errorArea').innerHTML = "There are"
                                                 + " two release numbers for the particular Issue date."
                                                 +" Please select either one of the release numbers ("+firstValue+ " or "+secondValue+" )."
                                                 +" Default selection in the Release drop down is "+ amendedValue+ "."
                                       matchingCombo1Index = 0;
                                       matchFound = "false";
                                       // Breaking the for loop
                                       break;                                   
                        <%                          
                        sess.removeAttribute("correspondingRelease1Number") ;
                   }%>
                   // Setting the selected release 1 index based on the logic done above.
                   if(matchingCombo1Index == 0) {
                        <% if(release1Index != null && !release1Index.equals("")) { matchingRelease1Number = null;%>
                                  inputframe.release1.selectedIndex = "<%=Integer.parseInt(release1Index)%>"
                        <% } %>
              <%--
                   Performing the above logic to select Release2 value
                   when the user enters issue date2
              --%>
              if(inputframe.release2.options.length > 0) {
                   var matchingCombo2Index = 0
                   var comboValue
                   var matchFound = "false"
                   var size
                   var amended = false;
                   var amendedReleaseExist = "<%=amendedRelease2Exist%>";
                   var firstValue = ""
                   var secondValue = ""
                   var amendedValue = ""
                   var j = 0
              <%               
                   if(matchingRelease2Number != null && matchingRelease2Number.size() != 0) {
                        Iterator iter = matchingRelease2Number.iterator();                         
                        matchingRelease2Size = matchingRelease2Number.size(); %>
                        size = "<%=     matchingRelease2Size %>"
                        //alert("Size of collection to be matched:"+size)
                   <%     while(iter.hasNext()) {
                             String matchFound1 = "false";
                             String relValue = (String)iter.next();%>
                             //alert("Collection value under iteration:"+ "<%=relValue%>")                         
                             amended = "<%=relValue.endsWith("A")%>"                         
                             if(amended) {
                                  amendedValue = "<%=relValue%>"
                             //alert("Collection value under iteration ends with A:"+amended)
                             var comb = "<%=relValue%>"
                             j = j + 1
                             for(var i = 0; i < inputframe.release2.options.length; i++) {
                                  //      breaking the for loop when matchingCombo2Index is set greater than 0
                                  /*if(matchFound == true) {
                                       break
                                  comboValue = inputframe.release2.options[i].value                              
                                  //alert("Combo value:->"+comboValue)
                                  //alert("rel value in comparison:"+ comb);
                                  if(comboValue == comb) {
                                       if(size == 1) {
                                            matchFound = "true";
                                       if(size == 2) {
                                            if(j == 1)
                                                 firstValue = comb
                                            if(j == 2)
                                                 secondValue = comb
                                            // The below if block shall be also kept as if((amended||(!amendedReleaseExist)==true)
                                            // The below one perfectly works fine
                                            if(amended || !amendedRelease2Exist) {
                                                 matchFound = "true";
                                  if(matchFound == "true") {
                                       matchingCombo2Index = i
                                       // alert("Matching combo index set to:"+ matchingCombo2Index)                                   
                                       inputframe.release2.selectedIndex = matchingCombo2Index
                                       if(size == 2)
                                            document.getElementById('errorArea').innerHTML = "There are"
                                                 + " two release numbers for the particular Issue date."
                                                 +" Please select either one of the release numbers ("+firstValue+ " or "+secondValue+" )."
                                                 +" Default selection in the Release drop down is "+ amendedValue+ "."
                                       matchingCombo2Index = 0;
                                       matchFound = "false";
                                       // Breaking the for loop
                                       break;                                   
                        <%                          
                        sess.removeAttribute("correspondingRelease2Number") ;
                   }%>
                   // Loading the selected release2 value in drop down
                   if(matchingCombo2Index == 0) {
                        <% if(release2Index != null && !release2Index.equals("")) { matchingRelease2Number = null;%>
                                  inputframe.release2.selectedIndex = "<%=Integer.parseInt(release2Index)%>"
                        <% } %>
         } // end of WITH
              Logic 2: Not used
              1. Pass the issue date entered by user and get the matching release numbers
              2. Get the release numbers from session.
              3. if release type is daily get the daily release numbers else get weekly release numbers
              4. Compare the matching release numbers with daily / weekly release numbers collection
              5. Find the match and update the selected index of drop down to this value
    }// end of function
    </script>
    </HEAD>
    <%-- Calling the two methods onload event of body --%>
    <BODY onload="setCurrentDate(this);fillDropDown(this)">

  • Using JavaScript & Dynamic Lists - ?? need help

    Hello all! Sorry to post this under an unrelated topic (JSP & JSTL), but there wasn't a JavaScript forum.
    Anyway, before I ask my questions...read the following:
    You'll find the code for my example at the end of this post. Also, I've posted my code as html pages in here...but my original code was in the form of servlets.
    Here's what I wanted to accomplish:
    1) html page has a form with two select lists
    2) select one option from the first select
    3) javascript code takes care of populating the 2nd list with options stored in an array, based on the first selection made in the 1st list.
    4) each <option>'s value is set to the page hello.html
    Piece of cake! That all works, but here's the real issue:
    Let's say you click on an option from the 1st <select> list, which populates the 2nd <select> list with some options. You then click on the 2nd box, select an option, and it jumps to hello.html.
    Now you press the back button - here are some things I observed:
    First, let me note, that for my example, I'm using car makes for the 1st list, and car models for the 2nd.
    * notice that only the 1st select list is still showing the selection you made, but the 2nd one shows nothing. Plus, when you click on the 2nd list, all that is shown is, in my example, "Then a Model". Not the original options that populated this list, when you had selected a car make from the first.
    *also, if you select "Then a Model" in the 2nd, it will error out, because there isn't a link set for that option. I would actually prefer that the page doesn't jump anywhere if "Then a Model" was to be selected. But I can probably fix that later.
    * If you try to select the car make you had previously selected again in the 1st menu, it still shows the same thing in the 2nd. Not the car models that it showed you when you had first run the example.
    *) You can get the model options for, just for example, "Acura" back into the 2nd, but you would have to select Audi or BMW and then select Acura again.
    *) if you select the "Select a Make" option in the 1st, it doesn't display "Then a Model" in the second as I would like. But I can probably fix that later.
    Now, here are my questions:
    1) Does anybody know how I can keep the selections "selected" in the page, when a user comes back to it when they press the "back" button?
    2) Do I have to store the options selected somewhere, so the page "remembers" what was selected?
    3) Would it help if I used session tracking?
    I was told that the problems I've described are because I've implemented a dynamic listbox.
    The value is supposed to be lost if I move to the next page and then click back. Would any of you agree?
    Any ideas/suggestions at all would be very much appreciated!
    ************************ HERE'S THE CODE **********************************
    This is dynamiclists.html I've commented it probably more than necessary for all you skilled JavaScript programmers, but I thought it would help to have an explanation for each piece of code.
    <html>
    <head>
    <script language=javascript>
    //here I create the multi-dimensional array to hold my
    //values for each make and model to be put into the
    //lists
    var cars = new Array();
    cars['Acura'] = new Array('Legend');
    cars['BMW'] = new Array('740i');
    cars['Audi'] = new Array('A4');
    //method used for my onChange event in the first select list (Make)
    //method accepts the value of the selected index
    function createModel(makeName) {
    //variables used for short-cutting to form elements
    //references the form
    var myform = document.selections;
    //Make selection list
    var Make = myform.Make;
    //Model selection list
    var Model = myform.Model;
    //holds the item selected in the first list -- ex. Acura or Audi
    var makeName = myform.Make.options[myform.Make.selectedIndex].value;
    //to be set to a new Option
    var theOption;
    //if Select a Make is selected, clear the Model select list, and just put
    // Then a Model in it
    if(Make.selectedIndex == 0) {
    Model.length = 0;
    Model.length = 1;
    Model.options[0].text = "Then a Model";
    Model.options[0].value="Then a Model";
    // if you select Acura from Make
    if(makeName == "Acura") {
    // fill first position in Model select list with the Then a Model, so the
    // user knows to select a Model after a Make
    Model.options[0].text = "Then a Model";
    Model.options[0].value = "Then a Model";
    // loop through the array elements that match makeName (which for example
    // could be Acura
    for(var i=0; i<cars[makeName].length; i++) {
    // create a new Option for each Model available
    theOption = new Option(cars[makeName], i);
    // put the Model into the Model select list starting at position 1, not 0 because
    // position 0 is taken up by Then a Model that was set above.
    // Thus why I put (i+1)
    Model.options[(i+1)] = theOption;
    // set each Model options link to hello.html, just for now.
    Model.options[(i+1)].value="hello.html";
    }//end for
    }//end if
    // repeat for BMW and Audi
    if(makeName == "BMW") {
    Model.options[0].text = "Then a Model";
    Model.options[0].value = "Then a Model";
    for(var i=0; i<cars[makeName].length; i++) {
    theOption = new Option(cars[makeName][i], i);
    Model.options[(i+1)] = theOption;
    Model.options[(i+1)].value="hello.html";
    }//end for
    }//end if
    if(makeName == "Audi") {
    Model.options[0].text = "Then a Model";
    Model.options[0].value = "Then a Model";
    for(var i=0; i<cars[makeName].length; i++) {
    theOption = new Option(cars[makeName][i], i);
    Model.options[(i+1)] = theOption;
    Model.options[(i+1)].value="hello.html";
    }//end for
    }//end if
    }//end createModel
    // this is for the onChange event in the Model selection list.
    // this takes care of the jump when you click on a Model.
    // you will be taken to hello.html, which has been set in each option above
    function MM_jumpMenu(targ,selObj,restore){
    eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"';")
    if (restore) selObj.selectedIndex=0;
    </script>
    </head>
    <body>
    <form name="selections">
    <select name="Make" onChange="createModel(this.options[this.selectedIndex].value);">
    <option value="Select Make" selected>Select Make
    <option value="Acura">Acura
    <option value="BMW">BMW
    <option value="Audi">Audi
    </select>
    <select name="Model" onChange="MM_jumpMenu('parent',this,0)">
    <option value="Then a Model" selected>Then a Model
    </select>
    </form>
    </body>
    </html>
    ***************************** END OF DYNAMICLISTS.HTML ***********************************
    Here's my simple hello.html
    <html>
    <body>
    Hello to all!
    </body>
    </html>

    I have a html:
    <html>
    <head>
    <script>
    var store = new Array();
    store[0] = new Array(
         'labas11',
         'labas12',
         'labas13');
    store[1] = new Array(
         'labas21',
         'labas22',
         'labas23');
    // Funkcija skirta dedant naujienu
    // irasa formuoti sarasa kuriems vartotojams bus siunciama zinute
    function populate()
         var box = document.forms[0].first;
         var number = box.options[box.selectedIndex].value;
         if (!number) return;
         var list = store[box.selectedIndex];
         if (list.length==null) return;
         var box2 = document.forms[0].second;
         box2.options.length = 0;
         for(i=0;i<list.length;i++)
              box2.options[i] = new Option(list,list[i]);
    function addGroup()
    var box = document.forms[0].first;
         var number = box.selectedIndex;
         if (number>-1)
    document.forms[0].third.options[document.forms[0].third.options.length]=new Option('[G] '+box.value,document.forms[0].third);
    function addUser()
    var box = document.forms[0].second;
         var number = box.selectedIndex;
         if (number>-1)
    document.forms[0].third.options[document.forms[0].third.options.length]=new Option('[V] '+box.value,document.forms[0].third);
    function removeOne()
    var box = document.forms[0].third;
         var number = box.selectedIndex;
         if (number>-1)
    box.remove(box.selectedIndex);
    function removeAll()
    // alert(document.forms[0].third.options[0].text);
    var box = document.forms[0].third;
         box.options.length=0;
    function selectToList()
    //this code selects all the elements in the select field
    for(var i=0;i<document.forms[0].third.length;i++)
    document.forms[0].third.options[i].selected=true;
    alert(document.forms[0].third.options[i].text);
    </script>
    </head>
    <body>
    <form action='servlet/List' method=Post>
    <select size=4 name="first" style="width:200px" onchange="populate()">
         <option value="0">html</option>
         <option value="1">css</option>
    </select>
    <select size=4 name="second" style="width:200px">
    </select>
    <select size=4 name="third" style="width:200px" multiple>
    </select>
    <input type=submit value=spausk onClick="selectToList();" />
    </form>
    <table>
    <tr><td><button onclick="addGroup()"> &#302;d&#279;ti grup&#281; </button></td></tr>
    <tr><td><button onclick="addUser()"> &#302;d&#279;ti vartotoj&#261;</button></td></tr>
    <tr><td><button onclick="removeOne()"> �alinti </button></td></tr>
    <tr><td><button onclick="removeAll()"> I�valyti </button></td></tr>
    </table>          
    </body>
    </html>
    and servlet:
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class List extends HttpServlet
         public void doPost(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException
         { doAction(request,response);}
         public void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException
         { doAction(request,response);}
         public void doAction(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException
              response.setContentType("text/html;charset=windows-1257");
              PrintWriter out = response.getWriter();
         String[] strArray=request.getParameterValues("third");
              out.print("Value: "+strArray[0]);
    So what is wrong because servlet prints bad value [object]
    Thanks

  • JSP/javascript question. Guru's please help.

    Need help.
    I know we can assign value of a JSP variable to a javascript variable. e.g. strJScriptvar = <%=strJSPvar%>;
    Is there a way we can go the other way, i.e. assigning a javascript variable value to a JSP variable?
    e.g. will it be valid <%strJSPvar=%>=strJScriptvar;
    If not, is there a direct way of assigning the value.
    Any help will be heavily appreciated.
    Thanks,
    Indrasish.

    Yeah, that's it. Remember that JSPs are compiled into servlets then sent as HTML to your browser. Once the page is sent to your browser, there is nothing else the "JSP" part of it can do. It's already been processed, done it's thing, and sent the results to your browser.
    Make sense?

  • Posting huge data on to JSP page using JSTL tags

    Hi,
    I have one application where I have to post huge data (approximately 2000 rows of data) into JSP page. I am using JSTL tags and running on Tomcat 5.
    It is taking almost 20 to 25 seconds to load the entire page.
    Is it the optimal time to load or it could be improved?
    Please let me know.
    Thanks,
    --Subbu.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    Hi Evnafets,
    Thank you for the response.
    Here are the tasks I am doing to display the data on JSP.
    0. We are running on Tomcat 5 and the memory size is 1024MB (1GB).
    1. Getting the data - I am not performing any database queries. The data is stored in the static cache memory. So the server side response is so quick - less than a milli second.
    2. Using Java beans to pass data to the presentation layer (JSP).
    3. 10 'if' conditions and 2 'for' loops and 2 'choose' statements are being used in the JSP page while displaying the data.
    4. Along with the above, there are 4 javascript files are being used.
    5. The jsp file size after rendering the data, is aprox. 160 kb
    Hope this information helps you to understand the problem.
    Thanks,
    --Subbu.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • JSP Data table - Rendering for command buttons.

    Hi All,
    We are designing a JSP page where results from table have to be thrown on a data table. (h:dataTable)
    Based on one column value on the data table, we need to render a command button for each row of data table.
    For example, I select the employees from a table and throw it on data table.
    Only for those employees where address is not present, I need to enable an "Update address" command button.
    (Command button "Update address" is also part of data table.)
    Is it possible to accomplish this on a data table?
    If so how should we code the "rendered" tag of the command button in data table.
    Any help would be greatly appreciated.
    Thanks.

    Sounds like the JSF forum would be a closer alignment, but in general
    - retrieve your information from the database into a list of Employee beans.
    - Have your h:dataTable use the list of Employee beans as a datasource
    - have the rendered attribute of your update button depend on the value of employee.address maybe #{empty employee.address}
    cheers,
    evnafets

  • Preparing JSP Taglibrary for JSTL and EL

    I have a taglibrary I've been working on that generates live GoogleMaps using 100% java (no javascript or AJAX needed by the developer). I would like to incorporate this library within JSTL, so users can place the GoogleMaps tags within JSTL tag (i.e. sql tag and c tags) so they can generate maps using database data to add markers, etc.
    Is there any special preparation needed to allow tags to accept EL as attribute values or is this built-in?
    Thanks in advance. I'm not a big JSTL user or I would have generated a test page myself.

    You need to allow your tags to accept EL?
    In a JSP2.0 container (eg Tomcat 5) it is built in. ${expr} is a runtime expression just like <%= expr %> is. So if you can use <%= expr %> with a tag, you can use ${expr}. As long as you have a JSP2.0 container (eg Tomcat 5) and have enabled the EL (by having your web.xml defined as being version 2.4)
    For older apps, still in Servlet2.3/JSP1.2 you couldn't use EL without modifying the tags. You would have to provide the EL evaluator yourself (there is one in jakarta commons) and evaluate each attribute using that manually. Effectively it is a complete duplicate set of tags just for EL.
    Struts-el is one example. Also JSTL1.0 had standard and rt versions for using ${expr} and <%= expr %> respectively with the tags.
    Does that answer your question?

Maybe you are looking for

  • Interactive Report Download CSV file Issue (output includes separator BR)

    Hi, I have a Interactive Report and displaying the column values (multiple values in same ROW) as mentioned below. SQL Query   select deptno,        function1(empno) empno   from emp IR Output Dept       Employee No 10         AAA,BBB,CCC, ...    //

  • FF Mac Desktop Addon and links download errors after upgrade to 35.0.1

    My problem started when FF was repeatedly trying to automatically upgrade to 35.0.1. It repeatedly failed the incremental upgrade and said I should download from Mozilla.org. However, after doing that and installing 35.0.1 both addons and application

  • Where I can find the apps that moved from my mac to my iphone

    ¿Dónde puedo encontrar las Apps que moví de mi Mac a mi iPhone 5S? Digité descargar todas y ya no las encuentro. Quiero sincronizarlas con el iPhone.

  • How to query in two tables

    Hi all How to query in two different tables? Should i use the following SET_BLOCK_PROPERTY('ins1', ONETIME_WHERE, 'serial = ''' || :GLOBAL.CODE || ''''); this is working but for one table if i want for both tables and and it display the related infor

  • Adf page state problem

    I am using jDeveloper 11.1.1.3g. I have a simple jsp page which has few inputText and commandButton. When i click on the command button i have a logic to add a user in LDAP. Till this is fine. If i click on my the command button the respective method