Specifies the row indices and the row headers data.
+It defines which data rows and in which order should be requested
+from the data model for the grid display.
Generic base class for building and manipulating HTML markup.
+
Objects, which have visual representation, are most likely
+subclasses of this generic HTML class. It provides a set of
+functions to define attributes, inline styles, stylesheet
+selectors, DOM events and inner HTML content either as static
+properties or calls to the object’s methods. Direct or implicit
+call to ‘toString’ method returns properly formatted HTML
+markup string, which can be used in document.write() call or
+assigned to the page innerHTML property.
+
The two-way linking between original javascript object and
+it’s DOM counterpart is maintained through the use of unique ID for
+each object. This allows forwarding DOM events back to the
+proper javascript master object and, if necessary, updating
+the correct piece of HTML on the page.
The selector string is composed from the three parts - the prefix
+('active'), the name and the value, separated by the '-' character.
+Normally the object class string consists of several selectors
+separated by space.
+
Selector values are stored and inherited separately within the
+object. This function allows easy access to single selector
+value without parsing the whole class string.
+
The following example adds 'active-template-list' stylesheet
+selector to the object class.
Direct or implicit
+call to ‘toString’ method returns properly formatted HTML
+markup string, which can be used in document.write() call or
+assigned to the page innerHTML property.
The clone function creates a fast copy of the object. Instead of
+physically copying each property and method of the source object -
+it creates a clone as a ‘subclass’ of the source object, i.e.
+properties and methods are inherited from the source object into
+the clone.
+
Note that the clone continues to be dependent on the source
+object. Changes in the source object property or method will
+affect all the clones unless this property is already overwritten
+in the clone object itself.
This method normaly contains all object initialization code
+(instead of the constructor function). Constructor function is
+the same for all objects and only contains object.init() call.
Calls a method after a specified time interval has elapsed.
+
Syntax
obj.timeout(handler, delay);
Parameters
handler
Function
Method to call.
delay
Number
Time interval in milliseconds.
Returns
An identifier that can be used with window.clearTimeout
+to cancel the current method call.
+
Remarks
This method has the same effect as window.setTimeout except that
+the function will be evaluated not as a global function but
+as a method of the current object.
Generic HTML template class. Template is a re-usable HTML
+fragment aimed to produce markup as part of a larger
+object (control).
+
Template can either be a simple element or a complex HTML structure
+and may include calls to other templates as part of the output.
+
Templates can access properties of the parent control,
+so the template output will be different depending on
+the control's data. Templates can also accept parameters
+allowing to generate lists or tables of data with the
+single instance of the template.
+ In a more realistic example the grid data is stored in a two-dimensional
+ javascript array. Instead of providing a static text to the grid -
+ you should supply the function, which just returns an array element
+ for a given row and column indices.
+
+ When the data is available in a plain text file (tabs or comma-delimited)
+ you can load it into the grid without any server-side processing at all.
+
+
+ The file may look like this:
+
+
+
+
+ The first step is to create an external data model object,
+ which will load the data and provide a necessary interface
+ for the grid to access it.
+
+
var table = new Active.Text.Table;
+
+ The data model should know the URL of the file.
+
+
table.setProperty("URL", "companies.txt");
+
+ And you should ask the model to start loading the file.
+
+
table.request();
+
+ After the grid object is created
+
+
var obj = new Active.Controls.Grid;
+obj.setProperty("column/count", 5);
+
+ it is assigned our new external data model.
+
+
obj.setModel("data", table);
+
+
+ Don't forget to write the grid HTML to the page as usual.
+
+ Lets look how to load simple XML data into the grid.
+
+
+ Here is the XML:
+
+
+
+ To load and transform XML data you need an XML table model.
+
+
var table = new Active.XML.Table;
+
+ Assign a URL of the XML file.
+
+
table.setProperty("URL", "simple.xml");
+
+ By default the model looks at the documentElement as the data root.
+ Then all child elements of the root are treated as rows and
+ the child elements of each row node become the table cells.
+ Exactly as this simple example looks like.
+
+
+ Just load the file.
+
+
table.request();
+
+ After the grid object is created
+
+
var obj = new Active.Controls.Grid;
+obj.setProperty("column/count", 5);
+
+ it is assigned our new external data model.
+
+
obj.setModel("data", table);
+
+
+ Don't forget to write the grid HTML to the page as usual.
+
+ ActiveWidgets grid can display data from the variety of data sources.
+ The grid interacts with the external data sources through the data model object.
+ The grid itself has simple built-in data model and you can modify its built-in
+ model behavior by overloading the grid methods.
+ Or you can create an external data model and attach it to the grid.
+
+Mouseover effects require special handling to be fast enough.
+There are two global functions available just for this purpose (see /lib/system/html.js):
+
var row = new Active.Templates.Row;
+row.setEvent("onmouseover", "mouseover(this, 'active-row-highlight')");
+row.setEvent("onmouseout", "mouseout(this, 'active-row-highlight')");
+obj.setTemplate("row", row);
+
+ This is slightly different from normal syntax - where you supply a function as an event handler.
+ Here instead of a function you provide a string
+ which is simply assigned to HTML element "onmouseover" property and is evaluated on mouseover event.
+
+ Grid has built-in selection model, which supports single and multiple rows selection mode.
+ You can specify if multiple selection is allowed in 'selection/multiple' property:
+
+
obj.setProperty("selection/multiple", true);
+
+ The index of the last selected row is stored in 'selection/index' property:
+
+
var index = obj.getProperty("selection/index");
+
+ While 'selection/values' property returns an array of all selected rows:
+
+
var array = obj.getProperty("selection/values");
+
+ Grid calls 'selectionChanged' action so you can attach an action handler to process selection event.
+
+
obj.setAction("selectionChanged", myFunction);
+
+ Multiple selection is activated if the Ctrl key is pressed during mouse clicks.
+
+ Changing the row/column headers width and height.
+
+
+ To change the row header width it is necessary to modify style settings
+ for all four parts of the grid. Here is the example how to set a row header width to 100px:
+
+ Function setAttribute(name, value) allows assigning the value of the HTML attribute.
+
+
+
+
+
+
+
+ The attribute can be either a static value or a function.
+ The function will be evaluated each time the object is written to the page
+ or when the refresh() method is called.
+
+ Function setStyle(name, value) allows assigning the value of the CSS attribute (style).
+
+
+
+
+
+
+
+ The style can be either a static value or a function.
+ The function will be evaluated each time the object is written to the page
+ or when the refresh() method is called.
+
+ All objects, which are subclasses of the generic HTML class (Active.System.HTML),
+ are created as DIV elements by default. To create another element type,
+ for example INPUT box, assign the required tag with setTag() function.
+
+
+
+
+
+
+
+ For convenience, several HTML classes are pre-defined in Active.HTML module:
+ Here is step-by-step guide on how to include the grid widget on your page. Let's look
+ first at the end result:
+
+
+
Include ActiveWidgets files
+
+
+ The first step is to include a reference to the ActiveWidgets files into the <head>
+ section of your page. You need to include two files: a javascript library file and
+ a stylesheet file. The compressed files are located in the /runtime directory. Here
+ is how it looks:
+
+
+
+
+
+
Create widget
+
+
+ To insert a full-featured grid into the page we would need to generate a large number
+ of HTML tags and merge them with our data. All that will be done by the ActiveWidgets grid
+ object. We just need to put a <script> block at the desired position; create new Active.Controls.Grid
+ object and write this object back to the page using document.write() function.
+
+
+
+
How it works
+
+
+ The last line in the script above is in fact equivalent to calling toString() method
+ of the grid object. Each ActiveWidgets object implements toString() method to
+ produce the HTML markup, i.e. visual representation of the object inside HTML document.
+ The HTML tags produced by the grid toString() method and written to the
+ page by document.write() may look like this:
+
+
+
+
+
+
+ MSFT
+
+
+ Microsoft Corporation
+
+
+ 314,571.156
+
+
+ 32,187.000
+
+
+ 55000
+
+
+
+
+ ORCL
+
+
+ Oracle Corporation
+
+
+ 62,615.266
+
+
+ 9,519.000
+
+
+ 40650
+
+
+ ...
+
+
+
+
Data binding
+
+
+ In this first simple example we'll take the data for our grid from the two-dimensional
+ javascript array.
+
+
+
+
+ As a minimum we should supply a number of rows/columns and a function providing the
+ data text for a given cell.
+
+
+
+
+ You are not limited just to javascript arrays - the same approach could be used for
+ XML web services and other data sources.
+
+
Formatting
+
+
+ Let's start with column headings. Again, we just need to supply a function, which
+ will provide heading text for each column.
+
+
+
+
+ Then we can change the width and the appearance of each column using the standard
+ CSS attributes.
+
+
+
+
User actions
+
+
+ The grid object translates DHTML keyboard and mouse events to higher level 'actions',
+ like 'deleteRow' instead of 'keydown' + 'del' key. The action call provides action
+ source as an argument. In the example below we are sending the cell text to the browser
+ status bar:
+
+
+
+
Page source
+
+
+ The actual HTML source of the grid example looks like this:
+
+
+
+
+
diff --git a/www/extras/assetManager/ActiveWidgets/license.txt b/www/extras/assetManager/ActiveWidgets/license.txt
new file mode 100644
index 000000000..eeaad5c14
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/license.txt
@@ -0,0 +1,350 @@
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C) 19yy
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/www/extras/assetManager/ActiveWidgets/patches/paging1.htm b/www/extras/assetManager/ActiveWidgets/patches/paging1.htm
new file mode 100755
index 000000000..6d35ff9c3
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/patches/paging1.htm
@@ -0,0 +1,108 @@
+
+
+ ActiveWidgets Grid
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/patches/paging1.js b/www/extras/assetManager/ActiveWidgets/patches/paging1.js
new file mode 100755
index 000000000..019369bb8
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/patches/paging1.js
@@ -0,0 +1,94 @@
+/****************************************************************
+
+ Simple row model enabling paged data display in a grid.
+
+*****************************************************************/
+
+if (!Active.Rows) {Active.Rows = {}}
+
+Active.Rows.Page = Active.System.Model.subclass();
+
+Active.Rows.Page.create = function(){
+
+ var obj = this.prototype;
+
+ obj.defineProperty("count", function(){return this.$owner.getProperty("data/count")});
+ obj.defineProperty("index", function(i){return i});
+ obj.defineProperty("order", function(i){return this._orders ? this._orders[i] : i});
+ obj.defineProperty("text", function(i){return this.getOrder(i) + 1});
+ obj.defineProperty("image", "none");
+
+ obj.defineProperty("pageSize", 10);
+ obj.defineProperty("pageNumber", 0);
+ obj.defineProperty("pageCount", function(){return Math.ceil(this.getCount()/this.getPageSize())});
+
+ var getValue = function(i){
+ var size = this.getPageSize();
+ var number = this.getPageNumber();
+ var offset = size * number;
+ return this._sorted ? this._sorted[offset + i] : offset + i;
+ }
+
+ obj.defineProperty("value", getValue);
+
+ var getValues = function(){
+ var size = this.getPageSize();
+ var number = this.getPageNumber();
+ var offset = size * number;
+ var count = this.getCount();
+ var max = count > size + offset ? size : count - offset;
+ var i, values = [];
+ if (this._sorted){
+ values = this._sorted.slice(offset, offset + max);
+ }
+ else {
+ for(i=0; i a[y] ? 1 : (a[x] == a[y] ? 0 : -1)});
+ }
+
+ this._sorted = rows;
+
+ this._orders = [];
+ for(i=0; i
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var self = this;
+ this._resize = function(event){self.onresize(event)};
+ window.addEventListener("resize", this._resize, false);
+ this.onresize({type:"resize"});
+
+
+ window.removeEventListener("resize", this._resize, false);
+ this._resize = null;
+
+
+
+
+
+
+ var self = this;
+ this._mouseenter = function(event){
+ if (!self.getAttribute("onmouseenter")) {return}
+ (new Function(self.getAttribute("onmouseenter"))).call(self, event);
+ };
+ this._mouseleave = function(event){
+ if (!self.getAttribute("onmouseleave")) {return}
+ (new Function(self.getAttribute("onmouseleave"))).call(self, event);
+ };
+ this.addEventListener("mouseover", this._mouseenter, false);
+ this.addEventListener("mouseout", this._mouseleave, false);
+
+
+ this.removeEventListener("mouseover", this._mouseenter, false);
+ this.removeEventListener("mouseout", this._mouseleave, false);
+ this._mouseenter = null;
+ this._mouseleave = null;
+
+
+
+
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/grid.css b/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/grid.css
new file mode 100755
index 000000000..2039fd57f
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/grid.css
@@ -0,0 +1,23 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+xml{display:none;}.gecko{-moz-box-sizing:border-box;}.gecko[onresize]{-moz-binding:url(gecko.xml#resize);}.gecko[onmouseenter], .gecko[onmouseleave]{-moz-binding:url(gecko.xml#mouse);}.active-box-normal{position:relative; overflow-y:hidden; height:18px;width:100%;vertical-align:top;border-width:1px;border-style:solid;border-color:threedhighlight threeddarkshadow threeddarkshadow threedhighlight;}.active-box-item{-moz-box-flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;height:100%;padding:0px 5px;border-width:1px;border-style:solid;border-color:threedlightshadow threedshadow threedshadow threedlightshadow;background-color:threedface;}.active-box-item.gecko{-moz-binding:url(gecko.xml#item);}.active-gecko-item{display:-moz-inline-box;height:100%;-moz-box-align:center;}.active-box-item.opera{position:relative;min-height:14px;}.active-box-item.khtml{width:auto;height:14px;}.active-box-image{overflow:hidden; top:0px;left:0px;width:16px;height:100%;line-height:1px;vertical-align:middle;margin:0px 3px -1px 0px;}.active-box-image.gecko{display:-moz-inline-box;vertical-align:top;}.active-image-none{width:0px;margin-right:0px;}.active-box-resize{position:absolute;overflow:hidden;top:0px;right:-5px;width:10px;height:100%;font-size:100px;cursor:e-resize;}.active-box-sort{display:-moz-inline-box;overflow:hidden;width:0px;height:100%;vertical-align:top;}.active-box-item .active-box-image.gecko,.active-box-item .active-box-sort.gecko{height:16px;}.active-sort-ascending .active-box-sort{width:16px;background:url(grid.png) -20px 50% no-repeat;}.active-sort-descending .active-box-sort{width:16px;background:url(grid.png) -40px 50% no-repeat;}.active-box-resize.gecko{position:relative;margin-left:-5px;margin-right:-5px;line-height:12px;z-index:1000;}.active-box-resize.opera{display:none;}.active-scroll-data{position:absolute;overflow:hidden;top:0px;left:0px;width:100%;height:100%;padding:18px 0px 0px 28px;z-index:1;}.active-scroll-top{position:absolute;overflow:hidden;white-space:nowrap;top:0px;left:0px;width:100%;height:18px;padding:0px 20px 0px 28px;z-index:2;}.active-scroll-left{position:absolute;overflow:hidden;top:0px;left:0px;width:28px;height:100%;padding:18px 0px 20px 0px;text-align:center;z-index:2;}.active-scroll-corner{position:absolute;overflow:hidden;top:0px;left:0px;width:28px;height:18px;z-index:3;}.active-scroll-corner.khtml{width:26px;height:16px;}.active-scroll-bars{position:absolute;overflow:auto;top:0px;left:0px;width:100%;height:100%;padding:0px;z-index:4;}.active-scroll-space{width:0px; height:0px;}.active-scroll-fill{display:inline;height:100%;}.active-scroll-fill.gecko{display:-moz-inline-box;}.active-scroll-fill.khtml{float:left;width:1000px;margin-right:-1000px;height:16px;}.active-scroll-data.gecko,.active-scroll-top.gecko,.active-scroll-left.gecko{overflow:-moz-scrollbars-none;}.active-controls-grid{position:relative; overflow:hidden;width:100%;height:100%;cursor:default;-moz-user-focus:normal;-moz-user-select:none; }.active-controls-grid.khtml{width:auto;height:400px; }.active-templates-header{display:inline;width:100px;height:100%;}.active-header-pressed{border-color:threeddarkshadow threedhighlight threedhighlight threeddarkshadow;}.active-header-pressed .active-box-item{position:relative;left:1px;top:1px;border-color:threedface;}.active-templates-header.gecko{display:-moz-inline-box;}.active-templates-header.khtml{float:left;height:16px;}.active-templates-row{overflow-y:hidden;white-space:nowrap;width:100%;height:18px;-moz-user-select:none;}.active-templates-row.khtml{margin-bottom:-1px;}.active-row-cell{display:inline;overflow:hidden;text-overflow:ellipsis;width:100px;height:100%;padding:0px 5px;line-height:17px;}.active-row-cell.gecko{display:-moz-inline-box;}.active-row-cell.khtml{float:left;padding:0px 0px 0px 1px;height:18px;}.active-selection-true, .active-selection-true .active-row-cell{color:highlighttext!important;background-color:highlight!important;}.active-column-0{z-index:99}.active-column-1{z-index:98}.active-column-2{z-index:97}.active-column-3{z-index:96}.active-column-4{z-index:95}.active-column-5{z-index:94}.active-column-6{z-index:93}.active-column-7{z-index:92}.active-column-8{z-index:91}.active-column-9{z-index:90}.active-column-10{z-index:89}.active-column-11{z-index:88}.active-column-12{z-index:87}.active-column-13{z-index:86}.active-column-14{z-index:85}.active-column-15{z-index:84}.active-column-16{z-index:83}.active-column-17{z-index:82}.active-column-18{z-index:81}.active-column-19{z-index:80}.active-templates-text, .active-templates-image{-moz-binding:url(gecko.xml#box);}.active-gecko-box{-moz-box-flex:1;overflow:hidden; height:100%;width:100%;}.active-scroll-left .active-box-normal.khtml{width:auto;height:16px;}.active-templates-status, .active-templates-error{padding:5px;}.active-image-txt{background:url(icons.png) -20px 50% }.active-image-htm{background:url(icons.png) -40px 50% }.active-image-xls{background:url(icons.png) -60px 50% }.active-image-doc{background:url(icons.png) -80px 50% }.active-image-pdf{background:url(icons.png) -100px 50% }.active-image-xml{background:url(icons.png) -120px 50% }.active-image-msi{background:url(icons.png) -140px 50% }.active-image-chm{background:url(icons.png) -160px 50% }.active-box-image{background-repeat:no-repeat}.active-image-loading{position:relative;top:20px;left:0px;width:107px;height:13px;margin-right:-107px;background:url(loading.gif) no-repeat;}
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/grid.png b/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/grid.png
new file mode 100755
index 000000000..a2c173213
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/grid.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/icons.png b/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/icons.png
new file mode 100755
index 000000000..aeff091a5
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/icons.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/loading.gif b/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/loading.gif
new file mode 100755
index 000000000..96cb44720
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/runtime/styles/classic/loading.gif differ
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/gecko.xml b/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/gecko.xml
new file mode 100755
index 000000000..c3ddb3f23
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/gecko.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var self = this;
+ this._resize = function(event){self.onresize(event)};
+ window.addEventListener("resize", this._resize, false);
+ this.onresize({type:"resize"});
+
+
+ window.removeEventListener("resize", this._resize, false);
+ this._resize = null;
+
+
+
+
+
+
+ var self = this;
+ this._mouseenter = function(event){
+ if (!self.getAttribute("onmouseenter")) {return}
+ (new Function(self.getAttribute("onmouseenter"))).call(self, event);
+ };
+ this._mouseleave = function(event){
+ if (!self.getAttribute("onmouseleave")) {return}
+ (new Function(self.getAttribute("onmouseleave"))).call(self, event);
+ };
+ this.addEventListener("mouseover", this._mouseenter, false);
+ this.addEventListener("mouseout", this._mouseleave, false);
+
+
+ this.removeEventListener("mouseover", this._mouseenter, false);
+ this.removeEventListener("mouseout", this._mouseleave, false);
+ this._mouseenter = null;
+ this._mouseleave = null;
+
+
+
+
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/grid.css b/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/grid.css
new file mode 100755
index 000000000..60750f065
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/grid.css
@@ -0,0 +1,23 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+xml{display:none;}.gecko{-moz-box-sizing:border-box;}.gecko[onresize]{-moz-binding:url(gecko.xml#resize);}.gecko[onmouseenter], .gecko[onmouseleave]{-moz-binding:url(gecko.xml#mouse);}.active-box-normal{position:relative; overflow-y:hidden; height:18px;width:100%;vertical-align:top;border-width:1px;border-style:none none solid none;border-color:#c1cdd8;color:#10659e;}.active-box-item{-moz-box-flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;height:100%;padding:0px 5px;border-width:1px;border-style:none;background-color:#dbeaf5;}.active-box-item.gecko{-moz-binding:url(gecko.xml#item);}.active-gecko-item{display:-moz-inline-box;height:100%;-moz-box-align:center;}.active-box-image{overflow:hidden; top:0px;left:0px;width:16px;height:100%;line-height:1px;vertical-align:middle;margin:0px 3px -1px 0px;}.active-box-image.gecko{display:-moz-inline-box;vertical-align:top;}.active-image-none{width:0px;margin-right:0px;}.active-box-resize{position:absolute;overflow:hidden;top:0px;right:-5px;width:10px;height:100%;font-size:100px;cursor:e-resize;}.active-box-sort{display:-moz-inline-box;overflow:hidden;width:0px;height:100%;vertical-align:top;}.active-box-item .active-box-image.gecko,.active-box-item .active-box-sort.gecko{height:16px;}.active-sort-ascending .active-box-sort{width:16px;background:url(grid.png) -20px 50% no-repeat;}.active-sort-descending .active-box-sort{width:16px;background:url(grid.png) -40px 50% no-repeat;}.active-box-resize.gecko{position:relative;margin-left:-5px;margin-right:-5px;line-height:12px;z-index:1000;}.active-scroll-data{position:absolute;overflow:hidden;top:0px;left:0px;width:100%;height:100%;padding:18px 0px 0px 28px;z-index:1;}.active-scroll-top{position:absolute;overflow:hidden;white-space:nowrap;top:0px;left:0px;width:100%;height:18px;padding:0px 20px 0px 28px;z-index:2;}.active-scroll-left{position:absolute;overflow:hidden;top:0px;left:0px;width:28px;height:100%;padding:18px 0px 20px 0px;text-align:center;z-index:2;}.active-scroll-corner{position:absolute;overflow:hidden;top:0px;left:0px;width:28px;height:18px;z-index:3;}.active-scroll-bars{position:absolute;overflow:auto;top:0px;left:0px;width:100%;height:100%;padding:0px;z-index:4;}.active-scroll-space{width:0px; height:0px;}.active-scroll-fill{display:inline;height:100%;}.active-scroll-fill.gecko{display:-moz-inline-box;}.active-scroll-data.gecko,.active-scroll-top.gecko,.active-scroll-left.gecko{overflow:-moz-scrollbars-none;}.active-controls-grid{position:relative; overflow:hidden;width:100%;height:100%;cursor:default;-moz-user-focus:normal;-moz-user-select:none; }.active-templates-header{display:inline;width:100px;height:100%;}.active-header-over .active-box-item{color:#104a7b;background:#e9f2f8;}.active-header-pressed{background:#a0c6e5;}.active-header-pressed .active-box-item{position:relative;left:1px;top:1px;background:#a0c6e5;}.active-templates-header.gecko{display:-moz-inline-box;}.active-templates-row{overflow-y:hidden;white-space:nowrap;width:100%;height:18px;-moz-user-select:none;}.active-row-cell{display:inline;overflow:hidden;text-overflow:ellipsis;width:100px;height:100%;padding:0px 5px;line-height:17px;}.active-row-cell.gecko{display:-moz-inline-box;}.active-selection-true, .active-selection-true .active-row-cell{background-color:#c1cdd8!important;}.active-column-0{z-index:99}.active-column-1{z-index:98}.active-column-2{z-index:97}.active-column-3{z-index:96}.active-column-4{z-index:95}.active-column-5{z-index:94}.active-column-6{z-index:93}.active-column-7{z-index:92}.active-column-8{z-index:91}.active-column-9{z-index:90}.active-column-10{z-index:89}.active-column-11{z-index:88}.active-column-12{z-index:87}.active-column-13{z-index:86}.active-column-14{z-index:85}.active-column-15{z-index:84}.active-column-16{z-index:83}.active-column-17{z-index:82}.active-column-18{z-index:81}.active-column-19{z-index:80}.active-templates-text, .active-templates-image{-moz-binding:url(gecko.xml#box);}.active-gecko-box{-moz-box-flex:1;overflow:hidden; height:100%;width:100%;}.active-templates-status, .active-templates-error{padding:5px;}.active-image-txt{background:url(icons.png) -20px 50% }.active-image-htm{background:url(icons.png) -40px 50% }.active-image-xls{background:url(icons.png) -60px 50% }.active-image-doc{background:url(icons.png) -80px 50% }.active-image-pdf{background:url(icons.png) -100px 50% }.active-image-xml{background:url(icons.png) -120px 50% }.active-image-msi{background:url(icons.png) -140px 50% }.active-image-chm{background:url(icons.png) -160px 50% }.active-box-image{background-repeat:no-repeat}.active-image-loading{position:relative;top:20px;left:0px;width:107px;height:13px;margin-right:-107px;background:url(loading.gif) no-repeat;}
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/grid.png b/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/grid.png
new file mode 100755
index 000000000..3a42b539b
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/grid.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/icons.png b/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/icons.png
new file mode 100755
index 000000000..aeff091a5
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/icons.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/loading.gif b/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/loading.gif
new file mode 100755
index 000000000..96cb44720
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/runtime/styles/flat/loading.gif differ
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/grid.js b/www/extras/assetManager/ActiveWidgets/runtime/styles/grid.js
new file mode 100755
index 000000000..c57433a3d
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/runtime/styles/grid.js
@@ -0,0 +1,24 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+if(!window.Active){
+var Active={}}if(!Active.System){Active.System={}}if(!Active.HTML){Active.HTML={}}if(!Active.Templates){Active.Templates={}}if(!Active.Formats){Active.Formats={}}if(!Active.HTTP){Active.HTTP={}}if(!Active.Text){Active.Text={}}if(!Active.XML){Active.XML={}}if(!Active.Controls){Active.Controls={}}(function(){if(!window.HTMLElement){return}var element=HTMLElement.prototype;var capture=["click","mousedown","mouseup","mousemove","mouseover","mouseout" ];element.setCapture=function(){var self=this;var flag=false;this._capture=function(event){if(flag){return}flag=true;self.dispatchEvent(event);flag=false};for(var i=0;i=0;j--){param1=getParamStr(j);param2=getParamStr(this._innerParamLength+j);if(param1 !=param2){html=html.replace(param1,param2)}this[param2]=item[param1]}this._innerParamLength+=item._outerParamLength;s+=html}else{s+=value}}this._innerHTML=s;return s}catch(error){this.handle(error)}};obj.outerHTML=function(){try{if(this._outerHTML){return this._outerHTML}var innerHTML=this.innerHTML();this._outerParamLength=this._innerParamLength;if(!this._tag){return innerHTML}var i,tmp,name,value,param;var html="<"+this._tag+" id=\"{id}\"";tmp="";var classes=this._classes.split(" ");for(i=1;i"+innerHTML+""+this._tag+">";this._outerHTML=html;return html}catch(error){this.handle(error)}};obj.toString=function(){try{var i,s=this._outerHTML;if(!s){s=this.outerHTML()}s=s.replace(/\{id\}/g,this.getId());var max=this._outerParamLength;for(i=0;i0?"+":"-")+this.digits[Math.floor(Math.abs(value/3600000))]+this.digits[Math.abs(value/60000)%60]}};var localTimezone=- obj.date.getTimezoneOffset()* 60000;obj.setTextTimezone(localTimezone);obj.setDataTimezone(localTimezone);obj.setTextFormat("d mmm yy");obj.setDataFormat("default")};Active.Formats.Date.create(); Active.HTML.define=function(name,tag,type){if(!tag){tag=name.toLowerCase()}Active.HTML[name]=Active.System.HTML.subclass();Active.HTML[name].create=function(){};Active.HTML[name].prototype.setTag(tag)};Active.HTML.define("DIV");Active.HTML.define("SPAN");Active.HTML.define("IMG");Active.HTML.define("INPUT");Active.HTML.define("BUTTON");Active.HTML.define("TEXTAREA");Active.HTML.define("TABLE");Active.HTML.define("TR");Active.HTML.define("TD"); Active.Templates.Status=Active.System.Template.subclass();Active.Templates.Status.create=function(){var obj=this.prototype;obj.setClass("templates","status");var image=new Active.HTML.SPAN;image.setClass("box","image");image.setClass("image",function(){return this.getStatusProperty("image")});obj.setContent("image",image);obj.setContent("text",function(){return this.getStatusProperty("text")})};Active.Templates.Status.create(); Active.Templates.Error=Active.System.Template.subclass();Active.Templates.Error.create=function(){var obj=this.prototype;obj.setClass("templates","error");obj.setContent("title","Error:");obj.setContent("text",function(){return this.getErrorProperty("text")})};Active.Templates.Error.create(); Active.Templates.Text=Active.System.Template.subclass();Active.Templates.Text.create=function(){var obj=this.prototype;obj.setClass("templates","text");obj.setContent("text",function(){return this.getItemProperty("text")});obj.setEvent("onclick",function(){this.action("click")})};Active.Templates.Text.create(); Active.Templates.Image=Active.System.Template.subclass();Active.Templates.Image.create=function(){var obj=this.prototype;obj.setClass("templates","image");var image=new Active.HTML.SPAN;image.setClass("box","image");image.setClass("image",function(){return this.getItemProperty("image")});obj.setContent("image",image);obj.setContent("text",function(){return this.getItemProperty("text")});obj.setEvent("onclick",function(){this.action("click")})};Active.Templates.Image.create(); Active.Templates.Link=Active.System.Template.subclass();Active.Templates.Link.create=function(){var obj=this.prototype;obj.setTag("a");obj.setClass("templates","link");obj.setAttribute("href",function(){return this.getItemProperty("link")});var image=new Active.HTML.SPAN;image.setClass("box","image");image.setClass("image",function(){return this.getItemProperty("image")});obj.setContent("image",image);obj.setContent("text",function(){return this.getItemProperty("text")});obj.setEvent("onclick",function(){this.action("click")})};Active.Templates.Link.create(); Active.Templates.Item=Active.System.Template.subclass();Active.Templates.Item.create=function(){var obj=this.prototype;obj.setClass("templates","item");obj.setClass("box","normal");var box=new Active.HTML.DIV;var image=new Active.HTML.SPAN;box.setClass("box","item");image.setClass("box","image");image.setClass("image",function(){return this.getItemProperty("image")});obj.setContent("box",box);obj.setContent("box/image",image);obj.setContent("box/text",function(){return this.getItemProperty("text")})};Active.Templates.Item.create(); Active.Templates.List=Active.System.Template.subclass();Active.Templates.List.create=function(){var obj=this.prototype;obj.setTag("");obj.defineTemplate("item",new Active.Templates.Text);var getItemProperty=function(property){return this.$owner.getDataProperty(property,this.$index)};var setItemProperty=function(property,value){return this.$owner.setDataProperty(property,value,this.$index)};obj.getItemTemplate=function(index,temp){var template=this.defaultItemTemplate(index);if(!temp){temp=[]}if(!temp.selected){temp.selected=[];var i,values=this.getSelectionProperty("values");for(i=0;i data.offsetHeight?data.scrollHeight:0;space.runtimeStyle.width=data.scrollWidth > data.offsetWidth?data.scrollWidth:0;var y=scrollbars.clientHeight;var x=scrollbars.clientWidth;data.runtimeStyle.width=x;top.runtimeStyle.width=x;data.runtimeStyle.height=y;left.runtimeStyle.height=y;top.scrollLeft=data.scrollLeft;left.scrollTop=data.scrollTop;scrollbars.runtimeStyle.zIndex=0}else{this.timeout(adjustSize,500)}data.className=data.className+""}data=null;scrollbars=null;top=null;left=null;space=null;this._sizeAdjusted=true};obj.setAction("adjustSize",function(){this.timeout(adjustSize,500)});obj.toString=function(){this.timeout(adjustSize);return _super.toString.call(this)}};Active.Templates.Scroll.create(); Active.Controls.Grid=Active.System.Control.subclass();Active.Controls.Grid.create=function(){var obj=this.prototype;obj.setClass("controls","grid");obj.defineTemplate("layout",new Active.Templates.Scroll);obj.defineTemplate("main",function(){switch(this.getStatusProperty("code")){case "":return this.getDataTemplate();case "error":return this.getErrorTemplate();default:return this.getStatusTemplate()}});obj.defineTemplate("data",new Active.Templates.List);obj.defineTemplate("left",new Active.Templates.List);obj.defineTemplate("top",new Active.Templates.List);obj.defineTemplate("status",new Active.Templates.Status);obj.defineTemplate("error",new Active.Templates.Error);obj.defineTemplate("row",new Active.System.Template);obj.defineTemplate("column",new Active.System.Template);obj.getColumnTemplate=function(i){return this.getTemplate("data/item/item",i)};obj.setColumnTemplate=function(template,i){this.setTemplate("data/item/item",template,i)};obj.getRowTemplate=function(i){return this.getTemplate("data/item",i)};obj.setRowTemplate=function(template,i){this.setTemplate("data/item",template,i)};obj.setTemplate("data/item",new Active.Templates.Row);obj.setTemplate("left/item",new Active.Templates.Item);obj.setTemplate("top/item",new Active.Templates.Header);obj.defineModel("row");obj.defineRowProperty("count",function(){return this.getDataProperty("count")});obj.defineRowProperty("index",function(i){return i});obj.defineRowProperty("order",function(i){return i});obj.defineRowPropertyArray("text",function(i){return this.getRowOrder(i)+1});obj.defineRowPropertyArray("image","none");obj.defineRowPropertyArray("value",function(i){return i});obj.defineModel("column");obj.defineColumnProperty("count",0);obj.defineColumnProperty("index",function(i){return i});obj.defineColumnProperty("order",function(i){return i});obj.defineColumnPropertyArray("text",function(i){return "Column "+i});obj.defineColumnPropertyArray("image","none");obj.defineColumnPropertyArray("value",function(i){return i});obj.defineColumnPropertyArray("tooltip","");obj.defineModel("data");obj.defineDataProperty("count",0);obj.defineDataProperty("index",function(i){return i});obj.defineDataProperty("text","");obj.defineDataProperty("image","none");obj.defineDataProperty("link","");obj.defineDataProperty("value",function(i,j){var text=""+this.getDataText(i,j);var value=Number(text.replace(/[,%\$]/gi,"").replace(/\((.*)\)/,"-$1"));return isNaN(value)?text.toLowerCase()+" ":value});obj.defineModel("items");obj.defineModel("dummy");obj.defineDummyProperty("count",0);obj.defineDummyPropertyArray("value",-1);obj.defineModel("selection");obj.defineSelectionProperty("index",-1);obj.defineSelectionProperty("multiple",false);obj.defineSelectionProperty("count",0);obj.defineSelectionPropertyArray("value",0);obj.defineModel("sort");obj.defineSortProperty("index",-1);obj.defineSortProperty("direction","none");obj.defineModel("status");obj.defineStatusProperty("code",function(){var data=this.getDataModel();if(!data.isReady()){return "loading"}if(!this.getRowProperty("count")){return "nodata"}return ""});obj.defineStatusProperty("text",function(){switch(this.getStatusProperty("code")){case "loading":return "Loading data,please wait...";case "nodata":return "No data found.";default:return ""}});obj.defineStatusProperty("image",function(){switch(this.getStatusProperty("code")){case "loading":return "loading";default:return "none"}});obj.defineModel("error");obj.defineErrorProperty("code",0);obj.defineErrorProperty("text","");obj.getLeftTemplate=function(){var template=this.defaultLeftTemplate();template.setDataModel(this.getRowModel());template.setItemsModel(this.getRowModel());template.setSelectionModel(this.getDummyModel());return template};obj.getTopTemplate=function(){var template=this.defaultTopTemplate();template.setDataModel(this.getColumnModel());template.setItemsModel(this.getColumnModel());template.setSelectionModel(this.getDummyModel());return template};obj.getDataTemplate=function(){var template=this.defaultDataTemplate();template.setDataModel(this.getDataModel());template.setItemsModel(this.getRowModel());return template};obj.setContent(function(){return this.getLayoutTemplate()});obj.setColumnHeaderHeight=function(height){var layout=this.getTemplate("layout");layout.getContent("top").setStyle("height",height);layout.getContent("corner").setStyle("height",height);layout.getContent("left").setStyle("padding-top",height);layout.getContent("data").setStyle("padding-top",height)};obj.setRowHeaderWidth=function(width){var layout=this.getTemplate("layout");layout.getContent("left").setStyle("width",width);layout.getContent("corner").setStyle("width",width);layout.getContent("top").setStyle("padding-left",width);layout.getContent("data").setStyle("padding-left",width)};var startColumnResize=function(header){var el=header.element();var pos=event.clientX;var size=el.offsetWidth;var grid=this;var doResize=function(){var el=header.element();var sz=size+event.clientX - pos;el.style.width=sz < 5?5:sz;el=null};var endResize=function(){var el=header.element();if(typeof el.onmouseleave=="function"){el.onmouseleave()}el.detachEvent("onmousemove",doResize);el.detachEvent("onmouseup",endResize);el.detachEvent("onlosecapture",endResize);el.releaseCapture();var width=size+event.clientX - pos;if(width < 5){width=5}el.style.width=width;var ss=document.styleSheets[document.styleSheets.length-1];var i,selector="#"+grid.getId()+" .active-column-"+header.getItemProperty("index");for(i=0;i row.element().offsetTop - padding){top=row.element().offsetTop - padding;left.element().scrollTop=top;data.element().scrollTop=top;scrollbars.element().scrollTop=top}if(data.element().offsetHeight+data.element().scrollTop < row.element().offsetTop+row.element().offsetHeight){top=row.element().offsetTop+row.element().offsetHeight - data.element().offsetHeight;left.element().scrollTop=top;data.element().scrollTop=top;scrollbars.element().scrollTop=top}}catch(error){}};var setSelectionValues=obj.setSelectionValues;obj.setSelectionValues=function(array){var i,current=this.getSelectionValues();setSelectionValues.call(this,array);for(i=0;i row2?row2:row1;var count=row1 > row2?row1 - row2:row2 - row1;var i,selection=[];for(i=0;i<=count;i++){selection.push(this.getRowProperty("value",start+i))}this.setSelectionProperty("values",selection);setSelectionIndex.call(this,index);this.getRowTemplate(index).refreshClasses();this.action("selectionChanged")};obj.setAction("selectRow",selectRow);obj.setAction("selectMultipleRows",selectMultipleRows);obj.setAction("selectRangeOfRows",selectRangeOfRows);obj.sort=function(index,direction){var model=this.getModel("row");if(model.sort){return model.sort(index,direction)}var a={};var rows=this.getRowProperty("values");if(direction && direction !="ascending"){direction="descending"}else{direction="ascending"}if(this.getSortProperty("index")!=index){for(var i=0;i a[y]?1:(a[x]==a[y]?0:-1)});if(direction=="descending"){rows.reverse()}}else if(this.getSortProperty("direction")!=direction){rows.reverse()}this.setRowProperty("values",rows);this.setSortProperty("index",index);this.setSortProperty("direction",direction)};obj.setAction("columnSort",function(src){var i=src.getItemProperty("index");var d=(this.getSortProperty("index")==i)&&(this.getSortProperty("direction")=="ascending")?"descending":"ascending";window.status="Sorting...";this.sort(i,d);this.refresh();this.timeout(function(){window.status=""})});var _getRowOrder=function(i){return this._rowOrders[i]};var _setRowValues=obj.setRowValues;obj.setRowValues=function(values){_setRowValues.call(this,values);var i,max=values.length,orders=[];for(i=0;icount-1){newOrder=count-1}if(delta==-100){newOrder=0}if(delta==100){newOrder=count-1}var newIndex=this.getRowProperty("value",newOrder);this.setSelectionProperty("index",newIndex)};obj.setAction("up",function(){this._kbSelect(-1)});obj.setAction("down",function(){this._kbSelect(+1)});obj.setAction("pageUp",function(){this._kbSelect(-10)});obj.setAction("pageDown",function(){this._kbSelect(+10)});obj.setAction("home",function(){this._kbSelect(-100)});obj.setAction("end",function(){this._kbSelect(+100)});var kbActions={38:"up",40:"down",33:"pageUp",34:"pageDown",36:"home",35:"end"};var onkeydown=function(event){var action=kbActions[event.keyCode];if(action){this.action(action);event.returnValue=false;event.cancelBubble=true}};obj.setEvent("onkeydown",onkeydown);function onmousewheel(event){var scrollbars=this.getTemplate("layout").getContent("scrollbars");var delta=scrollbars.element().offsetHeight * event.wheelDelta/480;scrollbars.element().scrollTop -=delta;event.returnValue=false;event.cancelBubble=true}obj.setEvent("onmousewheel",onmousewheel)};Active.Controls.Grid.create(); Active.HTTP.Request=Active.System.Model.subclass();Active.HTTP.Request.create=function(){var obj=this.prototype;obj.defineProperty("URL");obj.defineProperty("async",true);obj.defineProperty("requestMethod","GET");obj.defineProperty("requestData","");obj.defineProperty("responseText",function(){return this._http?this._http.responseText:""});obj.defineProperty("responseXML",function(){return this._http?this._http.responseXML:""});obj.defineProperty("username",null);obj.defineProperty("password",null);obj.setNamespace=function(name,value){this._namespaces+=" xmlns:"+name+"=\""+value+"\""};obj._namespaces="";obj.setParameter=function(name,value){this["_"+name+"Parameter"]=value;if(!this._parameters.match(name)){this._parameters+=" "+name}};obj._parameters="";obj.setRequestHeader=function(name,value){this["_"+name+"Header"]=value;if(!this._headers.match(name)){this._headers+=" "+name}};obj._headers="";obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");obj.getResponseHeader=function(name){return this._http?this._http.getResponseHeader(name):""};obj.request=function(){var self=this;this._ready=false;var i,name,value,data="",params=this._parameters.split(" ");for(i=1;i
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var self = this;
+ this._resize = function(event){self.onresize(event)};
+ window.addEventListener("resize", this._resize, false);
+ this.onresize({type:"resize"});
+
+
+ window.removeEventListener("resize", this._resize, false);
+ this._resize = null;
+
+
+
+
+
+
+ var self = this;
+ this._mouseenter = function(event){
+ if (!self.getAttribute("onmouseenter")) {return}
+ (new Function(self.getAttribute("onmouseenter"))).call(self, event);
+ };
+ this._mouseleave = function(event){
+ if (!self.getAttribute("onmouseleave")) {return}
+ (new Function(self.getAttribute("onmouseleave"))).call(self, event);
+ };
+ this.addEventListener("mouseover", this._mouseenter, false);
+ this.addEventListener("mouseout", this._mouseleave, false);
+
+
+ this.removeEventListener("mouseover", this._mouseenter, false);
+ this.removeEventListener("mouseout", this._mouseleave, false);
+ this._mouseenter = null;
+ this._mouseleave = null;
+
+
+
+
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/grid.css b/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/grid.css
new file mode 100755
index 000000000..4fe2ed043
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/grid.css
@@ -0,0 +1,23 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+xml{display:none;}.gecko{-moz-box-sizing:border-box;}.gecko[onresize]{-moz-binding:url(gecko.xml#resize);}.gecko[onmouseenter], .gecko[onmouseleave]{-moz-binding:url(gecko.xml#mouse);}.active-box-normal{position:relative; overflow-y:hidden; height:18px;width:100%;vertical-align:top;border-width:1px;border-style:none none solid none;border-color:#cbc7b8;background-color:#d6d2c2!important;padding-bottom:1px;}.active-box-item{-moz-box-flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;height:100%;padding:0px 5px;border-width:1px;border-style:none none solid none;border-color:#e2decd;background-color:#ebeadb;}.active-box-item.gecko{-moz-binding:url(gecko.xml#item);}.active-gecko-item{display:-moz-inline-box;height:100%;-moz-box-align:center;}.active-box-image{overflow:hidden; top:0px;left:0px;width:16px;height:100%;line-height:1px;vertical-align:middle;margin:0px 3px -1px 0px;}.active-box-image.gecko{display:-moz-inline-box;vertical-align:top;}.active-image-none{width:0px;margin-right:0px;}.active-box-resize{position:absolute;overflow:hidden;top:15%;right:-5px;width:10px;height:70%;font-size:100px;background:url(grid.png) -75px 0px no-repeat;cursor:e-resize;}.active-box-sort{display:-moz-inline-box;overflow:hidden;width:0px;height:100%;vertical-align:top;}.active-box-item .active-box-image.gecko,.active-box-item .active-box-sort.gecko{height:16px;}.active-sort-ascending .active-box-sort{width:16px;background:url(grid.png) -20px 50% no-repeat;}.active-sort-descending .active-box-sort{width:16px;background:url(grid.png) -40px 50% no-repeat;}.active-box-resize.gecko{position:relative;top:15%;margin-left:-5px;margin-right:-5px;line-height:12px;z-index:1000;}.active-scroll-data{position:absolute;overflow:hidden;top:0px;left:0px;width:100%;height:100%;padding:18px 0px 0px 28px;z-index:1;}.active-scroll-top{position:absolute;overflow:hidden;white-space:nowrap;top:0px;left:0px;width:100%;height:18px;padding:0px 20px 0px 28px;z-index:2;}.active-scroll-left{position:absolute;overflow:hidden;top:0px;left:0px;width:28px;height:100%;padding:18px 0px 20px 0px;text-align:center;z-index:2;}.active-scroll-corner{position:absolute;overflow:hidden;top:0px;left:0px;width:28px;height:18px;z-index:3;}.active-scroll-bars{position:absolute;overflow:auto;top:0px;left:0px;width:100%;height:100%;padding:0px;z-index:4;}.active-scroll-space{width:0px; height:0px;}.active-scroll-fill{display:inline;height:100%;}.active-scroll-fill.gecko{display:-moz-inline-box;}.active-scroll-data.gecko,.active-scroll-top.gecko,.active-scroll-left.gecko{overflow:-moz-scrollbars-none;}.active-controls-grid{position:relative; overflow:hidden;width:100%;height:100%;cursor:default;-moz-user-focus:normal;-moz-user-select:none; }.active-templates-header{display:inline;width:100px;height:100%;}.active-header-over{border-color:#f9b119;background:#fcc247!important;}.active-header-over .active-box-item{border-color:#f9a900;background:#faf9f4;}.active-header-over .active-box-resize{background:none;}.active-header-pressed{border-color:threeddarkshadow threedhighlight threedhighlight threeddarkshadow;}.active-header-pressed .active-box-item{position:relative;left:1px;top:1px;border-color:threedface;}.active-templates-header.gecko{display:-moz-inline-box;}.active-templates-row{overflow-y:hidden;white-space:nowrap;width:100%;height:18px;-moz-user-select:none;}.active-row-cell{display:inline;overflow:hidden;text-overflow:ellipsis;width:100px;height:100%;padding:0px 5px;line-height:17px;}.active-row-cell.gecko{display:-moz-inline-box;}.active-selection-true, .active-selection-true .active-row-cell{color:highlighttext!important;background-color:highlight!important;}.active-column-0{z-index:99}.active-column-1{z-index:98}.active-column-2{z-index:97}.active-column-3{z-index:96}.active-column-4{z-index:95}.active-column-5{z-index:94}.active-column-6{z-index:93}.active-column-7{z-index:92}.active-column-8{z-index:91}.active-column-9{z-index:90}.active-column-10{z-index:89}.active-column-11{z-index:88}.active-column-12{z-index:87}.active-column-13{z-index:86}.active-column-14{z-index:85}.active-column-15{z-index:84}.active-column-16{z-index:83}.active-column-17{z-index:82}.active-column-18{z-index:81}.active-column-19{z-index:80}.active-templates-text, .active-templates-image{-moz-binding:url(gecko.xml#box);}.active-gecko-box{-moz-box-flex:1;overflow:hidden; height:100%;width:100%;}.active-templates-status, .active-templates-error{padding:5px;}.active-scroll-left .active-box-normal{border-top:1px solid #faf9f4;border-right:1px solid #d6d2c2;border-bottom:none;}.active-image-txt{background:url(icons.png) -20px 50% }.active-image-htm{background:url(icons.png) -40px 50% }.active-image-xls{background:url(icons.png) -60px 50% }.active-image-doc{background:url(icons.png) -80px 50% }.active-image-pdf{background:url(icons.png) -100px 50% }.active-image-xml{background:url(icons.png) -120px 50% }.active-image-msi{background:url(icons.png) -140px 50% }.active-image-chm{background:url(icons.png) -160px 50% }.active-box-image{background-repeat:no-repeat}.active-image-loading{position:relative;top:20px;left:0px;width:107px;height:13px;margin-right:-107px;background:url(loading.gif) no-repeat;}
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/grid.png b/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/grid.png
new file mode 100755
index 000000000..42d50b364
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/grid.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/icons.png b/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/icons.png
new file mode 100755
index 000000000..aeff091a5
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/icons.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/loading.gif b/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/loading.gif
new file mode 100755
index 000000000..96cb44720
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/runtime/styles/xp/loading.gif differ
diff --git a/www/extras/assetManager/ActiveWidgets/source/lib/browsers/gecko.js b/www/extras/assetManager/ActiveWidgets/source/lib/browsers/gecko.js
new file mode 100755
index 000000000..6861b6ea5
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/lib/browsers/gecko.js
@@ -0,0 +1,294 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+(function(){
+
+ if (!window.HTMLElement) {return}
+
+ var element = HTMLElement.prototype;
+
+// ------------------------------------------------------------
+
+ var capture = ["click", "mouseup", "mousemove", "mouseover", "mouseout" ];
+
+ element.setCapture = function(){
+ var self = this;
+ var flag = false;
+ this._capture = function(event){
+ if (flag) {return}
+ flag = true;
+ self.dispatchEvent(event);
+ flag = false;
+ };
+ for (var i=0; i row.element().offsetTop - padding) {
+ top = row.element().offsetTop - padding;
+ left.element().scrollTop = top;
+ data.element().scrollTop = top;
+ scrollbars.element().scrollTop = top;
+ }
+
+ if (data.element().offsetHeight + data.element().scrollTop <
+ row.element().offsetTop + row.element().offsetHeight ) {
+ top = row.element().offsetTop + row.element().offsetHeight - data.element().offsetHeight;
+ left.element().scrollTop = top;
+ data.element().scrollTop = top;
+ scrollbars.element().scrollTop = top;
+ }
+ }
+ catch(error){
+ // ignore errors
+ }
+ };
+
+// ------------------------------------------------------------
+
+ var setSelectionValues = obj.setSelectionValues;
+
+ obj.setSelectionValues = function(array){
+ var i, current = this.getSelectionValues();
+ setSelectionValues.call(this, array);
+
+ for (i=0; i row2 ? row2 : row1;
+ var count = row1 > row2 ? row1 - row2 : row2 - row1;
+
+ var i, selection = [];
+ for(i=0; i<=count; i++){
+ selection.push(this.getRowProperty("value", start + i));
+ }
+
+ this.setSelectionProperty("values", selection);
+ setSelectionIndex.call(this, index);
+
+ this.getRowTemplate(index).refreshClasses();
+ this.action("selectionChanged");
+ };
+
+
+ obj.setAction("selectRow", selectRow);
+ obj.setAction("selectMultipleRows", selectMultipleRows);
+ obj.setAction("selectRangeOfRows", selectRangeOfRows);
+
+/****************************************************************
+
+ Sorts the rows with the data in the given column.
+
+ @param index (Number) Column index to sort on.
+ @param direction (String) Sort direction ("ascending" or "descending").
+
+*****************************************************************/
+
+ obj.sort = function(index, direction){
+
+ var model = this.getModel("row");
+ if (model.sort) {
+ return model.sort(index, direction);
+ }
+
+ var a = {};
+ var rows = this.getRowProperty("values");
+
+ if (direction && direction != "ascending" ) {
+ direction = "descending";
+ }
+ else {
+ direction = "ascending";
+ }
+
+ if (this.getSortProperty("index") != index) {
+ for (var i=0; i a[y] ? 1 : (a[x] == a[y] ? 0 : -1)});
+ if (direction == "descending") {
+ rows.reverse();
+ }
+ }
+ else if (this.getSortProperty("direction") != direction) {
+ rows.reverse();
+ }
+
+
+ this.setRowProperty("values", rows);
+ this.setSortProperty("index", index);
+ this.setSortProperty("direction", direction);
+ };
+
+
+ obj.setAction("columnSort", function(src){
+ var i = src.getItemProperty("index");
+ var d = (this.getSortProperty("index") == i) && (this.getSortProperty("direction")=="ascending") ? "descending" : "ascending";
+ window.status = "Sorting...";
+ this.sort(i, d);
+ this.refresh();
+ this.timeout(function(){window.status = ""});
+ });
+
+// ------------------------------------------------------------
+
+ var _getRowOrder = function(i){
+ return this._rowOrders[i];
+ };
+
+ var _setRowValues = obj.setRowValues;
+
+ obj.setRowValues = function(values){
+ _setRowValues.call(this, values);
+
+ var i, max = values.length, orders = [];
+ for(i=0; icount-1) {newOrder = count-1}
+ if (delta == -100) {newOrder = 0}
+ if (delta == 100) {newOrder = count-1}
+ var newIndex = this.getRowProperty("value", newOrder);
+ this.setSelectionProperty("index", newIndex);
+ };
+
+ obj.setAction("up", function(){this._kbSelect(-1)});
+ obj.setAction("down", function(){this._kbSelect(+1)});
+ obj.setAction("pageUp", function(){this._kbSelect(-10)});
+ obj.setAction("pageDown", function(){this._kbSelect(+10)});
+ obj.setAction("home", function(){this._kbSelect(-100)});
+ obj.setAction("end", function(){this._kbSelect(+100)});
+
+// ------------------------------------------------------------
+
+ var kbActions = {
+ 38 : "up",
+ 40 : "down",
+ 33 : "pageUp",
+ 34 : "pageDown",
+ 36 : "home",
+ 35 : "end" };
+
+ var onkeydown = function(event){
+ var action = kbActions[event.keyCode];
+ if (action) {
+ this.action(action);
+ event.returnValue = false;
+ event.cancelBubble = true;
+ }
+ };
+
+ obj.setEvent("onkeydown", onkeydown);
+
+// ------------------------------------------------------------
+
+ function onmousewheel(event){
+
+ var scrollbars = this.getTemplate("layout").getContent("scrollbars");
+ var delta = scrollbars.element().offsetHeight * event.wheelDelta/480;
+ scrollbars.element().scrollTop -= delta;
+ event.returnValue = false;
+ event.cancelBubble = true;
+ }
+
+ obj.setEvent("onmousewheel", onmousewheel);
+
+};
+
+Active.Controls.Grid.create();
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/source/lib/formats/date.js b/www/extras/assetManager/ActiveWidgets/source/lib/formats/date.js
new file mode 100755
index 000000000..a468e8618
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/lib/formats/date.js
@@ -0,0 +1,162 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+Active.Formats.Date = Active.System.Format.subclass();
+
+Active.Formats.Date.create = function(){
+
+/****************************************************************
+
+ Date formatting class.
+
+*****************************************************************/
+
+ var obj = this.prototype;
+
+ obj.date = new Date();
+
+ obj.digits = [];
+ obj.shortMonths = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
+ obj.longMonths = ["January","February","March","April","May","June","July","August","September","October","November","December"];
+ obj.shortWeekdays = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
+ obj.longWeekdays = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
+
+ for(var i=0; i<100; i++){obj.digits[i] = i<10 ? "0" + i : "" + i}
+
+ var tokens = {
+ "hh" : "this.digits[this.date.getUTCHours()]",
+ ":mm" : "':'+this.digits[this.date.getUTCMinutes()]",
+ "mm:" : "this.digits[this.date.getUTCMinutes()]+':'",
+ "ss" : "this.digits[this.date.getUTCSeconds()]",
+ "dddd" : "this.longWeekdays[this.date.getUTCDay()]",
+ "ddd" : "this.shortWeekdays[this.date.getUTCDay()]",
+ "dd" : "this.digits[this.date.getUTCDate()]",
+ "d" : "this.date.getUTCDate()",
+ "mmmm" : "this.longMonths[this.date.getUTCMonth()]",
+ "mmm" : "this.shortMonths[this.date.getUTCMonth()]",
+ "mm" : "this.digits[this.date.getUTCMonth()]",
+ "m" : "this.date.getUTCMonth()",
+ "yyyy" : "this.date.getUTCFullYear()",
+ "yy" : "this.digits[this.date.getUTCFullYear()%100]" };
+
+ var match = "";
+ for(i in tokens){
+ if (typeof(i) == "string"){
+ match += "|" + i;
+ }
+ }
+ var re = new RegExp(match.replace("|", "(")+")", "gi");
+
+/****************************************************************
+
+ Allows to specify the format for the text output.
+
+ @param format (String) Format pattern.
+
+*****************************************************************/
+
+ obj.setTextFormat = function(format){
+ format = format.replace(re, function(i){return "'+" + tokens[i.toLowerCase()] + "+'"});
+ format = "if (isNaN(value)) return this._textError;" +
+ "this.date.setTime(value + this._textTimezoneOffset);" +
+ ("return '" + format + "'").replace(/(''\+|\+'')/g, "");
+ this.valueToText = new Function("value", format);
+ };
+
+ var xmlExpr = /^(....).(..).(..).(..).(..).(..)........(...).(..)/;
+ var xmlOut = "$1/$2/$3 $4:$5:$6 GMT$7$8";
+
+ var auto = function(data){
+ return Date.parse(data + this._dataTimezoneCode);
+ };
+
+ var RFC822 = function(data){
+ return Date.parse(data);
+ };
+
+ var ISO8061 = function(data){
+ return Date.parse(data.replace(xmlExpr, xmlOut));
+ };
+
+/****************************************************************
+
+ Allows to specify the wire format for data input.
+
+ @param format (String) Format pattern.
+
+*****************************************************************/
+
+ obj.setDataFormat = function(format){
+ if (format == "RFC822") {
+ this.dataToValue = RFC822;
+ }
+ else if (format == "ISO8061") {
+ this.dataToValue = ISO8061;
+ }
+ else {
+ this.dataToValue = auto;
+ }
+ };
+
+/****************************************************************
+
+ Allows to specify the timezone used for the text output.
+
+ @param value (Number) Timezone offset.
+
+*****************************************************************/
+
+ obj.setTextTimezone = function(value){
+ this._textTimezoneOffset = value;
+ };
+
+/****************************************************************
+
+ Allows to specify the timezone used for the data input.
+
+ @param value (Number) Timezone offset.
+
+*****************************************************************/
+
+ obj.setDataTimezone = function(value){
+ if (!value) {
+ this._dataTimezoneCode = " GMT";
+ }
+ else {
+ this._dataTimezoneCode = " GMT" +
+ (value>0 ? "+" : "-") +
+ this.digits[Math.floor(Math.abs(value/3600000))] +
+ this.digits[Math.abs(value/60000)%60];
+ }
+ };
+
+ var localTimezone = - obj.date.getTimezoneOffset() * 60000;
+
+ obj.setTextTimezone(localTimezone);
+ obj.setDataTimezone(localTimezone);
+
+ obj.setTextFormat("d mmm yy");
+ obj.setDataFormat("default");
+};
+
+Active.Formats.Date.create();
+
diff --git a/www/extras/assetManager/ActiveWidgets/source/lib/formats/number.js b/www/extras/assetManager/ActiveWidgets/source/lib/formats/number.js
new file mode 100755
index 000000000..e98f03554
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/lib/formats/number.js
@@ -0,0 +1,110 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+Active.Formats.Number = Active.System.Format.subclass();
+
+Active.Formats.Number.create = function(){
+
+/****************************************************************
+
+ Number formatting class.
+
+*****************************************************************/
+
+ var obj = this.prototype;
+
+/****************************************************************
+
+ Transforms the wire data into the numeric value.
+
+ @param data (String) Wire data.
+ @return Numeric value.
+
+*****************************************************************/
+
+ obj.dataToValue = function(data){
+ return Number(data);
+ };
+
+
+ var noFormat = function(value){
+ return "" + value;
+ };
+
+ var doFormat = function(value){
+ var multiplier = this._multiplier;
+ var abs = (value<0) ? -value : value;
+ var delta = (value<0) ? -0.5 : +0.5;
+ var rounded = (Math.round(value * multiplier) + delta)/multiplier + "";
+ if (abs<1000) {return rounded.replace(this.p1, this.r1)}
+ if (abs<1000000) {return rounded.replace(this.p2, this.r2)}
+ if (abs<1000000000) {return rounded.replace(this.p3, this.r3)}
+ return rounded.replace(this.p4, this.r4);
+ };
+
+/****************************************************************
+
+ Allows to specify the format for the text output.
+
+ @param format (String) Format pattern.
+
+*****************************************************************/
+
+ obj.setTextFormat = function(format){
+ var pattern = /^([^0#]*)([0#]*)([ .,]?)([0#]|[0#]{3})([.,])([0#]*)([^0#]*)$/;
+ var f = format.match(pattern);
+
+ if (!f) {
+ this.valueToText = noFormat;
+ return;
+ }
+
+ this.valueToText = doFormat;
+
+ var rs = f[1]; // result start
+ var rg = f[3]; // result group separator;
+ var rd = f[5]; // result decimal separator;
+ var re = f[7]; // result end
+
+ var decimals = f[6].length;
+
+ this._multiplier = Math.pow(10, decimals);
+
+ var ps = "^(-?\\d+)", pm = "(\\d{3})", pe = "\\.(\\d{" + decimals + "})\\d$";
+
+ this.p1 = new RegExp(ps + pe);
+ this.p2 = new RegExp(ps + pm + pe);
+ this.p3 = new RegExp(ps + pm + pm + pe);
+ this.p4 = new RegExp(ps + pm + pm + pm + pe);
+
+ this.r1 = rs + "$1" + rd + "$2" + re;
+ this.r2 = rs + "$1" + rg + "$2" + rd + "$3" + re;
+ this.r3 = rs + "$1" + rg + "$2" + rg + "$3" + rd + "$4" + re;
+ this.r4 = rs + "$1" + rg + "$2" + rg + "$3" + rg + "$4" + rd + "$5" + re;
+
+ };
+
+ obj.setTextFormat("#.##");
+};
+
+Active.Formats.Number.create();
+
diff --git a/www/extras/assetManager/ActiveWidgets/source/lib/formats/string.js b/www/extras/assetManager/ActiveWidgets/source/lib/formats/string.js
new file mode 100755
index 000000000..9e9c3cad5
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/lib/formats/string.js
@@ -0,0 +1,63 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+Active.Formats.String = Active.System.Format.subclass();
+
+Active.Formats.String.create = function(){
+
+/****************************************************************
+
+ String data format.
+
+*****************************************************************/
+
+ var obj = this.prototype;
+
+/****************************************************************
+
+ Transforms the wire data into the primitive value.
+
+ @param data (String) Wire data.
+ @return Primitive value.
+
+*****************************************************************/
+
+ obj.dataToValue = function(data){
+ return data.toUpperCase();
+ };
+
+/****************************************************************
+
+ Transforms the wire data into the readable text.
+
+ @param data (String) Wire data.
+ @return Readable text.
+
+*****************************************************************/
+
+ obj.dataToText = function(data){
+ return data;
+ };
+};
+
+Active.Formats.String.create();
+
diff --git a/www/extras/assetManager/ActiveWidgets/source/lib/grid.js b/www/extras/assetManager/ActiveWidgets/source/lib/grid.js
new file mode 100755
index 000000000..a255a8f02
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/lib/grid.js
@@ -0,0 +1,58 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+$import("namespaces/grid.js");
+$import("browsers/gecko.js");
+$import("system/object.js");
+$import("system/model.js");
+$import("system/format.js");
+$import("system/html.js");
+$import("system/template.js");
+$import("system/control.js");
+$import("formats/string.js");
+$import("formats/number.js");
+$import("formats/date.js");
+$import("html/tags.js");
+$import("templates/status.js");
+$import("templates/error.js");
+$import("templates/text.js");
+$import("templates/image.js");
+$import("templates/link.js");
+$import("templates/item.js");
+$import("templates/list.js");
+$import("templates/row.js");
+$import("templates/header.js");
+$import("templates/box.js");
+$import("templates/scroll.js");
+$import("controls/grid.js");
+$import("http/request.js");
+$import("text/table.js");
+$import("xml/table.js");
+
+// ------------------------------------------------------------
+
+function $import(path){
+ var i, base, src = "grid.js", scripts = document.getElementsByTagName("script");
+ for (i=0; i" + "script>");
+}
+
diff --git a/www/extras/assetManager/ActiveWidgets/source/lib/html/tags.js b/www/extras/assetManager/ActiveWidgets/source/lib/html/tags.js
new file mode 100755
index 000000000..595c0fa61
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/lib/html/tags.js
@@ -0,0 +1,40 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+Active.HTML.define = function(name, tag, type){
+ if (!tag) {tag = name.toLowerCase()}
+ Active.HTML[name] = Active.System.HTML.subclass();
+ Active.HTML[name].create = function(){};
+ Active.HTML[name].prototype.setTag(tag);
+};
+
+// ------------------------------------------------------------
+
+Active.HTML.define("DIV");
+Active.HTML.define("SPAN");
+Active.HTML.define("IMG");
+Active.HTML.define("INPUT");
+Active.HTML.define("BUTTON");
+Active.HTML.define("TEXTAREA");
+Active.HTML.define("TABLE");
+Active.HTML.define("TR");
+Active.HTML.define("TD");
diff --git a/www/extras/assetManager/ActiveWidgets/source/lib/http/request.js b/www/extras/assetManager/ActiveWidgets/source/lib/http/request.js
new file mode 100755
index 000000000..57a6869b6
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/lib/http/request.js
@@ -0,0 +1,249 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+Active.HTTP.Request = Active.System.Model.subclass();
+
+Active.HTTP.Request.create = function(){
+
+/****************************************************************
+
+ Generic HTTP request class.
+
+*****************************************************************/
+
+ var obj = this.prototype;
+
+/****************************************************************
+
+ Sets or retrieves the remote data URL.
+
+*****************************************************************/
+
+ obj.defineProperty("URL");
+
+/****************************************************************
+
+ Indicates whether asynchronous download is permitted.
+
+*****************************************************************/
+
+ obj.defineProperty("async", true);
+
+/****************************************************************
+
+ Specifies HTTP request method.
+
+*****************************************************************/
+
+ obj.defineProperty("requestMethod", "GET");
+
+/****************************************************************
+
+ Allows to send data with the request.
+
+*****************************************************************/
+
+ obj.defineProperty("requestData", "");
+
+/****************************************************************
+
+ Returns response text.
+
+*****************************************************************/
+
+ obj.defineProperty("responseText", function(){return this._http ? this._http.responseText : ""});
+
+/****************************************************************
+
+ Returns response XML.
+
+*****************************************************************/
+
+ obj.defineProperty("responseXML", function(){return this._http ? this._http.responseXML : ""});
+
+/****************************************************************
+
+ Sets or retrieves the user name.
+
+*****************************************************************/
+
+ obj.defineProperty("username", null);
+
+/****************************************************************
+
+ Sets or retrieves the password.
+
+*****************************************************************/
+
+ obj.defineProperty("password", null);
+
+/****************************************************************
+
+ Allows to specify namespaces for use in XPath expressions.
+
+ @param name (String) The namespace alias.
+ @param value (String) The namespace URL.
+
+*****************************************************************/
+
+ obj.setNamespace = function(name, value){
+ this._namespaces += " xmlns:" + name + "=\"" + value + "\"";
+ };
+
+ obj._namespaces = "";
+
+/****************************************************************
+
+ Allows to specify the request arguments/parameters.
+
+ @param name (String) The parameter name.
+ @param value (String) The parameter value.
+
+*****************************************************************/
+
+ obj.setParameter = function(name, value){
+ this["_" + name + "Parameter"] = value;
+ if (!this._parameters.match(name)) {this._parameters += " " + name}
+ };
+
+ obj._parameters = "";
+
+/****************************************************************
+
+ Sets HTTP request header.
+
+ @param name (String) The request header name.
+ @param value (String) The request header value.
+
+*****************************************************************/
+
+ obj.setRequestHeader = function(name, value){
+ this["_" + name + "Header"] = value;
+ if (!this._headers.match(name)) {this._headers += " " + name}
+ };
+
+ obj._headers = "";
+
+ obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+
+/****************************************************************
+
+ Returns HTTP response header (for example "Content-Type").
+
+*****************************************************************/
+
+ obj.getResponseHeader = function(name){
+ return this._http ? this._http.getResponseHeader(name) : "";
+ };
+
+
+/****************************************************************
+
+ Sends the request.
+
+*****************************************************************/
+
+ obj.request = function(){
+ var self = this;
+
+ this._ready = false;
+
+ var i, name, value, data = "", params = this._parameters.split(" ");
+ for (i=1; i=0; j--){
+ param1 = getParamStr(j);
+ param2 = getParamStr(this._innerParamLength + j);
+ if (param1 != param2) {html = html.replace(param1, param2)}
+ this[param2] = item[param1];
+ }
+ this._innerParamLength += item._outerParamLength;
+ s += html;
+ }
+ else {
+ s += value;
+ }
+ }
+ this._innerHTML = s;
+ return s;
+ }
+ catch(error){
+ this.handle(error);
+ }
+ };
+
+// ------------------------------------------------------------
+
+ obj.outerHTML = function(){
+
+ // Returns 'outer HTML' string for an object.
+
+ try {
+
+ // just return cached value if available
+ if (this._outerHTML) {return this._outerHTML}
+
+ // build inner HTML first
+ var innerHTML = this.innerHTML();
+
+ // reset param count
+ this._outerParamLength = this._innerParamLength;
+
+ // elementless templates
+ if (!this._tag) {return innerHTML}
+
+ var i, tmp, name, value, param;
+
+ var html = "<" + this._tag + " id=\"{id}\"";
+
+ tmp = "";
+ var classes = this._classes.split(" ");
+ for (i=1; i" + innerHTML + "" + this._tag + ">";
+
+ // save the result in cache and return
+ this._outerHTML = html;
+ return html;
+ }
+ catch(error){
+ this.handle(error);
+ }
+ };
+
+/****************************************************************
+
+ Returns HTML markup string for the object.
+
+ @return HTML string.
+
+ Direct or implicit
+ call to ‘toString’ method returns properly formatted HTML
+ markup string, which can be used in document.write() call or
+ assigned to the page innerHTML property.
+
+*****************************************************************/
+
+ obj.toString = function(){
+ try {
+
+ var i, s = this._outerHTML;
+ if (!s) {s = this.outerHTML()}
+ s = s.replace(/\{id\}/g, this.getId());
+
+ var max = this._outerParamLength;
+
+ for (i=0; i data.offsetHeight ? data.scrollHeight : 0;
+ space.runtimeStyle.width = data.scrollWidth > data.offsetWidth ? data.scrollWidth : 0;
+
+ var y = scrollbars.clientHeight;
+ var x = scrollbars.clientWidth;
+
+ data.runtimeStyle.width = x;
+ top.runtimeStyle.width = x;
+ data.runtimeStyle.height = y;
+ left.runtimeStyle.height = y;
+
+ top.scrollLeft = data.scrollLeft;
+ left.scrollTop = data.scrollTop;
+
+ scrollbars.runtimeStyle.zIndex = 0;
+ }
+ else {
+ this.timeout(adjustSize, 500);
+ }
+
+ data.className = data.className + "";
+ }
+
+ data = null;
+ scrollbars = null;
+ top = null;
+ left = null;
+ space = null;
+
+ this._sizeAdjusted = true;
+ };
+
+ // delay for grid col resize
+ obj.setAction("adjustSize", function(){this.timeout(adjustSize, 500);});
+
+ obj.toString = function(){
+ this.timeout(adjustSize);
+ return _super.toString.call(this);
+ };
+
+};
+
+Active.Templates.Scroll.create();
diff --git a/www/extras/assetManager/ActiveWidgets/source/lib/templates/status.js b/www/extras/assetManager/ActiveWidgets/source/lib/templates/status.js
new file mode 100755
index 000000000..3a12cbaba
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/lib/templates/status.js
@@ -0,0 +1,46 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+Active.Templates.Status = Active.System.Template.subclass();
+
+Active.Templates.Status.create = function(){
+
+/****************************************************************
+
+ Displays status text.
+
+*****************************************************************/
+
+ var obj = this.prototype;
+
+ obj.setClass("templates", "status");
+
+ var image = new Active.HTML.SPAN;
+
+ image.setClass("box", "image");
+ image.setClass("image", function(){return this.getStatusProperty("image")});
+
+ obj.setContent("image", image);
+ obj.setContent("text", function(){return this.getStatusProperty("text")});
+};
+
+Active.Templates.Status.create();
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/source/lib/templates/text.js b/www/extras/assetManager/ActiveWidgets/source/lib/templates/text.js
new file mode 100755
index 000000000..61e0d5721
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/lib/templates/text.js
@@ -0,0 +1,40 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+Active.Templates.Text = Active.System.Template.subclass();
+
+Active.Templates.Text.create = function(){
+
+/****************************************************************
+
+ Simple text template.
+
+*****************************************************************/
+
+ var obj = this.prototype;
+
+ obj.setClass("templates", "text");
+ obj.setContent("text", function(){return this.getItemProperty("text")});
+ obj.setEvent("onclick", function(){this.action("click")});
+};
+
+Active.Templates.Text.create();
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/source/lib/text/table.js b/www/extras/assetManager/ActiveWidgets/source/lib/text/table.js
new file mode 100755
index 000000000..83e124be7
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/lib/text/table.js
@@ -0,0 +1,137 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+Active.Text.Table = Active.HTTP.Request.subclass();
+
+Active.Text.Table.create = function(){
+
+/****************************************************************
+
+ Table model for loading and parsing data in CSV text format.
+
+*****************************************************************/
+
+ var obj = this.prototype;
+ var _super = this.superclass.prototype;
+
+/****************************************************************
+
+ Allows to process the received text.
+
+ @param text (String) The downloaded text.
+
+*****************************************************************/
+
+ obj.response = function(text){
+ var i, s, table = [], a = text.split(/\r*\n/);
+
+ var pattern = new RegExp("(^|\\t|,)(\"*|'*)(.*?)\\2(?=,|\\t|$)", "g");
+
+ for (i=0; i
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var self = this;
+ this._resize = function(event){self.onresize(event)};
+ window.addEventListener("resize", this._resize, false);
+ this.onresize({type:"resize"});
+
+
+ window.removeEventListener("resize", this._resize, false);
+ this._resize = null;
+
+
+
+
+
+
+ var self = this;
+ this._mouseenter = function(event){
+ if (!self.getAttribute("onmouseenter")) {return}
+ (new Function(self.getAttribute("onmouseenter"))).call(self, event);
+ };
+ this._mouseleave = function(event){
+ if (!self.getAttribute("onmouseleave")) {return}
+ (new Function(self.getAttribute("onmouseleave"))).call(self, event);
+ };
+ this.addEventListener("mouseover", this._mouseenter, false);
+ this.addEventListener("mouseout", this._mouseleave, false);
+
+
+ this.removeEventListener("mouseover", this._mouseenter, false);
+ this.removeEventListener("mouseout", this._mouseleave, false);
+ this._mouseenter = null;
+ this._mouseleave = null;
+
+
+
+
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/classic/grid.css b/www/extras/assetManager/ActiveWidgets/source/styles/classic/grid.css
new file mode 100755
index 000000000..af883a44d
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/classic/grid.css
@@ -0,0 +1,27 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+@import "_common.css";
+@import "_box.css";
+@import "_scroll.css";
+@import "_grid.css";
+@import "_images.css";
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/classic/grid.png b/www/extras/assetManager/ActiveWidgets/source/styles/classic/grid.png
new file mode 100755
index 000000000..a2c173213
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/source/styles/classic/grid.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/classic/icons.png b/www/extras/assetManager/ActiveWidgets/source/styles/classic/icons.png
new file mode 100755
index 000000000..aeff091a5
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/source/styles/classic/icons.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/classic/loading.gif b/www/extras/assetManager/ActiveWidgets/source/styles/classic/loading.gif
new file mode 100755
index 000000000..96cb44720
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/source/styles/classic/loading.gif differ
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/flat/_box.css b/www/extras/assetManager/ActiveWidgets/source/styles/flat/_box.css
new file mode 100755
index 000000000..fc8f4a8ec
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/flat/_box.css
@@ -0,0 +1,120 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+.active-box-normal {
+ position: relative; /* for z-index to work */
+ overflow-y: hidden; /* for auto-size, overflow:hidden is 30% faster */
+ height: 18px;
+ width: 100%;
+ vertical-align: top;
+ border-width: 1px;
+ border-style: none none solid none;
+ border-color: #c1cdd8;
+ color: #10659e;
+}
+
+.active-box-item {
+ -moz-box-flex: 1;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ width: 100%;
+ height: 100%;
+ padding: 0px 5px;
+ border-width: 1px;
+ border-style: none;
+ background-color: #dbeaf5;
+}
+
+.active-box-item.gecko {
+ -moz-binding: url(gecko.xml#item);
+}
+
+.active-gecko-item {
+ display: -moz-inline-box;
+ height: 100%;
+ -moz-box-align: center;
+}
+
+.active-box-image {
+ overflow: hidden; /* IE55 */
+ top: 0px;
+ left: 0px;
+ width: 16px;
+ height: 100%;
+ line-height: 1px;
+ vertical-align: middle;
+ margin: 0px 3px -1px 0px;
+}
+
+.active-box-image.gecko {
+ display: -moz-inline-box;
+ vertical-align: top;
+}
+
+.active-image-none {
+ width: 0px;
+ margin-right: 0px;
+}
+
+.active-box-resize {
+ position: absolute;
+ overflow: hidden;
+ top: 0px;
+ right: -5px;
+ width: 10px;
+ height: 100%;
+ font-size: 100px;
+ cursor: e-resize;
+}
+
+.active-box-sort {
+ display: -moz-inline-box;
+ overflow: hidden;
+ width: 0px;
+ height: 100%;
+ vertical-align: top;
+}
+
+.active-box-item .active-box-image.gecko,
+.active-box-item .active-box-sort.gecko {
+ height: 16px;
+}
+
+.active-sort-ascending .active-box-sort {
+ width: 16px;
+ background: url(grid.png) -20px 50% no-repeat;
+}
+
+.active-sort-descending .active-box-sort {
+ width: 16px;
+ background: url(grid.png) -40px 50% no-repeat;
+}
+
+.active-box-resize.gecko {
+ position: relative;
+ margin-left: -5px;
+ margin-right: -5px;
+ line-height: 12px;
+ z-index: 1000;
+}
+
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/flat/_common.css b/www/extras/assetManager/ActiveWidgets/source/styles/flat/_common.css
new file mode 100755
index 000000000..1eae491db
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/flat/_common.css
@@ -0,0 +1,38 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+xml {
+ display: none;
+}
+
+.gecko {
+ -moz-box-sizing: border-box;
+}
+
+.gecko[onresize] {
+ -moz-binding: url(gecko.xml#resize);
+}
+
+.gecko[onmouseenter], .gecko[onmouseleave] {
+ -moz-binding: url(gecko.xml#mouse);
+}
+
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/flat/_grid.css b/www/extras/assetManager/ActiveWidgets/source/styles/flat/_grid.css
new file mode 100755
index 000000000..977396a31
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/flat/_grid.css
@@ -0,0 +1,122 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+.active-controls-grid {
+ position: relative; /* this makes absolute positioning work in NS */
+ overflow: hidden;
+ width: 100%;
+ height: 100%;
+ cursor: default;
+ -moz-user-focus: normal;
+ -moz-user-select: none; /* breaks resize capture */
+}
+
+.active-templates-header {
+ display: inline;
+ width: 100px;
+ height: 100%;
+}
+
+.active-header-over .active-box-item {
+ color: #104a7b;
+ background: #e9f2f8;
+}
+
+.active-header-pressed {
+ background: #a0c6e5;
+}
+
+.active-header-pressed .active-box-item {
+ position: relative;
+ left: 1px;
+ top: 1px;
+ background: #a0c6e5;
+}
+
+.active-templates-header.gecko {
+ display: -moz-inline-box;
+}
+
+.active-templates-row {
+ overflow-y: hidden;
+ white-space: nowrap;
+ width: 100%;
+ height: 18px;
+ -moz-user-select: none;
+/* border-bottom: 1px solid threedlightshadow; */
+}
+
+.active-row-cell {
+ display: inline;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ width: 100px;
+ height: 100%;
+ padding: 0px 5px;
+/* border-right: 1px solid threedshadow; */
+ line-height: 17px;
+}
+
+.active-row-cell.gecko {
+ display: -moz-inline-box;
+}
+
+.active-selection-true, .active-selection-true .active-row-cell {
+ background-color: #c1cdd8!important;
+}
+
+.active-column-0 {z-index: 99}
+.active-column-1 {z-index: 98}
+.active-column-2 {z-index: 97}
+.active-column-3 {z-index: 96}
+.active-column-4 {z-index: 95}
+.active-column-5 {z-index: 94}
+.active-column-6 {z-index: 93}
+.active-column-7 {z-index: 92}
+.active-column-8 {z-index: 91}
+.active-column-9 {z-index: 90}
+.active-column-10 {z-index: 89}
+.active-column-11 {z-index: 88}
+.active-column-12 {z-index: 87}
+.active-column-13 {z-index: 86}
+.active-column-14 {z-index: 85}
+.active-column-15 {z-index: 84}
+.active-column-16 {z-index: 83}
+.active-column-17 {z-index: 82}
+.active-column-18 {z-index: 81}
+.active-column-19 {z-index: 80}
+
+.active-templates-text, .active-templates-image {
+ -moz-binding: url(gecko.xml#box);
+}
+
+.active-gecko-box {
+ -moz-box-flex: 1;
+ overflow: hidden; /* doesn't hide line/font overflow */
+ /* overflow: -moz-scrollbars-none; works OK but slow */
+ height: 100%;
+ width: 100%;
+}
+
+.active-templates-status, .active-templates-error {
+ padding: 5px;
+}
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/flat/_images.css b/www/extras/assetManager/ActiveWidgets/source/styles/flat/_images.css
new file mode 100755
index 000000000..80bb1d406
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/flat/_images.css
@@ -0,0 +1,42 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+.active-image-txt {background: url(icons.png) -20px 50% }
+.active-image-htm {background: url(icons.png) -40px 50% }
+.active-image-xls {background: url(icons.png) -60px 50% }
+.active-image-doc {background: url(icons.png) -80px 50% }
+.active-image-pdf {background: url(icons.png) -100px 50% }
+.active-image-xml {background: url(icons.png) -120px 50% }
+.active-image-msi {background: url(icons.png) -140px 50% }
+.active-image-chm {background: url(icons.png) -160px 50% }
+
+.active-box-image {background-repeat: no-repeat}
+
+.active-image-loading {
+ position: relative;
+ top: 20px;
+ left: 0px;
+ width: 107px;
+ height: 13px;
+ margin-right: -107px;
+ background: url(loading.gif) no-repeat;
+}
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/flat/_scroll.css b/www/extras/assetManager/ActiveWidgets/source/styles/flat/_scroll.css
new file mode 100755
index 000000000..b85833106
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/flat/_scroll.css
@@ -0,0 +1,97 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+.active-scroll-data {
+ position: absolute;
+ overflow: hidden;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ height: 100%;
+ padding: 18px 0px 0px 28px;
+ z-index: 1;
+}
+
+.active-scroll-top {
+ position: absolute;
+ overflow: hidden;
+ white-space: nowrap;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ height: 18px;
+ padding: 0px 20px 0px 28px;
+ z-index: 2;
+}
+
+.active-scroll-left {
+ position: absolute;
+ overflow: hidden;
+ top: 0px;
+ left: 0px;
+ width: 28px;
+ height: 100%;
+ padding: 18px 0px 20px 0px;
+ text-align: center;
+ z-index: 2;
+}
+
+.active-scroll-corner {
+ position: absolute;
+ overflow: hidden;
+ top: 0px;
+ left: 0px;
+ width: 28px;
+ height: 18px;
+ z-index: 3;
+}
+
+.active-scroll-bars {
+ position: absolute;
+ overflow: auto;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ height: 100%;
+ padding: 0px;
+ z-index: 4;
+}
+
+.active-scroll-space {
+ width: 0px; /* adjusted after printout/resize */
+ height: 0px;
+}
+
+.active-scroll-fill {
+ display: inline;
+ height: 100%;
+}
+
+.active-scroll-fill.gecko {
+ display: -moz-inline-box;
+}
+
+.active-scroll-data.gecko,
+.active-scroll-top.gecko,
+.active-scroll-left.gecko {
+ overflow: -moz-scrollbars-none;
+}
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/flat/gecko.xml b/www/extras/assetManager/ActiveWidgets/source/styles/flat/gecko.xml
new file mode 100755
index 000000000..c3ddb3f23
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/flat/gecko.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var self = this;
+ this._resize = function(event){self.onresize(event)};
+ window.addEventListener("resize", this._resize, false);
+ this.onresize({type:"resize"});
+
+
+ window.removeEventListener("resize", this._resize, false);
+ this._resize = null;
+
+
+
+
+
+
+ var self = this;
+ this._mouseenter = function(event){
+ if (!self.getAttribute("onmouseenter")) {return}
+ (new Function(self.getAttribute("onmouseenter"))).call(self, event);
+ };
+ this._mouseleave = function(event){
+ if (!self.getAttribute("onmouseleave")) {return}
+ (new Function(self.getAttribute("onmouseleave"))).call(self, event);
+ };
+ this.addEventListener("mouseover", this._mouseenter, false);
+ this.addEventListener("mouseout", this._mouseleave, false);
+
+
+ this.removeEventListener("mouseover", this._mouseenter, false);
+ this.removeEventListener("mouseout", this._mouseleave, false);
+ this._mouseenter = null;
+ this._mouseleave = null;
+
+
+
+
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/flat/grid.css b/www/extras/assetManager/ActiveWidgets/source/styles/flat/grid.css
new file mode 100755
index 000000000..af883a44d
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/flat/grid.css
@@ -0,0 +1,27 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+@import "_common.css";
+@import "_box.css";
+@import "_scroll.css";
+@import "_grid.css";
+@import "_images.css";
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/flat/grid.png b/www/extras/assetManager/ActiveWidgets/source/styles/flat/grid.png
new file mode 100755
index 000000000..3a42b539b
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/source/styles/flat/grid.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/flat/icons.png b/www/extras/assetManager/ActiveWidgets/source/styles/flat/icons.png
new file mode 100755
index 000000000..aeff091a5
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/source/styles/flat/icons.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/flat/loading.gif b/www/extras/assetManager/ActiveWidgets/source/styles/flat/loading.gif
new file mode 100755
index 000000000..96cb44720
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/source/styles/flat/loading.gif differ
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/xp/_box.css b/www/extras/assetManager/ActiveWidgets/source/styles/xp/_box.css
new file mode 100755
index 000000000..dc7286a79
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/xp/_box.css
@@ -0,0 +1,124 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+.active-box-normal {
+ position: relative; /* for z-index to work */
+ overflow-y: hidden; /* for auto-size, overflow:hidden is 30% faster */
+ height: 18px;
+ width: 100%;
+ vertical-align: top;
+ border-width: 1px;
+ border-style: none none solid none;
+ border-color: #cbc7b8;
+ background-color: #d6d2c2!important;
+ padding-bottom: 1px;
+}
+
+.active-box-item {
+ -moz-box-flex: 1;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ width: 100%;
+ height: 100%;
+ padding: 0px 5px;
+ border-width: 1px;
+ border-style: none none solid none;
+ border-color: #e2decd;
+ background-color: #ebeadb;
+}
+
+.active-box-item.gecko {
+ -moz-binding: url(gecko.xml#item);
+}
+
+.active-gecko-item {
+ display: -moz-inline-box;
+ height: 100%;
+ -moz-box-align: center;
+}
+
+.active-box-image {
+ overflow: hidden; /* IE55 */
+ top: 0px;
+ left: 0px;
+ width: 16px;
+ height: 100%;
+ line-height: 1px;
+ vertical-align: middle;
+ margin: 0px 3px -1px 0px;
+}
+
+.active-box-image.gecko {
+ display: -moz-inline-box;
+ vertical-align: top;
+}
+
+.active-image-none {
+ width: 0px;
+ margin-right: 0px;
+}
+
+.active-box-resize {
+ position: absolute;
+ overflow: hidden;
+ top: 15%;
+ right: -5px;
+ width: 10px;
+ height: 70%;
+ font-size: 100px;
+ background: url(grid.png) -75px 0px no-repeat;
+ cursor: e-resize;
+}
+
+.active-box-sort {
+ display: -moz-inline-box;
+ overflow: hidden;
+ width: 0px;
+ height: 100%;
+ vertical-align: top;
+}
+
+.active-box-item .active-box-image.gecko,
+.active-box-item .active-box-sort.gecko {
+ height: 16px;
+}
+
+.active-sort-ascending .active-box-sort {
+ width: 16px;
+ background: url(grid.png) -20px 50% no-repeat;
+}
+
+.active-sort-descending .active-box-sort {
+ width: 16px;
+ background: url(grid.png) -40px 50% no-repeat;
+}
+
+.active-box-resize.gecko {
+ position: relative;
+ top: 15%;
+ margin-left: -5px;
+ margin-right: -5px;
+ line-height: 12px;
+ z-index: 1000;
+}
+
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/xp/_common.css b/www/extras/assetManager/ActiveWidgets/source/styles/xp/_common.css
new file mode 100755
index 000000000..1eae491db
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/xp/_common.css
@@ -0,0 +1,38 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+xml {
+ display: none;
+}
+
+.gecko {
+ -moz-box-sizing: border-box;
+}
+
+.gecko[onresize] {
+ -moz-binding: url(gecko.xml#resize);
+}
+
+.gecko[onmouseenter], .gecko[onmouseleave] {
+ -moz-binding: url(gecko.xml#mouse);
+}
+
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/xp/_grid.css b/www/extras/assetManager/ActiveWidgets/source/styles/xp/_grid.css
new file mode 100755
index 000000000..a74f9b7ff
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/xp/_grid.css
@@ -0,0 +1,139 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+.active-controls-grid {
+ position: relative; /* this makes absolute positioning work in NS */
+ overflow: hidden;
+ width: 100%;
+ height: 100%;
+ cursor: default;
+ -moz-user-focus: normal;
+ -moz-user-select: none; /* breaks resize capture */
+}
+
+.active-templates-header {
+ display: inline;
+ width: 100px;
+ height: 100%;
+}
+
+.active-header-over {
+ border-color: #f9b119;
+ background: #fcc247!important;
+}
+
+.active-header-over .active-box-item {
+ border-color: #f9a900;
+ background: #faf9f4;
+}
+
+.active-header-over .active-box-resize {
+ background: none;
+}
+
+.active-header-pressed {
+ border-color: threeddarkshadow threedhighlight threedhighlight threeddarkshadow;
+}
+
+.active-header-pressed .active-box-item {
+ position: relative;
+ left: 1px;
+ top: 1px;
+ border-color: threedface;
+}
+
+.active-templates-header.gecko {
+ display: -moz-inline-box;
+}
+
+.active-templates-row {
+ overflow-y: hidden;
+ white-space: nowrap;
+ width: 100%;
+ height: 18px;
+ -moz-user-select: none;
+/* border-bottom: 1px solid threedlightshadow; */
+}
+
+.active-row-cell {
+ display: inline;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ width: 100px;
+ height: 100%;
+ padding: 0px 5px;
+/* border-right: 1px solid threedshadow; */
+ line-height: 17px;
+}
+
+.active-row-cell.gecko {
+ display: -moz-inline-box;
+}
+
+.active-selection-true, .active-selection-true .active-row-cell {
+ color: highlighttext!important;
+ background-color: highlight!important;
+}
+
+.active-column-0 {z-index: 99}
+.active-column-1 {z-index: 98}
+.active-column-2 {z-index: 97}
+.active-column-3 {z-index: 96}
+.active-column-4 {z-index: 95}
+.active-column-5 {z-index: 94}
+.active-column-6 {z-index: 93}
+.active-column-7 {z-index: 92}
+.active-column-8 {z-index: 91}
+.active-column-9 {z-index: 90}
+.active-column-10 {z-index: 89}
+.active-column-11 {z-index: 88}
+.active-column-12 {z-index: 87}
+.active-column-13 {z-index: 86}
+.active-column-14 {z-index: 85}
+.active-column-15 {z-index: 84}
+.active-column-16 {z-index: 83}
+.active-column-17 {z-index: 82}
+.active-column-18 {z-index: 81}
+.active-column-19 {z-index: 80}
+
+.active-templates-text, .active-templates-image {
+ -moz-binding: url(gecko.xml#box);
+}
+
+.active-gecko-box {
+ -moz-box-flex: 1;
+ overflow: hidden; /* doesn't hide line/font overflow */
+ /* overflow: -moz-scrollbars-none; works OK but slow */
+ height: 100%;
+ width: 100%;
+}
+
+.active-templates-status, .active-templates-error {
+ padding: 5px;
+}
+
+
+.active-scroll-left .active-box-normal {
+ border-top: 1px solid #faf9f4;
+ border-right: 1px solid #d6d2c2;
+ border-bottom: none;
+}
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/xp/_images.css b/www/extras/assetManager/ActiveWidgets/source/styles/xp/_images.css
new file mode 100755
index 000000000..80bb1d406
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/xp/_images.css
@@ -0,0 +1,42 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+.active-image-txt {background: url(icons.png) -20px 50% }
+.active-image-htm {background: url(icons.png) -40px 50% }
+.active-image-xls {background: url(icons.png) -60px 50% }
+.active-image-doc {background: url(icons.png) -80px 50% }
+.active-image-pdf {background: url(icons.png) -100px 50% }
+.active-image-xml {background: url(icons.png) -120px 50% }
+.active-image-msi {background: url(icons.png) -140px 50% }
+.active-image-chm {background: url(icons.png) -160px 50% }
+
+.active-box-image {background-repeat: no-repeat}
+
+.active-image-loading {
+ position: relative;
+ top: 20px;
+ left: 0px;
+ width: 107px;
+ height: 13px;
+ margin-right: -107px;
+ background: url(loading.gif) no-repeat;
+}
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/xp/_scroll.css b/www/extras/assetManager/ActiveWidgets/source/styles/xp/_scroll.css
new file mode 100755
index 000000000..b85833106
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/xp/_scroll.css
@@ -0,0 +1,97 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+.active-scroll-data {
+ position: absolute;
+ overflow: hidden;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ height: 100%;
+ padding: 18px 0px 0px 28px;
+ z-index: 1;
+}
+
+.active-scroll-top {
+ position: absolute;
+ overflow: hidden;
+ white-space: nowrap;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ height: 18px;
+ padding: 0px 20px 0px 28px;
+ z-index: 2;
+}
+
+.active-scroll-left {
+ position: absolute;
+ overflow: hidden;
+ top: 0px;
+ left: 0px;
+ width: 28px;
+ height: 100%;
+ padding: 18px 0px 20px 0px;
+ text-align: center;
+ z-index: 2;
+}
+
+.active-scroll-corner {
+ position: absolute;
+ overflow: hidden;
+ top: 0px;
+ left: 0px;
+ width: 28px;
+ height: 18px;
+ z-index: 3;
+}
+
+.active-scroll-bars {
+ position: absolute;
+ overflow: auto;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ height: 100%;
+ padding: 0px;
+ z-index: 4;
+}
+
+.active-scroll-space {
+ width: 0px; /* adjusted after printout/resize */
+ height: 0px;
+}
+
+.active-scroll-fill {
+ display: inline;
+ height: 100%;
+}
+
+.active-scroll-fill.gecko {
+ display: -moz-inline-box;
+}
+
+.active-scroll-data.gecko,
+.active-scroll-top.gecko,
+.active-scroll-left.gecko {
+ overflow: -moz-scrollbars-none;
+}
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/xp/gecko.xml b/www/extras/assetManager/ActiveWidgets/source/styles/xp/gecko.xml
new file mode 100755
index 000000000..c3ddb3f23
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/xp/gecko.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ var self = this;
+ this._resize = function(event){self.onresize(event)};
+ window.addEventListener("resize", this._resize, false);
+ this.onresize({type:"resize"});
+
+
+ window.removeEventListener("resize", this._resize, false);
+ this._resize = null;
+
+
+
+
+
+
+ var self = this;
+ this._mouseenter = function(event){
+ if (!self.getAttribute("onmouseenter")) {return}
+ (new Function(self.getAttribute("onmouseenter"))).call(self, event);
+ };
+ this._mouseleave = function(event){
+ if (!self.getAttribute("onmouseleave")) {return}
+ (new Function(self.getAttribute("onmouseleave"))).call(self, event);
+ };
+ this.addEventListener("mouseover", this._mouseenter, false);
+ this.addEventListener("mouseout", this._mouseleave, false);
+
+
+ this.removeEventListener("mouseover", this._mouseenter, false);
+ this.removeEventListener("mouseout", this._mouseleave, false);
+ this._mouseenter = null;
+ this._mouseleave = null;
+
+
+
+
\ No newline at end of file
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/xp/grid.css b/www/extras/assetManager/ActiveWidgets/source/styles/xp/grid.css
new file mode 100755
index 000000000..af883a44d
--- /dev/null
+++ b/www/extras/assetManager/ActiveWidgets/source/styles/xp/grid.css
@@ -0,0 +1,27 @@
+/*****************************************************************
+
+ ActiveWidgets Grid 1.0.0 (Free Edition).
+ Copyright (C) 2004 ActiveWidgets Ltd. All Rights Reserved.
+ More information at http://www.activewidgets.com/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*****************************************************************/
+
+@import "_common.css";
+@import "_box.css";
+@import "_scroll.css";
+@import "_grid.css";
+@import "_images.css";
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/xp/grid.png b/www/extras/assetManager/ActiveWidgets/source/styles/xp/grid.png
new file mode 100755
index 000000000..42d50b364
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/source/styles/xp/grid.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/xp/icons.png b/www/extras/assetManager/ActiveWidgets/source/styles/xp/icons.png
new file mode 100755
index 000000000..aeff091a5
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/source/styles/xp/icons.png differ
diff --git a/www/extras/assetManager/ActiveWidgets/source/styles/xp/loading.gif b/www/extras/assetManager/ActiveWidgets/source/styles/xp/loading.gif
new file mode 100755
index 000000000..96cb44720
Binary files /dev/null and b/www/extras/assetManager/ActiveWidgets/source/styles/xp/loading.gif differ
diff --git a/www/extras/assetManager/Asset.js b/www/extras/assetManager/Asset.js
new file mode 100644
index 000000000..ca2bbafbb
--- /dev/null
+++ b/www/extras/assetManager/Asset.js
@@ -0,0 +1,123 @@
+
+//--------Constructor--------------------
+
+function Asset() {
+ //properties
+ this.url = "";
+ this.rank = 1;
+ this.assetId = "";
+ this.type = "";
+ this.title = "";
+ this.size = 0;
+ this.lastUpdate = "";
+ this.icon = "";
+ this.div = null;
+
+ //methods
+ this.edit = Asset_edit;
+ this.view = Asset_view;
+ this.editTree=Asset_editTree;
+ this.setParent=Asset_setParent;
+ this.setRank=Asset_setRank;
+ this.remove = Asset_remove;
+ this.cut = Asset_cut;
+ this.copy = Asset_copy;
+ this.displayContextMenu = Asset_displayContextMenu;
+ this.displayProperties = Asset_displayProperties;
+}
+
+//---------Method Implementations -------------
+
+
+//url + ?||& + func=editTree
+function Asset_editTree() {
+ location.href = manager.tools.addParamDelimiter(this.url) + "func=editTree";
+}
+
+//Moving to a new parent (move)
+//----------------------
+//url + ?||& + func=setParent&assetId= + assetId
+function Asset_setParent(parentId) {
+ location.href = manager.tools.addParamDelimiter(this.url) + "func=setParent&assetId="+ parentId;
+}
+
+//Set the rank of an asset amongst its siblings (move)
+//---------------------------------------------
+//url + ?||& + func=setRank&rank= + newRank
+function Asset_setRank(rank) {
+ alert("setting rank");
+ location.href = manager.tools.addParamDelimiter(this.url) + "func=setRank&rank="+ rank;
+}
+
+//View an asset (view)
+//-------------
+//url + ?||& + func=view
+function Asset_view() {
+ location.href = manager.tools.addParamDelimiter(this.url) + "func=view";
+}
+
+//Copy an asset to the clipboard (copy)
+//------------------------------
+//url + ?||& + func=copy
+function Asset_copy() {
+ location.href = manager.tools.addParamDelimiter(this.url) + "func=copyList&assetId=" + this.assetId;
+}
+
+//Cut an asset to the clipboard (cut)
+//-----------------------------
+//url + ?||& + func=cut
+function Asset_cut() {
+ location.href = manager.tools.addParamDelimiter(this.url) + "func=cutList&assetId=" + this.assetId;
+}
+
+//Edit the properties of an asset (edit)
+//-------------------------------
+//url + ?||& + func=edit
+function Asset_edit() {
+ location.href = manager.tools.addParamDelimiter(this.url) + "func=edit";
+}
+
+//Delete an asset. (delete)
+//----------------
+//url + ?||& + func=delete (do a javascript confirm on this)
+function Asset_remove() {
+ if (window.confirm("Are you sure you want to delete this asset? Click OK to continue, or Cancel if you made a mistake.")) {
+ location.href = manager.tools.addParamDelimiter(this.url) + "func=deleteList&assetId=" + this.assetId;
+ }
+}
+
+//Constructs a properties window for this BpmNode and passes to the Diplay object for rendering.
+function Asset_displayProperties() {
+ html = "
';
+ this.contextMenu.innerHTML = html;
+
+ for (var k=0;k parseInt(this.contextMenu.offsetHeight)) {
+ this.contextMenu.style.top = y + document.body.scrollTop - this.contextMenu.offsetHeight -1;
+ }else {
+ this.contextMenu.style.top = (y + document.body.scrollTop + 3) + "px";
+ }
+ this.contextMenu.style.left= (x + document.body.scrollLeft) + "px";
+
+
+ manager.display.bringToFront(this.contextMenu);
+
+ //alert(this.contextMenu.style.top);
+ manager.tools.showObject(this.contextMenu);
+}
+
+//hides the context menu
+function ContextMenu_hide() {
+ for (var k=0;k";
+
+ propWindow = document.getElementById("propertiesWindow");
+ propWindow.innerHTML=temp;
+ propWindow.style.top=50 + document.body.scrollTop;
+ propWindow.style.left=50 + document.body.scrollLeft;
+ manager.tools.showObject(propWindow);
+ this.bringToFront(propWindow);
+}
+
+
+function Display_dragStart(firedobj,xCoordinate,yCoordinate) {
+ if (!firedobj) return null;
+
+
+
+ while (firedobj.tagName!=this.topLevelElement && firedobj.className.indexOf("active-templates-row") == -1 && firedobj.className != "dragable") {
+ firedobj=manager.display.dom? firedobj.parentNode : firedobj.parentElement
+ }
+
+
+ if (firedobj.className.indexOf("active-templates-row") == -1 && firedobj.className != "dragable") {
+ return;
+ }
+
+ this.dragEnabled=true;
+
+// while (firedobj.tagName!=this.topLevelElement) {
+ // for (i =0;ix1 && x < (x1 + obj.offsetWidth)) {
+ if (y> y1 && y< (y1 + obj.offsetHeight)) {
+ //for (j=0;j(y1 + obj.bpm.children[j].offsetTop) && y < (y1 + obj.bpm.children[j].offsetTop + obj.bpm.children[j].offsetHeight)) {
+ return obj;
+ // }
+ //}
+ }
+ }
+ }
+
+ return returnObj;
+}
+
+function Display_keyDown(e) {
+ if (e.keyCode == 46 && this.overObject && this.overObject != null) {
+ this.overObject.bpm.remove();
+ }
+}
+
+
+//checks to see if the scroll bars need to be adjusted
+function Display_adjustScrollBars(e) {
+ var scrY=0;
+ var scrX=0;
+
+ if (e.clientY > document.body.clientHeight-this.scrollJump) {
+ if (e.clientY + document.body.scrollTop < this.pageHeight - (this.scrollJump + 40)) {
+ scrY=this.scrollJump;
+ window.scroll(document.body.scrollLeft,document.body.scrollTop + scrY);
+ this.y-=scrY;
+ }
+ }else if (e.clientY < this.scrollJump) {
+ if (document.body.scrollTop < this.scrollJump) {
+ scrY = document.body.scrollTop;
+ }else {
+ scrY=this.scrollJump;
+ }
+ window.scroll(document.body.scrollLeft,document.body.scrollTop - scrY);
+ this.y+=scrY;
+ }
+
+
+ if (e.clientX > document.body.clientWidth-this.scrollJump) {
+ if (e.clientX + document.body.scrollLeft < this.pageWidth - (this.scrollJump + 40)) {
+ scrX=this.scrollJump;
+ window.scroll(document.body.scrollLeft + scrX,document.body.scrollTop);
+ this.x-=scrX;
+ }
+ }else if (e.clientX < this.scrollJump) {
+ if (document.body.scrollLeft < this.scrollJump) {
+ scrX = document.body.scrollLeft;
+ }else {
+ scrX=this.scrollJump;
+ }
+ window.scroll(document.body.scrollLeft - scrX,document.body.scrollTop);
+ this.x+=scrX;
+ }
+}
+
+
diff --git a/www/extras/assetManager/EventManager.js b/www/extras/assetManager/EventManager.js
new file mode 100644
index 000000000..70497c653
--- /dev/null
+++ b/www/extras/assetManager/EventManager.js
@@ -0,0 +1,118 @@
+
+//--------Constructor--------------------
+
+function EventManager() {
+ //int document events
+ document.onmousedown=EventManager_documentMouseDown;
+ document.onmouseup=EventManager_documentMouseUp;
+ document.onmousemove=EventManager_documentMouseMove;
+
+ document.onkeydown=EventManager_keyDown;
+
+ this.activityDoubleClick = EventManager_activityDoubleClick;
+ this.activityRightClick = EventManager_activityRightClick;
+ this.activityMouseDown = EventManager_activityMouseDown;
+
+}
+
+//---------Method Implementations -------------
+
+function EventManager_keyDown(e) {
+ var dom = document.getElementById&&!document.all;
+ e=dom? e : event;
+ manager.display.keyDown(e);
+ return false;
+}
+
+function EventManager_activityDoubleClick(e) {
+ var dom = document.getElementById&&!document.all;
+ var e=dom? e : event;
+ var obj =dom? e.target : e.srcElement
+ obj = manager.tools.getActivity(obj);
+ obj.edit();
+}
+
+function EventManager_activityRightClick(e) {
+ var dom = document.getElementById&&!document.all;
+ e=dom? e : event;
+
+ if (!dom) {
+ e.cancelBubble = true;
+ e.returnValue = false;
+ }
+
+ obj =dom? e.target : e.srcElement
+
+ obj = manager.tools.getActivity(obj);
+
+ manager.display.contextMenu.owner = obj;
+ obj.displayContextMenu(e.clientX,e.clientY);
+
+ return false;
+}
+
+function EventManager_activityMouseDown(e) {
+ var dom = document.getElementById&&!document.all;
+ e=dom? e : event;
+
+ if (e.button==2) {
+ //this is a hack to get the context menu stuff to work right in IE
+ if (!dom) {
+ obj =dom? e.target : e.srcElement
+ var asset = manager.tools.getActivity(obj);
+ manager.display.selectActivity(asset.div);
+ e.cancelBubble = true;
+ e.returnValue = false;
+ }
+ }
+
+ return false;
+}
+
+function EventManager_documentMouseDown(e) {
+ var dom = document.getElementById&&!document.all;
+ e=dom? e : event;
+ obj =dom? e.target : e.srcElement
+
+ var asset = manager.tools.getActivity(obj);
+
+ if (asset) {
+ manager.display.selectActivity(asset.div);
+ if (e.button != 2) {
+ manager.display.dragStart(asset.div,e.clientX,e.clientY);
+ return;
+ }
+ }
+
+
+
+ if (e.button != 2) {
+ manager.display.dragStart(obj,e.clientX,e.clientY);
+ }
+ return false;
+}
+
+function EventManager_documentMouseUp(e) {
+ var dom = document.getElementById&&!document.all;
+ e=dom? e : event;
+ obj =dom? e.target : e.srcElement
+ obj = manager.tools.getActivity(obj);
+
+ //if the pointer is still on the activity don't close the window.
+ if (manager.display.contextMenu.owner && (!obj || obj.div.id != manager.display.contextMenu.owner.div.id)) {
+ manager.display.contextMenu.hide();
+ }
+ manager.display.dragStop();
+ //if (obj) manager.display.selectActivity(obj);
+
+ manager.setEventHandlers();
+ return false;
+}
+
+function EventManager_documentMouseMove(e) {
+ var dom = document.getElementById&&!document.all;
+ e=dom? e : event;
+ manager.display.move(e);
+ return false;
+}
+
diff --git a/www/extras/assetManager/Tools.js b/www/extras/assetManager/Tools.js
new file mode 100644
index 000000000..16270e81b
--- /dev/null
+++ b/www/extras/assetManager/Tools.js
@@ -0,0 +1,128 @@
+
+//--------Constructor--------------------
+
+function Tools() {
+ this.dom=document.getElementById&&!document.all;
+ this.topLevelElement=this.dom? "HTML" : "BODY"
+ this.getActivity = Tools_getActivity;
+ this.debug = Tools_debug;
+ this.debugEnabled = false;
+ this.getElementChildren = Tools_getElementChildren;
+ this.showObject = Tools_showObject;
+ this.hideObject = Tools_hideObject;
+ this.cancelEvent = Tools_cancelEvent;
+ this.setCookie = Tools_setCookie;
+ this.getCookie = Tools_getCookie;
+ this.deleteCookie = Tools_deleteCookie;
+ this.addParamDelimiter = Tools_addParamDelimiter;
+ document.write('
');
+ document.write('');
+ document.write('
');
+
+ this.debugArea = document.getElementById("tools_debugArea");
+}
+
+//returns a ? or & based on contents of url
+function Tools_addParamDelimiter(url) {
+
+ var serverParts = location.href.split("/");
+ var server = serverParts[0] + "//" +serverParts[2];
+
+ if (url.indexOf("?") == -1) {
+ return server + url + "?";
+ }else {
+ return server + url + "&";
+ }
+}
+
+//---------Method Implementations -------------
+
+//utility method to cancle a build in event.
+//ex. Assume you do not want a link to work.
+// var tools = new Tools();
+// document.getElementById("linkID").onclick=tools.cancleEvent
+function Tools_cancelEvent() {
+ return false;
+}
+
+//recurses up a tree to get any activity of className activity
+function Tools_getActivity(obj) {
+ var parts = obj.id.split(".");
+ return manager.assets[parts[0] + "." + parts[1] + "." + parts[2]];
+}
+
+//shows a positionable element by toggling the style display property
+function Tools_showObject(obj) {
+ if (obj) {
+ obj.style.visibility="visible";
+ obj.style.display="block";
+ }
+}
+
+//hides a positionable element by toggling the style display property
+function Tools_hideObject(obj) {
+ if (obj) {
+ obj.style.display="none";
+ }
+}
+
+//gets the element children of a dom object
+function Tools_getElementChildren(obj) {
+ var myArray= new Array();
+ mycnt = 0;
+ for (i=0;i
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+