var maxW,maxH,fromX,fromY,toX,toY,adjX,adjY,zBox,zStep=0,zLink,zNew; function zoomBox(evt,zlink,maxw,maxh,tox,toy) { if (arguments.length > 2) zNew=1; scrollH=(window.pageYOffset!=null)?window.pageYOffset:document.body.scrollTop; maxW=maxw?maxw:window.innerWidth?innerWidth:document.body.clientWidth; maxH=maxh?maxh:window.innerHeight?innerHeight:document.body.clientHeight; toX=tox?tox:0; toY=(toy?toy:0)+scrollH; fromX=evt.pageX?evt.pageX:evt.clientX; fromY=(evt.pageY?evt.pageY:evt.clientY)+(document.all?scrollH:0); adjX=toX+evt.screenX-fromX; adjY=toY+evt.screenY-fromY; if (document.createElement && document.body.appendChild && !zBox) { zBox=document.createElement("div"); zBox.style.position="absolute"; document.body.appendChild(zBox); } else if (document.all && !zBox) { document.all[document.all.length-1].outerHTML+="
"; zBox=document.all.zBoxDiv; } else if (document.layers && !zBox) { zBox=new Layer(maxW); zBox.style=zBox; } zLink=zlink; doZoom(); } function doZoom() { zStep+=1; zPct=(10-zStep)/10 if (document.layers) { zBox.moveTo(toX+zPct*(fromX-toX),toY+zPct*(fromY-toY)); zBox.document.open(); zBox.document.write("
"); zBox.document.close(); } else { zBox.style.border="2px solid #999999"; zBox.style.left=toX+zPct*(fromX-toX); zBox.style.top=toY+zPct*(fromY-toY); zBox.style.width=maxW*(1-zPct); zBox.style.height=maxH*(1-zPct); } zBox.style.visibility="visible"; if (zStep < 10) setTimeout("doZoom("+fromX+","+fromY+","+toX+","+toY+")",30); else { zBox.style.visibility="hidden"; zStep=0; if (zLink && !zNew) location.href=zLink.href; else if (zLink && zNew) { var w=window.open(zLink.href,"","width="+maxW+",height="+maxH+",left="+adjX+",top="+adjY+",scrollbars,resizable"); zNew=null; } } } /** * This array is used to remember mark status of rows in browse mode */ var marked_row = new Array; /** * Sets/unsets the pointer and marker in browse mode * * @param object the table row * @param interger the row number * @param string the action calling this script (over, out or click) * @param string the default background color * @param string the color to use for mouseover * @param string the color to use for marking a row * * @return boolean whether pointer is set or not */ function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor) { var theCells = null; // 1. Pointer and mark feature are disabled or the browser can't get the // row -> exits if ((thePointerColor == '' && theMarkColor == '') || typeof(theRow.style) == 'undefined') { return false; } // 2. Gets the current row and exits if the browser can't get it if (typeof(document.getElementsByTagName) != 'undefined') { theCells = theRow.getElementsByTagName('td'); } else if (typeof(theRow.cells) != 'undefined') { theCells = theRow.cells; } else { return false; } // 3. Gets the current color... var rowCellsCnt = theCells.length; var domDetect = null; var currentColor = null; var newColor = null; // 3.1 ... with DOM compatible browsers except Opera that does not return // valid values with "getAttribute" if (typeof(window.opera) == 'undefined' && typeof(theCells[0].getAttribute) != 'undefined') { currentColor = theCells[0].getAttribute('bgcolor'); domDetect = true; } // 3.2 ... with other browsers else { currentColor = theCells[0].style.backgroundColor; domDetect = false; } // end 3 // 4. Defines the new color // 4.1 Current color is the default one if (currentColor == '' || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) { if (theAction == 'over' && thePointerColor != '') { newColor = thePointerColor; } else if (theAction == 'click' && theMarkColor != '') { newColor = theMarkColor; marked_row[theRowNum] = true; } } // 4.1.2 Current color is the pointer one else if (currentColor.toLowerCase() == thePointerColor.toLowerCase() && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) { if (theAction == 'out') { newColor = theDefaultColor; } else if (theAction == 'click' && theMarkColor != '') { newColor = theMarkColor; marked_row[theRowNum] = true; } } // 4.1.3 Current color is the marker one else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) { if (theAction == 'click') { newColor = (thePointerColor != '') ? thePointerColor : theDefaultColor; marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum]) ? true : null; } } // end 4 // 5. Sets the new color... if (newColor) { var c = null; // 5.1 ... with DOM compatible browsers except Opera if (domDetect) { for (c = 0; c < rowCellsCnt; c++) { theCells[c].setAttribute('bgcolor', newColor, 0); } // end for } // 5.2 ... with other browsers else { for (c = 0; c < rowCellsCnt; c++) { theCells[c].style.backgroundColor = newColor; } } } // end 5 return true; } // end of the 'setPointer()' function