ÿþ<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="5%">&nbsp;</td> <td width="90%"> <a name="top"></a> <br> <left> <a href="http://www.painsupport.co.uk" target="_blank">Home page - www.painsupport.co.uk</a> </left><br><br> <h1>Newsletter Archive - Winter 2001</h1> </td> <td width="5%">&nbsp;</td> </tr> </table> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td background="../img_tabs/tab_bar.gif" width="*" height="35">&nbsp;</td> <td width="130" height="35"><a href="2001win_00.html"> <img src="../img_tabs/tab_index02.gif" border="0" alt="Newsletter Index" width="130" height="35"></a></td> <td width="130" height="35"><a href="2001win_01.html"> <img src="../img_tabs/tab_articles02.gif" border="0" alt="Your Articles" width="130" height="35"></a></td> <td width="130" height="35"><a href="2001win_02.html"> <img src="../img_tabs/tab_feelgood02.gif" border="0" alt="Feel-Good Factors" width="130" height="35"></a></td> <td width="130" height="35"> <img src="../img_tabs/tab_hotnews01.gif" border="0" alt="Hot News" width="130" height="35"></td> <td background="../img_tabs/tab_bar.gif" width="5" height="35">&nbsp;</td> </tr> </table><br> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="5%">&nbsp;</td> <td width="90%"> <h1>Hot News</h1> <h2>All the latest to buy, think about and log on to</h2> </td> <td width="5%">&nbsp;</td> </tr> <tr> <td width="100%" colspan="3"> <hr align="center" width="100%" size="1" noshade><br> </td> </tr> </table> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="5%">&nbsp;</td> <td width="90%"> <b>Have an Amazon Christmas!</b>&nbsp;&nbsp;It's very early to mention the 'C' word, but Christmas will be upon us before we know it.&nbsp;&nbsp;Be prepared this year!&nbsp;&nbsp;Take the hassle out of present buying and order all your books, tapes, games, toys, etc. early - from <b>Amazon.com</b> via painSupport (look on the <a href="javascript:upFrames('../ps_menu04.html','../products/01books01.html')">Books and Tapes</a> page for the link direct to Amazon.&nbsp;&nbsp;Amazon is a secure trading site).&nbsp;&nbsp;You can order ANY book, audiotape, video, game, etc. via our direct link to the Amazon Book site.&nbsp;&nbsp;Goods ordered from Amazon are usually very much cheaper than in the shops AND you will be helping towards the cost of keeping painSupport up and running as we will receive a small commission on any books you order!<br><br> So, any time you want to buy a book, tape or game, etc. for either yourself or as a present, do please think or ordering through the painSupport link to Amazon which you can find on the Books and Tapes page of the website.&nbsp;&nbsp;Thank you in advance for your extra backing of the painSupport website.<br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>painSupporters' Favourite Websites</h2> Here are some of painSupport visitors' favourite websites:<br><br> From <b>Chris</b>:<br><br> Try the <b>SpineHealth</b> website.&nbsp;&nbsp;Everything you want to know about your back and details of treatment available.&nbsp;&nbsp;There are some good pages on exercises for particular back problems too.<br><br> Website: <a href="http://www.spine-health.com">www.spine-health.com</a><br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Virtual You Model</h2> From <b>Jan</b>:<br><br> If you have difficulty in buying clothes by mail order try the <b>Lands End</b> website. &nbsp;&nbsp;They have just introduced a 'Virtual You' model. If you tap in your shape of face, colour of hair, body sizes, etc. a picture will appear of 'you' which you can then 'dress' in any of their clothes to see how it will actually look on you.&nbsp;&nbsp;Good fun!<br><br> Website: <a href="http://www.landsend.co.uk">www.landsend.co.uk</a><br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Care and Carers</h2> A new charity has been formed to address such topics as hospital discharge, help at home, care homes, charging, complaints, and legal matters.<br><br> email: info@caring-matters.org.uk<br><br> Website: <a href="http://www.caringmatters.dial.pipex.com">www.caringmatters.dial.pipex.com</a><br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Video Viewing</h2> Hundreds of videos on a range of traditional and alternative health topics, such as exercise and alternative therapies.&nbsp;&nbsp;Ring 020 7357 9393 for further information or log on to: <a href="http://www.worldofhealth.co.uk">www.worldofhealth.co.uk</a><br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Magical Magnets?</h2> <b>Mike Fairlie</b> has written to painSupport about the use of magnets for pain relief. &nbsp;&nbsp;Amongst other injuries, Mike lost a leg below his knee in a road traffic accident. &nbsp;&nbsp;He suffered from severe nerve and phantom pains and was tired of taking painkillers and NSAIDs so tried various complementary therapies from acupunture to TeNs machines, and although some of them helped, the effects wore off after a short while.&nbsp;&nbsp;Then a friend recommended magnotherapy.&nbsp;&nbsp;Mike used a <b>Bioflow</b> magnetic bracelet and gradually over the weeks his pain reduced until about two months later he was off the drugs completely and virtually pain free.&nbsp;&nbsp;Mike says he is a member of BLESMA and The Limbless Association and has persuaded a considerable number of amputees with phantom and nerve pain to give Bioflow magnetic wristbands a try and that over 70% have been helped.&nbsp;&nbsp; Mike sells Bioflow magnetic goods and is happy to speak to anyone about the products.<br><br> Contact <b>Mike Fairlie</b> at<br> Trevor House<br> St Ives Road<br> Carbis Bay<br> Cornwall TR26 2RS<br> Tel: 01736 796891<br><br> <b>NB</b>&nbsp;&nbsp;painSupport does not recommend any particular products over others and magnotherapy may or may not work for you.&nbsp;&nbsp;If you want to try it ask if you can have a money-back guarantee before parting with your money.&nbsp;&nbsp;There are various other distributors of magnetic goods.&nbsp;&nbsp;Jan<br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Vulvar Health</h2> painSupport received a message from Debby Herbenick of <b>VulvarHealth</b>.&nbsp;&nbsp;VulvarHealth is a web site that gives a wide range of information.&nbsp;&nbsp;Many vulvar disorders, including lichen sclerosus, vulvodynia, vaginismus and vulvar cancer are associated with chronic or intermittent pain that current therapies are still struggling to deal with.&nbsp;&nbsp;Some patients find relief through medical drugs, while others find help through alternative therapies such as acupuncture, meditation, yoga, biofeedback and emotional cleansing.<br><br> For additional information log on to<br><br> Website: <a href="http://www.vulvarhealth.org">www.vulvarhealth.org</a><br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Positive Thinking Website</h2> This website has dozens of pages and links related to feeling calm and serene, positive thinking, alternative therapies, etc. etc.<br><br> <a href="http://thriveonline.oxygen.com/serenity/positive_thinking/">http://thriveonline.oxygen.com/serenity/positive_thinking</a><br><br> Many thanks to <b>Brian</b> of Durham for sending me this web address.<br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Carers of Crohns</h2> A message from <b>Cathy Davidson</b>.<br><br> Cathy says:<br><br> "My son has Crohns disease and I created a site about <b>Inflammatory Bowel Disease</b> last September.&nbsp;&nbsp;It is dedicated to the carers of this disease as most sites I visited seemed to be more geared towards the sufferers and not to much for the carers.&nbsp;&nbsp;I do obviously cater for both but the emphasis is on support for carers."<br><br> Please log on to: <a href="http://www.carersofcrohns.cjb.net">www.carersofcrohns.cjb.net</a><br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Adjustable Seating</h2> Adjustable Seating's <b>EquipoisE Balance Seat</b> - uses exact balance and gentle movement to give stress-free sitting, perfect posture and superb comfort and help you maintain fitness at your computer says designer/inventor of the EquipoisE Balance Seat, Gregory J. Usher B.Ec., Dip.Ed., F.A.I.I., M.Psych. 15 Eddy St. Kiama N.S.W. 2533 Australia. ph 61 2 42324455<br><br> Website: <a href="http://www.kneelsit.com">www.kneelsit.com</a><br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Herbal Helpline</h2> Jan de Vries, well-known author and complementary therapist, has a <b>herbal helpline</b> which operates from Monday to Friday, 9.00 am to 4.30 pm.&nbsp;&nbsp;It's quite a busy line, so if you want to speak to Jan, do persevere.&nbsp;&nbsp;Ring 01292 318846 for free advice on herbal medicine.&nbsp;&nbsp;Thank you, Mary, for this useful information.<br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Aromatherapy Advisors</h2> painSupport had a message recently from Jane at <b>Aromacaring</b>, a professional site for both aromatherapists and clients.&nbsp;&nbsp;On the website you can find information about essential oils and massage treatments, plus a very useful page on which oil to use for which ailment.<br><br> Website: <a href="http://www.aromacaring.co.uk">www.aromacaring.co.uk</a><br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Fizzy Tips</h2> Many thanks to painSupporter <b>Norma</b> for these handy tips using <b>Alka Seltzer</b> tablets:<br><br> <ol type="disc"> <li>Clean a toilet.&nbsp;&nbsp;Drop in two tablets, wait twenty minutes, brush and flush. &nbsp;&nbsp;The citric acid and effervescent action clean vitreous China.</li> <li>Clean a vase.&nbsp;&nbsp;To remove a stain from the bottom of a glass vase or cruet, fill with water and drop in two tablets.</li> <li>Polish jewelry.&nbsp;&nbsp;Drop two tablets into a glass of water and immerse the jewelry for two minutes.</li> <li>Clean a thermos bottle.&nbsp;&nbsp;Fill the bottle with water, drop in four tablets, and let soak for an hour (or longer, if necessary).</li> </ol> More Fizzy Tips next time...<br><br> Thanks, Norma, for these useful tips.<br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Video Recommendation</h2> painSupporter <b>Ken</b> recommends...<br><br> Dr. John Sarno's video: <b>Healing Back Pain: The Mindbody Prescription</b><br><br> Go to <a href="http://www.healingbackpain.com">www.healingbackpain.com</a> for more information.<br><br> Thank you for this recommendation, Ken.<br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Now Available Again - 'Natural Pain Relief' by Jan Sadler</h2> My first book, <b>Natural Pain Relief</b>, Foreword by Professor Patrick Wall, is now available again, reprinted by C W Daniel Books Ltd. ISBN 0 85207 350 X at &pound;9.99.<br><br> In the book, <b>Natural Pain Relief</b>, I can share with you in depth my ideas and knowledge of how to relieve and cope with long-term pain and how to maximize the healing process.&nbsp;&nbsp; 'Natural Pain Relief' is organised into a series of self-contained units, each one devoted to a specific aspect of pain relief, such as <b>The power of Deep Relaxation</b>, <b>Flare-ups</b> or <b>Dealing with your Feelings</b> and, of course, <b>Pacing</b>, plus many other inspiring units.&nbsp;&nbsp;The book is easy to read, you can dip in and out of it as you please and take from it what you want.<br><br> To obtain your copy, either quote the ISBN number in bookshops, order from the publisher on: 01799 521909 or order from <b>Amazon Books</b> via this website (go to the Site Map and look on the Books and Tapes page for the link to Amazon).<br><br> There is also an audiotape, <b>Natural Pain Relief</b> (&pound;6.95) to accompany the book.&nbsp;&nbsp;If you would like a copy of this beautifully relaxing and informative tape you can obtain it from either ring C W Daniel on 01799 521 909 or direct from me <a href="javascript:upFrames('/ps_menu05.html','../connect/contactus.asp')">Contact Us</a>. (regret tape available in UK only).<br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>The Five Feel-Good Factors, by Jan Sadler - Do YOU know what they are yet?</h2> Discover just what the five feel-good factors are and how you can nurture them in your life. &nbsp;&nbsp;My latest book, <b>The Five Feel-Good Factors</b>, has just been published and is generally available NOW from book shops everywhere @ &pound;9.99.&nbsp;&nbsp;Or, order direct from the Amazon website, www.amazon.co.uk or direct from the publishers:<br><br> CW Daniel Book Company<br> Tel: 01799 521909<br> Email: cwdaniel@dial.pipex.com<br><br> Website: <a href="http://www.cwdaniel.com">www.cwdaniel.com</a><br><br> Ask for <b>The Five Feel-Good Factors</b> by Jan Sadler, ISBN 0 85207 345 3<br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Heard about the painSupport Contact Club?</h2> If you haven't already done so, take a look right now to find some new friends in the painSupport <b>Contact Club</b>.&nbsp;&nbsp;There are lots of lovely people out there who just happen to have pain in their lives but who are determined to make the most of things despite it all. &nbsp;&nbsp;YOU have much to offer them, and they have much to offer YOU.&nbsp;&nbsp;Ease the pain by sharing life's ups and downs with those who understand.<br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Publicity Campaign</h2> Huge thanks again to all those who have pinned up posters about painSupport in their local library, doctor's surgery, pain clinic, etc.&nbsp;&nbsp;This is a wonderful way to reach out to others with chronic pain so that they too can find friendship and learn strategies for coping with pain.<br><br> Remember, it can be lonely out there when you are in pain so the more people the better who come to hear about painSupport and our Contact Club.<br><br> If you would like to join in with this publicity campaign, just let me know and I will tell you more. email me at <a href="javascript:upFrames('/ps_menu05.html','../connect/contactus.asp')">Contact Us</a>.<br><br> <hr align="center" width="75%" size="1" noshade><br> <h2>Want to ask a Question or do you know the Answer to a Question?</h2> Share it with us...<br><br> Take a look at the painSupport <b>Discussion Forum</b>.&nbsp;&nbsp;Ask a question, answer a question, start a discussion, join in a discussion or just read what others are saying - take a look at our Discussion Forum.&nbsp;&nbsp;More support, information, interest and friendship just waiting for you to click on to it.&nbsp;&nbsp;To find it, go to the Site Map page, scan down the page and click on Discussion Group.<br><br> Good luck to everyone - and keep your Hot News emails coming in - your Hot News tip could be