From: <Saved by Windows Internet Explorer 7>
Subject: Continuing Education Home Page
Date: Fri, 21 Nov 2008 21:03:40 -0600
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01C94C1C.A0F97CB0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: https://floridastatefirecollege.org/public/pb_index.asp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Continuing Education Home Page</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<SCRIPT src=3D"https://floridastatefirecollege.org/include/style_css.js" =

type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"https://floridastatefirecollege.org/include/script/button_preload_=
updown.js"></SCRIPT>

<SCRIPT=20
src=3D"https://floridastatefirecollege.org/include/script/validation.js">=
</SCRIPT>

<SCRIPT language=3Djavascript>
<!--
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: GoInbox
Purpose:  Goes to the specific Tab.
Input:    none.
Returns:  undefined
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function GoInbox(pTab) {
	var f =3D document.frmMain;
	f.action =3D 'pb_index.asp?tab=3D' + pTab;
	f.submit();
}


function login() {
	var f =3D document.frmLogin;
	f.hAction.value =3D 'login';
	Validate(f);
	//pageLoad();
}
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: Explorer
Purpose:  checks if the user press the enter key.
Input:    none.
Returns:  none.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function Explorer() {
	alert("A new browser session will be opened. To return to your Fire =
College System session, close the new window.");=20
	window.open("http://www.microsoft.com/windows/ie/default.asp");=20
=09
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: checkKeyPressed
Purpose:  checks if the user press the enter key.
Input:    none.
Returns:  none.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function checkKeyPressed(e)	{
	if (document.layers)	{		// netscape
		if (e.which =3D=3D 13)	{
			e.which =3D 0;
			login();
		}
	}
	else	{		// iexplorer
		if (window.event.keyCode =3D=3D 13)	{
			window.event.returnValue =3D false;
			login();
		}
	}
}		// end function

// IF NETSCAPE BROWSER
if (document.layers)	{
	document.captureEvents(Event.KEYDOWN);
	document.onkeydown =3D checkKeyPressed; // work together to analyze =
keystrokes
}

//-->
</SCRIPT>

<META content=3D"MSHTML 6.00.6000.16735" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff leftMargin=3D0 topMargin=3D0 =
marginwidth=3D"0"=20
marginheight=3D"0"><!--BEGIN: PAGE HEADER-->
<TABLE cellSpacing=3D0 cellPadding=3D0 width=3D780 align=3Dcenter =
border=3D0>
  <TBODY>
  <TR>
    <TD align=3Dmiddle><!--			<img alt=3D"Department of Insurance Bureau =
of Agent &amp; Agency Licensing" =
src=3D"../images/layout/headerimage.jpg" width=3D"443" height=3D"117">  =
--><IMG=20
      alt=3D"Department of Financial Services Bureau of Fire Standards =
and Training"=20
      =
src=3D"https://floridastatefirecollege.org/images/layout/headerimage.jpg"=
>=20
    </TD></TR></TBODY></TABLE><!--END: PAGE HEADER-->
<TABLE cellSpacing=3D0 cellPadding=3D0 width=3D780 align=3Dcenter =
border=3D0>
  <TBODY>
  <TR>
    <TD width=3D15 bgColor=3D#003466>&nbsp;</TD>
    <TD class=3Dmenu1 bgColor=3D#003466>&nbsp;</TD>
    <TD width=3D2 bgColor=3D#003466>&nbsp;</TD></TR>
  <TR>
    <TD bgColor=3D#003466 rowSpan=3D6><IMG height=3D1 alt=3D""=20
      =
src=3D"https://floridastatefirecollege.org/images/layout/spacer.gif"=20
      width=3D15></TD>
    <TD><IMG height=3D8 alt=3D""=20
      =
src=3D"https://floridastatefirecollege.org/images/layout/spacer.gif" =
width=3D8=20
      border=3D0></TD>
    <TD bgColor=3D#003466 rowSpan=3D6><IMG height=3D1 alt=3D""=20
      =
src=3D"https://floridastatefirecollege.org/images/layout/spacer.gif" =
width=3D1=20
      border=3D0></TD></TR><!--BEGIN: MENU BAR-->
  <TR>
    <TD>
      <SCRIPT language=3Djavascript=20
      =
src=3D"https://floridastatefirecollege.org/include/menus/menu_functions.j=
s"></SCRIPT>

      <SCRIPT language=3Djavascript>
	var publicPageName =3D '';


</SCRIPT>

      <SCRIPT language=3Djavascript=20
      =
src=3D"https://floridastatefirecollege.org/include/menus/menu_public.js">=
</SCRIPT>
    </TD></TR><!--END: MENU BAR--><!--BEGIN: BREADCRUMBS-->
  <TR>
    <TD></TD></TR><!--END: BREADCRUMBS-->
  <TR>
    <TD vAlign=3Dtop align=3Dmiddle width=3D750>
      <DIV align=3Dcenter><!--BEGIN: CONTENT SECTION-->
      <TABLE cellSpacing=3D0 cellPadding=3D3 width=3D"95%" border=3D0>
        <TBODY>
        <TR>
          <TD width=3D"85%" rowSpan=3D2>
            <FORM id=3DfrmMain name=3DfrmMain method=3Dpost>
            <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%" =
border=3D0>
              <TBODY>
              <TR>
                <TD>&nbsp;</TD></TR>
              <TR>
                <TD>
                  <P><STRONG><FONT face=3D"Verdana, Arial, Helvetica, =
sans-serif"=20
                  color=3D#990000 size=3D+1>Welcome to the Florida State =
Fire=20
                  College</FONT></STRONG> </P>
                  <P>
                  <H3><FONT color=3D#990000>Related Links</FONT></H3>
                  <P><A href=3D"http://www.fldfs.com/sfm"><FONT =
color=3Dblue>Click=20
                  here for complete Bureau information</FONT></A></P>
                  <H3><FONT color=3D#990000>New Users</FONT></H3>
                  <P>If this is your first visit to the Florida State =
Fire=20
                  College web site, please take a minute to register in =
our=20
                  system. By <A=20
                  =
href=3D"https://floridastatefirecollege.org/public/pb_student_reg2.asp"><=
B>creating=20
                  a profile,</B></A> registered users will be able to =
manage=20
                  their continuing education with access to provider =
class=20
                  offerings and the course completion data used to renew =
their=20
                  certification.</P>
                  <P></P></TD></TR>
              <TR>
                <TD>
                  <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"90%" =
border=3D0>
                    <TBODY>
                    <TR vAlign=3Dtop>
                      <TD align=3Dleft>
                        <TABLE cellSpacing=3D0 cellPadding=3D0 =
width=3D"100%"=20
border=3D0>
                          <TBODY>
                          <TR>
                            <TD>&nbsp;</TD></TR>
                          <TR>
                            <TD>
                              <TABLE id=3DtblTab cellSpacing=3D2 =
cellPadding=3D3=20
                              border=3D0 name=3D"tblTab">
                                <TBODY>
                                <TR>
                                <TD=20
                                =
class=3D"&#13;&#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#=
9;&#9;&#9;&#9;&#9;TabOn&#13;&#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;=
&#9;&#9;&#9;&#9;&#9;&#9;&#9;"=20
                                width=3D74=20
                                =
background=3Dhttps://floridastatefirecollege.org/images/bgd_tab_80x20.gif=
><A=20
                                onblur=3D"window.status=3D''; return =
true;"=20
                                onmouseover=3D"window.status=3D'My =
In-Box - Public'; return true;"=20
                                title=3DAnnouncements=20
                                onfocus=3D"window.status=3D'My In-Box'; =
return true;"=20
                                onclick=3D"GoInbox('TAB1'); return =
false;"=20
                                onmouseout=3D"window.status=3D''; return =
true;"=20
                                href=3D"javascript:;">Announcements =
</A></TD>
                                <TD=20
                                =
class=3D"&#13;&#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#=
9;&#9;&#9;&#9;&#9;TabOff&#13;&#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9=
;&#9;&#9;&#9;&#9;&#9;&#9;&#9;"=20
                                width=3D74=20
                                =
background=3Dhttps://floridastatefirecollege.org/images/bgd_tab_80x20.gif=
><A=20
                                onblur=3D"window.status=3D''; return =
true;"=20
                                onmouseover=3D"window.status=3D'My =
In-Box - Public'; return true;"=20
                                title=3DTesting=20
                                onfocus=3D"window.status=3D'My In-Box'; =
return true;"=20
                                onclick=3D"GoInbox('TAB2'); return =
false;"=20
                                onmouseout=3D"window.status=3D''; return =
true;"=20
                                href=3D"javascript:;">Testing </A></TD>
                                <TD=20
                                =
class=3D"&#13;&#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#=
9;&#9;&#9;&#9;&#9;TabOff&#13;&#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9=
;&#9;&#9;&#9;&#9;&#9;&#9;&#9;"=20
                                width=3D74=20
                                =
background=3Dhttps://floridastatefirecollege.org/images/bgd_tab_80x20.gif=
><A=20
                                onblur=3D"window.status=3D''; return =
true;"=20
                                onmouseover=3D"window.status=3D'My =
In-Box - Public'; return true;"=20
                                title=3DRegistration=20
                                onfocus=3D"window.status=3D'My In-Box'; =
return true;"=20
                                onclick=3D"GoInbox('TAB3'); return =
false;"=20
                                onmouseout=3D"window.status=3D''; return =
true;"=20
                                href=3D"javascript:;">Registration =
</A></TD>
                                <TD=20
                                =
class=3D"&#13;&#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#=
9;&#9;&#9;&#9;&#9;TabOff&#13;&#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9=
;&#9;&#9;&#9;&#9;&#9;&#9;&#9;"=20
                                width=3D74=20
                                =
background=3Dhttps://floridastatefirecollege.org/images/bgd_tab_80x20.gif=
><A=20
                                onblur=3D"window.status=3D''; return =
true;"=20
                                onmouseover=3D"window.status=3D'My =
In-Box - Public'; return true;"=20
                                title=3D"NEW - Digital Fingerprints"=20
                                onfocus=3D"window.status=3D'My In-Box'; =
return true;"=20
                                onclick=3D"GoInbox('TAB4'); return =
false;"=20
                                onmouseout=3D"window.status=3D''; return =
true;"=20
                                href=3D"javascript:;">NEW - Digital =
Fingerprints=20
                                =
</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY=
></TABLE></TD></TR>
              <TR>
                <TD>
                  <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"90%" =
border=3D0>
                    <TBODY>
                    <TR>
                      <TD>
                        <TABLE cellSpacing=3D0 cellPadding=3D1 =
width=3D"100%"=20
border=3D0>
                          <TBODY>
                          <TR>
                            <TD class=3DDarkBorder>
                              <TABLE cellSpacing=3D0 cellPadding=3D0 =
width=3D"100%"=20
                              border=3D0>
                                <TBODY>
                                <TR>
                                <TD class=3DDataTableName>Public=20
                                Information</TD></TR>
                                <TR>
                                <TD class=3DDataTableContent><B>Note =
1:</B> When=20
                                completing a renewal, exam or =
certification=20
                                application, the system will ask you to =
fax,=20
                                attach or mail supporting documents with =
a check=20
                                box for each. If your supporting =
documents are=20
                                already in the system (such as courses =
that show=20
                                under course history or hours under =
renewal=20
                                history), select "to be mailed" and =
continue.=20
                                Should you have documents to fax, mail =
or=20
                                attach, attach if possible, or fax to=20
                                (352)732-1374. When you fax, note on the =
cover=20
                                sheet, "see on-line application". =
<B>Note 2:</B>=20
                                Renewals: When we review your on-line=20
                                application, your course and renewal =
history=20
                                pages are utilized in determining total=20
                                applicable CEU's=20
                              =
accumulated.</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR=
></TBODY></TABLE><BR></TD></TR>
              <TR>
                <TD>
                  <P>
                  <H3><FONT color=3D#990000>What's New</FONT></H3>
                  <P>Florida's firefighters will access the continuing =
education=20
                  system to search for available training, inquire about =
their=20
                  continuing education status, or check on their =
continuing=20
                  education certificate renewal requirements. The system =
will=20
                  send reminder messages (e-mail or in-box messages) =
prior to=20
                  the individual's renewal date informing them of =
training=20
                  available in their area. The certificate holders will =
be able=20
                  to tailor the system to get the information they want, =
how=20
                  they want it, and when they want it.</P>
                  <P></P>
                  <P></P></TD></TR></TBODY></TABLE></FORM></TD>
          <TD vAlign=3Dtop align=3Dmiddle width=3D"15%">
            <FORM id=3DfrmLogin onkeydown=3DcheckKeyPressed(); =
name=3DfrmLogin=20
            method=3Dpost><INPUT id=3DhAction type=3Dhidden =
name=3DhAction> <INPUT=20
            id=3DhValidateLogin type=3Dhidden name=3DhValidateLogin>=20
            <TABLE cellSpacing=3D0 cellPadding=3D4 width=3D127 =
border=3D0>
              <TBODY>
              <TR>
                <TD class=3DPublicSidebarTitle>Login =
</TD></TR></TBODY></TABLE>
            <TABLE cellSpacing=3D0 cellPadding=3D1 width=3D127 =
border=3D0>
              <TBODY>
              <TR>
                <TD class=3DDarkBorder>
                  <TABLE class=3DPublicSidebar cellSpacing=3D0 =
cellPadding=3D3=20
                  width=3D"100%" border=3D0>
                    <TBODY>
                    <TR>
                      <TD class=3DDataTableContent=20
                        width=3D"53%"><U>N</U>ame<BR><LABEL =
for=3DmlLogin><INPUT=20
                        id=3DmlLogin accessKey=3DN maxLength=3D14 =
size=3D14=20
                        name=3DmlLogin> </LABEL></TD></TR>
                    <TR>
                      <TD class=3DDataTableContent=20
                        width=3D"53%"><U>P</U>assword<BR><LABEL=20
                        for=3DmPPassword><INPUT id=3DmPPassword =
accessKey=3DP=20
                        type=3Dpassword maxLength=3D14 size=3D14 =
name=3DmPPassword>=20
                        </LABEL></TD></TR>
                    <TR>
                      <TD class=3DDataTableContent align=3Dright><A=20
                        onblur=3D"return ImageUp('imgLogin');"=20
                        onmouseover=3D"return ImageDown('imgLogin', =
'Login');"=20
                        onfocus=3D"return ImageDown('imgLogin', =
'Login');"=20
                        onclick=3D"login(); return false;"=20
                        onmouseout=3D"return ImageUp('imgLogin');"=20
                        href=3D"javascript:;"><IMG id=3DimgLogin =
height=3D16 alt=3DLogin=20
                        =
src=3D"https://floridastatefirecollege.org/images/buttons/btn_login_up.gi=
f"=20
                        width=3D50 border=3D0 name=3DimgLogin></A> =
</TD></TR>
                    <TR>
                      <TD class=3DDataTableContent align=3Dright><A=20
                        class=3DSmallText=20
                        =
href=3D"https://floridastatefirecollege.org/public/pb_password.asp">Forgo=
t=20
                        your=20
            =
Password?</A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></FORM>
            <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D145 =
border=3D0>
              <TBODY>
              <TR>
                <TD class=3DBreadCrumbs>&nbsp;</TD></TR>
              <TR>
                <TD class=3DBreadCrumbs>
                  <DIV align=3Dcenter>We accept the following major =
credit=20
                  cards:</DIV></TD></TR>
              <TR>
                <TD class=3DBreadCrumbs align=3Dmiddle>
                  <TABLE cellSpacing=3D0 cellPadding=3D1 width=3D"100%" =
border=3D0>
                    <TBODY>
                    <TR>
                      <TD>
                        <DIV align=3Dcenter><IMG height=3D18 =
alt=3DMasterCard=20
                        =
src=3D"https://floridastatefirecollege.org/images/ico_cc_mastercard.jpg" =

                        width=3D28></DIV></TD>
                      <TD>
                        <DIV align=3Dcenter><IMG height=3D18 alt=3DVisa=20
                        =
src=3D"https://floridastatefirecollege.org/images/ico_cc_visa.jpg"=20
                        width=3D28></DIV></TD></TR></TBODY></TABLE>100% =
Secure=20
                  Transactions </TD></TR>
              <TR>
                <TD class=3DBreadCrumbs align=3Dmiddle><BR>This site has =
been=20
                  designed for MS IExplorer<BR><A=20
                  onclick=3D"Explorer(); return false;" =
href=3D"javascript:;"><IMG=20
                  height=3D25 alt=3D"Get MS Internet Explorer"=20
                  =
src=3D"https://floridastatefirecollege.org/images/ico_explorer.jpg"=20
                  width=3D70 border=3D0></A> <BR>Download the latest =
128-bit=20
                  encrypted =
browser<BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!--BEGIN:=
 EXTRA CONTENT--><!--END: EXTRA CONTENT--><!--END: CONTENT =
SECTION--><BR><BR></DIV></TD>
  <TR></TR></TBODY></TABLE><!--BEGIN: FOOTER--><!--<table =
align=3D"center" border=3D"0" cellpadding=3D"0" cellspacing=3D"0" =
width=3D"780">
	<tr>
	    <td colspan=3D"3"><img border=3D"0" height=3D"17" =
src=3D"../images/layout/footer_disclaimer.gif" width=3D"780"></td>
	</tr>
</table>-->
<TABLE cellSpacing=3D0 cellPadding=3D0 width=3D780 align=3Dcenter =
border=3D0>
  <TBODY>
  <TR height=3D25>
    <TD vAlign=3Dtop align=3Dmiddle width=3D718><IMG height=3D17=20
      =
src=3D"https://floridastatefirecollege.org/images/layout/footer_disclaime=
r.gif"=20
      width=3D780 border=3D0> </TD></TR></TBODY></TABLE><!--END: =
FOOTER--></BODY></HTML>

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: https://floridastatefirecollege.org/images/layout/headerimage.jpg

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
D4QiQqJIiiqYKi8UVFoAiIigiiCKJgiJwREoBABfEKL9qY0AREUwFERPYnCg+5RxxwTFemgUBURe
lMaD4oivSiLQEEU6ERPsoPqiJJgSIqexaAiIiYImCexKD4oAvSKL+SgZRwwwTD2UHF5hl5k2HQFx
lwVBxskRRISTBUVF6UWg1rTO2ejtMTTl2GGcBHFMlitPPd2QnMMxCwpq2irh1DQbPlHNmwTMiYIX
XhQfaAiInQmFAoOPKaxxyDj7cEoOSoi9KY0HxABFxQURfbhQFAFXFRRV9qpQfaBQKBQKBQKBQKBQ
KBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQK
BQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQdUspQxXihttvSxbJY7Txq02biIuQTcEH
SAVLgpIBYexeig1rxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxL
dP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L
1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfn
cz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek
0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJ
bp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5
esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j8
7mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0
mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0Dx
LdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/
L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esf
ncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87me
k0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mge
Jbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP
5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j87mek0DxLdP5esfncz0mgeJbp/L1j
87mek0DxLdP5esfncz0mgmrI/f3oplfIUSDLRxUBqFKcmtq3gmBK47HhkhZsUy5F6uPHBAkKBQKB
QKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQ
KBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKD//2Q==

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: https://floridastatefirecollege.org/images/layout/spacer.gif

R0lGODlhAQABAJECAAAAMwAAAP///wAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: https://floridastatefirecollege.org/images/buttons/btn_login_up.gif

R0lGODlhMgAQAPcAAAAAgIZ4Z4Z4aI6BcI6BcY+BcpCDc5CEdJSIeZeLfZiMfpmNf52Sg5+UhqCV
h6GWiaKYi6abj6ackKedkquil6yil66kmraupLeupLixprqzqb+4r7+4sMC5sMC5scO8tMnCu87J
wtDMxtPNyNTPydXQy9bSzdjTzdrV0dzZ1N3Z1N7a1d7a1uLe2+Lf2uLf3OXi3ufk4ejm4unm4+jm
5Oro5ero5uvq6Ozr6e3q6O/t6/Dv7PHv7fDw7/Hw7vLx7/Py8PPy8fTz8vX08vX08/f29ff39vj3
9vj49/n49/n4+Pn5+Pr5+fr6+fv6+vv7+/z8+/z8/P38/P39/f7+/v///////wAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFYALAAAAAAyABAA
QAj+AK0IFLjDxw8gRBIqXMiwocOFQH742DFQ4IEILZxU2VgFAACOGz2G/NiRpMiSI1OCdNIiwgEY
Fz7QWMLxJMibOHPq5LiExocLMKxsKAChhA4jUKJIWcq0qVOPHp1KXRoFihEdJSAU2DAwRQgUN4Qw
gbKzrNmNUJgIuYEiRAqBFiqsSEKlJkm7Kk/qNckXJJUkKypYyEBgA44pdqHytVkSat6+HKfg2EAg
w8AOCQgoeCBhgufPoEOLHg1awgMFBBJ0qCgwBosXNnoQqUG7tu3buHPbJtLDxgsWMSqe4CAiB5Ip
VBifvanc7xQkOURwOGEFBIURQeqqBKmYe3eUjZVuUwkyggKIBBRgPPHOHPLex9s3PoFBIUGDBSSK
aAePF/x7/5BtREURJCzQgAoIOGDCEMvt1FxZQ5jgAAIqCISBAQx4QIILMujm4Ye3yeACCR4wYAAG
rAmkwQMDBCDAizDGKOOMNMYYwAAPaMBaQAAAOw==

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: https://floridastatefirecollege.org/images/ico_cc_mastercard.jpg

/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAcEBAQFBAcFBQcKBwUHCgwJBwcJDA0LCwwLCw0RDQ0N
DQ0NEQ0PEBEQDw0UFBYWFBQeHR0dHiIiIiIiIiIiIiL/2wBDAQgHBw0MDRgQEBgaFREVGiAgICAg
ICAgICAgICAhICAgICAgISEhICAgISEhISEhISEiIiIiIiIiIiIiIiIiIiL/wAARCAASAB0DAREA
AhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAABAUGAwf/xAAqEAABAwIFAgUFAAAAAAAAAAABAgME
BREABhITIUFRBxQiMTIVYXGBkf/EABgBAAMBAQAAAAAAAAAAAAAAAAQFBgMC/8QAKhEAAQMCBQMC
BwAAAAAAAAAAAQACAwQRBRIhMUETIjIUUSNCYXGRoeH/2gAMAwEAAhEDEQA/AKjxCzznSVPfYorU
hnLscFO+wk3eAXtFeschO4NICcDPceNlRYfRwtAMljIePb+8pPlXNWf6YvzbUiVJpPxW2+lTg1Hp
6uUqHcYCq6iSNnb5Iuejpn6G1/porQVHMKg3L3JAU6NSL3vz3T0/eIuWeua7M4vusulB49uiqKFX
fMw71NOh5PAWoW1jvbFXhGMF8XxhZw/aT1dGGu7Nly3N9fzlkyqKogDYpKDemuqa+TerWmy+q0qv
cYalxbom1JDDUNz/ADc/dY0LxSzpLmGGxtKkOD0hDVz9yq3Qd8CVkz2tzC5stZMLhG6tItZnJZ1s
qR50t7bzpHqXxa4VfEc7F5C8uZYOOh91iaNnN8idUOmP1RhUqpAt9GePcckn+nDjDqGSqbnmuPbR
A1NQ2E5WJxPhxJtNcbmMokN6b6XUhY9uyr4qXJdA4g6IPKFKpkSmlcWKywtRspTbaUE/mwGOWhaV
0jr7lELgQfqwVsN376E4Xemj6/i38Bd9R3T3KJqSlJWkJNhb2GHAGiCK/9k=

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: https://floridastatefirecollege.org/images/ico_cc_visa.jpg

/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAcEBAQFBAcFBQcKBwUHCgwJBwcJDA0LCwwLCw0RDQ0N
DQ0NEQ0PEBEQDw0UFBYWFBQeHR0dHiIiIiIiIiIiIiL/2wBDAQgHBw0MDRgQEBgaFREVGiAgICAg
ICAgICAgICAhICAgICAgISEhICAgISEhISEhISEiIiIiIiIiIiIiIiIiIiL/wAARCAASAB0DAREA
AhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAgUAAwYE/8QAKxAAAQMDBAEDAgcAAAAAAAAAAQID
BAUGEQASEyEiBxRBMpEWMUJRUmGx/8QAGQEAAgMBAAAAAAAAAAAAAAAAAAIDBAUB/8QALBEAAQMD
AgQDCQAAAAAAAAAAAQACAwQRIRNRBQYxkRIWUiIjMkFCQ3GB8P/aAAwDAQACEQMRAD8A77l9OL7M
R26GK9Gptu8TbxDpcy2nYApSgltX68nWtRy03hDTH4pFUlZJk3sEln2fdlOkKjTr3pzLqBuXuW7g
DZyEZ4sZ2kHH96tB1M77JUNn+oKxmwr8ccp7RuyI1Iqa1tU9h7nbcdW2Mq8VNA9D50OfTi/uvh/t
10NkP1J3+ELts9PDck9Ex6UdzC2FL6SjAIPin5OsurnhcfYbYKzHG8dStzNqtKn2Cq2JHMyuVB9u
X0ISrbyI6UASM4zrDPHYqabIdgrVZwiSaO4LcrNu21QghIYlLc2wDAU3NiokNuF5e+U+55A8jxCe
89AY1N5yh9Dut8Y/H6CXy3L8i1DTbZpMSZSp0qs1GdKpDzSo6n0II9uyhSUsfnkfWTuzodzjAQQG
EB1+6By5Ne5cMJj6kV2JWH4bkdC0htKwdw/cjS0fEGTtuMLk9E6I2JSR1xxMhaEqISFKAAPXWpnR
NLsgKuJHAYJQ8z381fc65oM2HZPqu3Kheex9avudGgzYdkartyrIYDySXfMj5V3/ALqaKNoHQJZH
Elf/2Q==

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: https://floridastatefirecollege.org/images/ico_explorer.jpg

/9j/4AAQSkZJRgABAQEASABIAAD//gAfR2lmQnVpbGRlciAwLjUgYnkgWXZlcyBQaWd1ZXT/2wBD
AAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5
PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAZAEYDAREAAhEBAxEB/8QAGwAAAQUBAQAAAAAAAAAA
AAAAAAIEBQYHAQj/xAAxEAABAwMDAgQFAgcAAAAAAAABAgMEBRESAAYhEzEHIkFhFSNCUYEkcTI2
UnSxstH/xAAYAQEBAQEBAAAAAAAAAAAAAAAABQQGA//EACwRAAIBAwIEBQMFAAAAAAAAAAABAgMR
IQRREjFBkQUTIjLwYYHRcaGx4fH/2gAMAwEAAhEDEQA/AL7VZ1Wbr8hbVc6UdEhCRG8t7XsR3v6D
0+rUmc6vn4ni6x8+ZOno0dM9Gr0by4W+LO3Pb/CKleIFWjbkdpZYCmUvhAfCucA2FK4+4KkDv9Xt
qscwLh+I8iRGQ70nl/K6iwgpCgA2pZOF7i+PA5vcc99AKPiM+MD0XSFMly6Xmz2Xj3HGHrnfG1/s
dAFM3/UqjWkxhHdRFcUG0uqUjyq6Qc555vkALD0vc34AskmqzmorziZCskoUocDuBoDAaf4w+I9V
kdCFKadctchMZPA9zr0pUp1XaCuedSrCmrzdiSk+I/ifCiOSZMxhLaO4bjoWf3sPTWmWgqwi5z5f
TJnWtpSlwxeexAVrxQ3jWNuIW/WHmVtzMQqL8kkYX5x/fWNqzsa07q5tlc6bdekKXTW1KVKQBJLq
QR5jby2vc3I7/T7aiVbKvdx6rP3+djrtPxPR2VTlF4s9t7226dSH3jNmOPwGqFJDk9h11bjDLoKu
GV45JvyMseD7atHJEF099qEKStUpT7MpwdMNpShaVMpKcwPpDl039OdAKo83fE5mOlS0padl9Nx8
NJWptGBzHYdlcDjg/e2gErl+IQTIUGFlLieB0kpLQ6yk+WwJJwxV2PfsdAPtvo3T8TlSK4uSY71M
4TYdMLBUPwopsTwL3/GgKbsnp0jagLQ/XS8nHHALltHYAe//AHVTwyDqpt+1Pu/wiVr5qMrdf4X9
jnasqFJTMSqZU6iAfOFxyemeeNUKOqUb2bl+qMdei8elR+5n1YQ03TpqGAQ0mqKCARYgYnUHUW82
Vty5QbdOLfOx6C3JV6ezuSTHNdDDyZrZciLfUEEXJPH8P9B5+x1z9WMvPw37ljNvxsdlppwWj9UY
+yWfTe9sdb7/ALFYcpRTW9wTGKpt4pqOZYeM3B5olIA8wTcWIvwf86tHJEa/Sqk9UI8dW4YClsRL
JqBqagAvr5Z29V428p8vvoByigTGsA1u2lIAccWgpmFPQUp4r6gA4WSk2KTYe+gEztuypEdJTu+E
t9T7q15VIhIBN2lJ4Nim5Nrep57aAsdFbYpvxh+fuSJNeklQY/WAhKMRxiTYEkHt7aAx6A7XoAZK
I5V004KbLqMVC5se/B51t0+sdCKUexkraVVW3Ifya7uZcZTMWA1GKwQVpdST+Ode9TxWpKPDFWPC
HhsFJSk72K1NiSIW3A3LAS65MzAzCiRh34OpbyUju9/57r39+9/udAQOgDQBoA0AaANAGgDQH//Z

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: https://floridastatefirecollege.org/images/layout/footer_disclaimer.gif

R0lGODlhCwMRAPcAAAAAAP///6i3x7HA0ODm7QI0ZxJBcSFNeSJNejJahEFnjUtvk0prjFF0l2GA
oHGNqoGas5GnvaGzxvDz9sDN2dDa49/m7P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABcALAAAAAALAxEA
AAj+AAsIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuX
MGPKnEmzps2bOHPqzBmgZ8+CPgkGFTiU6E+ERQsUTeozgMKmP49GbCr06cWkSqlmfSh1YNeJTJ1u
Fap1LFKxVR1ClfkVaNm2T9EahLuzrt27ePNW/Io2qli/W48CnutUcOHDZukS9ipX7d/HCRU3hMu3
sUTJk7sadmvUMWfPZl1K3gzWst7TqFOrRn04aOPNgGGbZtw5NmTQWcNSfj2091KsjP22rRz8Menc
UoHHTXyb9tjkWte+VX58uubfsosXn935uXG5v4P+04ZaFrn21egpMhCQvv3dv7U/2/YeenFgxIYx
d6fPn+x1ot1Bt59zg7nlW4CIEXhbcwwVeByCEPLnIIMRZichg4NZONqCCWoIH32khUiheyQitJ4A
3JWoYkuFeQWgc/fFKONBAs6n1IBnKWhUef41F11fa8mX4Gc6znjheZkxh2OQR4IIJF1Mkmfedhh2
KN2IZEFYHnE7QiZilw+uKKYAFign5pkptfgikFnamKGA4+HHW4Ns9rfQl9WlaCGRFQ7ZZIE7EhZk
mBP2WRtvww25W5ihvSnkcv39+KiHEWaJpooWZMrjpZyWpGZUMB4qI6Chxugoo/t9Wd+fVhZpKanh
S3LYqKxGQtpkkaruyWiurd4aqJa0vuqlrHgOa6id+nVqU6aaMqnssyK1dh124lUrKHRP+lcqjHlC
GVaX3JopqX3hPojtubipGi5zB0ZKXZ3WgReetkgOalmU39HLrrHuwokjtDgxS56ZABd81Zx2pWhw
enUu7PDDHDFb5sA+WQDxxRQ5u5PCGLNGcMcgh1yAxBSTl6nIKKes8sostyySxBOXPPDJLtds8804
5+wwzDL33BPNOgct9NBEFx0TzDH7rDTQRjft9NNQR20Q0kpXPTPTUmet9dZcL4x00laHHRAAADs=

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: https://floridastatefirecollege.org/images/bgd_tab_80x20.gif

R0lGODlhUAAUAPcAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBm
ZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/
mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNm
zDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP/
/2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZ
AGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkA
M5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZ
ZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswA
mcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZ
zMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A
//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///M
AP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///////wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANgALAAAAABQABQA
QAhTAK8JvIatoMGDCBMqXMiwocOEAwk+nEixosWLGDNq3Mixo8ePIEMqlCiyJEaBJlOqXMmypcuX
MCmijNnS2kCaMEni3Mmzp8+fQIMKHUq0qFGQAQEAOw==

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: https://floridastatefirecollege.org/include/style_css.js

//<script>
document.write('<link rel=3D"stylesheet" type=3D"text/css" =
href=3D"../include/doi.css" />');
document.write('<link rel=3D"stylesheet" type=3D"text/css" =
href=3D"../include/style.css" />');

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: application/octet-stream
Content-Transfer-Encoding: 7bit
Content-Location: https://floridastatefirecollege.org/include/script/button_preload_updown.js

// <script>
<!--
// To load the images after the window is loaded()
window.onload = preImages;

var arrayImagesUp	= new Array;
var arrayImagesDown	= new Array;

function preImages()	{
	// to count number of buttons in the page, temporal string
	var item, j=0, s, oImg;

	for (var i = 0; i<document.images.length; i++)	{
		item = document.images[i];
		s = item.src.toLowerCase();
		
		if (s.indexOf('_up.') != -1)	{
			var ipos = s.indexOf('/images/');
			if (ipos > 0) s = '..'+s.substr(ipos);

			arrayImagesUp[j] = new Image();
			oImg = arrayImagesUp[j];
			oImg.src = s;

			arrayImagesDown[j] = new Image();
			oImg = arrayImagesDown[j];
			oImg.src = s.replace('_up.', '_down.');

			j++;	// increase the array index
		}	// if
	}	// for
}	// preImages


function ImageDown(pImg, pStatus){
	if (pStatus != null) window.status = pStatus;
	
	var oImg = getImage(pImg);
	if (oImg == null) return true;

	var s = oImg.src.replace('_up.','_down.');
	var ipos = s.indexOf('/images/');
	if (ipos > 0) s = '..'+s.substr(ipos);
	oImg.src = s;

	return true;
} //ImageDown

function ImageUp(pImg){
	window.status = '';
	
	var oImg = getImage(pImg);
	if (oImg == null) return true;

	var s = oImg.src.replace('_down.','_up.')
	var ipos = s.indexOf('/images/');
	if (ipos > 0) s = '..'+s.substr(ipos);
	oImg.src = s;

	return true;
} //ImageUp

function getImage(n, d) {
	var p, i, x;  

	if(!d) d=document; 
	
	if ( (p=n.indexOf("?"))>0 && parent.frames.length )	{
		d = parent.frames[n.substring(p+1)].document; 
		n = n.substring(0,p);
	}
  
	if (!(x=d[n]) && d.all) x = d.all[n]; 
	
	for (i=0; !x && i<d.forms.length; i++) 
		x = d.forms[i][n];
	
	for (i=0; !x && d.layers && i<d.layers.length; i++) 
		x = getImage(n, d.layers[i].document);
  
	if (!x && document.getElementById) x = document.getElementById(n); 
	
	return x;
} //getImage

//-->
//</script>

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: https://floridastatefirecollege.org/include/script/validation.js

// <script>
<!--

    =
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
	Function: validateFloat
	Purpose:  validate a numebr(7,2) entry
	Input:    a text form element
	Returns:  true if the number is valid, false otherwise
	=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
	function validateFloat(element, precision) {
	  var index, cad1, cad2, number, format;
	    if (!precision) {
			precision =3D 4;
	    }
	    format =3D "";
	    for(i=3D1;i<=3Dprecision;i++) {	   =20
	      format =3D format + "#";
	    }
	    number =3D element.value;	   =20
		number =3D number.replace(',','.');
		element.value =3D number;
		index =3D number.indexOf('.');
		if (number.charAt(0)=3D=3D'-') {
			alert("Only positive numbers.");
			element.focus();
			return false;
		}
		if (index > 0) {
			if (index <=3D precision) {
			  cad1 =3D number.substring(0,index);
			  cad2 =3D number.substring(index+1,number.length);						 =20
			  if ((cad2.length > 2)||(cad1.length > precision)) {
				alert("Invalid number. ("+format+".##)");
				element.focus();
				return false;
			  }					=09
			  if (!isInteger(cad1)) {
			    element.focus();
				return false;
			  }
			  if (!isInteger(cad2)) {
			    element.focus();
				return false;
			  }
			} else {
				alert("Invalid number. ("+format+".##)");
				element.focus();
				return false;
			}											=09
		} else {
			if (number.length > precision) {
				alert("Invalid number. ("+format+".##)");
				element.focus();
				return false;
			} else {
				if (!isInteger(number)) {
			      element.focus();
				  return false;
			    }
			}
		}=09
	 return true;
	}

/************************************************************************=
**************
// validates a date.  Must be one of the following formats
// mm/dd/yyyy, mm-dd-yyyy.
// pass in the name of the date field to be validated
*************************************************************************=
*************/
function isDate(DateField, bOmitMsg) {
	// get the value of the field into a variable
=09
	var inputStr =3D DateField.value
	// convert hyphens to slashes
	while (inputStr.indexOf("-") !=3D -1) {
		inputStr =3D inputStr.replace("-","/");
	}
	// validate the date has two slashes
	var delim1 =3D inputStr.indexOf("/");
	var delim2 =3D inputStr.lastIndexOf("/");
	if (delim1 !=3D -1 && delim1 =3D=3D delim2 ) {
		if (bOmitMsg) return false;
		// there is only one delimeter in the date
		alert("Invalid date format.  Dates must be entered mm/dd/yyyy =
format.");
		DateField.focus();
		DateField.select();
		return false;
	}
	// there are no slashes so prompt the user
	if (delim1 =3D=3D -1 || delim2 =3D=3D -1) {
		if (bOmitMsg) return false;
		alert("Invalid date format.  Dates must be entered mm/dd/yyyy =
format.");
		DateField.focus();
		DateField.select();
		return false;
	}
	else {
		// if there are delimeters, parse the string into month, day, year
		// use 10-base to convert in case user has zeros in front of dd or mm		=

		// if there are delimeters, parse the string into month, day, year
		// use 10-base to convert in case user has zeros in front of dd or mm		=

		var mm =3D inputStr.substring(0,delim1);
		var dd =3D inputStr.substring(delim1+1,delim2);
		var yyyy =3D inputStr.substring(delim2+1,inputStr.length);
	=09
		// CC#1071 - Check that all values are only digits.
		if (! isOnlyDigits(mm) || !isOnlyDigits(dd) || !isOnlyDigits(yyyy))
		{
			if (bOmitMsg) return false;
			alert("You have a non-numeric value in the date field.");
			DateField.focus();
			DateField.select();
			return false;	=09
		}
		mm =3D parseInt(mm,10);
		dd =3D parseInt(dd,10);
		yyyy =3D parseInt(yyyy,10);
	=09
	}
	// The parseInt function returns NaN if the result is not a number, so=20
	// check all date fields for non-numeric entry
	if (isNaN(mm) || isNaN(dd) || isNaN(yyyy)) {
		if (bOmitMsg) return false;

		alert("You have a non-numeric value in the date field.");
		DateField.focus();
		DateField.select();
		return false;
	}
	// validate month as 1 <=3D month =3D> 12
	if (mm < 1 || mm > 12) {
		if (bOmitMsg) return false;

		alert("Invalid date.  " + mm + " is not a valid month.");
		DateField.focus();
		DateField.select();
		return false;
	}
	// validate day as 1 <=3D day =3D> 31
	if (dd < 1 || dd > 31) {
		if (bOmitMsg) return false;
		alert("Invalid date.  " + dd + " is not a valid day.");
		DateField.focus();
		DateField.select();
		return false;
	}
	// validate year as 1900 <=3D day =3D> 2999
	if (yyyy < 1900 || yyyy > 2999) {
		if (bOmitMsg) return false;
		alert("Invalid date.  " + yyyy + " is not a valid year.");
		DateField.focus();
		DateField.select();
		return false;
	}
	// check day to ensure it falls in the month
	if (!checkMonthLength(mm,dd,bOmitMsg)) {
		if (bOmitMsg) return false;
		DateField.focus();
		DateField.select();
		return false;
	}
	if (mm =3D=3D 2) {
		// check for a leap month
		if (!checkLeapMonth(mm,dd,yyyy,bOmitMsg)) {
			if (bOmitMsg) return false;
			DateField.focus();
			DateField.select();
			return false;
		}
	}
	// all is well with the date
	return true;
}

// Ensure the day passed in is valid for the month passed in

function checkMonthLength(mm,dd,bOmitMsg) {
	var months =3D new=20
				Array("","January","February","March",
							"April","May","June",
							"July","August","September",
							"October","November","December");

	if (isNaN(dd))	{
		if (bOmitMsg) return false;
		alert("Invalid day entered.");
	}
	else if ((mm =3D=3D 4 || mm =3D=3D 6 || mm =3D=3D 9 || mm =3D=3D 11) && =
dd > 30) {
		if (bOmitMsg) return false;
		alert(months[mm] + " has only 30 days.");
	}
	else if (dd > 31) {
		if (bOmitMsg) return false;
		alert(months[mm] + " has only 31 days.");
	}
	else if (dd < 1)	{
		if (bOmitMsg) return false;
		alert("Enter a valid day number.");
	}
	else	{
		return true;
	}

	return false;
}


// check the entered Feb date for a leap year
function checkLeapMonth(mm,dd,yyyy,bOmitMsg) {
	// if month is different than february don't do any validation
	if (mm !=3D 2) return true;
=09
	if (yyyy % 4 > 0 && dd > 28) {
		if (bOmitMsg) return false;
		alert("Invalid date.  February of " + yyyy + " has only 28 days.")
		return false;
	}
	else if (dd > 29) {
		if (bOmitMsg) return false;
		alert("Invalid date.  February has only 29 days.")
		return false;
	}
	return true;
}



/************************************************************************=
**************
Function: dateCompare
Purpose:  compare two dates: <d1> and <d2>. (entered in a format =
mm/dd/yyyy)
Input:    s1 - date text 1.  s2 - date text 2.
Returns:  0: s1=3Ds2
		 -1: s1>s2
		  1: s1<s2
*************************************************************************=
*************/
function dateCompare(s1, s2) {
	var date1=3Dnew Date(s1),date2;
=09
	if (!s2)	date2=3Dnew Date();
	else		date2=3Dnew Date(s2);

	var d1=3Ddate1.getDate(), m1=3Ddate1.getMonth()+1, =
y1=3Ddate1.getFullYear();
	var d2=3Ddate2.getDate(), m2=3Ddate2.getMonth()+1, =
y2=3Ddate2.getFullYear();

	if (y1=3D=3Dy2)	{
		if (m1=3D=3Dm2)	{
			if (d1=3D=3Dd2)	return 0;
			if (d1>d2)  return -1;
			else		return 1;
		}
		if (m1>m2)	return -1;
		else		return 1;
	}

	if (y1>y2)	return -1;
	else		return 1;
}


/************************************************************************=
**************
Function: dateDelimitedFormat
Purpose:  format a date in a valid format to a delimited format: =
"mm/dd/yyyy"
			Add to date box: <input ... =
onblur=3D"this.value=3DdateDelimitedFormat(this.value)" ID=3D"Text1" =
NAME=3D"Text1">
Input:    pDate: string date to be formatted.
Returns:  formatted date.
*************************************************************************=
*************/
function dateDelimitedFormat(pDate) {
	var kSEP =3D "/";		// separator or delimiter character.
	var dd=3D'', mm=3D'', yyyy=3D'';	// day, month and year variables
=09
	var sDate		=3D Trim(pDate);
=09
	if (sDate.length > 0) {
		// Put all the date parts into an array
		var aDate =3D Array();
		aDate =3D sDate.split(kSEP);

		// Trim every all the date parts
		for (var i=3D0; i<(aDate.length); i++) {
			aDate[i] =3D Trim(aDate[i]);
			}
	=09
		switch (aDate.length) {
			case 1: //No separators
					if ((sDate.length =3D=3D 4) || (sDate.length =3D=3D 6) || =
(sDate.length =3D=3D 8)) {
						mm		=3D sDate.substr(0, 2);
						dd		=3D sDate.substr(2, 2);
						yyyy	=3D sDate.substr(4, 4);
						}
					else
						return(pDate);
					break; //1
			case 2: //1 separator
					if ((sDate.length >=3D 3) && (sDate.length <=3D 5)) {
						mm		=3D aDate[0];
						dd		=3D aDate[1];
						}
					else
						return(pDate);
					break; //2
			case 3: //2 separators
					if ((sDate.length >=3D 4) && (sDate.length <=3D 10)) {
						mm		=3D aDate[0];
						dd		=3D aDate[1];
						yyyy	=3D aDate[2];
						}
					else
						return(pDate);
					break; //3
			default: // More than 2 separators
					return(pDate);
			} // switch
		}//if sDate.length
	else
		return(pDate);
=09
	// Formatting Day and Month. If necessary, put leading zeroes
	if ((mm.length > 0) && isOnlyDigits(mm))
		mm =3D (mm>=3D10?"":"0") + parseInt(mm, 10);
	if ((dd.length > 0) && isOnlyDigits(dd))
		dd =3D (dd>=3D10?"":"0") + parseInt(dd, 10);

	// Formatting Year
	if ((yyyy.length > 0) && isOnlyDigits(yyyy)) {
		var nYear =3D parseInt(yyyy, 10);
		if (nYear < 1000)
			if ((nYear > 49) && (nYear <=3D 99))
				yyyy =3D 1900 + nYear;
			else
				yyyy =3D 2000 + nYear;
		}
	else
		if (yyyy.length =3D=3D 0) {
			var dToday =3D new Date();
			yyyy =3D dToday.getFullYear();
		}

	return(mm + kSEP + dd + kSEP + yyyy);
=09
} //dateDelimitedFormat

/************************************************************************=
**************
Function: datemmyyyyDelimitedFormat
Purpose:  format a date in a valid format to a delimited format: =
"mm/dd/yyyy"
			Add to date box: <input ... =
onblur=3D"this.value=3DdateDelimitedFormat(this.value)" ID=3D"Text1" =
NAME=3D"Text1">
Input:    pDate: string date to be formatted.
Returns:  formatted date.
*************************************************************************=
*************/
function datemmyyyyDelimitedFormat(pDate) {
	var kSEP =3D "/";		// separator or delimiter character.
	var mm=3D'', yyyy=3D'';	// month and year variables
=09
	var sDate		=3D Trim(pDate);
=09
	if (sDate.length > 0) {
		// Put all the date parts into an array
		var aDate =3D Array();
		aDate =3D sDate.split(kSEP);

		// Trim every all the date parts
		for (var i=3D0; i<(aDate.length); i++) {
			aDate[i] =3D Trim(aDate[i]);
			}

		switch (aDate.length) {
			case 1: //No separators
					if ((sDate.length =3D=3D 1) || (sDate.length =3D=3D 2) || =
(sDate.length =3D=3D 5) || (sDate.length =3D=3D 6)) {
						if (sDate.length =3D=3D 5) {
							mm		=3D sDate.substr(0, 1);
							yyyy	=3D sDate.substr(1, 4);						=09
							}
						else
							{
							mm		=3D sDate.substr(0, 2);
							yyyy	=3D sDate.substr(2, 4);
							}
						}
					else
						return(pDate);
					break; //1
			case 2: //1 separator
					if ((sDate.length >=3D 3) && (sDate.length <=3D 6)) {
						mm		=3D aDate[0];
						yyyy	=3D aDate[1];
						}
					else
						return(pDate);
					break; //2
			case 3: //2 separators
					if ((sDate.length >=3D 4) && (sDate.length <=3D 8)) {
						mm		=3D aDate[0];
						yyyy	=3D aDate[1];
						}
					else
						return(pDate);
					break; //3
			default: // More than 2 separators
					return(pDate);
			} // switch
		}//if sDate.length
	else
		return(pDate);
=09
	// Formatting Day and Month. If necessary, put leading zeroes
	if ((mm.length > 0) && isOnlyDigits(mm))
		mm =3D (mm>=3D10?"":"0") + parseInt(mm, 10);


	// Formatting Year
	if ((yyyy.length > 0) && isOnlyDigits(yyyy)) {
		var nYear =3D parseInt(yyyy, 10);
		if (nYear < 1000)
			if ((nYear > 49) && (nYear <=3D 99))
				yyyy =3D 1900 + nYear;
			else
				yyyy =3D 2000 + nYear;
		}
	else
		if (yyyy.length =3D=3D 0) {
			var dToday =3D new Date();
			yyyy =3D dToday.getFullYear();
		}

	return(mm + kSEP + yyyy);
=09
} //datemmyyyyDelimitedFormat

/************************************************************************=
**************
Function: hourDelimitedFormat
Purpose:  format an hour in a valid format to a delimited format: "hh:mi =
am/pm"
			Add to date box: <input ... =
onblur=3D"this.value=3DhourDelimitedFormat(this.value)" ID=3D"Text1" =
NAME=3D"Text1">
Input:    pTime: string hour to be formatted.
Returns:  formatted hour.
*************************************************************************=
*************/
function hourDelimitedFormat(pTime) {
	var kSEP =3D ":";		// separator or delimiter character.
	var hh=3D'', mi=3D'';	// hour, month and year variables
	var ampm =3D '';
	var sTime		=3D Trim(pTime);
	var sTime2;
=09
	if (sTime.length > 0) {
		ampm	=3D sTime.substr(sTime.length-2, 2).toLowerCase();
		if ((ampm !=3D "am") && (ampm !=3D "pm")) {
			ampm	=3D "am";
			if (sTime.length <=3D 5)
				sTime2	=3D sTime;
			else
				return (pTime);
			}
		else
			sTime2	=3D Trim(sTime.substring(0, sTime.length-2));

		// Put all the hour parts into an array
		var aTime =3D Array();
		aTime =3D sTime2.split(kSEP);

		// Trim every all the hour parts
		for (var i=3D0; i<(aTime.length); i++) {
			aTime[i] =3D Trim(aTime[i]);
			}
	=09
		switch (aTime.length) {
			case 1: //No separators
					if (sTime2.length > 2)
						return(pTime);
					else {
						hh		=3D sTime2;
						}
					break; //1
			case 2: //1 separator
					if ((sTime2.length >=3D 3) && (sTime2.length <=3D 5)) {
						hh		=3D aTime[0];
						mi		=3D aTime[1];
						}
					else
						return(pTime);
					break; //2
			default: // More than 1 separator
					return(pTime);
			} // switch
		}//if sTime.length
	else
		return(pTime);
=09
	// Formatting Hour and Minutes. If necessary, put leading zeroes
	if ((hh.length > 0) && isOnlyDigits(hh))
		hh =3D (hh>=3D10?"":"0") + parseInt(hh, 10);
	if (mi.length =3D=3D 0)
		mi =3D "0";
	if (isOnlyDigits(mi))
		mi =3D (mi>=3D10?"":"0") + parseInt(mi, 10);

	return(hh + kSEP + mi + " " + ampm);
=09
} //hourDelimitedFormat

/************************************************************************=
**************
Function: objectSetFocus
Purpose:  Sets the focus on a control and shows an alert message.
Input:    o: the control what you want to set the focus.
		  pMessage: Optional. the message to display
Returns:  none.
*************************************************************************=
*************/
function objectSetFocus(o, msg)	{
	if (!o) return false;
=09
	if (o.type =3D=3D 'hidden' || o.type =3D=3D 'button') return;
=09
	o.focus();
	if (o.type=3D=3D"text" || o.type=3D=3D'password' || =
o.type=3D=3D'textarea') o.select();

	if (msg)	{
		alert(msg);
		o.focus();
	}
}


/************************************************************************=
**************
Function: isValidTime
Purpose:  valid if a specif time is valid. format: hh:mm [AM/PM]
Input:    pTime - time to validate
		  pFormat - Optional. if 12 or 24 hours time format
Returns:  true if time is valid, else false.
*************************************************************************=
*************/
function isValidTime(pTime, pFormat)	{
	var sEmptyDate =3D '01/01/1900 ';

	if (!pFormat) pFormat =3D '12';

	var d =3D new Date(sEmptyDate + pTime);
	var vhour, vminutes, vcolonIndex, vspaceIndex;
	if (isNaN(d)) return false;

	vColonIndex =3D pTime.indexOf(":");
	vspaceIndex =3D pTime.indexOf(" ");
	vspaceIndex =3D (vspaceIndex =3D=3D -1)? pTime.length : vspaceIndex;
	vhour =3D pTime.substring(0,vColonIndex);
	vminutes =3D pTime.substring(vColonIndex+1,vspaceIndex);

	if (vhour.length=3D=3D 0 || vminutes.length=3D=3D 0) return false;
	if ((vhour.length > 2) || (vminutes.length > 2)) return false;
	if (!isOnlyDigits(vhour)|| !isOnlyDigits(vminutes)) return false;

	// if in 12-hour format
	if (pFormat =3D=3D '12')	{
		if ((parseInt(vhour, 10) < 1) || (parseInt(vhour, 10) > 12))
			return false;
		if (parseInt(vhour, 10) < 0 || parseInt(vminutes, 10) > 59)
			return false;
		pTime =3D pTime.toLowerCase();
		if (pTime.indexOf('am')=3D=3D-1 && pTime.indexOf('pm')=3D=3D-1) return =
false;
	}
=09
	return true;
}


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: compareTimeStr
Purpose: =20
Input:   =20
Returns:  undefined
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function compareTimeStr(time1, time2, pMessage) {
	// Checks if time is in HH:MM:SS [AM/PM] format.
	var sEmptyDate =3D '01/01/1900 ';
	var sTimeMessage =3D 'Time is not in a valid format.';

	var d1 =3D new Date(sEmptyDate + time1);
	var d2 =3D new Date(sEmptyDate + time2);

	if (isNaN(d1))	{
		alert(sTimeMessage);
		return false;
	}
=09
	if (isNaN(d2))	{
		alert(sTimeMessage);
		return false;
	}
=09
	var h1 =3D (d1.getHours()*60) + d1.getMinutes();
	var h2 =3D (d2.getHours()*60) + d2.getMinutes();
=09
	if (h1 > h2)	{
		alert(pMessage);
		return false;
	}

	return true;
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: compareTime
Purpose: =20
Input:   =20
Returns:  undefined
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function compareTime(time1, time2, pMessage) {
	// Checks if time is in HH:MM:SS [AM/PM] format.
	var sEmptyDate =3D '01/01/1900 ';
	var sTimeMessage =3D 'Time is not in a valid format.';

	var d1 =3D new Date(sEmptyDate + time1.value);
	var d2 =3D new Date(sEmptyDate + time2.value);

	if (isNaN(d1))	{
		alert(sTimeMessage);
		time1.focus();
		return false;
	}
=09
	if (isNaN(d2))	{
		alert(sTimeMessage);
		time2.focus();
		return false;
	}
=09
	var h1 =3D (d1.getHours()*60) + d1.getMinutes();
	var h2 =3D (d2.getHours()*60) + d2.getMinutes();
=09
	if (h1 > h2)	{
		alert(pMessage);
		return false;
	}

	return true;
}


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: compareTimeHourStr
Purpose: =20
Input:   =20
Returns:  undefined
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function compareTimeHourStr(time1, hour, pMessage) {
	// Checks if time is in HH:MM:SS [AM/PM] format.
	var sEmptyDate =3D '01/01/1900 ';
	var sTimeMessage =3D 'Time is not in a valid format.';

	var d1 =3D new Date(sEmptyDate + time1);
	var d2 =3D new Date(sEmptyDate + hour);

	if (isNaN(d1))	{
		alert(sTimeMessage);
		return false;
	}
=09
	if (isNaN(d2))	{
		alert(sTimeMessage);
		return false;
	}
=09
	var h1 =3D (d1.getHours()*60) + d1.getMinutes();
	var h2 =3D (d2.getHours()*60) + d2.getMinutes();
	if (h1 >=3D h2)	{
		alert(pMessage);
		return false;
	}

	return true;
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: compareTimeHour
Purpose: =20
Input:   =20
Returns:  undefined
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function compareTimeHour(time1, hour, pMessage) {
	// Checks if time is in HH:MM:SS [AM/PM] format.
	var sEmptyDate =3D '01/01/1900 ';
	var sTimeMessage =3D 'Time is not in a valid format.';

	var d1 =3D new Date(sEmptyDate + time1.value);
	var d2 =3D new Date(sEmptyDate + hour);

	if (isNaN(d1))	{
		alert(sTimeMessage);
		time1.focus();
		return false;
	}
=09
	if (isNaN(d2))	{
		alert(sTimeMessage);
		return false;
	}
=09
	var h1 =3D (d1.getHours()*60) + d1.getMinutes();
	var h2 =3D (d2.getHours()*60) + d2.getMinutes();
=09
	if (h1 >=3D h2)	{
		alert(pMessage);
		return false;
	}

	return true;
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: compareTimeValueStr
Purpose: =20
Input:   =20
Returns:  undefined
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function compareTimeValueStr(time1, time2, hours, pMessage) {
	// Checks if time is in HH:MM:SS [AM/PM] format.
	var sEmptyDate =3D '01/01/1900 ';
	var sTimeMessage =3D 'Time is not in a valid format.';

	var d1 =3D new Date(sEmptyDate + time1);
	var d2 =3D new Date(sEmptyDate + time2);

	if (isNaN(d1))	{
		alert(sTimeMessage);
		return false;
	}
=09
	if (isNaN(d2))	{
		alert(sTimeMessage);
		return false;
	}
=09
	var h1 =3D (d1.getHours()*60) + d1.getMinutes();
	var h2 =3D (d2.getHours()*60) + d2.getMinutes();
=09

	if ((h2-h1)>(hours*60))	{
		alert(pMessage);
		return false;
	}

	return true;
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: compareTimeValue
Purpose: =20
Input:   =20
Returns:  undefined
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function compareTimeValue(time1, time2, hours, pMessage) {
	// Checks if time is in HH:MM:SS [AM/PM] format.
	var sEmptyDate =3D '01/01/1900 ';
	var sTimeMessage =3D 'Time is not in a valid format.';

	var d1 =3D new Date(sEmptyDate + time1.value);
	var d2 =3D new Date(sEmptyDate + time2.value);

	if (isNaN(d1))	{
		alert(sTimeMessage);
		time1.focus();
		return false;
	}
=09
	if (isNaN(d2))	{
		alert(sTimeMessage);
		time2.focus();
		return false;
	}
=09
	var h1 =3D (d1.getHours()*60) + d1.getMinutes();
	var h2 =3D (d2.getHours()*60) + d2.getMinutes();
=09

	if ((h2-h1)>(hours*60))	{
		alert(pMessage);
		return false;
	}

	return true;
}
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: checkmmyyyy
Purpose:  returns true if a Date is MM/YYYY
Input:    val - the Date to validate.
Returns:  true =3D if the date is good. false =3D otherwise.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function checkmmyyyy(val)	{
	var mon,yea
	pos =3D val.search("/")
	if (pos !=3D2 ){
		alert("Invalid date.");
		return false;
	}=20
	mon =3D val.substr(0,pos);
	yea =3D val.substr(pos+1,val.length);
	while (mon.indexOf("0") !=3D -1) {
		mon =3D mon.replace("0","");
	}
	mon =3D Trim(mon);
	if (!isOnlyDigits(mon)){
		alert("Invalid date, only numbers.");
		return false;
	}
	if (!isOnlyDigits(yea)){
		alert("Invalid date, only numbers.");
		return false;
	}
	if(mon < 1 || mon > 12){
		alert("Invalid date, please try again.");
		return false;
	}
	if(yea < 1900){
		alert("Invalid date, please try again.");
		return false;
	}
	return true;=09
}


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: CreditDate
Purpose:  returns true if a Credit Date is well Formed
Input:    val - the Date to validate.
Returns:  true =3D if the date is good. false =3D otherwise.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function CreditDate(val,item)	{
	var mon,yea
	var d =3D new Date();

	pos =3D val.search("/")
	if (pos !=3D2 ){
		alert("Invalid date, please try again.");
		return false;
	}=20
	mon =3D val.substr(0,pos);
	yea =3D val.substr(pos+1,val.length);
	while (mon.indexOf("0") !=3D -1) {
		mon =3D mon.replace("0","");
	}
	mon =3D Trim(mon);
	if (!isOnlyDigits(mon)){
		alert("Invalid date, only numbers.");
		return false;
	}
	if (!isOnlyDigits(yea)){
		alert("Invalid date, only numbers.");
		return false;
	}
	if(mon < 1 || mon > 12){
		alert("Invalid date, please try again.");
		return false;
	}
	yea =3D "20"+yea;
	val =3D  new Date();
	val.setFullYear(yea, mon , 01);
	if ( val.valueOf() < d.valueOf() ){
		alert("Your credit card has expired");
		return false;
	}
	else
		return true;=09
}


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: CardNumber
Purpose:  returns true if a Credit Number is well Formed 16 digits.
Input:    val - the number to validate.
Returns:  true =3D if the number is good. false =3D otherwise.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function CardNumber(val)	{

    //  validate that the lenght is 16.
 =20
=09
	if (val.length =3D=3D 16)	{	=09
		if (!isOnlyDigits(val))	{
			alert("Invalid Card Number");
			return false;
		}=20
		else=20
			return true;
	}
    else	{
		alert("Invalid Card Number");
		return false;
	}
}


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: IsEmpty
Purpose:  returns true if a text is empty or just contains blanks
Input:    sText - the text to validate.
Returns:  true =3D string is empty. false =3D string is NOT empty.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function IsEmpty(sText)	{
	var i=3D0;

	for (i=3D0; i < sText.length; i++)
		if (sText.substring(i, i+1) !=3D ' ') {
			return false;
			break;
		}

	return true;
}



/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: Trim
Purpose:  trim leading spaces
Input:    sText - the text to trim lateral spaces.
Returns:  string without lateral spaces.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function Trim(sText)
	{
	var newText =3D "";
	var ipos, inipos=3D0, endpos=3D0;
=09
=09
	// trim initial and end spaces, ends of line and car retuns
	for (ipos =3D 0; ipos < sText.length; ipos++) {
		if ((sText.charCodeAt(ipos) !=3D 10)
				&& (sText.charCodeAt(ipos) !=3D 13)
				&& (sText.charCodeAt(ipos) !=3D 32) )
			{
			inipos=3Dipos;
			break;
			}

	}
	for (ipos =3D inipos; ipos < sText.length; ipos++)
		if ((sText.charCodeAt(ipos) !=3D 10)
				&& (sText.charCodeAt(ipos) !=3D 13)
				&& (sText.charCodeAt(ipos) !=3D 32) )
			endpos =3D ipos+1;
=09
	if (endpos >=3D inipos)
		newText =3D sText.substring(inipos, endpos);
	return newText;
	} //Trim


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidateMandatory
Purpose:  return false when the text is empty or contains blanks.
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidateMandatory(val)
{
var text;
  text =3D Trim(val);
 =20
  if (text =3D=3D "" || text =3D=3D " "){
    alert ("The field is mandatory. It can't be empty.");
    return false;
    }
return true;
     =20
}


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidateEmail
Purpose:  Validates if the email text is a valid emailaddress
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidateEmail(val){ // evaluates if the  e-mail is valid
var frmemail;
var frmemailtemp;
var probarmail;
var cas;
var posiarroba;
var posipunto;
probarmail=3D=3D1;
frmemail=3Dval;

// first character must be a letter
cas=3Dfrmemail.charCodeAt(0)
if (!((cas>=3D65 && cas<=3D90) || (cas>=3D97 && cas<=3D122))){
	alert("E-mail invalid.");
	return false;
}

// last character must be a letter
cas=3Dfrmemail.charCodeAt(frmemail.length-1);
if (!((cas>=3D65 && cas<=3D90) || (cas>=3D97 && cas<=3D122))){
	alert("E-mail invalid.");
	return false;
}

// Valid characters must be letters ,  @ . y _
for (var i=3D1; i<=3Dfrmemail.length-2; i++){
  cas=3Dfrmemail.charCodeAt(i);
  if (!((cas>=3D48 && cas<=3D57) || (cas>=3D65 && cas<=3D90) || =
(cas>=3D97 && cas<=3D122) || cas=3D=3D95 || cas=3D=3D45 || cas=3D=3D46 =
|| cas=3D=3D64)){
    alert("E-mail invalid.");
    return false;
  }
}

// it has to be one and only one @
posiarroba=3Dfrmemail.indexOf("@");
if (posiarroba=3D=3D-1){
	alert("E-mail invalid.");
	return false;
  }
else{
  frmemailtemp=3Dfrmemail.substr(posiarroba+1);
  posiarroba=3Dfrmemailtemp.indexOf("@");
  if (posiarroba!=3D-1){
	alert("E-mail invalid.");
	return false;
    }
  else{
    posipunto=3Dfrmemailtemp.indexOf(".");
    if (posipunto=3D=3D-1){
		alert("E-mail invalid.");
		return false;
    }
  }
}

// before and after a point, _ or underscore must be a letter or a =
number
for (var i=3D1; i<=3Dfrmemail.length-2; i++){
  cas=3Dfrmemail.charCodeAt(i);
  if (cas=3D=3D95 || cas=3D=3D45 || cas=3D=3D46 || cas=3D=3D64 ){
    cas=3Dfrmemail.charCodeAt(i-1);
    if (!((cas>=3D48 && cas<=3D57) || (cas>=3D65 && cas<=3D90) || =
(cas>=3D97 && cas<=3D122))){
		alert("E-mail invalid.");
		return false;	=09
    }
    cas=3Dfrmemail.charCodeAt(i+1);
    if (!((cas>=3D48 && cas<=3D57) || (cas>=3D65 && cas<=3D90) || =
(cas>=3D97 && cas<=3D122))){
		alert("E-mail invalid.");
		return false;
    }
  }
}
return true;
}




/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidateLogin
Purpose:  Validates that the login text only has valid characters
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidateLogin(val){ // evaluates if the login is valid

var frmlogin;
var cas;
frmlogin=3Dval;

if (frmlogin.length<5){
	alert("Login invalid. Minimum 5 characters.");
	return false;
}

if (frmlogin.length>15){
	alert("Login invalid. Maximal 15 characters.");
	return false;
}

// first character must be a letter
cas=3Dfrmlogin.charCodeAt(0);
if (!((cas>=3D65 && cas<=3D90) || (cas>=3D97 && cas<=3D122))){
	alert("Login invalid.");
	return false;
}

// Valid characters must be letters ,  @ . y _
for (var i=3D1; i<=3Dfrmlogin.length-1; i++){
  cas=3Dfrmlogin.charCodeAt(i);
  if (!((cas>=3D48 && cas<=3D57) || (cas>=3D65 && cas<=3D90) || =
(cas>=3D97 && cas<=3D122))){
    alert("Login invalid.");
    return false;
  }
}


return true;
}



/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidatePassword
Purpose:  Validates that the password text only has valid characters.
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidatePassword(val){ // evaluates if the password is valid
var frmpassword;
var cas;
frmpassword=3Dval;

if (frmpassword.length<5){
	alert("Password invalid. Minimum 5 characters.");=09
	return false;
}

if (frmpassword.length>15){
	alert("Password invalid. Maximum 15 characters.");
	return false;
}

// first character must be a letter
cas=3Dfrmpassword.charCodeAt(0);
if (!((cas>=3D65 && cas<=3D90) || (cas>=3D97 && cas<=3D122))){
	alert("Password invalid. The first character must be a letter.");
	return false;
}

// Valid characters must be letters ,  @ . y _=20
for (var i=3D1; i<=3Dfrmpassword.length-1; i++){
  cas=3Dfrmpassword.charCodeAt(i);
  if (!((cas>=3D48 && cas<=3D57) || (cas>=3D65 && cas<=3D90) || =
(cas>=3D97 && cas<=3D122))){
	alert("Password invalid. Only numbers or letters.");
	return false;
  }
}

if (val.toUpperCase()=3D=3D'PASSWORD'){
  alert("Password cannot be 'password'.")
  return false;
}

return true;
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidatePassword
Purpose:  Validates that the password text only has valid characters.
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidatePassword2(val){ // evaluates if the password is valid
var frmpassword;
var cas;
frmpassword=3Dval;

if (frmpassword.length<5){
	alert("Password invalid. Minimum 5 characters.");=09
	return false;
}

if (frmpassword.length>15){
	alert("Password invalid. Maximum 15 characters.");
	return false;
}

// first character must be a letter
cas=3Dfrmpassword.charCodeAt(0);
if (!((cas>=3D65 && cas<=3D90) || (cas>=3D97 && cas<=3D122))){
	alert("Password invalid. The first character must be a letter.");
	return false;
}

// Valid characters must be letters ,  @ . y _=20
for (var i=3D1; i<=3Dfrmpassword.length-1; i++){
  cas=3Dfrmpassword.charCodeAt(i);
  if (!((cas>=3D48 && cas<=3D57) || (cas>=3D65 && cas<=3D90) || =
(cas>=3D97 && cas<=3D122))){
	alert("Password invalid. Only numbers or letters.");
	return false;
  }
}

return true;
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidatePwd12
Purpose:  Validates that the password text 1 and the password text 2 are =
the same.
Input:    val1 - input objetct1 from the form  and val1 - input objetct2 =
from the form .
Returns:  false when the inputs are invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidatePwd12(val1, val2)	{
	if (val1 !=3D val2){
		alert("The password and its confirmation must match.");
	    return false;
	}
	return true;
}



/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: isDigit
Purpose:  Validates that the character is a digit.
Input:    c - character.
Returns:  false when the character is not a digit.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function isDigit(c)
{   return ((c >=3D "0") && (c <=3D "9"))
}



/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: isOnlyDigits
Purpose:  Validates that the character is a valid integer number.
Input:    s - character string.
Returns:  false when the character is not integer.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function isOnlyDigits(s)
{   var i;

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i =3D 0; i < s.length; i++)
    {  =20
        // Check that current character is number.
        var c =3D s.charAt(i);

        if (!isDigit(c)) return false;
    }
   =20
   =20
    // All characters are numbers.
    return true;
}


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: isInteger
Purpose:  Validates that the string is a valid floating number
Input:    pValue - character string.
Returns:  false when the character is not float.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function isInteger(pValue, pSpecial)	{
	var c, i;
=09
	if (pValue =3D=3D null || pValue =3D=3D '')	{
		alert('Please enter a number.');
		return false;
	}
	pValue =3D Trim(pValue);
=09
	// check for valid characters
	for (i=3D0; i<pValue.length; i++)	{
		c =3D pValue.substr(i,1);
		if (!(isDigit(c) || c=3D=3D'-'))	{
			alert('Please enter a valid number.');
			return false;
		}
	=09
		if (c=3D=3D'-' && i > 0)	{
			alert('Please enter a valid number.');
			return false;
		}
	}
	=09

	// convert to float to check for errors.
	var f =3D parseInt(pValue, 10);
	=09
	if (isNaN(f))	{
		alert('Please enter a valid number.');
		return false;
	}
	if (!isFinite(f))	{
		alert('The entered number is too big, Please enter a smaller =
number.');
		return false;
	}
	=09
=09
=09
	switch (pSpecial)	{
		case 'negative_positive':
			if (f =3D=3D 0)	{
				alert('Please enter a value other than zero.');
				return false;
			}
			break;
		case 'positive':
			if (f <=3D 0)	{
				alert('Please enter only positive numbers.');
				return false;
			}
			break;
		case 'zero_positive':
			if (f < 0)	{
				alert('Negative numbers are not allowed.');
				return false;
			}
			break;
//		case 'neg_zero_pos': or empty
		// nothing to do
	}

	return true;
}


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: isFloat
Purpose:  Validates that the string is a valid floating number
Input:    pValue - character string.
Returns:  false when the character is not float.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function isFloat(pValue, pSpecial)	{
	var c, i, bPoint=3Dfalse;
=09
	if (pValue =3D=3D null || pValue =3D=3D '')	{
		alert('Please enter a number.');
		return false;
	}
	pValue =3D Trim(pValue);
=09
	// check for valid characters
	for (i=3D0; i<pValue.length; i++)	{
		c =3D pValue.substr(i,1);
		if (!(isDigit(c) || c=3D=3D'-' || c=3D=3D'.'))	{
			alert('Please enter a valid number.');=09
			return false;
		}
	=09
		if (c=3D=3D'.')	{
			if (bPoint)	{
				alert('Please enter a valid number.');=09
				return false;
			}
			else bPoint =3D true;
		}
	=09
		if (c=3D=3D'-' && i > 0)	{
			alert('Please enter a valid number.');=09
			return false;
		}
	}
	=09

	// convert to float to check for errors.
	var f =3D parseFloat(pValue);
	=09
	if (isNaN(f))	{
		alert('Please enter a valid number.');
		return false;
	}
	if (!isFinite(f))	{
		alert('The entered number is too big, Please enter a smaller =
number.');
		return false;
	}
	=09
=09
=09
	switch (pSpecial)	{
		case 'negative_positive':
			if (f =3D=3D 0)	{
				alert('Please enter a value other than zero.');
				return false;
			}
			break;
		case 'positive':
			if (f <=3D 0)	{
				alert('Please enter only positive numbers.');
				return false;
			}
			break;
		case 'zero_positive':
			if (f < 0)	{
				alert('Negative numbers are not allowed.');
				return false;
			}
			break;
//		case 'neg_zero_pos': or empty
		// nothing to do
	}

	return true;
}



/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidateText
Purpose:  Validates that the text only has valid characters, only =
letters.
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidateText(val)
{
var frmText;
var cas;
frmText =3D Trim(val);
for (var i=3D0; i<=3DfrmText.length-1; i++)
	{
	=09
		cas=3DfrmText.charCodeAt(i);
		//Accepted: A to Z a to Z Space - . '
		if (!((cas>=3D65 && cas<=3D90) || (cas>=3D97 && cas<=3D122) || cas =
=3D=3D 32 || cas =3D=3D 46 || cas =3D=3D 45 || cas =3D=3D 39))
		{
			alert("Invalid value. Only letters.");
			return false;
		}
	}

return true;
}

/************************************************************************=
**************
Function: ValidateTextLen
Purpose:  check if a text has a valid maximum length.
Input:    o:		object to evaluate
		  maxlen:	maximum length allowed in this control
Returns:  true, if it is valid.
		  false, otherwise.
*************************************************************************=
*************/
function ValidateTextLen(o, maxlen)	{
	o.value =3D Trim(o.value);

	if (maxlen)	{
		if (o.value.length > maxlen)	{
			objectSetFocus(o);
			if (confirm('This field only allows '+maxlen+' characters, and you =
have entered '+o.value.length+'.\n\n'+
			'Click OK to truncate the entry at '+maxlen+ '\nClick CANCEL to =
correct the entry.'))
				o.value =3D o.value.substring(0, maxlen);
			else
				objectSetFocus(o)
			return false;
		}
	}

	return true;
}




/************************************************************************=
**************
Function: textIsValid
Purpose:  check if a text has valid character: letters, numbers, =
symbols.
		  does not allow invalid xml characters.
Input:    s: text to validate.
Returns:  empty string if is valid.
		  otherwise returns a valid message text.
*************************************************************************=
*************/
function textIsValid(s)	{

	for (var i=3D0; i<s.length; i++)	{
		if (!textCharIsValid(s.charAt(i)))	{
			return 'The following character is not allowed: =
'+s.charAt(i)+'\n\nPlease correct the text entry!';
		}
	}

	if (s.indexOf("&#") !=3D -1){
			return 'The combination &# is potentially dangerous to the =
Server.'+'\n\nPlease correct the text entry!';
	}

	return '';
}

/************************************************************************=
**************
Function: textIsValidToArrays
Purpose:  check if a text has valid character: letters, numbers, symbols =
Except ',' , '"'.
		  does not allow invalid xml characters.
Input:    s: text to validate.
Returns:  empty string if is valid.
		  otherwise returns a valid message text.
*************************************************************************=
*************/
function textIsValidToArrays(s)	{

	for (var i=3D0; i<s.length; i++)	{
		if (!textCharIsValid(s.charAt(i)))	{
			return 'The following character is not allowed: =
'+s.charAt(i)+'\n\nPlease correct the text entry!';
		}
	}

	if (s.indexOf(",") !=3D -1){
			return 'The following character is not allowed: , \n\nPlease correct =
the text entry!';
	}

	if (s.indexOf('"') !=3D -1){
			return 'The following character is not allowed: " \n\nPlease correct =
the text entry!';
	}

	if (s.indexOf("&#") !=3D -1){
			return 'The combination &# is potentially dangerous to the =
Server.'+'\n\nPlease correct the text entry!';
	}

	return '';
}

/************************************************************************=
**************
Function: textCharIsValid (Used on <<textIsValid>> function)
Purpose:  check if a single character is a valid character: letters, =
numbers, symbols.
		  does not allow invalid xml characters.

Input:    c: single character to validate.
Returns:  false when the character is invalid.
*************************************************************************=
*************/
function textCharIsValid(c)	{
	var i =3D c.charCodeAt(0);
	=09
	/* valid characters are:
	(the following numbers are unicode values)

	- Carriage Return and Line Feed characters: 13 and 10.
	- from 32-126, except 60:'<' 62:'>'
	*/
=09
	if (i<32 && (i!=3D13 && i!=3D10 && i!=3D9)) return false;
	if (i=3D=3D60 || i=3D=3D62) return false;
	if (i>126) return false;

	return true;
}


/************************************************************************=
**************
Function: formTextIsValid
Purpose:  check if all form object texts have valid character: letters, =
numbers, symbols.
		  does not allow invalid xml characters.
Input:    f: document.form object.
Returns:  true when ok, false when the text has invalid characters.
*************************************************************************=
*************/
function formTextIsValid(f)	{
	var o, s;
=09
	for (var i=3D0; i<f.elements.length; i++)	{
		o =3D f.elements[i];
		// only check <input type=3D"text"> and <textarea ...> elements
		if (o.type!=3D'text' && o.type!=3D'textarea') continue;
	=09
		if (o.id.indexOf('html')>=3D0) continue;
		o.value =3D Trim(o.value);

		if ((s=3DtextIsValid(o.value)) !=3D '')	{
			objectSetFocus(o, s);
			return false;
		}
	}
=09
	return true;
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidateNumber
Purpose:  Validates that the input text only has numbers.
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidateNumber(val,pos)
{
	var frmNumber

	frmNumber =3D val;
	if (!isOnlyDigits(frmNumber)){
		alert("Only numbers please.");
		return false;
	}
	if  (val<=3D0 && pos =3D=3D 2) {
		alert("The field value must be greater than 0.")
		return false;
	}

return true;
}


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidateTextAndNumbers
Purpose:  Validates that the text only has valid characters,=20
		only letters and numbers.
Input:    val - input object from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidateTextAndNumbers(val, bAllowBlank)
{
var frmText;
var cas;
frmText =3D Trim(val);
if (bAllowBlank =3D=3D null) bAllowBlank =3D false;
for (var i=3D0; i<=3DfrmText.length-1; i++)
	{
	=09
		cas =3D frmText.charCodeAt(i);
		if (!((cas>=3D65 && cas<=3D90) || (cas>=3D97 && cas<=3D122) || =
(cas>=3D48 && cas<=3D57))
			&& !((cas =3D=3D 32) && (bAllowBlank)))
			{
			alert("Invalid value. Only letters and numbers.");
			return false;
			}
	}

return true;
} //ValidateTextAndNumbers

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidateTextAndPunctuation
Purpose:  Validates that the text only has valid characters,=20
		only letters, commas and periods.
Input:    val - input object from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidateTextAndPunctuation(val)
{
var frmText;
var cas;
frmText =3D Trim(val);
for (var i=3D0; i<=3DfrmText.length-1; i++)
	{
		cas =3D frmText.charCodeAt(i);
		if (!((cas>=3D65 && cas<=3D90) || (cas>=3D97 && cas<=3D122) || (cas =
=3D=3D 32) || (cas =3D=3D 44) || (cas =3D=3D 46)))
			{
			alert("Invalid value. Only letters, commas and periods.");
			return false;
			}
	}

return true;
} //ValidateTextAndPunctuation


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidatePhone1
Purpose:  Validates that the input text only has numbers and 3 numbers =
only.
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/

function ValidatePhone1(val)
{
var frmPhone

frmPhone =3D val;

if (frmPhone.length!=3D3)
	{
	alert("Area code invalid. Only 3 numbers.");
	return false;
	}

if (!isOnlyDigits(frmPhone))
	{
	alert("Area code invalid. Only 3 numbers.");
	return false;
	}
return true;
}



/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidatePhone2
Purpose:  Validates that the input text only has numbers and 7 numbers =
only.
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidatePhone2(val)
{
var frmPhone

frmPhone =3D val;

if (frmPhone.length!=3D7)
	{
	alert("Phone invalid. Only 7 numbers.");
	return false;
	}

if (!isOnlyDigits(frmPhone))
	{
	alert("Phone invalid. Only 7 numbers.");
	return false;
	}
return true;
}



/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidateZip
Purpose:  Validates that the input text only has numbers and 5 numbers =
only.
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidateZip(val)
{
var frmZip

frmZip =3D val;

if (frmZip.length!=3D5)
	{
	alert("Zip code invalid. Only 5 numbers.");
	return false;
	}

if (!isOnlyDigits(frmZip))
	{
	alert("Zip code invalid. Only 5 numbers.");
	return false
	}
return true
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidateZip2
Purpose:  Validates that the input text only has numbers and 4 numbers =
only.
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidateZip2(val)
{
var frmZip

frmZip =3D val;


if (!isOnlyDigits(frmZip))
	{
	alert("Zip code invalid. Only numbers.");
	return false
	}
return true
}



function ShowHelpWindow()	{
	var url =3D =
'../common/c_help.asp?page=3D'+escape(document.location.pathname);
	var h =3D 400, w =3D 310;	// popup-window height, width ...
	var l =3D 0, t =3D 0;		//			...	left and top
	l =3D screen.availWidth - w;		// align right
=09
	var features =3D  'left=3D'+l+',top=3D'+t+','+
					'width=3D'+w+',height=3D'+h+','+
					'copyhistory=3D0,location=3D0,menubar=3D0,directories=3D0,'+
					'resizable=3D1,scrollbars=3D1,status=3D0,toolbar=3D0,hotkeys=3D0';
=09
	window.open(url, 'wHelp', features);
}




function OpenAttachmentWindow(url)	{
	var h =3D 450, w =3D 700;	// popup-window height, width ...
	var l =3D 80, t =3D 0;		//			...	left and top

	var features =3D  'left=3D'+l+',top=3D'+t+','+
					'width=3D'+w+',height=3D'+h+','+
					'copyhistory=3D0,location=3D0,menubar=3D0,directories=3D0,'+
					'resizable=3D1,scrollbars=3D1,status=3D0,toolbar=3D0,hotkeys=3D0';

	var wPopupWindow =3D window.open(url, 'wAttachment', features);

	if ((document.window !=3D null) && (!wPopupWindow.opener))	{
		wPopupWindow.opener =3D document.window;
	}
}




/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: Validate
Purpose:  Validates the form.
Input:    frm - the form of the actual page.
		  bDontSubmit - true means, not execute frm.submit();.
Returns:  submit if all the values are valid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function Validate(frm, bDontSubmit)	{
var sName, sValue, i, item, log, objectP, objectL;
var pwd1=3D'1', pwd2=3D'1', phonePrefix =3D false;

// validate if valid character for processing with xml were entered
if (!formTextIsValid(frm)) return false;

for (i=3D0; i<frm.elements.length; i++)	{
		item =3D frm.elements[i];
		sName =3D item.name;
       =20
        // if it is a Drop Down (<SELECT> element)
		if (item.type =3D=3D 'hidden') continue;       =20
        if (item.type.indexOf('select') !=3D -1)	{
			if (item.selectedIndex =3D=3D -1) sValue =3D '';
			else sValue =3D item.options[item.selectedIndex].value;
		}
		else
			sValue =3D item.value;
	=09
		switch (sName.charAt(0))	{
	=09
		case "e":
			=09
				sValue =3D Trim(sValue);
				if(!IsEmpty(sValue))	{
					if(!ValidateEmail(sValue))	{
						item.focus();
						return false;
					=09
					}
				}=09
				break;
			=09
		case "d":
				sValue =3D Trim(sValue);
				if(!IsEmpty(sValue))	{
					if(!isDate(item))	{
						item.focus();
						return false;
					}
				}=09
				break;
	=09
		case "f":
			if(!IsEmpty(sValue))	{
				if (!isFloat(sValue))	{
					item.focus();
					return false;
				}
			}
			break;

		case "m":
			if(!ValidateMandatory(sValue)) {
				item.focus();
				return false;
			}
		=09
			//second char
			switch (sName.charAt(1)){
				case "c":
						if(!CardNumber(sValue)) {
						item.focus();
						return false;
						}
						break;
				=09
				case "f":
					if (!isFloat(sValue, 'gt_zero'))	{
						item.focus();
						return false;
					}
					break;

				case "x":
						=09
						sValue =3D Trim(sValue);
						if(!IsEmpty(sValue)){
							if(!CreditDate(sValue,item)){
								item.focus();
								return false;
							=09
							}
						}=09
						break;

						=09
				case "l":
						if(!ValidateLogin(sValue)) {
						item.focus();
						return false;
						}
						log=3DsValue;
						objectL =3D item;
						break;
	=09
				=09
				case "d":
						sValue =3D Trim(sValue);
						if(!IsEmpty(sValue)){
							if(!isDate(item)){
								item.focus();
								return false;
								=09
							}
						}=09
						break;
				=09
				case "p":
						=09
						if(sName.charAt(2) !=3D "1" && sName.charAt(2) !=3D "2") {
							if (pwd1 !=3D "1"){
									pwd2 =3D sValue;
									objectP =3D item;
							}	=09
							else{
									pwd1 =3D sValue;
									objectP =3D item;
								}=09
						=09
								  =20
							if (!ValidatePassword(sValue)) {
								item.focus();
								return false;
									=09
							}
						}
						=09
						=09
						if(sName.charAt(2)=3D=3D"1") {
							if (!ValidatePhone1(sValue)) {
								item.focus();
								return false ;
							}
						}=09
						=09
						else if(sName.charAt(2)=3D=3D"2") {
							if (!ValidatePhone2(sValue)) {
								item.focus();
								return false;
							}
						}
							=09
						break;

				case "P":						=09
						if(sName.charAt(2) !=3D "1" && sName.charAt(2) !=3D "2") {
							if (pwd1 !=3D "1"){
									pwd2 =3D sValue;
									objectP =3D item;
							}	=09
							else{
									pwd1 =3D sValue;
									objectP =3D item;
								}=09
						=09
								  =20
							if (!ValidatePassword2(sValue)) {
								item.focus();
								return false;
									=09
							}
						}
						=09
						=09
						if(sName.charAt(2)=3D=3D"1") {
							if (!ValidatePhone1(sValue)) {
								item.focus();
								return false ;
							}
						}=09
						=09
						else if(sName.charAt(2)=3D=3D"2") {
							if (!ValidatePhone2(sValue)) {
								item.focus();
								return false;
							}
						}
							=09
						break;

								=09
				case "e":
						if (!ValidateEmail(sValue)) {
							item.focus();
							return false;
						}
						break;	=09
	=09
				case "n":
						if (sName.charAt(2)=3D=3D"0") {
							if (!ValidateNumber(sValue,0)) {
								item.focus();
								return false;
							}
						}
						else {
							if (!ValidateNumber(sValue,2)) {
								item.focus();
								return false;
							}
						}		=09
						break;									=09
				case "s":
						if (!ValidateText(sValue)) {
							item.focus();
							return false;
						}
						break;
				=09
				case "z":
				=09
						if(sName.charAt(2)=3D=3D"1") {
							if (!ValidateZip(sValue)) {
								item.focus();
								return false ;
							}
						}=09
						=09
						else if(sName.charAt(2)=3D=3D"2") {
							if (!ValidateZip2(sValue)) {
								item.focus();
								return false;
							}
						}
							=09
						break;
				=09
			}//end inner switch
			break;				=09
			//end second char
	=09
		case "n":
				sValue =3D Trim(sValue,1);
				if(!IsEmpty(sValue)){
					if (sName.charAt(1)=3D=3D"0") {
						if (!ValidateNumber(sValue,0)) {
							item.focus();
							return false;
						}
					}
					else {
						if (!ValidateNumber(sValue,2)) {
							item.focus();
							return false;
						}
					}					=09
				}=09
				break;	=09
		case "p":
				sValue =3D Trim(sValue);
				if(sName.charAt(1)=3D=3D"1" && !IsEmpty(sValue))
				{
					phonePrefix =3D true;
					if(!ValidatePhone1(sValue)){
						item.focus();
						return false;
					}
				}=09
				else if(sName.charAt(1)=3D=3D"2")
				{
					if ((!phonePrefix && !IsEmpty(sValue)) || (phonePrefix && =
IsEmpty(sValue))){
						alert("Invalid Phone Number");
						item.focus();
						return false;
					}
					if(!IsEmpty(sValue))
						if(!ValidatePhone2(sValue)) {
							item.focus();
							return false;
						}
					phonePrefix =3D false;
				}
				break;
						=09
		case "s":
				=09
						=09
				sValue =3D Trim(sValue);
				if(!IsEmpty(sValue)){
					if(!ValidateText(sValue)) {
						item.focus();
						return false;
					}
				}=09
				break;
						=09
		case "z":
						=09
				sValue =3D Trim(sValue);
				if(!IsEmpty(sValue)){
					if(sName.charAt(1)=3D=3D"1")
					{
								=09
						if(!ValidateZip(sValue)){
							item.focus();
							return false;
						}
					}=09
					else if(sName.charAt(1)=3D=3D"2")
					{
								=09
						if(!ValidateZip2(sValue)) {
							item.focus();
							return false;
						}
					}
				}	=09
				break;
						=09
		}//end switch
	=09
	}

if (pwd2 !=3D 1 ) {
	if(pwd1 !=3D "1")	{
		if (log =3D=3D pwd1)	{
			alert("Login and password must be different.");
			objectL.focus();
			return false;
		}
		if(!ValidatePwd12(pwd1,pwd2))	{
			objectP.focus();
			return false;
		}
	}
}	=09

if (bDontSubmit) return true;
else frm.submit();

}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: sortSelect
Purpose:  Sort the Select object elements ascending by visible text.
Input:    selectList (Select object)
Returns:  None
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function sortSelect(selectList) {
	//sort options array of the selectList object (select type)
	var i, j;
	var strTmp1, strTmp2;
	var optionsList =3D selectList.options;
=09
	// search for the empty value or zero value (Select a ...)
	i =3D 0;
	while ((i < optionsList.length) && (optionsList[i].value !=3D '') && =
(optionsList[i].value !=3D '0'))
		i++;
	=09
	if (i < optionsList.length) { // exchange position i to 0
			strTmp1					=3D optionsList[0].text;
			strTmp2					=3D optionsList[0].value;
			optionsList[0].text		=3D optionsList[i].text;
			optionsList[0].value	=3D optionsList[i].value;
			optionsList[i].text		=3D strTmp1;
			optionsList[i].value	=3D strTmp2;
			iStart =3D 1;
		}
	else {
			iStart =3D 0;
		}

	=09
	for (i=3DiStart; i < (optionsList.length - 1); i++)
		for (j=3Di+1; j<optionsList.length; j++)
			if (optionsList[j].text.toUpperCase() < =
optionsList[i].text.toUpperCase()) {
				strTmp1					=3D optionsList[j].text;
				strTmp2					=3D optionsList[j].value;
				optionsList[j].text		=3D optionsList[i].text;
				optionsList[j].value	=3D optionsList[i].value;
				optionsList[i].text		=3D strTmp1;
				optionsList[i].value	=3D strTmp2;
				} //if
} //sortSelect


/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: Validate
Purpose:  Validates the form.
Input:    frm - the form of the actual page.
		  bDontSubmit - true means, not execute frm.submit();.
Returns:  submit if all the values are valid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidateArray(ctlArray, itemName)	{
// validate if valid character for processing with xml were entered
//if (!formTextIsValid(frm)) return false;=09
=09
	if (ctlArray.length) {
		for (var i=3D0; i<ctlArray.length; i++)	{					=09
				if (!validateItem(ctlArray[i], itemName)) {
					return false;
				}
			}
	 } else {
		if(!validateItem(ctlArray)) {
			return false;
		}
	}
=09
	return true;		=09
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: Validate Item=20
Purpose:  Same as Validate, but with slight changes
Input:   =20
Returns: =20
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function validateItem(item, name) {
	var sName, sValue, i, item, log, objectP, objectL;
	var pwd1=3D'1', pwd2=3D'1', phonePrefix =3D false;=09
=09
		sName =3D name;
       =20
        // if it is a Drop Down (<SELECT> element)		       =20
        if (item.type.indexOf('select') !=3D -1)	{
			if (item.selectedIndex =3D=3D -1) sValue =3D '';
			else sValue =3D item.options[item.selectedIndex].value;
		}
		else
			sValue =3D item.value;	=09
	=09
		switch (sName.charAt(0))	{
	=09
		case "e":
			=09
				sValue =3D Trim(sValue);
				if(!IsEmpty(sValue))	{
					if(!ValidateEmail(sValue))	{
						item.focus();
						return false;
					=09
					}
				}=09
				break;
			=09
		case "d":
				sValue =3D Trim(sValue);
				if(!IsEmpty(sValue))	{
					if(!isDate(item))	{
						item.focus();
						return false;
					}
				}=09
				break;
	=09
		case "f":
			if(!IsEmpty(sValue))	{
				if (!isFloat(sValue))	{
					item.focus();
					return false;
				}
			}
			break;

		case "m":
			if(!ValidateMandatory(sValue)) {
				item.focus();
				return false;
			}
		=09
			//second char
			switch (sName.charAt(1)){
				case "c":
						if(!CardNumber(sValue)) {
						item.focus();
						return false;
						}
						break;
				=09
				case "f":
					if (!isFloat(sValue, 'gt_zero'))	{
						item.focus();
						return false;
					}
					break;

				case "x":
						=09
						sValue =3D Trim(sValue);
						if(!IsEmpty(sValue)){
							if(!CreditDate(sValue,item)){
								item.focus();
								return false;
							=09
							}
						}=09
						break;

						=09
				case "l":
						if(!ValidateLogin(sValue)) {
						item.focus();
						return false;
						}
						log=3DsValue;
						objectL =3D item;
						break;
	=09
				=09
				case "d":
						sValue =3D Trim(sValue);
						if(!IsEmpty(sValue)){
							if(!isDate(item)){
								item.focus();
								return false;
								=09
							}
						}=09
						break;
				=09
				case "p":
						=09
						if(sName.charAt(2) !=3D "1" && sName.charAt(2) !=3D "2") {
							if (pwd1 !=3D "1"){
									pwd2 =3D sValue;
									objectP =3D item;
							}	=09
							else{
									pwd1 =3D sValue;
									objectP =3D item;
								}=09
						=09
								  =20
							if (!ValidatePassword(sValue)) {
								item.focus();
								return false;
									=09
							}
						}
						=09
						=09
						if(sName.charAt(2)=3D=3D"1") {
							if (!ValidatePhone1(sValue)) {
								item.focus();
								return false ;
							}
						}=09
						=09
						else if(sName.charAt(2)=3D=3D"2") {
							if (!ValidatePhone2(sValue)) {
								item.focus();
								return false;
							}
						}
							=09
						break;
						=09
								=09
				case "e":
						if (!ValidateEmail(sValue)) {
							item.focus();
							return false;
						}
						break;	=09
	=09
				case "n":
						if (sName.charAt(2)=3D=3D"0") {
							if (!ValidateNumber(sValue,0)) {
								item.focus();
								return false;
							}
						}
						else {
							if (!ValidateNumber(sValue,2)) {
								item.focus();
								return false;
							}
						}		=09
						break;		=09
						=09
				=09
				case "s":
						if (!ValidateText(sValue)) {
							item.focus();
							return false;
						}
						break;
				=09
				case "z":
				=09
						if(sName.charAt(2)=3D=3D"1") {
							if (!ValidateZip(sValue)) {
								item.focus();
								return false ;
							}
						}=09
						=09
						else if(sName.charAt(2)=3D=3D"2") {
							if (!ValidateZip2(sValue)) {
								item.focus();
								return false;
							}
						}
							=09
						break;
				=09
			}//end inner switch
			break;				=09
			//end second char
	=09
		case "n":
				sValue =3D Trim(sValue,1);
				if(!IsEmpty(sValue)){
					if (sName.charAt(1)=3D=3D"0") {
						if (!ValidateNumber(sValue,0)) {
							item.focus();
							return false;
						}
					}
					else {
						if (!ValidateNumber(sValue,2)) {
							item.focus();
							return false;
						}
					}		=09
					break;		=09
				}=09
				break;	=09
		case "p":
				sValue =3D Trim(sValue);
				if(sName.charAt(1)=3D=3D"1" && !IsEmpty(sValue))
				{
					phonePrefix =3D true;
					if(!ValidatePhone1(sValue)){
						item.focus();
						return false;
					}
				}=09
				else if(sName.charAt(1)=3D=3D"2")
				{
					if ((!phonePrefix && !IsEmpty(sValue)) || (phonePrefix && =
IsEmpty(sValue))){
						alert("Invalid Phone Number");
						item.focus();
						return false;
					}
					if(!IsEmpty(sValue))
						if(!ValidatePhone2(sValue)) {
							item.focus();
							return false;
						}
					phonePrefix =3D false;
				}
				break;
						=09
		case "s":
				sValue =3D Trim(sValue);
				if(!IsEmpty(sValue)){
					if(!ValidateText(sValue)) {
						item.focus();
						return false;
					}
				}=09
				break;
						=09
		case "z":
						=09
				sValue =3D Trim(sValue);
				if(!IsEmpty(sValue)){
					if(sName.charAt(1)=3D=3D"1")
					{
								=09
						if(!ValidateZip(sValue)){
							item.focus();
							return false;
						}
					}=09
					else if(sName.charAt(1)=3D=3D"2")
					{
								=09
						if(!ValidateZip2(sValue)) {
							item.focus();
							return false;
						}
					}
				}	=09
				break;

		}//end switch
	return true;
}

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: getElementArray
Purpose:  Get the array of controls on a grid
Input:    The Form=20
          The name of the object
Returns:  A Control
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function getElementArray(f, pid) {			=09
	var ctl_array =3D new Array();
	var idx =3D 0;
				=09
	for (var i=3D0;i<f.elements.length;i++) {
		var ctl =3D f.elements[i];
		if (ctl.id.indexOf(pid) >=3D 0) {					=09
			ctl_array[idx] =3D ctl;
			idx=3Didx + 1;=09
		}=20
	}
	return ctl_array;							=09
}
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: appendArray
Purpose:  Append the elements in array a2 to the array a1
Input:    a1 - to append to
		  a2 - to copy from
Returns:  Array
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function appendArray(a1, a2) {
	var counter =3D a1.length;
=09
	for (var i=3D0;i<a2.length;i++) {
		a1[counter] =3D a2[i];
		counter++;
	}
=09
	return a1;
}
=20
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: LimitText
Purpose:  Limit the length of a textarea. It must be called from=20
			the textarea's onKeyPress event
Input:    Textarea and the maximum amount of characters that it must=20
			contain
Returns:  true or false.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function LimitText(fieldObj, maxChars)
{
	if ( !(navigator.userAgent.indexOf('Mac') > 0) ){ =09
		var result =3D true;
		if (fieldObj.value.length >=3D maxChars) {
			result =3D false;
			}
=09
		if (window.event) {
			window.event.returnValue =3D result;
			}
		return false;
	}=09
} // LimitText

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: TrackCount
Purpose:  Track the length of a textarea and restrict it. It must be=20
			called from the textarea's onKeyUp event
Input:    Textarea and the maximum amount of characters that it must
			contain
Returns:  None.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function TrackCountText(fieldObj, maxChars)
{=09
	//if ( !(navigator.userAgent.indexOf('Mac') > 0) ){ =09
		var diff =3D maxChars - fieldObj.value.length;
		// Need to check & enforce limit here also in case user pastes data
		if (diff < 0) {
			fieldObj.value	=3D fieldObj.value.substring(0, maxChars);
			diff			=3D maxChars - fieldObj.value.length;
			}
	//}
=09
} // TrackCountText

/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Function: ValidateNoPipes
Purpose:  Validates that the text only has valid characters, all except =
Pipes.
Input:    val - input objetct from the form text.
Returns:  false when the input is invalid.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
function ValidateNoPipes(val)
{
	var frmText;
	var cas;
	frmText =3D Trim(val);
	for (var i=3D0; i<=3DfrmText.length-1; i++)
		{	=09
			cas=3DfrmText.charCodeAt(i);
			if (cas=3D=3D124) {
				alert("Invalid value. The character '|' is not allowed.");
				return false;
			}
		}
	return true;=09
}		=09


//-->
//</script>

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: https://floridastatefirecollege.org/include/menus/menu_functions.js

//<script language=3D"javascript">


// BEGIN - DETECT BROWSER
var isNS =3D (navigator.appName =3D=3D 'Netscape');
var isMacIE =3D ( (navigator.userAgent.indexOf('IE 4') > -1) && =
(navigator.userAgent.indexOf('Mac') > 0) );=20
var isMac =3D ( (navigator.userAgent.indexOf('Mac') > 0) );=20
if(isMac =3D=3D true && isMacIE !=3D true)	{
   isNS =3D true;
}

var layerRef =3D (isNS) ? 'document' : 'document.all';=20
var styleRef =3D (isNS) ? '' : '.style';=20
var isDynamic =3D ( (document.layers || document.all) && !isMacIE );=20
var thisBrowser =3D 'ie'=20
// END - DETECT BROWSER







// BEGIN - DO REFRESH IF RESIZED Netscape
if(!window.saveInnerWidth) {
	window.onresize =3D resize;
	window.saveInnerWidth =3D window.innerWidth;
	window.saveInnerHeight =3D window.innerHeight;
}

function resize()	{
	if (saveInnerWidth < window.innerWidth ||=20
			saveInnerWidth > window.innerWidth ||=20
			saveInnerHeight > window.innerHeight ||=20
			saveInnerHeight < window.innerHeight)	{
		window.history.go(0);
	}
}
// END - DO REFRESH IF RESIZED Netscape



=09

// BEGIN - DESIGN FUNCTION TO GENERATE A LINK TO OPEN A POPUP WINDOW
function getSpecialMenuText(pKeyword) {
	if (pKeyword =3D=3D 'HELP')
		return 'Help for this Page';
	if (pKeyword =3D=3D 'ABOUT')
		return 'About ...';
}

function getSpecialMenuLink(pKeyword) {
	if (pKeyword =3D=3D 'HELP')
		return buildPopupLink('ShowHelpWindow', 'Help Window');
	if (pKeyword =3D=3D 'ABOUT')
		return buildPopupLink('ShowAboutWindow', 'About Window');
}

function buildPopupLink(pFunction, pStatusText) {
	return 'javascript: ;\" ' +=20
			'onclick=3D\"' + pFunction + '(); return false;\" ' +=20
			'onmouseover=3D"window.status=3D\'' + pStatusText + '\'; return =
true;" ' +=20
			'onmouseout=3D"window.status=3D\'\'" ' +=20
			'onfocus=3D"window.status=3D\'' + pStatusText + '\'; return true;" ' =
+=20
			'onblur=3D"window.status=3D\'\'" ' +=20
			'title=3D\"' + pStatusText;
}
// END - DESIGN FUNCTION TO GENERATE A LINK TO OPEN A POPUP WINDOW







// BEGIN - GLOBAL VARIABLES
var thisOffset =3D '';

//track which menus are active
var activeMenu =3D 0;
var activeMenu2 =3D 0;
var menuPadding =3D 3;		// the cellpadding to put on the cell where a =
menu item is.
var menuWidthDx  =3D 4;		// differential
var subMenuStart =3D 95;
var subMenuSep   =3D 21;
if(isNS)	{
	menuWidthDx +=3D 11;
	subMenuStart -=3D 2;
}
// END - GLOBAL VARIABLES







// WHEN CLICKING THE WINDOW, HIDE THE MENU
document.onclick =3D killMenu;












// BEGIN - GENERAL MENU FUNCTIONS

//display a selected menu
function activateMenu(menuLayerRef, offset, voffset) {
    if (activeMenu !=3D menuLayerRef) {
        if (activeMenu) {=20
		   hideMenu('menu' + activeMenu)
		   if (activeMenu2) hideMenu2('menu' + activeMenu2);
		}
               =20
		offset =3D getMenuLeft(menuLayerRef);
		voffset =3D getMenuTop(menuLayerRef);
	=09
        var menuID =3D 'menu' + menuLayerRef;
        activeMenu =3D menuLayerRef;
       =20
        if (isNS) {
            document[menuID].top =3D (voffset - 4);
            document[menuID].left =3D (offset);
        }=20
        else {
            document.all[menuID].style.pixelTop =3D voffset;
            document.all[menuID].style.pixelLeft =3D offset;
        } // if is NS else

        showMenu(menuID)
    } // if is dynamic and new menu needed

    // kill menu if browser is IE
    if (!isNS && window.event) window.event.cancelBubble =3D true;
} // activateMenu



// Activate submenus
function activateMenu2(menuLayerRef, menu2LayerRef, offset, voffset)	{

	if (activeMenu2 !=3D menu2LayerRef) {
		if (activeMenu2) hideMenu2('menu' + activeMenu2);
		if (menu2LayerRef =3D=3D '0') return;
		                     =20
		offset =3D (offset*3/4) + getMenuLeft(menuLayerRef);
		//voffset =3D getMenuTop(menuLayerRef);	// no need to adjust vertical =
offset

		var menu2ID =3D 'menu' + menuLayerRef + '_' + menu2LayerRef;
		activeMenu2 =3D menuLayerRef + '_' + menu2LayerRef;

		if (isNS) {
		    document[menu2ID].top =3D 21 + voffset;
		    document[menu2ID].left =3D offset - 10;
		}=20
		else {
			document.all[menu2ID].style.pixelTop =3D 25 + voffset;
			document.all[menu2ID].style.pixelLeft =3D offset;
		} // if is NS else

		showMenu(menu2ID);
	} // if is dynamic and new menu needed

    // kill menu if browser is IE
    if (!isNS && window.event) window.event.cancelBubble =3D true;
} // function activateMenu2



// get left coordinate to display popup
function getMenuLeft(menuitem)	{
	var x=3D0, o =3D tblMenu.rows[0].cells[menuitem-1];

	while(o)	{
		x +=3D o.offsetLeft;
		o =3D o.offsetParent;
	}
	return x + 3;
}	//getMenuLeft


// get top coordinate to display popup
function getMenuTop(menuitem)	{
	var x=3D0, o =3D tblMenu.rows[0].cells[menuitem-1];

	x =3D o.offsetHeight;
	while(o)	{
		x +=3D o.offsetTop;
		o =3D o.offsetParent;
	}
	return x - 10;
}	//getMenuTop




// Show menu/submenu
function showMenu(layerID) {
	try	{showMenu_After(activeMenu);}		// HIDE DROPDOWNS AFTER SHOWING MENU
	catch(e) {e =3D null;}
	eval(layerRef + '["' + layerID + '"]' + styleRef + '.visibility =3D =
"visible"');
}

// Hide Menus
function hideMenu(layerID) {
	if (layerID=3D=3D0) return;
    try {hideMenu_After();}		// DISPLAY DROPDOWNS AFTER HIDING MENU
    catch(e) {e =3D null;}

	eval(layerRef + '["' + layerID + '"]' + styleRef + '.visibility =3D =
"hidden"');
	activeMenu =3D 0;
	if (activeMenu2 !=3D 0)	{
		hideMenu2('menu' + activeMenu2);
	}
}

// Hide submenus
function hideMenu2(layerID) {
    eval(layerRef + '["' + layerID + '"]' + styleRef + '.visibility =3D =
"hidden"');
	activeMenu2 =3D 0;
}


// check if there's an active menu and get rid of them.
function killMenu(e) {

	// Hide top menus
	if (activeMenu)	{
		hideMenu('menu'+activeMenu);
		activeMenu =3D activeMenu2 =3D 0;
	}
}  //function


// Generate the call for displaying sub-menus
function activateChild(a_i, a_i2){
 	var a_thisI2 =3D (eval(a_i2)+1)

 	if( !eval('window.arMenu'+a_i+'_'+(a_i2+1)) )	{
 		a_thisI2 =3D 0; //return '';
 	}
// 	return "onmouseover=3D\"activateMenu2("+ a_i +","+ a_thisI2 +","+ =
(eval(arMainProps[a_i][COL_LEFT])+eval(arMainProps[a_i][COL_WIDTH])+menuW=
idthDx) +","+ (subMenuStart + (eval(a_i2)*eval(subMenuSep))) +");\""
 	return "onmouseover=3D\"activateMenu2("+ a_i +","+ a_thisI2 +","+ =
(eval(arMainProps[a_i][COL_WIDTH])+menuWidthDx) +","+ (subMenuStart + =
((eval(a_i2)+1)*eval(subMenuSep))) +");\""
}	// function



// Get a specific number of HTML spaces
function Space(pNumber)	{
	var s =3D '';
	for (var i=3D0; i<pNumber; i++)	{
		s +=3D '&#160;'
	}
	return s;
}	// function



// Draw the Top Bar, Top Menus and Submenus
function drawMenuSystem()	{
	// BEGIN - WHEN TESTING
	//document.writeln('<form id=3Dform1 name=3Dform1><textarea =
cols=3D\"100\" rows=3D\"20\" wrap=3D\"off\" id=3Dtextarea1 =
name=3Dtextarea1>');
	// END - WHEN TESTING
=09

	//Create Menu Bar
	document.writeln(
		'<table width=3D\"100%\" border=3D\"0\" cellspacing=3D\"0\" =
cellpadding=3D\"0\"><tr><td valign=3D\"top\">'+
		'<table width=3D\"100%\" border=3D\"0\" cellspacing=3D\"0\" =
cellpadding=3D\"0\"><tr><td =
background=3D\"../images/menubar/bgd_nav1_grad.gif\" =
align=3D\"center\">'+
		'<table id=3D"tblMenu" border=3D\"0\" cellspacing=3D\"1\" =
cellpadding=3D\"2\" width=3D\"100%\"><tr =
background=3D\"../images/menubar/px_nav1.gif\">');
	for(i=3D0; i<arMainNav.length; i++)	{
		document.writeln(
			'<td class=3D\"NavTop1Cell\" =
background=3D\"../images/menubar/px_nav1.gif\" width=3D\"75\">' +
			'<a class=3D\"NavTopCell\" href=3D\"javascript: =
activateMenu('+(i+1)+', '+arMainProps[(i+1)][COL_LEFT]+', =
'+arMainProps[(i+1)][COL_TOP]+');\">' +=20
				arMainNav[i]+'</a>' +
			'</td>');
	}
=09
	// Title to display to the right-most part
	document.writeln('<td class=3D\"NavTop1Title\" align=3D\"right\" =
width=3D\"90%\">'+gSectionTitle+'</td>');
	document.writeln(
		'</tr></table>'+
		'</td></tr></table>'+
		'</td></tr></table>');



	// TO MAKE IT WORK ON NETSCAPE
	document.writeln('</td></tr><tr><td>');		// DEPENDS ON THE PAGE LAYOUT




	//Create Topic Menus
	for(i=3D1; i<=3DarMainNav.length; i++)	{
	    document.writeln(
			'<div id=3D\"menu'+i+'\" class=3D\"divMenu\">' +
			'<table border=3D\"0\" cellspacing=3D\"0\" =
cellpadding=3D\"'+menuPadding+'\" =
width=3D\"'+arMainProps[i][COL_WIDTH]+'\">');
	    for(i2=3D0; i2<eval('arMenu'+i+'.length'); i2++)	{
			document.writeln(
				'<tr><td>' +
				'<a class=3D\"MenuBarItem\" href=3D\"'+ eval('arMenu'+i+'[i2]')+'\" =
'+activateChild(i,i2)+'>' +
				eval('arMenu'+i+'Txt[i2]')+'</a>' +
				'</td></tr>');
	    }
		document.writeln(
			'</table>' +
			'</div>');
	}



	//Create SubTopic Menus	  =20
	for(i=3D1; i<=3DarMainNav.length; i++)	{
		for(i2=3D0; i2<eval('arMenu'+i+'.length'); i2++)	{
			if ( eval('window.arMenu'+i+'_'+(i2+1)) )	{
				document.writeln(
					'<div id=3D\"menu'+i+'_'+(i2+1)+'\" class=3D\"divMenu\">' +=20
						'<table border=3D\"0\" cellspacing=3D\"0\" =
cellpadding=3D\"'+menuPadding+'\" width=3D\"'+ =
eval('arMenu'+i+'_'+(i2+1)+'Width')+'\">');

				for(i3=3D1; i3<=3Deval("arMenu"+i+"_"+ (i2+1) +".length"); i3++)	{
					document.writeln(
							'<tr><td>' +=20
							'<a class=3D\"MenuBarItem\"  href=3D\"'+ =
eval("arMenu"+i+"_"+(i2+1)+"["+(i3-1)+"]") +'\">'+ =
eval("arMenu"+i+"_"+(i2+1)+"Txt["+(i3-1)+"]") +'</a>' +
							'</td></tr>');
				}
				document.writeln(
						'</table>' +
					'</div>');
			}
		}
	}
	// BEGIN - WHEN TESTING
	//document.writeln('</textarea></form>');
	// END - WHEN TESTING

}  // function drawMenuSystem

// END - GENERAL MENU FUNCTIONS


//</script>

------=_NextPart_000_0000_01C94C1C.A0F97CB0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: https://floridastatefirecollege.org/include/menus/menu_public.js

//<script language=3D"javascript">
<!-- //

// DISPLAY MENU BAR, TOP MEMU, SUB MENUS

if (isDynamic){
	var arMainNav  =3D new Array(Space(4)+'Locate'+Space(4),=20
								Space(4)+'Apply'+Space(4),
								Space(4)+'Dormitory&nbsp;Reservations'+Space(4),
								Space(3)+'Help'+Space(3));

	var gSectionTitle =3D '';
	if (publicPageName !=3D '')
		gSectionTitle =3D publicPageName;=09
	else
		gSectionTitle =3D '<b>registration</b>';
	var menuStartY =3D 140;						// Top position of the menu
	var COL_LEFT=3D0, COL_TOP=3D1, COL_WIDTH=3D2;		// described each column =
on arMainProps
	var arMainProps =3D new Array();
		arMainProps[1] =3D new Array(30, menuStartY, 200);
		arMainProps[2] =3D new Array(120, menuStartY, 180);
		arMainProps[3] =3D new Array(120, menuStartY, 160);

    var sAlert =3D 'javascript: alert(\'Page Under Construction!\');';

    var arMenu1 =3D new =
Array('pb_srch_adv.asp','pb_test_date_location_lst.aspx?InFromPublicMenu=3D=
1','pb_prereq_srch.asp?type=3DL', 'pb_renreq_srch.asp?Type=3DR', =
'pb_insreq_srch.asp?type=3DI', 'pb_proreq_srch.asp?type=3DP');
		var arMenu1Txt =3D new Array('Future Class Offerings','Future Test =
Offerings','Pre-Certification Requirements', 'Renewal Requirements', =
'Instructor Requirements', 'Training Provider Requirements');

	//var arMenu2 =3D new Array('pb_student_reg2.asp', =
'pb_student_reg.asp', 'pb_provider_app1.asp');
		//var arMenu2Txt =3D new Array('Create New Student Profile ', 'Update =
Existing Student Profile', 'Training Provider Application');

    var arMenu2 =3D new Array('pb_student_reg2.asp', =
'pb_provider_app1.asp', 'pb_exam_app_qual_select.aspx', =
'pb_instructor_app_info.aspx');
		var arMenu2Txt =3D new Array('Create New Student Profile ', 'Training =
Provider Application', 'Certification Exam', 'Single Course Exemption');

    var arMenu3 =3D new Array('pb_bed_request_dtl.asp', =
'pb_bed_cancel_dtl.asp');
		var arMenu3Txt =3D new Array('Make Reservation ', 'Cancel =
Reservation');
=09
	// BEGIN - HELP MENU
	arMainProps[4] =3D new Array(180, menuStartY, 120);
    var arMenu4 =3D new Array(getSpecialMenuLink('HELP'));
		var arMenu4Txt =3D new Array(getSpecialMenuText('HELP'));
	// END - HELP MENU

	drawMenuSystem();		// draw the complete menu system
}	// end if (isDynamic)
// -->
//</script>=09

------=_NextPart_000_0000_01C94C1C.A0F97CB0--
