Produced by Araxis Merge on 6/9/2017 3:51:38 PM Eastern Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.
| # | Location | File | Last Modified |
|---|---|---|---|
| 1 | Fri Jun 9 19:51:38 2017 UTC | ||
| 2 | eHealth_Exch (eHealth Exchange Enhancements) Build 3 docs & code_May_2017.zip\VAP_CIF_CODE0502.zip\VAP_CIF_CODE0502\VAP_CIF_CODE0502\nvap-web\src\main\webapp\WEB-INF\web | batchAnnounce.jsp | Fri Apr 21 20:15:58 2017 UTC |
| Description | Between Files 1 and 2 |
|
|---|---|---|
| Text Blocks | Lines | |
| Unchanged | 0 | 0 |
| Changed | 0 | 0 |
| Inserted | 1 | 333 |
| Removed | 0 | 0 |
| Whitespace | |
|---|---|
| Character case | Differences in character case are significant |
| Line endings | Differences in line endings (CR and LF characters) are ignored |
| CR/LF characters | Not shown in the comparison detail |
No regular expressions were active.
| 1 | <%-- | |||||
| 2 | Docume nt : Con sent Direc tive Batch Announce | |||||
| 3 | Create d By : Ste phen Schra nk | |||||
| 4 | --%> | |||||
| 5 | ||||||
| 6 | <%@taglib tagdir="/W EB-INF/tag s/formatti ng" prefix ="f" %> | |||||
| 7 | <%@taglib uri="http: //java.sun .com/jsp/j stl/core" prefix="c" %> | |||||
| 8 | <%@taglib tagdir="/W EB-INF/tag s/cpp" pre fix="cpp"% > | |||||
| 9 | <%@taglib tagdir="/W EB-INF/tag s/date" pr efix="date "%> | |||||
| 10 | ||||||
| 11 | <f:mainTem plate head erText="Ba tch Announ ce Patient s"> | |||||
| 12 | <scrip t type="te xt/javascr ipt" src=" js/OptionT ransfer.js "></script > | |||||
| 13 | <scrip t language ="JavaScri pt"> | |||||
| 14 | va r opt = ne w OptionTr ansfer("li st1","list 2"); | |||||
| 15 | op t.setAutoS ort(true); | |||||
| 16 | op t.setDelim iter(","); | |||||
| 17 | op t.saveNewL eftOptions ("newLeft" ); | |||||
| 18 | op t.saveNewR ightOption s("remoteO rganizatio n"); | |||||
| 19 | </scri pt> | |||||
| 20 | <c:cho ose> | |||||
| 21 | <c :when test ="${flow = = 'result' }"> | |||||
| 22 | <script type="text /javascrip t"> | |||||
| 23 | var bReady = f alse; | |||||
| 24 | wind ow.onbefor eunload = confirmExi t; | |||||
| 25 | func tion confi rmExit(){ | |||||
| 26 | if (!bRead y){ | |||||
| 27 | alert( "Please pr ess \"Cont inue\" or \"Cancel\" to exit t his page." ); | |||||
| 28 | if(nav igator.app Name.index Of('Micros oft Intern et Explore r') != -1) { | |||||
| 29 | wi ndow.setTi meout(func tion(){ | |||||
| 30 | document .execComma nd('Stop') ; | |||||
| 31 | }, 1); | |||||
| 32 | } else { | |||||
| 33 | wi ndow.setTi meout(func tion(){ | |||||
| 34 | window.s top(); | |||||
| 35 | }, 1); | |||||
| 36 | } | |||||
| 37 | } | |||||
| 38 | } | |||||
| 39 | ||||||
| 40 | func tion makeR eady(){ | |||||
| 41 | bReady = t rue; | |||||
| 42 | } | |||||
| 43 | </script > | |||||
| 44 | </ c:when> | |||||
| 45 | </c:ch oose> | |||||
| 46 | <scrip t> | |||||
| 47 | $( document). ready(func tion() { | |||||
| 48 | <c:choos e> | |||||
| 49 | <c:w hen test=" ${flow != 'result'}" > | |||||
| 50 | opt.init(d ocument.ba tchAnnounc eForm); | |||||
| 51 | setFocus(b atchAnnoun ceForm.lis t1); | |||||
| 52 | </c: when> | |||||
| 53 | </c:choo se> | |||||
| 54 | }) ; | |||||
| 55 | </scri pt> | |||||
| 56 | ||||||
| 57 | <cpp:e rrors /> < !-- END: S ITE NAME B AR --> | |||||
| 58 | <c:cho ose> | |||||
| 59 | <c :when test ="${flow = = 'result' }"> | |||||
| 60 | <%-- <%@ include fi le="batchA nnounceQue ryResult.j spf"%> --% > | |||||
| 61 | <div cla ss="messag e"> | |||||
| 62 | <b> | |||||
| 63 | <c:choose> | |||||
| 64 | <c:whe n test="${ outcome} = = 'success '"> | |||||
| 65 | Ba tch Announ ce message has been enqueued. | |||||
| 66 | </c:wh en> | |||||
| 67 | <c:whe n test="${ outcome} = = 'failed' "> | |||||
| 68 | Ba tch Announ ce message enqueue f ailed. | |||||
| 69 | </c:wh en> | |||||
| 70 | <c:oth erwise> | |||||
| 71 | &n bsp; | |||||
| 72 | </c:ot herwise> | |||||
| 73 | </c:choose > | |||||
| 74 | </b> | |||||
| 75 | </div> | |||||
| 76 | <div cla ss="form-c ontainer"> | |||||
| 77 | <for m name="ba tchAnnounc eForm" ac tion="Batc hAnnounce. do_sec" me thod="POST " onsubmit ="makeRead y(); retur n doSubmit (this)" > | |||||
| 78 | <fieldset> | |||||
| 79 | <legend>Ba tch Announ ce Query R esults</le gend> | |||||
| 80 | <table wid th="100%" class="res ults"> | |||||
| 81 | <thead class="re sults"> | |||||
| 82 | <t r role="ro w"> | |||||
| 83 | <th widt h="50%" cl ass="resul ts" role=" columnhead er">Organi zation Nam e</th> | |||||
| 84 | <th widt h="50%" cl ass="resul ts" align= "right" ro le="column header">Pa tient Coun t</th> | |||||
| 85 | </ tr> | |||||
| 86 | </thea d> | |||||
| 87 | <tbody class="re sults"> | |||||
| 88 | <c:cho ose> | |||||
| 89 | <c :when test ="${empty errorMessa ge}"> | |||||
| 90 | <c:forEa ch var="r" items="${ batchSumma ry}"> | |||||
| 91 | <tr role="row" > | |||||
| 92 | <td class= "results" role="grid cell"><c:o ut value=" ${r.target Organizati onName}" / ></td> | |||||
| 93 | <td class= "results" align="rig ht" role=" gridcell"> <c:out val ue="${r.ba tchSize}" /></td> | |||||
| 94 | </tr > | |||||
| 95 | </c:forE ach> | |||||
| 96 | </ c:when> | |||||
| 97 | <c :otherwise > | |||||
| 98 | <tr role ="row"> | |||||
| 99 | <td role="grid cell" cols pan="2"><c :out value ="${errorM essage}" / ></td> | |||||
| 100 | </tr> | |||||
| 101 | </ c:otherwis e> | |||||
| 102 | </c:ch oose> | |||||
| 103 | </tbod y> | |||||
| 104 | <tfoot class="re sults"> | |||||
| 105 | <t r role="ro w"> | |||||
| 106 | <td role ="gridcell "></td> | |||||
| 107 | <td role ="gridcell "></td> | |||||
| 108 | </ tr> | |||||
| 109 | </tfoo t> | |||||
| 110 | </table> | |||||
| 111 | </fieldset > | |||||
| 112 | <div> | |||||
| 113 | <c:cho ose> | |||||
| 114 | <c :when test ="${!empty batchSumm ary}"> | |||||
| 115 | <input n ame="accep t" title=" Continue" class="but ton" type= "submit" | |||||
| 116 | valu e="Continu e" /> | |||||
| 117 | </ c:when> | |||||
| 118 | <c :otherwise > | |||||
| 119 | <input n ame="accep t" title=" Continue " disabled=" disabled" class="but ton" type= "submit" | |||||
| 120 | valu e="Continu e" /> | |||||
| 121 | </ c:otherwis e> | |||||
| 122 | </c:ch oose> | |||||
| 123 | <input name="can cel" title ="Cancel" class="but ton" type= "submit" | |||||
| 124 | va lue="Cance l" /> | |||||
| 125 | </div> | |||||
| 126 | </fo rm> | |||||
| 127 | </div> | |||||
| 128 | </ c:when> | |||||
| 129 | <c :otherwise > | |||||
| 130 | <%-- <%@ include fi le="batchA nnounceQue ry.jspf"%> --%> | |||||
| 131 | <script language=" JavaScript "> | |||||
| 132 | $(do cument).re ady(functi on () { | |||||
| 133 | $("#startD ate").date picker({ | |||||
| 134 | maxDat e: 0, | |||||
| 135 | dateFo rmat: 'mm/ dd/yy', | |||||
| 136 | onClos e: functio n (selecte dDate) { | |||||
| 137 | $( "#endDate" ).datepick er("option ", "minDat e", select edDate); | |||||
| 138 | } | |||||
| 139 | }); | |||||
| 140 | ||||||
| 141 | $("#endDat e").datepi cker({ | |||||
| 142 | maxDat e: 0, | |||||
| 143 | dateFo rmat: 'mm/ dd/yy', | |||||
| 144 | onClos e: functio n (selecte dDate) { | |||||
| 145 | $( "#startDat e").datepi cker("opti on", "maxD ate", sele ctedDate); | |||||
| 146 | } | |||||
| 147 | }); | |||||
| 148 | ||||||
| 149 | $('#startD ate,#endDa te,#fileNa me').on('c hange', fu nction () { | |||||
| 150 | //if e ither date changes o r ssn, hid e the erro r message if its not already h idden | |||||
| 151 | $('#er rorMessage ').hide(); | |||||
| 152 | }); | |||||
| 153 | $('.moveBu ttons').on ('click', function ( ) { | |||||
| 154 | //if a ny one of the "move" buttons a re clicked , that mea ns a chang e has happ ened in th e multi se lect boxes so hid th e error me ssage | |||||
| 155 | $('#er rorMessage ').hide(); | |||||
| 156 | }); | |||||
| 157 | }); | |||||
| 158 | ||||||
| 159 | func tion clear SelectedFi le() { | |||||
| 160 | $("#fileCo nt").inner HTML = $(" #fileCont" ).innerHTM L; | |||||
| 161 | $("#clear" ).style.di splay = "n one"; | |||||
| 162 | } | |||||
| 163 | ||||||
| 164 | func tion isFor mValid() { | |||||
| 165 | if (docume nt.getElem entsByName ("list2")[ 0].childre n.length = == 0) { | |||||
| 166 | $('#er rorMessage ').html("P lease sele ct at leas t one orga nization." ); | |||||
| 167 | $('#er rorMessage ').show(); | |||||
| 168 | ||||||
| 169 | return false; | |||||
| 170 | } | |||||
| 171 | if ($("#ba t1").is(': checked')) { | |||||
| 172 | //vali date dates | |||||
| 173 | var st artDate = $('#startD ate').val( ); | |||||
| 174 | var en dDate = $( '#endDate' ).val(); | |||||
| 175 | ||||||
| 176 | var er rorMessage = validat eStartAndE ndDate(sta rtDate, en dDate); | |||||
| 177 | ||||||
| 178 | if (er rorMessage != '') | |||||
| 179 | { | |||||
| 180 | // we have an error so show the e rror, and then don't send the ajax reque st | |||||
| 181 | $( '#errorMes sage').htm l(errorMes sage); | |||||
| 182 | $( '#errorMes sage').sho w(); | |||||
| 183 | ||||||
| 184 | re turn false ; | |||||
| 185 | } else { | |||||
| 186 | re turn true; | |||||
| 187 | } | |||||
| 188 | } else { | |||||
| 189 | // Bat ch announc ing using an uploade d file | |||||
| 190 | if ($( "#fileName ").value = == "") { | |||||
| 191 | $( '#errorMes sage').htm l("Please select a f ile to upl oad."); | |||||
| 192 | $( '#errorMes sage').sho w(); | |||||
| 193 | ||||||
| 194 | re turn false ; | |||||
| 195 | } | |||||
| 196 | } | |||||
| 197 | return tru e; | |||||
| 198 | } | |||||
| 199 | ||||||
| 200 | func tion onBat chAnnounce TypeChange (rb) { | |||||
| 201 | document.g etElementB yId("start Date").dis abled = rb .value === "2"; | |||||
| 202 | document.g etElementB yId("endDa te").disab led = rb.v alue === " 2"; | |||||
| 203 | document.g etElementB yId("reann ounce").di sabled = r b.value == = "2"; | |||||
| 204 | document.g etElementB yId("fileN ame").disa bled = rb. value === "1"; | |||||
| 205 | document.g etElementB yId("clear ").disable d = rb.val ue === "1" ; | |||||
| 206 | } | |||||
| 207 | ||||||
| 208 | func tion valid ateFileExt (fileName) { | |||||
| 209 | var validE xts = new Array(".xl sx", ".xls ", ".csv") ; | |||||
| 210 | var fileEx t = fileNa me.substri ng(fileNam e.lastInde xOf('.')). toLowerCas e(); | |||||
| 211 | if (validE xts.indexO f(fileExt) < 0) { | |||||
| 212 | $('#er rorMessage ').html("Y ou selecte d an inval id file. P lease sele ct an Exce l or CSV f ile"); | |||||
| 213 | $('#er rorMessage ').show(); | |||||
| 214 | ||||||
| 215 | clearS electedFil e(); | |||||
| 216 | } else { | |||||
| 217 | $("#cl ear").styl e.display = "table-c ell"; | |||||
| 218 | } | |||||
| 219 | } | |||||
| 220 | </script > | |||||
| 221 | ||||||
| 222 | <div cla ss="messag e"> | |||||
| 223 | <b> | |||||
| 224 | <c:choose> | |||||
| 225 | <c:whe n test="${ outcome} = = 'success '"> | |||||
| 226 | Ba tch Announ ce message has been enqueued. | |||||
| 227 | </c:wh en> | |||||
| 228 | <c:whe n test="${ outcome} = = 'failed' "> | |||||
| 229 | Ba tch Announ ce message enqueue f ailed. | |||||
| 230 | </c:wh en> | |||||
| 231 | <c:oth erwise> | |||||
| 232 | &n bsp; | |||||
| 233 | </c:ot herwise> | |||||
| 234 | </c:choose > | |||||
| 235 | </b> | |||||
| 236 | </div> | |||||
| 237 | <div cla ss="well"> | |||||
| 238 | <p>S elect one or more or ganization s to send the announ cements to .</p> | |||||
| 239 | <p> | |||||
| 240 | The <i>Sta rt Date</i > and <i>E nd Date</i > are base d on the d ate that t he patient opted in or out. | |||||
| 241 | If only <i >Start Dat e</i> is e ntered, pa tients opt ing in or out on or after the date enter ed will be announced . | |||||
| 242 | If only <i >End Date< /i> is ent ered, pati ents optin g in or ou t prior to and inclu ding the d ate entere d will be announced. | |||||
| 243 | If <i>Star t Date</i> and <i>En d Date</i> are left blank, all patients will be co nsidered f or announc ements. | |||||
| 244 | </p> | |||||
| 245 | <p>I f the <i>R e-announce </i> check box is se lected, pa tients tha t have pre viously be en announc ed to a se lected org anization will be an nounced ag ain.</p> | |||||
| 246 | </div> | |||||
| 247 | <div cla ss="form-c ontainer"> | |||||
| 248 | <for m name="ba tchAnnounc eForm" id= "batchAnno unceForm" action="Ba tchAnnounc e.do_sec" method="PO ST" enctyp e="multipa rt/form-da ta" onsubm it="return isFormVal id(this);" > | |||||
| 249 | <input typ e="hidden" name="new Left" valu e="" /> | |||||
| 250 | <input typ e="hidden" name="rem oteOrganiz ation" val ue="" /> | |||||
| 251 | <fieldset> | |||||
| 252 | <legen d>Batch An nounce Cri teria</leg end> | |||||
| 253 | <div i d="errorMe ssage" cla ss="bg-war ning pad-1 5" style=" display: n one;"></di v> | |||||
| 254 | <div i d="multiSe lectAuthor izeForm" c lass="pad- top-10"> | |||||
| 255 | <t able> | |||||
| 256 | <tr> | |||||
| 257 | <td> | |||||
| 258 | <label> | |||||
| 259 | <span style="dis play:none; ">"This ta ble has tw o list box es:All Org anizations list box and Organi zations to whom you want to an nounce pat ients list box. Choo se and mov e the Orga nizations from the f irst list box to the next."</s pan> | |||||
| 260 | </label> < br/> | |||||
| 261 | </td > | |||||
| 262 | <td> &nbs p; &n bsp;</td> | |||||
| 263 | </tr> | |||||
| 264 | <tr> | |||||
| 265 | <td> | |||||
| 266 | <label for ="list1">A ll Organiz ations</la bel><br/>< br/> | |||||
| 267 | <select ti tle="All O rganizatio ns list bo x" style=" width: 310 px;" class ="listSele ct" name=" list1" id= "list1" mu ltiple="tr ue" size=" 10" onDblC lick="opt. transferRi ght()" dat a-tooltip= "<c:out va lue="${des criptors[' batchAnnou ncePatient sAllOrgani zationsFie ld']}" />" > | |||||
| 268 | <c:if test="${!e mpty organ izations}" > | |||||
| 269 | <c :forEach v ar="r" ite ms="${orga nizations} " varStatu s="i"> | |||||
| 270 | <option value="<c: out value= "${r.orgOi d}" />"><c :out value ="${r.orgN ame}" />&n bsp; &nbs p; </ option> | |||||
| 271 | </ c:forEach> | |||||
| 272 | </c:if > | |||||
| 273 | </select> | |||||
| 274 | </td > | |||||
| 275 | <td valign="mi ddle" alig n="left"> | |||||
| 276 | <input sty le="width: 125px; he ight: 30px ;" type="b utton" dat a-tooltip= "<c:out va lue="${des criptors[' batchAnnou nceMoveAll ']}" />" c lass="midB utton move Buttons" n ame="right " value="M ove All &g t;>" on click="opt .transferA llRight()" /><br /> | |||||
| 277 | <input typ e="button" data-tool tip="<c:ou t value="$ {descripto rs['batchA nnounceMov eSelectedR ight']}" / >" class=" midButton moveButton s" style=" width: 125 px; height : 30px;" n ame="right " value="M ove Select ed >" o nclick="op t.transfer Right()" / ><br /><br /> | |||||
| 278 | <input typ e="button" data-tool tip="<c:ou t value="$ {descripto rs['batchA nnounceMov eSelectedL eft']}" /> " class="m idButtonLe ft moveBut tons" styl e="width: 125px; hei ght: 30px; " name="le ft" value= "< Move Selected" onclick=" opt.transf erLeft()" /><br /> | |||||
| 279 | <input typ e="button" data-tool tip="<c:ou t value="$ {descripto rs['batchA nnounceCle ar']}" />" class="mi dButton mo veButtons" name="lef t" style=" width: 125 px; height : 30px;" v alue="Clea r" onclick ="opt.tran sferAllLef t()"> | |||||
| 280 | </td > | |||||
| 281 | <td> | |||||
| 282 | <label for ="list2">O rganizatio ns to whom you want to announc e patients .</label>< br/><br/> | |||||
| 283 | <select ti tle="Organ izations t o whom you want to a nnounce pa tients lis t box" nam e="list2" class="lis tSelect" m ultiple="t rue" size= "10" id="l ist2" styl e="width: 310px;" on DblClick=" opt.transf erLeft()" data-toolt ip="<c:out value="${ descriptor s['batchAn nouncePati entsOrgani zationsToA nnounceToF ield']}" / >"></selec t> | |||||
| 284 | </td > | |||||
| 285 | </tr> | |||||
| 286 | </ table> | |||||
| 287 | </div> | |||||
| 288 | <div i d="tipBatc hOptedIn" class="wid th-350" da ta-tooltip ="<c:out v alue="${de scriptors[ 'batchAnno uncePatien tsOptedInF ield']}" / >"> | |||||
| 289 | <d iv style=" display:ta ble-cell;" > | |||||
| 290 | <input t ype="radio " aria-lab elledby="r adioLabel" id="bat1" name="bat chAnnounce Type" valu e="1" titl e="Batch a nnounce pa tients tha t are opte d-in" styl e="margin- top: 20px; " onclick= "onBatchAn nounceType Change(thi s);" check ed> | |||||
| 291 | </ div> | |||||
| 292 | <d iv style=" display:ta ble-cell;" > | |||||
| 293 | <label n ame="radio Label" id= "radioLabe l"for="bat 1" style=" font-weigh t: normal; white-spa ce: nowrap ;">Batch a nnounce pa tients tha t have opt ed-in</lab el> | |||||
| 294 | </ div> | |||||
| 295 | </div> | |||||
| 296 | <div c lass="widt h-350" id= "dateTip" data-toolt ip="<c:out value="${ descriptor s['startDa teEndDateF ield']}" / >"> | |||||
| 297 | <d iv> | |||||
| 298 | <label f or="startD ate" class ="width-10 0">Start D ate</label > | |||||
| 299 | <date:da te id="sta rtDate" na me="startD ate" value ="${startD ate}"/> <i >mm/dd/yyy y</i> | |||||
| 300 | </ div> | |||||
| 301 | <d iv> | |||||
| 302 | <label f or="endDat e" class=" width-100" >End Date< /label> | |||||
| 303 | <date:da te id="end Date" name ="endDate" value="${ endDate}"/ > <i>mm/dd /yyyy</i> | |||||
| 304 | </ div> | |||||
| 305 | </div> | |||||
| 306 | <d iv id="tip Reannounce " class="w idth-200" data-toolt ip="<c:out value="${ descriptor s['reAnnou nceCheckbo x']}" />"> | |||||
| 307 | <label f or="reanno unce" clas s="width-1 00">Re-ann ounce</lab el> | |||||
| 308 | <i nput id="r eannounce" type="che ckbox" nam e="reannou nce" value ="reannoun ce" <c:if test="${re announce}" >checked=" true" </c: if> title= "Check to Reannounce "/> | |||||
| 309 | </div> | |||||
| 310 | <div i d="tipBatc hCSV" clas s="width-3 50" data-t ooltip="<c :out value ="${descri ptors['bat chAnnounce PatientsIn ExcelOrCSV FileField' ]}" />"> | |||||
| 311 | <d iv style=" display:ta ble-cell;" > | |||||
| 312 | <input t ype="radio " aria-lab elledby="r adioLabel" id="bat2" name="bat chAnnounce Type" valu e="2" titl e="Batch a nnounce pa tients lis ted in an Excel or C SV file" s tyle="marg in-top: 20 px;" oncli ck="onBatc hAnnounceT ypeChange( this);"> | |||||
| 313 | </ div> | |||||
| 314 | <d iv style=" display:ta ble-cell;" > | |||||
| 315 | <label f or="bat2" style="fon t-weight: normal; wh ite-space: nowrap;"> Batch anno unce patie nts listed in an Exc el or CSV file</labe l> | |||||
| 316 | </ div> | |||||
| 317 | </div> | |||||
| 318 | <div> | |||||
| 319 | <l abel for=" fileName" class="wid th-100">Fi le Name</l abel> | |||||
| 320 | <d iv id="fil eCont" sty le="displa y:table-ro w;"> | |||||
| 321 | <input t ype="file" id="fileN ame" name= "fileName" accept=". xlsx,.xls, .csv" size ="60" styl e="display :table-cel l;" disabl ed="true" onchange=" validateFi leExt(this .value);" data-toolt ip="<c:out value="${ descriptor s['batchAn nouncePati entsFileNa meField']} " />" /> | |||||
| 322 | <input t ype="butto n" id="cle ar" name=" clear" tit le="Clear" title="Cl ear select ed file" s tyle="disp lay:none" onclick="c learSelect edFile();" value="Cl ear"/> | |||||
| 323 | </ div> | |||||
| 324 | </div> | |||||
| 325 | </fieldset > | |||||
| 326 | <div> | |||||
| 327 | <input name="que ry" title= "Query" ti tle="Query for the a nnouncemen ts" class= "button" t ype="submi t" value=" Query"/> | |||||
| 328 | </div> | |||||
| 329 | </fo rm> | |||||
| 330 | </div> | |||||
| 331 | </ c:otherwis e> | |||||
| 332 | </c:ch oose> | |||||
| 333 | </f:mainTe mplate> |
Araxis Merge (but not the data content of this report) is Copyright © 1993-2016 Araxis Ltd (www.araxis.com). All rights reserved.