ÿþ<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>painSupport Web Site</title> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"/> <meta name="description" content="painSupport - self-help strategies and group support for pain relief and pain control"/> <meta name="keywords" content="pain control,pain relief,backpain,back,pain,chronic pain,neck pain,hip,knee,hip,wrist,muscle,shoulder,foot,leg,ankle,nerve,lower back,spondilitis,multiple sclerosis,muscular dystrophy,MS,MD,r.s.i.,trapped nerve,backache,low back pain,joint,prolapsed disc,slipped disc,rheumatoid arthritis,osteoarthritis,arthritis,back problems,sciatica,disc,chronic pain,injury,damage,strain,injured,damaged,strained,pain management,health,healing,healthy,cure,treatment,support,group,support group,help,chat,friends,disability,disabled,information,reduce,control,self-help,meditation,relaxation,visualisation,positive thinking,positive,affirmations,flare-up,therapy,therapies,self help,selfhelp,exercise"/> </head> <body> <STYLE> zBODY {position: relative; top: 0.5cm; left: 2%; width: 90%;} BODY {background-color: #ffffff; color: #000080; text-align: justify; font-size: 85%; font-family: Tahoma, Arial, Helvetica, sans-serif;} H1 {color: #000080; font-family: Arial, Helvetica, sans-serif; text-align: left;} H2 {color: #000080; font-family: Arial, Helvetica, sans-serif; text-align: left;} H3 {color: #000080; font-family: Arial, Helvetica, sans-serif; text-align: left;} TABLE.books {border-width: 1px; text-align: "left"; border-style: inset;} TABLE.score {border-width: 1px; text-align: "left"; border-style: inset;} TABLE {font-size: 100%;} TR {color: #000000; text-align: justify; font-family: Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif;} TD {color: #000000; text-align: justify; font-family: Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif;} TD.main {text-align: justify; font-family: Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif;} TABLE.sitemap {color: #ffffff; font-size: 9px; font-family: Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif;} TR.sitemap {color: #ffffff; font-size: 10px; font-family: Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif;} TD.sitemap {color: #ffffff; font-size: 10px; font-family: Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif;} TD.page {color: #000000; text-align: left; font-size: 9px; font-family: Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif;} INPUT.form {font-family: Arial, Helvetica, sans-serif;} TEXTAREA.form {font-family: Arial, Helvetica, sans-serif;} P {position: relative; left: 2%; width: 90%;} P {color: #000000; text-align: justify; font-family: Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif;} P.hilite {color: #000080; font-weight: bold; text-align: center; font-family: Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif;} P.error {color: red; font-style: italic;} A {color: #006699; font-weight: bold;text-decoration: none; font-family: Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif;} A {text-decoration: none;} A:hover {color: #cc0000}; LI {list-style-type: disc; list-style-image: url(../images/dot.gif); margin-left: 20px;} LI {list-style-type: disc;}P.newsdate { color: #000000; font-weight: normal; text-align: center; font-family: Verdana, "Trebuchet MS", Arial, Helvetica, sans-serif; } /* */ /* Styles for the tree. */ /* */ SPAN.TreeviewSpanArea A { font-size: 10pt; font-family: verdana,helvetica; text-align: left; text-decoration: none; color: black;} SPAN.TreeviewSpanArea A:hover { color: '#820082';} </STYLE> <SCRIPT type="text/javascript" language="javascript"> /* * $Log: ua.js,v $ * Revision 1.9 2002/07/22 14:06:21 bc6ix * fix license path, change version reporting to use 2 digits for each level * * Revision 1.8 2002/07/07 08:23:07 bc6ix * fix line endings * * Revision 1.7 2002/05/14 16:52:52 bc6ix * use CVS Log for revision history * * */ /* ***** BEGIN LICENSE BLOCK ***** * Licensed under Version: MPL 1.1/GPL 2.0/LGPL 2.1 * Full Terms at http://bclary.com/lib/js/license/mpl-tri-license.txt * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Netscape code. * * The Initial Developer of the Original Code is * Netscape Corporation. * Portions created by the Initial Developer are Copyright (C) 2001 * the Initial Developer. All Rights Reserved. * * Contributor(s): Bob Clary <bclary@netscape.com> * * ***** END LICENSE BLOCK ***** */ function xbDetectBrowser() { var oldOnError = window.onerror; var element = null; window.onerror = null; // work around bug in xpcdom Mozilla 0.9.1 window.saveNavigator = window.navigator; navigator.OS = ''; navigator.version = parseFloat(navigator.appVersion); navigator.org = ''; navigator.family = ''; var platform; if (typeof(window.navigator.platform) != 'undefined') { platform = window.navigator.platform.toLowerCase(); if (platform.indexOf('win') != -1) navigator.OS = 'win'; else if (platform.indexOf('mac') != -1) navigator.OS = 'mac'; else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1) navigator.OS = 'nix'; } var i = 0; var ua = window.navigator.userAgent.toLowerCase(); if (ua.indexOf('safari') != -1) { i = ua.indexOf('safari'); navigator.family = 'safari'; navigator.org = 'safari'; navigator.version = parseFloat('0' + ua.substr(i+7), 10); } else if (ua.indexOf('opera') != -1) { i = ua.indexOf('opera'); navigator.family = 'opera'; navigator.org = 'opera'; navigator.version = parseFloat('0' + ua.substr(i+6), 10); } else if ((i = ua.indexOf('msie')) != -1) { navigator.org = 'microsoft'; navigator.version = parseFloat('0' + ua.substr(i+5), 10); if (navigator.version < 4) navigator.family = 'ie3'; else navigator.family = 'ie4' } else if (ua.indexOf('gecko') != -1) { navigator.family = 'gecko'; var rvStart = ua.indexOf('rv:'); var rvEnd = ua.indexOf(')', rvStart); var rv = ua.substring(rvStart+3, rvEnd); var rvParts = rv.split('.'); var rvValue = 0; var exp = 1; for (var i = 0; i < rvParts.length; i++) { var val = parseInt(rvParts[i]); rvValue += val / exp; exp *= 100; } navigator.version = rvValue; if (ua.indexOf('netscape') != -1) navigator.org = 'netscape'; else if (ua.indexOf('compuserve') != -1) navigator.org = 'compuserve'; else navigator.org = 'mozilla'; } else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1)) { var is_major = parseFloat(navigator.appVersion); if (is_major < 4) navigator.version = is_major; else { i = ua.lastIndexOf('/') navigator.version = parseFloat('0' + ua.substr(i+1), 10); } navigator.org = 'netscape'; navigator.family = 'nn' + parseInt(navigator.appVersion); } else if ((i = ua.indexOf('aol')) != -1 ) { // aol navigator.family = 'aol'; navigator.org = 'aol'; navigator.version = parseFloat('0' + ua.substr(i+4), 10); } else if ((i = ua.indexOf('hotjava')) != -1 ) { // hotjava navigator.family = 'hotjava'; navigator.org = 'sun'; navigator.version = parseFloat(navigator.appVersion); } window.onerror = oldOnError; } xbDetectBrowser(); </SCRIPT> <!-- Infrastructure code for the TreeView. DO NOT REMOVE. --> <SCRIPT type="text/javascript" language="javascript"> //**************************************************************** // You must keep this copyright notice: // // This script is Copyright (c) 2006 by Conor O'Mahony. // For inquiries, please email GubuSoft@GubuSoft.com. // GubuSoft is owned and operated by Conor O'Mahony. // Original author of TreeView script is Marcelino Martins. // // Do not download the script's files from here. For a free // download and full instructions go to the following site: // http://www.TreeView.net //**************************************************************** // Log of changes: // 26 Sep 06 - Updated preLoadIcons function; // Fix small bugs or typos (in the Folder, InitializeFolder, // and blockStartHTML functions) // 14 Feb 06 - Re-brand as GubuSoft // 08 Jun 04 - Very small change to one error message // 21 Mar 04 - Support for folder.addChildren allows for much bigger trees // 12 May 03 - Support for Safari Beta 3 // 01 Mar 03 - VERSION 4.3 - Support for checkboxes // 21 Feb 03 - Added support for Opera 7 // 22 Sep 02 - Added maySelect member for node-by-node control // of selection and highlight // 21 Sep 02 - Cookie values are now separated by cookieCutter // 12 Sep 02 - VERSION 4.2 - Can highlight Selected Nodes and // can preserve state through external (DB) IDs // 29 Aug 02 - Fine tune 'supportDeferral' for IE4 and IE Mac // 25 Aug 02 - Fixes: STARTALLOPEN, and multi-page frameless // 09 Aug 02 - Fix repeated folder on Mozilla 1.x // 31 Jul 02 - VERSION 4.1 - Dramatic speed increase for trees // with hundreds or thousands of nodes; changes to the control // flags of the gLnk function // 18 Jul 02 - Changes in pre-load images function // 13 Jun 02 - Add ICONPATH var to allow for gif subdir // 20 Apr 02 - Improve support for frame-less layout // 07 Apr 02 - Minor changes to support server-side dynamic feeding // (example: FavoritesManagerASP) // Definition of class Folder // ***************************************************************** function Folder(folderDescription, hreference) //constructor { //constant data this.desc = folderDescription; this.hreference = hreference; this.id = -1; this.navObj = 0; this.iconImg = 0; this.nodeImg = 0; this.iconSrc = ICONPATH + "ftv2folderopen.gif"; this.iconSrcClosed = ICONPATH + "ftv2folderclosed.gif"; this.children = new Array; this.nChildren = 0; this.level = 0; this.leftSideCoded = ""; this.isLastNode=false; this.parentObj = null; this.maySelect=true; this.prependHTML = "" //dynamic data this.isOpen = false this.isLastOpenedFolder = false this.isRendered = 0 //methods this.initialize = initializeFolder this.setState = setStateFolder this.addChild = addChild this.addChildren = addChildren this.createIndex = createEntryIndex this.escondeBlock = escondeBlock this.esconde = escondeFolder this.folderMstr = folderMstr this.renderOb = drawFolder this.totalHeight = totalHeight this.subEntries = folderSubEntries this.linkHTML = linkFolderHTML this.blockStartHTML = blockStartHTML this.blockEndHTML = blockEndHTML this.nodeImageSrc = nodeImageSrc this.iconImageSrc = iconImageSrc this.getID = getID this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders } function initializeFolder(level, lastNode, leftSide) { var i=0 nc = this.nChildren this.createIndex() this.level = level this.leftSideCoded = leftSide if (browserVersion == 0 || STARTALLOPEN==1) this.isOpen=true; if (level>0) if (lastNode) //the last child in the children array leftSide = leftSide + "0" else leftSide = leftSide + "1" this.isLastNode = lastNode if (nc > 0) { level = level + 1 for (i=0 ; i < this.nChildren; i++) { if (typeof this.children[i].initialize == 'undefined') //document node was specified using the addChildren function { if (typeof this.children[i][0] == 'undefined' || typeof this.children[i] == 'string') { this.children[i] = ["item incorrectly defined", ""]; } //Basic initialization of the Item object //These members or methods are needed even before the Item is rendered this.children[i].initialize=initializeItem; this.children[i].createIndex=createEntryIndex; if (typeof this.children[i].maySelect == 'undefined') this.children[i].maySelect=true this.children[i].forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders } if (i == this.nChildren-1) this.children[i].initialize(level, 1, leftSide) else this.children[i].initialize(level, 0, leftSide) } } } function drawFolder(insertAtObj) { var nodeName = "" var auxEv = "" var docW = "" var i=0 finalizeCreationOfChildDocs(this) var leftSide = leftSideHTML(this.leftSideCoded) if (browserVersion > 0) auxEv = "<a href='javascript:clickOnNode(\""+this.getID()+"\")'>" else auxEv = "<a>" nodeName = this.nodeImageSrc() if (this.level>0) if (this.isLastNode) //the last child in the children array leftSide = leftSide + "<td valign=top>" + auxEv + "<img name='nodeIcon" + this.id + "' id='nodeIcon" + this.id + "' src='" + nodeName + "' width=16 height=22 border=0></a></td>" else leftSide = leftSide + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif>" + auxEv + "<img name='nodeIcon" + this.id + "' id='nodeIcon" + this.id + "' src='" + nodeName + "' width=16 height=22 border=0></a></td>" this.isRendered = 1 if (browserVersion == 2) { if (!doc.yPos) doc.yPos=20 } docW = this.blockStartHTML("folder"); docW = docW + "<tr>" + leftSide + "<td valign=top>"; if (USEICONS) { docW = docW + this.linkHTML(false) docW = docW + "<img id='folderIcon" + this.id + "' name='folderIcon" + this.id + "' src='" + this.iconImageSrc() + "' border=0></a>" } else { if (this.prependHTML == "") docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=2>" } if (WRAPTEXT) docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>" else docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>" if (USETEXTLINKS) { docW = docW + this.linkHTML(true) docW = docW + this.desc + "</a>" } else docW = docW + this.desc docW = docW + "</td>" docW = docW + this.blockEndHTML() if (insertAtObj == null) { if (supportsDeferral) { doc.write("<div id=domRoot></div>") //transition between regular flow HTML, and node-insert DOM DHTML insertAtObj = getElById("domRoot") insertAtObj.insertAdjacentHTML("beforeEnd", docW) } else doc.write(docW) } else { insertAtObj.insertAdjacentHTML("afterEnd", docW) } if (browserVersion == 2) { this.navObj = doc.layers["folder"+this.id] if (USEICONS) this.iconImg = this.navObj.document.images["folderIcon"+this.id] this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] doc.yPos=doc.yPos+this.navObj.clip.height } else if (browserVersion != 0) { this.navObj = getElById("folder"+this.id) if (USEICONS) this.iconImg = getElById("folderIcon"+this.id) this.nodeImg = getElById("nodeIcon"+this.id) } } function setStateFolder(isOpen) { var subEntries var totalHeight var fIt = 0 var i=0 var currentOpen if (isOpen == this.isOpen) return if (browserVersion == 2) { totalHeight = 0 for (i=0; i < this.nChildren; i++) totalHeight = totalHeight + this.children[i].navObj.clip.height subEntries = this.subEntries() if (this.isOpen) totalHeight = 0 - totalHeight for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) indexOfEntries[fIt].navObj.moveBy(0, totalHeight) } this.isOpen = isOpen; if (this.getID()!=foldersTree.getID() && PRESERVESTATE && !this.isOpen) //closing { currentOpen = GetCookie("clickedFolder") if (currentOpen != null) { currentOpen = currentOpen.replace(this.getID()+cookieCutter, "") SetCookie("clickedFolder", currentOpen) } } if (!this.isOpen && this.isLastOpenedfolder) { lastOpenedFolder = null; this.isLastOpenedfolder = false; } propagateChangesInState(this) } function propagateChangesInState(folder) { var i=0 //Change icon if (folder.nChildren > 0 && folder.level>0) //otherwise the one given at render stays folder.nodeImg.src = folder.nodeImageSrc() //Change node if (USEICONS) folder.iconImg.src = folder.iconImageSrc() //Propagate changes for (i=folder.nChildren-1; i>=0; i--) { if (folder.isOpen) folder.children[i].folderMstr(folder.navObj) else folder.children[i].esconde() } } function escondeFolder() { this.escondeBlock() this.setState(0) } function linkFolderHTML(isTextLink) { var docW = ""; if (this.hreference) { if (USEFRAMES) docW = docW + "<a href='" + this.hreference + "' TARGET=\"basefrm\" " else docW = docW + "<a href='" + this.hreference + "' TARGET=_top " if (isTextLink) { docW += "id=\"itemTextLink"+this.id+"\" "; } if (browserVersion > 0) docW = docW + "onClick='javascript:clickOnFolder(\""+this.getID()+"\")'" docW = docW + ">" } else docW = docW + "<a>" return docW; } function addChild(childNode) { this.children[this.nChildren] = childNode childNode.parentObj = this this.nChildren++ return childNode } //The list can contain either a Folder object or a sub list with the arguments for Item function addChildren(listOfChildren) { this.children = listOfChildren this.nChildren = listOfChildren.length for (i=0; i<this.nChildren; i++) this.children[i].parentObj = this } function folderSubEntries() { var i = 0 var se = this.nChildren for (i=0; i < this.nChildren; i++){ if (this.children[i].children) //is a folder se = se + this.children[i].subEntries() } return se } function nodeImageSrc() { var srcStr = ""; if (this.isLastNode) //the last child in the children array { if (this.nChildren == 0) srcStr = ICONPATH + "ftv2lastnode.gif" else if (this.isOpen) srcStr = ICONPATH + "ftv2mlastnode.gif" else srcStr = ICONPATH + "ftv2plastnode.gif" } else { if (this.nChildren == 0) srcStr = ICONPATH + "ftv2node.gif" else if (this.isOpen) srcStr = ICONPATH + "ftv2mnode.gif" else srcStr = ICONPATH + "ftv2pnode.gif" } return srcStr; } function iconImageSrc() { if (this.isOpen) return(this.iconSrc) else return(this.iconSrcClosed) } // Definition of class Item (a document or link inside a Folder) // ************************************************************* function Item(itemDescription) // Constructor { // constant data this.desc = itemDescription this.level = 0 this.isLastNode = false this.leftSideCoded = "" this.parentObj = null this.maySelect=true this.initialize = initializeItem; this.createIndex = createEntryIndex; this.forceOpeningOfAncestorFolders = forceOpeningOfAncestorFolders; finalizeCreationOfItem(this) } //Assignments that can be delayed when the item is created with folder.addChildren //The assignments that cannot be delayed are done in addChildren and in initializeFolder //Additionaly, some assignments are also done in finalizeCreationOfChildDocs itself function finalizeCreationOfItem(itemArray) { itemArray.navObj = 0 //initialized in render() itemArray.iconImg = 0 //initialized in render() itemArray.iconSrc = ICONPATH + "ftv2doc.gif" itemArray.isRendered = 0 itemArray.nChildren = 0 itemArray.prependHTML = "" // methods itemArray.escondeBlock = escondeBlock itemArray.esconde = escondeBlock itemArray.folderMstr = folderMstr itemArray.renderOb = drawItem itemArray.totalHeight = totalHeight itemArray.blockStartHTML = blockStartHTML itemArray.blockEndHTML = blockEndHTML itemArray.getID = getID } function initializeItem(level, lastNode, leftSide) { this.createIndex() this.level = level this.leftSideCoded = leftSide this.isLastNode = lastNode } function drawItem(insertAtObj) { var leftSide = leftSideHTML(this.leftSideCoded) var docW = "" var fullLink = "href=\""+this.link+"\" target=\""+this.target+"\" onClick=\"clickOnLink('"+this.getID()+"\', '"+this.link+"','"+this.target+"');return false;\""; this.isRendered = 1 if (this.level>0) if (this.isLastNode) //the last 'brother' in the children array { leftSide = leftSide + "<td valign=top><img src='" + ICONPATH + "ftv2lastnode.gif' width=16 height=22></td>" } else { leftSide = leftSide + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif><img src='" + ICONPATH + "ftv2node.gif' width=16 height=22></td>" } docW = docW + this.blockStartHTML("item") docW = docW + "<tr>" + leftSide + "<td valign=top>" if (USEICONS) docW = docW + "<a " + fullLink + " id=\"itemIconLink"+this.id+"\">" + "<img id='itemIcon"+this.id+"' " + "src='"+this.iconSrc+"' border=0>" + "</a>" else if (this.prependHTML == "") docW = docW + "<img src=" + ICONPATH + "ftv2blank.gif height=2 width=3>" if (WRAPTEXT) docW = docW + "</td>"+this.prependHTML+"<td valign=middle width=100%>" else docW = docW + "</td>"+this.prependHTML+"<td valign=middle nowrap width=100%>" if (USETEXTLINKS) docW = docW + "<a " + fullLink + " id=\"itemTextLink"+this.id+"\">" + this.desc + "</a>" else docW = docW + this.desc docW = docW + "</td>" docW = docW + this.blockEndHTML() if (insertAtObj == null) { doc.write(docW) } else { insertAtObj.insertAdjacentHTML("afterEnd", docW) } if (browserVersion == 2) { this.navObj = doc.layers["item"+this.id] if (USEICONS) this.iconImg = this.navObj.document.images["itemIcon"+this.id] doc.yPos=doc.yPos+this.navObj.clip.height } else if (browserVersion != 0) { this.navObj = getElById("item"+this.id) if (USEICONS) this.iconImg = getElById("itemIcon"+this.id) } } // Methods common to both objects (pseudo-inheritance) // ******************************************************** function forceOpeningOfAncestorFolders() { if (this.parentObj == null || this.parentObj.isOpen) return else { this.parentObj.forceOpeningOfAncestorFolders() clickOnNodeObj(this.parentObj) } } function escondeBlock() { if (browserVersion == 1 || browserVersion == 3) { if (this.navObj.style.display == "none") return this.navObj.style.display = "none" } else { if (this.navObj.visibility == "hidden") return this.navObj.visibility = "hidden" } } function folderMstr(domObj) { if (browserVersion == 1 || browserVersion == 3) { if (t==-1) return var str = new String(doc.links[t]) if (str.slice(14,16) != "em") return } if (!this.isRendered) this.renderOb(domObj) else if (browserVersion == 1 || browserVersion == 3) this.navObj.style.display = "block" else this.navObj.visibility = "show" } function blockStartHTML(idprefix) { var idParam = "id='" + idprefix + this.id + "'" var docW = "" if (browserVersion == 2) docW = "<layer "+ idParam + " top=" + doc.yPos + " visibility=show>" else if (browserVersion != 0) docW = "<div " + idParam + " style='display:block;'>" docW = docW + "<table border=0 cellspacing=0 cellpadding=0 width=100% >" return docW } function blockEndHTML() { var docW = "" docW = "</table>" if (browserVersion == 2) docW = docW + "</layer>" else if (browserVersion != 0) docW = docW + "</div>" return docW } function createEntryIndex() { this.id = nEntries indexOfEntries[nEntries] = this nEntries++ } // total height of subEntries open function totalHeight() //used with browserVersion == 2 { var h = this.navObj.clip.height var i = 0 if (this.isOpen) //is a folder and _is_ open for (i=0 ; i < this.nChildren; i++) h = h + this.children[i].totalHeight() return h } function leftSideHTML(leftSideCoded) { var i; var retStr = ""; for (i=0; i<leftSideCoded.length; i++) { if (leftSideCoded.charAt(i) == "1") { retStr = retStr + "<td valign=top background=" + ICONPATH + "ftv2vertline.gif><img src='" + ICONPATH + "ftv2vertline.gif' width=16 height=22></td>" } if (leftSideCoded.charAt(i) == "0") { retStr = retStr + "<td valign=top><img src='" + ICONPATH + "ftv2blank.gif' width=16 height=22></td>" } } return retStr } function getID() { //define a .xID in all nodes (folders and items) if you want to PERVESTATE that //work when the tree changes. The value eXternal value must be unique for each //node and must node change when other nodes are added or removed //The value may be numeric or string, but cannot have the same char used in cookieCutter if (typeof this.xID != "undefined") return this.xID else return this.id } // Events // ********************************************************* function clickOnFolder(folderId) { var clicked = findObj(folderId) if (typeof clicked=='undefined' || clicked==null) { alert("Treeview was not able to find the node object corresponding to ID=" + folderId + ". If the configuration file sets a.xID values, it must set them for ALL nodes, including the foldersTree root.") return; } if (!clicked.isOpen) { clickOnNodeObj(clicked) } if (lastOpenedFolder != null && lastOpenedFolder != folderId) clickOnNode(lastOpenedFolder); //sets lastOpenedFolder to null if (clicked.nChildren==0) { lastOpenedFolder = folderId; clicked.isLastOpenedfolder = true } if (isLinked(clicked.hreference)) { highlightObjLink(clicked); } } function clickOnNode(folderId) { fOb = findObj(folderId); if (typeof fOb=='undefined' || fOb==null) { alert("Treeview was not able to find the node object corresponding to ID=" + folderId + ". If the configuration file sets a.xID, it must set foldersTree.xID as well.") return; } clickOnNodeObj(fOb); } function clickOnNodeObj(folderObj) { var state = 0 var currentOpen state = folderObj.isOpen folderObj.setState(!state) //open<->close if (folderObj.id!=foldersTree.id && PRESERVESTATE) { currentOpen = GetCookie("clickedFolder") if (currentOpen == null) currentOpen = "" if (!folderObj.isOpen) //closing { currentOpen = currentOpen.replace(folderObj.getID()+cookieCutter, "") SetCookie("clickedFolder", currentOpen) } else SetCookie("clickedFolder", currentOpen+folderObj.getID()+cookieCutter) } } function clickOnLink(clickedId, target, windowName) { highlightObjLink(findObj(clickedId)); if (isLinked(target)) { window.open(target,windowName); } } function ld () { return document.links.length-1 } // Auxiliary Functions // ******************* function finalizeCreationOfChildDocs(folderObj) { for(i=0; i < folderObj.nChildren; i++) { child = folderObj.children[i] if (typeof child[0] != 'undefined') { // Amazingly, arrays can have members, so a = ["a", "b"]; a.desc="asdas" works // If a doc was inserted as an array, we can transform it into an itemObj by adding // the missing members and functions child.desc = child[0] setItemLink(child, GLOBALTARGET, child[1]) finalizeCreationOfItem(child) } } } function findObj(id) { var i=0; var nodeObj; if (typeof foldersTree.xID != "undefined") { nodeObj = indexOfEntries[i]; for(i=0;i<nEntries&&indexOfEntries[i].xID!=id;i++) //may need optimization ; id = i } if (id >= nEntries) return null; //example: node removed in DB else return indexOfEntries[id]; } function isLinked(hrefText) { var result = true; result = (result && hrefText !=null); result = (result && hrefText != ''); result = (result && hrefText.indexOf('undefined') < 0); result = (result && hrefText.indexOf('parent.op') < 0); return result; } // Do highlighting by changing background and foreg. colors of folder or doc text function highlightObjLink(nodeObj) { if (!HIGHLIGHT || nodeObj==null || nodeObj.maySelect==false) {//node deleted in DB return; } if (browserVersion == 1 || browserVersion == 3) { var clickedDOMObj = getElById('itemTextLink'+nodeObj.id); if (clickedDOMObj != null) { if (lastClicked != null) { var prevClickedDOMObj = getElById('itemTextLink'+lastClicked.id); prevClickedDOMObj.style.color=lastClickedColor; prevClickedDOMObj.style.backgroundColor=lastClickedBgColor; } lastClickedColor = clickedDOMObj.style.color; lastClickedBgColor = clickedDOMObj.style.backgroundColor; clickedDOMObj.style.color=HIGHLIGHT_COLOR; clickedDOMObj.style.backgroundColor=HIGHLIGHT_BG; } } lastClicked = nodeObj; if (PRESERVESTATE) SetCookie('highlightedTreeviewLink', nodeObj.getID()); } function insFld(parentFolder, childFolder) { return parentFolder.addChild(childFolder) } function insDoc(parentFolder, document) { return parentFolder.addChild(document) } function gFld(description, hreference) { folder = new Folder(description, hreference); return folder; } function gLnk(optionFlags, description, linkData) { if (optionFlags>=0) { //is numeric (old style) or empty (error) //Target changed from numeric to string in Aug 2002, and support for numeric style was entirely dropped in Mar 2004 alert("Change your Treeview configuration file to use the new style of target argument in gLnk"); return; } newItem = new Item(description); setItemLink(newItem, optionFlags, linkData); return newItem; } function setItemLink(item, optionFlags, linkData) { var targetFlag = ""; var target = ""; var protocolFlag = ""; var protocol = ""; targetFlag = optionFlags.charAt(0) if (targetFlag=="B") target = "_blank" if (targetFlag=="P") target = "_parent" if (targetFlag=="R") target = "basefrm" if (targetFlag=="S") target = "_self" if (targetFlag=="T") target = "_top" if (optionFlags.length > 1) { protocolFlag = optionFlags.charAt(1) if (protocolFlag=="h") protocol = "http://" if (protocolFlag=="s") protocol = "https://" if (protocolFlag=="f") protocol = "ftp://" if (protocolFlag=="m") protocol = "mailto:" } item.link = protocol+linkData; item.target = target } //Function created for backwards compatibility purposes //Function contents voided in March 2004 function oldGLnk(target, description, linkData) { } function preLoadIcons() { arImageSrc = new Array ( "ftv2vertline.gif", "ftv2mlastnode.gif", "ftv2mnode.gif", "ftv2plastnode.gif", "ftv2pnode.gif", "ftv2blank.gif", "ftv2lastnode.gif", "ftv2node.gif", "ftv2folderclosed.gif", "ftv2folderopen.gif", "ftv2doc.gif" ) arImageList = new Array (); for (counter in arImageSrc) { arImageList[counter] = new Image(); arImageList[counter].src = ICONPATH + arImageSrc[counter]; } } //Open some folders for initial layout, if necessary function setInitialLayout() { if (browserVersion > 0 && !STARTALLOPEN) clickOnNodeObj(foldersTree); if (!STARTALLOPEN && (browserVersion > 0) && PRESERVESTATE) PersistentFolderOpening(); } //Used with NS4 and STARTALLOPEN function renderAllTree(nodeObj, parent) { var i=0; nodeObj.renderOb(parent) if (supportsDeferral) for (i=nodeObj.nChildren-1; i>=0; i--) renderAllTree(nodeObj.children[i], nodeObj.navObj) else for (i=0 ; i < nodeObj.nChildren; i++) renderAllTree(nodeObj.children[i], null) } function hideWholeTree(nodeObj, hideThisOne, nodeObjMove) { var i=0; var heightContained=0; var childrenMove=nodeObjMove; if (hideThisOne) nodeObj.escondeBlock() if (browserVersion == 2) nodeObj.navObj.moveBy(0, 0-nodeObjMove) for (i=0 ; i < nodeObj.nChildren; i++) { heightContainedInChild = hideWholeTree(nodeObj.children[i], true, childrenMove) if (browserVersion == 2) { heightContained = heightContained + heightContainedInChild + nodeObj.children[i].navObj.clip.height childrenMove = childrenMove + heightContainedInChild } } return heightContained; } // Simulating inserAdjacentHTML on NS6 // Code by thor@jscript.dk // ****************************************** if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){ HTMLElement.prototype.insertAdjacentElement = function (where,parsedNode) { switch (where){ case 'beforeBegin': this.parentNode.insertBefore(parsedNode,this) break; case 'afterBegin': this.insertBefore(parsedNode,this.firstChild); break; case 'beforeEnd': this.appendChild(parsedNode); break; case 'afterEnd': if (this.nextSibling) this.parentNode.insertBefore(parsedNode,this.nextSibling); else this.parentNode.appendChild(parsedNode); break; } } HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr) { var r = this.ownerDocument.createRange(); r.setStartBefore(this); var parsedHTML = r.createContextualFragment(htmlStr); this.insertAdjacentElement(where,parsedHTML) } } function getElById(idVal) { if (document.getElementById != null) return document.getElementById(idVal) if (document.all != null) return document.all[idVal] alert("Problem getting element by id") return null } // Functions for cookies // Note: THESE FUNCTIONS ARE OPTIONAL. No cookies are used unless // the PRESERVESTATE variable is set to 1 (default 0) // The separator currently in use is ^ (chr 94) // *********************************************************** function PersistentFolderOpening() { var stateInCookie; var fldStr="" var fldArr var fldPos=0 var id var nodeObj stateInCookie = GetCookie("clickedFolder"); SetCookie('clickedFolder', "") //at the end of function it will be back, minus null cases if(stateInCookie!=null) { fldArr = stateInCookie.split(cookieCutter) for (fldPos=0; fldPos<fldArr.length; fldPos++) { fldStr=fldArr[fldPos] if (fldStr != "") { nodeObj = findObj(fldStr) if (nodeObj!=null) //may have been deleted if (nodeObj.setState) { nodeObj.forceOpeningOfAncestorFolders() clickOnNodeObj(nodeObj); } else alert("Internal id is not pointing to a folder anymore.\nConsider giving an ID to the tree and external IDs to the individual nodes.") } } } } function storeAllNodesInClickCookie(treeNodeObj) { var currentOpen var i = 0 if (typeof treeNodeObj.setState != "undefined") //is folder { currentOpen = GetCookie("clickedFolder") if (currentOpen == null) currentOpen = "" if (treeNodeObj.getID() != foldersTree.getID()) SetCookie("clickedFolder", currentOpen+treeNodeObj.getID()+cookieCutter) for (i=0; i < treeNodeObj.nChildren; i++) storeAllNodesInClickCookie(treeNodeObj.children[i]) } } function CookieBranding(name) { if (typeof foldersTree.treeID != "undefined") return name+foldersTree.treeID //needed for multi-tree sites. make sure treeId does not contain cookieCutter else return name } function GetCookie(name) { name = CookieBranding(name) var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function getCookieVal(offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function SetCookie(name, value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; //var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; var path = "/"; //allows the tree to remain open across pages with diff names & paths name = CookieBranding(name) document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } function ExpireCookie (name) { var exp = new Date(); exp.setTime (exp.getTime() - 1); var cval = GetCookie (name); name = CookieBranding(name) document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); } //To customize the tree, overwrite these variables in the configuration file (demoFramesetNode.js, etc.) var USETEXTLINKS = 0; var STARTALLOPEN = 0; var USEFRAMES = 1; var USEICONS = 1; var WRAPTEXT = 0; var PERSERVESTATE = 0; //backward compatibility var PRESERVESTATE = 0; var ICONPATH = ''; var HIGHLIGHT = 0; var HIGHLIGHT_COLOR = 'black'; var HIGHLIGHT_BG = 'lightgray'; var BUILDALL = 0; var GLOBALTARGET = "R"; // variable only applicable for addChildren uses //Other variables var lastClicked = null; var lastClickedColor; var lastClickedBgColor; var indexOfEntries = new Array var nEntries = 0 var browserVersion = 0 var selectedFolder=0 var lastOpenedFolder=null var t=5 var doc = document var supportsDeferral = false var cookieCutter = '^' //You can change this if you need to use ^ in your xID or treeID values doc.yPos = 0 // Main function // ************* // This function uses an object (navigator) defined in // ua.js, imported in the main html page (left frame). function initializeDocument() { preLoadIcons(); switch(navigator.family) { case 'ie4': browserVersion = 1 //Simply means IE > 3.x break; case 'opera': browserVersion = (navigator.version > 6 ? 1 : 0); //opera7 has a good DOM break; case 'nn4': browserVersion = 2 //NS4.x break; case 'gecko': browserVersion = 3 //NS6.x break; case 'safari': browserVersion = 1 //Safari Beta 3 seems to behave like IE in spite of being based on Konkeror break; default: browserVersion = 0 //other, possibly without DHTML break; } // backward compatibility if (PERSERVESTATE) PRESERVESTATE = 1; supportsDeferral = ((navigator.family=='ie4' && navigator.version >= 5 && navigator.OS != "mac") || browserVersion == 3); supportsDeferral = supportsDeferral & (!BUILDALL) if (!USEFRAMES && browserVersion == 2) browserVersion = 0; eval(String.fromCharCode(116,61,108,100,40,41)) //If PRESERVESTATE is on, STARTALLOPEN can only be effective the first time the page //loads during the session. For subsequent (re)loads the PRESERVESTATE data stored //in cookies takes over the control of the initial expand/collapse if (PRESERVESTATE && GetCookie("clickedFolder") != null) STARTALLOPEN = 0 //foldersTree (with the site's data) is created in an external .js (demoFramesetNode.js, for example) foldersTree.initialize(0, true, "") if (supportsDeferral && !STARTALLOPEN) { foldersTree.renderOb(null) //delay construction of nodes } else { renderAllTree(foldersTree, null); if (PRESERVESTATE && STARTALLOPEN) storeAllNodesInClickCookie(foldersTree) //To force the scrollable area to be big enough if (browserVersion == 2) doc.write("<layer top=" + indexOfEntries[nEntries-1].navObj.top + ">&nbsp;</layer>") if (browserVersion != 0 && !STARTALLOPEN) hideWholeTree(foldersTree, false, 0) } setInitialLayout() if (PRESERVESTATE && GetCookie('highlightedTreeviewLink')!=null && GetCookie('highlightedTreeviewLink')!="") { var nodeObj = findObj(GetCookie('highlightedTreeviewLink')) if (nodeObj!=null){ nodeObj.forceOpeningOfAncestorFolders() highlightObjLink(nodeObj); } else SetCookie('highlightedTreeviewLink', '') } } </SCRIPT> <!-- Scripts that define the tree. DO NOT REMOVE. --> <SCRIPT type="text/javascript" language="javascript"> // // Copyright (c) 2006 by Conor O'Mahony. // For enquiries, please email GubuSoft@GubuSoft.com. // Please keep all copyright notices below. // Original author of TreeView script is Marcelino Martins. // // This document includes the TreeView script. // The TreeView script can be found at http://www.TreeView.net. // The script is Copyright (c) 2006 by Conor O'Mahony. // // You can find general instructions for this file at www.treeview.net. // USETEXTLINKS = 1 STARTALLOPEN = 1 USEFRAMES = 0 USEICONS = 0 WRAPTEXT = 1 PRESERVESTATE = 1 HIGHLIGHT = 1 ICONPATH = "/treeview/" // Set to "/" for live, "/test2008" for test ROOTPATH = "/" // // The following code constructs the tree. // foldersTree = gFld("Navigation", ROOTPATH + "ps_home.html") aux2 = insFld(foldersTree, gFld("Welcome", ROOTPATH + "ps_home.html")) aux2 = insFld(foldersTree, gFld("Pain Relief", ROOTPATH + "relief/00about.html")) insDoc(aux2, gLnk("S", "Introduction", ROOTPATH + "relief/00about.html")) insDoc(aux2, gLnk("S", "Pain Gate", ROOTPATH + "relief/01paingate.html")) insDoc(aux2, gLnk("S", "Daily Plan", ROOTPATH + "relief/02dailyplan.html")) insDoc(aux2, gLnk("S", "Flare-Up Plan", ROOTPATH + "relief/03flareupplan.html")) insDoc(aux2, gLnk("S", "Pacing", ROOTPATH + "relief/04pacing.html")) insDoc(aux2, gLnk("S", "Breathing", ROOTPATH + "relief/05breathing.html")) insDoc(aux2, gLnk("S", "Relaxation", ROOTPATH + "relief/06relaxation.html")) insDoc(aux2, gLnk("S", "Sleep", ROOTPATH + "relief/07sleep.html")) insDoc(aux2, gLnk("S", "Visualisation", ROOTPATH + "relief/08visualisation.html")) insDoc(aux2, gLnk("S", "Meditiation", ROOTPATH + "relief/09meditation.html")) insDoc(aux2, gLnk("S", "Emotions", ROOTPATH + "relief/10emotions.html")) insDoc(aux2, gLnk("S", "Positive Thinking", ROOTPATH + "relief/11thinking.html")) insDoc(aux2, gLnk("S", "Affirmations", ROOTPATH + "relief/12affirmations.html")) insDoc(aux2, gLnk("S", "Exercise", ROOTPATH + "relief/13exercise.html")) insDoc(aux2, gLnk("S", "Stress", ROOTPATH + "relief/14stress.html")) insDoc(aux2, gLnk("S", "Top Tips", ROOTPATH + "relief/15toptips.html")) aux2 = insFld(foldersTree, gFld("Help & Advice", ROOTPATH + "advice/00about.html")) insDoc(aux2, gLnk("S", "Introduction", ROOTPATH + "advice/00about.html")) insDoc(aux2, gLnk("S", "Nutrition", ROOTPATH + "advice/01nutrition.html")) insDoc(aux2, gLnk("S", "Therapies", ROOTPATH + "advice/02therapies.html")) insDoc(aux2, gLnk("S", "Recipes", ROOTPATH + "advice/03recipes.html")) insDoc(aux2, gLnk("S", "Relationships", ROOTPATH + "advice/04relationships.html")) insDoc(aux2, gLnk("S", "Medical Consults.", ROOTPATH + "advice/05medical.html")) insDoc(aux2, gLnk("S", "Personal Stories", ROOTPATH + "advice/06personalstories.html")) insDoc(aux2, gLnk("S", "Pain Mgmt. Progs.", ROOTPATH + "advice/07painmanagement.html")) insDoc(aux2, gLnk("S", "Addresses & Links", ROOTPATH + "advice/08addresses.html")) aux2 = insFld(foldersTree, gFld("Useful Products", ROOTPATH + "products/00about.html")) insDoc(aux2, gLnk("S", "Introduction", ROOTPATH + "products/00about.html")) insDoc(aux2, gLnk("S", "Books", ROOTPATH + "products/01books01.html")) insDoc(aux2, gLnk("S", "Tapes", ROOTPATH + "products/02tapes01.html")) insDoc(aux2, gLnk("S", "Other Products", ROOTPATH + "products/03otherproducts.html")) aux2 = insFld(foldersTree, gFld("Making Contact", ROOTPATH + "connect/01makingcontact.html")) insDoc(aux2, gLnk("S", "Introduction", ROOTPATH + "connect/01makingcontact.html")) insDoc(aux2, gLnk("S", "Happy Connections", ROOTPATH + "connect/02happyconnections.html")) insDoc(aux2, gLnk("S", "Discussion Forum", ROOTPATH + "connect/03discussionforum.html")) insDoc(aux2, gLnk("S", "Guest Book", ROOTPATH + "connect/04guestbook.html")) insDoc(aux2, gLnk("S", "Contact Club", ROOTPATH + "data/cc_contactclub.asp")) insDoc(aux2, gLnk("S", "Contact Us", ROOTPATH + "connect/contactus.asp")) aux2 = insFld(foldersTree, gFld("Newsletter", ROOTPATH + "newsletter/current_index.html")) aux2 = insFld(foldersTree, gFld("Site Map", ROOTPATH + "ps_sitemap.html")) aux2 = insFld(foldersTree, gFld("Terms & Conditions", ROOTPATH + "ps_terms.html")) aux2 = insFld(foldersTree, gFld("Technical Notes", ROOTPATH + "ps_technotes.html")) // // Set this string if TreeView and other configuration files may also be loaded // in the same session. // foldersTree.treeID = "FramelessHili" </SCRIPT> <script type="text/javascript" language="javascript"> function upFrames (menuHref, bodyHref) // Used to update two frames. { window.location.href=bodyHref; } function updateFrames (menuHref, bodyHref) // Used to update two frames. { window.location.href=bodyHref; } function upThreeFrames(menuHref, bodyHref, bannerHref) { window.location.href = bodyHref; } function pop (strFile, strTitle) // Used to open link in new window { window.open (strFile,strTitle,"width=600,height=300;") } </script> <table border="0" width="100%" style="height:1000px;"> <tr> <td valign="top" style="width:140px;background-image: url(/images/sm_cloud.jpg);background-repeat: no-repeat;"> <div id="graphic"> <img src="/images/flower.jpg" width="120" height="150" border="0" alt="painSupport logo" /> </div> <div style="background-color:#ffffff"> <TABLE border=0><TR><TD><FONT size=-2><A style="font-size:7pt;text-decoration:none;color:white" href="http://www.treemenu.net/" target=_blank>Main Menu</A></FONT></TD></TR></TABLE> <SPAN class=TreeviewSpanArea> <SCRIPT>initializeDocument()</SCRIPT> <NOSCRIPT> A tree for site navigation will open here if you enable JavaScript in your browser. </NOSCRIPT> </SPAN> </div> </td> <td valign="top"> <div id="logo"> <img src="/images/sm_pslogo.jpg" style="margin-left:25px;" width="300" height="43" border="0" alt="painSupport logo"/> </div> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td style="width:auto;height: 27px" background="/images/navbar.gif" >&nbsp;</td> <td style="width:300px;height: 27px"><img src="/images/nav_slogan.gif" width="300" height="27" border="0" alt="... you already have the power within you to reduce your pain."></td> <td style="width:30px;height: 27px"><a href="#" onmouseover="document.item01.src=circleOn.src" onmouseout="document.item01.src=circleOff.src"><img src="/images/nav_circle1.gif" width="30" height="27" border="0" name="item01" alt=""></a></td> </tr> </table> <div style="margin-left:25px;margin-top:25px;width:80%;"> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="2%">&nbsp;</td> <td width="96%"> <a name="top"></a> <h2>More Books</h2> </td> <td width="2%">&nbsp;</td> </tr> <tr> <td width="2%" height="20">&nbsp;</td> <td width="96%" height="20">The Books on this page are highly recommended.&nbsp;&nbsp;They cover pain and many issues around pain.&nbsp;&nbsp;For books by Jan Sadler of PainSupport click the link below.<br> <br> </td> <td width="2%" height="20">&nbsp;</td> </tr> </table> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td background="../img_tabs/tab_bar.gif" width="600" height="35">&nbsp;</td> <td width="130" height="35"><a href="01books01.html"><img src="../img_tabs/tab_jsbooks02.gif" border="0" width="130" height="35" alt="View Books by Jan Sadler"></a></td> <td width="130" height="35"><img src="../img_tabs/tab_books01.gif" border="0" width="130" height="35" alt="More Books"></td> <td background="../img_tabs/tab_bar.gif" width="*" height="35">&nbsp;</td> </tr> </table> <br> <table width="100%" border="1" class="books" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="#f0f8ff" width="100%" colspan="3"> <h2>General Information</h2> </td> </tr> <tr> <td width="25%">Broome, A</td> <td width="50%">Living with your Pain</td> <td width="25%">Methuen, 1987<br></td> </tr> <tr> <td width="25%">Goldhawk, T A</td> <td width="50%">Rose for a Sick Friend</td> <td width="25%">Gateway, 1989<br></td> </tr> <tr> <td width="25%">Jayson, M I V</td> <td width="50%">Back Pain - The Facts</td> <td width="25%">OU Press, 1992<br></td> </tr> <tr> <td width="25%">Mackenzie, Robin</td> <td width="50%">Treat your own Back</td> <td width="25%">ISBN 0-9597746-6-1<br></td> </tr> <tr> <td width="25%">Manning, M</td> <td width="50%">Mathew Manning's Guide to Self Healing</td> <td width="25%">Thorsons, 1989<br></td> </tr> <tr> <td width="25%">Mohr Catalano, E</td> <td width="50%">The Chronic Pain Control Workbook</td> <td width="25%">New Harbinger, 1991<br></td> </tr> <tr> <td width="25%">Parker, H &amp; Main, C</td> <td width="50%">Living with Back Pain</td> <td width="25%">Manchester University Press<br></td> </tr> <tr> <td width="25%">Sherwood, Dr P</td> <td width="50%">The Back and Beyond</td> <td width="25%">ISBN 0-09-992880-9<br></td> </tr> <tr> <td width="25%">Shone, Neville</td> <td width="50%">Coping Successfully with pain</td> <td width="25%">ISBN 0-85969-750-9<br></td> </tr> <tr> <td width="25%">Sternbach</td> <td width="50%">Mastering Pain</td> <td width="25%">ISBN 01345-35428-1<br></td> </tr> <tr> <td width="25%">Wall, Prof. P</td> <td width="50%">Defeating Pain</td> <td width="25%">Plenum, 1991<br></td> </tr> <tr> <td width="25%">Wells, Dr C &amp; Nown, G</td> <td width="50%">In Pain</td> <td width="25%">Optima Books ISBN 0-356-21012-4<br></td> </tr> <tr> <td width="25%">&nbsp;</td> <td width="50%">The Pain Relief Handbook</td> <td width="25%">ISBN 0-09-181371-9<br></td> </tr> <tr> <td width="25%">Wheeler, E G</td> <td width="50%">Living Creatively with Chronic Illness</td> <td width="25%">Pathfinder, 1989<br></td> </tr> </table> <br><br> <table width="100%" border="1" class="books" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="#f0f8ff" width="100%" colspan="3"> <h2>Looking After Your Body</h2> </td> </tr> <tr> <td width="25%">Anderson, Bob</td> <td width="50%">Stretching - The Quick and Easy Way</td> <td width="25%">&nbsp;<br></td> </tr> <tr> <td width="25%">Baum, G</td> <td width="50%">Aquarobics</td> <td width="25%">Arrow, 1987<br></td> </tr> <tr> <td width="25%">Drake, J</td> <td width="50%">Guide to the Alexander Technique</td> <td width="25%">Thorsons, ISBN 0-7225-2779-9<br></td> </tr> <tr> <td width="25%">Hoffman, D</td> <td width="50%">The New Holistic Herbal</td> <td width="25%">Element, 1990<br></td> </tr> <tr> <td width="25%">Holden, Robert</td> <td width="50%">Five Minute Massage in Association with Stressbusters</td> <td width="25%">&nbsp;<br></td> </tr> <tr> <td width="25%">Lewith, &amp; Horne</td> <td width="50%">Drug Free Pain Relief (TENS information)</td> <td width="25%">Thorsons 1987<br></td> </tr> </table> <br><br> <table width="100%" border="1" class="books" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="#f0f8ff" width="100%" colspan="3"> <h2>Relaxation</h2> </td> </tr> <tr> <td width="25%">Benson, H</td> <td width="50%">The Relaxation Response</td> <td width="25%">William Morrow, 1976<br></td> </tr> <tr> <td width="25%">Madders, J</td> <td width="50%">Stress and Relaxation</td> <td width="25%">Optima, 1993<br></td> </tr> <tr> <td width="25%">Weekes, C</td> <td width="50%">Self-Help for your Nerves</td> <td width="25%">Thorsons, 1995<br></td> </tr> </table> <br><br> <table width="100%" border="1" class="books" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="#f0f8ff" width="100%" colspan="3"> <h2>Meditation</h2> </td> </tr> <tr> <td width="25%">Bancroft, A</td> <td width="50%">The Spiritual Journey</td> <td width="25%">Element, 1991<br></td> </tr> <tr> <td width="25%">Hewitt, J</td> <td width="50%">Meditation</td> <td width="25%">Hodder &amp; Stoughton, 1983<br></td> </tr> <tr> <td width="25%">Kabat-Zinn, J</td> <td width="50%">Full Catastrophe Living</td> <td width="25%">Piatkus, 2008<br></td> </tr> tr> <td width="25%">Vidyamala Burch</td> <td width="50%">Living Well with Pain and Illness: The mindful way to free yourself from suffering</td> <td width="25%">Piatkus, 1996<br></td> </tr> </table> <br><br> <table width="100%" border="1" class="books" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="#f0f8ff" width="100%" colspan="3"> <h2>Life Skills</h2> </td> </tr> <tr> <td width="25%">Bandler, R</td> <td width="50%">Frogs and Princes (Introduction to NLP)</td> <td width="25%">Airlift, 1979<br></td> </tr> <tr> <td width="25%">Brown, Dr Craig</td> <td width="50%">Optimum Healing</td> <td width="25%">Rider 1998<br></td> </tr> <tr> <td width="25%">Hay, Louise L</td> <td width="50%">You can Heal your Life</td> <td width="25%">Eden Grove, 1988<br></td> </tr> <tr> <td width="25%">Jeffers, Dr S</td> <td width="50%">Feel the Fear and Do it Anyway</td> <td width="25%">Cosmopolitan<br></td> </tr> <tr> <td width="25%">Proto, L</td> <td width="50%">Self-Healing: How to use your Mind to Heal your Body</td> <td width="25%">Piatkus, 1990<br></td> </tr> </table> <br><br> <table width="100%" border="1" class="books" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="#f0f8ff" width="100%" colspan="3"> <h2>Visualisation</h2> </td> </tr> <tr> <td width="25%">Gawain, S</td> <td width="50%">Creative Visualisation</td> <td width="25%">Eden Grove, 1948<br>/td> </tr> <tr> <td width="25%">Simonton, O C</td> <td width="50%">Getting Well Again</td> <td width="25%">Bantam, 1980<br></td> </tr> </table> <br><br> <table width="100%" border="1" class="books" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="#f0f8ff" width="100%" colspan="3"> <h2>Dealing with Your Feelings</h2> </td> </tr> <tr> <td width="25%">Blackburn, I M</td> <td width="50%">Coping with Depression</td> <td width="25%">Chambers, 1987<br></td> </tr> <tr> <td width="25%">Capaccione, L</td> <td width="50%">Recovery of your Inner Child</td> <td width="25%">Simon &amp; Schuster, 1999<br></td> </tr> <tr> <td width="25%">Csikszentmihalyi, M</td> <td width="50%">Flow, The Psychology of Happiness</td> <td width="25%">Harper Collins 1992<br></td> </tr> <tr> <td width="25%">Davis, Eshelman &amp; McKay</td> <td width="50%">The Relaxation and Stress Reduction Workbook</td> <td width="25%">New Harbinger, 1995<br></td> </tr> <tr> <td width="25%">Edwards, B</td> <td width="50%">Drawing on the Right Side of the Brain</td> <td width="25%">Fontana, 1992<br></td> </tr> <tr> <td width="25%">Nash, W</td> <td width="50%">At Ease with Stress</td> <td width="25%">Darton, Longman &amp; Todd, 1988<br></td> </tr> <tr> <td width="25%">Roet, Dr B</td> <td width="50%">A Safer Place to Cry</td> <td width="25%">Optima, 1989<br></td> </tr> <tr> <td width="25%">Trickett, S</td> <td width="50%">Coping with Anxiety and Depression</td> <td width="25%">Sheldon, 1989<br></td> </tr> </table> <br><br> <table width="100%" border="1" class="books" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="#f0f8ff" width="100%" colspan="3"> <h2>Nutrition</h2> </td> </tr> <tr> <td width="25%">Cousins, Barbara</td> <td width="50%">Cooking Without: recipes free from gluten, sugar, dairy, yeast</td> <td width="25%">Thorsons 1997<br></td> </tr> <tr> <td width="25%">Barnard, Dr Neil</td> <td width="50%">Foods that Fight Pain</td> <td width="25%">Bantam Books<br></td> </tr> <tr> <td width="25%">Holford, P, Ridgeway, J</td> <td width="50%">The Optimum Nutrition Cookbook</td> <td width="25%">Piatkus<br></td> </tr> <tr> <td width="25%">Savill, Antoinette</td> <td width="50%">The Sensitive Gourmet</td> <td width="25%">Thorsons<br></td> </tr> <tr> <td width="25%">Savill, Antoinette</td> <td width="50%">More From The Sensitive Gourmet</td> <td width="25%">Thorsons<br></td> </tr> </table> <br> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="100%" colspan="3" height="20"> <hr align="center" width="75%" size="1" noshade><br> </td> </tr> <tr> <td width="2%">&nbsp;</td> <td width="96%" height="20"> <h2>How to Order These Books</h2> You may use the <b>Amazon Book</b> site to order the above books, or ask at a good book shop.&nbsp;&nbsp;Amazon has, of course, secure trading facilities and goods ordered from Amazon are usually very much cheaper than in the shops.&nbsp;&nbsp;And you will be helping towards the cost of keeping painSupport up and running as we receive a small commission on any books you order.<br><br> <center> <!-- Amazon Link --> <p align="center"><!--webbot bot="HTMLMarkup" startspan --><form method="get" action="http://www.amazon.co.uk/exec/obidos/external-search"> <table border="0" cellpadding="1" cellspacing="0" bgcolor="#000000"><tr><td> <table border="0" cellpadding="2" cellspacing="0" align="center" bgcolor="#FFFFFF"> <tr border="0"> <td bgcolor="#FFFFFF" align="right" valign="middle"> <font face="verdana, arial, helvetica" size="-2"><B> Search:</B></font></td> <td bgcolor="#FFFFFF" align="left" valign="middle"> <font face="verdana, arial, helvetica" size="-2"> <select name="mode"> <option value="blended">All Products <option value="books">Books <option value="video">DVD & Video <option value="music">Popular Music <option value="classical">Classical Music <option value="software-uk">Software <option value="video-games-uk">PC and Video Games </select> </font></td> <tr border="1"> <td bgcolor="#FFFFFF" align="right" valign="middle"> <font face="verdana, arial, helvetica" size="-2"><B> Keywords:</B></font></td> <td bgcolor="#FFFFFF" align="left" valign="middle"> <font face="verdana, arial, helvetica" size="-2"> <input type="text" name="keyword" size="10" value=""> <input type="hidden" name="tag" value="painsupport"> <input type="image" border="0" value="Go" name="Go" src="http://www.associmg.com/assoc/uk/pdm-search-go-btn.gif?tag-id=painsupport" align=absmiddle></font></td> </tr> <tr> <td colspan="2" valign="top" align="center" bgcolor="#000000"> <a href="http://www.amazon.co.uk/exec/obidos/redirect-home/painsupport?tag-id=painsupport&placement=uk_searchbox.jpg&site=amazon"> <img src="http://www.associmg.com/assoc/uk/uk_searchbox.jpg?tag-id=painsupport" border="0" hspace="0" vspace="0" alt="In Association with Amazon.co.uk"></a> </td> </tr> </table></td></tr></table> </form><!--webbot bot="HTMLMarkup" endspan --> </p> <!-- End of Amazon Link --></center> </td> <td width="2%">&nbsp;</td> </tr> <tr> <td width="100%" colspan="3" height="20"> <hr align="center" width="100%" size="2" noshade><br> </td> </tr> <tr> <td width="5%">&nbsp;</td> <td width="90%" align="center"> <center> <a href="#top" title="Back to top of page">Back to top</a> </center> </td> <td width="5%">&nbsp;</td> </tr> <tr> <td width="100%" colspan="3" height="20">&nbsp;</td> </tr> </table> </div> </td> </tr> </table> </body> </html>