From: Subject: Java Pro Magazine - Let Me Paint You a Picture Date: Fri, 28 Oct 2005 12:24:41 -0500 MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_0006_01C5DBBA.9219EDE0"; type="multipart/alternative" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441 This is a multi-part message in MIME format. ------=_NextPart_000_0006_01C5DBBA.9219EDE0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.fawcette.com/javapro/images/logo_jpro.gif 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 F03qVrtJFoq8FJBK7OpaFysWiIC0rXfNkAgAADs= ------=_NextPart_000_0006_01C5DBBA.9219EDE0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.fawcette.com/images/spacer.gif R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== ------=_NextPart_000_0006_01C5DBBA.9219EDE0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.fawcette.com/images/xml.gif R0lGODlhJAAOANUAANVYBPHUwOFdBP/28P9yFeCngvfp4OVeBPRkBe3JsfBjBfr079+ecv+rc/fg 0NByM+e9of/j0Z9BA//m1eWEQ/+FNP/awc5VBM1nI//t4eezkeirgtRhFPBsFOR3Lt1uJPDBofjX wf98JOZ7M/PCofqWU/CugiEOAfmygv/Rsv+PRP+0gn0zAv+aV8JQBD8aAf/IpP////9mAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAkAA4AAAbKwAls SCwaj8ijpyVrOp/QqDTKYk6vWKq12YgNCDJVLEJYxWKVJuwcjlmmVWgoliBkYo+LOQZBEM4xLmIB AFJxTyILMQ4xDC4IZoofKwNngjGEhltOJWcBLgcyZhB0AySWg4VaUWIxBhxNZgUgZxiomKpQh04E AwOMGrExBSN0LreZq08pjQ9nFKLDAgguALcGGysrKk+7Ml2fByiuHbICTreAMSYKTt4yB9VNAi4u MvTnTvUyCvX++TLeZRlIRcKLgwgTKlzIcOGJIAA7 ------=_NextPart_000_0006_01C5DBBA.9219EDE0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.fawcette.com/javapro/images/divider.gif R0lGODlhAQABAIAAAMzMzAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw== ------=_NextPart_000_0006_01C5DBBA.9219EDE0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.fawcette.com/javapro/images/spacer.gif R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== ------=_NextPart_000_0006_01C5DBBA.9219EDE0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.fawcette.com/vsm/images/icon_printer.gif R0lGODlhEgASAJEAAKKi1KGh1P///wAAACH5BAAAAAAALAAAAAASABIAAAJADIyheCkPoxRnWmjw WlNh6UXVE4BCqX3RlpIk6j4AoHYYHbNnu1twGOqgKpti8USDXXZEoxO5tIyiK4ZzcTgUAAA7 ------=_NextPart_000_0006_01C5DBBA.9219EDE0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.fawcette.com/images/chineseicons.gif R0lGODlhrwAjAKIAALsFH////7I0T9+irsFkeaoYNJkAAAAAACH5BAAAAAAALAAAAACvACMAAAP/ GLrc9jDKSau9OOvNuzdNKI5kaZ5oqq5s675wLM90bd94ru987//AoHBILBqPyKRyyWwOASmBSdoo OK9AaMpaoi642LBOKwIUCuaCIZ1uEBpksfzFPtfRDhHoez57DX1ec4MncQGGhnt5J4qEjoVwkQxr DoZcgmCPmiOIkpOLDFyZjZulC50MhgGAX6QBoq92faa0qKciaoeZXwpWu7u0jgACfmgFxMeqCmuu ClRSu4LBtSkADyZv0dPbyg0DBtAFAyMCAgTa28HdCuekxwzleK9V6eojBKwiyCN9/fXUIgaMIzHg zb+DCBMqXMiwoSkAECNKnEixosWLEB1q3MixGKPHjyBDihxJsqTJkR9SqlzJsqVLCiESAAA7 ------=_NextPart_000_0006_01C5DBBA.9219EDE0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.fawcette.com/vsm/images/logo_ftp.gif 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 ------=_NextPart_000_0006_01C5DBBA.9219EDE0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.fawcette.com/javapro/includes/global.css BLOCKQUOTE { FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: arial, helvetica } INPUT { FONT: 8pt arial; VERTICAL-ALIGN: middle } SELECT { FONT: 8pt arial; VERTICAL-ALIGN: middle } A:link { COLOR: #003399; TEXT-DECORATION: underline } .header { FONT: 8pt arial; COLOR: #ffffff; BACKGROUND-COLOR: #333366 } A.header { FONT: 8pt arial; COLOR: #ffffff; BACKGROUND-COLOR: #333366; = TEXT-DECORATION: underline } A.header:hover { TEXT-DECORATION: underline } .headeryellow { FONT: 8pt arial; COLOR: #ffcc00; BACKGROUND-COLOR: #333366 } .tab { BACKGROUND-IMAGE: url(/images/tab_background.gif); VERTICAL-ALIGN: = baseline } .tabon { BACKGROUND-IMAGE: url(/images/tab_on_background.gif); FONT: bold 9pt = arial; VERTICAL-ALIGN: baseline; COLOR: #000000 } A.tabtext { FONT: bold 9pt arial; COLOR: #000000; TEXT-DECORATION: none } .navheader { PADDING-LEFT: 2px; FONT: bold 8pt arial; COLOR: #000000; = BACKGROUND-COLOR: #cccccc } .navheader2 { PADDING-LEFT: 2px; FONT: bold 8pt arial; COLOR: #000000; = BACKGROUND-COLOR: #ffffcc } A.navheader2 { =09 } .navheaderdl { PADDING-LEFT: 2px; MARGIN-BOTTOM: 0px; FONT: bold 8pt arial; COLOR: = #000000; BACKGROUND-COLOR: #cccccc } .navheaderline { BACKGROUND-COLOR: #003399 } .navsteptext { FONT: 8pt arial; COLOR: #000000 } .navstepred { FONT: bold 8pt arial; COLOR: #ff3333 } .navsignup { PADDING-LEFT: 5px; FONT: 8pt arial; COLOR: #000000; BACKGROUND-COLOR: = #ffffcc } .navcover { FONT: 8pt arial; COLOR: #003399; TEXT-ALIGN: center } .navlinkbold { MARGIN-BOTTOM: 0px; FONT: 8pt arial } A.navlinkbold { FONT: bold 8pt arial; COLOR: #003399; TEXT-DECORATION: none } A.navlinkbold:hover { TEXT-DECORATION: underline } A.navlink { PADDING-LEFT: 3px; FONT: 8pt arial; COLOR: #000000; TEXT-DECORATION: = none } A.navlink:hover { TEXT-DECORATION: underline } .navsublink { FONT: 8pt arial; MARGIN-LEFT: 3px; COLOR: #000000 } A.navsublink { FONT: 8pt arial; COLOR: #003399; TEXT-DECORATION: none } A.navsublink:hover { TEXT-DECORATION: underline } A.navstepred { FONT: bold 8pt arial; COLOR: #ff3333 } A.toc { FONT: 8pt arial; COLOR: #000000; TEXT-ALIGN: center; TEXT-DECORATION: = none } .updated { FONT: bold 8pt arial; COLOR: #003399 } .updatedtime { FONT: 8pt arial; COLOR: #000000 } .sectiontitle_blue { FONT: bold 13.5pt/0.9 times; VERTICAL-ALIGN: bottom; COLOR: #003399 } .sectiontitleline_blue { BACKGROUND-IMAGE: url(/images/blue_line.gif); LINE-HEIGHT: 1 } .sectiontitle_red { FONT: bold 13.5pt/0.9 times; VERTICAL-ALIGN: bottom; COLOR: #990000 } .sectiontitleline_red { BACKGROUND-IMAGE: url(/images/red_line.gif); LINE-HEIGHT: 1 } .maincontentcategory { FONT: bold 9pt arial; COLOR: #666666 } .maincontentcategoryred { FONT: bold 9pt arial; COLOR: #cc0000 } .maincontent { FONT: 9pt arial; COLOR: #000000 } .subscribe { FONT: bold 14pt times; COLOR: #000000; TEXT-ALIGN: center; = TEXT-DECORATION: underline } .subscribe1 { TEXT-ALIGN: right } A.subscribe1 { FONT: bold 10pt arial; COLOR: #003399; TEXT-DECORATION: underline } A.subscribe1:hover { TEXT-DECORATION: underline } .subcontent { FONT: 10pt arial; COLOR: #000000 } .subscribe { FONT: bold italic 10pt arial; COLOR: #003399; TEXT-ALIGN: center } .selection { FONT: bold 9pt arial; VERTICAL-ALIGN: top; COLOR: #000000 } A.maincontenttopheader { FONT: bold 20pt times; COLOR: #000000; TEXT-DECORATION: none } A.maincontenttopheader2 { FONT: bold 24pt times; COLOR: #000000; TEXT-DECORATION: none } .maincontenttopheader { FONT: bold 20pt times; COLOR: #000000; TEXT-DECORATION: none } A.maincontenttopheader:hover { TEXT-DECORATION: underline } A.maincontenttopbullets { FONT: bold 9pt arial; COLOR: #003399; TEXT-DECORATION: none } .maincontenttopbullets { FONT: bold 10pt arial; COLOR: #003399; TEXT-DECORATION: none } A.maincontenttopbullets:hover { TEXT-DECORATION: underline } A.maincontentheader { FONT: bold 14pt times; COLOR: #000000; TEXT-DECORATION: none } A.maincontentheader:hover { TEXT-DECORATION: underline } A.subcontentheader { FONT: bold 14pt times; COLOR: #000000; TEXT-DECORATION: none } A.subcontentheader:hover { TEXT-DECORATION: underline } A.readmore { FONT: bold 9pt arial; COLOR: #003399; TEXT-DECORATION: none } A.readmore:hover { TEXT-DECORATION: underline } .sectiontitle { FONT: bold 13.5pt times; VERTICAL-ALIGN: bottom; COLOR: #003399 } A.subscribe { FONT: bold italic 10pt arial; COLOR: #003399; TEXT-ALIGN: center; = TEXT-DECORATION: underline } A.subscribe:hover { TEXT-DECORATION: underline } A.subscribetop { FONT: bold 10pt arial; COLOR: #003399; TEXT-ALIGN: center; = TEXT-DECORATION: underline } A.subscribetop:hover { TEXT-DECORATION: underline } .featureheader { FONT: bold 14pt times; COLOR: #003399 } .featureitalic { FONT: bold italic 12pt times; COLOR: #cccccc } A.underline { FONT: 10pt arial; COLOR: #003399; TEXT-DECORATION: underline } A.underline:hover { TEXT-DECORATION: underline } .resourcetableborder { BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; = BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid } .resourcetable { BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; = BACKGROUND: #cccccc; MARGIN-BOTTOM: 5pt; MARGIN-LEFT: 5pt; BORDER-LEFT: = #666666 1px solid; BORDER-BOTTOM: #666666 1px solid } .resourcetablerow { BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; = BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid } .resourcetabletext { FONT: bold 8pt arial; COLOR: #003399; TEXT-DECORATION: none } .resourcetableheader { FONT: bold 10pt arial; COLOR: #333366; TEXT-DECORATION: none } A.resourcetablelink { FONT: bold 8pt arial; COLOR: #003399; TEXT-DECORATION: none } A.resourcetablelink:hover { TEXT-DECORATION: underline } .popupHeader { FONT: bold 12pt arial; COLOR: #003399 } .popupTitle { FONT: bold 10pt arial; COLOR: #003399 } .popupText { FONT: 10pt arial; COLOR: #000000 } A.popupClose { FONT: bold 10pt arial; COLOR: #003399; TEXT-DECORATION: underline } A.popupLink { FONT: 10pt arial; COLOR: #003399; TEXT-DECORATION: underline } A.popupLink:hover { TEXT-DECORATION: underline } .footer { FONT: 9pt arial; COLOR: #ffffff; BACKGROUND-COLOR: #999999; TEXT-ALIGN: = center } .divider { FONT: 9pt arial; COLOR: #cccccc } A.footernavlink { FONT: 8pt arial; COLOR: #333366; TEXT-DECORATION: none } A.footernavlink:hover { TEXT-DECORATION: underline } A.footerbold { FONT: bold 9pt arial; COLOR: #ffffff; BACKGROUND-COLOR: #999999 } P { FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: arial, helvetica } UL { FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: arial, helvetica } LI { FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: arial, helvetica } .tabletext { FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: verdana, helvetica } .smallnames { FONT-SIZE: 8pt; COLOR: #000000; FONT-STYLE: italic; FONT-FAMILY: = verdana, helvetica } .smallnames2 { FONT-SIZE: 8pt; COLOR: #000000; FONT-FAMILY: verdana, helvetica } .qa { FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: #cc0033; FONT-FAMILY: arial } .black10ptbld { FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: = verdana, helvetica } .black8pt { FONT-SIZE: 8pt; COLOR: #000000; FONT-FAMILY: arial, helvetica } .codesnippet { FONT-SIZE: 10pt; COLOR: #666666; FONT-FAMILY: courier } .FigureCap { FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #666699; FONT-FAMILY: arial, = helvetica } A.FigureCap { COLOR: #666699; TEXT-DECORATION: none } .TableCap { FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #666699; FONT-FAMILY: arial, = helvetica } A.FigureCap:hover { COLOR: #666699; TEXT-DECORATION: underline } .DropCap { FONT-WEIGHT: bold; FONT-SIZE: 16pt; COLOR: #003399 } .SubHead { FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #003399; FONT-FAMILY: arial, = helvetica } A.SubHead { COLOR: #003399; TEXT-DECORATION: none } A.SubHead:hover { TEXT-DECORATION: underline } .GraySubHead { FONT-WEIGHT: bold; FONT-SIZE: 11pt; COLOR: #666666; FONT-FAMILY: times, = serif } .BlackSubHead { FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: arial, = helvetica } .AboutAuthor { FONT: bold italic 11pt times; COLOR: #666666 } .AboutAuthor2 { FONT: bold 12pt times; COLOR: #666666 } .AboutAuthor2 { FONT: bold 12pt times; COLOR: #666666 } .FeatureHead { FONT: bold 20pt times; COLOR: #000000; TEXT-DECORATION: none } .FeatureDek { FONT: bold 10pt sans-serif; COLOR: #003399 } .FeatureDek2 { FONT: bold italic 14pt times; WIDTH: 250pt; COLOR: #003399 } .toolport { FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #666699; FONT-FAMILY: arial, = helvetica } .breadcrumb { FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: #666666; FONT-FAMILY: arial, = helvetica } A.breadcrumb { FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: #003399; FONT-FAMILY: arial, = helvetica; TEXT-DECORATION: underline } A.breadcrumb:hover { TEXT-DECORATION: underline } .SideBarSubHead { FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: #000000; FONT-FAMILY: arial, = helvetica } .SideBarTitle { FONT-WEIGHT: bold; FONT-SIZE: 11pt; COLOR: #003399; FONT-FAMILY: arial, = helvetica } .bpbluetype { FONT-WEIGHT: bold; FONT-SIZE: 8pt; COLOR: #0860a8; FONT-FAMILY: = arial-narrow, helvetica } .bpbartype { FONT-SIZE: 8pt; COLOR: #000000; FONT-FAMILY: arial-narrow, helvetica } .sponsorheadertop { FONT: bold 12pt arial; COLOR: #800000 } .sponsorheader { FONT: bold 9pt arial; COLOR: #800000 } .sponsor { FONT: bold 10pt arial; COLOR: #000000 } .sponsortext { FONT: 10pt arial; COLOR: #000000 } .sponsortextlink { FONT: 8pt arial; COLOR: #003399 } A.sponsorheader { FONT: bold 9pt arial; COLOR: #800000; TEXT-DECORATION: none } A.sponsorheader:hover { TEXT-DECORATION: underline } A.sponsortextlinkbold { FONT: bold 8pt arial; COLOR: #003399; TEXT-DECORATION: none } A.sponsortextlinkbold:hover { TEXT-DECORATION: underline } .mainheader_blue { FONT: bold 10pt arial; COLOR: #003399; TEXT-DECORATION: none } A.blue { FONT-WEIGHT: bold; COLOR: #003399; TEXT-DECORATION: underline } A.blue:hover { TEXT-DECORATION: underline } .ad_head { FONT-SIZE: 10px; COLOR: #808080; FONT-FAMILY: Arial, Helvetica; = FONT-VARIANT: small-caps } .bigbox { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FLOAT: right; PADDING-BOTTOM: = 5px; PADDING-TOP: 5px } .bigbox_left { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FLOAT: left; PADDING-BOTTOM: = 5px; PADDING-TOP: 5px } .rightad { PADDING-LEFT: 6px; FLOAT: right; PADDING-TOP: 4px } ------=_NextPart_000_0006_01C5DBBA.9219EDE0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0019_01C5DBBA.921C5EE0" ------=_NextPart_001_0019_01C5DBBA.921C5EE0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.fawcette.com/javapro/2001_12/magazine/features/slloyd/ =EF=BB=BF Java Pro Magazine - Let Me Paint You a = Picture
Welcome Guest!
Create Account | Login
Locator+ Code: =

Search: =20 Java Pro WSSM XML =20
3D""=20
FTPOnline Channels Conferences Resources Hot=20 Topics Partner = Sites Magazines About=20 FTP 3D"RSS

Free Subscription to Java Pro=20

Resources
=E2=80=A2 Get=20 the code for this article
=E2=80=A2 Get=20 the code for this issue

Let Me Paint You a = Picture
Use applets and servlets to create = Web-based,=20 interactive graphics that can make many tasks a whole = lot=20 easier
by = Steve Lloyd=20

Today's businesses are = under=20 increasing scrutiny by many different agencies. These = agencies=20 watch everything from sales and expenses to where you = dig in=20 the ground. Sometimes they require periodic reports = that get=20 filed and reviewed only when there's a problem. Other = times=20 you have to request permits that must be approved and = posted=20 before work can begin. You can avoid many fines and = stop-work=20 notices if you get all of the regulatory requirements = right=20 the first time.

Web-based, interactive graphics help make permit = requests=20 more meaningful. A picture really is worth a thousand = or more=20 words. The picture's value gets higher when it can be = saved as=20 part of the request. It becomes even more valuable = when you=20 can draw on the picture and save the drawing as part = of the=20 request.

ADVERTISEMENT

I've been working on a project to add interactive = drawing=20 capabilities to an existing permit request system. An = applet=20 allows the user to obtain a map from a map server and = draw=20 figures and text on top of it. The applet is embedded = in a=20 permit request Web page, and it saves the drawing in a = database associated with the permit request. The = existing=20 permit system was written some time ago using Active = Server=20 Pages (ASP) to generate text-based forms a user could = complete=20 in a browser. It was designed to provide access from = any=20 flavor of browser. The upgrade was required to meet = the same=20 general goals as the original system.

This n-tier application has three = significant=20 pieces of Java software: a drawing editor applet, a = map=20 servlet, and a drawing servlet. The map servlet = provides map=20 images similar to those obtained from sites like = MapQuest. The=20 principal difference is that it uses electronic = drawings that=20 are maintained locally. The editor applet obtains=20 user-requested maps from the servlet and allows the = user to=20 draw figures and text on top of the map images. The = editor=20 provides capabilities similar to those found in a = vector-based=20 drawing package. The drawing servlet saves and = retrieves=20 drawings created by the editor from the permit = database. Let's=20 focus on capabilities provided by the drawing = servlet.

The process for using interactive graphics for any = permit=20 has four steps. First, a map has to be obtained and = displayed=20 by the browser. Next, if a drawing exists, it must be = obtained=20 and displayed on top of the map. Then, an editor must = be used=20 to create a new drawing or modify an existing one to = visually=20 describe the permit application. Finally, the drawing = must be=20 saved in a database along with other data obtained = from the=20 Web-based application form.

Back=20 to top

Printer-Friendly=20 Version












Java=20 Pro | Visual Studio = Magazine | Windows Server System=20 Magazine
.NET Magazine | Enterprise = Architect | XML & Web = Services=20 Magazine
VSLive! = | Thunder Lizard=20 Events | Discussions = | Newsletters = | FTP Home =
 
=C2=A9 Copyright 2001-2005 Fawcette Technical = Publications | Privacy = Policy | Contact = Us=20
------=_NextPart_001_0019_01C5DBBA.921C5EE0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1906539797792853&dt=1130520083872&lmt=1130520083&format=468x60_as&output=html&url=http%3A%2F%2Fwww.fawcette.com%2Fjavapro%2F2001%255F12%2Fmagazine%2Ffeatures%2Fslloyd%2F&color_bg=FFFFFF&color_text=000000&color_link=0000FF&color_url=008000&color_border=336699&ref=http%3A%2F%2Fus.altavista.com%2Fweb%2Fresults%3Ftlb%3D1%26fr%3Dtb%26kgs%3D0%26ienc%3Dutf8%26q%3Dinteractive%2Bdrawing%2Bapplet%2Bjava%26stq%3D20&cc=99&u_h=768&u_w=1024&u_ah=768&u_aw=1024&u_cd=32&u_tz=-300&u_his=3&u_java=true =EF=BB=BF
Free JSP Editor,=20 Eclipse
JSP,=20 Struts, JSF IDE - M7 NitroX Download Free JSP Editor=20
Web.XML- Java Config=20 File
Edit/Validate=20 web.xml for J2EE Apps Syntax Help, Easy-to-use, Free = D/L.=20
Ads=20 by=20 = Goooooogle
=
------=_NextPart_001_0019_01C5DBBA.921C5EE0-- ------=_NextPart_000_0006_01C5DBBA.9219EDE0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.fawcette.com/includes/nav/HM_Loader.js /*HM_Loader.js=0A= * by Peter Belesis. v4.0.13 010712=0A= * Copyright (c) 2001 Peter Belesis. All Rights Reserved.=0A= */=0A= =0A= HM_DOM =3D (document.getElementById) ? true : false;=0A= HM_NS4 =3D (document.layers) ? true : false;=0A= HM_IE =3D (document.all) ? true : false;=0A= HM_IE4 =3D HM_IE && !HM_DOM;=0A= HM_Mac =3D (navigator.appVersion.indexOf("Mac") !=3D -1);=0A= HM_IE4M =3D HM_IE4 && HM_Mac;=0A= HM_IsMenu =3D (HM_DOM || HM_NS4 || (HM_IE4 && !HM_IE4M));=0A= =0A= HM_BrowserString =3D HM_NS4 ? "NS4" : HM_DOM ? "DOM" : "IE4";=0A= =0A= if(window.event + "" =3D=3D "undefined") event =3D null;=0A= function HM_f_PopUp(){return false};=0A= function HM_f_PopDown(){return false};=0A= popUp =3D HM_f_PopUp;=0A= popDown =3D HM_f_PopDown;=0A= =0A= =0A= HM_GL_MenuWidth =3D 150;=0A= HM_GL_FontFamily =3D "Arial,sans-serif";=0A= HM_GL_FontSize =3D 10;=0A= HM_GL_FontBold =3D true;=0A= HM_GL_FontItalic =3D false;=0A= HM_GL_FontColor =3D "black";=0A= HM_GL_FontColorOver =3D "white";=0A= HM_GL_BGColor =3D "transparent";=0A= HM_GL_BGColorOver =3D "transparent";=0A= HM_GL_ItemPadding =3D 3;=0A= =0A= HM_GL_BorderWidth =3D 2;=0A= HM_GL_BorderColor =3D "red";=0A= HM_GL_BorderStyle =3D "solid";=0A= HM_GL_SeparatorSize =3D 2;=0A= HM_GL_SeparatorColor =3D "yellow";=0A= =0A= HM_GL_ImageSrc =3D "HM_More_black_right.gif";=0A= HM_GL_ImageSrcLeft =3D "HM_More_black_left.gif";=0A= =0A= HM_GL_ImageSrcOver =3D "HM_More_white_right.gif";=0A= HM_GL_ImageSrcLeftOver =3D "HM_More_white_left.gif";=0A= =0A= HM_GL_ImageSize =3D 0;=0A= HM_GL_ImageHorizSpace =3D 0;=0A= HM_GL_ImageVertSpace =3D 0;=0A= =0A= HM_GL_KeepHilite =3D false;=0A= HM_GL_ClickStart =3D false;=0A= HM_GL_ClickKill =3D 0;=0A= HM_GL_ChildOverlap =3D 40;=0A= HM_GL_ChildOffset =3D 10;=0A= HM_GL_ChildPerCentOver =3D null;=0A= HM_GL_TopSecondsVisible =3D .5;=0A= HM_GL_ChildSecondsVisible =3D .3;=0A= HM_GL_StatusDisplayBuild =3D 0;=0A= HM_GL_StatusDisplayLink =3D 1;=0A= HM_GL_UponDisplay =3D null;=0A= HM_GL_UponHide =3D null;=0A= =0A= //HM_GL_RightToLeft =3D true;=0A= HM_GL_CreateTopOnly =3D HM_NS4 ? true : false;=0A= HM_GL_ShowLinkCursor =3D true;=0A= =0A= // the following function is included to illustrate the improved JS = expression handling of=0A= // the left_position and top_position parameters=0A= // you may delete if you have no use for it=0A= =0A= function HM_f_CenterMenu(topmenuid) {=0A= var MinimumPixelLeft =3D 0;=0A= var TheMenu =3D HM_DOM ? document.getElementById(topmenuid) : HM_IE4 ? = document.all(topmenuid) : eval("window." + topmenuid);=0A= var TheMenuWidth =3D HM_DOM ? parseInt(TheMenu.style.width) : HM_IE4 ? = TheMenu.style.pixelWidth : TheMenu.clip.width;=0A= var TheWindowWidth =3D HM_IE ? document.body.clientWidth : = window.innerWidth;=0A= return Math.max(parseInt((TheWindowWidth-TheMenuWidth) / = 2),MinimumPixelLeft);=0A= }=0A= =0A= if(HM_IsMenu) {=0A= document.write("<\/SCR" + = "IPT>");=0A= document.write("<\/SCR" + "IPT>");=0A= }=0A= =0A= //end ------=_NextPart_000_0006_01C5DBBA.9219EDE0--