[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
xampp182
/
htdocs
/
simpeg
/
zapatec
/
zpgrid
/
zpgrid
/
jsdocs
/
[
Home
]
File: overview-summary-zpgrid-toolbar.js.html
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd"> <html> <head> <title> Zapatec Grid Overview </title> <link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <script> function asd() { parent.document.title="zpgrid-toolbar.js Overview"; } </script> </head> <body bgcolor="white" onload="asd();"> <!-- ========== START OF NAVBAR ========== --> <a name="navbar_top"><!-- --></a> <table border="0" width="100%" cellpadding="1" cellspacing="0"> <tr> <td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1"> <a name="navbar_top_firstrow"><!-- --></a> <table border="0" cellpadding="0" cellspacing="3"> <tr align="center" valign="top"> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td> <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td> <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td> </tr> </table> </td> <td bgcolor="#EEEEFF" align="right" valign="top"> <em> <b>Zapatec Grid</b></em> </td> </tr> <tr> <td bgcolor="white" class="NavBarCell2"><font size="-2"> PREV NEXT</font></td> <td bgcolor="white" class="NavBarCell2"><font size="-2"> <a href="index.html" target="_top"><b>FRAMES</b></a> <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a> <script> <!-- if(window==top) { document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>'); } //--> </script> <noscript> <a href="allclasses-noframe.html" target=""><b>All Classes</b></a> </noscript> </font></td> </tr> </table> <!-- =========== END OF NAVBAR =========== --> <hr> <center> <h2>zpgrid-toolbar.js</h2> </center> <h4>Summary</h4> <p> Zapatec Grid Toolbar Demo Widget extension. Based on this demo extension you can create more complex control panels. <pre> Copyright (c) 2004-2007 by Zapatec, Inc. http://www.zapatec.com 1700 MLK Way, Berkeley, California, 94709, U.S.A. All rights reserved. </pre><BR/><BR/> </p> <hr> <table border="1" cellpadding="3" cellspacing="0" width="100%"> <tr bgcolor="#CCCCFF" class="TableHeadingColor"> <td colspan=2><font size="+2"> <b>Class Summary</b> </font></td> </tr> <tr bgcolor="white" class="TableRowColor"> <td width="15%"><b><a href="Zapatec/GridToolbar.html">Zapatec.GridToolbar</a></b></td> <td> </td> </tr> <tr bgcolor="white" class="TableRowColor"> <td width="15%"><b><a href="Zapatec/GridToolbarMenu.html">Zapatec.GridToolbarMenu</a></b></td> <td> </td> </tr> <tr bgcolor="white" class="TableRowColor"> <td width="15%"><b><a href="Zapatec/GridToolbarSlider.html">Zapatec.GridToolbarSlider</a></b></td> <td> </td> </tr> </table> <hr/> <!-- ========== METHOD SUMMARY =========== --> <!-- ========== END METHOD SUMMARY =========== --> <pre class="sourceview"><span class="comment">/** * <span class="attrib">@fileoverview</span> Zapatec Grid Toolbar Demo Widget extension. Based on this demo * extension you can create more complex control panels. * * <pre> * Copyright (c) 2004-2007 by Zapatec, Inc. * http://www.zapatec.com * 1700 MLK Way, Berkeley, California, * 94709, U.S.A. * All rights reserved. * </pre> */</span> <span class="comment">/* $Id: zpgrid-toolbar.js 7593 2007-07-24 10:11:45Z alex $ */</span> <span class="comment">/** * Grid Toolbar extension. * * <pre> * Note: zpgrid-core.js must be included before this module. If plugin modules * like zpgrid-xml.js are used, they must be included before this module as * well. * * This extension requires Zapatec Menu, Window and Slider Widgets to be * included. * * <strong>Adds following config options:</strong> * * <b>menuSource</b> Value that will be passed to the Menu as <b>source</b> * config option. * * <b>menuSourceType</b> Value that will be passed to the Menu as * <b>sourceType</b> config option. * * <b>menuContainer</b> [string] Value that will be passed to the Menu as * <b>container</b> config option. * * <b>menuTheme</b> [string] Theme name that will be passed to the Menu. * Default: 'default'. * * <b>menuRangeUl</b> [string] Id of the ul element where to insert li elements * for "Range" sub-menu. * * <b>menuFilterOutUl</b> [string] Id of the ul element where to insert li * elements for "Filter Out" sub-menu. * * <b>dialogSort</b> [string] Id of the div element where to get content for * dialog "Sort". Select elements with ids dialogSort + "Column1", * dialogSort + "Column2", dialogSort + "Column3" and radio input elements with * ids dialogSort + "Column1Desc", dialogSort + "Column2Desc", * dialogSort + "Column3Desc" must be present on the page. * * <b>dialogGoToRow</b> [string] Id of the div element where to get content for * dialog "Go to Row". * * <b>dialogSearch</b> [string] Id of the div element where to get content for * dialog "Search". Div element with id dialogSearch + "Checkboxes" must be * present on the page. * * <b>dialogRange</b> [string] Id of the div element where to put "Range" * dialogs. * * <b>dialogFilterOut</b> [string] Id of the div element where to put * "Filter Out" dialogs. * * <b>dialogShow</b> [string] Id of the div element where to get content for * dialog "Show". Div element with id dialogShow + "Checkboxes" must be present * on the page. * </pre> * * <span class="attrib">@constructor</span> * <span class="attrib">@extends</span> Zapatec.Grid * <span class="attrib">@param</span> {object} oArg User configuration */</span> Zapatec.GridToolbar = <span class="reserved">function</span>(oArg) { <span class="comment">// Call constructor of superclass</span> Zapatec.GridToolbar.SUPERconstructor.call(<span class="reserved">this</span>, oArg); }; <span class="comment">// Inherit Grid</span> Zapatec.inherit(Zapatec.GridToolbar, Zapatec.Grid); <span class="comment">/** * Configures the widget. Gets called from init and reconfigure methods of * superclass. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {object} oArg User configuration */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.configure = <span class="reserved">function</span>(oArg) { <span class="comment">// Define new config options</span> <span class="reserved">this</span>.defineConfigOption(<span class="literal">'menuSource'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'menuSourceType'</span>, <span class="literal">'html'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'menuContainer'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'menuTheme'</span>, <span class="literal">'default'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'menuRangeUl'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'menuFilterOutUl'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'dialogSort'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'dialogGoToRow'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'dialogSearch'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'dialogRange'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'dialogFilterOut'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'dialogShow'</span>); <span class="comment">// Call parent method</span> Zapatec.GridToolbar.SUPERclass.configure.call(<span class="reserved">this</span>, oArg); }; <span class="comment">/** * Extends parent method. * <span class="attrib">@private</span> */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.addStandardEventListeners = <span class="reserved">function</span>() { <span class="comment">// Call parent method</span> Zapatec.GridToolbar.SUPERclass.addStandardEventListeners.call(<span class="reserved">this</span>); <span class="comment">// Resize menu when grid is refreshed</span> <span class="reserved">this</span>.addEventListener(<span class="literal">'gridRefreshed'</span>, <span class="reserved">this</span>.syncToolbar); <span class="comment">// Resize menu when grid column is resized</span> <span class="reserved">this</span>.addEventListener(<span class="literal">'gridResizedColumn'</span>, <span class="reserved">this</span>.syncToolbar); }; <span class="comment">/** * Synchronizes toolbar width with grid. * <span class="attrib">@private</span> */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.syncToolbar = <span class="reserved">function</span>() { <span class="comment">// Resize menu</span> <span class="reserved">this</span>.menu.fitIntoContainer(); }; <span class="comment">/** * Displays toolbar after grid initialization. * <span class="attrib">@private</span> */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.show = <span class="reserved">function</span>() { <span class="comment">// Call parent method</span> Zapatec.GridToolbar.SUPERclass.show.call(<span class="reserved">this</span>); <span class="comment">// Get number of columns in the Grid</span> var iCols = <span class="reserved">this</span>.getFields().length; <span class="comment">// Range dialog containers will be placed here</span> var oRangeContainer = document.getElementById(<span class="reserved">this</span>.config.dialogRange); <span class="comment">// Holds Range dialog objects.</span> <span class="reserved">this</span>.dialogsRange = []; <span class="comment">// Form ranges</span> <span class="reserved">for</span> (var iCol = 0; iCol < iCols; iCol++) { <span class="comment">// Get range</span> var oRange = <span class="reserved">this</span>.getColumnRange({column: iCol}); <span class="comment">// Check if range is meaningful for Slider</span> <span class="reserved">if</span> (!oRange || isNaN(oRange.min) || isNaN(oRange.max)) { continue; } <span class="comment">// Add dialog container</span> oRangeContainer.innerHTML += <span class="literal">'<div id="'</span> + <span class="reserved">this</span>.config.dialogRange + iCol + <span class="literal">'" class="zpGridToolbarDialog"><div id="'</span> + <span class="reserved">this</span>.config.dialogRange + iCol + <span class="literal">'Slider"></div><div id="'</span> + <span class="reserved">this</span>.config.dialogRange + iCol + <span class="literal">'Range" style="text-align: center">'</span> + oRange.minValue + <span class="literal">' - '</span> + oRange.maxValue + <span class="literal">'</div></div>'</span>; <span class="comment">// Create dialog window</span> <span class="reserved">this</span>.dialogsRange[iCol] = Zapatec.GridToolbar.createDialog({ <span class="comment">// Window dimensions</span> width: 250, height: 80, <span class="comment">// Take window content from the div</span> divContent: <span class="reserved">this</span>.config.dialogRange + iCol, <span class="comment">// Window title</span> title: <span class="literal">'Range'</span> }); } <span class="comment">// Filter Out dialog containers will be placed here</span> var oFilterOutContainer = document.getElementById(<span class="reserved">this</span>.config.dialogFilterOut); <span class="comment">// Holds Filter Out dialog objects.</span> <span class="reserved">this</span>.dialogsFilterOut = []; <span class="comment">// Form filter outs</span> <span class="reserved">for</span> (var iCol = 0; iCol < iCols; iCol++) { <span class="comment">// Add dialog container</span> oFilterOutContainer.innerHTML += <span class="literal">'<div id="'</span> + <span class="reserved">this</span>.config.dialogFilterOut + iCol + <span class="literal">'" class="zpGridToolbarDialog"></div>'</span>; <span class="comment">// Create dialog window</span> <span class="reserved">this</span>.dialogsFilterOut[iCol] = Zapatec.GridToolbar.createDialog({ <span class="comment">// Window dimensions</span> width: 200, height: 210, <span class="comment">// Take window content from the div</span> divContent: <span class="reserved">this</span>.config.dialogFilterOut + iCol, <span class="comment">// Window title</span> title: <span class="literal">'Filter Out'</span> }); <span class="comment">// Add filter out to the Grid</span> <span class="reserved">this</span>.addFilterOut({ column: iCol, container: <span class="reserved">this</span>.config.dialogFilterOut + iCol }); } <span class="comment">// Display filter outs</span> <span class="reserved">this</span>.displayFilterOut(); <span class="comment">// Fill uls</span> <span class="reserved">this</span>.fillUlWithColumns(<span class="reserved">this</span>.config.menuRangeUl, <span class="reserved">this</span>.dialogsRange); <span class="reserved">this</span>.fillUlWithColumns(<span class="reserved">this</span>.config.menuFilterOutUl, <span class="reserved">this</span>.dialogsFilterOut); <span class="comment">// Fill select boxes</span> <span class="reserved">this</span>.fillSelectWithColumns(<span class="reserved">this</span>.config.dialogSort + <span class="literal">'Column1'</span>); <span class="reserved">this</span>.fillSelectWithColumns(<span class="reserved">this</span>.config.dialogSort + <span class="literal">'Column2'</span>); <span class="reserved">this</span>.fillSelectWithColumns(<span class="reserved">this</span>.config.dialogSort + <span class="literal">'Column3'</span>); <span class="comment">// Form checkboxes</span> <span class="reserved">this</span>.fillDivWithColumns(<span class="reserved">this</span>.config.dialogSearch + <span class="literal">'Checkboxes'</span>); <span class="reserved">this</span>.fillDivWithColumns(<span class="reserved">this</span>.config.dialogShow + <span class="literal">'Checkboxes'</span>); <span class="comment">// Initialize Sort window</span> <span class="reserved">this</span>.dialogSort = Zapatec.GridToolbar.createDialog({ <span class="comment">// Window dimensions</span> width: 275, height: 270, <span class="comment">// Take window content from the div</span> divContent: <span class="reserved">this</span>.config.dialogSort, <span class="comment">// Window title</span> title: <span class="literal">'Sort'</span> }); <span class="comment">// Initialize Go to Row window</span> <span class="reserved">this</span>.dialogGoToRow = Zapatec.GridToolbar.createDialog({ <span class="comment">// Window dimensions</span> width: 180, height: 80, <span class="comment">// Take window content from the div</span> divContent: <span class="reserved">this</span>.config.dialogGoToRow, <span class="comment">// Window title</span> title: <span class="literal">'Go to Row'</span> }); <span class="comment">// Initialize Search window</span> <span class="reserved">this</span>.dialogSearch = Zapatec.GridToolbar.createDialog({ <span class="comment">// Window dimensions</span> width: 200, height: 290, <span class="comment">// Take window content from the div</span> divContent: <span class="reserved">this</span>.config.dialogSearch, <span class="comment">// Window title</span> title: <span class="literal">'Search'</span> }); <span class="comment">// Initialize Show window</span> <span class="reserved">this</span>.dialogShow = Zapatec.GridToolbar.createDialog({ <span class="comment">// Window dimensions</span> width: 200, height: 250, <span class="comment">// Take window content from the div</span> divContent: <span class="reserved">this</span>.config.dialogShow, <span class="comment">// Window title</span> title: <span class="literal">'Show'</span> }); <span class="comment">// Initialize menu</span> <span class="reserved">this</span>.menu = new Zapatec.GridToolbarMenu({ source: <span class="reserved">this</span>.config.menuSource, sourceType: <span class="reserved">this</span>.config.menuSourceType, container: <span class="reserved">this</span>.config.menuContainer, theme: <span class="reserved">this</span>.config.menuTheme, <span class="comment">// To prevent going of menu under the grid when grid is mouseovered</span> zIndex: 10, <span class="comment">// Bind menu to the grid</span> grid: <span class="reserved">this</span> }); }; <span class="comment">/** * Fills ul with grid's column titles. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {string} sId Id of ul element * <span class="attrib">@param</span> {object} aWindows Array of Window objects */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.fillUlWithColumns = <span class="reserved">function</span>(sId, aWindows) { <span class="comment">// Get ul</span> var oUl = document.getElementById(sId); <span class="reserved">if</span> (!oUl) { <span class="reserved">return</span>; } <span class="comment">// Form lis</span> var aLis = []; <span class="comment">// Get fields</span> var aFields = <span class="reserved">this</span>.getFields(); <span class="reserved">for</span> (var iField = 0; iField < aFields.length; iField++) { <span class="comment">// Check if Window object exists</span> <span class="reserved">if</span> (!aWindows[iField]) { continue; } <span class="comment">// Add li element</span> aLis.push(<span class="literal">'<li><a href="javascript:Zapatec.Widget.callMethod('</span> + <span class="reserved">this</span>.getId() + <span class="literal">',\'</span>showDialog\<span class="literal">',\'</span><span class="literal">' + sId + '</span>\<span class="literal">','</span> + iField + <span class="literal">')">'</span> + <span class="reserved">this</span>.getFieldTitle(aFields[iField]) + <span class="literal">'</a></li>'</span>); } <span class="comment">// Fill ul</span> oUl.innerHTML = aLis.join(<span class="literal">''</span>); }; <span class="comment">/** * Fills select box with grid's column titles. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {string} sId Id of select element */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.fillSelectWithColumns = <span class="reserved">function</span>(sId) { <span class="comment">// Get select box</span> var oSelect = document.getElementById(sId); <span class="reserved">if</span> (!oSelect) { <span class="reserved">return</span>; } <span class="comment">// Form options</span> var aOptions = []; aOptions.push(<span class="literal">'<select id="'</span> + sId + <span class="literal">'">'</span>); aOptions.push(<span class="literal">'<option value="-1" selected>(do not sort)</option>'</span>); <span class="comment">// Get fields</span> var aFields = <span class="reserved">this</span>.getFields(); <span class="reserved">for</span> (var iField = 0; iField < aFields.length; iField++) { aOptions.push(<span class="literal">'<option value="'</span> + iField + <span class="literal">'">'</span> + <span class="reserved">this</span>.getFieldTitle(aFields[iField]) + <span class="literal">'</option>'</span>); } aOptions.push(<span class="literal">'</select>'</span>); <span class="comment">// In IE innerHTML of select element doesn't work correctly</span> oSelect.parentNode.innerHTML = aOptions.join(<span class="literal">''</span>); }; <span class="comment">/** * Fills div with grid's column titles with checkboxes. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {string} sId Id of div element */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.fillDivWithColumns = <span class="reserved">function</span>(sId) { <span class="comment">// Get div</span> var oDiv = document.getElementById(sId); <span class="reserved">if</span> (!oDiv) { <span class="reserved">return</span>; } <span class="comment">// Form checkboxes</span> var aCheckboxes = []; <span class="comment">// "All" checkbox</span> aCheckboxes.push(<span class="literal">'<input type="checkbox" id="'</span> + sId + <span class="literal">'All" checked="checked" onclick="Zapatec.GridToolbar.checkAll(\'</span><span class="literal">' + sId + '</span>\<span class="literal">', this.checked)"/> <label for="'</span> + sId + <span class="literal">'All">All</label><br/>'</span>); <span class="comment">// Get fields</span> var aFields = <span class="reserved">this</span>.getFields(); <span class="reserved">for</span> (var iField = 0; iField < aFields.length; iField++) { aCheckboxes.push(<span class="literal">'<input type="checkbox" id="'</span> + sId + iField + <span class="literal">'" checked="checked" onclick="Zapatec.GridToolbar.setAllCheckbox(\'</span><span class="literal">' + sId + '</span>\<span class="literal">', false)"/> <label for="'</span> + sId + iField + <span class="literal">'">'</span> + <span class="reserved">this</span>.getFieldTitle(aFields[iField]) + <span class="literal">'</label><br/>'</span>); } <span class="comment">// Fill div</span> oDiv.innerHTML = aCheckboxes.join(<span class="literal">''</span>); }; <span class="comment">/** * Creates dialog window with predefined common options. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {object} oArg Arguments passed to the Window constructor * <span class="attrib">@return</span> Window object * <span class="attrib">@type</span> object */</span> Zapatec.GridToolbar.createDialog = <span class="reserved">function</span>(oArg) { <span class="comment">// Disable maximize and minimize buttons</span> oArg.showMaxButton = false; oArg.showMinButton = false; <span class="comment">// Disable status bar</span> oArg.showStatus = false; <span class="comment">// Initially hide</span> oArg.initialState = <span class="literal">'hidden'</span>; <span class="comment">// Do not destroy window on close</span> oArg.hideOnClose = true; <span class="comment">// Create Window object</span> <span class="reserved">return</span> Zapatec.Window.setup(oArg); }; <span class="comment">/** * Shows Sort dialog. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.showDialogSort = <span class="reserved">function</span>() { <span class="reserved">if</span> (<span class="reserved">this</span>.dialogSort) { <span class="reserved">this</span>.dialogSort.show(); } }; <span class="comment">/** * Hides Sort dialog. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.hideDialogSort = <span class="reserved">function</span>() { <span class="reserved">if</span> (<span class="reserved">this</span>.dialogSort) { <span class="reserved">this</span>.dialogSort.hide(); } }; <span class="comment">/** * Shows Go to Row dialog. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.showDialogGoToRow = <span class="reserved">function</span>() { <span class="reserved">if</span> (<span class="reserved">this</span>.dialogGoToRow) { <span class="reserved">this</span>.dialogGoToRow.show(); } } <span class="comment">/** * Hides Go to Row dialog. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.hideDialogGoToRow = <span class="reserved">function</span>() { <span class="reserved">if</span> (<span class="reserved">this</span>.dialogGoToRow) { <span class="reserved">this</span>.dialogGoToRow.hide(); } }; <span class="comment">/** * Shows Search dialog. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.showDialogSearch = <span class="reserved">function</span>() { <span class="reserved">if</span> (<span class="reserved">this</span>.dialogSearch) { <span class="reserved">this</span>.dialogSearch.show(); } }; <span class="comment">/** * Hides Search dialog. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.hideDialogSearch = <span class="reserved">function</span>() { <span class="reserved">if</span> (<span class="reserved">this</span>.dialogSearch) { <span class="reserved">this</span>.dialogSearch.hide(); } }; <span class="comment">/** * Shows Show dialog. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.showDialogShow = <span class="reserved">function</span>() { <span class="reserved">if</span> (!<span class="reserved">this</span>.dialogShow) { <span class="reserved">return</span>; } <span class="comment">// Update checkboxes</span> var iCheckbox = 0; var bAllChecked = true; var oCheckbox; <span class="reserved">while</span> (oCheckbox = document.getElementById(<span class="reserved">this</span>.config.dialogShow + <span class="literal">'Checkboxes'</span> + iCheckbox)) { <span class="comment">// Get field object</span> var oField = <span class="reserved">this</span>.getFieldById(iCheckbox); <span class="comment">// Check if it is hidden</span> <span class="reserved">if</span> (oField && <span class="reserved">this</span>.getFieldHidden(oField)) { <span class="comment">// Hidden column</span> oCheckbox.checked = false; bAllChecked = false; } <span class="reserved">else</span> { <span class="comment">// Visible column</span> oCheckbox.checked = true; } <span class="comment">// Next checkbox</span> iCheckbox++; } <span class="comment">// Check "All" checkbox</span> Zapatec.GridToolbar.setAllCheckbox(<span class="reserved">this</span>.config.dialogShow + <span class="literal">'Checkboxes'</span>, bAllChecked); <span class="comment">// Show window</span> <span class="reserved">this</span>.dialogShow.show(); }; <span class="comment">/** * Hides Show dialog. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.hideDialogShow = <span class="reserved">function</span>() { <span class="reserved">if</span> (<span class="reserved">this</span>.dialogShow) { <span class="reserved">this</span>.dialogShow.hide(); } }; <span class="comment">/** * Converts number of milliseconds since January 1, 1970, 00:00:00.000 into * a date string in MM/DD/YY format. * * <span class="attrib">@param</span> {number} iTimestamp Milliseconds since 01/01/1970 00:00:00.000 * <span class="attrib">@return</span> Date * <span class="attrib">@type</span> string */</span> Zapatec.GridToolbar.rangeConverterDate = <span class="reserved">function</span>(iTimestamp) { var oDate = new Date(Math.round(iTimestamp)); var sMonth = oDate.getMonth() + 1; <span class="reserved">if</span> (sMonth < 10) { sMonth = <span class="literal">'0'</span> + sMonth; } var sDay = oDate.getDate(); <span class="reserved">if</span> (sDay < 10) { sDay = <span class="literal">'0'</span> + sDay; } var sYear = oDate.getYear(); <span class="reserved">if</span> (sYear < 1900) { sYear += 1900; } sYear += <span class="literal">''</span>; sYear = sYear.substr(2); <span class="reserved">return</span> sMonth + <span class="literal">'/'</span> + sDay + <span class="literal">'/'</span> + sYear; }; <span class="comment">/** * Sets precision float numbers. * * <span class="attrib">@param</span> {number} dNumber Float number * <span class="attrib">@return</span> Float number * <span class="attrib">@type</span> number */</span> Zapatec.GridToolbar.rangeConverterFloat = <span class="reserved">function</span>(dNumber) { <span class="comment">// Set precision</span> <span class="reserved">return</span> Zapatec.Utils.setPrecision(dNumber, 2); }; <span class="comment">/** * Used to find range converter function by column data type. * <span class="attrib">@private</span> */</span> Zapatec.GridToolbar.rangeConverters = { <span class="literal">'date'</span>: Zapatec.GridToolbar.rangeConverterDate, <span class="literal">'float'</span>: Zapatec.GridToolbar.rangeConverterFloat }; <span class="comment">/** * Shows Range or Filter Out dialog. * * <span class="attrib">@param</span> {string} sId Id of ul element to determine dialog type * <span class="attrib">@param</span> {number} iCol Zero-based column number */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.showDialog = <span class="reserved">function</span>(sId, iCol) { <span class="comment">// Get dialog depending on its type</span> var oDialog; <span class="reserved">if</span> (sId == <span class="reserved">this</span>.config.menuRangeUl) { oDialog = <span class="reserved">this</span>.dialogsRange[iCol]; } <span class="reserved">else</span> <span class="reserved">if</span> (sId == <span class="reserved">this</span>.config.menuFilterOutUl) { oDialog = <span class="reserved">this</span>.dialogsFilterOut[iCol]; } <span class="reserved">if</span> (!oDialog) { <span class="reserved">return</span>; } <span class="comment">// Show dialog</span> oDialog.show(); <span class="comment">// Initialize Slider if this is Range dialog</span> <span class="reserved">if</span> (sId == <span class="reserved">this</span>.config.menuRangeUl) { <span class="comment">// Get range</span> var oRange = <span class="reserved">this</span>.getColumnRange({column: iCol}); <span class="reserved">if</span> (oRange) { <span class="reserved">if</span> (!<span class="reserved">this</span>.sliders) { <span class="comment">// Holds Slider objects</span> <span class="reserved">this</span>.sliders = []; } <span class="reserved">if</span> (<span class="reserved">this</span>.sliders[iCol]) { <span class="comment">// Update Slider</span> <span class="reserved">this</span>.sliders[iCol].reset(oRange.min, oRange.max); } <span class="reserved">else</span> { <span class="comment">// Initialize Slider</span> <span class="reserved">this</span>.sliders[iCol] = new Zapatec.GridToolbarSlider({ div: <span class="reserved">this</span>.config.dialogRange + iCol + <span class="literal">'Slider'</span>, length: 200, dual: true, orientation: <span class="literal">'H'</span>, step: (oRange.max - oRange.min) / 200, range: [oRange.min, oRange.max], <span class="comment">// Bind slider to the grid column</span> grid: <span class="reserved">this</span>, gridColumn: iCol, <span class="comment">// Bind range container div to the slider</span> rangeContainer: <span class="reserved">this</span>.config.dialogRange + iCol + <span class="literal">'Range'</span>, <span class="comment">// Bind range conversion callback to the slider</span> rangeConverter: Zapatec.GridToolbar.rangeConverters[ <span class="reserved">this</span>.getFieldType(<span class="reserved">this</span>.getFieldById(iCol))], <span class="comment">// Add some event listeners</span> eventListeners: { <span class="literal">'onChange'</span>: Zapatec.GridToolbarSlider.onChange, <span class="literal">'newPosition'</span>: Zapatec.GridToolbarSlider.newPosition } }); } } } }; <span class="comment">/** * Sorts the grid by several columns. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.multiSort = <span class="reserved">function</span>() { <span class="comment">// Hide dialog window</span> <span class="reserved">this</span>.hideDialogSort(); <span class="comment">// Sorted flag</span> var bSorted = false; <span class="comment">// Form argument for sort</span> var aArg = []; <span class="reserved">for</span> (var iSel = 1; iSel <= 3; iSel++) { var oSelect = document.getElementById(<span class="reserved">this</span>.config.dialogSort + <span class="literal">'Column'</span> + iSel); <span class="reserved">if</span> (!oSelect) { continue; } var iCol = oSelect[oSelect.selectedIndex].value; <span class="reserved">if</span> (iCol >= 0) { var oDesc = document.getElementById(<span class="reserved">this</span>.config.dialogSort + <span class="literal">'Column'</span> + iSel + <span class="literal">'Desc'</span>); <span class="reserved">if</span> (!oDesc) { continue; } aArg.push({ column: iCol, desc: oDesc.checked }); } } <span class="comment">// Sort and refresh grid</span> <span class="reserved">if</span> (aArg.length) { <span class="reserved">this</span>.sort(aArg); <span class="reserved">this</span>.refresh(); } }; <span class="comment">/** * Goes to the first row. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.goToFirstRow = <span class="reserved">function</span>() { Zapatec.Grid.firstPage(<span class="reserved">this</span>.getId()); }; <span class="comment">/** * Goes to the last row. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.goToLastRow = <span class="reserved">function</span>() { Zapatec.Grid.lastPage(<span class="reserved">this</span>.getId()); }; <span class="comment">/** * Goes to the specified row. * * <span class="attrib">@param</span> {number} iRow Row number (starting from 1) */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.goToRowNumber = <span class="reserved">function</span>(iRow) { <span class="comment">// Check row number</span> iRow *= 1; <span class="reserved">if</span> (isNaN(iRow)) { alert(<span class="reserved">this</span>.getMessage(<span class="literal">'errorInvalidInput'</span>)); <span class="reserved">return</span>; } <span class="comment">// Hide dialog window</span> <span class="reserved">this</span>.hideDialogGoToRow(); <span class="comment">// Grid counts rows starting from 0</span> iRow--; <span class="comment">// Get total row number</span> var iTotalRows = <span class="reserved">this</span>.recordsDisplayed(); <span class="comment">// Get total page number</span> var iTotalPages = <span class="reserved">this</span>.totalPages(); <span class="comment">// Calculate page number</span> var iPage; <span class="reserved">if</span> (iRow >= iTotalRows) { iPage = iTotalPages - 1; } <span class="reserved">else</span> { iPage = Math.floor(iRow / <span class="reserved">this</span>.config.rowsPerPage); } <span class="comment">// Go to the page</span> <span class="reserved">this</span>.gotoPage(iPage); }; <span class="comment">/** * Searches grid. * * <span class="attrib">@param</span> {string} sPattern Search pattern * <span class="attrib">@param</span> {boolean} bRegExp Use regular expression */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.searchColumns = <span class="reserved">function</span>(sPattern, bRegExp) { <span class="comment">// Hide dialog window</span> <span class="reserved">this</span>.hideDialogSearch(); <span class="comment">// Check state of each checkbox</span> var iCheckbox = 0; var oCheckbox; var aChecked = []; <span class="reserved">while</span> (oCheckbox = document.getElementById(<span class="reserved">this</span>.config.dialogSearch + <span class="literal">'Checkboxes'</span> + iCheckbox)) { <span class="reserved">if</span> (oCheckbox.checked) { aChecked.push(iCheckbox); } iCheckbox++; } <span class="comment">// Clear previous search</span> <span class="reserved">this</span>.setFilter({ regexp: <span class="literal">''</span>, text: <span class="literal">''</span> }); <span class="comment">// Search grid</span> <span class="reserved">if</span> (bRegExp) { <span class="reserved">this</span>.setFilter({ regexp: sPattern, columns: aChecked }); } <span class="reserved">else</span> { <span class="reserved">this</span>.setFilter({ text: sPattern, columns: aChecked }); } }; <span class="comment">/** * Shows or hides grid columns. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.showHideColumns = <span class="reserved">function</span>() { <span class="comment">// Hide dialog window</span> <span class="reserved">this</span>.hideDialogShow(); <span class="comment">// Check state of each checkbox</span> var iCheckbox = 0; var oCheckbox; <span class="reserved">while</span> (oCheckbox = document.getElementById(<span class="reserved">this</span>.config.dialogShow + <span class="literal">'Checkboxes'</span> + iCheckbox)) { <span class="reserved">if</span> (oCheckbox.checked) { <span class="comment">// Show column</span> <span class="reserved">this</span>.showColumns({ <span class="comment">// Columns to show</span> columns: [iCheckbox], <span class="comment">// Do not show changes immediatly</span> noRefresh: true }); } <span class="reserved">else</span> { <span class="comment">// Hide column</span> <span class="reserved">this</span>.hideColumns({ <span class="comment">// Columns to hide</span> columns: [iCheckbox], <span class="comment">// Do not show changes immediatly</span> noRefresh: true }); } iCheckbox++; } <span class="comment">// Show changes</span> <span class="reserved">this</span>.refresh(); }; <span class="comment">/** * Removes all filters from the grid. */</span> Zapatec.GridToolbar.<span class="reserved">prototype</span>.resetControls = <span class="reserved">function</span>() { <span class="comment">// Unhide all columns</span> var iCols = <span class="reserved">this</span>.getFields().length; var aCols = []; <span class="reserved">for</span> (var iCol = 0; iCol < iCols; iCol++) { aCols.push(iCol); } <span class="reserved">this</span>.showColumns({ columns: aCols, noRefresh: true }); <span class="comment">// Reset all sliders</span> <span class="reserved">for</span> (var iWidget = 0; iWidget < Zapatec.Widget.all.length; iWidget++) { var oWidget = Zapatec.Widget.all[iWidget]; <span class="reserved">if</span> (oWidget.constructor == Zapatec.Slider) { oWidget.setPos(oWidget.config.range[0], oWidget.config.range[1]); } } <span class="comment">// Reset all filters</span> <span class="reserved">this</span>.resetFilters(); }; <span class="comment">/** * Checks or unchecks checkbox set. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {string} sId Common part of id for all checkboxes * <span class="attrib">@param</span> {boolean} bChecked Check all if true, uncheck otherwise */</span> Zapatec.GridToolbar.checkAll = <span class="reserved">function</span>(sId, bChecked) { var iCheckbox = 0; var oCheckbox; <span class="reserved">while</span> (oCheckbox = document.getElementById(sId + iCheckbox)) { oCheckbox.checked = bChecked; iCheckbox++; } }; <span class="comment">/** * Checks or unchecks "All" checkbox. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {string} sId Common part of id for all checkboxes * <span class="attrib">@param</span> {boolean} bChecked Check all if true, uncheck otherwise */</span> Zapatec.GridToolbar.setAllCheckbox = <span class="reserved">function</span>(sId, bChecked) { document.getElementById(sId + <span class="literal">'All'</span>).checked = bChecked; }; <span class="comment">/** * Customized Menu for Grid Toolbar. * * <pre> * <strong>Adds following config options:</strong> * * <b>grid</b> [object] Reference to the Grid object. * </pre> * * <span class="attrib">@constructor</span> * <span class="attrib">@extends</span> Zapatec.Menu * <span class="attrib">@param</span> {object} oArg User configuration */</span> Zapatec.GridToolbarMenu = <span class="reserved">function</span>(oArg) { <span class="comment">// Call constructor of superclass</span> Zapatec.GridToolbarMenu.SUPERconstructor.call(<span class="reserved">this</span>, oArg); }; <span class="comment">// Inherit Menu</span> Zapatec.inherit(Zapatec.GridToolbarMenu, Zapatec.Menu, {keepPath: true}); <span class="comment">/** * Configures the widget. Gets called from init and reconfigure methods of * superclass. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {object} oArg User configuration */</span> Zapatec.GridToolbarMenu.<span class="reserved">prototype</span>.configure = <span class="reserved">function</span>(oArg) { <span class="comment">// Define new config options</span> <span class="reserved">this</span>.defineConfigOption(<span class="literal">'grid'</span>); <span class="comment">// Call parent method</span> Zapatec.GridToolbarMenu.SUPERclass.configure.call(<span class="reserved">this</span>, oArg); }; <span class="comment">/** * Sets initial position of dialog windows after menu is shown. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {number} iLeft Optional. Left position of trigger menu * <span class="attrib">@param</span> {number} iTop Optional. Top position of trigger menu */</span> Zapatec.GridToolbarMenu.<span class="reserved">prototype</span>.showMenu = <span class="reserved">function</span>() { <span class="comment">// Call parent init</span> Zapatec.GridToolbarMenu.SUPERclass.showMenu.apply(<span class="reserved">this</span>, arguments); <span class="comment">// Resize menu</span> <span class="reserved">this</span>.fitIntoContainer(); <span class="comment">// Check configuration</span> <span class="reserved">if</span> (!<span class="reserved">this</span>.config.grid) { <span class="reserved">return</span>; } <span class="comment">// Get top menu element</span> var oMenuTop = <span class="reserved">this</span>.top_parent; <span class="comment">// Calculate menu border height</span> var iBorderHeight = oMenuTop.offsetHeight - oMenuTop.clientHeight; <span class="comment">// Get menu container absolute position and dimensions</span> var oMenuOffset = Zapatec.Utils.getElementOffset(oMenuTop); <span class="comment">// Calculate left position</span> var iLeft = oMenuOffset.left; <span class="comment">// Calculate top position</span> var iTop = oMenuOffset.top + oMenuTop.offsetHeight + iBorderHeight; <span class="comment">// List of dialogs to modify</span> var aDialogs = [ <span class="reserved">this</span>.config.grid.dialogSort, <span class="reserved">this</span>.config.grid.dialogGoToRow, <span class="reserved">this</span>.config.grid.dialogSearch, <span class="reserved">this</span>.config.grid.dialogShow ]; <span class="comment">// Append range dialogs</span> aDialogs = aDialogs.concat(<span class="reserved">this</span>.config.grid.dialogsRange); <span class="comment">// Append filter out dialogs</span> aDialogs = aDialogs.concat(<span class="reserved">this</span>.config.grid.dialogsFilterOut); <span class="comment">// Pass additional options to each window object</span> <span class="reserved">for</span> (var iDialog = 0; iDialog < aDialogs.length; iDialog++) { <span class="reserved">if</span> (aDialogs[iDialog]) { aDialogs[iDialog].setState({ <span class="comment">// Window left position</span> x: iLeft, <span class="comment">// Window top position</span> y: iTop, <span class="comment">// Prevent appearing of dialog under the menu (menu still can appear</span> <span class="comment">// above the window when it is mouseovered)</span> zIndex: 20 }); } } }; <span class="comment">/** * Fits menu into its container to synchronize it with grid. * <span class="attrib">@private</span> */</span> Zapatec.GridToolbarMenu.<span class="reserved">prototype</span>.fitIntoContainer = <span class="reserved">function</span>() { <span class="comment">// Get top menu element</span> var oMenuTop = <span class="reserved">this</span>.top_parent; <span class="reserved">if</span> (!oMenuTop) { <span class="comment">// Menu is not ready yet</span> <span class="reserved">return</span>; } <span class="comment">// Get menu container element</span> var oMenuContainer = oMenuTop.parentNode; <span class="reserved">if</span> (!oMenuContainer) { <span class="comment">// Menu is not ready yet</span> <span class="reserved">return</span>; } oMenuContainer = oMenuContainer.parentNode; <span class="reserved">if</span> (!oMenuContainer || !oMenuContainer.clientWidth) { <span class="comment">// Something wrong</span> <span class="reserved">return</span>; } <span class="comment">// Reset menu width</span> oMenuTop.style.width = <span class="literal">''</span>; <span class="comment">// Calculate menu border width</span> var iBorderWidth = oMenuTop.offsetWidth - oMenuTop.clientWidth; <span class="comment">// Calculate new width of menu</span> oMenuTop.style.width = (oMenuContainer.clientWidth - iBorderWidth) + <span class="literal">'px'</span>; <span class="comment">// Check width</span> <span class="reserved">if</span> (oMenuContainer.clientWidth != oMenuTop.offsetWidth) { <span class="comment">// May be in IE in non standards-compliant mode</span> oMenuTop.style.width = oMenuContainer.clientWidth + <span class="literal">'px'</span>; } <span class="comment">// Correct top menu style</span> oMenuTop.style.background = <span class="literal">'#e7e7d6'</span>; }; <span class="comment">/** * Customized Slider for Grid Toolbar. * * <pre> * <strong>Adds following config options:</strong> * * <b>grid</b> [object] Reference to the Grid object. * * <b>gridColumn</b> [number] Grid column number. * * <b>rangeContainer</b> [string] Id of the element where to put range text. * * <b>rangeConverter</b> [function] Optional. Callback function to convert range * when it is displayed. * </pre> * * <span class="attrib">@constructor</span> * <span class="attrib">@extends</span> Zapatec.Slider * <span class="attrib">@param</span> {object} oArg User configuration */</span> Zapatec.GridToolbarSlider = <span class="reserved">function</span>(oArg) { <span class="comment">// Call constructor of superclass</span> Zapatec.GridToolbarSlider.SUPERconstructor.call(<span class="reserved">this</span>, oArg); }; <span class="comment">// Inherit Menu</span> Zapatec.inherit(Zapatec.GridToolbarSlider, Zapatec.Slider, {keepPath: true}); <span class="comment">/** * Configures the widget. Gets called from init and reconfigure methods of * superclass. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {object} oArg User configuration */</span> Zapatec.GridToolbarSlider.<span class="reserved">prototype</span>.configure = <span class="reserved">function</span>(oArg) { <span class="comment">// Define new config options</span> <span class="reserved">this</span>.defineConfigOption(<span class="literal">'grid'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'gridColumn'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'rangeContainer'</span>); <span class="reserved">this</span>.defineConfigOption(<span class="literal">'rangeConverter'</span>); <span class="comment">// Call parent method</span> Zapatec.GridToolbarSlider.SUPERclass.configure.call(<span class="reserved">this</span>, oArg); }; <span class="comment">/** * Slider "onChange" event listener. Gets called when slider position is changed * programmatically. Gets called in scope of the Slider object. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {number} iMinValue Min value in the range * <span class="attrib">@param</span> {number} iMaxValue Max value in the range */</span> Zapatec.GridToolbarSlider.onChange = <span class="reserved">function</span>(iMinValue, iMaxValue) { <span class="reserved">if</span> (typeof <span class="reserved">this</span>.config.rangeConverter == <span class="literal">'function'</span>) { iMinValue = <span class="reserved">this</span>.config.rangeConverter(iMinValue); iMaxValue = <span class="reserved">this</span>.config.rangeConverter(iMaxValue); } <span class="reserved">else</span> { iMinValue = Math.round(iMinValue); iMaxValue = Math.round(iMaxValue); } <span class="comment">// Display scale</span> var oContainer = document.getElementById(<span class="reserved">this</span>.config.rangeContainer); <span class="reserved">if</span> (oContainer) { oContainer.innerHTML = iMinValue + <span class="literal">' - '</span> + iMaxValue; } }; <span class="comment">/** * Slider "newPosition" event listener. Gets called when slider is * drag-n-dropped. Gets called in scope of the Slider object. * * <span class="attrib">@private</span> * <span class="attrib">@param</span> {number} iMinValue Min value in the range * <span class="attrib">@param</span> {number} iMaxValue Max value in the range */</span> Zapatec.GridToolbarSlider.newPosition = <span class="reserved">function</span>(iMinValue, iMaxValue) { <span class="comment">// Update range container</span> Zapatec.GridToolbarSlider.onChange.call(<span class="reserved">this</span>, iMinValue, iMaxValue); <span class="comment">// Limit range of items</span> <span class="reserved">if</span> (<span class="reserved">this</span>.config.grid) { <span class="reserved">this</span>.config.grid.limitRange({ column: <span class="reserved">this</span>.config.gridColumn, min: iMinValue, max: iMaxValue }); } }; </pre> <hr> <!-- ========== START OF NAVBAR ========== --> <a name="navbar_top"><!-- --></a> <table border="0" width="100%" cellpadding="1" cellspacing="0"> <tr> <td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1"> <a name="navbar_top_firstrow"><!-- --></a> <table border="0" cellpadding="0" cellspacing="3"> <tr align="center" valign="top"> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a> </td> <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> <font class="NavBarFont1Rev"><b>File</b></font> </td> <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a> </td> <td bgcolor="#EEEEFF" class="NavBarCell1"> <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a> </td> </tr> </table> </td> <td bgcolor="#EEEEFF" align="right" valign="top"><em> <b>Zapatec Grid</b></em> </td> </tr> <tr> <td bgcolor="white" class="NavBarCell2"><font size="-2"> PREV NEXT</font></td> <td bgcolor="white" class="NavBarCell2"><font size="-2"> <a href="index.html" target="_top"><b>FRAMES</b></a> <a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a> <script> <!-- if(window==top) { document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>'); } //--> </script> <noscript> <a href="allclasses-noframe.html" target=""><b>All Classes</b></a> </noscript> </font></td> </tr> </table> <!-- =========== END OF NAVBAR =========== --> <hr> <font size="-1"> </font> <div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Thu Aug 16 12:18:56 2007</div> </body> </html>