From: "Saved by Windows Internet Explorer 8" Subject: A Novel Computer-Based Method for Measuring Vernier Acuity at Short Test Distances -- Little et al. 46 (5): 5647 -- ARVO Meeting Abstracts Date: Fri, 13 May 2011 13:50:42 +0100 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0011_01CC1174.BFE81BC0" X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7601.17574 This is a multi-part message in MIME format. ------=_NextPart_000_0011_01CC1174.BFE81BC0 Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Content-Location: http://abstracts.iovs.org//cgi/content/abstract/46/5/5647?sid=8730e340-8a1d-46b9-bcec-d641f947dae2 A Novel Computer-Based Method for Measuring Vernier = Acuity at Short Test Distances -- Little et al. 46 (5): 5647 -- ARVO = Meeting Abstracts =
3D"ARVO
HOME HELP FEEDBACK SUBSCRIPTIONS ARCHIVE SEARCH
3D"
3D" QUICK=20 SEARCH:   [advanced] 3D"
3D"


     
3D"
3D"

This = Article
3D"
3D"
Services
3D"
3D"Right Email=20 this article to a friend
3D"Right Similar=20 articles in this journal
3D"Right Alert me = to new=20 issues of the journal
3D"Right Dow= nload=20 to citation manager
3D"
Citing = Articles
3D"
3D"Right Citing Articles via Google = Scholar
3D"
Google = Scholar
3D"
3D"Right Articles by Little, = J.-A.
3D"Right Articles by Saunders, = K.J.
3D"Right Search for Related Content =
3D"
PubMed
3D"
3D"Right Articles by Little, J.-A. =
3D"Right Articles by Saunders, K.J.=20 =
Invest Ophthalmol Vis Sci 2005;46: E-Abstract = 5647.
=A9 2005=20 ARVO =

5647=97B850

A Novel Computer=96Based Method for Measuring Vernier Acuity at = Short Test=20 Distances

J.=96A. Little, = J.S.=20 Lauritzen and K.J. Saunders =

Vision Sciences, University Ulster, Coleraine, United = Kingdom=20

Commercial Relationships: J. Little, None; J.S.=20 Lauritzen, None; K.J. Saunders, None.

Support: Department for Employment and Learning = Studentship=20

Abstract

Purpose: It is accepted that vernier acuity reflects=20 cortical processing (Levi et al 1985). This has been = measured=20 as low as 5.1 arcsec (Li et al 2000). Such low = thresholds=20 combined with the resolution limitations of commercially = available=20 CRTs have necessitated large test distances.

We designed a protocol to measure vernier acuity using a CRT = at=20 short test distances.

Methods: A modified contrast masking protocol was used = to=20 display a sub=96pixel offset. The target stimulus was a small = sine=20 wave grating superimposed on a large masking sine wave = grating.=20 Both mask and target had either a Gaussian or square = envelope.=20 The target was moved out of phase by different offsets = relative=20 to the mask. Contrast thresholds were obtained using a QUEST=20 adaptive staircase procedure. Perceived vernier offset was = calculated=20 as follows:

Offset =3D |x =96 3D{pi}=20/2| radians

where x =3D tan=961 {(0.5 + k.cos =D8)/k.sin =D8}, = k is=20 contrast threshold and =D8 is phase offset.

To identify stimuli that provide a valid measure of vernier = acuity=20 the following criteria were applied: i) comparable thresholds = to=20 traditional vernier acuity, ii) plausible measures yielded, = iii)=20 resistance to blur. A variety of parameters influencing = suitability=20 of the stimulus were identified: spatial frequency, type of = mask,=20 size, phase and type of target (Gabor, Gaussian, and = square=96edged=20 targets).

Preliminary investigation isolated four promising stimuli. The=20 following experiments revealed the optimal protocol for = measuring=20 vernier acuity at short test distances.

1) 4 subjects were tested using all four stimuli, each presented = 100 times at 7 different offsets. The pattern of thresholds=20 obtained enabled selection of a single testing protocol, = subsequently=20 referred to as Gabor=96Vernier.

2) The impact of dioptric blur on the Gabor=96Vernier stimulus = and a=20 contrast masking task was evaluated.

3) Gabor=96Vernier thresholds were compared to traditional = vernier=20 acuity measures.

Results: 1) Gabor=96Vernier stimulus parameters: the = mask=20 is a Gabor patch and the target a small Gaussian=96edged = square=20 grating, spatial frequency 1.7 cpd. A target 67.5=B0 out of = phase=20 relative to the mask yielded the most plausible and = repeatable=20 vernier thresholds.

2) The Gabor=96Vernier task produced thresholds more resistant = to=20 dioptric blur than the contrast masking task.

3) Thresholds obtained with the traditional vernier task = compared=20 well to Gabor=96Vernier thresholds. A paired t=96test = revealed no=20 statistically significant difference between the two = thresholds=20 (p=3D0.20).

Conclusions: These results indicate that the = Gabor=96Vernier=20 test will prove to be a novel and reliable method of testing=20 vernier acuity at short test distances.

Keywords: visual cortex =95 pattern vision =95 = perception

3D"=A9 2005, The = Association for=20 Research in Vision and Ophthalmology, Inc., all rights reserved. For = permission=20 to reproduce any part of this abstract, contact the ARVO Office at arvo{at}arvo.org .




------=_NextPart_000_0011_01CC1174.BFE81BC0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://abstracts.iovs.org/icons/banner/title.gif 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 xjjO8QpCAAA7 ------=_NextPart_000_0011_01CC1174.BFE81BC0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://abstracts.iovs.org/icons/spacer.gif R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAQAICRAEAOw== ------=_NextPart_000_0011_01CC1174.BFE81BC0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://abstracts.iovs.org/icons/shared/misc/arrowTtrim.gif R0lGODlhBAAJAIABAGZmZv///yH5BAEAAAEALAAAAAAEAAkAAAIKjAMHidsLm2HHFAA7 ------=_NextPart_000_0011_01CC1174.BFE81BC0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://abstracts.iovs.org/math/pi.gif R0lGODlhCAAGAMIAAAAAACQkJElJSW1tbZKSkra2ttvb2////yH5BAEAAAcALAAAAAAIAAYAQAMX eAPcJ+IEck5Rz9RBCCfGZUTBVQUaVyUAOw== ------=_NextPart_000_0011_01CC1174.BFE81BC0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://abstracts.iovs.org/icons/ARVOlogo.gif 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 A0bw1heDuKbBmRUnODGBwQYnIAA7 ------=_NextPart_000_0011_01CC1174.BFE81BC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://abstracts.iovs.org/javascript/ajax/xmlhttprequest.js /*=0A= =0A= Cross-Browser XMLHttpRequest v1.2=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=0A= =0A= Emulate Gecko 'XMLHttpRequest()' functionality in IE and Opera. Opera = requires=0A= the Sun Java Runtime Environment .=0A= =0A= by Andrew Gregory=0A= http://www.scss.com.au/family/andrew/webdesign/xmlhttprequest/=0A= =0A= This work is licensed under the Creative Commons Attribution License. To = view a=0A= copy of this license, visit = http://creativecommons.org/licenses/by-sa/2.5/ or=0A= send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, = California=0A= 94305, USA.=0A= =0A= Attribution: Leave my name and web address in this script intact.=0A= =0A= Not Supported in Opera=0A= ----------------------=0A= * user/password authentication=0A= * responseXML data member=0A= =0A= Not Fully Supported in Opera=0A= ----------------------------=0A= * async requests=0A= * abort()=0A= * getAllResponseHeaders(), getAllResponseHeader(header)=0A= =0A= */=0A= // IE support=0A= if (window.ActiveXObject && !window.XMLHttpRequest) {=0A= window.XMLHttpRequest =3D function() {=0A= var msxmls =3D new Array(=0A= 'Msxml2.XMLHTTP.5.0',=0A= 'Msxml2.XMLHTTP.4.0',=0A= 'Msxml2.XMLHTTP.3.0',=0A= 'Msxml2.XMLHTTP',=0A= 'Microsoft.XMLHTTP');=0A= for (var i =3D 0; i < msxmls.length; i++) {=0A= try {=0A= return new ActiveXObject(msxmls[i]);=0A= } catch (e) {=0A= }=0A= }=0A= return null;=0A= };=0A= }=0A= // Gecko support=0A= /* ;-) */=0A= // Opera support=0A= if (window.opera && !window.XMLHttpRequest) {=0A= window.XMLHttpRequest =3D function() {=0A= this.readyState =3D 0; // = 0=3Duninitialized,1=3Dloading,2=3Dloaded,3=3Dinteractive,4=3Dcomplete=0A= this.status =3D 0; // HTTP status codes=0A= this.statusText =3D '';=0A= this._headers =3D [];=0A= this._aborted =3D false;=0A= this._async =3D true;=0A= this._defaultCharset =3D 'ISO-8859-1';=0A= this._getCharset =3D function() {=0A= var charset =3D _defaultCharset;=0A= var contentType =3D = this.getResponseHeader('Content-type').toUpperCase();=0A= val =3D contentType.indexOf('CHARSET=3D');=0A= if (val !=3D -1) {=0A= charset =3D contentType.substring(val);=0A= }=0A= val =3D charset.indexOf(';');=0A= if (val !=3D -1) {=0A= charset =3D charset.substring(0, val);=0A= }=0A= val =3D charset.indexOf(',');=0A= if (val !=3D -1) {=0A= charset =3D charset.substring(0, val);=0A= }=0A= return charset;=0A= };=0A= this.abort =3D function() {=0A= this._aborted =3D true;=0A= };=0A= this.getAllResponseHeaders =3D function() {=0A= return this.getAllResponseHeader('*');=0A= };=0A= this.getAllResponseHeader =3D function(header) {=0A= var ret =3D '';=0A= for (var i =3D 0; i < this._headers.length; i++) {=0A= if (header =3D=3D '*' || this._headers[i].h =3D=3D header) {=0A= ret +=3D this._headers[i].h + ': ' + this._headers[i].v + '\n';=0A= }=0A= }=0A= return ret;=0A= };=0A= this.getResponseHeader =3D function(header) {=0A= var ret =3D getAllResponseHeader(header);=0A= var i =3D ret.indexOf('\n');=0A= if (i !=3D -1) {=0A= ret =3D ret.substring(0, i);=0A= }=0A= return ret;=0A= };=0A= this.setRequestHeader =3D function(header, value) {=0A= this._headers[this._headers.length] =3D {h:header, v:value};=0A= };=0A= this.open =3D function(method, url, async, user, password) {=0A= this.method =3D method;=0A= this.url =3D url;=0A= this._async =3D true;=0A= this._aborted =3D false;=0A= this._headers =3D [];=0A= if (arguments.length >=3D 3) {=0A= this._async =3D async;=0A= }=0A= if (arguments.length > 3) {=0A= opera.postError('XMLHttpRequest.open() - user/password not = supported');=0A= }=0A= this.readyState =3D 1;=0A= if (this.onreadystatechange) {=0A= this.onreadystatechange();=0A= }=0A= };=0A= this.send =3D function(data) {=0A= if (!navigator.javaEnabled()) {=0A= alert("XMLHttpRequest.send() - Java must be installed and = enabled.");=0A= return;=0A= }=0A= if (this._async) {=0A= setTimeout(this._sendasync, 0, this, data);=0A= // this is not really asynchronous and won't execute until the = current=0A= // execution context ends=0A= } else {=0A= this._sendsync(data);=0A= }=0A= }=0A= this._sendasync =3D function(req, data) {=0A= if (!req._aborted) {=0A= req._sendsync(data);=0A= }=0A= };=0A= this._sendsync =3D function(data) {=0A= this.readyState =3D 2;=0A= if (this.onreadystatechange) {=0A= this.onreadystatechange();=0A= }=0A= // open connection=0A= var url =3D new java.net.URL(new = java.net.URL(window.location.href), this.url);=0A= var conn =3D url.openConnection();=0A= for (var i =3D 0; i < this._headers.length; i++) {=0A= conn.setRequestProperty(this._headers[i].h, this._headers[i].v);=0A= }=0A= this._headers =3D [];=0A= if (this.method =3D=3D 'POST') {=0A= // POST data=0A= conn.setDoOutput(true);=0A= var wr =3D new = java.io.OutputStreamWriter(conn.getOutputStream(), this._getCharset());=0A= wr.write(data);=0A= wr.flush();=0A= wr.close();=0A= }=0A= // read response headers=0A= // NOTE: the getHeaderField() methods always return nulls for me :(=0A= var gotContentEncoding =3D false;=0A= var gotContentLength =3D false;=0A= var gotContentType =3D false;=0A= var gotDate =3D false;=0A= var gotExpiration =3D false;=0A= var gotLastModified =3D false;=0A= for (var i =3D 0; ; i++) {=0A= var hdrName =3D conn.getHeaderFieldKey(i);=0A= var hdrValue =3D conn.getHeaderField(i);=0A= if (hdrName =3D=3D null && hdrValue =3D=3D null) {=0A= break;=0A= }=0A= if (hdrName !=3D null) {=0A= this._headers[this._headers.length] =3D {h:hdrName, = v:hdrValue};=0A= switch (hdrName.toLowerCase()) {=0A= case 'content-encoding': gotContentEncoding =3D true; break;=0A= case 'content-length' : gotContentLength =3D true; break;=0A= case 'content-type' : gotContentType =3D true; break;=0A= case 'date' : gotDate =3D true; break;=0A= case 'expires' : gotExpiration =3D true; break;=0A= case 'last-modified' : gotLastModified =3D true; break;=0A= }=0A= }=0A= }=0A= // try to fill in any missing header information=0A= var val;=0A= val =3D conn.getContentEncoding();=0A= if (val !=3D null && !gotContentEncoding) = this._headers[this._headers.length] =3D {h:'Content-encoding', v:val};=0A= val =3D conn.getContentLength();=0A= if (val !=3D -1 && !gotContentLength) = this._headers[this._headers.length] =3D {h:'Content-length', v:val};=0A= val =3D conn.getContentType();=0A= if (val !=3D null && !gotContentType) = this._headers[this._headers.length] =3D {h:'Content-type', v:val};=0A= val =3D conn.getDate();=0A= if (val !=3D 0 && !gotDate) this._headers[this._headers.length] = =3D {h:'Date', v:(new Date(val)).toUTCString()};=0A= val =3D conn.getExpiration();=0A= if (val !=3D 0 && !gotExpiration) = this._headers[this._headers.length] =3D {h:'Expires', v:(new = Date(val)).toUTCString()};=0A= val =3D conn.getLastModified();=0A= if (val !=3D 0 && !gotLastModified) = this._headers[this._headers.length] =3D {h:'Last-modified', v:(new = Date(val)).toUTCString()};=0A= // read response data=0A= var reqdata =3D '';=0A= var stream =3D conn.getInputStream();=0A= if (stream) {=0A= var reader =3D new java.io.BufferedReader(new = java.io.InputStreamReader(stream, this._getCharset()));=0A= var line;=0A= while ((line =3D reader.readLine()) !=3D null) {=0A= if (this.readyState =3D=3D 2) {=0A= this.readyState =3D 3;=0A= if (this.onreadystatechange) {=0A= this.onreadystatechange();=0A= }=0A= }=0A= reqdata +=3D line + '\n';=0A= }=0A= reader.close();=0A= this.status =3D 200;=0A= this.statusText =3D 'OK';=0A= this.responseText =3D reqdata;=0A= this.readyState =3D 4;=0A= if (this.onreadystatechange) {=0A= this.onreadystatechange();=0A= }=0A= if (this.onload) {=0A= this.onload();=0A= }=0A= } else {=0A= // error=0A= this.status =3D 404;=0A= this.statusText =3D 'Not Found';=0A= this.responseText =3D '';=0A= this.readyState =3D 4;=0A= if (this.onreadystatechange) {=0A= this.onreadystatechange();=0A= }=0A= if (this.onerror) {=0A= this.onerror();=0A= }=0A= }=0A= };=0A= };=0A= }=0A= // ActiveXObject emulation=0A= if (!window.ActiveXObject && window.XMLHttpRequest) {=0A= window.ActiveXObject =3D function(type) {=0A= switch (type.toLowerCase()) {=0A= case 'microsoft.xmlhttp':=0A= case 'msxml2.xmlhttp':=0A= case 'msxml2.xmlhttp.3.0':=0A= case 'msxml2.xmlhttp.4.0':=0A= case 'msxml2.xmlhttp.5.0':=0A= return new XMLHttpRequest();=0A= }=0A= return null;=0A= };=0A= }=0A= ------=_NextPart_000_0011_01CC1174.BFE81BC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://abstracts.iovs.org/javascript/ajax/utility.js /************************************************************************= *****=0A= * javascript/ajax/utility.js=0A= *=0A= * Utility functions for working with XMLHttpRequest data.=0A= *=0A= * Copyright 2006 Board of Trustees of the Leland Stanford Junior = University.=0A= = *************************************************************************= ***/=0A= =0A= /*=0A= * Copy XML nodes into an HTMLElement. This effectively=0A= * clones XML markup which uses XHTML naming conventions=0A= * into an HTML DOM.=0A= */=0A= function copy_xml_to_html(src, dst) {=0A= if (src.nodeType =3D=3D 1) { /* Node.ELEMENT_NODE */=0A= var e =3D document.createElement(src.nodeName);=0A= for (var i =3D 0; i < src.childNodes.length; i++) {=0A= copy_xml_to_html(src.childNodes[i], e);=0A= }=0A= for (var i =3D 0; i < src.attributes.length; i++) {=0A= var n =3D src.attributes[i].name;=0A= var v =3D unescape_xml_string(src.attributes[i].value); =0A= e.setAttribute(n, v);=0A= if (n =3D=3D "class") {=0A= e.className =3D v;=0A= }=0A= else if (n =3D=3D "style") {=0A= set_css_style(v, e, "");=0A= }=0A= }=0A= dst.appendChild(e);=0A= }=0A= else if (src.nodeType =3D=3D 3) { /* Node.TEXT_NODE */=0A= dst.appendChild(document.createTextNode(src.nodeValue));=0A= }=0A= }=0A= =0A= /* =0A= * It is unclear that this is the right thing to be calling=0A= * from copy_xml_to_html, but it appears that Safari decides=0A= * to convert & to the NCR #, and then encodes that=0A= * NCR to &%26%2338;. So, I'm going to treat the DOM Attr=0A= * value as a plain string, and run our XML string input=0A= * through the decoding routine below.=0A= */=0A= function unescape_xml_string(s) {=0A= return s.replace(/'/g, "'")=0A= .replace(/'/g, "'")=0A= .replace(/"/g, "\"")=0A= .replace(/"/g, "\"")=0A= .replace(/>/g, ">")=0A= .replace(/>/g, ">")=0A= .replace(/</g, "<")=0A= .replace(/</g, "<")=0A= .replace(/&/g, "&")=0A= .replace(/&/g, "&");=0A= }=0A= =0A= /*=0A= * Parse set of CSS rules and apply them to an element.=0A= * This is quite horrifying, but I'm unable to determine=0A= * how else to handle this with IE 6. FireFox and other=0A= * sane browsers let you simply set the style attribute=0A= * or use e.style.setProperty(rule, value, priority),=0A= * IE 6 appears to have neither of these capabilities..=0A= */=0A= function set_css_style(css, e, priority) {=0A= var rules =3D css.split(";");=0A= for (var i =3D 0; i < rules.length; i++) {=0A= var nvpair =3D rules[i].split(":");=0A= if (nvpair.length =3D=3D 2) {=0A= try {=0A= var name =3D nvpair[0]; /* style attribute */=0A= var value =3D nvpair[1]; /* attribute value */=0A= =0A= /*=0A= * For each possible style attribute, set the=0A= * appropriate style property in the element.=0A= */=0A= if (name =3D=3D "background") {=0A= e.style.background =3D value;=0A= }=0A= else if (name =3D=3D "background-attachment") {=0A= e.style.backgroundAttachment =3D value;=0A= }=0A= else if (name =3D=3D "background-color") {=0A= e.style.backgroundColor =3D value;=0A= }=0A= else if (name =3D=3D "background-image") {=0A= e.style.backgroundImage =3D value;=0A= }=0A= else if (name =3D=3D "background-position") {=0A= e.style.backgroundPosition =3D value;=0A= }=0A= else if (name =3D=3D "background-position-x") {=0A= e.style.backgroundPositionX =3D value;=0A= }=0A= else if (name =3D=3D "background-position-y") {=0A= e.style.backgroundPositionY =3D value;=0A= }=0A= else if (name =3D=3D "background-repeat") {=0A= e.style.backgroundRepeat =3D value;=0A= }=0A= else if (name =3D=3D "behavior") {=0A= e.style.behavior =3D value;=0A= }=0A= else if (name =3D=3D "border") {=0A= e.style.border =3D value;=0A= }=0A= else if (name =3D=3D "border-bottom") {=0A= e.style.borderBottom =3D value;=0A= }=0A= else if (name =3D=3D "border-bottom-color") {=0A= e.style.borderBottomColor =3D value;=0A= }=0A= else if (name =3D=3D "border-bottom-style") {=0A= e.style.borderBottomStyle =3D value;=0A= }=0A= else if (name =3D=3D "border-bottom-width") {=0A= e.style.borderBottomWidth =3D value;=0A= }=0A= else if (name =3D=3D "border-collapse") {=0A= e.style.borderCollapse =3D value;=0A= }=0A= else if (name =3D=3D "border-color") {=0A= e.style.borderColor =3D value;=0A= }=0A= else if (name =3D=3D "border-left") {=0A= e.style.borderLeft =3D value;=0A= }=0A= else if (name =3D=3D "border-left-color") {=0A= e.style.borderLeftColor =3D value;=0A= }=0A= else if (name =3D=3D "border-left-style") {=0A= e.style.borderLeftStyle =3D value;=0A= }=0A= else if (name =3D=3D "border-left-width") {=0A= e.style.borderLeftWidth =3D value;=0A= }=0A= else if (name =3D=3D "border-right") {=0A= e.style.borderRight =3D value;=0A= }=0A= else if (name =3D=3D "border-right-color") {=0A= e.style.borderRightColor =3D value;=0A= }=0A= else if (name =3D=3D "border-right-style") {=0A= e.style.borderRightStyle =3D value;=0A= }=0A= else if (name =3D=3D "border-right-width") {=0A= e.style.borderRightWidth =3D value;=0A= }=0A= else if (name =3D=3D "border-style") {=0A= e.style.borderStyle =3D value;=0A= }=0A= else if (name =3D=3D "border-top") {=0A= e.style.borderTop =3D value;=0A= }=0A= else if (name =3D=3D "border-top-color") {=0A= e.style.borderTopColor =3D value;=0A= }=0A= else if (name =3D=3D "border-top-style") {=0A= e.style.borderTopStyle =3D value;=0A= }=0A= else if (name =3D=3D "border-top-width") {=0A= e.style.borderTopWidth =3D value;=0A= }=0A= else if (name =3D=3D "border-width") {=0A= e.style.borderWidth =3D value;=0A= }=0A= else if (name =3D=3D "bottom") {=0A= e.style.bottom =3D value;=0A= }=0A= else if (name =3D=3D "clear") {=0A= e.style.clear =3D value;=0A= }=0A= else if (name =3D=3D "clip") {=0A= e.style.clip =3D value;=0A= }=0A= else if (name =3D=3D "color") {=0A= e.style.color =3D value;=0A= }=0A= else if (name =3D=3D "cssText") {=0A= e.style.Sets =3D value;=0A= }=0A= else if (name =3D=3D "cursor") {=0A= e.style.cursor =3D value;=0A= }=0A= else if (name =3D=3D "direction") {=0A= e.style.direction =3D value;=0A= }=0A= else if (name =3D=3D "display") {=0A= e.style.display =3D value;=0A= }=0A= else if (name =3D=3D "font") {=0A= e.style.font =3D value;=0A= }=0A= else if (name =3D=3D "font-family") {=0A= e.style.fontFamily =3D value;=0A= }=0A= else if (name =3D=3D "font-size") {=0A= e.style.fontSize =3D value;=0A= }=0A= else if (name =3D=3D "font-style") {=0A= e.style.fontStyle =3D value;=0A= }=0A= else if (name =3D=3D "font-variant") {=0A= e.style.fontVariant =3D value;=0A= }=0A= else if (name =3D=3D "font-weight") {=0A= e.style.fontWeight =3D value;=0A= }=0A= else if (name =3D=3D "height") {=0A= e.style.height =3D value;=0A= }=0A= else if (name =3D=3D "ime-mode") {=0A= e.style.imeMode =3D value;=0A= }=0A= else if (name =3D=3D "layout-flow") {=0A= e.style.layoutFlow =3D value;=0A= }=0A= else if (name =3D=3D "layout-grid") {=0A= e.style.layoutGrid =3D value;=0A= }=0A= else if (name =3D=3D "layout-grid-char") {=0A= e.style.layoutGridChar =3D value;=0A= }=0A= else if (name =3D=3D "layout-grid-line") {=0A= e.style.layoutGridLine =3D value;=0A= }=0A= else if (name =3D=3D "layout-grid-mode") {=0A= e.style.layoutGridMode =3D value;=0A= }=0A= else if (name =3D=3D "layout-grid-type") {=0A= e.style.layoutGridType =3D value;=0A= }=0A= else if (name =3D=3D "left") {=0A= e.style.left =3D value;=0A= }=0A= else if (name =3D=3D "letter-spacing") {=0A= e.style.letterSpacing =3D value;=0A= }=0A= else if (name =3D=3D "line-break") {=0A= e.style.lineBreak =3D value;=0A= }=0A= else if (name =3D=3D "line-height") {=0A= e.style.lineHeight =3D value;=0A= }=0A= else if (name =3D=3D "list-style") {=0A= e.style.listStyle =3D value;=0A= }=0A= else if (name =3D=3D "list-style-image") {=0A= e.style.listStyleImage =3D value;=0A= }=0A= else if (name =3D=3D "list-style-position") {=0A= e.style.listStylePosition =3D value;=0A= }=0A= else if (name =3D=3D "list-style-type") {=0A= e.style.listStyleType =3D value;=0A= }=0A= else if (name =3D=3D "margin") {=0A= e.style.margin =3D value;=0A= }=0A= else if (name =3D=3D "margin-bottom") {=0A= e.style.marginBottom =3D value;=0A= }=0A= else if (name =3D=3D "margin-left") {=0A= e.style.marginLeft =3D value;=0A= }=0A= else if (name =3D=3D "margin-right") {=0A= e.style.marginRight =3D value;=0A= }=0A= else if (name =3D=3D "margin-top") {=0A= e.style.marginTop =3D value;=0A= }=0A= else if (name =3D=3D "min-height") {=0A= e.style.minHeight =3D value;=0A= }=0A= else if (name =3D=3D "overflow") {=0A= e.style.overflow =3D value;=0A= }=0A= else if (name =3D=3D "overflow-x") {=0A= e.style.overflowX =3D value;=0A= }=0A= else if (name =3D=3D "overflow-y") {=0A= e.style.overflowY =3D value;=0A= }=0A= else if (name =3D=3D "padding") {=0A= e.style.padding =3D value;=0A= }=0A= else if (name =3D=3D "padding-bottom") {=0A= e.style.paddingBottom =3D value;=0A= }=0A= else if (name =3D=3D "padding-left") {=0A= e.style.paddingLeft =3D value;=0A= }=0A= else if (name =3D=3D "padding-right") {=0A= e.style.paddingRight =3D value;=0A= }=0A= else if (name =3D=3D "padding-top") {=0A= e.style.paddingTop =3D value;=0A= }=0A= else if (name =3D=3D "page-break-after") {=0A= e.style.pageBreakAfter =3D value;=0A= }=0A= else if (name =3D=3D "page-break-before") {=0A= e.style.pageBreakBefore =3D value;=0A= }=0A= else if (name =3D=3D "pixelBottom") {=0A= e.style.pixelBottom =3D value;=0A= }=0A= else if (name =3D=3D "pixelHeight") {=0A= e.style.pixelHeight =3D value;=0A= }=0A= else if (name =3D=3D "pixelLeft") {=0A= e.style.pixelLeft =3D value;=0A= }=0A= else if (name =3D=3D "pixelRight") {=0A= e.style.pixelRight =3D value;=0A= }=0A= else if (name =3D=3D "pixelTop") {=0A= e.style.pixelTop =3D value;=0A= }=0A= else if (name =3D=3D "pixelWidth") {=0A= e.style.pixelWidth =3D value;=0A= }=0A= else if (name =3D=3D "posBottom") {=0A= e.style.posBottom =3D value;=0A= }=0A= else if (name =3D=3D "posHeight") {=0A= e.style.posHeight =3D value;=0A= }=0A= else if (name =3D=3D "position") {=0A= e.style.position =3D value;=0A= }=0A= else if (name =3D=3D "posLeft") {=0A= e.style.posLeft =3D value;=0A= }=0A= else if (name =3D=3D "posRight") {=0A= e.style.posRight =3D value;=0A= }=0A= else if (name =3D=3D "posTop") {=0A= e.style.posTop =3D value;=0A= }=0A= else if (name =3D=3D "posWidth") {=0A= e.style.posWidth =3D value;=0A= }=0A= else if (name =3D=3D "right") {=0A= e.style.right =3D value;=0A= }=0A= else if (name =3D=3D "ruby-align") {=0A= e.style.rubyAlign =3D value;=0A= }=0A= else if (name =3D=3D "ruby-overhang") {=0A= e.style.rubyOverhang =3D value;=0A= }=0A= else if (name =3D=3D "ruby-position") {=0A= e.style.rubyPosition =3D value;=0A= }=0A= else if (name =3D=3D "scrollbar-3dlight-color") {=0A= e.style.scrollbar3dLightColor =3D value;=0A= }=0A= else if (name =3D=3D "scrollbar-arrow-color") {=0A= e.style.scrollbarArrowColor =3D value;=0A= }=0A= else if (name =3D=3D "scrollbar-base-color") {=0A= e.style.scrollbarBaseColor =3D value;=0A= }=0A= else if (name =3D=3D "scrollbar-darkshadow-color") {=0A= e.style.scrollbarDarkShadowColor =3D value;=0A= }=0A= else if (name =3D=3D "scrollbar-face-color") {=0A= e.style.scrollbarFaceColor =3D value;=0A= }=0A= else if (name =3D=3D "scrollbar-highlight-color") {=0A= e.style.scrollbarHighlightColor =3D value;=0A= }=0A= else if (name =3D=3D "scrollbar-shadow-color") {=0A= e.style.scrollbarShadowColor =3D value;=0A= }=0A= else if (name =3D=3D "scrollbar-track-color") {=0A= e.style.scrollbarTrackColor =3D value;=0A= }=0A= else if (name =3D=3D "float") {=0A= e.style.styleFloat =3D value;=0A= }=0A= else if (name =3D=3D "table-layout") {=0A= e.style.tableLayout =3D value;=0A= }=0A= else if (name =3D=3D "text-align") {=0A= e.style.textAlign =3D value;=0A= }=0A= else if (name =3D=3D "text-align-last") {=0A= e.style.textAlignLast =3D value;=0A= }=0A= else if (name =3D=3D "text-autospace") {=0A= e.style.textAutospace =3D value;=0A= }=0A= else if (name =3D=3D "text-decoration") {=0A= e.style.textDecoration =3D value;=0A= }=0A= else if (name =3D=3D "textDecorationBlink") {=0A= e.style.textDecorationBlink =3D value;=0A= }=0A= else if (name =3D=3D "textDecorationLineThrough") {=0A= e.style.textDecorationLineThrough =3D value;=0A= }=0A= else if (name =3D=3D "textDecorationNone") {=0A= e.style.textDecorationNone =3D value;=0A= }=0A= else if (name =3D=3D "textDecorationOverline") {=0A= e.style.textDecorationOverline =3D value;=0A= }=0A= else if (name =3D=3D "textDecorationUnderline") {=0A= e.style.textDecorationUnderline =3D value;=0A= }=0A= else if (name =3D=3D "text-indent") {=0A= e.style.textIndent =3D value;=0A= }=0A= else if (name =3D=3D "text-justify") {=0A= e.style.textJustify =3D value;=0A= }=0A= else if (name =3D=3D "text-kashida-space") {=0A= e.style.textKashidaSpace =3D value;=0A= }=0A= else if (name =3D=3D "text-overflow") {=0A= e.style.textOverflow =3D value;=0A= }=0A= else if (name =3D=3D "text-transform") {=0A= e.style.textTransform =3D value;=0A= }=0A= else if (name =3D=3D "text-underline-position") {=0A= e.style.textUnderlinePosition =3D value;=0A= }=0A= else if (name =3D=3D "top") {=0A= e.style.top =3D value;=0A= }=0A= else if (name =3D=3D "unicode-bidi") {=0A= e.style.unicodeBidi =3D value;=0A= }=0A= else if (name =3D=3D "vertical-align") {=0A= e.style.verticalAlign =3D value;=0A= }=0A= else if (name =3D=3D "visibility") {=0A= e.style.visibility =3D value;=0A= }=0A= else if (name =3D=3D "white-space") {=0A= e.style.whiteSpace =3D value;=0A= }=0A= else if (name =3D=3D "width") {=0A= e.style.width =3D value;=0A= }=0A= else if (name =3D=3D "word-break") {=0A= e.style.wordBreak =3D value;=0A= }=0A= else if (name =3D=3D "word-spacing") {=0A= e.style.wordSpacing =3D value;=0A= }=0A= else if (name =3D=3D "word-wrap") {=0A= e.style.wordWrap =3D value;=0A= }=0A= else if (name =3D=3D "writing-mode") {=0A= e.style.writingMode =3D value;=0A= }=0A= else if (name =3D=3D "z-index") {=0A= e.style.zIndex =3D value;=0A= }=0A= else if (name =3D=3D "zoom") {=0A= e.style.zoom =3D value;=0A= }=0A= }=0A= catch (e) {=0A= /* ignore error on attempt to set e.style.[property] */=0A= }=0A= }=0A= }=0A= }=0A= ------=_NextPart_000_0011_01CC1174.BFE81BC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://abstracts.iovs.org/javascript/entrez/callback.js /************************************************************************= *****=0A= * javascript/entrez/callback.js=0A= *=0A= * Entrez Linking callback to populate content box.=0A= *=0A= * Copyright 2006 Board of Trustees of the Leland Stanford Junior = University.=0A= = *************************************************************************= ***/=0A= =0A= /*=0A= * Execute callback to fill content box with Entrez Linking information.=0A= */=0A= function entrez_callback(pmid, callback_url) {=0A= /*=0A= * MSIE 5.5 and below have issues with the JavaScript=0A= * used for Entrez Linking. For now we have to disable=0A= * the callback until we can track down a proper fix=0A= * (or everybody sanely upgrades to version 6 or 7!).=0A= */=0A= if (navigator) {=0A= var appname =3D navigator.appName;=0A= if (appname =3D=3D "Microsoft Internet Explorer") {=0A= var userAgent =3D navigator["userAgent"];=0A= var s =3D "MSIE ";=0A= var n =3D -1; =0A= if ((n =3D userAgent.indexOf(s)) !=3D -1) {=0A= var v =3D parseFloat(userAgent.substring(n+s.length));=0A= if (v < 6) {=0A= return;=0A= }=0A= }=0A= }=0A= }=0A= =0A= /*=0A= * Acquire table row element to update, initiate callback=0A= * to update table with Entrez Links.=0A= */=0A= var tr =3D document.getElementById('entrez_callback_'+pmid);=0A= if (!tr) {=0A= return;=0A= }=0A= var req =3D new XMLHttpRequest();=0A= if (!req) {=0A= return;=0A= }=0A= req.onreadystatechange =3D function() {=0A= if (req.readyState =3D=3D 4 && (req.status =3D=3D 200 || req.status = =3D=3D 304)) {=0A= var src =3D req.responseXML.documentElement;=0A= var dst =3D document.createDocumentFragment();=0A= for (var i =3D 0; i < src.childNodes.length; i++) {=0A= copy_xml_to_html(src.childNodes[i], dst);=0A= }=0A= var tbl =3D tr.parentNode;=0A= tbl.replaceChild(dst, tr);=0A= }=0A= }=0A= req.open('GET', callback_url, true);=0A= req.send(null);=0A= }=0A= ------=_NextPart_000_0011_01CC1174.BFE81BC0--
HOME HELP FEEDBACK SUBSCRIPTIONS ARCHIVE SEARCH