summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaksim <max@dhtmlx.com>2011-07-18 18:21:10 +0300
committerMaksim <max@dhtmlx.com>2011-07-18 18:21:10 +0300
commit5c2afae6cf595c981155ac68501ac2d1af77db54 (patch)
treeb07de6379fb3eb540df732a57061cafd05288599
downloadconnector-php-5c2afae6cf595c981155ac68501ac2d1af77db54.zip
connector-php-5c2afae6cf595c981155ac68501ac2d1af77db54.tar.gz
connector-php-5c2afae6cf595c981155ac68501ac2d1af77db54.tar.bz2
* import of php connector v1.2
-rw-r--r--README.md37
-rw-r--r--codebase/base_connector.php736
-rw-r--r--codebase/chart_connector.php18
-rw-r--r--codebase/combo_connector.php94
-rw-r--r--codebase/connector.js145
-rw-r--r--codebase/convert.php65
-rw-r--r--codebase/crosslink_connector.php123
-rw-r--r--codebase/data_connector.php163
-rw-r--r--codebase/dataprocessor.php493
-rw-r--r--codebase/dataview_connector.php69
-rw-r--r--codebase/db_common.php975
-rw-r--r--codebase/db_excel.php187
-rw-r--r--codebase/db_filesystem.php345
-rw-r--r--codebase/db_mssql.php70
-rw-r--r--codebase/db_mysqli.php56
-rw-r--r--codebase/db_oracle.php88
-rw-r--r--codebase/db_pdo.php69
-rw-r--r--codebase/db_postgre.php70
-rw-r--r--codebase/db_sqlite.php34
-rw-r--r--codebase/db_sqlsrv.php86
-rw-r--r--codebase/filesystem_item.php19
-rw-r--r--codebase/form_connector.php62
-rw-r--r--codebase/grid_config.php298
-rw-r--r--codebase/grid_connector.php273
-rw-r--r--codebase/keygrid_connector.php48
-rw-r--r--codebase/options_connector.php45
-rw-r--r--codebase/scheduler_connector.php125
-rw-r--r--codebase/tools.php254
-rw-r--r--codebase/tree_connector.php278
-rw-r--r--codebase/treegrid_connector.php165
-rw-r--r--codebase/treegridgroup_connector.php122
-rw-r--r--codebase/treegridmultitable_connector.php166
-rw-r--r--codebase/treegroup_connector.php118
-rw-r--r--codebase/treemultitable_connector.php152
-rw-r--r--codebase/update.php266
-rw-r--r--license.txt674
-rw-r--r--samples/combo/01_basic.html46
-rw-r--r--samples/combo/01_basic_connector.php10
-rw-r--r--samples/combo/01_basic_srnd_connector.php11
-rw-r--r--samples/combo/02_sql.html46
-rw-r--r--samples/combo/02_sql_connector.php10
-rw-r--r--samples/combo/02_sql_srnd_connector.php11
-rw-r--r--samples/combo/index.html26
-rw-r--r--samples/config.php12
-rw-r--r--samples/dataview/01_static_loading.html30
-rw-r--r--samples/dataview/01_static_loading.php10
-rw-r--r--samples/dataview/02_dynamic_loading.html32
-rw-r--r--samples/dataview/02_dynamic_loading.php12
-rw-r--r--samples/dataview/03_adding.html67
-rw-r--r--samples/dataview/03_adding.php10
-rw-r--r--samples/dataview/index.html25
-rw-r--r--samples/dhtmlx/dhtmlx.css1
-rw-r--r--samples/dhtmlx/dhtmlx.js1896
-rw-r--r--samples/dhtmlx/dhtmlxdataprocessor.js32
-rw-r--r--samples/dhtmlx/dhtmlxscheduler.css1
-rw-r--r--samples/dhtmlx/dhtmlxscheduler.js191
-rw-r--r--samples/dhtmlx/dhtmlxscheduler_recurring.js31
-rw-r--r--samples/dhtmlx/imgs/.svn/entries402
-rw-r--r--samples/dhtmlx/imgs/.svn/prop-base/but_repeat.gif.svn-base5
-rw-r--r--samples/dhtmlx/imgs/.svn/prop-base/buttons.png.svn-base5
-rw-r--r--samples/dhtmlx/imgs/.svn/prop-base/calendar.gif.svn-base5
-rw-r--r--samples/dhtmlx/imgs/.svn/prop-base/clock_big.gif.svn-base5
-rw-r--r--samples/dhtmlx/imgs/.svn/prop-base/clock_small.gif.svn-base5
-rw-r--r--samples/dhtmlx/imgs/.svn/prop-base/colapce-expand-icon.gif.svn-base5
-rw-r--r--samples/dhtmlx/imgs/.svn/prop-base/controls.gif.svn-base5
-rw-r--r--samples/dhtmlx/imgs/.svn/prop-base/databg.png.svn-base5
-rw-r--r--samples/dhtmlx/imgs/.svn/prop-base/databg_now.png.svn-base5
-rw-r--r--samples/dhtmlx/imgs/.svn/prop-base/icon.png.svn-base5
-rw-r--r--samples/dhtmlx/imgs/.svn/prop-base/loading.gif.svn-base5
-rw-r--r--samples/dhtmlx/imgs/.svn/text-base/but_repeat.gif.svn-basebin0 -> 1149 bytes
-rw-r--r--samples/dhtmlx/imgs/.svn/text-base/buttons.png.svn-basebin0 -> 281 bytes
-rw-r--r--samples/dhtmlx/imgs/.svn/text-base/calendar.gif.svn-basebin0 -> 622 bytes
-rw-r--r--samples/dhtmlx/imgs/.svn/text-base/clock_big.gif.svn-basebin0 -> 1321 bytes
-rw-r--r--samples/dhtmlx/imgs/.svn/text-base/clock_small.gif.svn-basebin0 -> 388 bytes
-rw-r--r--samples/dhtmlx/imgs/.svn/text-base/colapce-expand-icon.gif.svn-basebin0 -> 452 bytes
-rw-r--r--samples/dhtmlx/imgs/.svn/text-base/controls.gif.svn-basebin0 -> 2496 bytes
-rw-r--r--samples/dhtmlx/imgs/.svn/text-base/databg.png.svn-basebin0 -> 152 bytes
-rw-r--r--samples/dhtmlx/imgs/.svn/text-base/databg_now.png.svn-basebin0 -> 152 bytes
-rw-r--r--samples/dhtmlx/imgs/.svn/text-base/icon.png.svn-basebin0 -> 230 bytes
-rw-r--r--samples/dhtmlx/imgs/.svn/text-base/loading.gif.svn-basebin0 -> 3951 bytes
-rw-r--r--samples/dhtmlx/imgs/arrow.gifbin0 -> 827 bytes
-rw-r--r--samples/dhtmlx/imgs/bg_selection.gifbin0 -> 264 bytes
-rw-r--r--samples/dhtmlx/imgs/blanc.gifbin0 -> 56 bytes
-rw-r--r--samples/dhtmlx/imgs/blank.gifbin0 -> 56 bytes
-rw-r--r--samples/dhtmlx/imgs/blank.html1
-rw-r--r--samples/dhtmlx/imgs/but_repeat.gifbin0 -> 1149 bytes
-rw-r--r--samples/dhtmlx/imgs/buttons.pngbin0 -> 281 bytes
-rw-r--r--samples/dhtmlx/imgs/calendar.gifbin0 -> 622 bytes
-rw-r--r--samples/dhtmlx/imgs/clock_big.gifbin0 -> 1321 bytes
-rw-r--r--samples/dhtmlx/imgs/clock_small.gifbin0 -> 388 bytes
-rw-r--r--samples/dhtmlx/imgs/colapce-expand-icon.gifbin0 -> 452 bytes
-rw-r--r--samples/dhtmlx/imgs/combo_select_dhx_skyblue.gifbin0 -> 411 bytes
-rw-r--r--samples/dhtmlx/imgs/controls.gifbin0 -> 2496 bytes
-rw-r--r--samples/dhtmlx/imgs/databg.pngbin0 -> 152 bytes
-rw-r--r--samples/dhtmlx/imgs/databg_now.pngbin0 -> 152 bytes
-rw-r--r--samples/dhtmlx/imgs/dataview/bottom.pngbin0 -> 851 bytes
-rw-r--r--samples/dhtmlx/imgs/dataview/dnd_selector.pngbin0 -> 121 bytes
-rw-r--r--samples/dhtmlx/imgs/dataview/dnd_selector_cells.pngbin0 -> 185 bytes
-rw-r--r--samples/dhtmlx/imgs/dataview/dnd_selector_lines.pngbin0 -> 206 bytes
-rw-r--r--samples/dhtmlx/imgs/dataview/marker.pngbin0 -> 921 bytes
-rw-r--r--samples/dhtmlx/imgs/dataview/selection_bg.pngbin0 -> 921 bytes
-rw-r--r--samples/dhtmlx/imgs/dataview/sky_blue_grid.gifbin0 -> 554 bytes
-rw-r--r--samples/dhtmlx/imgs/dyn_down.gifbin0 -> 189 bytes
-rw-r--r--samples/dhtmlx/imgs/dyn_up.gifbin0 -> 184 bytes
-rw-r--r--samples/dhtmlx/imgs/folder.gifbin0 -> 374 bytes
-rw-r--r--samples/dhtmlx/imgs/folderClosed.gifbin0 -> 135 bytes
-rw-r--r--samples/dhtmlx/imgs/folderOpen.gifbin0 -> 139 bytes
-rw-r--r--samples/dhtmlx/imgs/icon.pngbin0 -> 230 bytes
-rw-r--r--samples/dhtmlx/imgs/iconCheckAll.gifbin0 -> 123 bytes
-rw-r--r--samples/dhtmlx/imgs/iconCheckDis.gifbin0 -> 126 bytes
-rw-r--r--samples/dhtmlx/imgs/iconCheckGray.gifbin0 -> 126 bytes
-rw-r--r--samples/dhtmlx/imgs/iconUncheckAll.gifbin0 -> 111 bytes
-rw-r--r--samples/dhtmlx/imgs/iconUncheckDis.gifbin0 -> 117 bytes
-rw-r--r--samples/dhtmlx/imgs/item_chk0.gifbin0 -> 69 bytes
-rw-r--r--samples/dhtmlx/imgs/item_chk0_dis.gifbin0 -> 72 bytes
-rw-r--r--samples/dhtmlx/imgs/item_chk1.gifbin0 -> 79 bytes
-rw-r--r--samples/dhtmlx/imgs/item_chk1_dis.gifbin0 -> 79 bytes
-rw-r--r--samples/dhtmlx/imgs/leaf.gifbin0 -> 123 bytes
-rw-r--r--samples/dhtmlx/imgs/loading.gifbin0 -> 3951 bytes
-rw-r--r--samples/dhtmlx/imgs/radio_chk0.gifbin0 -> 94 bytes
-rw-r--r--samples/dhtmlx/imgs/radio_chk0_dis.gifbin0 -> 91 bytes
-rw-r--r--samples/dhtmlx/imgs/radio_chk1.gifbin0 -> 98 bytes
-rw-r--r--samples/dhtmlx/imgs/radio_chk1_dis.gifbin0 -> 94 bytes
-rw-r--r--samples/dhtmlx/imgs/radio_off.gifbin0 -> 241 bytes
-rw-r--r--samples/dhtmlx/imgs/radio_on.gifbin0 -> 361 bytes
-rw-r--r--samples/dhtmlx/imgs/sky_blue_grid.gifbin0 -> 554 bytes
-rw-r--r--samples/dhtmlx/imgs/sky_blue_sel.pngbin0 -> 121 bytes
-rw-r--r--samples/dhtmlx/imgs/sky_blue_sel2.pngbin0 -> 157 bytes
-rw-r--r--samples/dhtmlx/imgs/sky_blue_sel_tree.pngbin0 -> 114 bytes
-rw-r--r--samples/dhtmlx/imgs/sort_asc.gifbin0 -> 67 bytes
-rw-r--r--samples/dhtmlx/imgs/sort_desc.gifbin0 -> 66 bytes
-rw-r--r--samples/dhtmlx/tree/blank.gifbin0 -> 56 bytes
-rw-r--r--samples/dhtmlx/tree/folderClosed.gifbin0 -> 189 bytes
-rw-r--r--samples/dhtmlx/tree/folderOpen.gifbin0 -> 187 bytes
-rw-r--r--samples/dhtmlx/tree/iconCheckAll.gifbin0 -> 275 bytes
-rw-r--r--samples/dhtmlx/tree/iconCheckDis.gifbin0 -> 270 bytes
-rw-r--r--samples/dhtmlx/tree/iconCheckGray.gifbin0 -> 279 bytes
-rw-r--r--samples/dhtmlx/tree/iconUncheckAll.gifbin0 -> 279 bytes
-rw-r--r--samples/dhtmlx/tree/iconUncheckDis.gifbin0 -> 268 bytes
-rw-r--r--samples/dhtmlx/tree/leaf.gifbin0 -> 184 bytes
-rw-r--r--samples/dhtmlx/tree/line.gifbin0 -> 71 bytes
-rw-r--r--samples/dhtmlx/tree/line1.gifbin0 -> 71 bytes
-rw-r--r--samples/dhtmlx/tree/line2.gifbin0 -> 70 bytes
-rw-r--r--samples/dhtmlx/tree/line3.gifbin0 -> 73 bytes
-rw-r--r--samples/dhtmlx/tree/line4.gifbin0 -> 69 bytes
-rw-r--r--samples/dhtmlx/tree/lock.gifbin0 -> 116 bytes
-rw-r--r--samples/dhtmlx/tree/minus.gifbin0 -> 85 bytes
-rw-r--r--samples/dhtmlx/tree/minus1.gifbin0 -> 85 bytes
-rw-r--r--samples/dhtmlx/tree/minus2.gifbin0 -> 92 bytes
-rw-r--r--samples/dhtmlx/tree/minus3.gifbin0 -> 93 bytes
-rw-r--r--samples/dhtmlx/tree/minus4.gifbin0 -> 90 bytes
-rw-r--r--samples/dhtmlx/tree/minus5.gifbin0 -> 87 bytes
-rw-r--r--samples/dhtmlx/tree/plus.gifbin0 -> 89 bytes
-rw-r--r--samples/dhtmlx/tree/plus1.gifbin0 -> 89 bytes
-rw-r--r--samples/dhtmlx/tree/plus2.gifbin0 -> 95 bytes
-rw-r--r--samples/dhtmlx/tree/plus3.gifbin0 -> 96 bytes
-rw-r--r--samples/dhtmlx/tree/plus4.gifbin0 -> 94 bytes
-rw-r--r--samples/dhtmlx/tree/plus5.gifbin0 -> 92 bytes
-rw-r--r--samples/dhtmlx/tree/radio_off.gifbin0 -> 249 bytes
-rw-r--r--samples/dhtmlx/tree/radio_on.gifbin0 -> 251 bytes
-rw-r--r--samples/dhtmlx/tree/tombs.gifbin0 -> 169 bytes
-rw-r--r--samples/dhtmlx/tree/tombs_open.gifbin0 -> 169 bytes
-rw-r--r--samples/dump.sql500
-rw-r--r--samples/export/excel.php16
-rw-r--r--samples/export/pdf.php15
-rw-r--r--samples/grid/01_basic.html48
-rw-r--r--samples/grid/01_basic_connector.php11
-rw-r--r--samples/grid/01a_sql_basic.html38
-rw-r--r--samples/grid/01a_sql_basic_connector.php13
-rw-r--r--samples/grid/02_rendering.html52
-rw-r--r--samples/grid/02_rendering_connector.php17
-rw-r--r--samples/grid/03_validation.html53
-rw-r--r--samples/grid/03_validation_connector.php16
-rw-r--r--samples/grid/04_custom_sql.html38
-rw-r--r--samples/grid/04_custom_sql_connector.php15
-rw-r--r--samples/grid/05_select_filter.html49
-rw-r--r--samples/grid/05_select_filter_connector.php11
-rw-r--r--samples/grid/05a_select_filter.html38
-rw-r--r--samples/grid/05a_select_filter_connector.php22
-rw-r--r--samples/grid/06_combo.html38
-rw-r--r--samples/grid/06_combo_connector.php23
-rw-r--r--samples/grid/06a_combo.html65
-rw-r--r--samples/grid/09_server_side_configuration.html32
-rw-r--r--samples/grid/09_server_side_configuration.php15
-rw-r--r--samples/grid/10_auto_config.html32
-rw-r--r--samples/grid/10_auto_config.php11
-rw-r--r--samples/grid/11_auto_config_filters.html32
-rw-r--r--samples/grid/11_auto_config_filters.php12
-rw-r--r--samples/grid/12_attach_header_server.html57
-rw-r--r--samples/grid/12_attach_header_server.php27
-rw-r--r--samples/grid/13_filesystem_grid_connector.html40
-rw-r--r--samples/grid/13_filesystem_grid_connector.php7
-rw-r--r--samples/grid/index.html35
-rw-r--r--samples/grid/xx_sample_mssql.html38
-rw-r--r--samples/grid/xx_sample_mssql_connector.php13
-rw-r--r--samples/grid/xx_sample_mysqli.html25
-rw-r--r--samples/grid/xx_sample_mysqli_connector.php16
-rw-r--r--samples/grid/xx_sample_oracle.html38
-rw-r--r--samples/grid/xx_sample_oracle_connector.php16
-rw-r--r--samples/grid/xx_sample_pdo.html38
-rw-r--r--samples/grid/xx_sample_pdo_connector.php12
-rw-r--r--samples/grid/xx_sample_pdo_pg.html38
-rw-r--r--samples/grid/xx_sample_pdo_pg_connector.php12
-rw-r--r--samples/grid/xx_sample_postgresql.html38
-rw-r--r--samples/grid/xx_sample_postgresql_connector.php13
-rw-r--r--samples/index.html32
-rw-r--r--samples/readme.txt8
-rw-r--r--samples/scheduler/01_basic_init.html52
-rw-r--r--samples/scheduler/01_basic_init_connector.php12
-rw-r--r--samples/scheduler/02_dynamic_loading.html54
-rw-r--r--samples/scheduler/02_dynamic_loading_connector.php12
-rw-r--r--samples/scheduler/03_connector_options.html57
-rw-r--r--samples/scheduler/03_connector_options.php15
-rw-r--r--samples/scheduler/04_recurring_events.html46
-rw-r--r--samples/scheduler/04_recurring_events_connector.php39
-rw-r--r--samples/scheduler/index.html27
-rw-r--r--samples/tree/01_basic.html36
-rw-r--r--samples/tree/01_basic_connector.php10
-rw-r--r--samples/tree/01p_basic.html46
-rw-r--r--samples/tree/01p_basic_connector.php19
-rw-r--r--samples/tree/02_dynamic_loading.html38
-rw-r--r--samples/tree/02_dynamic_loading_connector.php11
-rw-r--r--samples/tree/03_sql_config.html36
-rw-r--r--samples/tree/03_sql_config_connector.php10
-rw-r--r--samples/tree/04_custom_styles.html44
-rw-r--r--samples/tree/04_custom_styles_connector.php17
-rw-r--r--samples/tree/05_save.html44
-rw-r--r--samples/tree/05_save_connector.php10
-rw-r--r--samples/tree/06_validation.html51
-rw-r--r--samples/tree/06_validation_connector.php15
-rw-r--r--samples/tree/08_tree_group_connector.html43
-rw-r--r--samples/tree/08_tree_group_connector.php11
-rw-r--r--samples/tree/09_tree_multitable_connector.html64
-rw-r--r--samples/tree/09_tree_multitable_connector.php30
-rw-r--r--samples/tree/index.html33
-rw-r--r--samples/treegrid/01_basic.html46
-rw-r--r--samples/treegrid/01_basic_connector.php10
-rw-r--r--samples/treegrid/02_dynamic_loading.html44
-rw-r--r--samples/treegrid/02_dynamic_loading_connector.php11
-rw-r--r--samples/treegrid/03_sql_config.html43
-rw-r--r--samples/treegrid/03_sql_config_connector.php10
-rw-r--r--samples/treegrid/04_custom_styles.html51
-rw-r--r--samples/treegrid/04_custom_styles_connector.php18
-rw-r--r--samples/treegrid/05_live_update.html54
-rw-r--r--samples/treegrid/06_treegrid_group_connector.html47
-rw-r--r--samples/treegrid/06_treegrid_group_connector.php12
-rw-r--r--samples/treegrid/07_treegrid_multitable_connector.html68
-rw-r--r--samples/treegrid/07_treegrid_multitable_connector.php29
-rw-r--r--samples/treegrid/index.html32
249 files changed, 13028 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..969d5f3
--- /dev/null
+++ b/README.md
@@ -0,0 +1,37 @@
+DHTMLX Connector for PHP
+========================
+
+dhtmlxConnector is an extension for the DHTMLX library, which maps client-side
+components onto the server-side datasource. Supported components are:
+
+ * [dhtmlxTree](http://dhtmlx.com/docs/products/dhtmlxTree/index.shtml)
+ * [dhtmlxGrid](http://dhtmlx.com/docs/products/dhtmlxGrid/index.shtml)
+ * [dhtmlxTreeGrid](http://dhtmlx.com/docs/products/dhtmlxTreeGrid/index.shtml)
+ * [dhtmlxCombo](http://dhtmlx.com/docs/products/dhtmlxCombo/index.shtml)
+ * [dhtmlxDataView](http://dhtmlx.com/docs/products/dhtmlxDataView/index.shtml)
+ * [dhtmlxScheduler](http://dhtmlx.com/docs/products/dhtmlxScheduler/index.shtml)
+ * [dhtmlx touch](http://dhtmlx.com/touch/)
+
+You don't need to worry about data formats any more. dhtmlxConnector will handle
+data connections between the server-side database and client-side components,
+seamlessly loading content. When integrated with dhtmlxDataProcessor on the
+client side, dhtmlxConnector also takes care of update/insert/delete operations.
+
+It organizes server-side functionality to support special modes for components
+working with large amounts of data (such as dynamic loading, Smart Rendering,
+and paging) as well as server-side sorting and filtering.
+
+External links
+--------------
+ * Documentation - http://docs.dhtmlx.com/doku.php?id=dhtmlxconnector:toc
+ * Video introduction - http://dhtmlx.com/docs/products/dhtmlxConnector/index.shtml
+
+
+Other languages
+---------------
+ * Java - [wiki](http://docs.dhtmlx.com/doku.php?id=dhtmlxconnectorjava:toc),
+ [package](http://www.dhtmlx.com/x/download/regular/dhtmlxConnector_v09_java.zip)
+ * .Net - [wiki](http://docs.dhtmlx.com/doku.php?id=dhtmlxconnectornet:toc),
+ [package](http://www.dhtmlx.com/x/download/regular/dhtmlxConnector_v09_net.zip)
+ * ColdFustion - [wiki](http://docs.dhtmlx.com/doku.php?id=dhtmlxconnectorcf:toc),
+ [package](http://www.dhtmlx.com/x/download/regular/dhtmlxConnector_v10_cfm.zip)
diff --git a/codebase/base_connector.php b/codebase/base_connector.php
new file mode 100644
index 0000000..76351b9
--- /dev/null
+++ b/codebase/base_connector.php
@@ -0,0 +1,736 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("tools.php");
+require_once("db_common.php");
+require_once("dataprocessor.php");
+require_once("update.php");
+
+//enable buffering to catch and ignore any custom output before XML generation
+//because of this command, it strongly recommended to include connector's file before any other libs
+//in such case it will handle any extra output from not well formed code of other libs
+ini_set("output_buffering","On");
+ob_start();
+
+class OutputWriter{
+ private $start;
+ private $end;
+ private $type;
+
+ public function __construct($start, $end = ""){
+ $this->start = $start;
+ $this->end = $end;
+ $this->type = "xml";
+ }
+ public function add($add){
+ $this->start.=$add;
+ }
+ public function reset(){
+ $this->start="";
+ $this->end="";
+ }
+ public function set_type($add){
+ $this->type=$add;
+ }
+ public function output($name="", $inline=true, $encoding=""){
+ ob_clean();
+
+ if ($this->type == "xml"){
+ $header = "Content-type: text/xml";
+ if ("" != $encoding)
+ $header.="; charset=".$encoding;
+ header($header);
+ }
+
+ echo $this->__toString();
+ }
+ public function __toString(){
+ return $this->start.$this->end;
+ }
+}
+
+/*! EventInterface
+ Base class , for iterable collections, which are used in event
+**/
+class EventInterface{
+ protected $request; ////!< DataRequestConfig instance
+ public $rules=array(); //!< array of sorting rules
+
+ /*! constructor
+ creates a new interface based on existing request
+ @param request
+ DataRequestConfig object
+ */
+ public function __construct($request){
+ $this->request = $request;
+ }
+
+ /*! remove all elements from collection
+ */
+ public function clear(){
+ array_splice($rules,0);
+ }
+ /*! get index by name
+
+ @param name
+ name of field
+ @return
+ index of named field
+ */
+ public function index($name){
+ $len = sizeof($this->rules);
+ for ($i=0; $i < $len; $i++) {
+ if ($this->rules[$i]["name"]==$name)
+ return $i;
+ }
+ return false;
+ }
+}
+/*! Wrapper for collection of sorting rules
+**/
+class SortInterface extends EventInterface{
+ /*! constructor
+ creates a new interface based on existing request
+ @param request
+ DataRequestConfig object
+ */
+ public function __construct($request){
+ parent::__construct($request);
+ $this->rules = &$request->get_sort_by_ref();
+ }
+ /*! add new sorting rule
+
+ @param name
+ name of field
+ @param dir
+ direction of sorting
+ */
+ public function add($name,$dir){
+ $this->request->set_sort($name,$dir);
+ }
+ public function store(){
+ $this->request->set_sort_by($this->rules);
+ }
+}
+/*! Wrapper for collection of filtering rules
+**/
+class FilterInterface extends EventInterface{
+ /*! constructor
+ creates a new interface based on existing request
+ @param request
+ DataRequestConfig object
+ */
+ public function __construct($request){
+ $this->request = $request;
+ $this->rules = &$request->get_filters_ref();
+ }
+ /*! add new filatering rule
+
+ @param name
+ name of field
+ @param value
+ value to filter by
+ @param rule
+ filtering rule
+ */
+ public function add($name,$value,$rule){
+ $this->request->set_filter($name,$value,$rule);
+ }
+ public function store(){
+ $this->request->set_filters($this->rules);
+ }
+}
+
+/*! base class for component item representation
+**/
+class DataItem{
+ protected $data; //!< hash of data
+ protected $config;//!< DataConfig instance
+ protected $index;//!< index of element
+ protected $skip;//!< flag , which set if element need to be skiped during rendering
+ /*! constructor
+
+ @param data
+ hash of data
+ @param config
+ DataConfig object
+ @param index
+ index of element
+ */
+ function __construct($data,$config,$index){
+ $this->config=$config;
+ $this->data=$data;
+ $this->index=$index;
+ $this->skip=false;
+ }
+ /*! get named value
+
+ @param name
+ name or alias of field
+ @return
+ value from field with provided name or alias
+ */
+ public function get_value($name){
+ return $this->data[$name];
+ }
+ /*! set named value
+
+ @param name
+ name or alias of field
+ @param value
+ value for field with provided name or alias
+ */
+ public function set_value($name,$value){
+ return $this->data[$name]=$value;
+ }
+ /*! get id of element
+ @return
+ id of element
+ */
+ public function get_id(){
+ $id = $this->config->id["name"];
+ if (array_key_exists($id,$this->data))
+ return $this->data[$id];
+ return false;
+ }
+ /*! change id of element
+
+ @param value
+ new id value
+ */
+ public function set_id($value){
+ $this->data[$this->config->id["name"]]=$value;
+ }
+ /*! get index of element
+
+ @return
+ index of element
+ */
+ public function get_index(){
+ return $this->index;
+ }
+ /*! mark element for skiping ( such element will not be rendered )
+ */
+ public function skip(){
+ $this->skip=true;
+ }
+
+ /*! return self as XML string
+ */
+ public function to_xml(){
+ return $this->to_xml_start().$this->to_xml_end();
+ }
+
+ /*! replace xml unsafe characters
+
+ @param string
+ string to be escaped
+ @return
+ escaped string
+ */
+ protected function xmlentities($string) {
+ return str_replace( array( '&', '"', "'", '<', '>', '’' ), array( '&amp;' , '&quot;', '&apos;' , '&lt;' , '&gt;', '&apos;' ), $string);
+ }
+
+ /*! return starting tag for self as XML string
+ */
+ public function to_xml_start(){
+ $str="<item";
+ for ($i=0; $i < sizeof($this->config->data); $i++){
+ $name=$this->config->data[$i]["name"];
+ $str.=" ".$name."='".$this->xmlentities($this->data[$name])."'";
+ }
+ return $str.">";
+ }
+ /*! return ending tag for XML string
+ */
+ public function to_xml_end(){
+ return "</item>";
+ }
+}
+
+
+
+
+
+/*! Base connector class
+ This class used as a base for all component specific connectors.
+ Can be used on its own to provide raw data.
+**/
+class Connector {
+ protected $config;//DataConfig instance
+ protected $request;//DataRequestConfig instance
+ protected $names;//!< hash of names for used classes
+ protected $encoding="utf-8";//!< assigned encoding (UTF-8 by default)
+ protected $editing=false;//!< flag of edit mode ( response for dataprocessor )
+ private $updating=false;//!< flag of update mode ( response for data-update )
+ private $db; //!< db connection resource
+ protected $dload;//!< flag of dyn. loading mode
+ public $access; //!< AccessMaster instance
+ protected $data_separator = "\n";
+
+ public $sql; //DataWrapper instance
+ public $event; //EventMaster instance
+ public $limit=false;
+
+ private $id_seed=0; //!< default value, used to generate auto-IDs
+ protected $live_update = false; // actions table name for autoupdating
+
+ /*! constructor
+
+ Here initilization of all Masters occurs, execution timer initialized
+ @param db
+ db connection resource
+ @param type
+ string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
+ @param item_type
+ name of class, which will be used for item rendering, optional, DataItem will be used by default
+ @param data_type
+ name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
+ */
+ public function __construct($db,$type=false, $item_type=false, $data_type=false){
+ $this->exec_time=microtime(true);
+
+ if (!$type) $type="MySQL";
+ if (class_exists($type."DBDataWrapper",false)) $type.="DBDataWrapper";
+ if (!$item_type) $item_type="DataItem";
+ if (!$data_type) $data_type="DataProcessor";
+
+ $this->names=array(
+ "db_class"=>$type,
+ "item_class"=>$item_type,
+ "data_class"=>$data_type,
+ );
+
+ $this->config = new DataConfig();
+ $this->request = new DataRequestConfig();
+ $this->event = new EventMaster();
+ $this->access = new AccessMaster();
+
+ if (!class_exists($this->names["db_class"],false))
+ throw new Exception("DB class not found: ".$this->names["db_class"]);
+ $this->sql = new $this->names["db_class"]($db,$this->config);
+
+ $this->db=$db;//saved for options connectors, if any
+
+ EventMaster::trigger_static("connectorCreate",$this);
+ }
+
+ /*! return db connection resource
+ nested class may neeed to access live connection object
+ @return
+ DB connection resource
+ */
+ protected function get_connection(){
+ return $this->db;
+ }
+
+ public function get_config(){
+ return new DataConfig($this->config);
+ }
+
+ public function get_request(){
+ return new DataRequestConfig($this->config);
+ }
+
+
+ /*! config connector based on table
+
+ @param table
+ name of table in DB
+ @param id
+ name of id field
+ @param fields
+ list of fields names
+ @param extra
+ list of extra fields, optional, such fields will not be included in data rendering, but will be accessible in all inner events
+ @param relation_id
+ name of field used to define relations for hierarchical data organization, optional
+ */
+ public function render_table($table,$id="",$fields=false,$extra=false,$relation_id=false){
+ $this->configure($table,$id,$fields,$extra,$relation_id);
+ return $this->render();
+ }
+ public function configure($table,$id="",$fields=false,$extra=false,$relation_id=false){
+ if ($fields === false){
+ //auto-config
+ $info = $this->sql->fields_list($table);
+ $fields = implode(",",$info["fields"]);
+ if ($info["key"])
+ $id = $info["key"];
+ }
+ $this->config->init($id,$fields,$extra,$relation_id);
+ $this->request->set_source($table);
+ }
+
+ protected function uuid(){
+ return time()."x".$this->id_seed++;
+ }
+
+ /*! config connector based on sql
+
+ @param sql
+ sql query used as base of configuration
+ @param id
+ name of id field
+ @param fields
+ list of fields names
+ @param extra
+ list of extra fields, optional, such fields will not be included in data rendering, but will be accessible in all inner events
+ @param relation_id
+ name of field used to define relations for hierarchical data organization, optional
+ */
+ public function render_sql($sql,$id,$fields,$extra=false,$relation_id=false){
+ $this->config->init($id,$fields,$extra,$relation_id);
+ $this->request->parse_sql($sql);
+ return $this->render();
+ }
+
+ /*! render already configured connector
+
+ @param config
+ configuration of data
+ @param request
+ configuraton of request
+ */
+ public function render_connector($config,$request){
+ $this->config->copy($config);
+ $this->request->copy($request);
+ return $this->render();
+ }
+
+ /*! render self
+ process commands, output requested data as XML
+ */
+ public function render(){
+ $this->event->trigger("onInit", $this);
+ EventMaster::trigger_static("connectorInit",$this);
+
+ $this->parse_request();
+
+ if ($this->live_update !== false && $this->updating!==false) {
+ $this->live_update->get_updates();
+ } else {
+ if ($this->editing){
+ $dp = new $this->names["data_class"]($this,$this->config,$this->request);
+ $dp->process($this->config,$this->request);
+ }
+ else {
+ if (!$this->access->check("read")){
+ LogMaster::log("Access control: read operation blocked");
+ echo "Access denied";
+ die();
+ }
+ $wrap = new SortInterface($this->request);
+ $this->event->trigger("beforeSort",$wrap);
+ $wrap->store();
+
+ $wrap = new FilterInterface($this->request);
+ $this->event->trigger("beforeFilter",$wrap);
+ $wrap->store();
+
+ $this->output_as_xml( $this->sql->select($this->request) );
+ }
+ }
+ $this->end_run();
+ }
+
+ /*! prevent SQL injection through column names
+ replace dangerous chars in field names
+ @param str
+ incoming field name
+ @return
+ safe field name
+ */
+ protected function safe_field_name($str){
+ return strtok($str, " \n\t;',");
+ }
+
+ /*! limit max count of records
+ connector will ignore any records after outputing max count
+ @param limit
+ max count of records
+ @return
+ none
+ */
+ public function set_limit($limit){
+ $this->limit = $limit;
+ }
+
+ protected function parse_request_mode(){
+ //detect edit mode
+ if (isset($_GET["editing"])){
+ $this->editing=true;
+ } else if (isset($_POST["ids"])){
+ $this->editing=true;
+ LogMaster::log('While there is no edit mode mark, POST parameters similar to edit mode detected. \n Switching to edit mode ( to disable behavior remove POST[ids]');
+ } else if (isset($_GET['dhx_version'])){
+ $this->updating = true;
+ }
+ }
+
+ /*! parse incoming request, detects commands and modes
+ */
+ protected function parse_request(){
+ //set default dyn. loading params, can be reset in child classes
+ if ($this->dload)
+ $this->request->set_limit(0,$this->dload);
+ else if ($this->limit)
+ $this->request->set_limit(0,$this->limit);
+
+ $this->parse_request_mode();
+
+ if ($this->live_update && ($this->updating || $this->editing)){
+ $this->request->set_version($_GET["dhx_version"]);
+ $this->request->set_user($_GET["dhx_user"]);
+ }
+
+ if (isset($_GET["dhx_sort"]))
+ foreach($_GET["dhx_sort"] as $k => $v){
+ $k = $this->safe_field_name($k);
+ $this->request->set_sort($this->resolve_parameter($k),$v);
+ }
+
+ if (isset($_GET["dhx_filter"]))
+ foreach($_GET["dhx_filter"] as $k => $v){
+ $k = $this->safe_field_name($k);
+ $this->request->set_filter($this->resolve_parameter($k),$v);
+ }
+
+
+ }
+
+ /*! convert incoming request name to the actual DB name
+ @param name
+ incoming parameter name
+ @return
+ name of related DB field
+ */
+ protected function resolve_parameter($name){
+ return $name;
+ }
+
+
+ /*! replace xml unsafe characters
+
+ @param string
+ string to be escaped
+ @return
+ escaped string
+ */
+ protected function xmlentities($string) {
+ return str_replace( array( '&', '"', "'", '<', '>', '’' ), array( '&amp;' , '&quot;', '&apos;' , '&lt;' , '&gt;', '&apos;' ), $string);
+ }
+
+ public function getRecord($id){
+ LogMaster::log("Retreiving data for record: ".$id);
+ $source = new DataRequestConfig($this->request);
+ $source->set_filter($this->config->id["name"],$id, "=");
+
+ $res = $this->sql->select($source);
+
+ $temp = $this->data_separator;
+ $this->data_separator="";
+ $output = $this->render_set($res);
+ $this->data_separato=$temp;
+
+ return $output;
+ }
+
+ /*! render from DB resultset
+ @param res
+ DB resultset
+ process commands, output requested data as XML
+ */
+ protected function render_set($res){
+ $output="";
+ $index=0;
+ $this->event->trigger("beforeRenderSet",$this,$res,$this->config);
+ while ($data=$this->sql->get_next($res)){
+ $data = new $this->names["item_class"]($data,$this->config,$index);
+ if ($data->get_id()===false)
+ $data->set_id($this->uuid());
+ $this->event->trigger("beforeRender",$data);
+ $output.=$data->to_xml().$this->data_separator;
+ $index++;
+ }
+ return $output;
+ }
+
+ /*! output fetched data as XML
+ @param res
+ DB resultset
+ */
+ protected function output_as_xml($res){
+ $start="<?xml version='1.0' encoding='".$this->encoding."' ?>".$this->xml_start();
+ $end=$this->render_set($res).$this->xml_end();
+
+ $out = new OutputWriter($start, $end);
+ $this->event->trigger("beforeOutput", $this, $out);
+ $out->output("", true, $this->encoding);
+ }
+
+
+ /*! end processing
+ stop execution timer, kill the process
+ */
+ protected function end_run(){
+ $time=microtime(true)-$this->exec_time;
+ LogMaster::log("Done in {$time}s");
+ flush();
+ die();
+ }
+
+ /*! set xml encoding
+
+ methods sets only attribute in XML, no real encoding conversion occurs
+ @param encoding
+ value which will be used as XML encoding
+ */
+ public function set_encoding($encoding){
+ $this->encoding=$encoding;
+ }
+
+ /*! enable or disable dynamic loading mode
+
+ @param count
+ count of rows loaded from server, actual only for grid-connector, can be skiped in other cases.
+ If value is a false or 0 - dyn. loading will be disabled
+ */
+ public function dynamic_loading($count){
+ $this->dload=$count;
+ }
+
+ /*! enable logging
+
+ @param path
+ path to the log file. If set as false or empty strig - logging will be disabled
+ @param client_log
+ enable output of log data to the client side
+ */
+ public function enable_log($path=true,$client_log=false){
+ LogMaster::enable_log($path,$client_log);
+ }
+
+ /*! provides infor about current processing mode
+ @return
+ true if processing dataprocessor command, false otherwise
+ */
+ public function is_select_mode(){
+ $this->parse_request_mode();
+ return !$this->editing;
+ }
+
+ public function is_first_call(){
+ $this->parse_request_mode();
+ return !($this->editing || $this->updating || $this->request->get_start() || isset($_GET['dhx_no_header']));
+
+ }
+
+ /*! renders self as xml, starting part
+ */
+ protected function xml_start(){
+ return "<data>";
+ }
+ /*! renders self as xml, ending part
+ */
+ protected function xml_end(){
+ return "</data>";
+ }
+
+
+ public function insert($data) {
+ $action = new DataAction('inserted', false, $data);
+ $request = new DataRequestConfig();
+ $request->set_source($this->request->get_source());
+
+ $this->config->limit_fields($data);
+ $this->sql->insert($action,$request);
+ $this->config->restore_fields($data);
+
+ return $action->get_new_id();
+ }
+
+ public function delete($id) {
+ $action = new DataAction('deleted', $id, array());
+ $request = new DataRequestConfig();
+ $request->set_source($this->request->get_source());
+
+ $this->sql->delete($action,$request);
+ return $action->get_status();
+}
+
+ public function update($data) {
+ $action = new DataAction('updated', $data[$this->config->id["name"]], $data);
+ $request = new DataRequestConfig();
+ $request->set_source($this->request->get_source());
+
+ $this->config->limit_fields($data);
+ $this->sql->update($action,$request);
+ $this->config->restore_fields($data);
+
+ return $action->get_status();
+ }
+
+ /*! sets actions_table for Optimistic concurrency control mode and start it
+ @param table_name
+ name of database table which will used for saving actions
+ @param url
+ url used for update notifications
+ */
+ public function enable_live_update($table, $url=false){
+ $this->live_update = new DataUpdate($this->sql, $this->config, $this->request, $table,$url);
+ $this->live_update->set_event($this->event,$this->names["item_class"]);
+ $this->event->attach("beforeOutput", Array($this->live_update, "version_output"));
+ $this->event->attach("beforeFiltering", Array($this->live_update, "get_updates"));
+ $this->event->attach("beforeProcessing", Array($this->live_update, "check_collision"));
+ $this->event->attach("afterProcessing", Array($this->live_update, "log_operations"));
+ }
+}
+
+
+/*! wrapper around options collection, used for comboboxes and filters
+**/
+class OptionsConnector extends Connector{
+ protected $init_flag=false;//!< used to prevent rendering while initialization
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="DataItem";
+ if (!$data_type) $data_type=""; //has not sense, options not editable
+ parent::__construct($res,$type,$item_type,$data_type);
+ }
+ /*! render self
+ process commands, return data as XML, not output data to stdout, ignore parameters in incoming request
+ @return
+ data as XML string
+ */
+ public function render(){
+ if (!$this->init_flag){
+ $this->init_flag=true;
+ return "";
+ }
+ $res = $this->sql->select($this->request);
+ return $this->render_set($res);
+ }
+}
+
+
+
+class DistinctOptionsConnector extends OptionsConnector{
+ /*! render self
+ process commands, return data as XML, not output data to stdout, ignore parameters in incoming request
+ @return
+ data as XML string
+ */
+ public function render(){
+ if (!$this->init_flag){
+ $this->init_flag=true;
+ return "";
+ }
+ $res = $this->sql->get_variants($this->config->text[0]["db_name"],$this->request);
+ return $this->render_set($res);
+ }
+}
+
+?>
diff --git a/codebase/chart_connector.php b/codebase/chart_connector.php
new file mode 100644
index 0000000..247d1e6
--- /dev/null
+++ b/codebase/chart_connector.php
@@ -0,0 +1,18 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+
+ require_once("dataview_connector.php");
+
+
+/*! Connector class for DataView
+**/
+class ChartConnector extends DataViewConnector{
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ parent::__construct($res,$type,$item_type,$data_type);
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/combo_connector.php b/codebase/combo_connector.php
new file mode 100644
index 0000000..35c66e9
--- /dev/null
+++ b/codebase/combo_connector.php
@@ -0,0 +1,94 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+
+require_once("base_connector.php");
+/*! DataItem class for Combo component
+**/
+class ComboDataItem extends DataItem{
+ private $selected;//!< flag of selected option
+
+ function __construct($data,$config,$index){
+ parent::__construct($data,$config,$index);
+
+ $this->selected=false;
+ }
+ /*! mark option as selected
+ */
+ function select(){
+ $this->selected=true;
+ }
+ /*! return self as XML string, starting part
+ */
+ function to_xml_start(){
+ if ($this->skip) return "";
+
+ return "<option ".($this->selected?"selected='true'":"")."value='".$this->get_id()."'><![CDATA[".$this->data[$this->config->text[0]["name"]]."]]>";
+ }
+ /*! return self as XML string, ending part
+ */
+ function to_xml_end(){
+ if ($this->skip) return "";
+ return "</option>";
+ }
+}
+
+/*! Connector for the dhtmlxCombo
+**/
+class ComboConnector extends Connector{
+ private $filter; //!< filtering mask from incoming request
+ private $position; //!< position from incoming request
+
+ /*! constructor
+
+ Here initilization of all Masters occurs, execution timer initialized
+ @param res
+ db connection resource
+ @param type
+ string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
+ @param item_type
+ name of class, which will be used for item rendering, optional, DataItem will be used by default
+ @param data_type
+ name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
+ */
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="ComboDataItem";
+ parent::__construct($res,$type,$item_type,$data_type);
+ }
+
+ //parse GET scoope, all operations with incoming request must be done here
+ function parse_request(){
+ parent::parse_request();
+
+ if (isset($_GET["pos"])){
+ if (!$this->dload) //not critical, so just write a log message
+ LogMaster::log("Dyn loading request received, but server side was not configured to process dyn. loading. ");
+ else
+ $this->request->set_limit($_GET["pos"],$this->dload);
+ }
+
+ if (isset($_GET["mask"]))
+ $this->request->set_filter($this->config->text[0]["db_name"],$_GET["mask"]."%","LIKE");
+
+ LogMaster::log($this->request);
+ }
+
+
+ /*! renders self as xml, starting part
+ */
+ public function xml_start(){
+ if ($this->request->get_start())
+ return "<complete add='true'>";
+ else
+ return "<complete>";
+ }
+
+ /*! renders self as xml, ending part
+ */
+ public function xml_end(){
+ return "</complete>";
+ }
+}
+?> \ No newline at end of file
diff --git a/codebase/connector.js b/codebase/connector.js
new file mode 100644
index 0000000..c89a654
--- /dev/null
+++ b/codebase/connector.js
@@ -0,0 +1,145 @@
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+if (window.dhtmlXGridObject){
+ dhtmlXGridObject.prototype._init_point_connector=dhtmlXGridObject.prototype._init_point;
+ dhtmlXGridObject.prototype._init_point=function(){
+ //make separate config array for each grid
+ this._con_f_used = [].concat(this._con_f_used);
+ dhtmlXGridObject.prototype._con_f_used=[];
+
+ var clear_url=function(url){
+ url=url.replace(/(\?|\&)connector[^\f]*/g,"");
+ return url+(url.indexOf("?")!=-1?"&":"?")+"connector=true"+(this.hdr.rows.length > 0 ? "&dhx_no_header=1":"");
+ };
+ var combine_urls=function(url){
+ return clear_url.call(this,url)+(this._connector_sorting||"")+(this._connector_filter||"");
+ };
+ var sorting_url=function(url,ind,dir){
+ this._connector_sorting="&dhx_sort["+ind+"]="+dir;
+ return combine_urls.call(this,url);
+ };
+ var filtering_url=function(url,inds,vals){
+ for (var i=0; i<inds.length; i++)
+ inds[i]="dhx_filter["+inds[i]+"]="+encodeURIComponent(vals[i]);
+ this._connector_filter="&"+inds.join("&");
+ return combine_urls.call(this,url);
+ };
+ this.attachEvent("onCollectValues",function(ind){
+ if (this._con_f_used[ind]){
+ if (typeof(this._con_f_used[ind]) == "object")
+ return this._con_f_used[ind];
+ else
+ return false;
+ }
+ return true;
+ });
+ this.attachEvent("onDynXLS",function(){
+ this.xmlFileUrl=combine_urls.call(this,this.xmlFileUrl);
+ return true;
+ });
+ this.attachEvent("onBeforeSorting",function(ind,type,dir){
+ if (type=="connector"){
+ var self=this;
+ this.clearAndLoad(sorting_url.call(this,this.xmlFileUrl,ind,dir),function(){
+ self.setSortImgState(true,ind,dir);
+ });
+ return false;
+ }
+ return true;
+ });
+ this.attachEvent("onFilterStart",function(a,b){
+ if (this._con_f_used.length){
+ this.clearAndLoad(filtering_url.call(this,this.xmlFileUrl,a,b));
+ return false;
+ }
+ return true;
+ });
+ this.attachEvent("onXLE",function(a,b,c,xml){
+ if (!xml) return;
+ });
+
+ if (this._init_point_connector) this._init_point_connector();
+ };
+ dhtmlXGridObject.prototype._con_f_used=[];
+ dhtmlXGridObject.prototype._in_header_connector_text_filter=function(t,i){
+ if (!this._con_f_used[i])
+ this._con_f_used[i]=1;
+ return this._in_header_text_filter(t,i);
+ };
+ dhtmlXGridObject.prototype._in_header_connector_select_filter=function(t,i){
+ if (!this._con_f_used[i])
+ this._con_f_used[i]=2;
+ return this._in_header_select_filter(t,i);
+ };
+ dhtmlXGridObject.prototype.load_connector=dhtmlXGridObject.prototype.load;
+ dhtmlXGridObject.prototype.load=function(url, call, type){
+ if (!this._colls_loaded && this.cellType){
+ var ar=[];
+ for (var i=0; i < this.cellType.length; i++)
+ if (this.cellType[i].indexOf("co")==0 || this._con_f_used[i]==2) ar.push(i);
+ if (ar.length)
+ arguments[0]+=(arguments[0].indexOf("?")!=-1?"&":"?")+"connector=true&dhx_colls="+ar.join(",");
+ }
+ return this.load_connector.apply(this,arguments);
+ };
+ dhtmlXGridObject.prototype._parseHead_connector=dhtmlXGridObject.prototype._parseHead;
+ dhtmlXGridObject.prototype._parseHead=function(url, call, type){
+ this._parseHead_connector.apply(this,arguments);
+ if (!this._colls_loaded){
+ var cols = this.xmlLoader.doXPath("./coll_options", arguments[0]);
+ for (var i=0; i < cols.length; i++){
+ var f = cols[i].getAttribute("for");
+ var v = [];
+ var combo=null;
+ if (this.cellType[f] == "combo")
+ combo = this.getColumnCombo(f);
+ else if (this.cellType[f].indexOf("co")==0)
+ combo=this.getCombo(f);
+
+ var os = this.xmlLoader.doXPath("./item",cols[i]);
+ var opts = [];
+ for (var j=0; j<os.length; j++){
+ var val=os[j].getAttribute("value");
+
+ if (combo){
+ var lab=os[j].getAttribute("label")||val;
+
+ if (combo.addOption)
+ opts.push([val, lab]);
+ else
+ combo.put(val,lab);
+
+ v[v.length]=lab;
+ } else
+ v[v.length]=val;
+ }
+ if (opts.length)
+ combo.addOption(opts);
+
+ if (this._con_f_used[f*1])
+ this._con_f_used[f*1]=v;
+ };
+ this._colls_loaded=true;
+ }
+ };
+
+
+
+
+}
+
+if (window.dataProcessor){
+ dataProcessor.prototype.init_original=dataProcessor.prototype.init;
+ dataProcessor.prototype.init=function(obj){
+ this.init_original(obj);
+ obj._dataprocessor=this;
+
+ this.setTransactionMode("POST",true);
+ this.serverProcessor+=(this.serverProcessor.indexOf("?")!=-1?"&":"?")+"editing=true";
+ };
+};
+dhtmlxError.catchError("LoadXML",function(a,b,c){
+ alert(c[0].responseText);
+});
diff --git a/codebase/convert.php b/codebase/convert.php
new file mode 100644
index 0000000..65adea0
--- /dev/null
+++ b/codebase/convert.php
@@ -0,0 +1,65 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+class ConvertService{
+ private $url;
+ private $type;
+ private $name;
+ private $inline;
+
+ public function __construct($url){
+ $this->url = $url;
+ $this->pdf();
+ EventMaster::attach_static("connectorInit",array($this, "handle"));
+ }
+ public function pdf($name = "data.pdf", $inline = false){
+ $this->type = "pdf";
+ $this->name = $name;
+ $this->inline = $inline;
+ }
+ public function excel($name = "data.xls", $inline = false){
+ $this->type = "excel";
+ $this->name = $name;
+ $this->inline = $inline;
+ }
+ public function handle($conn){
+ $conn->event->attach("beforeOutput",array($this,"convert"));
+ }
+ private function as_file($size, $name, $inline){
+ header('Content-Type: application/force-download');
+ header('Content-Type: application/octet-stream');
+ header('Content-Type: application/download');
+ header('Content-Transfer-Encoding: binary');
+
+ header('Content-Length: '.$size);
+ if ($inline)
+ header('Content-Disposition: inline; filename="'.$name.'";');
+ else
+ header('Content-Disposition: attachment; filename="'.basename($name).'";');
+ }
+ public function convert($conn, $out){
+
+ if ($this->type == "pdf")
+ header("Content-type: application/pdf");
+ else
+ header("Content-type: application/ms-excel");
+
+ $handle = curl_init($this->url);
+ curl_setopt($handle, CURLOPT_POST, true);
+ curl_setopt($handle, CURLOPT_HEADER, false);
+ curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($handle, CURLOPT_POSTFIELDS, "grid_xml=".urlencode(str_replace("<rows>","<rows profile='color'>",str_replace("</head>", "</columns></head>", str_replace("<head>", "<head><columns>",$out)))));
+
+
+ $out->reset();
+ $out->set_type("pdf");
+ $out->add(curl_exec($handle));
+ $this->as_file(strlen((string)$out), $this->name, $this->inline);
+
+ curl_close($handle);
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/crosslink_connector.php b/codebase/crosslink_connector.php
new file mode 100644
index 0000000..f92d0c5
--- /dev/null
+++ b/codebase/crosslink_connector.php
@@ -0,0 +1,123 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+class DelayedConnector extends Connector{
+ protected $init_flag=false;//!< used to prevent rendering while initialization
+ private $data_mode=false;//!< flag to separate xml and data request modes
+ private $data_result=false;//<! store results of query
+
+ public function dataMode($name){
+ $this->data_mode = $name;
+ $this->data_result=array();
+ }
+ public function getDataResult(){
+ return $this->data_result;
+ }
+
+ public function render(){
+ if (!$this->init_flag){
+ $this->init_flag=true;
+ return "";
+ }
+ return parent::render();
+ }
+
+ protected function output_as_xml($res){
+ if ($this->data_mode){
+ while ($data=$this->sql->get_next($res)){
+ $this->data_result[]=$data[$this->data_mode];
+ }
+ }
+ else
+ return parent::output_as_xml($res);
+ }
+ protected function end_run(){
+ if (!$this->data_mode)
+ parent::end_run();
+ }
+}
+
+class CrossOptionsConnector extends Connector{
+ public $options, $link;
+ private $master_name, $link_name, $master_value;
+
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ $this->options = new OptionsConnector($res,$type,$item_type,$data_type);
+ $this->link = new DelayedConnector($res,$type,$item_type,$data_type);
+
+ EventMaster::attach_static("connectorInit",array($this, "handle"));
+ }
+ public function handle($conn){
+ if ($conn instanceof DelayedConnector) return;
+ if ($conn instanceof OptionsConnector) return;
+
+ $this->master_name = $this->link->get_config()->id["db_name"];
+ $this->link_name = $this->options->get_config()->id["db_name"];
+
+ $this->link->event->attach("beforeFilter",array($this, "get_only_related"));
+
+ if (isset($_GET["dhx_crosslink_".$this->link_name])){
+ $this->get_links($_GET["dhx_crosslink_".$this->link_name]);
+ die();
+ }
+
+ if (!$this->dload){
+ $conn->event->attach("beforeRender", array($this, "getOptions"));
+ $conn->event->attach("beforeRenderSet", array($this, "prepareConfig"));
+ }
+
+
+ $conn->event->attach("afterProcessing", array($this, "afterProcessing"));
+ }
+ public function prepareConfig($conn, $res, $config){
+ $config->add_field($this->link_name);
+ }
+ public function getOptions($data){
+ $this->link->dataMode($this->link_name);
+
+ $this->get_links($data->get_value($this->master_name));
+
+ $data->set_value($this->link_name, implode(",",$this->link->getDataResult()));
+ }
+ public function get_links($id){
+ $this->master_value = $id;
+ $this->link->render();
+ }
+ public function get_only_related($filters){
+ $index = $filters->index($this->master_name);
+ if ($index!==false){
+ $filters->rules[$index]["value"]=$this->master_value;
+ } else
+ $filters->add($this->master_name, $this->master_value, "=");
+ }
+ public function afterProcessing($action){
+ $status = $action->get_status();
+
+ $master_key = $action->get_value($this->master_name);
+ $link_key = $action->get_value($this->link_name);
+ $link_key = explode(',', $link_key);
+
+ if ($status == "inserted")
+ $master_key = $action->get_new_id();
+
+ switch ($status){
+ case "deleted":
+ $this->link->delete($master_key);
+ break;
+ case "updated":
+ $this->link->delete($master_key);
+ case "inserted":
+ for ($i=0; $i < sizeof($link_key); $i++)
+ if ($link_key[$i]!="")
+ $this->link->insert(array(
+ $this->link_name => $link_key[$i],
+ $this->master_name => $master_key
+ ));
+ break;
+ }
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/data_connector.php b/codebase/data_connector.php
new file mode 100644
index 0000000..042a20b
--- /dev/null
+++ b/codebase/data_connector.php
@@ -0,0 +1,163 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("base_connector.php");
+
+class CommonDataProcessor extends DataProcessor{
+ protected function get_post_values($ids){
+ if (isset($_GET['action'])){
+ $data = array();
+ if (isset($_POST["id"]))
+ $data[$_POST["id"]] = $_POST;
+ else
+ $data["dummy_id"] = $_POST;
+ return $data;
+ }
+ return parent::get_post_values($ids);
+ }
+
+ protected function get_ids(){
+ if (isset($_GET['action'])){
+ if (isset($_POST["id"]))
+ return array($_POST['id']);
+ else
+ return array("dummy_id");
+ }
+ return parent::get_ids();
+ }
+
+ protected function get_operation($rid){
+ if (isset($_GET['action']))
+ return $_GET['action'];
+ return parent::get_operation($rid);
+ }
+
+ public function output_as_xml($results){
+ if (isset($_GET['action'])){
+ LogMaster::log("Edit operation finished",$results);
+ ob_clean();
+ $type = $results[0]->get_status();
+ if ($type == "error" || $type == "invalid"){
+ echo "false";
+ } else if ($type=="insert"){
+ echo "true\n".$results[0]->get_new_id();
+ } else
+ echo "true";
+ } else
+ return parent::output_as_xml($results);
+ }
+};
+
+/*! DataItem class for DataView component
+**/
+class CommonDataItem extends DataItem{
+ /*! return self as XML string
+ */
+ function to_xml(){
+ if ($this->skip) return "";
+
+ $str="<item id='".$this->get_id()."' >";
+ for ($i=0; $i<sizeof($this->config->text); $i++){
+ $extra = $this->config->text[$i]["name"];
+ $str.="<".$extra."><![CDATA[".$this->data[$extra]."]]></".$extra.">";
+ }
+ return $str."</item>";
+ }
+}
+
+
+/*! Connector class for DataView
+**/
+class DataConnector extends Connector{
+
+ /*! constructor
+
+ Here initilization of all Masters occurs, execution timer initialized
+ @param res
+ db connection resource
+ @param type
+ string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
+ @param item_type
+ name of class, which will be used for item rendering, optional, DataItem will be used by default
+ @param data_type
+ name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
+ */
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="CommonDataItem";
+ if (!$data_type) $data_type="CommonDataProcessor";
+ parent::__construct($res,$type,$item_type,$data_type);
+ }
+
+ protected function parse_request_mode(){
+ //do nothing, at least for now
+ }
+
+ //parse GET scoope, all operations with incoming request must be done here
+ protected function parse_request(){
+ if (isset($_GET['action'])){
+ $action = $_GET['action'];
+ //simple request mode
+ if ($action == "get"){
+ //data request
+ if (isset($_GET['id'])){
+ //single entity data request
+ $this->request->set_filter($this->config->id["name"],$_GET['id'],"=");
+ } else {
+ //loading collection of items
+ }
+ } else {
+ //data saving
+ $this->editing = true;
+ }
+ } else {
+ if (isset($_GET['editing']) && isset($_POST['ids']))
+ $this->editing = true;
+
+ parent::parse_request();
+ }
+ }
+
+ /*! renders self as xml, starting part
+ */
+ protected function xml_start(){
+ return "<data>";
+ }
+};
+
+class JSONDataConnector extends DataConnector{
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="JSONCommonDataItem";
+ if (!$data_type) $data_type="CommonDataProcessor";
+ $this->data_separator = ",\n";
+ parent::__construct($res,$type,$item_type,$data_type);
+ }
+
+ protected function output_as_xml($res){
+ $start = "[\n";
+ $end = substr($this->render_set($res),0,-2)."\n]";
+
+ $out = new OutputWriter($start, $end);
+ $out->set_type("json");
+ $this->event->trigger("beforeOutput", $this, $out);
+ $out->output("", true, $this->encoding);
+ }
+}
+
+class JSONCommonDataItem extends DataItem{
+ /*! return self as XML string
+ */
+ function to_xml(){
+ if ($this->skip) return "";
+
+ $data = array( "id" => $this->get_id() );
+ for ($i=0; $i<sizeof($this->config->text); $i++){
+ $extra = $this->config->text[$i]["name"];
+ $data[$extra]=$this->data[$extra];
+ }
+ return json_encode($data);
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/dataprocessor.php b/codebase/dataprocessor.php
new file mode 100644
index 0000000..348c8e2
--- /dev/null
+++ b/codebase/dataprocessor.php
@@ -0,0 +1,493 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+/*! Base DataProcessor handling
+**/
+class DataProcessor{
+ protected $connector;//!< Connector instance
+ protected $config;//!< DataConfig instance
+ protected $request;//!< DataRequestConfig instance
+
+ /*! constructor
+
+ @param connector
+ Connector object
+ @param config
+ DataConfig object
+ @param request
+ DataRequestConfig object
+ */
+ function __construct($connector,$config,$request){
+ $this->connector= $connector;
+ $this->config=$config;
+ $this->request=$request;
+ }
+
+ /*! convert incoming data name to valid db name
+ redirect to Connector->name_data by default
+ @param data
+ data name from incoming request
+ @return
+ related db_name
+ */
+ function name_data($data){
+ return $data;
+ }
+ /*! retrieve data from incoming request and normalize it
+
+ @param ids
+ array of extected IDs
+ @return
+ hash of data
+ */
+ protected function get_post_values($ids){
+ $data=array();
+ for ($i=0; $i < sizeof($ids); $i++)
+ $data[$ids[$i]]=array();
+
+ foreach ($_POST as $key => $value) {
+ $details=explode("_",$key,2);
+ if (sizeof($details)==1) continue;
+
+ $name=$this->name_data($details[1]);
+ $data[$details[0]][$name]=$value;
+ }
+
+ return $data;
+ }
+ protected function get_ids(){
+ if (!isset($_POST["ids"]))
+ throw new Exception("Incorrect incoming data, ID of incoming records not recognized");
+ return explode(",",$_POST["ids"]);
+ }
+
+ protected function get_operation($rid){
+ if (!isset($_POST[$rid."_!nativeeditor_status"]))
+ throw new Exception("Status of record [{$rid}] not found in incoming request");
+ return $_POST[$rid."_!nativeeditor_status"];
+ }
+ /*! process incoming request ( save|update|delete )
+ */
+ function process(){
+ LogMaster::log("DataProcessor object initialized",$_POST);
+
+ $results=array();
+
+ $ids=$this->get_ids();
+ $rows_data=$this->get_post_values($ids);
+ $failed=false;
+
+ try{
+ if ($this->connector->sql->is_global_transaction())
+ $this->connector->sql->begin_transaction();
+
+ for ($i=0; $i < sizeof($ids); $i++) {
+ $rid = $ids[$i];
+ LogMaster::log("Row data [{$rid}]",$rows_data[$rid]);
+ $status = $this->get_operation($rid);
+
+ $action=new DataAction($status,$rid,$rows_data[$rid]);
+ $results[]=$action;
+ $this->inner_process($action);
+ }
+
+ } catch(Exception $e){
+ $failed=true;
+ }
+
+ if ($this->connector->sql->is_global_transaction()){
+ if (!$failed)
+ for ($i=0; $i < sizeof($results); $i++)
+ if ($results[$i]->get_status()=="error" || $results[$i]->get_status()=="invalid"){
+ $failed=true;
+ break;
+ }
+ if ($failed){
+ for ($i=0; $i < sizeof($results); $i++)
+ $results[$i]->error();
+ $this->connector->sql->rollback_transaction();
+ }
+ else
+ $this->connector->sql->commit_transaction();
+ }
+
+ $this->output_as_xml($results);
+ }
+
+ /*! converts status string to the inner mode name
+
+ @param status
+ external status string
+ @return
+ inner mode name
+ */
+ protected function status_to_mode($status){
+ switch($status){
+ case "updated":
+ return "update";
+ break;
+ case "inserted":
+ return "insert";
+ break;
+ case "deleted":
+ return "delete";
+ break;
+ default:
+ return $status;
+ break;
+ }
+ }
+ /*! process data updated request received
+
+ @param action
+ DataAction object
+ @return
+ DataAction object with details of processing
+ */
+ protected function inner_process($action){
+
+ if ($this->connector->sql->is_record_transaction())
+ $this->connector->sql->begin_transaction();
+
+ try{
+
+ $mode = $this->status_to_mode($action->get_status());
+ if (!$this->connector->access->check($mode)){
+ LogMaster::log("Access control: {$operation} operation blocked");
+ $action->error();
+ } else {
+ $check = $this->connector->event->trigger("beforeProcessing",$action);
+ if (!$action->is_ready())
+ $this->check_exts($action,$mode);
+ $check = $this->connector->event->trigger("afterProcessing",$action);
+ }
+
+ } catch (Exception $e){
+ $action->set_status("error");
+ if ($action)
+ $this->connector->event->trigger("onDBError", $action, $e);
+ }
+
+ if ($this->connector->sql->is_record_transaction()){
+ if ($action->get_status()=="error" || $action->get_status()=="invalid")
+ $this->connector->sql->rollback_transaction();
+ else
+ $this->connector->sql->commit_transaction();
+ }
+
+ return $action;
+ }
+ /*! check if some event intercepts processing, send data to DataWrapper in other case
+
+ @param action
+ DataAction object
+ @param mode
+ name of inner mode ( will be used to generate event names )
+ */
+ function check_exts($action,$mode){
+ $old_config = new DataConfig($this->config);
+
+ $this->connector->event->trigger("before".$mode,$action);
+ if ($action->is_ready())
+ LogMaster::log("Event code for ".$mode." processed");
+ else {
+ //check if custom sql defined
+ $sql = $this->connector->sql->get_sql($mode,$action);
+ if ($sql){
+ $this->connector->sql->query($sql);
+ }
+ else{
+ $action->sync_config($this->config);
+ $method=array($this->connector->sql,$mode);
+ if (!is_callable($method))
+ throw new Exception("Unknown dataprocessing action: ".$mode);
+ call_user_func($method,$action,$this->request);
+ }
+ }
+ $this->connector->event->trigger("after".$mode,$action);
+
+ $this->config = $old_config;
+ }
+
+ /*! output xml response for dataprocessor
+
+ @param results
+ array of DataAction objects
+ */
+ function output_as_xml($results){
+ LogMaster::log("Edit operation finished",$results);
+ ob_clean();
+ header("Content-type:text/xml");
+ echo "<?xml version='1.0' ?>";
+ echo "<data>";
+ for ($i=0; $i < sizeof($results); $i++)
+ echo $results[$i]->to_xml();
+ echo "</data>";
+ }
+
+}
+
+/*! contain all info related to action and controls customizaton
+**/
+class DataAction{
+ private $status; //!< cuurent status of record
+ private $id;//!< id of record
+ private $data;//!< data hash of record
+ private $userdata;//!< hash of extra data , attached to record
+ private $nid;//!< new id value , after operation executed
+ private $output;//!< custom output to client side code
+ private $attrs;//!< hash of custtom attributes
+ private $ready;//!< flag of operation's execution
+ private $addf;//!< array of added fields
+ private $delf;//!< array of deleted fields
+
+
+ /*! constructor
+
+ @param status
+ current operation status
+ @param id
+ record id
+ @param data
+ hash of data
+ */
+ function __construct($status,$id,$data){
+ $this->status=$status;
+ $this->id=$id;
+ $this->data=$data;
+ $this->nid=$id;
+
+ $this->output="";
+ $this->attrs=array();
+ $this->ready=false;
+
+ $this->addf=array();
+ $this->delf=array();
+ }
+
+
+ /*! add custom field and value to DB operation
+
+ @param name
+ name of field which will be added to DB operation
+ @param value
+ value which will be used for related field in DB operation
+ */
+ function add_field($name,$value){
+ LogMaster::log("adding field: ".$name.", with value: ".$value);
+ $this->data[$name]=$value;
+ $this->addf[]=$name;
+ }
+ /*! remove field from DB operation
+
+ @param name
+ name of field which will be removed from DB operation
+ */
+ function remove_field($name){
+ LogMaster::log("removing field: ".$name);
+ $this->delf[]=$name;
+ }
+
+ /*! sync field configuration with external object
+
+ @param slave
+ SQLMaster object
+ @todo
+ check , if all fields removed then cancel action
+ */
+ function sync_config($slave){
+ foreach ($this->addf as $k => $v)
+ $slave->add_field($v);
+ foreach ($this->delf as $k => $v)
+ $slave->remove_field($v);
+ }
+ /*! get value of some record's propery
+
+ @param name
+ name of record's property ( name of db field or alias )
+ @return
+ value of related property
+ */
+ function get_value($name){
+ if (!array_key_exists($name,$this->data)){
+ LogMaster::log("Incorrect field name used: ".$name);
+ LogMaster::log("data",$this->data);
+ return "";
+ }
+ return $this->data[$name];
+ }
+ /*! set value of some record's propery
+
+ @param name
+ name of record's property ( name of db field or alias )
+ @param value
+ value of related property
+ */
+ function set_value($name,$value){
+ LogMaster::log("change value of: ".$name." as: ".$value);
+ $this->data[$name]=$value;
+ }
+ /*! get hash of data properties
+
+ @return
+ hash of data properties
+ */
+ function get_data(){
+ return $this->data;
+ }
+ /*! get some extra info attached to record
+ deprecated, exists just for backward compatibility, you can use set_value instead of it
+ @param name
+ name of userdata property
+ @return
+ value of related userdata property
+ */
+ function get_userdata_value($name){
+ return $this->get_value($name);
+ }
+ /*! set some extra info attached to record
+ deprecated, exists just for backward compatibility, you can use get_value instead of it
+ @param name
+ name of userdata property
+ @param value
+ value of userdata property
+ */
+ function set_userdata_value($name,$value){
+ return $this->set_value($name,$value);
+ }
+ /*! get current status of record
+
+ @return
+ string with status value
+ */
+ function get_status(){
+ return $this->status;
+ }
+ /*! assign new status to the record
+
+ @param status
+ new status value
+ */
+ function set_status($status){
+ $this->status=$status;
+ }
+ /*! set id
+ @param id
+ id value
+ */
+ function set_id($id) {
+ $this->id = $id;
+ LogMaster::log("Change id: ".$id);
+ }
+ /*! set id
+ @param id
+ id value
+ */
+ function set_new_id($id) {
+ $this->nid = $id;
+ LogMaster::log("Change new id: ".$id);
+ }
+ /*! get id of current record
+
+ @return
+ id of record
+ */
+ function get_id(){
+ return $this->id;
+ }
+ /*! sets custom response text
+
+ can be accessed through defineAction on client side. Text wrapped in CDATA, so no extra escaping necessary
+ @param text
+ custom response text
+ */
+ function set_response_text($text){
+ $this->set_response_xml("<![CDATA[".$text."]]>");
+ }
+ /*! sets custom response xml
+
+ can be accessed through defineAction on client side
+ @param text
+ string with XML data
+ */
+ function set_response_xml($text){
+ $this->output=$text;
+ }
+ /*! sets custom response attributes
+
+ can be accessed through defineAction on client side
+ @param name
+ name of custom attribute
+ @param value
+ value of custom attribute
+ */
+ function set_response_attribute($name,$value){
+ $this->attrs[$name]=$value;
+ }
+ /*! check if action finished
+
+ @return
+ true if action finished, false otherwise
+ */
+ function is_ready(){
+ return $this->ready;
+ }
+ /*! return new id value
+
+ equal to original ID normally, after insert operation - value assigned for new DB record
+ @return
+ new id value
+ */
+ function get_new_id(){
+ return $this->nid;
+ }
+
+ /*! set result of operation as error
+ */
+ function error(){
+ $this->status="error";
+ $this->ready=true;
+ }
+ /*! set result of operation as invalid
+ */
+ function invalid(){
+ $this->status="invalid";
+ $this->ready=true;
+ }
+ /*! confirm successful opeation execution
+ @param id
+ new id value, optional
+ */
+ function success($id=false){
+ if ($id!==false)
+ $this->nid = $id;
+ $this->ready=true;
+ }
+ /*! convert DataAction to xml format compatible with client side dataProcessor
+ @return
+ DataAction operation report as XML string
+ */
+ function to_xml(){
+ $str="<action type='{$this->status}' sid='{$this->id}' tid='{$this->nid}' ";
+ foreach ($this->attrs as $k => $v) {
+ $str.=$k."='".$v."' ";
+ }
+ $str.=">{$this->output}</action>";
+ return $str;
+ }
+ /*! convert self to string ( for logs )
+
+ @return
+ DataAction operation report as plain string
+ */
+ function __toString(){
+ return "action:{$this->status}; sid:{$this->id}; tid:{$this->nid};";
+ }
+
+
+}
+
+
+?> \ No newline at end of file
diff --git a/codebase/dataview_connector.php b/codebase/dataview_connector.php
new file mode 100644
index 0000000..0c4ca0c
--- /dev/null
+++ b/codebase/dataview_connector.php
@@ -0,0 +1,69 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("base_connector.php");
+
+/*! DataItem class for DataView component
+**/
+class DataViewDataItem extends DataItem{
+ /*! return self as XML string
+ */
+ function to_xml(){
+ if ($this->skip) return "";
+
+ $str="<item id='".$this->get_id()."' >";
+ for ($i=0; $i<sizeof($this->config->text); $i++){
+ $extra = $this->config->text[$i]["name"];
+ $str.="<".$extra."><![CDATA[".$this->data[$extra]."]]></".$extra.">";
+ }
+ return $str."</item>";
+ }
+}
+
+
+/*! Connector class for DataView
+**/
+class DataViewConnector extends Connector{
+
+ /*! constructor
+
+ Here initilization of all Masters occurs, execution timer initialized
+ @param res
+ db connection resource
+ @param type
+ string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
+ @param item_type
+ name of class, which will be used for item rendering, optional, DataItem will be used by default
+ @param data_type
+ name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
+ */
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="DataViewDataItem";
+ if (!$data_type) $data_type="DataProcessor";
+ parent::__construct($res,$type,$item_type,$data_type);
+ }
+
+ //parse GET scoope, all operations with incoming request must be done here
+ function parse_request(){
+ parent::parse_request();
+
+ if (isset($_GET["posStart"]) && isset($_GET["count"]))
+ $this->request->set_limit($_GET["posStart"],$_GET["count"]);
+ }
+
+ /*! renders self as xml, starting part
+ */
+ protected function xml_start(){
+ if ($this->dload){
+ if ($pos=$this->request->get_start())
+ return "<data pos='".$pos."'>";
+ else
+ return "<data total_count='".$this->sql->get_size($this->request)."'>";
+ }
+ else
+ return "<data>";
+ }
+}
+?> \ No newline at end of file
diff --git a/codebase/db_common.php b/codebase/db_common.php
new file mode 100644
index 0000000..a37d54d
--- /dev/null
+++ b/codebase/db_common.php
@@ -0,0 +1,975 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("tools.php");
+
+/*! manager of data request
+**/
+class DataRequestConfig{
+ private $filters; //!< array of filtering rules
+ private $relation=false; //!< ID or other element used for linking hierarchy
+ private $sort_by; //!< sorting field
+ private $start; //!< start of requested data
+ private $count; //!< length of requested data
+
+ private $user;
+ private $version;
+
+ //for render_sql
+ private $source; //!< souce table or another source destination
+ private $fieldset; //!< set of data, which need to be retrieved from source
+
+ /*! constructor
+
+ @param proto
+ DataRequestConfig object, optional, if provided then new request object will copy all properties from provided one
+ */
+ public function __construct($proto=false){
+ if ($proto)
+ $this->copy($proto);
+ else{
+ $start=0;
+ $this->filters=array();
+ $this->sort_by=array();
+ }
+ }
+
+ /*! copy parameters of source object into self
+
+ @param proto
+ source object
+ */
+ public function copy($proto){
+ $this->filters =$proto->get_filters();
+ $this->sort_by =$proto->get_sort_by();
+ $this->count =$proto->get_count();
+ $this->start =$proto->get_start();
+ $this->source =$proto->get_source();
+ $this->fieldset =$proto->get_fieldset();
+ $this->relation =$proto->get_relation();
+ $this->user = $proto->user;
+ $this->version = $proto->version;
+ }
+
+ /*! convert self to string ( for logs )
+ @return
+ self as plain string,
+ */
+ public function __toString(){
+ $str="Source:{$this->source}\nFieldset:{$this->fieldset}\nWhere:";
+ for ($i=0; $i < sizeof($this->filters); $i++)
+ $str.=$this->filters[$i]["name"]." ".$this->filters[$i]["operation"]." ".$this->filters[$i]["value"].";";
+ $str.="\nStart:{$this->start}\nCount:{$this->count}\n";
+ for ($i=0; $i < sizeof($this->sort_by); $i++)
+ $str.=$this->sort_by[$i]["name"]."=".$this->sort_by[$i]["direction"].";";
+ $str.="\nRelation:{$this->relation}";
+ return $str;
+ }
+
+ /*! returns set of filtering rules
+ @return
+ set of filtering rules
+ */
+ public function get_filters(){
+ return $this->filters;
+ }
+ public function &get_filters_ref(){
+ return $this->filters;
+ }
+ public function set_filters($data){
+ $this->filters=$data;
+ }
+
+
+ public function get_user(){
+ return $this->user;
+ }
+ public function set_user($user){
+ $this->user = $user;
+ }
+ public function get_version(){
+ return $this->version;
+ }
+ public function set_version($version){
+ $this->version = $version;
+ }
+
+ /*! returns list of used fields
+ @return
+ list of used fields
+ */
+ public function get_fieldset(){
+ return $this->fieldset;
+ }
+ /*! returns name of source table
+ @return
+ name of source table
+ */
+ public function get_source(){
+ return $this->source;
+ }
+ /*! returns set of sorting rules
+ @return
+ set of sorting rules
+ */
+ public function get_sort_by(){
+ return $this->sort_by;
+ }
+ public function &get_sort_by_ref(){
+ return $this->sort_by;
+ }
+ public function set_sort_by($data){
+ $this->sort_by=$data;
+ }
+
+ /*! returns start index
+ @return
+ start index
+ */
+ public function get_start(){
+ return $this->start;
+ }
+ /*! returns count of requested records
+ @return
+ count of requested records
+ */
+ public function get_count(){
+ return $this->count;
+ }
+ /*! returns name of relation id
+ @return
+ relation id name
+ */
+ public function get_relation(){
+ return $this->relation;
+ }
+
+ /*! sets sorting rule
+
+ @param field
+ name of column
+ @param order
+ direction of sorting
+ */
+ public function set_sort($field,$order=false){
+ if (!$field && !$order)
+ $this->sort_by=array();
+ else{
+ $order=strtolower($order)=="asc"?"ASC":"DESC";
+ $this->sort_by[]=array("name"=>$field,"direction" => $order);
+ }
+ }
+ /*! sets filtering rule
+
+ @param field
+ name of column
+ @param value
+ value for filtering
+ @param operation
+ operation for filtering, optional , LIKE by default
+ */
+ public function set_filter($field,$value,$operation=false){
+ array_push($this->filters,array("name"=>$field,"value"=>$value,"operation"=>$operation));
+ }
+
+ /*! sets list of used fields
+
+ @param value
+ list of used fields
+ */
+ public function set_fieldset($value){
+ $this->fieldset=$value;
+ }
+ /*! sets name of source table
+
+ @param value
+ name of source table
+ */
+ public function set_source($value){
+ $this->source=trim($value);
+ if (!$this->source) throw new Exception("Source of data can't be empty");
+ }
+ /*! sets data limits
+
+ @param start
+ start index
+ @param count
+ requested count of data
+ */
+ public function set_limit($start,$count){
+ $this->start=$start;
+ $this->count=$count;
+ }
+ /*! sets name of relation id
+
+ @param value
+ name of relation id field
+ */
+ public function set_relation($value){
+ $this->relation=$value;
+ }
+ /*! parse incoming sql, to fill other properties
+
+ @param sql
+ incoming sql string
+ */
+ public function parse_sql($sql){
+ $sql= preg_replace("/[ \n\t]+limit[\n ,0-9]/i","",$sql);
+
+ $data = preg_split("/[ \n\t]+\\_from\\_/i",$sql,2);
+ if (count($data)!=2)
+ $data = preg_split("/[ \n\t]+from/i",$sql,2);
+ $this->fieldset = preg_replace("/^[\s]*select/i","",$data[0],1);
+
+ $table_data = preg_split("/[ \n\t]+where/i",$data[1],2);
+ /*
+ if sql code contains group_by we will place all sql query in the FROM
+ it will not allow to use any filtering against the query
+ still it is better than just generate incorrect sql commands for any group by query
+ */
+ if (sizeof($table_data)>1 && !preg_match("#.*group by.*#i",$table_data[1])){ //where construction exists
+ $this->set_source($table_data[0]);
+ $where_data = preg_split("/[ \n\t]+order[ ]+by/i",$table_data[1],2);
+ $this->filters[]=$where_data[0];
+ if (sizeof($where_data)==1) return; //end of line detected
+ $data=$where_data[1];
+ } else {
+ $table_data = preg_split("/[ \n\t]+order[ ]+by/i",$data[1],2);
+ $this->set_source($table_data[0]);
+ if (sizeof($table_data)==1) return; //end of line detected
+ $data=$table_data[1];
+ }
+
+ if (trim($data)){ //order by construction exists
+ $s_data = preg_split("/\\,/",trim($data));
+ for ($i=0; $i < count($s_data); $i++) {
+ $data=preg_split("/[ ]+/",trim($s_data[$i]),2);
+ if (sizeof($data)>1)
+ $this->set_sort($data[0],$data[1]);
+ else
+ $this->set_sort($data[0]);
+ }
+
+ }
+ }
+}
+
+/*! manager of data configuration
+**/
+class DataConfig{
+ public $id;////!< name of ID field
+ public $relation_id;//!< name or relation ID field
+ public $text;//!< array of text fields
+ public $data;//!< array of all known fields , fields which exists only in this collection will not be included in dataprocessor's operations
+
+
+ /*! converts self to the string, for logging purposes
+ **/
+ public function __toString(){
+ $str="ID:{$this->id['db_name']}(ID:{$this->id['name']})\n";
+ $str.="Relation ID:{$this->relation_id['db_name']}({$this->relation_id['name']})\n";
+ $str.="Data:";
+ for ($i=0; $i<sizeof($this->text); $i++)
+ $str.="{$this->text[$i]['db_name']}({$this->text[$i]['name']}),";
+
+ $str.="\nExtra:";
+ for ($i=0; $i<sizeof($this->data); $i++)
+ $str.="{$this->data[$i]['db_name']}({$this->data[$i]['name']}),";
+
+ return $str;
+ }
+
+ /*! removes un-used fields from configuration
+ @param name
+ name of field , which need to be preserved
+ */
+ public function minimize($name){
+ for ($i=0; $i < sizeof($this->text); $i++){
+ if ($this->text[$i]["db_name"]==$name || $this->text[$i]["name"]==$name){
+ $this->text[$i]["name"]="value";
+ $this->data=array($this->text[$i]);
+ $this->text=array($this->text[$i]);
+ return;
+ }
+ }
+ throw new Exception("Incorrect dataset minimization, master field not found.");
+ }
+
+ public function limit_fields($data){
+ if (isset($this->full_field_list))
+ $this->restore_fields();
+ $this->full_field_list = $this->text;
+ $this->text = array();
+
+ for ($i=0; $i < sizeof($this->full_field_list); $i++) {
+ if (array_key_exists($this->full_field_list[$i]["name"],$data))
+ $this->text[] = $this->full_field_list[$i];
+ }
+ }
+
+ public function restore_fields(){
+ if (isset($this->full_field_list))
+ $this->text = $this->full_field_list;
+ }
+
+ /*! initialize inner state by parsing configuration parameters
+
+ @param id
+ name of id field
+ @param fields
+ name of data field(s)
+ @param extra
+ name of extra field(s)
+ @param relation
+ name of relation field
+
+ */
+ public function init($id,$fields,$extra,$relation){
+ $this->id = $this->parse($id,false);
+ $this->text = $this->parse($fields,true);
+ $this->data = array_merge($this->text,$this->parse($extra,true));
+ $this->relation_id = $this->parse($relation,false);
+ }
+
+ /*! parse configuration string
+
+ @param key
+ key string from configuration
+ @param mode
+ multi names flag
+ @return
+ parsed field name object
+ */
+ private function parse($key,$mode){
+ if ($mode){
+ if (!$key) return array();
+ $key=explode(",",$key);
+ for ($i=0; $i < sizeof($key); $i++)
+ $key[$i]=$this->parse($key[$i],false);
+ return $key;
+ }
+ $key=explode("(",$key);
+ $data=array("db_name"=>trim($key[0]), "name"=>trim($key[0]));
+ if (sizeof($key)>1)
+ $data["name"]=substr(trim($key[1]),0,-1);
+ return $data;
+ }
+
+ /*! constructor
+ init public collectons
+ @param proto
+ DataConfig object used as prototype for new one, optional
+ */
+ public function __construct($proto=false){
+ if ($proto!==false)
+ $this->copy($proto);
+ else {
+ $this->text=array();
+ $this->data=array();
+ $this->id=array("name"=>"dhx_auto_id", "db_name"=>"dhx_auto_id");
+ $this->relation_id=array("name"=>"", "db_name"=>"");
+ }
+ }
+
+ /*! copy properties from source object
+
+ @param proto
+ source object
+ */
+ public function copy($proto){
+ $this->id = $proto->id;
+ $this->relation_id = $proto->relation_id;
+ $this->text = $proto->text;
+ $this->data = $proto->data;
+ }
+
+ /*! returns list of data fields (db_names)
+ @return
+ list of data fields ( ready to be used in SQL query )
+ */
+ public function db_names_list($db){
+ $out=array();
+ if ($this->id["db_name"])
+ array_push($out,$db->escape_name($this->id["db_name"]));
+ if ($this->relation_id["db_name"])
+ array_push($out,$db->escape_name($this->relation_id["db_name"]));
+
+ for ($i=0; $i < sizeof($this->data); $i++){
+ if ($this->data[$i]["db_name"]!=$this->data[$i]["name"])
+ $out[]=$db->escape_name($this->data[$i]["db_name"])." as ".$this->data[$i]["name"];
+ else
+ $out[]=$db->escape_name($this->data[$i]["db_name"]);
+ }
+
+ return $out;
+ }
+
+ /*! add field to dataset config ($text collection)
+
+ added field will be used in all auto-generated queries
+ @param name
+ name of field
+ @param aliase
+ aliase of field, optional
+ */
+ public function add_field($name,$aliase=false){
+ if ($aliase===false) $aliase=$name;
+
+ //adding to list of data-active fields
+ if ($this->id["db_name"]==$name || $this->relation_id["db_name"] == $name){
+ LogMaster::log("Field name already used as ID, be sure that it is really necessary.");
+ }
+ if ($this->is_field($name,$this->text)!=-1)
+ throw new Exception('Data field already registered: '.$name);
+ array_push($this->text,array("db_name"=>$name,"name"=>$aliase));
+
+ //adding to list of all fields as well
+ if ($this->is_field($name,$this->data)==-1)
+ array_push($this->data,array("db_name"=>$name,"name"=>$aliase));
+
+ }
+
+ /*! remove field from dataset config ($text collection)
+
+ removed field will be excluded from all auto-generated queries
+ @param name
+ name of field, or aliase of field
+ */
+ public function remove_field($name){
+ $ind = $this->is_field($name);
+ if ($ind==-1) throw new Exception('There was no such data field registered as: '.$name);
+ array_splice($this->text,$ind,1);
+ //we not deleting field from $data collection, so it will not be included in data operation, but its data still available
+ }
+
+ /*! check if field is a part of dataset
+
+ @param name
+ name of field
+ @param collection
+ collection, against which check will be done, $text collection by default
+ @return
+ returns true if field already a part of dataset, otherwise returns true
+ */
+ private function is_field($name,$collection = false){
+ if (!$collection)
+ $collection=$this->text;
+
+ for ($i=0; $i<sizeof($collection); $i++)
+ if ($collection[$i]["name"] == $name || $collection[$i]["db_name"] == $name) return $i;
+ return -1;
+ }
+
+
+}
+
+/*! Base abstraction class, used for data operations
+ Class abstract access to data, it is a base class to all DB wrappers
+**/
+abstract class DataWrapper{
+ protected $connection;
+ protected $config;//!< DataConfig instance
+ /*! constructor
+ @param connection
+ DB connection
+ @param config
+ DataConfig instance
+ */
+ public function __construct($connection,$config){
+ $this->config=$config;
+ $this->connection=$connection;
+ }
+
+ /*! insert record in storage
+
+ @param data
+ DataAction object
+ @param source
+ DataRequestConfig object
+ */
+ abstract function insert($data,$source);
+
+ /*! delete record from storage
+
+ @param data
+ DataAction object
+ @param source
+ DataRequestConfig object
+ */
+ abstract function delete($data,$source);
+
+ /*! update record in storage
+
+ @param data
+ DataAction object
+ @param source
+ DataRequestConfig object
+ */
+ abstract function update($data,$source);
+
+ /*! select record from storage
+
+ @param source
+ DataRequestConfig object
+ */
+ abstract function select($source);
+
+ /*! get size of storage
+
+ @param source
+ DataRequestConfig object
+ */
+ abstract function get_size($source);
+
+ /*! get all variations of field in storage
+
+ @param name
+ name of field
+ @param source
+ DataRequestConfig object
+ */
+ abstract function get_variants($name,$source);
+
+ /*! checks if there is a custom sql string for specified db operation
+
+ @param name
+ name of DB operation
+ @param data
+ hash of data
+ @return
+ sql string
+ */
+ public function get_sql($name,$data){
+ return ""; //custom sql not supported by default
+ }
+
+ /*! begins DB transaction
+ */
+ public function begin_transaction(){
+ throw new Exception("Data wrapper not supports transactions.");
+ }
+ /*! commits DB transaction
+ */
+ public function commit_transaction(){
+ throw new Exception("Data wrapper not supports transactions.");
+ }
+ /*! rollbacks DB transaction
+ */
+ public function rollback_transaction(){
+ throw new Exception("Data wrapper not supports transactions.");
+ }
+}
+
+/*! Common database abstraction class
+ Class provides base set of methods to access and change data in DB, class used as a base for DB-specific wrappers
+**/
+abstract class DBDataWrapper extends DataWrapper{
+ private $transaction = false; //!< type of transaction
+ private $sequence=false;//!< sequence name
+ private $sqls = array();//!< predefined sql actions
+
+
+ /*! assign named sql query
+ @param name
+ name of sql query
+ @param data
+ sql query text
+ */
+ public function attach($name,$data){
+ $name=strtolower($name);
+ $this->sqls[$name]=$data;
+ }
+ /*! replace vars in sql string with actual values
+
+ @param matches
+ array of field name matches
+ @return
+ value for the var name
+ */
+ public function get_sql_callback($matches){
+ return $this->escape($this->temp->get_value($matches[1]));
+ }
+ public function get_sql($name,$data){
+ $name=strtolower($name);
+ if (!array_key_exists($name,$this->sqls)) return "";
+
+
+ $str = $this->sqls[$name];
+ $this->temp = $data; //dirty
+ $str = preg_replace_callback('|\{([^}]+)\}|',array($this,"get_sql_callback"),$str);
+ unset ($this->temp); //dirty
+ return $str;
+ }
+
+ public function insert($data,$source){
+ $sql=$this->insert_query($data,$source);
+ $this->query($sql);
+ $data->success($this->get_new_id());
+ }
+ public function delete($data,$source){
+ $sql=$this->delete_query($data,$source);
+ $this->query($sql);
+ $data->success();
+ }
+ public function update($data,$source){
+ $sql=$this->update_query($data,$source);
+ $this->query($sql);
+ $data->success();
+ }
+ public function select($source){
+ $select=$source->get_fieldset();
+ if (!$select){
+ $select=$this->config->db_names_list($this);
+ $select = implode(",",$select);
+ }
+
+ $where=$this->build_where($source->get_filters(),$source->get_relation());
+ $sort=$this->build_order($source->get_sort_by());
+
+ return $this->query($this->select_query($select,$source->get_source(),$where,$sort,$source->get_start(),$source->get_count()));
+ }
+ public function get_size($source){
+ $count = new DataRequestConfig($source);
+
+ $count->set_fieldset("COUNT(*) as DHX_COUNT ");
+ $count->set_sort(null);
+ $count->set_limit(0,0);
+
+ $res=$this->select($count);
+ $data=$this->get_next($res);
+ if (array_key_exists("DHX_COUNT",$data)) return $data["DHX_COUNT"];
+ else return $data["dhx_count"]; //postgresql
+ }
+ public function get_variants($name,$source){
+ $count = new DataRequestConfig($source);
+ $count->set_fieldset("DISTINCT ".$this->escape_name($name)." as value");
+ $sort = new SortInterface($source);
+ $count->set_sort(null);
+ for ($i = 0; $i < count($sort->rules); $i++) {
+ if ($sort->rules[$i]['name'] == $name)
+ $count->set_sort($sort->rules[$i]['name'], $sort->rules[$i]['direction']);
+ }
+ $count->set_limit(0,0);
+ return $this->select($count);
+ }
+
+ public function sequence($sec){
+ $this->sequence=$sec;
+ }
+
+
+ /*! create an sql string for filtering rules
+
+ @param rules
+ set of filtering rules
+ @param relation
+ name of relation id field
+ @return
+ sql string with filtering rules
+ */
+ protected function build_where($rules,$relation=false){
+ $sql=array();
+ for ($i=0; $i < sizeof($rules); $i++)
+ if (is_string($rules[$i]))
+ array_push($sql,"(".$rules[$i].")");
+ else
+ if ($rules[$i]["value"]!=""){
+ if (!$rules[$i]["operation"])
+ array_push($sql,$this->escape_name($rules[$i]["name"])." LIKE '%".$this->escape($rules[$i]["value"])."%'");
+ else
+ array_push($sql,$this->escape_name($rules[$i]["name"])." ".$rules[$i]["operation"]." '".$this->escape($rules[$i]["value"])."'");
+ }
+ if ($relation!==false)
+ array_push($sql,$this->escape_name($this->config->relation_id["db_name"])." = '".$this->escape($relation)."'");
+ return implode(" AND ",$sql);
+ }
+ /*! convert sorting rules to sql string
+
+ @param by
+ set of sorting rules
+ @return
+ sql string for set of sorting rules
+ */
+ protected function build_order($by){
+ if (!sizeof($by)) return "";
+ $out = array();
+ for ($i=0; $i < sizeof($by); $i++)
+ if ($by[$i]["name"])
+ $out[]=$this->escape_name($by[$i]["name"])." ".$by[$i]["direction"];
+ return implode(",",$out);
+ }
+
+ /*! generates sql code for select operation
+
+ @param select
+ list of fields in select
+ @param from
+ table name
+ @param where
+ list of filtering rules
+ @param sort
+ list of sorting rules
+ @param start
+ start index of fetching
+ @param count
+ count of records to fetch
+ @return
+ sql string for select operation
+ */
+ protected function select_query($select,$from,$where,$sort,$start,$count){
+ $sql="SELECT ".$select." FROM ".$from;
+ if ($where) $sql.=" WHERE ".$where;
+ if ($sort) $sql.=" ORDER BY ".$sort;
+ if ($start || $count) $sql.=" LIMIT ".$start.",".$count;
+ return $sql;
+ }
+ /*! generates update sql
+
+ @param data
+ DataAction object
+ @param request
+ DataRequestConfig object
+ @return
+ sql string, which updates record with provided data
+ */
+ protected function update_query($data,$request){
+ $sql="UPDATE ".$request->get_source()." SET ";
+ $temp=array();
+ for ($i=0; $i < sizeof($this->config->text); $i++) {
+ $step=$this->config->text[$i];
+
+ if ($data->get_value($step["name"])===Null)
+ $step_value ="Null";
+ else
+ $step_value = "'".$this->escape($data->get_value($step["name"]))."'";
+ $temp[$i]= $this->escape_name($step["db_name"])."=". $step_value;
+ }
+ if ($relation = $this->config->relation_id["db_name"]){
+ $temp[]= $this->escape_name($relation)."='".$this->escape($data->get_value($relation))."'";
+ }
+ $sql.=implode(",",$temp)." WHERE ".$this->escape_name($this->config->id["db_name"])."='".$this->escape($data->get_id())."'";
+
+ //if we have limited set - set constraints
+ $where=$this->build_where($request->get_filters(),$request->get_relation());
+ if ($where) $sql.=" AND (".$where.")";
+
+ return $sql;
+ }
+
+ /*! generates delete sql
+
+ @param data
+ DataAction object
+ @param request
+ DataRequestConfig object
+ @return
+ sql string, which delete record
+ */
+ protected function delete_query($data,$request){
+ $sql="DELETE FROM ".$request->get_source();
+ $sql.=" WHERE ".$this->escape_name($this->config->id["db_name"])."='".$this->escape($data->get_id())."'";
+
+ //if we have limited set - set constraints
+ $where=$this->build_where($request->get_filters(),$request->get_relation());
+ if ($where) $sql.=" AND (".$where.")";
+
+ return $sql;
+ }
+
+ /*! generates insert sql
+
+ @param data
+ DataAction object
+ @param request
+ DataRequestConfig object
+ @return
+ sql string, which inserts new record with provided data
+ */
+ protected function insert_query($data,$request){
+ $temp_n=array();
+ $temp_v=array();
+ foreach($this->config->text as $k => $v){
+ $temp_n[$k]=$this->escape_name($v["db_name"]);
+ if ($data->get_value($v["name"])===Null)
+ $temp_v[$k]="Null";
+ else
+ $temp_v[$k]="'".$this->escape($data->get_value($v["name"]))."'";
+ }
+ if ($relation = $this->config->relation_id["db_name"]){
+ $temp_n[]=$this->escape_name($relation);
+ $temp_v[]="'".$this->escape($data->get_value($relation))."'";
+ }
+ if ($this->sequence){
+ $temp_n[]=$this->escape_name($this->config->id["db_name"]);
+ $temp_v[]=$this->sequence;
+ }
+
+ $sql="INSERT INTO ".$request->get_source()."(".implode(",",$temp_n).") VALUES (".implode(",",$temp_v).")";
+
+ return $sql;
+ }
+
+ /*! sets the transaction mode, used by dataprocessor
+
+ @param mode
+ mode name
+ */
+ public function set_transaction_mode($mode){
+ if ($mode!="none" && $mode!="global" && $mode!="record")
+ throw new Exception("Unknown transaction mode");
+ $this->transaction=$mode;
+ }
+ /*! returns true if global transaction mode was specified
+ @return
+ true if global transaction mode was specified
+ */
+ public function is_global_transaction(){
+ return $this->transaction == "global";
+ }
+ /*! returns true if record transaction mode was specified
+ @return
+ true if record transaction mode was specified
+ */
+ public function is_record_transaction(){
+ return $this->transaction == "record";
+ }
+
+
+ public function begin_transaction(){
+ $this->query("BEGIN");
+ }
+ public function commit_transaction(){
+ $this->query("COMMIT");
+ }
+ public function rollback_transaction(){
+ $this->query("ROLLBACK");
+ }
+
+ /*! exec sql string
+
+ @param sql
+ sql string
+ @return
+ sql result set
+ */
+ abstract protected function query($sql);
+ /*! returns next record from result set
+
+ @param res
+ sql result set
+ @return
+ hash of data
+ */
+ abstract public function get_next($res);
+ /*! returns new id value, for newly inserted row
+ @return
+ new id value, for newly inserted row
+ */
+ abstract protected function get_new_id();
+ /*! escape data to prevent sql injections
+ @param data
+ unescaped data
+ @return
+ escaped data
+ */
+ abstract public function escape($data);
+
+ /*! escape field name to prevent sql reserved words conflict
+ @param data
+ unescaped data
+ @return
+ escaped data
+ */
+ public function escape_name($data){
+ return $data;
+ }
+
+ /*! get list of tables in the database
+
+ @return
+ array of table names
+ */
+ public function tables_list() {
+ throw new Exception("Not implemented");
+ }
+
+ /*! returns list of fields for the table in question
+
+ @param table
+ name of table in question
+ @return
+ array of field names
+ */
+ public function fields_list($table) {
+ throw new Exception("Not implemented");
+ }
+
+}
+/*! Implementation of DataWrapper for MySQL
+**/
+class MySQLDBDataWrapper extends DBDataWrapper{
+ protected $last_result;
+ public function query($sql){
+ LogMaster::log($sql);
+ $res=mysql_query($sql,$this->connection);
+ if ($res===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection));
+ $this->last_result = $res;
+ return $res;
+ }
+
+ public function get_next($res){
+ if (!$res)
+ $res = $this->last_result;
+
+ return mysql_fetch_assoc($res);
+ }
+
+ protected function get_new_id(){
+ return mysql_insert_id($this->connection);
+ }
+
+ public function escape($data){
+ return mysql_real_escape_string($data, $this->connection);
+ }
+
+ public function tables_list() {
+ $result = mysql_query("SHOW TABLES");
+ if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection));
+
+ $tables = array();
+ while ($table = mysql_fetch_array($result)) {
+ $tables[] = $table[0];
+ }
+ return $tables;
+ }
+
+ public function fields_list($table) {
+ $result = mysql_query("SHOW COLUMNS FROM `".$table."`");
+ if ($result===false) throw new Exception("MySQL operation failed\n".mysql_error($this->connection));
+
+ $fields = array();
+ $id = "";
+ while ($field = mysql_fetch_assoc($result)) {
+ if ($field['Key'] == "PRI")
+ $id = $field["Field"];
+ else
+ $fields[] = $field["Field"];
+ }
+ return array("fields" => $fields, "key" => $id );
+ }
+
+ /*! escape field name to prevent sql reserved words conflict
+ @param data
+ unescaped data
+ @return
+ escaped data
+ */
+ public function escape_name($data){
+ if ((strpos($data,"`")!==false || is_int($data)) || (strpos($data,".")!==false))
+ return $data;
+ return '`'.$data.'`';
+ }
+}
+?> \ No newline at end of file
diff --git a/codebase/db_excel.php b/codebase/db_excel.php
new file mode 100644
index 0000000..09db5b0
--- /dev/null
+++ b/codebase/db_excel.php
@@ -0,0 +1,187 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once('db_common.php');
+
+if (!defined('DHX_IGNORE_EMPTY_ROWS')) {
+ define('DHX_IGNORE_EMPTY_ROWS', true);
+}
+
+class ExcelDBDataWrapper extends DBDataWrapper {
+
+ public $emptyLimit = 10;
+ public function excel_data($points){
+ $path = $this->connection;
+ $excel = PHPExcel_IOFactory::createReaderForFile($path);
+ $excel = $excel->load($path);
+ $result = array();
+ $excelWS = $excel->getActiveSheet();
+
+ for ($i=0; $i < sizeof($points); $i++) {
+ $c = array();
+ preg_match("/^([a-zA-Z]+)(\d+)/", $points[$i], $c);
+ if (count($c) > 0) {
+ $col = PHPExcel_Cell::columnIndexFromString($c[1]) - 1;
+ $cell = $excelWS->getCellByColumnAndRow($col, (int)$c[2]);
+ $result[] = $cell->getValue();
+ }
+ }
+
+ return $result;
+ }
+ public function select($source) {
+ $path = $this->connection;
+ $excel = PHPExcel_IOFactory::createReaderForFile($path);
+ $excel = $excel->load($path);
+ $excRes = new ExcelResult();
+ $excelWS = $excel->getActiveSheet();
+ $addFields = true;
+
+ $coords = array();
+ if ($source->get_source() == '*') {
+ $coords['start_row'] = 0;
+ $coords['end_row'] = false;
+ } else {
+ $c = array();
+ preg_match("/^([a-zA-Z]+)(\d+)/", $source->get_source(), $c);
+ if (count($c) > 0) {
+ $coords['start_row'] = (int) $c[2];
+ } else {
+ $coords['start_row'] = 0;
+ }
+ $c = array();
+ preg_match("/:(.+)(\d+)$/U", $source->get_source(), $c);
+ if (count($c) > 0) {
+ $coords['end_row'] = (int) $c[2];
+ } else {
+ $coords['end_row'] = false;
+ }
+ }
+
+ $i = $coords['start_row'];
+ $end = 0;
+ while ((($coords['end_row'] == false)&&($end < $this->emptyLimit))||(($coords['end_row'] !== false)&&($i < $coords['end_row']))) {
+ $r = Array();
+ $emptyNum = 0;
+ for ($j = 0; $j < count($this->config->text); $j++) {
+ $col = PHPExcel_Cell::columnIndexFromString($this->config->text[$j]['name']) - 1;
+ $cell = $excelWS->getCellByColumnAndRow($col, $i);
+ if ($cell->getDataType() == 'f') {
+ $r[PHPExcel_Cell::stringFromColumnIndex($col)] = $cell->getCalculatedValue();
+ } else {
+ $r[PHPExcel_Cell::stringFromColumnIndex($col)] = $cell->getValue();
+ }
+ if ($r[PHPExcel_Cell::stringFromColumnIndex($col)] == '') {
+ $emptyNum++;
+ }
+ }
+ if ($emptyNum < count($this->config->text)) {
+ $r['id'] = $i;
+ $excRes->addRecord($r);
+ $end = 0;
+ } else {
+ if (DHX_IGNORE_EMPTY_ROWS == false) {
+ $r['id'] = $i;
+ $excRes->addRecord($r);
+ }
+ $end++;
+ }
+ $i++;
+ }
+ return $excRes;
+ }
+
+ protected function query($sql) {
+ }
+
+ protected function get_new_id() {
+ }
+
+ public function escape($data) {
+ }
+
+ public function get_next($res) {
+ return $res->next();
+ }
+
+}
+
+
+class ExcelResult {
+ private $rows;
+ private $currentRecord = 0;
+
+
+ // add record to output list
+ public function addRecord($file) {
+ $this->rows[] = $file;
+ }
+
+
+ // return next record
+ public function next() {
+ if ($this->currentRecord < count($this->rows)) {
+ $row = $this->rows[$this->currentRecord];
+ $this->currentRecord++;
+ return $row;
+ } else {
+ return false;
+ }
+ }
+
+
+ // sorts records under $sort array
+ public function sort($sort, $data) {
+ if (count($this->files) == 0) {
+ return $this;
+ }
+ // defines fields list if it's need
+ for ($i = 0; $i < count($sort); $i++) {
+ $fieldname = $sort[$i]['name'];
+ if (!isset($this->files[0][$fieldname])) {
+ if (isset($data[$fieldname])) {
+ $fieldname = $data[$fieldname]['db_name'];
+ $sort[$i]['name'] = $fieldname;
+ } else {
+ $fieldname = false;
+ }
+ }
+ }
+
+ // for every sorting field will sort
+ for ($i = 0; $i < count($sort); $i++) {
+ // if field, setted in sort parameter doesn't exist, continue
+ if ($sort[$i]['name'] == false) {
+ continue;
+ }
+ // sorting by current field
+ $flag = true;
+ while ($flag == true) {
+ $flag = false;
+ // checks if previous sorting fields are equal
+ for ($j = 0; $j < count($this->files) - 1; $j++) {
+ $equal = true;
+ for ($k = 0; $k < $i; $k++) {
+ if ($this->files[$j][$sort[$k]['name']] != $this->files[$j + 1][$sort[$k]['name']]) {
+ $equal = false;
+ }
+ }
+ // compares two records in list under current sorting field and sorting direction
+ if (((($this->files[$j][$sort[$i]['name']] > $this->files[$j + 1][$sort[$i]['name']])&&($sort[$i]['direction'] == 'ASC'))||(($this->files[$j][$sort[$i]['name']] < $this->files[$j + 1][$sort[$i]['name']])&&($sort[$i]['direction'] == 'DESC')))&&($equal == true)) {
+ $c = $this->files[$j];
+ $this->files[$j] = $this->files[$j+1];
+ $this->files[$j+1] = $c;
+ $flag = true;
+ }
+ }
+ }
+ }
+ return $this;
+ }
+
+}
+
+
+?> \ No newline at end of file
diff --git a/codebase/db_filesystem.php b/codebase/db_filesystem.php
new file mode 100644
index 0000000..7817be5
--- /dev/null
+++ b/codebase/db_filesystem.php
@@ -0,0 +1,345 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once('db_common.php');
+require_once('tree_connector.php');
+
+/*
+Most execution time is a standart functions for workin with FileSystem: is_dir(), dir(), readdir(), stat()
+*/
+
+class FileSystemDBDataWrapper extends DBDataWrapper {
+
+
+ // returns list of files and directories
+ public function select($source) {
+ $relation = $this->getFileName($source->get_relation());
+ // for tree checks relation id and forms absolute path
+ if ($relation == '0') {
+ $relation = '';
+ } else {
+ $path = $source->get_source();
+ }
+ $path = $source->get_source();
+ $path = $this->getFileName($path);
+ $path = realpath($path);
+ if ($path == false) {
+ return new FileSystemResult();
+ }
+
+ if (strpos(realpath($path.'/'.$relation), $path) !== 0) {
+ return new FileSystemResult();
+ }
+ // gets files and directories list
+ $res = $this->getFilesList($path, $relation);
+ // sorts list
+ $res = $res->sort($source->get_sort_by(), $this->config->data);
+ return $res;
+ }
+
+
+ // gets files and directory list
+ private function getFilesList($path, $relation) {
+ $fileSystemTypes = FileSystemTypes::getInstance();
+ LogMaster::log("Query filesystem: ".$path);
+ $dir = opendir($path.'/'.$relation);
+ $result = new FileSystemResult();
+ // forms fields list
+ for ($i = 0; $i < count($this->config->data); $i++) {
+ $fields[] = $this->config->data[$i]['db_name'];
+ }
+ // for every file and directory of folder
+ while ($file = readdir($dir)) {
+ // . and .. should not be in output list
+ if (($file == '.')||($file == '..')) {
+ continue;
+ }
+ $newFile = array();
+ // parse file name as Array('name', 'ext', 'is_dir')
+ $fileNameExt = $this->parseFileName($path.'/'.$relation, $file);
+ // checks if file should be in output array
+ if (!$fileSystemTypes->checkFile($file, $fileNameExt)) {
+ continue;
+ }
+ // takes file stat if it's need
+ if ((in_array('size', $fields))||(in_array('date', $fields))) {
+ $fileInfo = stat($path.'/'.$file);
+ }
+
+ // for every field forms list of fields
+ for ($i = 0; $i < count($fields); $i++) {
+ $field = $fields[$i];
+ switch ($field) {
+ case 'filename':
+ $newFile['filename'] = $file;
+ break;
+ case 'full_filename':
+ $newFile['full_filename'] = $path."/".$file;
+ break;
+ case 'size':
+ $newFile['size'] = $fileInfo['size'];
+ break;
+ case 'extention':
+ $newFile['extention'] = $fileNameExt['ext'];
+ break;
+ case 'name':
+ $newFile['name'] = $fileNameExt['name'];
+ break;
+ case 'date':
+ $newFile['date'] = date("Y-m-d H:i:s", $fileInfo['ctime']);
+ break;
+ }
+ $newFile['relation_id'] = $relation.'/'.$file;
+ $newFile['safe_name'] = $this->setFileName($relation.'/'.$file);
+ $newFile['is_folder'] = $fileNameExt['is_dir'];
+ }
+ // add file in output list
+ $result->addFile($newFile);
+ }
+ return $result;
+ }
+
+
+ // replaces '.' and '_' in id
+ private function setFileName($filename) {
+ $filename = str_replace(".", "{-dot-}", $filename);
+ $filename = str_replace("_", "{-nizh-}", $filename);
+ return $filename;
+ }
+
+
+ // replaces '{-dot-}' and '{-nizh-}' in id
+ private function getFileName($filename) {
+ $filename = str_replace("{-dot-}", ".", $filename);
+ $filename = str_replace("{-nizh-}", "_", $filename);
+ return $filename;
+ }
+
+
+ // parses file name and checks if is directory
+ private function parseFileName($path, $file) {
+ $result = Array();
+ if (is_dir($path.'/'.$file)) {
+ $result['name'] = $file;
+ $result['ext'] = 'dir';
+ $result['is_dir'] = 1;
+ } else {
+ $pos = strrpos($file, '.');
+ $result['name'] = substr($file, 0, $pos);
+ $result['ext'] = substr($file, $pos + 1);
+ $result['is_dir'] = 0;
+ }
+ return $result;
+ }
+
+ protected function query($sql) {
+ }
+
+ protected function get_new_id() {
+ }
+
+ public function escape($data) {
+ }
+
+ public function get_next($res) {
+ return $res->next();
+ }
+
+}
+
+
+class FileSystemResult {
+ private $files;
+ private $currentRecord = 0;
+
+
+ // add record to output list
+ public function addFile($file) {
+ $this->files[] = $file;
+ }
+
+
+ // return next record
+ public function next() {
+ if ($this->currentRecord < count($this->files)) {
+ $file = $this->files[$this->currentRecord];
+ $this->currentRecord++;
+ return $file;
+ } else {
+ return false;
+ }
+ }
+
+
+ // sorts records under $sort array
+ public function sort($sort, $data) {
+ if (count($this->files) == 0) {
+ return $this;
+ }
+ // defines fields list if it's need
+ for ($i = 0; $i < count($sort); $i++) {
+ $fieldname = $sort[$i]['name'];
+ if (!isset($this->files[0][$fieldname])) {
+ if (isset($data[$fieldname])) {
+ $fieldname = $data[$fieldname]['db_name'];
+ $sort[$i]['name'] = $fieldname;
+ } else {
+ $fieldname = false;
+ }
+ }
+ }
+
+ // for every sorting field will sort
+ for ($i = 0; $i < count($sort); $i++) {
+ // if field, setted in sort parameter doesn't exist, continue
+ if ($sort[$i]['name'] == false) {
+ continue;
+ }
+ // sorting by current field
+ $flag = true;
+ while ($flag == true) {
+ $flag = false;
+ // checks if previous sorting fields are equal
+ for ($j = 0; $j < count($this->files) - 1; $j++) {
+ $equal = true;
+ for ($k = 0; $k < $i; $k++) {
+ if ($this->files[$j][$sort[$k]['name']] != $this->files[$j + 1][$sort[$k]['name']]) {
+ $equal = false;
+ }
+ }
+ // compares two records in list under current sorting field and sorting direction
+ if (((($this->files[$j][$sort[$i]['name']] > $this->files[$j + 1][$sort[$i]['name']])&&($sort[$i]['direction'] == 'ASC'))||(($this->files[$j][$sort[$i]['name']] < $this->files[$j + 1][$sort[$i]['name']])&&($sort[$i]['direction'] == 'DESC')))&&($equal == true)) {
+ $c = $this->files[$j];
+ $this->files[$j] = $this->files[$j+1];
+ $this->files[$j+1] = $c;
+ $flag = true;
+ }
+ }
+ }
+ }
+ return $this;
+ }
+
+}
+
+
+// singleton class for setting file types filter
+class FileSystemTypes {
+
+ static private $instance = NULL;
+ private $extentions = Array();
+ private $extentions_not = Array();
+ private $all = true;
+ private $patterns = Array();
+ // predefined types
+ private $types = Array(
+ 'image' => Array('jpg', 'jpeg', 'gif', 'png', 'tiff', 'bmp', 'psd', 'dir'),
+ 'document' => Array('txt', 'doc', 'docx', 'xls', 'xlsx', 'rtf', 'dir'),
+ 'web' => Array('php', 'html', 'htm', 'js', 'css', 'dir'),
+ 'audio' => Array('mp3', 'wav', 'ogg', 'dir'),
+ 'video' => Array('avi', 'mpg', 'mpeg', 'mp4', 'dir'),
+ 'only_dir' => Array('dir')
+ );
+
+
+ static function getInstance() {
+ if (self::$instance == NULL) {
+ self::$instance = new FileSystemTypes();
+ }
+ return self::$instance;
+ }
+
+ // sets array of extentions
+ public function setExtentions($ext) {
+ $this->all = false;
+ $this->extentions = $ext;
+ }
+
+ // adds one extention in array
+ public function addExtention($ext) {
+ $this->all = false;
+ $this->extentions[] = $ext;
+ }
+
+
+ // adds one extention which will not ouputed in array
+ public function addExtentionNot($ext) {
+ $this->extentions_not[] = $ext;
+ }
+
+
+ // returns array of extentions
+ public function getExtentions() {
+ return $this->extentions;
+ }
+
+ // adds regexp pattern
+ public function addPattern($pattern) {
+ $this->all = false;
+ $this->patterns[] = $pattern;
+ }
+
+ // clear extentions array
+ public function clearExtentions() {
+ $this->all = true;
+ $this->extentions = Array();
+ }
+
+ // clear regexp patterns array
+ public function clearPatterns() {
+ $this->all = true;
+ $this->patterns = Array();
+ }
+
+ // clear all filters
+ public function clearAll() {
+ $this->clearExtentions();
+ $this->clearPatterns();
+ }
+
+ // sets predefined type
+ public function setType($type, $clear = false) {
+ $this->all = false;
+ if ($type == 'all') {
+ $this->all = true;
+ return true;
+ }
+ if (isset($this->types[$type])) {
+ if ($clear) {
+ $this->clearExtentions();
+ }
+ for ($i = 0; $i < count($this->types[$type]); $i++) {
+ $this->extentions[] = $this->types[$type][$i];
+ }
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+
+ // check file under setted filter
+ public function checkFile($filename, $fileNameExt) {
+ if (in_array($fileNameExt['ext'], $this->extentions_not)) {
+ return false;
+ }
+ if ($this->all) {
+ return true;
+ }
+
+ if ((count($this->extentions) > 0)&&(!in_array($fileNameExt['ext'], $this->extentions))) {
+ return false;
+ }
+
+ for ($i = 0; $i < count($this->patterns); $i++) {
+ if (!preg_match($this->patterns[$i], $filename)) {
+ return false;
+ }
+ }
+ return true;
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/db_mssql.php b/codebase/db_mssql.php
new file mode 100644
index 0000000..e082c03
--- /dev/null
+++ b/codebase/db_mssql.php
@@ -0,0 +1,70 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("db_common.php");
+/*! MSSQL implementation of DataWrapper
+**/
+class MsSQLDBDataWrapper extends DBDataWrapper{
+ private $last_id=""; //!< ID of previously inserted record
+ private $insert_operation=false; //!< flag of insert operation
+ private $start_from=false; //!< index of start position
+
+ public function query($sql){
+ LogMaster::log($sql);
+ $res = mssql_query($sql,$this->connection);
+ if ($this->insert_operation){
+ $last = mssql_fetch_assoc($res);
+ $this->last_id = $last["dhx_id"];
+ mssql_free_result($res);
+ }
+ if ($this->start_from)
+ mssql_data_seek($res,$this->start_from);
+ return $res;
+ }
+
+ public function get_next($res){
+ return mssql_fetch_assoc($res);
+ }
+
+ protected function get_new_id(){
+ /*
+ MSSQL doesn't support identity or auto-increment fields
+ Insert SQL returns new ID value, which stored in last_id field
+ */
+ return $this->last_id;
+ }
+
+ protected function insert_query($data,$request){
+ $sql = parent::insert_query($data,$request);
+ $this->insert_operation=true;
+ return $sql.";SELECT @@IDENTITY AS dhx_id";
+ }
+
+ protected function select_query($select,$from,$where,$sort,$start,$count){
+ $sql="SELECT " ;
+ if ($count)
+ $sql.=" TOP ".($count+$start);
+ $sql.=" ".$select." FROM ".$from;
+ if ($where) $sql.=" WHERE ".$where;
+ if ($sort) $sql.=" ORDER BY ".$sort;
+ if ($start && $count)
+ $this->start_from=$start;
+ else
+ $this->start_from=false;
+ return $sql;
+ }
+
+ public function escape($data){
+ /*
+ there is no special escaping method for mssql - use common logic
+ */
+ return str_replace("'","''",$data);
+ }
+
+ public function begin_transaction(){
+ $this->query("BEGIN TRAN");
+ }
+}
+?> \ No newline at end of file
diff --git a/codebase/db_mysqli.php b/codebase/db_mysqli.php
new file mode 100644
index 0000000..806fcda
--- /dev/null
+++ b/codebase/db_mysqli.php
@@ -0,0 +1,56 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("db_common.php");
+
+class MySQLiDBDataWrapper extends MySQLDBDataWrapper{
+
+ public function query($sql){
+ LogMaster::log($sql);
+ $res = $this->connection->query($sql);
+ if ($res===false) throw new Exception("MySQL operation failed\n".$this->connection->error);
+ return $res;
+ }
+
+ public function get_next($res){
+ return $res->fetch_assoc();
+ }
+
+ protected function get_new_id(){
+ return $this->connection->insert_id;
+ }
+
+ public function escape($data){
+ return $this->connection->real_escape_string($data);
+ }
+
+ public function tables_list() {
+ $result = $this->connection->query("SHOW TABLES");
+ if ($result===false) throw new Exception("MySQL operation failed\n".$this->connection->error);
+
+ $tables = array();
+ while ($table = $result->fetch_array()) {
+ $tables[] = $table[0];
+ }
+ return $tables;
+ }
+
+ public function fields_list($table) {
+ $result = $this->connection->query("SHOW COLUMNS FROM `".$table."`");
+ if ($result===false) throw new Exception("MySQL operation failed\n".$this->connection->error);
+ $fields = array();
+ while ($field = $result->fetch_array()) {
+ if ($field['Key'] == "PRI") {
+ $fields[$field[0]] = 1;
+ } else {
+ $fields[$field[0]] = 0;
+ }
+ }
+ return $fields;
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/codebase/db_oracle.php b/codebase/db_oracle.php
new file mode 100644
index 0000000..5dcbd71
--- /dev/null
+++ b/codebase/db_oracle.php
@@ -0,0 +1,88 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("db_common.php");
+/*! Implementation of DataWrapper for Oracle
+**/
+class OracleDBDataWrapper extends DBDataWrapper{
+ private $last_id=""; //id of previously inserted record
+ private $insert_operation=false; //flag of insert operation
+
+ public function query($sql){
+ LogMaster::log($sql);
+ $stm = oci_parse($this->connection,$sql);
+ if ($stm===false) throw new Exception("Oracle - sql parsing failed\n".oci_error($this->connection));
+
+ $out = array(0=>null);
+ if($this->insert_operation){
+ oci_bind_by_name($stm,":outID",$out[0],999);
+ $this->insert_operation=false;
+ }
+
+
+ $mode = ($this->is_record_transaction() || $this->is_global_transaction())?OCI_DEFAULT:OCI_COMMIT_ON_SUCCESS;
+ $res=oci_execute($stm,$mode);
+ if ($res===false) throw new Exception("Oracle - sql execution failed\n".oci_error($this->connection));
+
+ $this->last_id=$out[0];
+
+ return $stm;
+ }
+
+ public function get_next($res){
+ $data = oci_fetch_assoc($res);
+ if ($data){
+ if (array_key_exists("VALUE",$data))
+ $data["value"]=$data["VALUE"];
+ if (array_key_exists("LABEL",$data))
+ $data["label"]=$data["LABEL"];
+ }
+
+ return $data;
+ }
+
+ protected function get_new_id(){
+ /*
+ Oracle doesn't support identity or auto-increment fields
+ Insert SQL returns new ID value, which stored in last_id field
+ */
+ return $this->last_id;
+ }
+
+ protected function insert_query($data,$request){
+ $sql = parent::insert_query($data,$request);
+ $this->insert_operation=true;
+ return $sql." returning ".$this->config->id["db_name"]." into :outID";
+ }
+
+ protected function select_query($select,$from,$where,$sort,$start,$count){
+ $sql="SELECT ".$select." FROM ".$from;
+ if ($where) $sql.=" WHERE ".$where;
+ if ($sort) $sql.=" ORDER BY ".$sort;
+ if ($start || $count)
+ $sql="SELECT * FROM ( select /*+ FIRST_ROWS(".$count.")*/dhx_table.*, ROWNUM rnum FROM (".$sql.") dhx_table where ROWNUM <= ".($count+$start)." ) where rnum >".$start;
+ return $sql;
+ }
+
+ public function escape($data){
+ /*
+ as far as I can see the only way to escape data is by using oci_bind_by_name
+ while it is neat solution in common case, it conflicts with existing SQL building logic
+ fallback to simple escaping
+ */
+ return str_replace("'","''",$data);
+ }
+
+ public function begin_transaction(){
+ //auto-start of transaction
+ }
+ public function commit_transaction(){
+ oci_commit($this->connection);
+ }
+ public function rollback_transaction(){
+ oci_rollback($this->connection);
+ }
+}
+?> \ No newline at end of file
diff --git a/codebase/db_pdo.php b/codebase/db_pdo.php
new file mode 100644
index 0000000..281b23d
--- /dev/null
+++ b/codebase/db_pdo.php
@@ -0,0 +1,69 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("db_common.php");
+/*! Implementation of DataWrapper for PDO
+
+if you plan to use it for Oracle - use Oracle connection type instead
+**/
+class PDODBDataWrapper extends DBDataWrapper{
+ private $last_result;//!< store result or last operation
+
+ public function query($sql){
+ LogMaster::log($sql);
+
+ $res=$this->connection->query($sql);
+ if ($res===false) throw new Exception("PDO - sql execution failed\n".$this->connection->errorInfo());
+
+ return new PDOResultSet($res);
+ }
+
+ protected function select_query($select,$from,$where,$sort,$start,$count){
+ $sql="SELECT ".$select." FROM ".$from;
+ if ($where) $sql.=" WHERE ".$where;
+ if ($sort) $sql.=" ORDER BY ".$sort;
+ if ($start || $count) {
+ if ($this->connection->getAttribute(PDO::ATTR_DRIVER_NAME)=="pgsql")
+ $sql.=" OFFSET ".$start." LIMIT ".$count;
+ else
+ $sql.=" LIMIT ".$start.",".$count;
+ }
+ return $sql;
+ }
+
+
+ public function get_next($res){
+ $data = $res->next();
+ return $data;
+ }
+
+ protected function get_new_id(){
+ return $this->connection->lastInsertId();
+ }
+
+ public function escape($str){
+ $res=$this->connection->quote($str);
+ if ($res===false) //not supported by pdo driver
+ return str_replace("'","''",$str);
+ return substr($res,1,-1);
+ }
+
+}
+
+class PDOResultSet{
+ private $res;
+ public function __construct($res){
+ $this->res = $res;
+ }
+ public function next(){
+ $data = $this->res->fetch(PDO::FETCH_ASSOC);
+ if (!$data){
+ $this->res->closeCursor();
+ return null;
+ }
+ return $data;
+ }
+}
+?> \ No newline at end of file
diff --git a/codebase/db_postgre.php b/codebase/db_postgre.php
new file mode 100644
index 0000000..f944714
--- /dev/null
+++ b/codebase/db_postgre.php
@@ -0,0 +1,70 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("db_common.php");
+/*! Implementation of DataWrapper for PostgreSQL
+**/
+class PostgreDBDataWrapper extends DBDataWrapper{
+ public function query($sql){
+ LogMaster::log($sql);
+
+ $res=pg_query($this->connection,$sql);
+ if ($res===false) throw new Exception("Postgre - sql execution failed\n".pg_last_error($this->connection));
+
+ return $res;
+ }
+
+ protected function select_query($select,$from,$where,$sort,$start,$count){
+ $sql="SELECT ".$select." FROM ".$from;
+ if ($where) $sql.=" WHERE ".$where;
+ if ($sort) $sql.=" ORDER BY ".$sort;
+ if ($start || $count)
+ $sql.=" OFFSET ".$start." LIMIT ".$count;
+ return $sql;
+ }
+
+ public function get_next($res){
+ return pg_fetch_assoc($res);
+ }
+
+ protected function get_new_id(){
+ $res = pg_query( $this->connection, "SELECT LASTVAL() AS seq");
+ $data = pg_fetch_assoc($res);
+ pg_free_result($res);
+ return $data['seq'];
+ }
+
+ public function escape($data){
+ //need to use oci_bind_by_name
+ return pg_escape_string($this->connection,$data);
+ }
+
+ public function tables_list() {
+ $sql = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'";
+ $res = pg_query($this->connection, $sql);
+ $tables = array();
+ while ($table = pg_fetch_assoc($res)) {
+ $tables[] = $table['table_name'];
+ }
+ return $tables;
+ }
+
+ public function fields_list($table) {
+ $sql = "SELECT * FROM information_schema.constraint_column_usage";
+ $result = pg_query($this->connection, $sql);
+ $field = pg_fetch_assoc($result);
+ $id = $field['column_name'];
+
+ $sql = "SELECT * FROM information_schema.columns WHERE table_name ='".$table."';";
+ $result = pg_query($this->connection, $sql);
+ $fields = array();
+ $id = "";
+ while ($field = pg_fetch_assoc($result)) {
+ $fields[] = $field["column_name"];
+ }
+ return array('fields' => $fields, 'key' => $id );
+ }
+}
+?> \ No newline at end of file
diff --git a/codebase/db_sqlite.php b/codebase/db_sqlite.php
new file mode 100644
index 0000000..cd8de9d
--- /dev/null
+++ b/codebase/db_sqlite.php
@@ -0,0 +1,34 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("db_common.php");
+/*! SQLite implementation of DataWrapper
+**/
+class SQLiteDBDataWrapper extends DBDataWrapper{
+
+ public function query($sql){
+ LogMaster::log($sql);
+
+ $res = sqlite_query($this->connection,$sql);
+ if ($res === false)
+ throw new Exception("SQLLite - sql execution failed\n".sqlite_error_string(sqlite_last_error($this->connection)));
+
+ return $res;
+ }
+
+ public function get_next($res){
+ $data = sqlite_fetch_array($res, SQLITE_ASSOC);
+ return $data;
+ }
+
+ protected function get_new_id(){
+ return sqlite_last_insert_rowid($this->connection);
+ }
+
+ public function escape($data){
+ return sqlite_escape_string($data);
+ }
+}
+?> \ No newline at end of file
diff --git a/codebase/db_sqlsrv.php b/codebase/db_sqlsrv.php
new file mode 100644
index 0000000..1dfd4ef
--- /dev/null
+++ b/codebase/db_sqlsrv.php
@@ -0,0 +1,86 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("db_common.php");
+/*! MSSQL implementation of DataWrapper
+**/
+class SQLSrvDBDataWrapper extends DBDataWrapper{
+ private $last_id=""; //!< ID of previously inserted record
+ private $insert_operation=false; //!< flag of insert operation
+ private $start_from=false; //!< index of start position
+
+ public function query($sql){
+ LogMaster::log($sql);
+ if ($this->start_from)
+ $res = sqlsrv_query($this->connection,$sql, array(), array("Scrollable" => SQLSRV_CURSOR_STATIC));
+ else
+ $res = sqlsrv_query($this->connection,$sql);
+
+
+ if ($this->insert_operation){
+ sqlsrv_next_result($res);
+ $last = sqlsrv_fetch_array($res);
+ $this->last_id = $last["dhx_id"];
+ sqlsrv_free_stmt($res);
+ }
+ if ($this->start_from)
+ $data = sqlsrv_fetch($res, SQLSRV_SCROLL_ABSOLUTE, $this->start_from-1);
+ return $res;
+ }
+
+ public function get_next($res){
+ $data = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC);
+ foreach ($data as $key => $value)
+ if (is_a($value, "DateTime"))
+ $data[$key] = $value->format("Y-m-d H:i");
+ return $data;
+ }
+
+ protected function get_new_id(){
+ /*
+ MSSQL doesn't support identity or auto-increment fields
+ Insert SQL returns new ID value, which stored in last_id field
+ */
+ return $this->last_id;
+ }
+
+ protected function insert_query($data,$request){
+ $sql = parent::insert_query($data,$request);
+ $this->insert_operation=true;
+ return $sql.";SELECT SCOPE_IDENTITY() as dhx_id";
+ }
+
+ protected function select_query($select,$from,$where,$sort,$start,$count){
+ $sql="SELECT " ;
+ if ($count)
+ $sql.=" TOP ".($count+$start);
+ $sql.=" ".$select." FROM ".$from;
+ if ($where) $sql.=" WHERE ".$where;
+ if ($sort) $sql.=" ORDER BY ".$sort;
+ if ($start && $count)
+ $this->start_from=$start;
+ else
+ $this->start_from=false;
+ return $sql;
+ }
+
+ public function escape($data){
+ /*
+ there is no special escaping method for mssql - use common logic
+ */
+ return str_replace("'","''",$data);
+ }
+
+ public function begin_transaction(){
+ sqlsrv_begin_transaction($this->connection);
+ }
+ public function commit_transaction(){
+ sqlsrv_commit($this->connection);
+ }
+ public function rollback_transaction(){
+ sqlsrv_rollback($this->connection);
+ }
+}
+?> \ No newline at end of file
diff --git a/codebase/filesystem_item.php b/codebase/filesystem_item.php
new file mode 100644
index 0000000..046ad98
--- /dev/null
+++ b/codebase/filesystem_item.php
@@ -0,0 +1,19 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+
+class FileTreeDataItem extends TreeDataItem {
+
+ function has_kids(){
+ if ($this->data['is_folder'] == '1') {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/codebase/form_connector.php b/codebase/form_connector.php
new file mode 100644
index 0000000..f89cf03
--- /dev/null
+++ b/codebase/form_connector.php
@@ -0,0 +1,62 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("base_connector.php");
+
+/*! DataItem class for dhxForm component
+**/
+class FormDataItem extends DataItem{
+ /*! return self as XML string
+ */
+ function to_xml(){
+ if ($this->skip) return "";
+ $str="";
+ for ($i = 0; $i < count($this->config->data); $i++) {
+ $str .= "<".$this->config->data[$i]['db_name']."><![CDATA[".$this->data[$this->config->data[$i]['db_name']]."]]></".$this->config->data[$i]['db_name'].">";
+ }
+ return $str;
+ }
+}
+
+
+/*! Connector class for dhtmlxForm
+**/
+class FormConnector extends Connector{
+
+ /*! constructor
+
+ Here initilization of all Masters occurs, execution timer initialized
+ @param res
+ db connection resource
+ @param type
+ string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
+ @param item_type
+ name of class, which will be used for item rendering, optional, DataItem will be used by default
+ @param data_type
+ name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
+ */
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="FormDataItem";
+ if (!$data_type) $data_type="FormDataProcessor";
+ parent::__construct($res,$type,$item_type,$data_type);
+ }
+
+ //parse GET scoope, all operations with incoming request must be done here
+ function parse_request(){
+ parent::parse_request();
+ if (isset($_GET["id"]))
+ $this->request->set_filter($this->config->id["name"],$_GET["id"],"=");
+ else if (!$_POST["ids"])
+ throw new Exception("ID parameter is missed");
+ }
+
+}
+
+/*! DataProcessor class for dhxForm component
+**/
+class FormDataProcessor extends DataProcessor{
+
+}
+?> \ No newline at end of file
diff --git a/codebase/grid_config.php b/codebase/grid_config.php
new file mode 100644
index 0000000..5bb99c5
--- /dev/null
+++ b/codebase/grid_config.php
@@ -0,0 +1,298 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+
+class GridConfiguration{
+
+ /*! attaching header functionality
+ */
+ protected $headerDelimiter = ',';
+ protected $headerNames = false;
+ protected $headerAttaches = array();
+ protected $footerAttaches = array();
+ protected $headerWidthsUnits = 'px';
+
+ protected $headerIds = false;
+ protected $headerWidths = false;
+ protected $headerTypes = false;
+ protected $headerAlign = false;
+ protected $headerVAlign = false;
+ protected $headerSorts = false;
+ protected $headerColors = false;
+ protected $headerHidden = false;
+ protected $headerFormat = false;
+
+ function __construct($headers = false){
+ if ($headers === false || $headers === true )
+ $this->headerNames = $headers;
+ else
+ $this->setHeader($headers);
+ }
+
+ /*! brief convert list of parameters to an array
+ @param param
+ list of values or array of values
+ @return array of parameters
+ */
+ private function parse_param_array($param, $check=false, $default = ""){
+ if (gettype($param) == 'string')
+ $param = explode($this->headerDelimiter, $param);
+
+ if ($check){
+ for ($i=0; $i < sizeof($param); $i++) {
+ if (!array_key_exists($param[$i],$check))
+ $param[$i] = $default;
+ }
+ }
+ return $param;
+ }
+
+ /*! sets delimiter for string arguments in attach header functions (default is ,)
+ @param headerDelimiter
+ string delimiter
+ */
+ public function setHeaderDelimiter($headerDelimiter) {
+ $this->headerDelimiter = $headerDelimiter;
+ }
+
+ /*! sets header
+ @param names
+ array of names or string of names, delimited by headerDelimiter (default is ,)
+ */
+ public function setHeader($names) {
+ if ($names instanceof DataConfig){
+ $out = array();
+ for ($i=0; $i < sizeof($names->text); $i++)
+ $out[]=$names->text[$i]["name"];
+ $names = $out;
+ }
+
+ $this->headerNames = $this->parse_param_array($names);
+ }
+
+ /*! sets init columns width in pixels
+ @param wp
+ array of widths or string of widths, delimited by headerDelimiter (default is ,)
+ */
+ public function setInitWidths($wp) {
+ $this->headerWidths = $this->parse_param_array($wp);
+ $this->headerWidthsUnits = 'px';
+ }
+
+ /*! sets init columns width in persents
+ @param wp
+ array of widths or string of widths, delimited by headerDelimiter (default is ,)
+ */
+ public function setInitWidthsP($wp) {
+ $this->setInitWidths($wp);
+ $this->headerWidthsUnits = '%';
+ }
+
+ /*! sets columns align
+ @param alStr
+ array of aligns or string of aligns, delimited by headerDelimiter (default is ,)
+ */
+ public function setColAlign($alStr) {
+ $this->headerAlign = $this->parse_param_array($alStr,
+ array("right"=>1, "left"=>1, "center"=>1, "justify"=>1),
+ "left");
+ }
+
+ /*! sets columns vertical align
+ @param alStr
+ array of vertical aligns or string of vertical aligns, delimited by headerDelimiter (default is ,)
+ */
+ public function setColVAlign($alStr) {
+ $this->headerVAlign = $this->parse_param_array($alStr,
+ array("baseline"=>1, "sub"=>1, "super"=>1, "top"=>1, "text-top"=>1, "middle"=>1, "bottom"=>1, "text-bottom"=>1),
+ "top");
+ }
+
+ /*! sets column types
+ @param typeStr
+ array of types or string of types, delimited by headerDelimiter (default is ,)
+ */
+ public function setColTypes($typeStr) {
+ $this->headerTypes = $this->parse_param_array($typeStr);
+ }
+
+ /*! sets columns sorting
+ @param sortStr
+ array if sortings or string of sortings, delimited by headerDelimiter (default is ,)
+ */
+ public function setColSorting($sortStr) {
+ $this->headerSorts = $this->parse_param_array($sortStr);
+ }
+
+ /*! sets columns colors
+ @param colorStr
+ array of colors or string of colors, delimited by headerDelimiter (default is ,)
+ if (color should not be applied it's value should be null)
+ */
+ public function setColColor($colorStr) {
+ $this->headerColors = $this->parse_param_array($colorStr);
+ }
+
+ /*! sets hidden columns
+ @param hidStr
+ array of bool values or string of bool values, delimited by headerDelimiter (default is ,)
+ */
+ public function setColHidden($hidStr) {
+ $this->headerHidden = $this->parse_param_array($hidStr);
+ }
+
+ /*! sets columns id
+ @param idsStr
+ array of ids or string of ids, delimited by headerDelimiter (default is ,)
+ */
+ public function setColIds($idsStr) {
+ $this->headerIds = $this->parse_param_array($idsStr);
+ }
+
+ /*! sets number/date format
+ @param formatArr
+ array of mask formats for number/dates , delimited by headerDelimiter (default is ,)
+ */
+ public function setColFormat($formatArr) {
+ $this->headerFormat = $this->parse_param_array($formatArr);
+ }
+
+ /*! attaches header
+ @param values
+ array of header names or string of header names, delimited by headerDelimiter (default is ,)
+ @param styles
+ array of header styles or string of header styles, delimited by headerDelimiter (default is ,)
+ */
+ public function attachHeader($values, $styles = null, $footer = false) {
+ $header = array();
+ $header['values'] = $this->parse_param_array($values);
+ if ($styles != null) {
+ $header['styles'] = $this->parse_param_array($styles);
+ } else {
+ $header['styles'] = null;
+ }
+ if ($footer)
+ $this->footerAttaches[] = $header;
+ else
+ $this->headerAttaches[] = $header;
+ }
+
+ /*! attaches footer
+ @param values
+ array of footer names or string of footer names, delimited by headerDelimiter (default is ,)
+ @param styles
+ array of footer styles or string of footer styles, delimited by headerDelimiter (default is ,)
+ */
+ public function attachFooter($values, $styles = null) {
+ $this->attachHeader($values, $styles, true);
+ }
+
+ private function auto_fill($mode){
+ $headerWidths = array();
+ $headerTypes = array();
+ $headerSorts = array();
+ $headerAttaches = array();
+
+ for ($i=0; $i < sizeof($this->headerNames); $i++) {
+ $headerWidths[] = 100;
+ $headerTypes[] = "ro";
+ $headerSorts[] = "connector";
+ $headerAttaches[] = "#connector_text_filter";
+ }
+ if ($this->headerWidths == false)
+ $this->setInitWidths($headerWidths);
+ if ($this->headerTypes == false)
+ $this->setColTypes($headerTypes);
+
+ if ($mode){
+ if ($this->headerSorts == false)
+ $this->setColSorting($headerSorts);
+ $this->attachHeader($headerAttaches);
+ }
+ }
+
+ public function defineOptions($conn){
+ if (!$conn->is_first_call()) return; //render head only for first call
+
+ $config = $conn->get_config();
+ $full_header = ($this->headerNames === true);
+
+ if (gettype($this->headerNames) == 'boolean') //auto-config
+ $this->setHeader($config);
+ $this->auto_fill($full_header);
+
+ if (isset($_GET["dhx_colls"])) return;
+
+ $fillList = array();
+ for ($i = 0; $i < count($this->headerNames); $i++)
+ if ($this->headerTypes[$i] == "co" || $this->headerTypes[$i] == "coro")
+ $fillList[$i] = true;
+
+ for ($i = 0; $i < count($this->headerAttaches); $i++) {
+ for ($j = 0; $j < count($this->headerAttaches[$i]['values']); $j++) {
+ if ($this->headerAttaches[$i]['values'][$j] == "#connector_select_filter"
+ || $this->headerAttaches[$i]['values'][$j] == "#select_filter") {
+ $fillList[$j] = true;;
+ }
+ }
+ }
+
+ $temp = array();
+ foreach($fillList as $k => $v)
+ $temp[] = $k;
+ if (count($temp))
+ $_GET["dhx_colls"] = implode(",",$temp);
+ }
+
+ /*! adds header configuration in output XML
+ */
+ public function attachHeaderToXML($conn, $out) {
+ if (!$conn->is_first_call()) return; //render head only for first call
+
+
+ $str = '<head>';
+ for ($i = 0; $i < count($this->headerNames); $i++) {
+ $str .= '<column';
+ $str .= ' type="'. $this->headerTypes[$i].'"';
+ $str .= ' width="'.$this->headerWidths[$i].'"';
+ $str .= $this->headerIds ? ' id="'.$this->headerIds[$i].'"' : '';
+ $str .= $this->headerAlign[$i] ? ' align="'.$this->headerAlign[$i].'"' : '';
+ $str .= $this->headerVAlign[$i] ? ' valign="'.$this->headerVAlign[$i].'"' : '';
+ $str .= $this->headerSorts[$i] ? ' sort="'.$this->headerSorts[$i].'"' : '';
+ $str .= $this->headerColors[$i] ? ' color="'.$this->headerColors[$i].'"' : '';
+ $str .= $this->headerHidden[$i] ? ' hidden="'.$this->headerHidden[$i].'"' : '';
+ $str .= $this->headerFormat[$i] ? ' format="'.$this->headerFormat[$i].'"' : '';
+ $str .= '>'.$this->headerNames[$i].'</column>';
+ }
+ $str .= '<settings><colwidth>'.$this->headerWidthsUnits.'</colwidth></settings>';
+ if ((count($this->headerAttaches) > 0)||(count($this->footerAttaches) > 0)) {
+ $str .= '<afterInit>';
+ }
+ for ($i = 0; $i < count($this->headerAttaches); $i++) {
+ $str .= '<call command="attachHeader">';
+ $str .= '<param>'.implode(",",$this->headerAttaches[$i]['values']).'</param>';
+ if ($this->headerAttaches[$i]['styles'] != null) {
+ $str .= '<param>'.implode(",",$this->headerAttaches[$i]['styles']).'</param>';
+ }
+ $str .= '</call>';
+ }
+ for ($i = 0; $i < count($this->footerAttaches); $i++) {
+ $str .= '<call command="attachFooter">';
+ $str .= '<param>'.implode(",",$this->footerAttaches[$i]['values']).'</param>';
+ if ($this->footerAttaches[$i]['styles'] != null) {
+ $str .= '<param>'.implode(",",$this->footerAttaches[$i]['styles']).'</param>';
+ }
+ $str .= '</call>';
+ }
+ if ((count($this->headerAttaches) > 0)||(count($this->footerAttaches) > 0)) {
+ $str .= '</afterInit>';
+ }
+ $str .= '</head>';
+
+ $out->add($str);
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/grid_connector.php b/codebase/grid_connector.php
new file mode 100644
index 0000000..2fe043e
--- /dev/null
+++ b/codebase/grid_connector.php
@@ -0,0 +1,273 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("base_connector.php");
+require_once("grid_config.php");
+
+//require_once("grid_dataprocessor.php");
+
+/*! DataItem class for Grid component
+**/
+
+class GridDataItem extends DataItem{
+ protected $row_attrs;//!< hash of row attributes
+ protected $cell_attrs;//!< hash of cell attributes
+ protected $userdata;
+
+ function __construct($data,$name,$index=0){
+ parent::__construct($data,$name,$index);
+
+ $this->row_attrs=array();
+ $this->cell_attrs=array();
+ $this->userdata=array();
+ }
+ /*! set color of row
+
+ @param color
+ color of row
+ */
+ function set_row_color($color){
+ $this->row_attrs["bgColor"]=$color;
+ }
+ /*! set style of row
+
+ @param color
+ color of row
+ */
+ function set_row_style($color){
+ $this->row_attrs["style"]=$color;
+ }
+ /*! assign custom style to the cell
+
+ @param name
+ name of column
+ @param value
+ css style string
+ */
+ function set_cell_style($name,$value){
+ $this->set_cell_attribute($name,"style",$value);
+ }
+ /*! assign custom class to specific cell
+
+ @param name
+ name of column
+ @param value
+ css class name
+ */
+ function set_cell_class($name,$value){
+ $this->set_cell_attribute($name,"class",$value);
+ }
+ /*! set custom cell attribute
+
+ @param name
+ name of column
+ @param attr
+ name of attribute
+ @param value
+ value of attribute
+ */
+ function set_cell_attribute($name,$attr,$value){
+ if (!array_key_exists($name, $this->cell_attrs)) $this->cell_attrs[$name]=array();
+ $this->cell_attrs[$name][$attr]=$value;
+ }
+
+ /*! set userdata section for the item
+
+ @param name
+ name of userdata
+ @param value
+ value of userdata
+ */
+ function set_userdata($name, $value){
+ $this->userdata[$name]=$value;
+ }
+
+ /*! set custom row attribute
+
+ @param attr
+ name of attribute
+ @param value
+ value of attribute
+ */
+ function set_row_attribute($attr,$value){
+ $this->row_attrs[$attr]=$value;
+ }
+
+ /*! return self as XML string, starting part
+ */
+ public function to_xml_start(){
+ if ($this->skip) return "";
+
+ $str="<row id='".$this->get_id()."'";
+ foreach ($this->row_attrs as $k=>$v)
+ $str.=" ".$k."='".$v."'";
+ $str.=">";
+ for ($i=0; $i < sizeof($this->config->text); $i++){
+ $str.="<cell";
+ $name=$this->config->text[$i]["name"];
+ if (isset($this->cell_attrs[$name])){
+ $cattrs=$this->cell_attrs[$name];
+ foreach ($cattrs as $k => $v)
+ $str.=" ".$k."='".$this->xmlentities($v)."'";
+ }
+ $str.="><![CDATA[".$this->data[$name]."]]></cell>";
+ }
+ foreach ($this->userdata as $key => $value)
+ $str.="<userdata name='".$key."'><![CDATA[".$value."]]></userdata>";
+
+ return $str;
+ }
+ /*! return self as XML string, ending part
+ */
+ public function to_xml_end(){
+ if ($this->skip) return "";
+
+ return "</row>";
+ }
+}
+/*! Connector for the dhtmlxgrid
+**/
+class GridConnector extends Connector{
+ protected $extra_output="";//!< extra info which need to be sent to client side
+ private $options=array();//!< hash of OptionsConnector
+
+ /*! constructor
+
+ Here initilization of all Masters occurs, execution timer initialized
+ @param res
+ db connection resource
+ @param type
+ string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
+ @param item_type
+ name of class, which will be used for item rendering, optional, DataItem will be used by default
+ @param data_type
+ name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
+ */
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="GridDataItem";
+ if (!$data_type) $data_type="GridDataProcessor";
+ parent::__construct($res,$type,$item_type,$data_type);
+ }
+
+
+ protected function parse_request(){
+ parent::parse_request();
+
+ if (isset($_GET["dhx_colls"]))
+ $this->fill_collections($_GET["dhx_colls"]);
+
+ if (isset($_GET["posStart"]) && isset($_GET["count"]))
+ $this->request->set_limit($_GET["posStart"],$_GET["count"]);
+ }
+ protected function resolve_parameter($name){
+ if (intval($name).""==$name)
+ return $this->config->text[intval($name)]["db_name"];
+ return $name;
+ }
+
+ /*! replace xml unsafe characters
+
+ @param string
+ string to be escaped
+ @return
+ escaped string
+ */
+ protected function xmlentities($string) {
+ return str_replace( array( '&', '"', "'", '<', '>', '’' ), array( '&amp;' , '&quot;', '&apos;' , '&lt;' , '&gt;', '&apos;' ), $string);
+ }
+
+ /*! assign options collection to the column
+
+ @param name
+ name of the column
+ @param options
+ array or connector object
+ */
+ public function set_options($name,$options){
+ if (is_array($options)){
+ $str="";
+ foreach($options as $k => $v)
+ $str.="<item value='".$this->xmlentities($k)."' label='".$this->xmlentities($v)."' />";
+ $options=$str;
+ }
+ $this->options[$name]=$options;
+ }
+ /*! generates xml description for options collections
+
+ @param list
+ comma separated list of column names, for which options need to be generated
+ */
+ protected function fill_collections($list){
+ $names=explode(",",$list);
+ for ($i=0; $i < sizeof($names); $i++) {
+ $name = $this->resolve_parameter($names[$i]);
+ if (!array_key_exists($name,$this->options)){
+ $this->options[$name] = new DistinctOptionsConnector($this->get_connection(),$this->names["db_class"]);
+ $c = new DataConfig($this->config);
+ $r = new DataRequestConfig($this->request);
+ $c->minimize($name);
+
+ $this->options[$name]->render_connector($c,$r);
+ }
+
+ $this->extra_output.="<coll_options for='{$names[$i]}'>";
+ if (!is_string($this->options[$name]))
+ $this->extra_output.=$this->options[$name]->render();
+ else
+ $this->extra_output.=$this->options[$name];
+ $this->extra_output.="</coll_options>";
+ }
+ }
+
+ /*! renders self as xml, starting part
+ */
+ protected function xml_start(){
+ if ($this->dload){
+ if ($pos=$this->request->get_start())
+ return "<rows pos='".$pos."'>";
+ else
+ return "<rows total_count='".$this->sql->get_size($this->request)."'>";
+ }
+ else
+ return "<rows>";
+ }
+
+
+ /*! renders self as xml, ending part
+ */
+ protected function xml_end(){
+ return $this->extra_output."</rows>";
+ }
+
+ public function set_config($config = false){
+ if (gettype($config) == 'boolean')
+ $config = new GridConfiguration($config);
+
+ $this->event->attach("beforeOutput", Array($config, "attachHeaderToXML"));
+ $this->event->attach("onInit", Array($config, "defineOptions"));
+ }
+}
+
+/*! DataProcessor class for Grid component
+**/
+class GridDataProcessor extends DataProcessor{
+
+ /*! convert incoming data name to valid db name
+ converts c0..cN to valid field names
+ @param data
+ data name from incoming request
+ @return
+ related db_name
+ */
+ function name_data($data){
+ if ($data == "gr_id") return $this->config->id["name"];
+ $parts=explode("c",$data);
+ if ($parts[0]=="" && ((string)intval($parts[1]))==$parts[1])
+ return $this->config->text[intval($parts[1])]["name"];
+ return $data;
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/keygrid_connector.php b/codebase/keygrid_connector.php
new file mode 100644
index 0000000..3942ac2
--- /dev/null
+++ b/codebase/keygrid_connector.php
@@ -0,0 +1,48 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("grid_connector.php");
+class KeyGridConnector extends GridConnector{
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="GridDataItem";
+ if (!$data_type) $data_type="KeyGridDataProcessor";
+ parent::__construct($res,$type,$item_type,$data_type);
+
+ $this->event->attach("beforeProcessing",array($this,"before_check_key"));
+ $this->event->attach("afterProcessing",array($this,"after_check_key"));
+ }
+
+ public function before_check_key($action){
+ if ($action->get_value($this->config->id["name"])=="")
+ $action->error();
+ }
+ public function after_check_key($action){
+ if ($action->get_status()=="inserted" || $action->get_status()=="updated"){
+ $action->success($action->get_value($this->config->id["name"]));
+ $action->set_status("inserted");
+ }
+ }
+};
+
+class KeyGridDataProcessor extends DataProcessor{
+
+ /*! convert incoming data name to valid db name
+ converts c0..cN to valid field names
+ @param data
+ data name from incoming request
+ @return
+ related db_name
+ */
+ function name_data($data){
+ if ($data == "gr_id") return "__dummy__id__"; //ignore ID
+ $parts=explode("c",$data);
+ if ($parts[0]=="" && intval($parts[1])==$parts[1])
+ return $this->config->text[intval($parts[1])]["name"];
+ return $data;
+ }
+}
+
+
+?> \ No newline at end of file
diff --git a/codebase/options_connector.php b/codebase/options_connector.php
new file mode 100644
index 0000000..dc72eb2
--- /dev/null
+++ b/codebase/options_connector.php
@@ -0,0 +1,45 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("base_connector.php");
+
+/*! DataItem class for dhxForm:options
+**/
+class OptionsDataItem extends DataItem{
+ /*! return self as XML string
+ */
+ function to_xml(){
+ if ($this->skip) return "";
+ $str ="";
+
+ $str .= "<item value=\"".$this->xmlentities($this->data[$this->config->data[0]['db_name']])."\" label=\"".$this->xmlentities($this->data[$this->config->data[1]['db_name']])."\" />";
+ return $str;
+ }
+}
+
+/*! Connector class for dhtmlxForm:options
+**/
+class SelectOptionsConnector extends Connector{
+
+ /*! constructor
+
+ Here initilization of all Masters occurs, execution timer initialized
+ @param res
+ db connection resource
+ @param type
+ string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
+ @param item_type
+ name of class, which will be used for item rendering, optional, DataItem will be used by default
+ @param data_type
+ name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
+ */
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="OptionsDataItem";
+ parent::__construct($res,$type,$item_type,$data_type);
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/codebase/scheduler_connector.php b/codebase/scheduler_connector.php
new file mode 100644
index 0000000..c36c83f
--- /dev/null
+++ b/codebase/scheduler_connector.php
@@ -0,0 +1,125 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("base_connector.php");
+
+/*! DataItem class for Scheduler component
+**/
+class SchedulerDataItem extends DataItem{
+ /*! return self as XML string
+ */
+ function to_xml(){
+ if ($this->skip) return "";
+
+ $str="<event id='".$this->get_id()."' >";
+ $str.="<start_date><![CDATA[".$this->data[$this->config->text[0]["name"]]."]]></start_date>";
+ $str.="<end_date><![CDATA[".$this->data[$this->config->text[1]["name"]]."]]></end_date>";
+ $str.="<text><![CDATA[".$this->data[$this->config->text[2]["name"]]."]]></text>";
+ for ($i=3; $i<sizeof($this->config->text); $i++){
+ $extra = $this->config->text[$i]["name"];
+ $str.="<".$extra."><![CDATA[".$this->data[$extra]."]]></".$extra.">";
+ }
+ return $str."</event>";
+ }
+}
+
+
+/*! Connector class for dhtmlxScheduler
+**/
+class SchedulerConnector extends Connector{
+
+ protected $extra_output="";//!< extra info which need to be sent to client side
+ private $options=array();//!< hash of OptionsConnector
+
+
+ /*! assign options collection to the column
+
+ @param name
+ name of the column
+ @param options
+ array or connector object
+ */
+ public function set_options($name,$options){
+ if (is_array($options)){
+ $str="";
+ foreach($options as $k => $v)
+ $str.="<item value='".$this->xmlentities($k)."' label='".$this->xmlentities($v)."' />";
+ $options=$str;
+ }
+ $this->options[$name]=$options;
+ }
+ /*! generates xml description for options collections
+
+ @param list
+ comma separated list of column names, for which options need to be generated
+ */
+ protected function fill_collections(){
+ foreach ($this->options as $k=>$v) {
+ $name = $k;
+ $this->extra_output.="<coll_options for='{$name}'>";
+ if (!is_string($this->options[$name]))
+ $this->extra_output.=$this->options[$name]->render();
+ else
+ $this->extra_output.=$this->options[$name];
+ $this->extra_output.="</coll_options>";
+ }
+ }
+
+ /*! renders self as xml, ending part
+ */
+ protected function xml_end(){
+ $this->fill_collections();
+ return $this->extra_output."</data>";
+ }
+
+
+ /*! constructor
+
+ Here initilization of all Masters occurs, execution timer initialized
+ @param res
+ db connection resource
+ @param type
+ string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
+ @param item_type
+ name of class, which will be used for item rendering, optional, DataItem will be used by default
+ @param data_type
+ name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
+ */
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="SchedulerDataItem";
+ if (!$data_type) $data_type="SchedulerDataProcessor";
+ parent::__construct($res,$type,$item_type,$data_type);
+ }
+
+ //parse GET scoope, all operations with incoming request must be done here
+ function parse_request(){
+ parent::parse_request();
+ if (count($this->config->text)){
+ if (isset($_GET["to"]))
+ $this->request->set_filter($this->config->text[0]["name"],$_GET["to"],"<");
+ if (isset($_GET["from"]))
+ $this->request->set_filter($this->config->text[1]["name"],$_GET["from"],">");
+ }
+ }
+}
+
+/*! DataProcessor class for Scheduler component
+**/
+class SchedulerDataProcessor extends DataProcessor{
+ function name_data($data){
+ if ($data=="start_date")
+ return $this->config->text[0]["db_name"];
+ if ($data=="id")
+ return $this->config->id["db_name"];
+ if ($data=="end_date")
+ return $this->config->text[1]["db_name"];
+ if ($data=="text")
+ return $this->config->text[2]["db_name"];
+
+ return $data;
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/tools.php b/codebase/tools.php
new file mode 100644
index 0000000..cefe051
--- /dev/null
+++ b/codebase/tools.php
@@ -0,0 +1,254 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+
+/*! Class which allows to assign|fire events.
+*/
+class EventMaster{
+ private $events;//!< hash of event handlers
+ private static $eventsStatic=array();
+
+ /*! constructor
+ */
+ function __construct(){
+ $this->events=array();
+ }
+ /*! Method check if event with such name already exists.
+ @param name
+ name of event, case non-sensitive
+ @return
+ true if event with such name registered, false otherwise
+ */
+ public function exist($name){
+ $name=strtolower($name);
+ return (isset($this->events[$name]) && sizeof($this->events[$name]));
+ }
+ /*! Attach custom code to event.
+
+ Only on event handler can be attached in the same time. If new event handler attached - old will be detached.
+
+ @param name
+ name of event, case non-sensitive
+ @param method
+ function which will be attached. You can use array(class, method) if you want to attach the method of the class.
+ */
+ public function attach($name,$method){
+ $name=strtolower($name);
+ if (!array_key_exists($name,$this->events))
+ $this->events[$name]=array();
+ $this->events[$name][]=$method;
+ }
+
+ public static function attach_static($name, $method){
+ $name=strtolower($name);
+ if (!array_key_exists($name,EventMaster::$eventsStatic))
+ EventMaster::$eventsStatic[$name]=array();
+ EventMaster::$eventsStatic[$name][]=$method;
+ }
+
+ public static function trigger_static($name, $method){
+ $arg_list = func_get_args();
+ $name=strtolower(array_shift($arg_list));
+
+ if (isset(EventMaster::$eventsStatic[$name]))
+ foreach(EventMaster::$eventsStatic[$name] as $method){
+ if (is_array($method) && !method_exists($method[0],$method[1]))
+ throw new Exception("Incorrect method assigned to event: ".$method[0].":".$method[1]);
+ if (!is_array($method) && !function_exists($method))
+ throw new Exception("Incorrect function assigned to event: ".$method);
+ call_user_func_array($method, $arg_list);
+ }
+ return true;
+ }
+
+ /*! Detach code from event
+ @param name
+ name of event, case non-sensitive
+ */
+ public function detach($name){
+ $name=strtolower($name);
+ unset($this->events[$name]);
+ }
+ /*! Trigger event.
+ @param name
+ name of event, case non-sensitive
+ @param data
+ value which will be provided as argument for event function,
+ you can provide multiple data arguments, method accepts variable number of parameters
+ @return
+ true if event handler was not assigned , result of event hangler otherwise
+ */
+ public function trigger($name,$data){
+ $arg_list = func_get_args();
+ $name=strtolower(array_shift($arg_list));
+
+ if (isset($this->events[$name]))
+ foreach($this->events[$name] as $method){
+ if (is_array($method) && !method_exists($method[0],$method[1]))
+ throw new Exception("Incorrect method assigned to event: ".$method[0].":".$method[1]);
+ if (!is_array($method) && !function_exists($method))
+ throw new Exception("Incorrect function assigned to event: ".$method);
+ call_user_func_array($method, $arg_list);
+ }
+ return true;
+ }
+}
+
+/*! Class which handles access rules.
+**/
+class AccessMaster{
+ private $rules,$local;
+ /*! constructor
+
+ Set next access right to "allowed" by default : read, insert, update, delete
+ Basically - all common data operations allowed by default
+ */
+ function __construct(){
+ $this->rules=array("read" => true, "insert" => true, "update" => true, "delete" => true);
+ $this->local=true;
+ }
+ /*! change access rule to "allow"
+ @param name
+ name of access right
+ */
+ public function allow($name){
+ $this->rules[$name]=true;
+ }
+ /*! change access rule to "deny"
+
+ @param name
+ name of access right
+ */
+ public function deny($name){
+ $this->rules[$name]=false;
+ }
+
+ /*! change all access rules to "deny"
+ */
+ public function deny_all(){
+ $this->rules=array();
+ }
+
+ /*! check access rule
+
+ @param name
+ name of access right
+ @return
+ true if access rule allowed, false otherwise
+ */
+ public function check($name){
+ if ($this->local){
+ /*!
+ todo
+ add referrer check, to prevent access from remote points
+ */
+ }
+ if (!isset($this->rules[$name]) || !$this->rules[$name]){
+ return false;
+ }
+ return true;
+ }
+}
+
+/*! Controls error and debug logging.
+ Class designed to be used as static object.
+**/
+class LogMaster{
+ private static $_log=false;//!< logging mode flag
+ private static $_output=false;//!< output error infor to client flag
+ private static $session="";//!< all messages generated for current request
+
+ /*! convert array to string representation ( it is a bit more readable than var_dump )
+
+ @param data
+ data object
+ @param pref
+ prefix string, used for formating, optional
+ @return
+ string with array description
+ */
+ private static function log_details($data,$pref=""){
+ if (is_array($data)){
+ $str=array("");
+ foreach($data as $k=>$v)
+ array_push($str,$pref.$k." => ".LogMaster::log_details($v,$pref."\t"));
+ return implode("\n",$str);
+ }
+ return $data;
+ }
+ /*! put record in log
+
+ @param str
+ string with log info, optional
+ @param data
+ data object, which will be added to log, optional
+ */
+ public static function log($str="",$data=""){
+ if (LogMaster::$_log){
+ $message = $str.LogMaster::log_details($data)."\n\n";
+ LogMaster::$session.=$message;
+ error_log($message,3,LogMaster::$_log);
+ }
+ }
+
+ /*! get logs for current request
+ @return
+ string, which contains all log messages generated for current request
+ */
+ public static function get_session_log(){
+ return LogMaster::$session;
+ }
+
+ /*! error handler, put normal php errors in log file
+
+ @param errn
+ error number
+ @param errstr
+ error description
+ @param file
+ error file
+ @param line
+ error line
+ @param context
+ error cntext
+ */
+ public static function error_log($errn,$errstr,$file,$line,$context){
+ LogMaster::log($errstr." at ".$file." line ".$line);
+ }
+
+ /*! exception handler, used as default reaction on any error - show execution log and stop processing
+
+ @param exception
+ instance of Exception
+ */
+ public static function exception_log($exception){
+ LogMaster::log("!!!Uncaught Exception\nCode: " . $exception->getCode() . "\nMessage: " . $exception->getMessage());
+ if (LogMaster::$_output){
+ echo "<pre><xmp>\n";
+ echo LogMaster::get_session_log();
+ echo "\n</xmp></pre>";
+ }
+ die();
+ }
+
+ /*! enable logging
+
+ @param name
+ path to the log file, if boolean false provided as value - logging will be disabled
+ @param output
+ flag of client side output, if enabled - session log will be sent to client side in case of an error.
+ */
+ public static function enable_log($name,$output=false){
+ LogMaster::$_log=$name;
+ LogMaster::$_output=$output;
+ if ($name){
+ set_error_handler(array("LogMaster","error_log"),E_ALL);
+ set_exception_handler(array("LogMaster","exception_log"));
+ LogMaster::log("\n\n====================================\nLog started, ".date("d/m/Y h:m:s")."\n====================================");
+ }
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/tree_connector.php b/codebase/tree_connector.php
new file mode 100644
index 0000000..dff0867
--- /dev/null
+++ b/codebase/tree_connector.php
@@ -0,0 +1,278 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("base_connector.php");
+
+/*! DataItem class for Tree component
+**/
+
+class TreeDataItem extends DataItem{
+ private $im0;//!< image of closed folder
+ private $im1;//!< image of opened folder
+ private $im2;//!< image of leaf item
+ private $check;//!< checked state
+ private $kids=-1;//!< checked state
+ private $attrs;//!< collection of custom attributes
+
+ function __construct($data,$config,$index){
+ parent::__construct($data,$config,$index);
+
+ $this->im0=false;
+ $this->im1=false;
+ $this->im2=false;
+ $this->check=false;
+ $this->attrs = array();
+ $this->userdata = array();
+ }
+ /*! get id of parent record
+
+ @return
+ id of parent record
+ */
+ function get_parent_id(){
+ return $this->data[$this->config->relation_id["name"]];
+ }
+ /*! get state of items checkbox
+
+ @return
+ state of item's checkbox as int value, false if state was not defined
+ */
+ function get_check_state(){
+ return $this->check;
+ }
+ /*! set state of item's checkbox
+
+ @param value
+ int value, 1 - checked, 0 - unchecked, -1 - third state
+ */
+ function set_check_state($value){
+ $this->check=$value;
+ }
+
+ /*! return count of child items
+ -1 if there is no info about childs
+ @return
+ count of child items
+ */
+ function has_kids(){
+ return $this->kids;
+ }
+ /*! sets count of child items
+ @param value
+ count of child items
+ */
+ function set_kids($value){
+ $this->kids=$value;
+ }
+
+ /*! set custom attribute
+
+ @param name
+ name of the attribute
+ @param value
+ new value of the attribute
+ */
+ function set_attribute($name, $value){
+ switch($name){
+ case "id":
+ $this->set_id($value);
+ break;
+ case "text":
+ $this->data[$this->config->text[0]["name"]]=$value;
+ break;
+ case "checked":
+ $this->set_check_state($value);
+ break;
+ case "im0":
+ $this->im0=$value;
+ break;
+ case "im1":
+ $this->im1=$value;
+ break;
+ case "im2":
+ $this->im2=$value;
+ break;
+ case "child":
+ $this->set_kids($value);
+ break;
+ default:
+ $this->attrs[$name]=$value;
+ }
+ }
+
+ /*! set userdata section for the item
+
+ @param name
+ name of userdata
+ @param value
+ value of userdata
+ */
+ function set_userdata($name, $value){
+ $this->userdata[$name]=$value;
+ }
+
+ /*! assign image for tree's item
+
+ @param img_folder_closed
+ image for item, which represents folder in closed state
+ @param img_folder_open
+ image for item, which represents folder in opened state, optional
+ @param img_leaf
+ image for item, which represents leaf item, optional
+ */
+ function set_image($img_folder_closed,$img_folder_open=false,$img_leaf=false){
+ $this->im0=$img_folder_closed;
+ $this->im1=$img_folder_open?$img_folder_open:$img_folder_closed;
+ $this->im2=$img_leaf?$img_leaf:$img_folder_closed;
+ }
+ /*! return self as XML string, starting part
+ */
+ function to_xml_start(){
+ if ($this->skip) return "";
+
+ $str1="<item id='".$this->get_id()."' text='".$this->xmlentities($this->data[$this->config->text[0]["name"]])."' ";
+ if ($this->has_kids()==true) $str1.="child='".$this->has_kids()."' ";
+ if ($this->im0) $str1.="im0='".$this->im0."' ";
+ if ($this->im1) $str1.="im1='".$this->im1."' ";
+ if ($this->im2) $str1.="im2='".$this->im2."' ";
+ if ($this->check) $str1.="checked='".$this->check."' ";
+ foreach ($this->attrs as $key => $value)
+ $str1.=$key."='".$this->xmlentities($value)."' ";
+ $str1.=">";
+ foreach ($this->userdata as $key => $value)
+ $str1.="<userdata name='".$key."'><![CDATA[".$value."]]></userdata>";
+
+ return $str1;
+ }
+ /*! return self as XML string, ending part
+ */
+ function to_xml_end(){
+ if ($this->skip) return "";
+ return "</item>";
+ }
+
+}
+
+require_once("filesystem_item.php");
+
+/*! Connector for the dhtmlxtree
+**/
+class TreeConnector extends Connector{
+ private $id_swap = array();
+
+ /*! constructor
+
+ Here initilization of all Masters occurs, execution timer initialized
+ @param res
+ db connection resource
+ @param type
+ string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
+ @param item_type
+ name of class, which will be used for item rendering, optional, DataItem will be used by default
+ @param data_type
+ name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
+ */
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="TreeDataItem";
+ if (!$data_type) $data_type="TreeDataProcessor";
+ parent::__construct($res,$type,$item_type,$data_type);
+
+ $this->event->attach("afterInsert",array($this,"parent_id_correction_a"));
+ $this->event->attach("beforeProcessing",array($this,"parent_id_correction_b"));
+ }
+
+ /*! store info about ID changes during insert operation
+ @param dataAction
+ data action object during insert operation
+ */
+ public function parent_id_correction_a($dataAction){
+ $this->id_swap[$dataAction->get_id()]=$dataAction->get_new_id();
+ }
+ /*! update ID if it was affected by previous operation
+ @param dataAction
+ data action object, before any processing operation
+ */
+ public function parent_id_correction_b($dataAction){
+ $relation = $this->config->relation_id["db_name"];
+ $value = $dataAction->get_value($relation);
+
+ if (array_key_exists($value,$this->id_swap))
+ $dataAction->set_value($relation,$this->id_swap[$value]);
+ }
+
+
+ public function parse_request(){
+ parent::parse_request();
+
+ if (isset($_GET["id"]))
+ $this->request->set_relation($_GET["id"]);
+ else
+ $this->request->set_relation("0");
+
+ $this->request->set_limit(0,0); //netralize default reaction on dyn. loading mode
+ }
+
+
+
+ protected function render_set($res){
+ $output="";
+ $index=0;
+ while ($data=$this->sql->get_next($res)){
+ $data = new $this->names["item_class"]($data,$this->config,$index);
+ $this->event->trigger("beforeRender",$data);
+ //there is no info about child elements,
+ //if we are using dyn. loading - assume that it has,
+ //in normal mode juse exec sub-render routine
+ if ($data->has_kids()===-1 && $this->dload)
+ $data->set_kids(true);
+ $output.=$data->to_xml_start();
+ if ($data->has_kids()===-1 || ( $data->has_kids()==true && !$this->dload)){
+ $sub_request = new DataRequestConfig($this->request);
+ $sub_request->set_relation($data->get_id());
+ $output.=$this->render_set($this->sql->select($sub_request));
+ }
+ $output.=$data->to_xml_end();
+ $index++;
+ }
+ return $output;
+ }
+ /*! renders self as xml, starting part
+ */
+ public function xml_start(){
+ return "<tree id='".$this->request->get_relation()."'>";
+ }
+
+ /*! renders self as xml, ending part
+ */
+ public function xml_end(){
+ return "</tree>";
+ }
+}
+
+
+class TreeDataProcessor extends DataProcessor{
+
+ function __construct($connector,$config,$request){
+ parent::__construct($connector,$config,$request);
+ $request->set_relation(false);
+ }
+
+ /*! convert incoming data name to valid db name
+ converts c0..cN to valid field names
+ @param data
+ data name from incoming request
+ @return
+ related db_name
+ */
+ function name_data($data){
+ if ($data=="tr_pid")
+ return $this->config->relation_id["db_name"];
+ if ($data=="tr_text")
+ return $this->config->text[0]["db_name"];
+ return $data;
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/treegrid_connector.php b/codebase/treegrid_connector.php
new file mode 100644
index 0000000..308fcf4
--- /dev/null
+++ b/codebase/treegrid_connector.php
@@ -0,0 +1,165 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("grid_connector.php");
+
+/*! DataItem class for TreeGrid component
+**/
+class TreeGridDataItem extends GridDataItem{
+ private $kids=-1;//!< checked state
+
+ function __construct($data,$config,$index){
+ parent::__construct($data,$config,$index);
+ $this->im0=false;
+ }
+ /*! return id of parent record
+
+ @return
+ id of parent record
+ */
+ function get_parent_id(){
+ return $this->data[$this->config->relation_id["name"]];
+ }
+ /*! assign image to treegrid's item
+ longer description
+ @param img
+ relative path to the image
+ */
+ function set_image($img){
+ $this->set_cell_attribute($this->config->text[0]["name"],"image",$img);
+ }
+
+ /*! return count of child items
+ -1 if there is no info about childs
+ @return
+ count of child items
+ */
+ function has_kids(){
+ return $this->kids;
+ }
+ /*! sets count of child items
+ @param value
+ count of child items
+ */
+ function set_kids($value){
+ $this->kids=$value;
+ if ($value)
+ $this->set_row_attribute("xmlkids",$value);
+ }
+}
+/*! Connector for dhtmlxTreeGrid
+**/
+class TreeGridConnector extends GridConnector{
+ private $id_swap = array();
+
+ /*! constructor
+
+ Here initilization of all Masters occurs, execution timer initialized
+ @param res
+ db connection resource
+ @param type
+ string , which hold type of database ( MySQL or Postgre ), optional, instead of short DB name, full name of DataWrapper-based class can be provided
+ @param item_type
+ name of class, which will be used for item rendering, optional, DataItem will be used by default
+ @param data_type
+ name of class which will be used for dataprocessor calls handling, optional, DataProcessor class will be used by default.
+ */
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ if (!$item_type) $item_type="TreeGridDataItem";
+ if (!$data_type) $data_type="TreeGridDataProcessor";
+ parent::__construct($res,$type,$item_type,$data_type);
+
+ $this->event->attach("afterInsert",array($this,"parent_id_correction_a"));
+ $this->event->attach("beforeProcessing",array($this,"parent_id_correction_b"));
+ }
+
+ /*! store info about ID changes during insert operation
+ @param dataAction
+ data action object during insert operation
+ */
+ public function parent_id_correction_a($dataAction){
+ $this->id_swap[$dataAction->get_id()]=$dataAction->get_new_id();
+ }
+ /*! update ID if it was affected by previous operation
+ @param dataAction
+ data action object, before any processing operation
+ */
+ public function parent_id_correction_b($dataAction){
+ $relation = $this->config->relation_id["db_name"];
+ $value = $dataAction->get_value($relation);
+
+ if (array_key_exists($value,$this->id_swap))
+ $dataAction->set_value($relation,$this->id_swap[$value]);
+ }
+
+ /*! process treegrid specific options in incoming request
+ */
+ public function parse_request(){
+ parent::parse_request();
+
+ if (isset($_GET["id"]))
+ $this->request->set_relation($_GET["id"]);
+ else
+ $this->request->set_relation("0");
+
+ $this->request->set_limit(0,0); //netralize default reaction on dyn. loading mode
+ }
+
+ /*! process treegrid specific options in incoming request
+ */
+ protected function render_set($res){
+ $output="";
+ $index=0;
+ while ($data=$this->sql->get_next($res)){
+ $data = new $this->names["item_class"]($data,$this->config,$index);
+ $this->event->trigger("beforeRender",$data);
+ //there is no info about child elements,
+ //if we are using dyn. loading - assume that it has,
+ //in normal mode juse exec sub-render routine
+ if ($data->has_kids()===-1 && $this->dload)
+ $data->set_kids(true);
+ $output.=$data->to_xml_start();
+ if ($data->has_kids()===-1 || ( $data->has_kids()==true && !$this->dload)){
+ $sub_request = new DataRequestConfig($this->request);
+ $sub_request->set_relation($data->get_id());
+ $output.=$this->render_set($this->sql->select($sub_request));
+ }
+ $output.=$data->to_xml_end();
+ $index++;
+ }
+ return $output;
+ }
+
+ /*! renders self as xml, starting part
+ */
+ protected function xml_start(){
+ return "<rows parent='".$this->request->get_relation()."'>";
+ }
+}
+
+/*! DataProcessor class for Grid component
+**/
+class TreeGridDataProcessor extends GridDataProcessor{
+
+ function __construct($connector,$config,$request){
+ parent::__construct($connector,$config,$request);
+ $request->set_relation(false);
+ }
+
+ /*! convert incoming data name to valid db name
+ converts c0..cN to valid field names
+ @param data
+ data name from incoming request
+ @return
+ related db_name
+ */
+ function name_data($data){
+
+ if ($data=="gr_pid")
+ return $this->config->relation_id["name"];
+ else return parent::name_data($data);
+ }
+}
+?> \ No newline at end of file
diff --git a/codebase/treegridgroup_connector.php b/codebase/treegridgroup_connector.php
new file mode 100644
index 0000000..b8c725e
--- /dev/null
+++ b/codebase/treegridgroup_connector.php
@@ -0,0 +1,122 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("treegrid_connector.php");
+
+class TreeGridGroupConnector extends TreeGridConnector{
+
+ private $id_postfix = '__{group_param}';
+
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ parent::__construct($res,$type,$item_type,$data_type);
+ $this->event->attach("beforeProcessing", Array($this, 'check_id'));
+ }
+
+
+ public function render(){
+ if (isset($_GET['id'])) {
+ $_GET['id'] = str_replace($this->id_postfix, "", $_GET['id']);
+ }
+ $this->parse_request();
+ if (!isset($_GET['id'])) {
+ $this->request->set_relation(false);
+ }
+
+ if (isset($_GET["editing"]))
+ $this->editing=true;
+ else if (isset($_POST["ids"])){
+ $this->editing=true;
+ } else {
+ $this->editing = false;
+ }
+
+ if ($this->editing){
+ $dp = new $this->names["data_class"]($this,$this->config,$this->request);
+ $dp->process($this->config,$this->request);
+ }
+ else {
+ $wrap = new SortInterface($this->request);
+ $this->event->trigger("beforeSort",$wrap);
+ $wrap->store();
+
+ $wrap = new FilterInterface($this->request);
+ $this->event->trigger("beforeFilter",$wrap);
+ $wrap->store();
+
+ if (isset($_GET['id'])) {
+ $this->output_as_xml( $this->sql->select($this->request) );
+ } else {
+ $relation_id = $this->config->relation_id['name'];
+ $this->output_as_xml( $this->sql->get_variants($this->config->relation_id['name'], $this->request));
+ }
+ }
+ $this->end_run();
+ }
+
+
+ protected function render_set($res){
+ $output="";
+ $index=0;
+ $records = Array();
+ while ($data=$this->sql->get_next($res)){
+ if (isset($data[$this->config->id['name']])) {
+ $has_kids = false;
+ } else {
+ $data[$this->config->id['name']] = $data['value'].$this->id_postfix;
+ $data[$this->config->text[0]['name']] = $data['value'];
+ $has_kids = true;
+ }
+ $data = new $this->names["item_class"]($data,$this->config,$index);
+ $this->event->trigger("beforeRender",$data);
+ if ($has_kids === false) {
+ $data->set_kids(false);
+ }
+
+ if ($data->has_kids()===-1 && $this->dload)
+ $data->set_kids(true);
+ $output.=$data->to_xml_start();
+ if (($data->has_kids()===-1 || ( $data->has_kids()==true && !$this->dload))&&($has_kids == true)){
+ $sub_request = new DataRequestConfig($this->request);
+ $sub_request->set_relation(str_replace($this->id_postfix, "", $data->get_id()));
+ $output.=$this->render_set($this->sql->select($sub_request));
+ }
+ $output.=$data->to_xml_end();
+ $index++;
+ }
+ return $output;
+ }
+
+
+ /*! renders self as xml, starting part
+ */
+ protected function xml_start(){
+ if (isset($_GET['id'])) {
+ return "<rows parent='".$_GET['id'].$this->id_postfix."'>";
+ } else {
+ return "<rows parent='0'>";
+ }
+ }
+
+
+ public function check_id($action) {
+ if (isset($_GET['editing'])) {
+ $id = $action->get_id();
+ $pid = $action->get_value($this->config->relation_id['name']);
+ $pid = str_replace($this->id_postfix, "", $pid);
+ $action->set_value($this->config->relation_id['name'], $pid);
+ if (strpos($id, $this->id_postfix) == false) {
+ return $action;
+ } else {
+ $action->error();
+ $action->set_response_text("This record can't be updated!");
+ return $action;
+ }
+ } else {
+ return $action;
+ }
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/treegridmultitable_connector.php b/codebase/treegridmultitable_connector.php
new file mode 100644
index 0000000..8d16bda
--- /dev/null
+++ b/codebase/treegridmultitable_connector.php
@@ -0,0 +1,166 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("treegrid_connector.php");
+
+class TreeGridMultitableConnector extends TreeGridConnector{
+
+ private $level = 0;
+ private $max_level = null;
+
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ $data_type="TreeGridMultitableDataProcessor";
+ parent::__construct($res,$type,$item_type,$data_type);
+ $this->event->attach("beforeProcessing", Array($this, 'id_translate_before'));
+ $this->event->attach("afterProcessing", Array($this, 'id_translate_after'));
+ }
+
+ public function render(){
+ $this->parse_request();
+ $this->dload = true;
+ if ((isset($_GET["editing"]))||(isset($_POST["ids"]))) {
+ $this->editing=true;
+ } else {
+ $this->editing = false;
+ }
+
+ if ($this->editing){
+ $dp = new $this->names["data_class"]($this,$this->config,$this->request);
+ $dp->process($this->config,$this->request);
+ } else {
+ $wrap = new SortInterface($this->request);
+ $this->event->trigger("beforeSort",$wrap);
+ $wrap->store();
+
+ $wrap = new FilterInterface($this->request);
+ $this->event->trigger("beforeFilter",$wrap);
+ $wrap->store();
+
+ if (isset($_GET['id'])) {
+ $this->output_as_xml( $this->sql->select($this->request) );
+ } else {
+ $this->request->set_relation(false);
+ $this->output_as_xml( $this->sql->select($this->request) );
+ }
+ }
+ $this->end_run();
+ }
+
+
+ protected function render_set($res){
+ $output="";
+ $index=0;
+ $records = Array();
+ while ($data=$this->sql->get_next($res)){
+ $data[$this->config->id['name']] = $this->level.'%23'.$data[$this->config->id['name']];
+ $data = new $this->names["item_class"]($data,$this->config,$index);
+ $this->event->trigger("beforeRender",$data);
+ if (($this->max_level !== null)&&($this->level == $this->max_level)) {
+ $data->set_kids(false);
+ } else {
+ if ($data->has_kids()===-1)
+ $data->set_kids(true);
+ }
+ $output.=$data->to_xml_start();
+ $output.=$data->to_xml_end();
+ $index++;
+ }
+ return $output;
+ }
+
+
+ public function xml_start(){
+ if (isset($_GET['id'])) {
+ return "<rows parent='".($this->level - 1).'%23'.$_GET['id']."'>";
+ } else {
+ return "<rows parent=''>";
+ }
+ }
+
+
+ public function get_level() {
+ if (!isset($_GET['id'])) {
+ if (isset($_POST['ids'])) {
+ $ids = explode(",",$_POST["ids"]);
+ $id = $this->parseId($ids[0]);
+ $this->level--;
+ }
+ $this->request->set_relation(false);
+ } else {
+ $id = $this->parseId($_GET['id']);
+ $_GET['id'] = $id;
+ }
+ return $this->level;
+ }
+
+
+ public function parseId($id, $set_level = true) {
+ $result = Array();
+ preg_match('/^(.+)((#)|(%23))/', $id, $result);
+ if ($set_level === true) {
+ $this->level = $result[1] + 1;
+ }
+ preg_match('/^(.+)((#)|(%23))(.*)$/', $id, $result);
+ $id = $result[5];
+ return $id;
+ }
+
+
+ /*! set maximum level of tree
+ @param max_level
+ maximum level
+ */
+ public function setMaxLevel($max_level) {
+ $this->max_level = $max_level;
+ }
+
+
+ /*! remove level prefix from id, parent id and set new id before processing
+ @param action
+ DataAction object
+ */
+ public function id_translate_before($action) {
+ $this->request->set_relation(false);
+ $id = $action->get_id();
+ $id = $this->parseId($id, false);
+ $action->set_id($id);
+ $action->set_value('gr_id', $id);
+ $action->set_new_id($id);
+ $pid = $action->get_value($this->config->relation_id['db_name']);
+ $pid = $this->parseId($pid, false);
+ $action->set_value($this->config->relation_id['db_name'], $pid);
+ }
+
+
+ /*! add level prefix in id and new id after processing
+ @param action
+ DataAction object
+ */
+ public function id_translate_after($action) {
+ $id = $action->get_id();
+ $action->set_id(($this->level).'%23'.$id);
+ $id = $action->get_new_id();
+ $action->success(($this->level).'%23'.$id);
+ }
+
+}
+
+
+class TreeGridMultitableDataProcessor extends DataProcessor {
+
+ function name_data($data){
+ if ($data=="gr_pid")
+ return $this->config->relation_id["name"];
+ preg_match('/^c(\d+)$/', $data, $data_num);
+ $data_num = $data_num[1];
+ if (isset($this->config->data[$data_num]["db_name"])) {
+ return $this->config->data[$data_num]["db_name"];
+ }
+ return $data;
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/codebase/treegroup_connector.php b/codebase/treegroup_connector.php
new file mode 100644
index 0000000..16db63c
--- /dev/null
+++ b/codebase/treegroup_connector.php
@@ -0,0 +1,118 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("tree_connector.php");
+
+class TreeGroupConnector extends TreeConnector{
+
+ private $id_postfix = '__{group_param}';
+
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ parent::__construct($res,$type,$item_type,$data_type);
+ $this->event->attach("beforeProcessing", Array($this, 'check_id'));
+ }
+
+
+ public function render(){
+ if (isset($_GET['id'])) {
+ $_GET['id'] = str_replace($this->id_postfix, "", $_GET['id']);
+ }
+ $this->parse_request();
+ if (!isset($_GET['id'])) {
+ $this->request->set_relation(false);
+ }
+
+ if (isset($_GET["editing"]))
+ $this->editing=true;
+ else if (isset($_POST["ids"])){
+ $this->editing=true;
+ } else {
+ $this->editing = false;
+ }
+
+ if ($this->editing){
+ $dp = new $this->names["data_class"]($this,$this->config,$this->request);
+ $dp->process($this->config,$this->request);
+ }
+ else {
+ $wrap = new SortInterface($this->request);
+ $this->event->trigger("beforeSort",$wrap);
+ $wrap->store();
+
+ $wrap = new FilterInterface($this->request);
+ $this->event->trigger("beforeFilter",$wrap);
+ $wrap->store();
+
+ if (isset($_GET['id'])) {
+ $this->output_as_xml( $this->sql->select($this->request) );
+ } else {
+ $relation_id = $this->config->relation_id['name'];
+ $this->output_as_xml( $this->sql->get_variants($this->config->relation_id['name'], $this->request));
+ }
+ }
+ $this->end_run();
+ }
+
+ protected function render_set($res){
+ $output="";
+ $index=0;
+ $records = Array();
+ while ($data=$this->sql->get_next($res)){
+ if (isset($data[$this->config->id['name']])) {
+ $has_kids = false;
+ } else {
+ $data[$this->config->id['name']] = $data['value'].$this->id_postfix;
+ $data[$this->config->text[0]['name']] = $data['value'];
+ $has_kids = true;
+ }
+ $data = new $this->names["item_class"]($data,$this->config,$index);
+ $this->event->trigger("beforeRender",$data);
+ if ($has_kids === false) {
+ $data->set_kids(false);
+ }
+
+ if ($data->has_kids()===-1 && $this->dload)
+ $data->set_kids(true);
+ $output.=$data->to_xml_start();
+ if (($data->has_kids()===-1 || ( $data->has_kids()==true && !$this->dload))&&($has_kids == true)){
+ $sub_request = new DataRequestConfig($this->request);
+ $sub_request->set_relation(str_replace($this->id_postfix, "", $data->get_id()));
+ $output.=$this->render_set($this->sql->select($sub_request));
+ }
+ $output.=$data->to_xml_end();
+ $index++;
+ }
+ return $output;
+ }
+
+ public function xml_start(){
+ if (isset($_GET['id'])) {
+ return "<tree id='".$_GET['id'].$this->id_postfix."'>";
+ } else {
+ return "<tree id='0'>";
+ }
+ }
+
+
+ public function check_id($action) {
+ if (isset($_GET['editing'])) {
+ $id = $action->get_id();
+ $pid = $action->get_value($this->config->relation_id['name']);
+ $pid = str_replace($this->id_postfix, "", $pid);
+ $action->set_value($this->config->relation_id['name'], $pid);
+ if (strpos($id, $this->id_postfix) == false) {
+ return $action;
+ } else {
+ $action->error();
+ $action->set_response_text("This record can't be updated!");
+ return $action;
+ }
+ } else {
+ return $action;
+ }
+ }
+}
+
+?> \ No newline at end of file
diff --git a/codebase/treemultitable_connector.php b/codebase/treemultitable_connector.php
new file mode 100644
index 0000000..f081689
--- /dev/null
+++ b/codebase/treemultitable_connector.php
@@ -0,0 +1,152 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+require_once("tree_connector.php");
+
+class TreeMultitableConnector extends TreeConnector{
+
+ private $level = 0;
+ private $max_level = null;
+
+ public function __construct($res,$type=false,$item_type=false,$data_type=false){
+ $data_type="TreeDataProcessor";
+ parent::__construct($res,$type,$item_type,$data_type);
+ $this->event->attach("beforeProcessing", Array($this, 'id_translate_before'));
+ $this->event->attach("afterProcessing", Array($this, 'id_translate_after'));
+ }
+
+
+ public function render(){
+ $this->parse_request();
+ $this->dload = true;
+ if ((isset($_GET["editing"]))||(isset($_POST["ids"]))) {
+ $this->editing=true;
+ } else {
+ $this->editing = false;
+ }
+
+ if ($this->editing){
+ $dp = new $this->names["data_class"]($this,$this->config,$this->request);
+ $dp->process($this->config,$this->request);
+ } else {
+ $wrap = new SortInterface($this->request);
+ $this->event->trigger("beforeSort",$wrap);
+ $wrap->store();
+
+ $wrap = new FilterInterface($this->request);
+ $this->event->trigger("beforeFilter",$wrap);
+ $wrap->store();
+
+ if (isset($_GET['id'])) {
+ $this->output_as_xml( $this->sql->select($this->request) );
+ } else {
+ $this->request->set_relation(false);
+ $this->output_as_xml( $this->sql->select($this->request) );
+ }
+ }
+ $this->end_run();
+ }
+
+ protected function render_set($res){
+ $output="";
+ $index=0;
+ $records = Array();
+ while ($data=$this->sql->get_next($res)){
+ $data[$this->config->id['name']] = $this->level.'#'.$data[$this->config->id['name']];
+ $data = new $this->names["item_class"]($data,$this->config,$index);
+ $this->event->trigger("beforeRender",$data);
+ if (($this->max_level !== null)&&($this->level == $this->max_level)) {
+ $data->set_kids(false);
+ } else {
+ if ($data->has_kids()===-1)
+ $data->set_kids(true);
+ }
+ $output.=$data->to_xml_start();
+ $output.=$data->to_xml_end();
+ $index++;
+ }
+ return $output;
+ }
+
+ public function xml_start(){
+ if (isset($_GET['id'])) {
+ return "<tree id='".($this->level - 1).'#'.$_GET['id']."'>";
+ } else {
+ return "<tree id='0'>";
+ }
+ }
+
+
+ public function get_level() {
+ if (!isset($_GET['id'])) {
+ if (isset($_POST['ids'])) {
+ $ids = explode(",",$_POST["ids"]);
+ $id = $this->parseId($ids[0]);
+ $this->level--;
+ }
+ $this->request->set_relation(false);
+ } else {
+ $id = $this->parseId($_GET['id']);
+ $_GET['id'] = $id;
+ }
+ return $this->level;
+ }
+
+
+ public function parseId($id, $set_level = true) {
+ $result = Array();
+ preg_match('/^(.+)#/', $id, $result);
+ if ($set_level === true) {
+ $this->level = $result[1] + 1;
+ }
+ preg_match('/^(.+)#(.*)$/', $id, $result);
+ if (isset($result[2])) {
+ $id = $result[2];
+ } else {
+ $id = '';
+ }
+ return $id;
+ }
+
+
+ /*! set maximum level of tree
+ @param max_level
+ maximum level
+ */
+ public function setMaxLevel($max_level) {
+ $this->max_level = $max_level;
+ }
+
+
+ /*! remove level prefix from id, parent id and set new id before processing
+ @param action
+ DataAction object
+ */
+ public function id_translate_before($action) {
+ $id = $action->get_id();
+ $id = $this->parseId($id, false);
+ $action->set_id($id);
+ $action->set_value('tr_id', $id);
+ $action->set_new_id($id);
+ $pid = $action->get_value($this->config->relation_id['db_name']);
+ $pid = $this->parseId($pid, false);
+ $action->set_value($this->config->relation_id['db_name'], $pid);
+ }
+
+
+ /*! add level prefix in id and new id after processing
+ @param action
+ DataAction object
+ */
+ public function id_translate_after($action) {
+ $id = $action->get_id();
+ $action->set_id(($this->level).'#'.$id);
+ $id = $action->get_new_id();
+ $action->success(($this->level).'#'.$id);
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/codebase/update.php b/codebase/update.php
new file mode 100644
index 0000000..4931ad7
--- /dev/null
+++ b/codebase/update.php
@@ -0,0 +1,266 @@
+<?php
+/*
+ @author dhtmlx.com
+ @license GPL, see license.txt
+*/
+
+/*! DataItemUpdate class for realization Optimistic concurrency control
+ Wrapper for DataItem object
+ It's used during outputing updates instead of DataItem object
+ Create wrapper for every data item with update information.
+*/
+class DataItemUpdate extends DataItem {
+
+
+ /*! constructor
+ @param data
+ hash of data
+ @param config
+ DataConfig object
+ @param index
+ index of element
+ */
+ public function __construct($data,$config,$index,$type){
+ $this->config=$config;
+ $this->data=$data;
+ $this->index=$index;
+ $this->skip=false;
+ $this->child = new $type($data, $config, $index);
+ }
+
+ /*! returns parent_id (for Tree and TreeGrid components)
+ */
+ public function get_parent_id(){
+ if (method_exists($this->child, 'get_parent_id')) {
+ return $this->child->get_parent_id();
+ } else {
+ return '';
+ }
+ }
+
+
+ /*! generate XML on the data hash base
+ */
+ public function to_xml(){
+ $str= "<update ";
+ $str .= 'status="'.$this->data['type'].'" ';
+ $str .= 'id="'.$this->data['dataId'].'" ';
+ $str .= 'parent="'.$this->get_parent_id().'"';
+ $str .= '>';
+ $str .= $this->child->to_xml();
+ $str .= '</update>';
+ return $str;
+ }
+
+ /*! return starting tag for XML string
+ */
+ public function to_xml_start(){
+ $str="<update ";
+ $str .= 'status="'.$this->data['type'].'" ';
+ $str .= 'id="'.$this->data['dataId'].'" ';
+ $str .= 'parent="'.$this->get_parent_id().'"';
+ $str .= '>';
+ $str .= $this->child->to_xml_start();
+ return $str;
+ }
+
+ /*! return ending tag for XML string
+ */
+ public function to_xml_end(){
+ $str = $this->child->to_xml_end();
+ $str .= '</update>';
+ return $str;
+ }
+
+ /*! returns false for outputing only current item without child items
+ */
+ public function has_kids(){
+ return false;
+ }
+
+ /*! sets count of child items
+ @param value
+ count of child items
+ */
+ public function set_kids($value){
+ if (method_exists($this->child, 'set_kids')) {
+ $this->child->set_kids($value);
+ }
+ }
+
+ /*! sets attribute for item
+ */
+ public function set_attribute($name, $value){
+ if (method_exists($this->child, 'set_attribute')) {
+ LogMaster::log("setting attribute: \nname = {$name}\nvalue = {$value}");
+ $this->child->set_attribute($name, $value);
+ } else {
+ LogMaster::log("set_attribute method doesn't exists");
+ }
+ }
+}
+
+
+class DataUpdate{
+
+ protected $table; //!< table , where actions are stored
+ protected $url; //!< url for notification service, optional
+ protected $sql; //!< DB wrapper object
+ protected $config; //!< DBConfig object
+ protected $request; //!< DBRequestConfig object
+ protected $event;
+ protected $item_class;
+ protected $demu;
+
+ //protected $config;//!< DataConfig instance
+ //protected $request;//!< DataRequestConfig instance
+
+ /*! constructor
+
+ @param connector
+ Connector object
+ @param config
+ DataConfig object
+ @param request
+ DataRequestConfig object
+ */
+ function __construct($sql, $config, $request, $table, $url){
+ $this->config= $config;
+ $this->request= $request;
+ $this->sql = $sql;
+ $this->table=$table;
+ $this->url=$url;
+ $this->demu = false;
+ }
+
+ public function set_demultiplexor($path){
+ $this->demu = $path;
+ }
+
+ public function set_event($master, $name){
+ $this->event = $master;
+ $this->item_class = $name;
+ }
+
+ private function select_update($actions_table, $join_table, $id_field_name, $version, $user) {
+ $sql = "SELECT * FROM {$actions_table}";
+ $sql .= " LEFT OUTER JOIN {$join_table} ON ";
+ $sql .= "{$actions_table}.DATAID = {$join_table}.{$id_field_name} ";
+ $sql .= "WHERE {$actions_table}.ID > '{$version}' AND {$actions_table}.USER <> '{$user}'";
+ return $sql;
+ }
+
+ private function get_update_max_version() {
+ $sql = "SELECT MAX(id) as VERSION FROM {$this->table}";
+ $res = $this->sql->query($sql);
+ $data = $this->sql->get_next($res);
+
+ if ($data == false || $data['VERSION'] == false)
+ return 1;
+ else
+ return $data['VERSION'];
+ }
+
+ private function log_update_action($actions_table, $dataId, $status, $user) {
+ $sql = "INSERT INTO {$actions_table} (DATAID, TYPE, USER) VALUES ('{$dataId}', '{$status}', '{$user}')";
+ $this->sql->query($sql);
+ if ($this->demu)
+ file_get_contents($this->demu);
+ }
+
+
+
+
+ /*! records operations in actions_table
+ @param action
+ DataAction object
+ */
+ public function log_operations($action) {
+ $type = $this->sql->escape($action->get_status());
+ $dataId = $this->sql->escape($action->get_new_id());
+ $user = $this->sql->escape($this->request->get_user());
+ if ($type!="error" && $type!="invalid" && $type !="collision") {
+ $this->log_update_action($this->table, $dataId, $type, $user);
+ }
+ }
+
+
+ /*! return action version in XMl format
+ */
+ public function get_version() {
+ $version = $this->get_update_max_version();
+ return "<userdata name='version'>".$version."</userdata>";
+ }
+
+
+ /*! adds action version in output XML as userdata
+ */
+ public function version_output() {
+ echo $this->get_version();
+ }
+
+
+ /*! create update actions in XML-format and sends it to output
+ */
+ public function get_updates() {
+ $sub_request = new DataRequestConfig($this->request);
+ $version = $this->request->get_version();
+ $user = $this->request->get_user();
+
+ $sub_request->parse_sql($this->select_update($this->table, $this->request->get_source(), $this->config->id['db_name'], $version, $user));
+ $sub_request->set_relation(false);
+
+ $output = $this->render_set($this->sql->select($sub_request), $this->item_class);
+
+ ob_clean();
+ header("Content-type:text/xml");
+
+ echo $this->updates_start();
+ echo $this->get_version();
+ echo $output;
+ echo $this->updates_end();
+ }
+
+
+ protected function render_set($res, $name){
+ $output="";
+ $index=0;
+ while ($data=$this->sql->get_next($res)){
+ $data = new DataItemUpdate($data,$this->config,$index, $name);
+ $this->event->trigger("beforeRender",$data);
+ $output.=$data->to_xml();
+ $index++;
+ }
+ return $output;
+ }
+
+ /*! returns update start string
+ */
+ protected function updates_start() {
+ $start = '<updates>';
+ return $start;
+ }
+
+ /*! returns update end string
+ */
+ protected function updates_end() {
+ $start = '</updates>';
+ return $start;
+ }
+
+ /*! checks if action version given by client is deprecated
+ @param action
+ DataAction object
+ */
+ public function check_collision($action) {
+ $version = $this->sql->escape($this->request->get_version());
+ //$user = $this->sql->escape($this->request->get_user());
+ $last_version = $this->get_update_max_version();
+ if (($last_version > $version)&&($action->get_status() == 'update')) {
+ $action->error();
+ $action->set_status('collision');
+ }
+ }
+}
+
+?> \ No newline at end of file
diff --git a/license.txt b/license.txt
new file mode 100644
index 0000000..20d40b6
--- /dev/null
+++ b/license.txt
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. 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
+them 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 prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. 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.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey 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;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU 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 that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ 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.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+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.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ 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
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program 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, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU 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 Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>. \ No newline at end of file
diff --git a/samples/combo/01_basic.html b/samples/combo/01_basic.html
new file mode 100644
index 0000000..81a0dc5
--- /dev/null
+++ b/samples/combo/01_basic.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Filtering and Autocomplete mode</title>
+ <script>
+ window.dhx_globalImgPath="../dhtmlx/imgs/";
+ </script>
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="combo_zone4" style="width:200px; height:30px;"></div>
+ <hr/>
+ <div id="combo_zone5" style="width:200px; height:30px;"></div>
+ <hr/>
+ <div id="combo_zone6" style="width:200px; height:30px;"></div>
+ <script>
+ var z=new dhtmlXCombo("combo_zone4","alfa4",200);
+ z.loadXML("01_basic_connector.php");
+ </script>
+ <script>
+ var z=new dhtmlXCombo("combo_zone5","alfa4",200);
+ z.enableFilteringMode(true,"01_basic_connector.php",true);
+ </script>
+ <script>
+ var z=new dhtmlXCombo("combo_zone6","alfa4",200);
+ z.enableFilteringMode(true,"01_basic_srnd_connector.php",true,true);
+ </script>
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/combo_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$combo&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">ComboConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$combo</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$combo</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"country_data"</span><span style="color: #007700">,</span><span style="color: #DD0000">"country_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"name"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/combo/01_basic_connector.php b/samples/combo/01_basic_connector.php
new file mode 100644
index 0000000..59f47a8
--- /dev/null
+++ b/samples/combo/01_basic_connector.php
@@ -0,0 +1,10 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/combo_connector.php");
+ $combo = new ComboConnector($res);
+// $combo->enable_log("temp.log");
+ $combo->render_table("country_data","country_id","name");
+?> \ No newline at end of file
diff --git a/samples/combo/01_basic_srnd_connector.php b/samples/combo/01_basic_srnd_connector.php
new file mode 100644
index 0000000..7e6264e
--- /dev/null
+++ b/samples/combo/01_basic_srnd_connector.php
@@ -0,0 +1,11 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/combo_connector.php");
+ $combo = new ComboConnector($res);
+// $combo->enable_log("temp.log");
+ $combo->dynamic_loading(2);
+ $combo->render_table("country_data","country_id","name");
+?> \ No newline at end of file
diff --git a/samples/combo/02_sql.html b/samples/combo/02_sql.html
new file mode 100644
index 0000000..31bb217
--- /dev/null
+++ b/samples/combo/02_sql.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Filtering and Autocomplete mode</title>
+ <script>
+ window.dhx_globalImgPath="../dhtmlx/imgs/";
+ </script>
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="combo_zone4" style="width:200px; height:30px;"></div>
+ <hr/>
+ <div id="combo_zone5" style="width:200px; height:30px;"></div>
+ <hr/>
+ <div id="combo_zone6" style="width:200px; height:30px;"></div>
+ <script>
+ var z=new dhtmlXCombo("combo_zone4","alfa4",200);
+ z.loadXML("02_sql_connector.php");
+ </script>
+ <script>
+ var z=new dhtmlXCombo("combo_zone5","alfa4",200);
+ z.enableFilteringMode(true,"02_sql_connector.php",true);
+ </script>
+ <script>
+ var z=new dhtmlXCombo("combo_zone6","alfa4",200);
+ z.enableFilteringMode(true,"02_sql_srnd_connector.php",true,true);
+ </script>
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/combo_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$combo&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">ComboConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$combo</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$combo</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT&nbsp;*&nbsp;FROM&nbsp;country_data&nbsp;&nbsp;WHERE&nbsp;country_id&nbsp;&gt;40&nbsp;"</span><span style="color: #007700">,</span><span style="color: #DD0000">"country_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"name"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/combo/02_sql_connector.php b/samples/combo/02_sql_connector.php
new file mode 100644
index 0000000..06acc77
--- /dev/null
+++ b/samples/combo/02_sql_connector.php
@@ -0,0 +1,10 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/combo_connector.php");
+ $combo = new ComboConnector($res);
+ //$combo->enable_log("temp.log");
+ $combo->render_sql("SELECT * FROM country_data WHERE country_id >40 ","country_id","name");
+?> \ No newline at end of file
diff --git a/samples/combo/02_sql_srnd_connector.php b/samples/combo/02_sql_srnd_connector.php
new file mode 100644
index 0000000..a4f3bb5
--- /dev/null
+++ b/samples/combo/02_sql_srnd_connector.php
@@ -0,0 +1,11 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/combo_connector.php");
+ $combo = new ComboConnector($res);
+// $combo->enable_log("temp.log");
+ $combo->dynamic_loading(2);
+ $combo->render_sql("SELECT * FROM country_data WHERE country_id >40 ","country_id","name");
+?> \ No newline at end of file
diff --git a/samples/combo/index.html b/samples/combo/index.html
new file mode 100644
index 0000000..2c7f63e
--- /dev/null
+++ b/samples/combo/index.html
@@ -0,0 +1,26 @@
+<html>
+ <head></head>
+ <style type="text/css" media="screen">
+ *{
+ font-family:Tahoma;
+ }
+ div,li{
+ font-size:10pt;
+ }
+ div{
+ padding-bottom:20px;
+ }
+ li{
+ padding-left:50px;
+ padding-bottom:10px;
+ }
+ </style>
+ <body>
+ <h2>dhtmlxConnector for PHP :: Samples</h2>
+
+ <li><a href="01_basic.html">Basic init</a></li>
+ <li><a href="02_sql.html">Basic init by sql string</a></li>
+
+ </body>
+</html>
+
diff --git a/samples/config.php b/samples/config.php
new file mode 100644
index 0000000..719e327
--- /dev/null
+++ b/samples/config.php
@@ -0,0 +1,12 @@
+<?php
+ $mysql_server="localhost";
+ $mysql_user = "root";
+ $mysql_pass = "";
+ $mysql_db = "sampleDB";
+ $excel_file = "../common/excel_sample.xls";
+
+ //necessary for PostgreSQL related samples only
+ $postrgre_connection = "host=localhost port=5432 dbname=sampleDB user=root password=1234";
+ //necessary for Oracle related samples only
+ $oci_connection = "some here";
+?> \ No newline at end of file
diff --git a/samples/dataview/01_static_loading.html b/samples/dataview/01_static_loading.html
new file mode 100644
index 0000000..d3b25b1
--- /dev/null
+++ b/samples/dataview/01_static_loading.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+ <title>Static loading</title>
+ <script src="../dhtmlx/dhtmlx.js" type="text/javascript"></script>
+ <script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+ <link rel="STYLESHEET" type="text/css" href="../dhtmlx/dhtmlx.css">
+ <style type="text/css" media="screen">
+ body { background-color:#EBEBEB; };
+ </style>
+</head>
+<body>
+ <h1>Static loading</h1>
+ <p>All data is loaded at once</p>
+ <div id="data_container" style="border:1px solid #A4BED4; background-color:white; width:710px;height:392px;"></div>
+ <script>
+ data = new dhtmlXDataView({
+ container:"data_container",
+ type:{
+ template:"<span class='dhx_strong'>{obj.Maintainer}</span>{obj.Package} <span class='dhx_light'>{obj.Version}</span>",
+ height:35
+ }
+ });
+ data.load("01_static_loading.php");
+ </script>
+
+</body>
+</html>
+
diff --git a/samples/dataview/01_static_loading.php b/samples/dataview/01_static_loading.php
new file mode 100644
index 0000000..785df91
--- /dev/null
+++ b/samples/dataview/01_static_loading.php
@@ -0,0 +1,10 @@
+<?php
+ require_once("../../codebase/dataview_connector.php");
+ require_once("../config.php");
+
+ $conn = mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ $data = new DataViewConnector($conn);
+ $data->render_sql(" SELECT * FROM packages_plain WHERE Id < 1000","Id","Package,Version,Maintainer");
+?> \ No newline at end of file
diff --git a/samples/dataview/02_dynamic_loading.html b/samples/dataview/02_dynamic_loading.html
new file mode 100644
index 0000000..605d299
--- /dev/null
+++ b/samples/dataview/02_dynamic_loading.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+ <title>Dynamic loading</title>
+ <script src="../dhtmlx/dhtmlx.js" type="text/javascript"></script>
+ <script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+ <link rel="STYLESHEET" type="text/css" href="../dhtmlx/dhtmlx.css">
+ <style type="text/css" media="screen">
+ body { background-color:#EBEBEB; };
+ </style>
+</head>
+<body>
+ <h1>Dynamic loading</h1>
+ <p>Data is loaded to the DataView on demand</p>
+
+ <div id="data_container" style="border:1px solid #A4BED4; background-color:white; width:710px;height:392px;"></div>
+ <br>
+ <script>
+ data = new dhtmlXDataView({
+ container:"data_container",
+ type:{
+ template:"<span class='dhx_strong'>{obj.Maintainer}</span>{obj.Package} <span class='dhx_light'>{obj.Version}</span>",
+ height:35
+ }
+ });
+ data.load("02_dynamic_loading.php");
+ </script>
+
+</body>
+</html>
+
diff --git a/samples/dataview/02_dynamic_loading.php b/samples/dataview/02_dynamic_loading.php
new file mode 100644
index 0000000..3d6fbd5
--- /dev/null
+++ b/samples/dataview/02_dynamic_loading.php
@@ -0,0 +1,12 @@
+<?php
+
+ require_once("../../codebase/dataview_connector.php");
+ require_once("../config.php");
+
+ $conn = mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ $data = new DataViewConnector($conn);
+ $data->dynamic_loading(50);
+ $data->render_table("packages_plain","Id","Package,Version,Maintainer");
+?> \ No newline at end of file
diff --git a/samples/dataview/03_adding.html b/samples/dataview/03_adding.html
new file mode 100644
index 0000000..35e04d0
--- /dev/null
+++ b/samples/dataview/03_adding.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--conf
+<sample in_favorites="true">
+ <product version="1.0" edition="std"/>
+ <modifications>
+ <modified date="080205"/>
+ </modifications>
+<sampledescription><![CDATA[ ]]></sampledescription></sample>
+ -->
+
+<html>
+<head>
+ <title>Connecting to database</title>
+ <script src="../dhtmlx/dhtmlx.js" type="text/javascript"></script>
+ <script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+ <script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+ <link rel="STYLESHEET" type="text/css" href="../dhtmlx/dhtmlx.css">
+ <style type="text/css" media="screen">
+ body { background-color:#EBEBEB; };
+ </style>
+<body>
+ <h1>Connecting to database</h1>
+
+ <form style="float:right;">
+ Product <input type="text" id="p_name" value="dhtmlxDataView"><br>
+ Version <input type="text" id="v_name" value="3.0"><br>
+ Maintainer <input type="text" id="m_name" value="Ivan"><br>
+ <input type="button" value="Add &rarr;" onclick='add_data()'>
+ <hr>
+ <input type="button" value="Remove selected &rarr;" onclick='remove_data()'>
+ </form>
+
+ <div id="data_container" style="border:1px solid #A4BED4; background-color:white;width:596px;height:396px;"></div>
+ <script>
+ data = new dhtmlXDataView({
+
+ container:"data_container",
+ edit:true,
+ type:{
+ template:"{obj.Package} : {obj.Version}<br/>{obj.Maintainer}",
+ template_edit:"<input class='dhx_item_editor' bind='obj.Package'>",
+ height:40
+ }
+ });
+ data.load("03_adding.php");
+
+ var dp = new dataProcessor("03_adding.php");
+ dp.init(data);
+
+ function add_data(argument) {
+ data.add({
+ Package: document.getElementById("p_name").value,
+ Version: document.getElementById("v_name").value,
+ Maintainer: document.getElementById("m_name").value,
+ },0)
+ }
+ function remove_data(){
+ data.remove(data.getSelected());
+ }
+ </script>
+
+
+
+</body>
+</html>
+
diff --git a/samples/dataview/03_adding.php b/samples/dataview/03_adding.php
new file mode 100644
index 0000000..b273046
--- /dev/null
+++ b/samples/dataview/03_adding.php
@@ -0,0 +1,10 @@
+<?php
+ require_once("../../codebase/dataview_connector.php");
+ require_once("../config.php");
+
+ $conn = mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ $data = new DataViewConnector($conn);
+ $data->render_table("packages_small","Id","Package,Version,Maintainer");
+?> \ No newline at end of file
diff --git a/samples/dataview/index.html b/samples/dataview/index.html
new file mode 100644
index 0000000..fd99f9a
--- /dev/null
+++ b/samples/dataview/index.html
@@ -0,0 +1,25 @@
+<html>
+ <head></head>
+ <style type="text/css" media="screen">
+ *{
+ font-family:Tahoma;
+ }
+ div,li{
+ font-size:10pt;
+ }
+ div{
+ padding-bottom:20px;
+ }
+ li{
+ padding-left:50px;
+ padding-bottom:10px;
+ }
+ </style>
+ <body>
+ <h2>dhtmlxConnector for PHP :: Samples</h2>
+ <li><a href="01_static_loading.html">Static loading</a></li>
+ <li><a href="02_dynamic_loading.html">Dynamic loading</a></li>
+ <li><a href="03_adding.html">Adding</a></li>
+ </body>
+</html>
+
diff --git a/samples/dhtmlx/dhtmlx.css b/samples/dhtmlx/dhtmlx.css
new file mode 100644
index 0000000..15811cc
--- /dev/null
+++ b/samples/dhtmlx/dhtmlx.css
@@ -0,0 +1 @@
+.dhtmlxcalendar_container{position:absolute;display:block;width:188px;background-repeat:no-repeat;background-position:0 0;z-index:1999;}div.dhtmlxcalendar_skin_cont{position:relative;width:100%;height:100%;top:0;left:0;}.dhtmlxcalendar_container.dhtmlxcalendar_time_hidden{background-position:0 -216px;}.dhtmlxcalendar_container ul.dhtmlxcalendar_line{position:relative;display:block;clear:both;margin:0;padding:0;height:24px;overflow:hidden;width:182px;}.dhtmlxcalendar_container ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell,.dhtmlxcalendar_container ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell_first{float:left;width:26px;height:24px;list-style-type:none;list-style-image:none;font-family:Tahoma;font-size:10px;text-align:center;vertical-align:middle;line-height:22px;cursor:default;overflow:hidden;margin:0;padding:0;}.dhtmlxcalendar_container div.dhtmlxcalendar_month_cont{position:relative;display:block;width:182px;height:24px;margin-top:3px;margin-left:3px;-moz-user-select:text;}.dhtmlxcalendar_container div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr{width:182px;background-position:0 -24px;background-repeat:no-repeat;color:black;font-size:11px;line-height:24px;}.dhtmlxcalendar_container div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow{position:absolute;top:1px;width:18px;height:23px;text-align:center;color:black;background-position:center center;background-repeat:no-repeat;}.dhtmlxcalendar_container div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_left{left:4px;}.dhtmlxcalendar_container div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_left_hover{left:4px;}.dhtmlxcalendar_container div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_right{right:4px;}.dhtmlxcalendar_container div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_right_hover{right:4px;}.dhtmlxcalendar_container div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr span.dhtmlxcalendar_month_label_month{color:black;margin-right:3px;}.dhtmlxcalendar_container div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr span.dhtmlxcalendar_month_label_year{color:black;margin-left:2px;}.dhtmlxcalendar_container div.dhtmlxcalendar_days_cont{position:relative;display:block;width:182px;height:19px;margin-left:3px;-moz-user-select:text;}.dhtmlxcalendar_container div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line{height:19px;}.dhtmlxcalendar_container div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell,.dhtmlxcalendar_container div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell_first{height:19px;line-height:17px;color:black;background-repeat:no-repeat;}.dhtmlxcalendar_container div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell{background-position:-26px -48px;}.dhtmlxcalendar_container div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell_first{background-position:0 -48px;}.dhtmlxcalendar_container div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_day_weekday_cell{color:#C66200;background-position:-52px -48px;}.dhtmlxcalendar_container div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_day_weekday_cell_first{color:#C66200;background-position:-26px -105px;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont{position:relative;display:block;width:182px;height:144px;margin-left:3px;margin-bottom:0;-moz-user-select:none;}.dhtmlxcalendar_container.dhtmlxcalendar_time_hidden div.dhtmlxcalendar_dates_cont{margin-bottom:3px;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell{color:#909090;background-position:0 0;background-repeat:no-repeat;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell{background-position:0 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_weekend{background-position:0 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date{background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend{background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_dis{color:#e3e3e3;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_weekend_dis{color:#e3e3e3;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_dis{color:#e3e3e3;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend_dis{color:#e3e3e3;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_holiday{color:red;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_weekend_holiday{color:red;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_holiday{color:red;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend_holiday{color:red;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_holiday_dis{color:#ffc3c3;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_weekend_holiday_dis{color:#ffc3c3;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_holiday_dis{color:#ffc3c3;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend_holiday_dis{color:#ffc3c3;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_hover{background-position:-26px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_weekend_hover{background-position:-26px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_hover{background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend_hover{background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_holiday_hover{color:red;background-position:-26px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_weekend_holiday_hover{color:red;background-position:-26px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_holiday_hover{color:red;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_date_weekend_holiday_hover{color:red;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month{color:#000;background-position:-52px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend{color:#c66200;background-position:-130px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date{color:#000;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend{color:#c66200;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_dis{color:#808080;background-position:0 -100px;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend_dis{color:#808080;background-position:0 -100px;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_dis{color:#808080;background-position:0 -100px;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend_dis{color:#808080;background-position:0 -100px;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_holiday{color:red;background-position:-52px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend_holiday{color:red;background-position:-130px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_holiday{color:red;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend_holiday{color:red;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_holiday_dis{color:red;background-position:0 -100px;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend_holiday_dis{color:red;background-position:0 -100px;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_holiday_dis{color:red;background-position:0 -100px;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend_holiday_dis{color:red;background-position:0 -100px;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_hover{color:#000;background-position:-78px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend_hover{color:#c66200;background-position:-156px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_hover{color:#000;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend_hover{color:#c66200;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_holiday_hover{color:red;background-position:-78px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_weekend_holiday_hover{color:red;background-position:-156px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_holiday_hover{color:red;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_cell_month_date_weekend_holiday_hover{color:red;background-position:-104px 0;}.dhtmlxcalendar_container div.dhtmlxcalendar_time_cont{position:relative;display:block;width:182px;height:24px;margin-left:3px;margin-bottom:3px;-moz-user-select:none;}.dhtmlxcalendar_container.dhtmlxcalendar_time_hidden div.dhtmlxcalendar_time_cont{display:none;height:0;margin-bottom:0;}.dhtmlxcalendar_container div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr{width:182px;background-position:0 -24px;background-repeat:no-repeat;color:black;font-size:11px;line-height:24px;}.dhtmlxcalendar_container div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr div.dhtmlxcalendar_time_label{position:absolute;height:13px;width:13px;left:58px;top:5px;background-position:0 -87px;background-repeat:no-repeat;}.dhtmlxcalendar_container div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_hours,.dhtmlxcalendar_container div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_minutes,.dhtmlxcalendar_container div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_colon{font-size:11px;font-family:Tahoma;}.dhtmlxcalendar_container div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr span.dhtmlxcalendar_label_colon{margin-left:1px;margin-right:1px;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_cover{position:absolute;left:3px;top:27px;width:182px;height:163px;background-color:#c1c1c1;opacity:.3;-moz-opacity:.3;filter:alpha(opacity=30);}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj{position:absolute;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_selector_obj_arrow{position:absolute;bottom:auto;top:0;left:0;width:100%;height:9px;background-position:center -69px;background-repeat:no-repeat;overflow:hidden;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table{border:1px solid #c1c1c1;background-color:white;border-top:none;margin-top:9px;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left{width:17px;text-align:center;border-bottom:1px solid white;border-top:white 1px solid;border-left:white 1px solid;background-color:#f8f7f5;background-position:center center;background-repeat:no-repeat;cursor:default;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle{border-top:white 1px solid;border-left:white 1px solid;cursor:default;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right{width:17px;text-align:center;background-color:#f8f7f5;border-bottom:1px solid white;border-right:1px solid white;border-top:1px solid white;background-position:center center;background-repeat:no-repeat;cursor:default;;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_month table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_month table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right{display:none;width:0;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line{display:block;clear:both;margin:0;padding:0;width:96px;height:21px;-moz-user-select:none;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell{float:left;width:32px;height:21px;line-height:19px;font-family:Tahoma;font-size:10px;list-style-type:none;list-style-image:none;text-align:center;vertical-align:middle;margin:0;padding:0;background-repeat:no-repeat;background-position:-78px -48px;-moz-user-select:none;cursor:default;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell.dhtmlxcalendar_selector_cell_active{background-position:-142px -48px;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell.dhtmlxcalendar_selector_cell_hover{background-position:-110px -48px;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right{display:none;width:0;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours div.dhtmlxcalendar_selector_obj_arrow,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes div.dhtmlxcalendar_selector_obj_arrow{top:auto;bottom:0;background-position:center -78px;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours table.dhtmlxcalendar_selector_table,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table{margin-top:0;margin-bottom:9px;border-top:1px solid #C1C1C1;border-bottom:none;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line{width:162px;height:17px;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line{width:81px;height:17px;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell{height:17px;line-height:15px;width:27px;background-position:-83px -52px;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell.dhtmlxcalendar_selector_cell_active,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell.dhtmlxcalendar_selector_cell_active{background-position:-147px -52px;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell.dhtmlxcalendar_selector_cell_hover,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell.dhtmlxcalendar_selector_cell_hover{background-position:-115px -52px;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_area_selector_month,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_area_selector_year,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_area_selector_hours,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_area_selector_minutes{display:none;}.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_month div.dhtmlxcalendar_area_selector_month,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_year div.dhtmlxcalendar_area_selector_year,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_hours div.dhtmlxcalendar_area_selector_hours,.dhtmlxcalendar_container div.dhtmlxcalendar_selector_obj.dhtmlxcalendar_selector_minutes div.dhtmlxcalendar_area_selector_minutes{display:block;}.dhx_tooltip{display:none;position:absolute;font-family:Tahoma;font-size:8pt;z-index:10000;background-color:white;padding:2px 2px 2px 2px;border:1px solid #A4BED4;}.dhx_chart{position:relative;font-family:Verdana;font-size:13px;color:#000;overflow:hidden;}.dhx_canvas_text{position:absolute;text-align:center;overflow:hidden;white-space:nowrap;}.dhx_map_img{width:100%;height:100%;position:absolute;top:0;left:0;border:0;filter:alpha(opacity=0);}.dhx_axis_item_y{position:absolute;height:10px;line-height:10px;text-align:right;}.dhx_axis_title_x{text-align:center;}.dhx_axis_title_y{text-align:center;font-family:Verdana;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-o-transform:rotate(-90deg);padding-left:3px;}.dhx_chart_legend{position:absolute;}.dhx_chart_legend_item{height:18px;line-height:18px;padding:2px;}.dhtmlxcolorpicker{background:#E6E5E5;color:#000;}.dhtmlxcolorpicker .cs_ContentTable{margin:8px;}.dhtmlxcolorpicker .cs_SelectorDiv{border:1px solid gray;overflow:hidden;position:relative;width:256px;height:256px;}.dhtmlxcolorpicker .cs_SelectorDiv_Mini{border:1px solid gray;overflow:hidden;position:relative;width:210px;height:120px;}.dhtmlxcolorpicker .cs_SelectorVer{position:absolute;width:1px;height:100%;background-color:white;overflow:hidden;}.dhtmlxcolorpicker .cs_SelectorHor{position:absolute;width:100%;height:1px;background-color:white;overflow:hidden;}.dhtmlxcolorpicker .cs_LumSelect{border:1px solid gray;margin-left:13px;margin-right:10px;position:relative;width:15px;}.dhtmlxcolorpicker .cs_LumSelect_Mini{border:1px solid gray;margin-left:6px;position:relative;width:12px;}.dhtmlxcolorpicker .cs_LumSelectLine{position:absolute;width:100%;height:1px;overflow:hidden;background-color:white;}.dhtmlxcolorpicker .cs_LumSelectArrow{position:absolute;background:url('imgs/slide.gif') no-repeat;width:13px;height:9px;overflow:hidden;}.dhtmlxcolorpicker .cs_LumElement{width:100%;height:4px;border:0;overflow:hidden;}.dhtmlxcolorpicker .cs_ColorArea{font-family:Arial;font-size:12px;width:100%;}.dhtmlxcolorpicker .cs_ColorArea_Mini{font-family:Arial;font-size:12px;width:100%;}.dhtmlxcolorpicker .cs_ColorArea TD{text-align:right;height:25px;}.dhtmlxcolorpicker .cs_ColorArea_Mini TD{text-align:right;height:18px;}.dhtmlxcolorpicker .cs_EndColor{width:72px;height:69px;border:1px solid gray;}.dhtmlxcolorpicker .cs_EndColor_Mini{width:100px;height:30px;border:1px solid gray;}.dhtmlxcolorpicker .cs_Hex{font-family:Arial;Font-size:12px;width:55px;}.dhtmlxcolorpicker .cs_Hex_Mini,.dhtmlxcolorpicker .cs_Hex_MiniX{font-family:Arial;Font-size:10px;height:15px;width:45px;margin:0;padding:0;}.dhtmlxcolorpicker .cs_Hex_MiniX{height:11px;}.dhtmlxcolorpicker .cs_Input{width:26px;font-family:Arial;Font-size:12px;text-align:right;}.dhtmlxcolorpicker .cs_Input_Mini,.dhtmlxcolorpicker .cs_Input_MiniX{width:22px;height:15px;font-family:Arial;Font-size:10px;margin:0;padding:0;text-align:right;}.dhtmlxcolorpicker .cs_Input_MiniX{height:11px;}.commonInputStyle,.dhtmlxcolorpicker .cs_CustomColorAdd,.dhtmlxcolorpicker .cs_CustomColorAdd_Hover,.dhtmlxcolorpicker .cs_ButtonOk,.dhtmlxcolorpicker .cs_ButtonOk_Hover,.dhtmlxcolorpicker .cs_ButtonCancel,.dhtmlxcolorpicker .cs_ButtonCancel_Hover,.dhtmlxcolorpicker .cs_CustomColorAdd_Mini,.dhtmlxcolorpicker .cs_CustomColorAdd_Mini_Hover{border:1px outset white;background:#d4cfc9;height:22px;}.dhtmlxcolorpicker .cs_CustomColorAdd,.dhtmlxcolorpicker .cs_CustomColorAdd_Hover{width:145px;font-family:Arial;Font-size:12px;margin-top:8px;}.dhtmlxcolorpicker .cs_CustomColorAdd_Mini,.dhtmlxcolorpicker .cs_CustomColorAdd_Mini_Hover{width:100%;font-family:Arial;Font-size:12px;margin-top:6px;}.dhtmlxcolorpicker .cs_CustomColors{margin-top:8px;width:76px;height:38px;}.dhtmlxcolorpicker .cs_CustomColors_Mini{width:100%;height:18px;margin-top:6px;}.dhtmlxcolorpicker .cs_CustomColor{float:left;width:14px;height:14px;border:1px solid gray;overflow:hidden;cursor:pointer;margin-bottom:3px;margin-right:3px;}.dhtmlxcolorpicker .cs_CustomColor_Mini{float:left;width:18px;height:18px;border:1px solid gray;overflow:hidden;cursor:pointer;margin-bottom:3px;margin-right:3px;}.dhtmlxcolorpicker .cs_ButtonOk,.dhtmlxcolorpicker .cs_ButtonOk_Hover{margin-top:3px;margin-right:6px;float:right;width:70px;font-family:Arial;Font-size:12px;}.dhtmlxcolorpicker .cs_ButtonCancel,.dhtmlxcolorpicker .cs_ButtonCancel_Hover{margin-top:3px;margin-right:7px;width:70px;float:right;font-family:Arial;Font-size:12px;}.dhtmlxcolorpicker .cs_colorInput{position:absolute;top:0;left:0;}.dhtmlxcolorpicker .cs_colorBox{position:absolute;top:0;left:0;border:1px solid black;}.dhtmlxcolorpicker .cs_ButtonsPanel{height:37px;background:url('imgs/cp_buttons_panel.gif');}.dhtmlxcolorpicker_dhx_black{background:#000;}.dhtmlxcolorpicker_dhx_black .cs_ContentTable{margin:8px;}.dhtmlxcolorpicker_dhx_black .cs_SelectorDiv{border:1px solid gray;overflow:hidden;position:relative;width:256px;height:256px;}.dhtmlxcolorpicker_dhx_black .cs_SelectorDiv_Mini{border:1px solid gray;overflow:hidden;position:relative;width:210px;height:120px;}.dhtmlxcolorpicker_dhx_black .cs_SelectorVer{position:absolute;width:1px;height:100%;background-color:white;overflow:hidden;}.dhtmlxcolorpicker_dhx_black .cs_SelectorHor{position:absolute;width:100%;height:1px;background-color:white;overflow:hidden;}.dhtmlxcolorpicker_dhx_black .cs_LumSelect{border:1px solid gray;margin-left:13px;margin-right:10px;position:relative;width:15px;}.dhtmlxcolorpicker_dhx_black .cs_LumSelect_Mini{border:1px solid gray;margin-left:6px;position:relative;width:12px;}.dhtmlxcolorpicker_dhx_black .cs_LumSelectLine{position:absolute;width:100%;height:1px;overflow:hidden;background-color:white;}.dhtmlxcolorpicker_dhx_black .cs_LumSelectArrow{position:absolute;background:url('img/__dhxCP_skin_Black/slide.gif') no-repeat;width:13px;height:9px;overflow:hidden;}.dhtmlxcolorpicker_dhx_black .cs_LumElement{width:100%;height:4px;border:0;font-size:0;overflow:hidden;}.dhtmlxcolorpicker_dhx_black .cs_ColorArea{font-family:Arial;font-size:12px;width:100%;color:#fff;}.dhtmlxcolorpicker_dhx_black .cs_ColorArea_Mini{font-family:Arial;font-size:12px;width:100%;color:#fff;}.dhtmlxcolorpicker_dhx_black .cs_ColorArea TD{text-align:right;height:25px;}.dhtmlxcolorpicker_dhx_black .cs_ColorArea_Mini TD{text-align:right;height:18px;}.dhtmlxcolorpicker_dhx_black .cs_EndColor{width:72px;height:69px;border:1px solid gray;}.dhtmlxcolorpicker_dhx_black .cs_EndColor_Mini{width:100px;height:30px;border:1px solid gray;}.dhtmlxcolorpicker_dhx_black .cs_Hex{font-family:Arial;Font-size:12px;width:55px;}.dhtmlxcolorpicker_dhx_black .cs_Hex_Mini,.dhtmlxcolorpicker_dhx_black .cs_Hex_MiniX{font-family:Arial;Font-size:10px;height:15px;width:45px;margin:0;padding:0;}.dhtmlxcolorpicker_dhx_black .cs_Hex_MiniX{height:11px;}.dhtmlxcolorpicker_dhx_black .cs_Input{width:26px;font-family:Arial;Font-size:12px;text-align:right;}.dhtmlxcolorpicker_dhx_black .cs_Input_Mini,.dhtmlxcolorpicker_dhx_black .cs_Input_MiniX{width:22px;height:15px;font-family:Arial;Font-size:10px;margin:0;padding:0;text-align:right;}.dhtmlxcolorpicker_dhx_black .cs_Input_MiniX{height:11px;}.commonInputStyle,.dhtmlxcolorpicker_dhx_black .cs_CustomColorAdd,.dhtmlxcolorpicker_dhx_black .cs_CustomColorAdd_Hover,.dhtmlxcolorpicker_dhx_black .cs_ButtonOk,.dhtmlxcolorpicker_dhx_black .cs_ButtonOk_Hover,.dhtmlxcolorpicker_dhx_black .cs_ButtonCancel,.dhtmlxcolorpicker_dhx_black .cs_ButtonCancel_Hover,.dhtmlxcolorpicker_dhx_black .cs_CustomColorAdd_Mini,.dhtmlxcolorpicker_dhx_black .cs_CustomColorAdd_Mini_Hover{border:1px outset white;background:#d4cfc9;height:22px;}.dhtmlxcolorpicker_dhx_black .cs_CustomColorAdd,.dhtmlxcolorpicker_dhx_black .cs_CustomColorAdd_Hover{width:145px;font-family:Arial;Font-size:12px;margin-top:8px;}.dhtmlxcolorpicker_dhx_black .cs_CustomColorAdd_Mini,.dhtmlxcolorpicker_dhx_black .cs_CustomColorAdd_Mini_Hover{width:100%;font-family:Arial;Font-size:12px;margin-top:6px;}.dhtmlxcolorpicker_dhx_black .cs_CustomColors{margin-top:8px;width:76px;height:38px;}.dhtmlxcolorpicker_dhx_black .cs_CustomColors_Mini{width:100%;height:18px;margin-top:6px;}.dhtmlxcolorpicker_dhx_black .cs_CustomColor{float:left;width:14px;height:14px;border:1px solid gray;overflow:hidden;cursor:pointer;margin-bottom:3px;margin-right:3px;}.dhtmlxcolorpicker_dhx_black .cs_CustomColor_Mini{float:left;width:18px;height:18px;border:1px solid gray;overflow:hidden;cursor:pointer;margin-bottom:3px;margin-right:3px;}.dhtmlxcolorpicker_dhx_black .cs_ButtonOk,.dhtmlxcolorpicker_dhx_black .cs_ButtonOk_Hover{margin-top:3px;margin-right:6px;float:right;width:70px;font-family:Arial;Font-size:12px;}.dhtmlxcolorpicker_dhx_black .cs_ButtonCancel,.dhtmlxcolorpicker_dhx_black .cs_ButtonCancel_Hover{margin-top:3px;margin-right:7px;width:70px;float:right;font-family:Arial;Font-size:12px;}.dhtmlxcolorpicker_dhx_black .cs_colorInput{position:absolute;top:0;left:0;}.dhtmlxcolorpicker_dhx_black .cs_colorBox{position:absolute;top:0;left:0;border:1px solid black;}.dhtmlxcolorpicker_dhx_black .cs_ButtonsPanel{height:37px;background:url('imgs/__dhxCP_skin_Black/cp_buttons_panel.png');}.dhtmlxcolorpicker_dhx_blue{background:#d3e2e5;}.dhtmlxcolorpicker_dhx_blue .cs_ContentTable{margin:8px;}.dhtmlxcolorpicker_dhx_blue .cs_SelectorDiv{border:1px solid gray;overflow:hidden;position:relative;width:256px;height:256px;}.dhtmlxcolorpicker_dhx_blue .cs_SelectorDiv_Mini{border:1px solid #adc6cb;overflow:hidden;position:relative;width:210px;height:120px;}.dhtmlxcolorpicker_dhx_blue .cs_SelectorVer{position:absolute;width:1px;height:100%;background-color:white;overflow:hidden;}.dhtmlxcolorpicker_dhx_blue .cs_SelectorHor{position:absolute;width:100%;height:1px;background-color:white;overflow:hidden;}.dhtmlxcolorpicker_dhx_blue .cs_LumSelect{border:1px solid gray;margin-left:13px;margin-right:10px;position:relative;width:15px;}.dhtmlxcolorpicker_dhx_blue .cs_LumSelect_Mini{border:1px solid #adc6cb;margin-left:6px;position:relative;width:12px;}.dhtmlxcolorpicker_dhx_blue .cs_LumSelectLine{position:absolute;width:100%;height:1px;overflow:hidden;background-color:white;}.dhtmlxcolorpicker_dhx_blue .cs_LumSelectArrow{position:absolute;background:url('imgs/__dhxCP_skin_Blue/slide.gif') no-repeat;width:13px;height:9px;overflow:hidden;}.dhtmlxcolorpicker_dhx_blue .cs_LumElement{width:100%;height:4px;border:0;font-size:0;overflow:hidden;}.dhtmlxcolorpicker_dhx_blue .cs_ColorArea{font-family:Arial;font-size:12px;width:100%;color:#02609e;}.dhtmlxcolorpicker_dhx_blue .cs_ColorArea_Mini{font-family:Arial;font-size:12px;width:100%;color:#02609e;}.dhtmlxcolorpicker_dhx_blue .cs_ColorArea TD{text-align:right;height:25px;}.dhtmlxcolorpicker_dhx_blue .cs_ColorArea_Mini TD{text-align:right;height:18px;}.dhtmlxcolorpicker_dhx_blue .cs_EndColor{width:72px;height:69px;border:1px solid gray;}.dhtmlxcolorpicker_dhx_blue .cs_EndColor_Mini{width:100px;height:30px;border:1px solid #adc6cb;}.dhtmlxcolorpicker_dhx_blue .cs_Hex{font-family:Arial;Font-size:12px;width:55px;}.dhtmlxcolorpicker_dhx_blue .cs_Hex_Mini,.dhtmlxcolorpicker_dhx_blue .cs_Hex_MiniX{font-family:Arial;Font-size:10px;height:15px;width:45px;margin:0;padding:0;border:1px solid #adc6cb;}.dhtmlxcolorpicker_dhx_blue .cs_Hex_MiniX{height:11px;}.dhtmlxcolorpicker_dhx_blue .cs_Input{width:26px;font-family:Arial;Font-size:12px;text-align:right;}.dhtmlxcolorpicker_dhx_blue .cs_Input_Mini,.dhtmlxcolorpicker_dhx_blue .cs_Input_MiniX{width:22px;height:15px;font-family:Arial;Font-size:10px;margin:0;padding:0;text-align:right;border:1px solid #adc6cb;}.dhtmlxcolorpicker_dhx_blue .cs_Input_MiniX{height:11px;}.commonInputStyle,.dhtmlxcolorpicker_dhx_blue .cs_CustomColorAdd,.dhtmlxcolorpicker_dhx_blue .cs_CustomColorAdd_Hover,.dhtmlxcolorpicker_dhx_blue .cs_ButtonOk,.dhtmlxcolorpicker_dhx_blue .cs_ButtonOk_Hover,.dhtmlxcolorpicker_dhx_blue .cs_ButtonCancel,.dhtmlxcolorpicker_dhx_blue .cs_ButtonCancel_Hover,.dhtmlxcolorpicker_dhx_blue .cs_CustomColorAdd_Mini,.dhtmlxcolorpicker_dhx_blue .cs_CustomColorAdd_Mini_Hover{border:1px outset white;background:#d4cfc9;height:22px;}.dhtmlxcolorpicker_dhx_blue .cs_CustomColorAdd,.dhtmlxcolorpicker_dhx_blue .cs_CustomColorAdd_Hover{width:145px;font-family:Arial;Font-size:12px;margin-top:8px;}.dhtmlxcolorpicker_dhx_blue .cs_CustomColorAdd_Mini,.dhtmlxcolorpicker_dhx_blue .cs_CustomColorAdd_Mini_Hover{width:100%;font-family:Arial;Font-size:12px;margin-top:6px;}.dhtmlxcolorpicker_dhx_blue .cs_CustomColors{margin-top:8px;width:76px;height:38px;}.dhtmlxcolorpicker_dhx_blue .cs_CustomColors_Mini{width:100%;height:18px;margin-top:6px;}.dhtmlxcolorpicker_dhx_blue .cs_CustomColor{float:left;width:14px;height:14px;border:1px solid #adc6cb;overflow:hidden;cursor:pointer;margin-bottom:3px;margin-right:3px;}.dhtmlxcolorpicker_dhx_blue .cs_CustomColor_Mini{float:left;width:18px;height:18px;border:1px solid #adc6cb;overflow:hidden;cursor:pointer;margin-bottom:3px;margin-right:3px;}.dhtmlxcolorpicker_dhx_blue .cs_ButtonOk,.dhtmlxcolorpicker_dhx_blue .cs_ButtonOk_Hover{margin-top:3px;margin-right:6px;float:right;width:70px;font-family:Arial;Font-size:12px;}.dhtmlxcolorpicker_dhx_blue .cs_ButtonCancel,.dhtmlxcolorpicker_dhx_blue .cs_ButtonCancel_Hover{margin-top:3px;margin-right:7px;width:70px;float:right;font-family:Arial;Font-size:12px;}.dhtmlxcolorpicker_dhx_blue .cs_colorInput{position:absolute;top:0;left:0;}.dhtmlxcolorpicker_dhx_blue .cs_colorBox{position:absolute;top:0;left:0;border:1px solid blue;}.dhtmlxcolorpicker_dhx_blue .cs_ButtonsPanel{height:37px;background:url('imgs/__dhxCP_skin_Blue/cp_buttons_panel.png');}.dhtmlxcolorpicker_dhx_skyblue{background:url('imgs/__dhxCP_skin_SkyBlue/bg_head.gif') repeat-x #c3d4eb;}.dhtmlxcolorpicker_dhx_skyblue .cs_ContentTable{margin:20px 8px 0;}.dhtmlxcolorpicker_dhx_skyblue .cs_SelectorDiv{border:1px solid #fff;overflow:hidden;position:relative;width:256px;height:256px;}.dhtmlxcolorpicker_dhx_skyblue .cs_SelectorDiv_Mini{border:1px solid #fff;overflow:hidden;position:relative;width:210px;height:120px;}.dhtmlxcolorpicker_dhx_skyblue .cs_SelectorVer{position:absolute;width:1px;height:100%;background-color:white;overflow:hidden;}.dhtmlxcolorpicker_dhx_skyblue .cs_SelectorHor{position:absolute;width:100%;height:1px;background-color:white;overflow:hidden;}.dhtmlxcolorpicker_dhx_skyblue .cs_LumSelect{border:1px solid #fff;margin-left:13px;margin-right:10px;position:relative;width:15px;}.dhtmlxcolorpicker_dhx_skyblue .cs_LumSelect_Mini{border:1px solid #fff;margin-left:6px;position:relative;width:12px;}.dhtmlxcolorpicker_dhx_skyblue .cs_LumSelectLine{position:absolute;width:100%;height:1px;overflow:hidden;background-color:white;}.dhtmlxcolorpicker_dhx_skyblue .cs_LumSelectArrow{position:absolute;background:url('imgs/__dhxCP_skin_SkyBlue/slide.gif') no-repeat;width:13px;height:9px;overflow:hidden;}.dhtmlxcolorpicker_dhx_skyblue .cs_LumElement{width:100%;height:4px;border:0;font-size:0;overflow:hidden;}.dhtmlxcolorpicker_dhx_skyblue .cs_ColorArea{font-family:Arial;font-size:12px;width:100%;color:#02609e;}.dhtmlxcolorpicker_dhx_skyblue .cs_ColorArea_Mini{font-family:Arial;font-size:12px;width:100%;color:#02609e;}.dhtmlxcolorpicker_dhx_skyblue .cs_ColorArea TD{text-align:right;height:25px;}.dhtmlxcolorpicker_dhx_skyblue .cs_ColorArea_Mini TD{text-align:right;height:18px;}.dhtmlxcolorpicker_dhx_skyblue .cs_EndColor{width:72px;height:69px;border:1px solid #fff;}.dhtmlxcolorpicker_dhx_skyblue .cs_EndColor_Mini{width:100px;height:30px;border:1px solid #fff;}.dhtmlxcolorpicker_dhx_skyblue .cs_Hex{font-family:Arial;Font-size:12px;width:55px;}.dhtmlxcolorpicker_dhx_skyblue .cs_Hex_Mini,.dhtmlxcolorpicker_dhx_skyblue .cs_Hex_MiniX{font-family:Arial;Font-size:10px;height:15px;width:45px;margin:0;padding:0;border:1px solid #fff;}.dhtmlxcolorpicker_dhx_skyblue .cs_Hex_MiniX{height:11px;}.dhtmlxcolorpicker_dhx_skyblue .cs_Input{width:26px;font-family:Arial;Font-size:12px;text-align:right;}.dhtmlxcolorpicker_dhx_skyblue .cs_Input_Mini,.dhtmlxcolorpicker_dhx_skyblue .cs_Input_MiniX{width:22px;height:15px;font-family:Arial;font-size:10px;margin:0;padding:0;text-align:right;border:1px solid #fff;}.dhtmlxcolorpicker_dhx_skyblue .cs_Input_MiniX{height:11px;}.dhtmlxcolorpicker_dhx_skyblue .cs_CustomColorAdd{width:145px;font-family:Arial;font-size:12px;margin-top:8px;}.dhtmlxcolorpicker_dhx_skyblue .cs_CustomColorAdd_Mini,.dhtmlxcolorpicker_dhx_skyblue .cs_CustomColorAdd_Mini_Hover{background:url('imgs/__dhxCP_skin_SkyBlue/but_add.gif');border:0;width:100%;height:21px;font-family:Tahoma;font-size:11px;margin-top:6px;padding-left:20px;}.dhtmlxcolorpicker_dhx_skyblue .cs_CustomColorAdd_Mini_Hover{background-position:left bottom;}.dhtmlxcolorpicker_dhx_skyblue .cs_CustomColors{margin-top:8px;width:76px;height:38px;}.dhtmlxcolorpicker_dhx_skyblue .cs_CustomColors_Mini{width:100%;height:18px;margin-top:6px;}.dhtmlxcolorpicker_dhx_skyblue .cs_CustomColor{float:left;width:14px;height:14px;border:1px solid #fff;overflow:hidden;cursor:pointer;margin-bottom:3px;margin-right:3px;}.dhtmlxcolorpicker_dhx_skyblue .cs_CustomColor_Mini{float:left;width:18px;height:18px;border:1px solid #a4bed4;overflow:hidden;cursor:pointer;margin-bottom:3px;margin-right:3px;}.dhtmlxcolorpicker_dhx_skyblue .cs_ButtonOk,.dhtmlxcolorpicker_dhx_skyblue .cs_ButtonOk_Hover{background:url('imgs/__dhxCP_skin_SkyBlue/but_select.gif');border:0;margin:3px 6px 0 0;padding-left:17px;float:right;width:70px;font-family:Tahoma;font-size:11px;height:21px;}.dhtmlxcolorpicker_dhx_skyblue .cs_ButtonOk_Hover{background-position:left bottom;}.dhtmlxcolorpicker_dhx_skyblue .cs_ButtonCancel,.dhtmlxcolorpicker_dhx_skyblue .cs_ButtonCancel_Hover{background:url('imgs/__dhxCP_skin_SkyBlue/but_cancel.gif');border:0;margin:3px 7px 0 0;padding-left:17px;width:72px;float:right;font-family:Tahoma;font-size:11px;height:21px;}.dhtmlxcolorpicker_dhx_skyblue .cs_ButtonCancel_Hover{background-position:left bottom;}.dhtmlxcolorpicker_dhx_skyblue .cs_colorInput{position:absolute;top:0;left:0;}.dhtmlxcolorpicker_dhx_blue .cs_colorBox{position:absolute;top:0;left:0;border:1px solid blue;}.dhtmlxcolorpicker_dhx_skyblue .cs_ButtonsPanel{margin-bottom:8px;}.dhx_combo_img{position:absolute;top:0;right:0;width:18px;height:20px;}.dhx_combo_option_img{position:relative;top:1px;margin:0;margin-left:2px;left:0;width:18px;height:18px;padding:0;}.dhx_combo_input{color:#333;font-family:Arial;font-size:9pt;border:0;padding:2px 2px 2px 2px;position:absolute;top:0;}.dhx_combo_box{position:relative;text-align:left;border:1px solid #7F9DB9;height:20px;_height:22px;overflow:hidden;background-color:white;}.dhx_combo_list{position:absolute;z-index:230;overflow-y:auto;overflow-x:hidden;border:1px solid black;height:100px;font-family:Arial;font-size:9pt;background-color:white;z-index:12000;}.dhx_combo_list div{cursor:default;padding:2px 2px 2px 2px;}.dhx_selected_option{background-color:navy;color:white;}.dhx_combo_img_rtl{position:absolute;top:0;left:1px;width:17px;height:20px;}.dhx_combo_option_img_rtl{float:right;margin-right:0;width:18px;height:18px;}.dhx_combo_list_rtl{direction:rtl;unicode-bidi:bidi-override;position:absolute;z-index:230;overflow-y:auto;overflow-x:hidden;border:1px solid black;height:100px;font-family:Arial;font-size:9pt;background-color:white;}.dhx_combo_list_rtl div{direction:rtl;unicode-bidi:bidi-override;padding:2px 2px 2px 2px;}.dhx_combo_list_rtl div div{float:right!important;cursor:default;}.dhx_combo_list_rtl div img{float:right!important;}.dhx_combo_list_rtl div input{float:right!important;}.dhx_combo_box.dhx_skyblue{border:1px solid #a4bed4;}.dhx_combo_box.dhx_skyblue .dhx_combo_input{font-family:Tahoma;font-size:11px;padding:3px;}.dhx_combo_list.dhx_skyblue_list{background-color:#eaf2fb;border:1px solid #a4bed4;font-family:Tahoma;font-size:11px;}.dhx_combo_list.dhx_skyblue_list div{cursor:default;padding:3px 4px;}.dhx_combo_list_rtl.dhx_skyblue_list{background-color:#eaf2fb;border:1px solid #a4bed4;font-family:Tahoma;font-size:11px;}.combo_dhx_skyblue_sel{background-image:url('imgs/bg_selection.gif')!important;background-position:bottom;background-repeat:repeat-x;color:black;}.dhx_tooltip{display:none;position:absolute;font-family:Tahoma;font-size:8pt;z-index:10000;background-color:white;padding:2px 2px 2px 2px;border:1px solid #A4BED4;}.dhx_noselect{-moz-user-select:none;-moz-user-select:-moz-none;-khtml-user-select:none;}.dhx_allow_selection{-moz-user-select:text;-user-select:text;}.dhx_dataview{overflow-y:auto;overflow-x:hidden;-moz-user-select:none;-moz-user-select:-moz-none;-khtml-select:none;}.dhx_drag_zone{position:absolute;border:1px solid #A4BED4;z-index:8000;-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;}.dhx_dataview_default_item,.dhx_dataview_default_item_selected{cursor:pointer;background-color:white;}.dhx_dataview .dhx_dataview_default_item,.dhx_dataview .dhx_dataview_default_item_selected{border-right:1px solid #A4BED4;border-bottom:1px dotted #A4BED4;}.dhx_dataview_default_item_selected{background-color:#FFBE31;background-image:url(./imgs/dataview/selection_bg.png);background-repeat:repeat-x;}.dhx_dataview_item{font-family:Tahoma;font-size:8pt;color:#000;}.dhx_dataview_item .dhx_strong{font-weight:bold;display:block;padding-bottom:6px;}.dhx_dataview_default_item_selected .dhx_light{color:#C3C3C3;}.dhx_dataview_item .dhx_light{color:#919191;}.dhx_drag_over{background-color:#faf768;background-image:url('./imgs/marker.png');background-repeat:repeat-x;}.dhx_pager_item,.dhx_pager_item_selected{float:left;text-align:center;height:16px;font-family:Tahoma;font-size:10pt;border:1px solid gray;padding:2px 4px;margin-left:5px;cursor:pointer;background-color:white;}.dhx_pager_item_selected{background-color:lightgrey;color:white;cursor:default;font-weight:bold;}.dhxlist_obj_dhx_skyblue div.dhxlist_img{width:18px;height:18px;margin-left:5px;font-size:1px;-moz-user-select:-moz-none;}.dhxlist_obj_dhx_skyblue div.dhxlist_img.chbx0,.dhxlist_obj_dhx_skyblue div.dhxlist_img.chbx1,.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.chbx0,.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.chbx1,.dhxlist_obj_dhx_skyblue div.dhxlist_img.rdbt0,.dhxlist_obj_dhx_skyblue div.dhxlist_img.rdbt1,.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.rdbt0,.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.rdbt1{background-image:url('imgs//dhxform_dhx_skyblue/dhxform_chbxrd.gif');background-repeat:no-repeat;}.dhxlist_obj_dhx_skyblue div.dhxlist_img.chbx0{background-position:-18px 0;}.dhxlist_obj_dhx_skyblue div.dhxlist_img.chbx1{background-position:0 0;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.chbx0{background-position:-54px 0;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.chbx1{background-position:-36px 0;}.dhxlist_obj_dhx_skyblue div.dhxlist_img.rdbt0{background-position:-90px 0;}.dhxlist_obj_dhx_skyblue div.dhxlist_img.rdbt1{background-position:-72px 0;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.rdbt0{background-position:-126px 0;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.rdbt1{background-position:-108px 0;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt{font-family:Tahoma;font-size:inherit;margin:2px 0 2px 5px;color:#000;overflow-x:hidden;-moz-user-select:none;overflow:hidden;white-space:nowrap;}.dhxlist_obj_dhx_skyblue .dhxlist_txt_label label{-moz-user-select:none;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_txt{color:#b2b2b2;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt.align_left{text-align:left;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt.align_center{text-align:center;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt.align_right{text-align:right;}.dhxlist_obj_dhx_skyblue div.item_label_left{clear:both;margin-top:4px;}.dhxlist_obj_dhx_skyblue div.item_label_left div.dhxlist_img{display:inline-block;float:none;}.dhxlist_obj_dhx_skyblue div.item_label_left div.dhxlist_txt{display:inline-block;float:left;}.dhxlist_obj_dhx_skyblue div.item_label_right{clear:both;}.dhxlist_obj_dhx_skyblue div.item_label_right div.dhxlist_img{display:inline-block;float:left;}.dhxlist_obj_dhx_skyblue div.item_label_right div.dhxlist_txt{display:inline-block;float:left;}.dhxlist_obj_dhx_skyblue div.item_label_top div.dhxlist_img{float:none;}.dhxlist_obj_dhx_skyblue div.item_label_top div.dhxlist_txt{float:none;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhxlist_img{position:absolute;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhxlist_txt{position:absolute;}.dhxlist_obj_dhx_skyblue div.item_absolute{position:absolute;left:0;top:0;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt_label{overflow:hidden;white-space:nowrap;font-family:Tahoma;font-size:inherit;color:#000;vertical-align:top;margin:2px 5px 2px 5px;cursor:default;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_txt_label{color:#b2b2b2;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt_label.align_left{text-align:left;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt_label.align_center{text-align:center;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt_label.align_right{text-align:right;}.dhxlist_obj_dhx_skyblue .dhxlist_cont{margin-top:1px;margin-bottom:1px;}.dhxlist_obj_dhx_skyblue .dhxlist_txt_select{border:#a4bed4 1px solid;background-color:#fff;font-family:Tahoma;font-size:inherit;color:#000;margin:0;}.dhxlist_obj_dhx_skyblue div.disabled .dhxlist_txt_select{color:#b2b2b2;background-color:#fff;border:#c2d0dd 1px solid;}.dhxlist_obj_dhx_skyblue input.dhxlist_txt_textarea{padding:1px 0!important;margin:0;}.dhxlist_obj_dhx_skyblue .dhxlist_txt_textarea{border:#a4bed4 1px solid;font-family:Tahoma;font-size:inherit;color:#000;-moz-user-select:text;}.dhxlist_obj_dhx_skyblue div.disabled .dhxlist_txt_textarea{color:#b2b2b2;background-color:#fff;border:#c2d0dd 1px solid;}.dhxlist_obj_dhx_skyblue div.item_label_left div.dhxlist_cont{display:inline-block;float:none;}.dhxlist_obj_dhx_skyblue div.item_label_left div.dhxlist_txt_label{display:inline-block;float:left;}.dhxlist_obj_dhx_skyblue div.item_label_right div.dhxlist_cont{display:inline-block;float:left;}.dhxlist_obj_dhx_skyblue div.item_label_right div.dhxlist_txt_label{display:inline-block;float:none;}.dhxlist_obj_dhx_skyblue div.item_label_top div.dhxlist_cont{float:none;}.dhxlist_obj_dhx_skyblue div.item_label_top div.dhxlist_txt_label{float:none;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhxlist_cont{position:absolute;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhxlist_txt_label{position:absolute;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt_label2{font-family:Tahoma;font-size:inherit;font-weight:bold;color:#256187;margin:5px 3px;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_txt_label2{color:#b2b8bc;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhxlist_txt_label2{position:absolute;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn{font-size:inherit;font-family:Tahoma;height:21px;margin:0 2px;float:left;cursor:default;clear:both;-moz-user-select:none;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table{height:21px;font-size:inherit;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td{text-align:center;vertical-align:middle;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_l{background-image:url('imgs//dhxform_dhx_skyblue/dhxform_btns.gif');background-repeat:no-repeat;background-position:0 0;width:5px;height:21px;font-size:1px;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_l div.btn_l{width:5px;}.dhxlist_obj_dhx_skyblue div.disabled div.dhx_list_btn td.btn_l{background-position:0 -42px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_over td.btn_l{background-position:0 -84px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_pressed td.btn_l{background-position:0 -126px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_m{background-image:url('imgs//dhxform_dhx_skyblue/dhxform_btns.gif');background-repeat:repeat-x;background-position:0 -21px;height:21px;}.dhxlist_obj_dhx_skyblue div.disabled div.dhx_list_btn td.btn_m{background-position:0 -63px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_over td.btn_m,.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.dhx_list_btn_over.btn_m{background-position:0 -105px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_pressed td.btn_m,.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.dhx_list_btn_pressed.btn_m{background-position:0 -147px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_r{background-image:url('imgs//dhxform_dhx_skyblue/dhxform_btns.gif');background-repeat:no-repeat;background-position:-5px 0;width:5px;height:21px;font-size:1px;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_r div.btn_r{width:5px;}.dhxlist_obj_dhx_skyblue div.disabled div.dhx_list_btn td.btn_r{background-position:-5px -42px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_over td.btn_r{background-position:-5px -84px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_pressed td.btn_r{background-position:-5px -126px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_m div.btn_txt{font-size:inherit;font-family:Tahoma;color:#000;padding:1px 20px;overflow:hidden;white-space:nowrap;}.dhxlist_obj_dhx_skyblue div.disabled div.dhx_list_btn td.btn_m div.btn_txt{color:#b2b2b2!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_pressed td.btn_m div.btn_txt{padding-top:2px!important;padding-bottom:0!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn,.dhxlist_obj_dhx_skyblue div.dhx_list_btn:visited,.dhxlist_obj_dhx_skyblue div.dhx_list_btn:active,.dhxlist_obj_dhx_skyblue div.dhx_list_btn:hover{outline:none;text-decoration:none;color:inherit;cursor:default;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn:focus{outline:#30678a 1px dotted;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhx_list_btn{position:absolute;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_m div.multibutton_txt{font-size:inherit;font-family:Tahoma;color:#000;height:21px;line-height:21px;vertical-align:middle;padding:0 20px;overflow:hidden;white-space:nowrap;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_m div.multibutton_txt:focus{outline:#30678a 1px dotted;}.dhxlist_obj_dhx_skyblue div.disabled div.dhx_list_btn td.dhx_list_btn_pressed.btn_m div.multibutton_txt{color:#b2b2b2!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.dhx_list_btn_pressed.btn_m div.multibutton_txt .btn_txt2{padding-top:1px!important;}.dhxlist_obj_dhx_skyblue fieldset.dhxlist_fs{border:#a4bed4 1px solid;margin-top:5px;padding:5px;display:inline;}.dhxlist_obj_dhx_skyblue div.disabled fieldset.dhxlist_fs{border:#c2d0dd 1px solid;}.dhxlist_obj_dhx_skyblue fieldset.dhxlist_fs legend.fs_legend{font-family:Tahoma;color:#256187;font-size:inherit;font-weight:normal;padding:0 4px 1px 4px;text-align:left;}.dhxlist_obj_dhx_skyblue div.disabled fieldset.dhxlist_fs legend.fs_legend{color:#b2b2b2;}.dhxlist_obj_dhx_skyblue div.fs_item_label_left{clear:both;}.dhxlist_obj_dhx_skyblue div.fs_item_label_right{clear:both;}.dhxlist_obj_dhx_skyblue div.fs_item_absolute fieldset.dhxlist_fs{position:absolute;}.dhxlist_obj_dhx_skyblue div.block_item_label_left{clear:both;}.dhxlist_obj_dhx_skyblue div.block_item_label_right{clear:both;}.dhxlist_obj_dhx_skyblue div.block_item_absolute div.dhxlist_block{position:absolute;}.dhxlist_obj_dhx_skyblue_old{position:relative;background-color:#fff;-moz-user-select:-moz-none;}.dhxlist_obj_dhx_skyblue div.dhxlist_base{position:relative;float:left;}.dhxlist_obj_dhx_skyblue div.dhxlist_base_nested{padding:0 20px;clear:both;}.dhxlist_obj_dhx_skyblue div.dhxlist_base_nested.in_block{padding:0 0!important;}.dhxlist_obj_dhx_skyblue span.nav_link,.dhxlist_obj_dhx_skyblue span.nav_link:visited,.dhxlist_obj_dhx_skyblue span.nav_link:active,.dhxlist_obj_dhx_skyblue span.nav_link:hover{outline:none;text-decoration:none;color:inherit;cursor:default;}.dhxlist_obj_dhx_skyblue span.nav_link:focus{color:#30678a;}.dhxlist_obj_dhx_skyblue_old table.dhxlist_items_set{table-layout:fixed;cursor:default;width:100%;font-size:inherit;}.dhxlist_obj_dhx_skyblue_old div.button_container{position:absolute;height:50px;width:100%;bottom:0;}.dhxlist_obj_dhx_skyblue_old th.dhxlist_img_cell{width:26px;}.dhxlist_obj_dhx_skyblue_old th.dhxlist_tbl_head{height:0;margin:0;padding:0;}.dhxlist_obj_dhx_skyblue_old div.dhxlist_img_cell{display:inline-block;width:26px;vertical-align:top;-moz-user-select:-moz-none;}.dhxlist_obj_dhx_skyblue_old div.dhxlist_txt_cell{adisplay:inline-block;vertical-align:top;padding-right:5px;-moz-user-select:-moz-none;}.dhx_form_cover{position:absolute;width:100%;height:100%;background-color:silver;left:0;top:0;display:none;opacity:.2;-moz-opacity:.2;z-index:99999;filter:alpha(opacity=20);}input.dhtmlx_validation_error,select.dhtmlx_validation_error{background-color:#F29FB5;}.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl .dhxlist_txt_cell,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl .dhxlist_txt,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set div.dhxlist_txt_label,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set div.dhxlist_txt_label2,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set .dhxlist_txt_select,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set .dhxlist_txt_select option,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set .dhxlist_txt_textarea,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl div.dhx_list_btn td.btn_m div.btn_txt{direction:rtl;unicode-bidi:bidi-override;}.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set div.dhxlist_img{margin-left:0;margin-right:5px;}.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl td.dhxlist_txt_cell fieldset.dhxlist_fs legend.fs_legend{direction:rtl;unicode-bidi:bidi-override;text-align:right;}.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl div.dhx_list_btn{float:right;}.dhxlist_obj_dhx_skyblue div.disabled .dhx_combo_box.dhx_skyblue{border:1px solid #c2d0dd;}.dhxlist_obj_dhx_skyblue div.disabled .dhx_combo_box.dhx_skyblue .dhx_combo_input{color:#b2b2b2;background-color:#fff;}.dhxlist_obj_dhx_skyblue div.dhxlist_item_template{overflow:hidden;white-space:nowrap;font-family:Tahoma;font-size:inherit;color:#000;vertical-align:top;margin:1px 3px;cursor:default;overflow:hidden;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_item_template{color:#b2b2b2;}.dhxlist_obj_dhx_skyblue div.dhxlist_item_template.dhxeditor_inside{border:1px solid #a4bed4;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_item_template.dhxeditor_inside{border:1px solid #c2d0dd;}.dhxlist_obj_dhx_skyblue div.dhxlist_item_template.dhxeditor_inside div.dhxcont_content_blocker{display:none;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_item_template.dhxeditor_inside div.dhxcont_content_blocker{display:inline;position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fefefe;filter:alpha(opacity=70);-moz-opacity:.7;opacity:.7;}.dhxlist_obj_dhx_skyblue .validate_error .dhxlist_txt_label{color:red;}.dhxlist_obj_dhx_skyblue .validate_error .dhxlist_txt_textarea,.dhxlist_obj_dhx_skyblue .validate_error .dhxlist_txt_select{color:red;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_body_inner .dhxlist_obj_dhx_skyblue{background-color:white;}div.dhtmlx_wins_body_inner .dhxlist_obj_dhx_skyblue div.dhxlist_base,td.dhtmlxLayoutSinglePoly .dhxlist_obj_dhx_skyblue div.dhxlist_base,.dhx_tabcontent_zone .dhxlist_obj_dhx_skyblue div.dhxlist_base,div.dhx_acc_item .dhxlist_obj_dhx_skyblue div.dhxlist_base{margin:10px;}div.dhtmlx_wins_body_inner .dhxlist_obj_dhx_skyblue div.dhxlist_base div.dhxlist_base,td.dhtmlxLayoutSinglePoly .dhxlist_obj_dhx_skyblue div.dhxlist_base div.dhxlist_base,.dhx_tabcontent_zone .dhxlist_obj_dhx_skyblue div.dhxlist_base div.dhxlist_base,div.dhx_acc_item .dhxlist_obj_dhx_skyblue div.dhxlist_base div.dhxlist_base{margin:0!important;}div.gridbox{overflow:hidden;text-align:left;}.dhx_sub_row{background-color:white;}div.gridbox .xhdr{background-color:#D4D0C8;}div.gridbox table.obj{height:1px;}div.gridbox table.hdr td{line-height:normal;font-family:arial;font-size:12px;background-Color:#D4D0C8;border:1px solid;border-color:white Gray Gray white;text-align:center;margin:0;padding:5px 0 5px 0;font-weight:normal;-moz-user-select:none;-moz-user-select:-moz-none;overflow:hidden;empty-cells:show;}div.gridbox table.hdr td div.hdrcell{overflow:hidden;}div.gridbox table.obj td{border:1px solid;border-color:white Gray Gray white;font-family:Arial;font-size:12px;-moz-user-select:none;-moz-user-select:-moz-none;overflow:hidden;padding-top:0;padding-bottom:0;empty-cells:show;}div.gridbox table.obj th,div.gridbox table.hdr th{padding:0;margin:0;}div.gridbox table.row20px tr td{height:20px;white-space:nowrap;padding:0;}div.gridbox .objbox{background-color:white;position:relative;}div.gridbox table.obj td span.space,div.gridbox table.obj td img.space{width:18px;}div.gridbox table.obj tr.rowselected td.cellselected,div.gridbox table.obj td.cellselected{background-color:#d8d8d8;color:black;}div.gridbox table.obj tr.rowselected td{background-color:#e1e0d7;color:black;}div.gridbox table.obj td.editable{-moz-user-select:text;}div.gridbox table.obj td.group_row{vertical-align:middle;font-family:Tahoma;font-size:10pt;font-weight:bold;height:30px;border:0;border-bottom:2px solid navy;}.dragSpanDiv{font-size:12px;border:1px gray solid;background-color:white;z-index:999;}.dhx_combo_select{font-family:arial;font-size:12px;border:1px solid;border-color:black silver silver black;background-color:white;overflow:hidden;cursor:default;position:absolute;height:auto;z-index:600;}.dhx_combo_edit{width:100%;border:0;padding:0;padding-right:1px!ie;margin:0;font:12px arial;overflow:hidden;}.dhx_textarea{border:1px solid;border-color:black silver silver black;position:absolute;height:100px;z-index:600;}.dhx_clist{background-color:white;border:1px solid black;padding:2px 2px 2px 2px;z-index:300;}.gridDragLine{position:absolute;top:10px;left:0;width:100%;height:2px;background-color:black;overflow:hidden;}div.pagingBlock{font-size:12px;font-family:verdana,arial;}div.pagingBlock .pagingCurrentPage{font-weight:bold;cursor:default;}div.pagingBlock .pagingPage{cursor:pointer;text-decoration:underline;}span.recordsInfoBlock{font-size:12px;font-family:verdana,arial;}div.pagingBlock a{text-decoration:none;padding-right:2px;color:black;cursor:pointer;}div.pagingBlock a.dhx_not_active{text-decoration:none;cursor:default;}.toolbar_select{font-size:10px;}.dhtmlxGrid_selection{-moz-opacity:.5;filter:alpha(opacity = 50);background-color:yellow;opacity:.5;border:1px dotted black;}div.gridbox_xp{border:1px solid lightgrey;}div.gridbox_xp .xhdr{background-image:url('imgs/header_bg_60.gif');}div.gridbox_xp table.hdr td{color:#616161;background-image:url('imgs/header_bg_60.gif');border:0;text-align:center;margin:0;padding:5px 0 5px 0;font-weight:bold;-moz-user-select:none;-moz-user-select:-moz-none;overflow:hidden;}div.gridbox_xp table.hdr td div.hdrcell{border-left:1px solid white;border-right:1px solid gray;height:16px;white-space:nowrap;font-family:Arial;font-size:12px;}div.gridbox_xp table.obj td{border:0;border-bottom:1px solid lightgrey;border-right:1px solid lightgrey;font-family:Arial;font-size:12px;-moz-user-select:none;-moz-user-select:-moz-none;overflow:hidden;padding-top:0;padding-bottom:0;}div.gridbox_xp table.obj tr.rowselected td{background-color:whitesmoke;color:black;}div.gridbox_xp table.obj tr.rowselected td.cellselected,div.gridbox_xp table.obj td.cellselected{background-color:whitesmoke;}div.gridbox_xp table.row20px tr td{height:22px;white-space:nowrap;padding:1px;}div.gridbox_gray{border:1px solid gray;background-color:#D4D0C8;}div.gridbox_mt{border:1px solid lightgrey;}div.gridbox_mt .dhx_sub_row{background-color:transparent;}div.gridbox_mt .xhdr{background-image:url('imgs/header_bg.gif');}div.gridbox_mt .xhdr_last{border:0;border-bottom:1px solid lightgrey;border-left:1px solid lightgrey;}div.gridbox_mt table.hdr td{color:#616161;border:0;border-bottom:1px solid lightgrey;border-left:1px solid lightgrey;text-align:center;margin:0;background-image:url('imgs/header_bg.gif');padding:0;-moz-user-select:none;-moz-user-select:-moz-none;overflow:hidden;}div.gridbox_mt table.hdr td div.hdrcell{height:16px;white-space:nowrap;font-family:Verdana;font-size:12px;}div.gridbox_mt table.obj td{border:0;border-bottom:1px solid lightgrey;border-right:0 solid lightgrey;font-family:Verdana;font-size:12px;-moz-user-select:none;-moz-user-select:-moz-none;overflow:hidden;padding-top:0;padding-bottom:0;}div.gridbox_mt table.obj tr.rowselected td{background-color:#D6D3FA;color:black;}div.gridbox_mt table.obj tr.rowselected td.cellselected,div.gridbox_mt table.obj td.cellselected{background-color:#D6D3FA;}div.gridbox_mt table.row20px tr td{height:22px;white-space:nowrap;padding:1px;}div.gridbox div.ftr{position:absolute;left:0;bottom:1px;width:100%;overflow:hidden;}div.gridbox div.ftr td{padding:0;padding-left:10px;padding-right:5px;border-top:1px solid gray;border-right:1px solid gray;background-color:#ffc;font-style:italic;font-family:arial;font-size:12px;overflow:hidden;}div.gridbox table.hdr td.columnTargetR div.hdrcell{border-right:3px double #F60;border-left:3px solid #D4D0C8;}div.gridbox table.hdr td.columnTargetL div.hdrcell{border-right:3px solid #D4D0C8;border-left:3px double #F60;}.dhx_dragColDiv{font-family:Arial;font-size:12px;background-color:#D4D0C8;border:1px solid;border-color:white Gray Gray white;text-align:center;margin:0;padding:5px 20px 5px 20px;font-weight:normal;filter:alpha(opacity:75);-moz-opacity:.75;opacity:.75;}div.gridbox_light{border:1px solid #c2d5dc;}div.gridbox_light .xhdr{background-image:url(imgs/skin_light_header.png);}div.gridbox_light .xhdr_last{border:1px solid;border-color:#FDFDFD #93AFBA #93AFBA #FDFDFD;}div.gridbox_light table.hdr{background-image:url(imgs/skin_light_header.png);}div.gridbox_light table.hdr td{border:1px solid;border-color:#FDFDFD #93AFBA #93AFBA #FDFDFD;background-color:transparent;font-family:Tahoma;font-size:11px;font-weight:bold;color:#055A78;vertical-align:top;text-align:left;}div.gridbox_light table.hdr td div.hdrcell{width:auto;padding-left:10px;}div.gridbox_light table.hdr .filter{padding-left:0!important;text-align:center;-moz-user-select:text;}div.gridbox_light table.obj td{border-width:0 1px 0 1px;border-left:1px solid white;border-right:1px solid #D6D6D6;font-family:Tahoma;font-size:11px;padding-right:4px;padding-left:4px;}div.gridbox_light table.obj{border-bottom:1px solid #D6D6D6;}div.gridbox_light table.row20px tr td{padding-right:4px;padding-left:4px;}div.gridbox_light .dhx_combo_edit{font-family:Tahoma;font-size:11px;}div.gridbox_light table.obj tr.rowselected td{background-color:#ededed;color:black;}div.gridbox_light table.obj tr.rowselected td.cellselected,div.gridbox_light table.obj td.cellselected{background-color:#ededed;}div.gridbox_light .odd_light{background-color:#E5F2F8;}div.gridbox_light div.ftr td{empty-cells:show;}div.gridbox_modern{border:1px solid #D6D6D6;}div.gridbox_modern .dhx_sub_row{background-color:transparent;}div.gridbox_modern .xhdr{background-image:url(imgs/skin_modern_header.png);}div.gridbox_modern .xhdr_last{border:1px solid;border-color:#FDFDFD #B5B5B5 #B5B5B5 #FDFDFD;}div.gridbox_modern table.hdr{background-image:url(imgs/skin_modern_header.png);}div.gridbox_modern table.hdr td{border-right:1px solid #B5B5B5;border-left:1px solid #FDFDFD;border-top:1px solid #FDFDFD;border-bottom:1px solid #B5B5B5;background-color:transparent;font-family:Tahoma;font-size:11px;font-weight:bold;color:#055A78;vertical-align:top;text-align:left;}div.gridbox_modern table.hdr td div.hdrcell{width:auto;padding-left:10px;}div.gridbox_modern table.hdr .filter{padding-left:0!important;text-align:center;}div.gridbox_modern table.obj td{border:0 solid;font-family:Tahoma;font-size:11px;padding-right:4px;padding-left:4px;}div.gridbox_modern table.row20px tr td{padding-right:4px;padding-left:4px;}div.gridbox_modern .dhx_combo_edit{font-family:Tahoma;font-size:11px;}div.gridbox_modern table.obj tr.rowselected td{background-color:#9ac2e5;color:black;}div.gridbox_modern table.obj tr.rowselected td.cellselected,div.gridbox_modern table.obj td.cellselected{background-color:#9ac2e5;}div.gridbox_modern .odd_modern{background-color:#EDEDED;}div.gridbox_modern div.ftr td{padding:0;padding-left:10px;padding-right:5px;border-top:0 solid gray;border-right:0 solid gray;background-color:#ffc;font-style:italic;font-family:arial;font-size:12px;}div.gridbox_clear .xhdr{background-color:transparent;}div.gridbox_clear div.topMumba{position:absolute;left:0;width:100%;height:3px;background-image:url(imgs/skinC_header.png);overflow:hidden;padding:0;margin:0;}div.gridbox_clear div.bottomMumba{position:absolute;left:0;width:100%;height:3px;background-image:url(imgs/skinD_header.png);overflow:hidden;}div.gridbox_clear div.bottomMumba img,div.gridbox_clear div.topMumba img{border:0;position:absolute;top:0;}div.gridbox_clear{padding-left:10px;padding-right:10px;}div.gridbox_clear table.hdr td{border:0;background-color:transparent;font-family:Tahoma;font-size:11px;font-weight:bold;color:#055A78;vertical-align:top;text-align:left;}div.gridbox_clear table.hdr td div.hdrcell{width:auto;padding-left:10px;padding-bottom:2px;}div.gridbox_clear table.hdr .filter{padding-left:0!important;text-align:center;}div.gridbox_clear table.obj td{border-width:0 1px 0 0;border-color:#D6D6D6;font-family:Tahoma;font-size:11px;padding-right:4px;padding-left:4px;}div.gridbox_clear table.row20px tr td{padding-right:4px;padding-left:4px;}div.gridbox_clear .dhx_combo_edit{font-family:Tahoma;font-size:11px;}div.gridbox_clear .odd_clear{background-color:#E5F2F8;}div.gridbox_clear div.ftr td{padding:0;padding-left:10px;padding-right:5px;border-top:1px solid gray;border-right:0 solid gray;background-color:#ffc;font-style:italic;font-family:arial;font-size:12px;}div.gridbox_sbdark .objbox{background:#313131!important;}div.gridbox_sbdark .xhdr{background-color:#313131;}div.gridbox_sbdark .xhdr_last{border:1px solid;border-color:#474948 #202220 #202220 #202220;}div.gridbox_sbdark{background:#313131!important;}div.gridbox_sbdark table{border-collapse:collapse;}div.gridbox_sbdark table.hdr tr{border-top:1px solid #202220;}div.gridbox_sbdark table.hdr,div.gridbox_sbdark table.hdr td{border-right:1px solid #202220;border-left:1px solid #202220;border-top:1px solid #474948;border-bottom:1px solid #202220;background-color:#313131;font-size:11px;color:#8A8F84;vertical-align:top;text-align:left;padding:2px 5px;}div.gridbox_sbdark .hdrcell{padding-left:0!important;font-family:'Lucida Sans Unicode','Tahoma';}div.gridbox_sbdark table.hdr td div.hdrcell{width:auto;padding-left:10px;}div.gridbox_sbdark table.obj td{border-width:0 1px 0 1px;border-left:1px solid #202220;border-right:1px solid #EDF3F0;font-family:'Consolas','Lucida Sans Unicode','Tahoma';font-size:11px;}div.gridbox_sbdark table.row20px tr td{padding:0 5px!important;text-indent:1px;}div.gridbox_sbdark .dhx_combo_edit{font-family:'Lucida Sans Unicode','Tahoma';font-size:11px;}div.gridbox_sbdark table.obj tr.rowselected td,div.gridbox_sbdark table.obj tr:hover,div.gridbox_sbdark .odd_light:hover{background-color:#8A8F84;color:white!important;}div.gridbox_sbdark table.obj tr.rowselected td.cellselected,div.gridbox_sbdark table.obj td.cellselected{background-color:#8A8F84;}div.gridbox_sbdark .cellselected{background-color:#6e6f64!important;}div.gridbox_sbdark .ev_sbdark{background-color:#FFF;}div.gridbox_sbdark .odd_sbdark{background-color:#EDF3F0;}.dhtmlx_live_validation_error{background-color:#FFE0E0!important;}.dhtmlx_validation_error{border-bottom:2px solid red!important;}.dhx_header_cmenu{background-color:#fff;border:2px outset silver;z-index:2;}.dhx_header_cmenu_item{white-space:nowrap;}div.gridbox_dhx_skyblue div.ftr td{text-align:right;background-image:url(./imgs/sky_blue_grid.gif);border-color:#A4BED4;}div.dhtmlxLayoutObject{position:absolute;overflow:hidden;width:100%;height:100%;}.dhxCursorWResize{cursor:w-resize;}.dhxCursorNResize{cursor:n-resize;}div.dhxcont_global_layout_area{position:absolute;left:0;top:0;overflow:hidden;}div.dhxcont_content_blocker{position:absolute;left:0;top:0;width:101%;height:101%;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;background:#FFF;z-index:1;-moz-user-select:none;}div.dhxlayout_skin_detect{position:absolute;height:1px;margin:0;padding:0;}.dhtmlxSlider{position:relative;overflow:hidden;height:14px;left:10px;}.dhtmlxSlider .selector{position:absolute;overflow:hidden;height:100%;width:31px;left:5px;}.dhtmlxSlider .leftSide{position:absolute;left:0;top:0;width:3px;height:100%;}.dhtmlxSlider .leftZone{position:absolute;top:0;left:3px;height:100%;}.dhtmlxSlider .rightSide{position:absolute;right:0;top:0;width:3px;height:100%;}.dhtmlxSlider .rightZone{position:absolute;left:3px;top:0;height:100%;}.dhtmlxSlider_ball{position:relative;overflow:hidden;height:16px;left:10px;}.dhtmlxSlider_ball .selector{position:absolute;overflow:hidden;height:100%;width:16px;left:5px;}.dhtmlxSlider_ball .leftSide{position:absolute;left:0;top:0;width:3px;height:100%;}.dhtmlxSlider_ball .leftZone{position:absolute;top:0;left:3px;height:100%;}.dhtmlxSlider_ball .rightSide{position:absolute;right:0;top:0;width:4px;height:100%;}.dhtmlxSlider_ball .rightZone{position:absolute;left:3px;top:0;height:100%;}.dhtmlxSlider_zipper{position:relative;overflow:hidden;height:17px;left:10px;}.dhtmlxSlider_zipper .selector{position:absolute;overflow:hidden;height:100%;width:17px;left:0;}.dhtmlxSlider_zipper .leftSide{position:absolute;left:0;top:0;width:3px;height:100%;}.dhtmlxSlider_zipper .leftZone{position:absolute;top:0;left:0;height:100%;}.dhtmlxSlider_zipper .rightSide{position:absolute;right:0;top:0;width:4px;height:100%;}.dhtmlxSlider_zipper .rightZone{position:absolute;left:3px;top:0;height:100%;}.dhtmlxSlider_simplesilver{position:relative;overflow:hidden;height:16px;left:10px;}.dhtmlxSlider_simplesilver .selector{position:absolute;overflow:hidden;height:100%;width:15px;left:0;}.dhtmlxSlider_simplesilver .leftSide{position:absolute;left:0;top:0;width:1px;height:100%;}.dhtmlxSlider_simplesilver .leftZone{position:absolute;top:0;left:1px;height:100%;}.dhtmlxSlider_simplesilver .rightSide{position:absolute;right:0;top:0;width:1px;height:100%;}.dhtmlxSlider_simplesilver .rightZone{position:absolute;left:3px;top:0;height:100%;}.dhtmlxSlider_simplegray{position:relative;overflow:hidden;height:16px;left:10px;}.dhtmlxSlider_simplegray .selector{position:absolute;overflow:hidden;height:100%;width:15px;left:0;}.dhtmlxSlider_simplegray .leftSide{position:absolute;left:0;top:0;width:1px;height:100%;}.dhtmlxSlider_simplegray .leftZone{position:absolute;top:0;left:1px;height:100%;}.dhtmlxSlider_simplegray .rightSide{position:absolute;right:0;top:0;width:1px;height:100%;}.dhtmlxSlider_simplegray .rightZone{position:absolute;left:3px;top:0;height:100%;}.dhtmlxSlider_bar{position:relative;overflow:hidden;height:21px;left:10px;}.dhtmlxSlider_bar .selector{position:absolute;overflow:hidden;height:100%;width:15px;left:17px;}.dhtmlxSlider_bar .leftSide{position:absolute;left:0;top:0;width:17px;height:100%;}.dhtmlxSlider_bar .leftZone{position:absolute;top:0;left:1px;height:100%;}.dhtmlxSlider_bar .rightSide{position:absolute;right:0;top:0;width:17px;height:100%;}.dhtmlxSlider_bar .rightZone{position:absolute;left:3px;top:0;height:100%;}.dhtmlxSlider_arrow{position:relative;overflow:hidden;height:14px;left:10px;}.dhtmlxSlider_arrow .selector{position:absolute;overflow:hidden;height:100%;width:7px;left:1px;}.dhtmlxSlider_arrow .leftSide{position:absolute;left:0;top:0;width:1px;height:100%;}.dhtmlxSlider_arrow .leftZone{position:absolute;top:0;left:1px;height:100%;}.dhtmlxSlider_arrow .rightSide{position:absolute;right:0;top:0;width:1px;height:100%;}.dhtmlxSlider_arrow .rightZone{position:absolute;left:1px;top:0;height:100%;}.dhtmlxSlider_arrowgreen{position:relative;overflow:hidden;height:21px;left:10px;}.dhtmlxSlider_arrowgreen .selector{position:absolute;overflow:hidden;height:100%;width:11px;left:1px;}.dhtmlxSlider_arrowgreen .leftSide{position:absolute;left:0;top:0;width:1px;height:100%;}.dhtmlxSlider_arrowgreen .leftZone{position:absolute;top:0;left:1px;height:100%;}.dhtmlxSlider_arrowgreen .rightSide{position:absolute;right:0;top:0;width:1px;height:100%;}.dhtmlxSlider_arrowgreen .rightZone{position:absolute;left:1px;top:0;height:100%;}.dhtmlxSlider_dhx_skyblue{position:relative;overflow:hidden;height:15px;left:10px;}.dhtmlxSlider_dhx_skyblue .selector{position:absolute;overflow:hidden;height:15px;width:15px;left:0;}.dhtmlxSlider_dhx_skyblue .leftSide{position:absolute;left:0;top:0;width:0;height:100%;}.dhtmlxSlider_dhx_skyblue .leftZone{position:absolute;top:0;left:0;height:100%;}.dhtmlxSlider_dhx_skyblue .rightSide{position:absolute;right:0;top:0;width:0;height:100%;}.dhtmlxSlider_dhx_skyblue .rightZone{position:absolute;left:3px;top:0;height:100%;}.dhx_tabbar_zone_top{position:relative;}.dhx_tabbar_zone,.dhx_tabbar_zoneB,.dhx_tabbar_zoneV,.dhx_tabbar_zoneVB{position:relative;width:100%;height:100%;overflow:hidden;z-index:1;}.dhx_tablist_line{height:1px;width:1px;background-color:#91A7B4;position:absolute;overflow:hidden;}.dhx_tabbar_row,.dhx_tablist_zone,.dhx_tabcontent_zone,.dhx_tab_element{width:100%;height:100%;overflow:hidden;position:absolute;}.dhx_tablist_zone{z-index:3;overflow:hidden;}.dhx_tabcontent_zone{border:1px solid #91A7B4;z-index:2;}.dhx_tabbar_zone_top .dhx_tab_element{padding-top:3px;}.dhx_tab_element span{white-space:nowrap;}.dhx_tab_element{cursor:pointer;text-align:center;font-family:Tahoma;font-size:8pt;background-color:white;}.dhx_tabbar_zoneV .dhx_tab_element{padding:0 0 0 3px;text-align:left;}.dhx_tabbar_zoneVB .dhx_tab_element{padding:0 3px 0 0;text-align:right;}.dhx_tab_element div{height:40px;width:40px;position:absolute;overflow:hidden;}.dhx_tab_element span{position:relative;z-index:10;}.dhx_tabbar_zone_dhx_blue .dhx_tablist_line{background-color:#C2D5DC;}.dhx_tabbar_zone_dhx_blue .dhx_tabcontent_zone{border-color:#D2E3EA;}.dhx_tabbar_zone_dhx_blue .dhx_tab_element{color:#069;}.dhx_tab_element_active{font-weight:bold;}.dhx_tabbar_zone_dark_blue .dhx_tab_element,.dhx_tabbar_zone_dhx_black .dhx_tab_element{color:white;}.dhx_tabbar_zone_dhx_black .dhx_tablist_line{background-color:#626262;}.dhx_tabbar_zone_dhx_black .dhx_tabcontent_zone{border-color:#333;}.dhx_tabbar_zone_dhx_web .dhx_tabbar_row{background-color:#646464;}.dhx_tabbar_zone_dhx_web .dhx_tab_element span{top:4px;font-weight:normal!important;font-size:12px;}.dhx_tabbar_zone_dhx_web .dhx_tablist_line{display:none;}.dhx_tabbar_zone_dhx_web .dhx_tabcontent_zone{background-color:#646464!important;border:none!important;}.dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_row{background-image:url(./imgs/dhx_skyblue/bg_top.png);border-right:1px solid #B6CBDD;border-left:1px solid #B6CBDD;}.dhx_tabbar_zone_dhx_blue .dhx_tabbar_row{background-color:#D2E3EA;}.dhx_tabbar_zone_dhx_black .dhx_tabbar_row{background-color:black;}.dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineA{position:absolute;left:0;width:1px;height:3px;background-color:white;z-index:999;border-left:1px solid #A4BED4;border-right:1px solid #A4BED4;overflow:hidden;}.dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineB{position:absolute;left:2px;width:100px;height:3px;background-color:#D0E5FF;z-index:999;overflow:hidden;}.dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineC{position:absolute;right:0;width:1px;height:21px;background-color:white;z-index:999;overflow:hidden;border-right:1px solid #A4BED4;}.dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineD{position:absolute;left:1px;width:1px;height:21px;background-color:white;z-index:999;overflow:hidden;}.dhx_tabbar_zone_top .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineD{top:1px;}.dhx_tabbar_zone_top .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineC{top:1px;}.dhx_tabbar_zone_bottom .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineD{bottom:1px;}.dhx_tabbar_zone_bottom .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineC{bottom:1px;}.dhx_tabbar_zone_bottom .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_row{background-image:url(./imgs/dhx_skyblue/bg_bottom.png);background-position:bottom;}.dhx_tabbar_zone_bottom .dhx_tabbar_zone_dhx_skyblue .dhx_tablist_line{border-width:0 1px 1px 0;}.dhx_tabbar_zone_bottom .dhx_tab_element span{padding-top:5px;display:block;}.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineB{width:3px;left:auto;top:2px;}.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineA{width:3px;border:1px solid #A4BED4;border-width:1px 0 1px 0;}.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineD{height:1px;width:21px;right:auto;bottom:0;left:1px;border:1px solid #A4BED4;border-width:0 0 1px 0;}.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineC{height:1px;width:21px;right:auto;top:1px;left:1px;}.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_row{background-image:url(./imgs/dhx_skyblue/bg_left.png);border:1px solid #B6CBDD;border-width:1px 0 1px 0;}.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tablist_line{border-width:0 0 1px 1px;width:2px!ie;}.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tab_element{padding-top:0;}.dhx_tabbar_zone_left .dhx_tabbar_zone_dhx_skyblue .dhx_tab_element span{padding-top:5px;display:block;}.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineA{left:auto;width:3px;border:1px solid #A4BED4;border-width:1px 0 1px 0;}.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineB{width:3px;left:auto;top:2px;}.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineD{height:1px;width:21px;left:auto;bottom:0;right:1px;border:1px solid #A4BED4;border-width:0 0 1px 0;}.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_lineC{height:1px;width:21px;left:auto;top:1px;right:0;}.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tabbar_row{background-image:url(./imgs/dhx_skyblue/bg_right.png);background-position:right;border:1px solid #B6CBDD;border-width:1px 0 1px 0;}.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tablist_line{border-width:0 1px 1px 0;width:2px!ie;}.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tab_element{padding-top:0;}.dhx_tabbar_zone_right .dhx_tabbar_zone_dhx_skyblue .dhx_tab_element span{padding-top:5px;display:block;}.dhx_tabbar_zone_dhx_skyblue .dhx_tablist_line{height:3px;border:1px solid #A4BED4;background-color:white;border-width:1px 1px 0 0;}.dhx_tabbar_zone_dhx_skyblue .dhx_tabcontent_zone{border-color:#A4BED4;}div.dhxcont_main_content{position:relative;left:0;top:0;overflow:hidden;}div.dhxcont_content_blocker{position:absolute;left:0;top:0;width:101%;height:101%;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;background:#FFF;z-index:1;-moz-user-select:none;}div.dhx_tabbar_zone_dhx_skyblue div.dhxcont_sb_container{position:relative;height:24px;}div.dhx_tabbar_zone_dhx_skyblue div.dhxcont_sb_container div.dhxcont_statusbar{background-image:url('./imgs/dhx_skyblue/dhxlayout_bg_sb.gif');position:relative;top:2px;height:22px;line-height:22px;background-repeat:repeat-x;width:auto;padding:0 4px;overflow:hidden;white-space:nowrap;border-top:none;border-bottom:none;border-left:#a4bed4 0 solid;border-right:#a4bed4 0 solid;font-family:Tahoma;font-size:11px;vertical-align:middle;color:#000;}div.dhx_tabbar_zone_dhx_web div.dhxcont_sb_container{position:relative;height:41px;}div.dhx_tabbar_zone_dhx_web div.dhxcont_sb_container div.dhxcont_statusbar{position:relative;top:9px;height:32px;line-height:32px;background-color:#ececec;width:auto;padding:0 12px;overflow:hidden;white-space:nowrap;font-family:'Trebuchet MS';font-size:14px;vertical-align:middle;color:#666;}.dhx_tabbar_zone_dhx_web div.dhxcont_global_content_area{position:absolute;overflow:hidden;background-color:#FFF;}.dhx_tabbar_zone_dhx_web div.dhxcont_global_content_area.dhxcont_tabbar_dhx_web{border:white 8px solid;}.defaultTreeTable{margin:0;padding:0;border:0;}.containerTableStyle{overflow:auto;position:relative;top:0;font-size:12px;-khtml-user-select:none;}.containerTableStyleRTL span{direction:rtl;unicode-bidi:bidi-override;}.containerTableStyleRTL{direction:rtl;overflow:auto;position:relative;top:0;font-size:12px;}.standartTreeRow{font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;-moz-user-select:none;}.selectedTreeRow{background-color:navy;color:white;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;-moz-user-select:none;}.dragAndDropRow{background-color:navy;color:white;}.standartTreeRow_lor{text-decoration:underline;background-color:#FFFFF0;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;-moz-user-select:none;}.selectedTreeRow_lor{text-decoration:underline;background-color:navy;color:white;font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;-moz-user-select:none;}.standartTreeImage{width:18px;height:18px;overflow:hidden;border:0;padding:0;margin:0;font-size:1px;}.hiddenRow{width:1px;overflow:hidden;}.dragSpanDiv,.dragSpanDiv td{font-size:12px;background-color:white;z-index:999;}.a_dhx_hidden_input{position:absolute;top:-1px;left:-1px;width:1px;height:1px;border:none;background:none;}.a_dhx_hidden_input{position:absolute;top:-1px;left:-1px;width:1px;height:1px;border:none;background:none;}.selectionBox{background-color:#FFC;}.selectionBar{top:0;background-color:Black;position:absolute;overflow:hidden;height:2px;z-index:11;}.intreeeditRow{font-size:8pt;height:16px;border:1px solid silver;padding:0;margin:0;margin-left:4px;-moz-user-select:text;-khtml-user-select:text;}.dhx_tree_textSign{font-size:8pt;font-family:monospace;width:21px;color:black;padding:0;margin:0;cursor:pointer;text-align:center;}.dhx_tree_opacity{opacity:0;-moz-opacity:0;filter:alpha(opacity=0);}.dhx_bg_img_fix{width:18px;height:18px;background-repeat:no-repeat;background-position:center;background-position-x:center;background-position-y:center;}.dhxtree_dhx_black,.dhxtree_dhx_skyblue{background:white;color:black;}*html .dhxtree_dhx_skyblue .standartTreeRow,*html .dhxtree_dhx_skyblue .standartTreeRow_lor{border-right:0 solid red;border-left:0 solid red;}*html .dhxtree_dhx_skyblue span.standartTreeRow,*html .dhxtree_dhx_skyblue span.standartTreeRow_lor{margin-left:1px;}.dhxtree_dhx_skyblue .standartTreeRow,.dhxtree_dhx_skyblue .standartTreeRow_lor{border-right:1px solid transparent;border-left:1px solid transparent;font-family:Tahoma;font-size:11px!important;overflow:hidden;padding:0;}.dhxtree_dhx_skyblue .selectedTreeRow_lor,.dhxtree_dhx_skyblue .selectedTreeRow{background-color:white;background-image:url(imgs/sky_blue_sel_tree.png);background-repeat:repeat-x;border:1px solid #FFB951;color:black;line-height:17px;font-size:11px!important;font-family:Tahoma;overflow:hidden;}html>body .dhxtree_dhx_skyblue .selectedTreeRow,html>body .dhxtree_dhx_skyblue .selectedTreeRow_lor{padding:1px 0 1px 0;line-height:normal;display:inline-block!ie;height:13px;}body:nth-of-type(1) .dhxtree_dhx_skyblue span.selectedTreeRow,body:nth-of-type(1) .dhxtree_dhx_skyblue span.selectedTreeRow_lor{padding:1px 0 1px 0;display:inline-block;padding-top:0;height:13px;}body:nth-of-type(1) .dhxtree_dhx_skyblue span.standartTreeRow,body:nth-of-type(1) .dhxtree_dhx_skyblue span.standartTreeRow_lor{display:inline-block;height:14px;}.dhxtree_dhx_web .selectedTreeRow_lor,.dhxtree_dhx_web .selectedTreeRow{background-color:transparent;}.dhxtree_dhx_web span.selectedTreeRow_lor,.dhxtree_dhx_web span.selectedTreeRow{background-color:#ACDAF0;color:black;}.dhxtree_dhx_web td.standartTreeRow,.dhxtree_dhx_web td.selectedTreeRow{padding-left:2px;}.dhxtree_dhx_web span.standartTreeRow,.dhxtree_dhx_web span.selectedTreeRow{padding-left:3px!important;}.dhxtree_dhx_web .standartTreeRow,.dhxtree_dhx_web .standartTreeRow,.dhxtree_dhx_web .selectedTreeRow_lor,.dhxtree_dhx_web .selectedTreeRow{font-size:12px;font-family:Tahoma;overflow:hidden;}div.dhtmlx_winviewport{position:absolute;overflow:hidden;}div.dhtmlx_window_active{position:absolute;overflow:hidden;}div.dhtmlx_window_inactive{position:absolute;overflow:hidden;}div.dhx_content_cover_blocker{position:absolute;width:100%;height:100%;top:0;left:0;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;background:#FFF;}iframe.dhx_modal_cover_ifr{position:absolute;left:0;top:0;width:100%;height:100%;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;background-color:#FFF;}div.dhx_modal_cover_dv{position:absolute;left:0;top:0;width:100%;height:100%;border:none;filter:alpha(opacity=50);-moz-opacity:.5;opacity:.5;background-color:#EEE;}iframe.dhx_ie6_wincover_forsel{position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;filter:alpha(opacity=0);background-color:#FFF;z-index:-1;}div.dhx_carcass_resmove{position:absolute;filter:alpha(opacity=50);-moz-opacity:.5;opacity:.5;background-color:#E0E0E0;border:#909090 1px solid;}div.dhx_content_vp_cover{position:absolute;left:0;top:0;width:100%;height:100%;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;background-color:#FFF;}iframe.dhtmlx_wins_ie6_cover_fix{position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden;filter:alpha(opacity=0);background-color:#FFF;}div.dhxcont_content_blocker{position:absolute;left:0;top:0;width:101%;height:101%;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;background:#FFF;z-index:1;-moz-user-select:none;}div.dhx_acc_base_dhx_skyblue{overflow:hidden;}.dhxacc_fullscreened{width:100%;height:100%;margin:0;background-color:#ebebeb;overflow:hidden;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item{position:relative;overflow:hidden;width:100%;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item div.dhx_acc_hdr_line_l{position:absolute;left:0;top:1px;height:25px;border-left:#fff 1px solid;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item div.dhx_acc_hdr_line_r{position:absolute;right:0;top:1px;height:25px;border-right:#fff 1px solid;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item_hidden{display:none;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item div.dhx_acc_item_label{position:relative;color:#000;font-family:Tahoma;font-size:11px;font-weight:bold;height:27px;line-height:27px;border-left:#a4bed4 1px solid;border-right:#a4bed4 1px solid;vertical-align:middle;overflow:hidden;background-image:url('imgs//dhxaccord_dhx_skyblue/dhxacc_bg_normal.gif');background-position:top;background-repeat:repeat-x;-moz-user-select:none;cursor:default;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item div.dhx_acc_item_label span{margin:0 4px;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item_lavel_hover{background-image:url('imgs//dhxaccord_dhx_skyblue/dhxacc_bg_hover.gif')!important;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item div.dhx_acc_item_label div.dhx_acc_item_label_btmbrd{display:none;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item div.dhx_acc_item_label img.dhx_acc_item_icon{position:absolute;width:16px;height:16px;left:4px;top:5px;}.dhtmlxAccordionAttached{border:none!important;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item div.dhx_tabbar_row{background-color:#D2E3EA;}div.dhx_acc_base_dhx_skyblue div.dhxcont_statusbar{position:absolute;width:100%;bottom:0;_bottom:-1px;border-top:#c2d5dc 1px solid;background-image:url('imgs//dhxaccord_dhx_skyblue/dhxacc_bg_sb.gif');background-position:top;background-repeat:repeat-x;width:100%;overflow:hidden;font-family:Tahoma;font-size:11px;vertical-align:middle;line-height:19px;-moz-user-select:none;cursor:default;padding-left:4px;color:#7393ae;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item div.dhxcont_global_content_area{position:absolute;border:#a4bed4 1px solid;background-color:#FFF;overflow:hidden;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item div.dhx_acc_item_arrow{position:absolute;width:16px;height:16px;right:4px;top:6px;background-image:url('imgs//dhxaccord_dhx_skyblue/dhxacc_btns.gif');background-repeat:no-repeat;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item_arrow.item_opened{background-position:0 0;}div.dhx_acc_base_dhx_skyblue div.dhx_acc_item_arrow.item_closed{background-position:-16px 0;}div.dhxcont_content_blocker{position:absolute;left:0;top:0;width:101%;height:101%;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;background:#FFF;z-index:1;-moz-user-select:none;}.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue{background-image:url('imgs//dhtmlxcalendar_dhx_skyblue/bg_main.png');}.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_days_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell_first,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_dates_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_time_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_time_hdr div.dhtmlxcalendar_time_label,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_selector_obj div.dhtmlxcalendar_selector_obj_arrow,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_middle ul.dhtmlxcalendar_selector_line li.dhtmlxcalendar_selector_cell{background-image:url('imgs//dhtmlxcalendar_dhx_skyblue/bg_days.png');}.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_left,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left{background-image:url('imgs//dhtmlxcalendar_dhx_skyblue/arrow_left.png');}.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_left_hover,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left.dhtmlxcalendar_selector_cell_left_hover{background-image:url('imgs//dhtmlxcalendar_dhx_skyblue/arrow_left_hover.png');}.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_right,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right{background-image:url('imgs//dhtmlxcalendar_dhx_skyblue/arrow_right.png');}.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr div.dhtmlxcalendar_month_arrow.dhtmlxcalendar_month_arrow_right_hover,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right.dhtmlxcalendar_selector_cell_right_hover{background-image:url('imgs//dhtmlxcalendar_dhx_skyblue/arrow_right_hover.png');}.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_left,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_selector_obj table.dhtmlxcalendar_selector_table td.dhtmlxcalendar_selector_cell_right{background-color:#e6f1ff;}.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_selector_cover{background-color:white;opacity:.5;-moz-opacity:.5;filter:alpha(opacity=50);}.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr span.dhtmlxcalendar_month_label_month,.dhtmlxcalendar_container.dhtmlxcalendar_skin_dhx_skyblue div.dhtmlxcalendar_month_cont ul.dhtmlxcalendar_line li.dhtmlxcalendar_cell.dhtmlxcalendar_month_hdr span.dhtmlxcalendar_month_label_year{font-weight:bold;}iframe.dhxeditor_mainiframe_dhx_skyblue{position:absolute;overflow:hidden;top:0;left:0;width:100%;height:100%;}td.dhxeditor_toolbar_dhx_skyblue{position:relative;height:26px;}td.dhxeditor_toolbar_dhx_skyblue div.dhtmlxToolbar_dhx_skyblue{height:24px!important;}div.dhxeditor_container_dhx_skyblue{position:relative;width:100%;height:100%;overflow:hidden;}div.dhxeditor_dhx_skyblue_btns{background-image:url('imgs//dhxeditor_dhx_skyblue/dhxeditor_bg_lite.gif');background-repeat:repeat-x;position:absolute;width:100%;height:25px;}div.dhxeditor_dhx_skyblue_btns div.verline_l{position:absolute;left:0;top:0;border-left:#fff 1px solid;height:24px;width:1px;}div.dhxeditor_dhx_skyblue_btns div.verline_r{position:absolute;right:0;top:0;border-right:#fff 1px solid;height:24px;width:1px;}div.dhxeditor_dhx_skyblue_tbbtn{float:left;position:relative;width:18px;height:18px;font-size:2px;margin-left:2px;margin-top:3px;cursor:pointer;background-image:url('imgs//dhxeditor_dhx_skyblue/buttons.gif');}div.dhxeditor_dhx_skyblue_tbbtn.btn_bold{margin-left:5px;background-position:0 0;}div.dhxeditor_dhx_skyblue_tbbtn.btn_italic{background-position:-18px 0;}div.dhxeditor_dhx_skyblue_tbbtn.btn_underline{background-position:-36px 0;}div.dhxeditor_dhx_skyblue_tbbtn.btn_clearformat{background-position:-54px 0;}.dhxlist_obj_dhx_skyblue div.dhxlist_img{width:18px;height:18px;margin-left:5px;font-size:1px;-moz-user-select:-moz-none;}.dhxlist_obj_dhx_skyblue div.dhxlist_img.chbx0,.dhxlist_obj_dhx_skyblue div.dhxlist_img.chbx1,.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.chbx0,.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.chbx1,.dhxlist_obj_dhx_skyblue div.dhxlist_img.rdbt0,.dhxlist_obj_dhx_skyblue div.dhxlist_img.rdbt1,.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.rdbt0,.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.rdbt1{background-image:url('imgs//dhxform_dhx_skyblue/dhxform_chbxrd.gif');background-repeat:no-repeat;}.dhxlist_obj_dhx_skyblue div.dhxlist_img.chbx0{background-position:-18px 0;}.dhxlist_obj_dhx_skyblue div.dhxlist_img.chbx1{background-position:0 0;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.chbx0{background-position:-54px 0;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.chbx1{background-position:-36px 0;}.dhxlist_obj_dhx_skyblue div.dhxlist_img.rdbt0{background-position:-90px 0;}.dhxlist_obj_dhx_skyblue div.dhxlist_img.rdbt1{background-position:-72px 0;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.rdbt0{background-position:-126px 0;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_img.rdbt1{background-position:-108px 0;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt{font-family:Tahoma;font-size:inherit;margin:2px 0 2px 5px;color:#000;overflow-x:hidden;-moz-user-select:none;overflow:hidden;white-space:nowrap;}.dhxlist_obj_dhx_skyblue .dhxlist_txt_label label{-moz-user-select:none;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_txt{color:#b2b2b2;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt.align_left{text-align:left;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt.align_center{text-align:center;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt.align_right{text-align:right;}.dhxlist_obj_dhx_skyblue div.item_label_left{clear:both;margin-top:4px;}.dhxlist_obj_dhx_skyblue div.item_label_left div.dhxlist_img{display:inline-block;float:none;}.dhxlist_obj_dhx_skyblue div.item_label_left div.dhxlist_txt{display:inline-block;float:left;}.dhxlist_obj_dhx_skyblue div.item_label_right{clear:both;}.dhxlist_obj_dhx_skyblue div.item_label_right div.dhxlist_img{display:inline-block;float:left;}.dhxlist_obj_dhx_skyblue div.item_label_right div.dhxlist_txt{display:inline-block;float:left;}.dhxlist_obj_dhx_skyblue div.item_label_top div.dhxlist_img{float:none;}.dhxlist_obj_dhx_skyblue div.item_label_top div.dhxlist_txt{float:none;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhxlist_img{position:absolute;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhxlist_txt{position:absolute;}.dhxlist_obj_dhx_skyblue div.item_absolute{position:absolute;left:0;top:0;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt_label{overflow:hidden;white-space:nowrap;font-family:Tahoma;font-size:inherit;color:#000;vertical-align:top;margin:2px 5px 2px 5px;cursor:default;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_txt_label{color:#b2b2b2;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt_label.align_left{text-align:left;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt_label.align_center{text-align:center;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt_label.align_right{text-align:right;}.dhxlist_obj_dhx_skyblue .dhxlist_cont{margin-top:1px;margin-bottom:1px;}.dhxlist_obj_dhx_skyblue .dhxlist_txt_select{border:#a4bed4 1px solid;background-color:#fff;font-family:Tahoma;font-size:inherit;color:#000;margin:0;}.dhxlist_obj_dhx_skyblue div.disabled .dhxlist_txt_select{color:#b2b2b2;background-color:#fff;border:#c2d0dd 1px solid;}.dhxlist_obj_dhx_skyblue input.dhxlist_txt_textarea{padding:1px 0!important;margin:0;}.dhxlist_obj_dhx_skyblue .dhxlist_txt_textarea{border:#a4bed4 1px solid;font-family:Tahoma;font-size:inherit;color:#000;-moz-user-select:text;}.dhxlist_obj_dhx_skyblue div.disabled .dhxlist_txt_textarea{color:#b2b2b2;background-color:#fff;border:#c2d0dd 1px solid;}.dhxlist_obj_dhx_skyblue div.item_label_left div.dhxlist_cont{display:inline-block;float:none;}.dhxlist_obj_dhx_skyblue div.item_label_left div.dhxlist_txt_label{display:inline-block;float:left;}.dhxlist_obj_dhx_skyblue div.item_label_right div.dhxlist_cont{display:inline-block;float:left;}.dhxlist_obj_dhx_skyblue div.item_label_right div.dhxlist_txt_label{display:inline-block;float:none;}.dhxlist_obj_dhx_skyblue div.item_label_top div.dhxlist_cont{float:none;}.dhxlist_obj_dhx_skyblue div.item_label_top div.dhxlist_txt_label{float:none;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhxlist_cont{position:absolute;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhxlist_txt_label{position:absolute;}.dhxlist_obj_dhx_skyblue div.dhxlist_txt_label2{font-family:Tahoma;font-size:inherit;font-weight:bold;color:#256187;margin:5px 3px;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_txt_label2{color:#b2b8bc;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhxlist_txt_label2{position:absolute;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn{font-size:inherit;font-family:Tahoma;height:21px;margin:0 2px;float:left;cursor:default;clear:both;-moz-user-select:none;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table{height:21px;font-size:inherit;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td{text-align:center;vertical-align:middle;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_l{background-image:url('imgs//dhxform_dhx_skyblue/dhxform_btns.gif');background-repeat:no-repeat;background-position:0 0;width:5px;height:21px;font-size:1px;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_l div.btn_l{width:5px;}.dhxlist_obj_dhx_skyblue div.disabled div.dhx_list_btn td.btn_l{background-position:0 -42px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_over td.btn_l{background-position:0 -84px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_pressed td.btn_l{background-position:0 -126px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_m{background-image:url('imgs//dhxform_dhx_skyblue/dhxform_btns.gif');background-repeat:repeat-x;background-position:0 -21px;height:21px;}.dhxlist_obj_dhx_skyblue div.disabled div.dhx_list_btn td.btn_m{background-position:0 -63px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_over td.btn_m,.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.dhx_list_btn_over.btn_m{background-position:0 -105px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_pressed td.btn_m,.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.dhx_list_btn_pressed.btn_m{background-position:0 -147px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_r{background-image:url('imgs//dhxform_dhx_skyblue/dhxform_btns.gif');background-repeat:no-repeat;background-position:-5px 0;width:5px;height:21px;font-size:1px;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_r div.btn_r{width:5px;}.dhxlist_obj_dhx_skyblue div.disabled div.dhx_list_btn td.btn_r{background-position:-5px -42px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_over td.btn_r{background-position:-5px -84px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_pressed td.btn_r{background-position:-5px -126px!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_m div.btn_txt{font-size:inherit;font-family:Tahoma;color:#000;padding:1px 20px;overflow:hidden;white-space:nowrap;}.dhxlist_obj_dhx_skyblue div.disabled div.dhx_list_btn td.btn_m div.btn_txt{color:#b2b2b2!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn table.dhx_list_btn_pressed td.btn_m div.btn_txt{padding-top:2px!important;padding-bottom:0!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn,.dhxlist_obj_dhx_skyblue div.dhx_list_btn:visited,.dhxlist_obj_dhx_skyblue div.dhx_list_btn:active,.dhxlist_obj_dhx_skyblue div.dhx_list_btn:hover{outline:none;text-decoration:none;color:inherit;cursor:default;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn:focus{outline:#30678a 1px dotted;}.dhxlist_obj_dhx_skyblue div.item_absolute div.dhx_list_btn{position:absolute;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_m div.multibutton_txt{font-size:inherit;font-family:Tahoma;color:#000;height:21px;line-height:21px;vertical-align:middle;padding:0 20px;overflow:hidden;white-space:nowrap;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.btn_m div.multibutton_txt:focus{outline:#30678a 1px dotted;}.dhxlist_obj_dhx_skyblue div.disabled div.dhx_list_btn td.dhx_list_btn_pressed.btn_m div.multibutton_txt{color:#b2b2b2!important;}.dhxlist_obj_dhx_skyblue div.dhx_list_btn td.dhx_list_btn_pressed.btn_m div.multibutton_txt .btn_txt2{padding-top:1px!important;}.dhxlist_obj_dhx_skyblue fieldset.dhxlist_fs{border:#a4bed4 1px solid;margin-top:5px;padding:5px;display:inline;}.dhxlist_obj_dhx_skyblue div.disabled fieldset.dhxlist_fs{border:#c2d0dd 1px solid;}.dhxlist_obj_dhx_skyblue fieldset.dhxlist_fs legend.fs_legend{font-family:Tahoma;color:#256187;font-size:inherit;font-weight:normal;padding:0 4px 1px 4px;text-align:left;}.dhxlist_obj_dhx_skyblue div.disabled fieldset.dhxlist_fs legend.fs_legend{color:#b2b2b2;}.dhxlist_obj_dhx_skyblue div.fs_item_label_left{clear:both;}.dhxlist_obj_dhx_skyblue div.fs_item_label_right{clear:both;}.dhxlist_obj_dhx_skyblue div.fs_item_absolute fieldset.dhxlist_fs{position:absolute;}.dhxlist_obj_dhx_skyblue div.block_item_label_left{clear:both;}.dhxlist_obj_dhx_skyblue div.block_item_label_right{clear:both;}.dhxlist_obj_dhx_skyblue div.block_item_absolute div.dhxlist_block{position:absolute;}.dhxlist_obj_dhx_skyblue_old{position:relative;background-color:#fff;-moz-user-select:-moz-none;}.dhxlist_obj_dhx_skyblue div.dhxlist_base{position:relative;float:left;}.dhxlist_obj_dhx_skyblue div.dhxlist_base_nested{padding:0 20px;clear:both;}.dhxlist_obj_dhx_skyblue div.dhxlist_base_nested.in_block{padding:0 0!important;}.dhxlist_obj_dhx_skyblue span.nav_link,.dhxlist_obj_dhx_skyblue span.nav_link:visited,.dhxlist_obj_dhx_skyblue span.nav_link:active,.dhxlist_obj_dhx_skyblue span.nav_link:hover{outline:none;text-decoration:none;color:inherit;cursor:default;}.dhxlist_obj_dhx_skyblue span.nav_link:focus{color:#30678a;}.dhxlist_obj_dhx_skyblue_old table.dhxlist_items_set{table-layout:fixed;cursor:default;width:100%;font-size:inherit;}.dhxlist_obj_dhx_skyblue_old div.button_container{position:absolute;height:50px;width:100%;bottom:0;}.dhxlist_obj_dhx_skyblue_old th.dhxlist_img_cell{width:26px;}.dhxlist_obj_dhx_skyblue_old th.dhxlist_tbl_head{height:0;margin:0;padding:0;}.dhxlist_obj_dhx_skyblue_old div.dhxlist_img_cell{display:inline-block;width:26px;vertical-align:top;-moz-user-select:-moz-none;}.dhxlist_obj_dhx_skyblue_old div.dhxlist_txt_cell{adisplay:inline-block;vertical-align:top;padding-right:5px;-moz-user-select:-moz-none;}.dhx_form_cover{position:absolute;width:100%;height:100%;background-color:silver;left:0;top:0;display:none;opacity:.2;-moz-opacity:.2;z-index:99999;filter:alpha(opacity=20);}input.dhtmlx_validation_error,select.dhtmlx_validation_error{background-color:#F29FB5;}.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl .dhxlist_txt_cell,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl .dhxlist_txt,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set div.dhxlist_txt_label,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set div.dhxlist_txt_label2,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set .dhxlist_txt_select,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set .dhxlist_txt_select option,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set .dhxlist_txt_textarea,.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl div.dhx_list_btn td.btn_m div.btn_txt{direction:rtl;unicode-bidi:bidi-override;}.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl table.dhxlist_items_set div.dhxlist_img{margin-left:0;margin-right:5px;}.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl td.dhxlist_txt_cell fieldset.dhxlist_fs legend.fs_legend{direction:rtl;unicode-bidi:bidi-override;text-align:right;}.dhxlist_obj_dhx_skyblue_old div.dhxform_rtl div.dhx_list_btn{float:right;}.dhxlist_obj_dhx_skyblue div.disabled .dhx_combo_box.dhx_skyblue{border:1px solid #c2d0dd;}.dhxlist_obj_dhx_skyblue div.disabled .dhx_combo_box.dhx_skyblue .dhx_combo_input{color:#b2b2b2;background-color:#fff;}.dhxlist_obj_dhx_skyblue div.dhxlist_item_template{overflow:hidden;white-space:nowrap;font-family:Tahoma;font-size:inherit;color:#000;vertical-align:top;margin:1px 3px;cursor:default;overflow:hidden;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_item_template{color:#b2b2b2;}.dhxlist_obj_dhx_skyblue div.dhxlist_item_template.dhxeditor_inside{border:1px solid #a4bed4;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_item_template.dhxeditor_inside{border:1px solid #c2d0dd;}.dhxlist_obj_dhx_skyblue div.dhxlist_item_template.dhxeditor_inside div.dhxcont_content_blocker{display:none;}.dhxlist_obj_dhx_skyblue div.disabled div.dhxlist_item_template.dhxeditor_inside div.dhxcont_content_blocker{display:inline;position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fefefe;filter:alpha(opacity=70);-moz-opacity:.7;opacity:.7;}.dhxlist_obj_dhx_skyblue .validate_error .dhxlist_txt_label{color:red;}.dhxlist_obj_dhx_skyblue .validate_error .dhxlist_txt_textarea,.dhxlist_obj_dhx_skyblue .validate_error .dhxlist_txt_select{color:red;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_body_inner .dhxlist_obj_dhx_skyblue{background-color:white;}div.dhtmlx_wins_body_inner .dhxlist_obj_dhx_skyblue div.dhxlist_base,td.dhtmlxLayoutSinglePoly .dhxlist_obj_dhx_skyblue div.dhxlist_base,.dhx_tabcontent_zone .dhxlist_obj_dhx_skyblue div.dhxlist_base,div.dhx_acc_item .dhxlist_obj_dhx_skyblue div.dhxlist_base{margin:10px;}div.dhtmlx_wins_body_inner .dhxlist_obj_dhx_skyblue div.dhxlist_base div.dhxlist_base,td.dhtmlxLayoutSinglePoly .dhxlist_obj_dhx_skyblue div.dhxlist_base div.dhxlist_base,.dhx_tabcontent_zone .dhxlist_obj_dhx_skyblue div.dhxlist_base div.dhxlist_base,div.dhx_acc_item .dhxlist_obj_dhx_skyblue div.dhxlist_base div.dhxlist_base{margin:0!important;}div.gridbox_dhx_skyblue .xhdr{background-image:url(imgs//sky_blue_grid.gif);}div.gridbox_dhx_skyblue table.hdr tr{background-image:url(imgs//sky_blue_grid.gif);background-position:0 -1px\9;}body:nth-of-type(1) div.gridbox_dhx_skyblue table.hdr tr{background-image:url(imgs//sky_blue_grid.gif);background-position:0 -1px;}div.gridbox_dhx_skyblue table.obj tr td{font-family:Tahoma;font-size:11px;border-width:0;padding-right:4px;padding-left:4px;}div.gridbox_dhx_skyblue table.hdr td div.hdrcell{padding-left:10px;width:auto;}html>body div.gridbox_dhx_skyblue table.hdr td div.hdrcell{width=100%;}div.gridbox_dhx_skyblue table.hdr td{border-width:1px 1px 1px 1px;border-color:#FDFDFD #A4BED4 #A4BED4 #FDFDFD;background-color:transparent;font-family:Tahoma;font-size:11px;color:black;vertical-align:top;text-align:left;}div.gridbox_dhx_skyblue{border:1px solid #A4BED4;}div.gridbox table.obj tr td{padding-top:3px;padding-bottom:3px;}* html .gridbox .obj td{height:auto;padding-top=3px;padding-bottom=3px;}div.gridbox table.obj.row20px tr td{padding-top:0;padding-bottom:0;}div.gridbox table.obj tr td.editable{padding:0;}div.gridbox table.obj tr td.editable div.treegrid_cell{padding-left:4px;padding-top:1px;}div.gridbox_dhx_skyblue table.obj tr.rowselected{background-color:#FFF1CC;}div.gridbox_dhx_skyblue table.obj tr.rowselected td{background-color:#FFF1CC;background-repeat:repeat-x;background-position:0 0;background-image:url(imgs//sky_blue_sel2.png);}div.gridbox_dhx_skyblue table.obj.row20px tr.rowselected td{background-repeat:repeat-x;background-position:0 0;background-image:url(imgs//sky_blue_sel.png);}div.gridbox_dhx_skyblue table.obj tr.rowselected td.cellselected{background-color:#FFF1CC;}div.gridbox_dhx_skyblue .odd_dhx_skyblue{background-color:#E3EFFF;}.dhx_combo_select,.gridbox_dhx_skyblue .dhx_combo_edit,.gridbox_dhx_skyblue .dhx_textarea{font-family:Tahoma;font-size:11px;}.gridbox_dhx_skyblue .dhx_combo_edit{padding:1px 0 1px 1px;}.gridbox_dhx_skyblue .dhx_sub_row{background-color:transparent;}div.gridbox table.obj.row20px tr td.rowselector,div.gridbox_dhx_skyblue table.obj tr td.rowselector{line-height:normal;border-right:1px solid #A4BED4;background-color:#E3EFFF;vertical-align:top;padding:0;}div.gridbox_dhx_skyblue table.obj tr td.rowselector div.rowselector2{line-height:normal;position:relative;width:100%;height:100%;background-image:url('imgs//dhxgrid_dhx_skyblue/rowselector.png');background-position:left bottom;background-repeat:no-repeat;overflow:hidden;}div.gridbox_dhx_skyblue table.obj tr td.rowselector div.rowselector2 div.rowselector3{position:absolute;top:0;left:0;width:100%;height:1px;line-height:normal;background-image:url('imgs//dhxgrid_dhx_skyblue/rowselector.png');background-position:left top;background-repeat:no-repeat;overflow:hidden;}div.gridbox_dhx_skyblue table.obj tr td.rowselector div.rowselector2 div.rowselector4{position:absolute;top:0;left:0;width:100%;height:100%;line-height:normal;background:none;background-position:center center;background-repeat:no-repeat;overflow:hidden;}div.gridbox_dhx_skyblue table.obj tr.rowselected td.rowselector div.rowselector2 div.rowselector4{background-image:url('imgs//dhxgrid_dhx_skyblue/arrow.png');}div.gridbox_dhx_skyblue table.obj tr.rowselected td.rowselector.editmode div.rowselector2 div.rowselector4{background-image:url('imgs//dhxgrid_dhx_skyblue/asteriks.png');}table.dhtmlxLayoutPolyContainer_dhx_skyblue{width:100%;height:100%;abackground-color:#D3E2E5;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly{position:relative;overflow:hidden;vertical-align:top;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxWindowMainContent{border:#a4bed4 1px solid;background-color:#FFF;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlx_wins_body_inner{border:#000 1px solid;background-color:#FFF;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhxcont_content_blocker{position:absolute;width:100%;height:100%;top:0;left:0;filter:alpha(opacity=20);-moz-opacity:.2;opacity:.2;background-color:#93C0E7;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBar{position:relative;font-family:Tahoma;font-size:2px;height:27px;background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_bg.gif');background-repeat:repeat-x;background-position:top;overflow:hidden;border-left:#a4bed4 1px solid;border-right:#a4bed4 1px solid;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBar div.dhtmlxInfoBarButtonsFake{position:absolute;width:28px;height:27px;margin:0;top:0;right:-1px;background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_bg.gif');background-repeat:repeat-x;background-position:top;overflow:hidden;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBar div.dhtmlxInfoBarLabel{white-space:nowrap;font-size:11px;color:#000;font-family:Tahoma;font-weight:bold;top:7px;margin-left:5px;line-height:15px;vertical-align:middle;cursor:default;position:absolute;-moz-user-select:none;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedVer div.dhtmlxInfoBarLabel{display:none;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBar div.dhtmlxInfoButtonShowHide_ver{position:absolute;width:16px;height:16px;top:6px;right:4px;font-family:Tahoma;font-size:2px;text-align:center;vertical-align:top;cursor:pointer;background-repeat:no-repeat;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbarCollapsed div.dhtmlxInfoButtonShowHide_ver{position:absolute;width:7px;height:8px;top:6px;right:4px;font-family:Tahoma;font-size:2px;text-align:center;vertical-align:top;cursor:pointer;background-repeat:no-repeat;}.dhxLayoutButton_dhx_skyblue_ver1t{background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_btns.gif');background-position:-32px 0;}.dhxLayoutButton_dhx_skyblue_ver1b{background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_btns.gif');background-position:0 0;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBar div.dhtmlxInfoButtonShowHide_hor{position:absolute;width:16px;height:16px;top:6px;right:4px;font-family:Tahoma;font-size:2px;text-align:center;vertical-align:top;cursor:pointer;background-repeat:no-repeat;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbarCollapsed div.dhtmlxInfoButtonShowHide_hor{position:absolute;width:8px;height:7px;top:10px;left:6px;font-family:Tahoma;font-size:2px;text-align:center;vertical-align:top;cursor:pointer;background-repeat:no-repeat;}.dhxLayoutButton_dhx_skyblue_hor1l{background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_btns.gif');background-position:-16px 0;}.dhxLayoutButton_dhx_skyblue_hor1r{background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_btns.gif');background-position:-48px 0;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedHor{position:relative;font-family:Tahoma;font-size:2px;height:100%;height:18px;overflow:hidden;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedHor div.dhtmlxInfoBarLabel{display:none;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedHor div.dhtmlxInfoButtonShowHide_ver{position:absolute;width:16px;height:16px;top:1px;right:4px;font-family:Tahoma;font-size:2px;text-align:center;vertical-align:top;cursor:pointer;background-repeat:no-repeat;}.dhxLayoutButton_dhx_skyblue_ver2t{background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_btns.gif');background-position:-32px 0;}.dhxLayoutButton_dhx_skyblue_ver2b{background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_btns.gif');background-position:0 0;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedHor div.dhtmlxInfoBarButtonsFake{border-left:1px solid #a4bed4;border-right:1px solid #a4bed4;height:18px;left:0;position:relative;top:0;background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_collapsedhor.gif');background-repeat:repeat-x;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedVer{position:relative;width:100%;font-family:Tahoma;font-size:2px;height:100%;abackground-color:#C2D5DC;overflow:hidden;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedVer div.dhtmlxInfoBarLabel{display:none;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedVer div.dhtmlxInfoButtonShowHide_hor{position:absolute;width:16px;height:16px;top:6px;left:1px;font-family:Tahoma;font-size:2px;text-align:center;vertical-align:top;cursor:pointer;background-repeat:no-repeat;}.dhxLayoutButton_dhx_skyblue_hor2l{background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_btns.gif');background-position:-16px 0;}.dhxLayoutButton_dhx_skyblue_hor2r{background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_btns.gif');background-position:-48px 0;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedVer div.dhtmlxInfoBarButtonsFake{border-top:1px solid #a4bed4;border-bottom:1px solid #a4bed4;width:16px;left:0;position:absolute;top:0;height:100%;width:18px;bottom:0;height=100%;background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_collapsedver.gif');background-repeat:repeat-y;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedVer div.dhtmlxInfoBarButtonsFake2{position:absolute;width:100%;bottom:1px;bottom=-1px;border-bottom:1px solid #a4bed4;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInnerContainer{font-family:Tahoma;font-size:11px;font-weight:normal;color:#000;position:relative;overflow:auto;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhtmlx_wins_body_content{position:relative;overflow:hidden;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutPolySplitterHor{font-size:1px;height:5px;line-height:5px;cursor:n-resize;-moz-user-select:none;background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_drag_hor.gif')!important;background-repeat:no-repeat!important;background-position:center center!important;vertical-align:top;background-color:#ebebeb;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutPolySplitterHorInactive{font-size:1px;height:5px;line-height:5px;cursor:default;-moz-user-select:none;vertical-align:top;background-color:#ebebeb;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutPolySplitterVer{font-size:2px;width:5px;cursor:w-resize;background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_drag_ver.gif')!important;background-repeat:no-repeat!important;background-position:50% center!important;background-color:#ebebeb;vertical-align:top;-moz-user-select:none;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutPolySplitterVerInactive{font-size:2px;width:5px;cursor:default;background-color:#ebebeb;vertical-align:top;-moz-user-select:none;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbar{position:relative;overflow:hidden;vertical-align:top;border:0 solid transparent;border-top:1px solid #D2E3EA;border-bottom:1px solid #D2E3EA;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbarCollapsed{position:relative;border:#C2D5DC 1px solid;overflow:hidden;vertical-align:top;background-color:#D2E3EA;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbar div.dhtmlxWindowMainContent{border:#333 0 solid!important;background-color:#FFF;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbarCollapsed div.dhtmlxPolyInfoBarCollapsedVer,td.dhtmlxLayoutSinglePolyTabbarCollapsed div.dhtmlxPolyInfoBarCollapsedHor{position:relative;width:100%;height:100%;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbar div.dhtmlxPolyInfoBar,td.dhtmlxLayoutSinglePolyTabbarCollapsed div.dhtmlxPolyInfoBar{position:relative;z-index:100;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbar div.dhtmlxInfoBarLabel,td.dhtmlxLayoutSinglePolyTabbarCollapsed div.dhtmlxInfoBarLabel{width:0;height:0;display:none;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbar div.dhtmlxInfoBarButtonsFake,td.dhtmlxLayoutSinglePolyTabbarCollapsed div.dhtmlxInfoBarButtonsFake{width:0;height:0;display:none;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbar div.dhtmlxPolyInfoBar div{position:relative;float:right;background-position:center top;background-repeat:no-repeat;width:12px;height:12px;overflow:hidden;z-index:100;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbar div.dhtmlxPolyInfoBar div.dhtmlxInfoButtonShowHide_hor,table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePolyTabbar div.dhtmlxPolyInfoBar div.dhtmlxInfoButtonShowHide_ver{position:absolute;right:4px;top:4px;width:16px;height:16px;cursor:pointer;}div.dhxLayout_Sizer_dhx_skyblue{position:absolute;background-color:#97BFE8;filter:alpha(opacity=30);-moz-opacity:.3;opacity:.3;transparent:0;font-size:1px;z-index:1999;}div.dhxLayout_Cover_dhx_skyblue{position:absolute;width:100%;height:100%;top:0;left:0;filter:alpha(opacity=20);-moz-opacity:.2;opacity:.2;background-color:#93C0E7;}.dhtmlxMenu_dhx_skyblue_Middle{amargin-left:1px;amargin-right:1px;}.dhtmlxMenu_dhx_skyblue_bottom_border{height=25;border-bottom:#C2D5DC 1px solid;}.dhtmlxToolbar_dhx_skyblue_bottom_top{border-top:#C2D5DC 1px solid;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhtmlxLayoutPolyProgress{position:absolute;left:0;top:0;width:100%;height:100%;filter:alpha(opacity=15);-moz-opacity:.15;opacity:.15;background-color:#93C0E7;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhtmlxLayoutPolyProgressBGIMG{position:absolute;left:0;top:0;width:100%;height:100%;background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_progress.gif');background-repeat:no-repeat;background-position:center center;}div.dhtmlxLayoutPolyProgressGlobal_dhx_skyblue{position:absolute;left:0;top:0;width:100%;height:100%;filter:alpha(opacity=15);-moz-opacity:.15;opacity:.15;background-color:#93C0E7;}div.dhtmlxLayoutPolyProgressBGIMGGlobal_dhx_skyblue{position:absolute;left:0;top:0;width:100%;height:100%;background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_progress_global.gif');background-repeat:no-repeat;background-position:center center;z-index:1;}div.dhxcont_global_layout_area div.dhxcont_sb_container{position:relative;height:24px;}div.dhxcont_global_layout_area div.dhxcont_sb_container div.dhxcont_statusbar{position:relative;top:2px;height:22px;line-height:22px;background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_bg_sb.gif');background-repeat:repeat-x;width:auto;padding:0 4px;overflow:hidden;white-space:nowrap;border:#A4BED4 1px solid;border-top:none;border-bottom:none;font-family:Tahoma;font-size:11px;vertical-align:middle;color:#000;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhxcont_global_layout_area div.dhxcont_sb_container_layoutcell{position:relative;height:21px;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhxcont_global_layout_area div.dhxcont_sb_container div.dhxcont_statusbar{position:relative;top:0;height:21px;line-height:21px;background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_bg_sb.gif');background-repeat:repeat-x;background-position:top;width:auto;padding:0 4px;overflow:hidden;white-space:nowrap;border-top:none;border-bottom:none;font-family:Tahoma;font-size:11px;vertical-align:middle;color:#000;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhxcont_statusbar{position:absolute;width:100%;bottom:0;background:none;_bottom:-1px;background-image:url('imgs//dhxlayout_dhx_skyblue/dhxlayout_bg_sb.gif');background-repeat:repeat-x;overflow:hidden;font-family:Tahoma;font-size:11px;color:#7393ae;vertical-align:middle;line-height:20px;height:20px;-moz-user-select:none;cursor:default;padding-left:4px;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhxcont_global_content_area{position:absolute;overflow:hidden;border:#a4bed4 1px solid;background-color:#FFF;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhtmlxPolyInfoBar div.dhtmlxLineL{position:absolute;border-left:#FFF 1px solid;top:1px;left:0;height:25px;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhtmlxPolyInfoBarCollapsedHor div.dhtmlxLineL{position:absolute;border-left:#FFF 1px solid;top:1px;left:1px;height:16px;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhtmlxPolyInfoBar div.dhtmlxLineR{position:absolute;border-right:#FFF 1px solid;top:1px;right:0;height:25px;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhtmlxPolyInfoBarCollapsedHor div.dhtmlxLineR{position:absolute;border-right:#FFF 1px solid;top:1px;right:1px;height:16px;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhtmlxPolyInfoBarCollapsedVer div.dhtmlxLineL{position:absolute;border-top:#FFF 1px solid;top:1px;left:1px;width:16px;}table.dhtmlxLayoutPolyContainer_dhx_skyblue div.dhtmlxPolyInfoBarCollapsedVer div.dhtmlxLineR{position:absolute;border-bottom:#FFF 1px solid;bottom:1px;bottom:1px;left:1px;width:16px;}.dhxlayout_fullscreened{background-color:#ebebeb;width:100%;height:100%;margin:0;overflow:hidden;}div.dhxlayout_skin_detect{width:199px;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBar div.dhtmlxInfoBarLabel_collapsed_ver{display:none;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedHor div.dhtmlxInfoBarLabel_collapsed_ver{position:absolute;top:2px;left:5px;font-family:Tahoma;font-size:11px;font-weight:normal;color:#666;white-space:nowrap;cursor:default;-moz-user-select:none;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBar div.dhtmlxInfoBarLabel_collapsed_hor{display:none;}table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly div.dhtmlxPolyInfoBarCollapsedVer div.dhtmlxInfoBarLabel_collapsed_hor{position:absolute;top:28px;left:0;font-family:Tahoma;font-size:11px;font-weight:normal;color:#666;white-space:nowrap;cursor:default;-moz-user-select:none;}.dhtmlxMenu_dhx_skyblue_Middle{position:relative;height:24px;border:none;background-color:#ebebeb;-moz-user-select:none;}.dhtmlxMenu_dhx_skyblue_Layout,.dhtmlxMenu_dhx_skyblue_Accordion{border-bottom:#cedce8 1px solid;}.dhtmlxMenu_dhx_skyblue_Middle.in_acccell,.dhtmlxMenu_dhx_skyblue_Middle.in_layoutcell{height:25px;background-image:url('imgs//dhxmenu_dhx_skyblue/dhxmenu_bg_acccell.gif');background-position:top;background-repeat:repeat-x;}.dhtmlxMenu_dhx_skyblue_Middle.dir_left div.align_left{float:left;}.dhtmlxMenu_dhx_skyblue_Middle.dir_left div.align_right{float:right;}div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Normal,div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Disabled,div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Selected{position:relative;float:left;font-family:Tahoma;font-size:11px;font-weight:normal;cursor:default;white-space:nowrap;-moz-user-select:none;height:22px;line-height:22px;vertical-align:middle;margin-top:1px;margin-left:0;margin-right:2px;padding-left:4px;padding-right:4px;border-left:#ebebeb 1px solid;border-right:#ebebeb 1px solid;background:none;color:#000;}div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Disabled{color:#999!important;}div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Selected{background-image:url('imgs//dhxmenu_dhx_skyblue/dhxmenu_topselbg.gif')!important;background-repeat:repeat-x!important;background-position:top!important;border-left:#ffb951 1px solid!important;border-right:#ffb951 1px solid!important;}.dhtmlxMenu_dhx_skyblue_Middle div.top_sep{font-size:1px;cursor:default;-moz-user-select:none;background-image:url('imgs//dhxmenu_dhx_skyblue/dhxmenu_topsepbg.gif');background-repeat:no-repeat;background-position:top center;height:24px;position:relative;float:left;width:3px;margin-left:0;margin-right:2px;}.dhtmlxMenu_dhx_skyblue_Middle img.dhtmlxMenu_TopLevel_Item_Icon{float:left;margin:2px 2px 0 2px;width:18px;height:18px;}div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Normal div.top_level_text,div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Disabled div.top_level_text,div.dhtmlxMenu_dhx_skyblue_TopLevel_Item_Selected div.top_level_text{float:left;margin-left:2px;margin-right:2px;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon{position:absolute;background-color:#eaf2fb;border:#a4bed4 1px solid;overflow:hidden;padding-top:1px;padding-bottom:1px;}iframe.dhtmlxMenu_IE6CoverFix_dhx_skyblue{position:absolute;border:none;background:#000;filter:alpha(opacity=100);}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item{height:24px;cursor:default;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_dis{height:24px;cursor:default;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_selected{height:24px;cursor:default;background-image:url('imgs//dhxmenu_dhx_skyblue/dhxmenu_subselbg.gif')!important;background-repeat:repeat-x;background-position:top;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl td.sub_item_icon{width:24px;text-align:left;-moz-user-select:none;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl td.sub_item_icon img.sub_icon{width:18px;height:18px;margin-top:2px;margin-right:0;margin-left:6px;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl td.sub_item_text{vertical-align:middle;padding-left:4px;padding-right:4px;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl div.sub_item_text{font-family:Tahoma;font-size:11px;font-weight:normal;color:#000;white-space:nowrap;text-align:left;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_dis div.sub_item_text{color:#999!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl td.sub_item_hk{padding-left:8px;padding-right:8px;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl td.sub_item_hk div.sub_item_hk{font-family:Tahoma;font-size:10px;color:#4985b7;text-align:right;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_dis td.sub_item_hk div.sub_item_hk{color:#cecece!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon tr.sub_sep{height:3px;font-size:1px;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon div.sub_sep{font-size:1px;background-image:url('imgs//dhxmenu_dhx_skyblue/dhxmenu_subsepbg.gif');background-repeat:repeat-x;background-position:top;cursor:default;height:3px;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl div.complex_arrow{width:4px;height:24px;background-image:url('imgs//dhxmenu_dhx_skyblue/dhtmlxmenu_subar.gif');background-repeat:no-repeat;background-position:0 0;float:right;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_selected div.complex_arrow{background-position:-4px 0!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_dis div.complex_arrow{background-position:-8px 0!important;}div.dhtmlxMenu_SubLevelArea_Item_Arrow_Loading{position:absolute;width:11px;height:11px;background-position:center top;background-repeat:no-repeat;background-image:url('imgs//dhxmenu_dhx_skyblue/dhtmlxmenu_loader.gif');}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon_left div.dhtmlxMenu_SubLevelArea_Item_Arrow_Loading{top:6px;left:none;right:6px;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon_right div.dhtmlxMenu_SubLevelArea_Item_Arrow_Loading{top:6px;right:none;left:6px;_right:-38px;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Arrow{width:100%;height:100%;background-repeat:no-repeat;background-position:center center;background-color:#eaf2fb;text-align:center;overflow:hidden;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Arrow div.dhtmlxMenu_SubLevelArea_Arrow_Icon{position:relative;margin-top:5px;margin-left:auto;margin-right:auto;width:9px;height:5px;background-repeat:no-repeat;background-image:url('imgs//dhxmenu_dhx_skyblue/dhtmlxmenu_upar.gif');}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowUp,div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowUp_Over,div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowUp_Disabled{position:absolute;height:16px;height= 18px;padding:1px 1px 0 1px;font-size:1px;background-color:#eaf2fb;border:#a4bed4 1px solid;border-bottom:none;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowUp div.dhtmlxMenu_SubLevelArea_Arrow_Icon{background-position:-27px 0;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowUp_Over div.dhtmlxMenu_SubLevelArea_Arrow_Icon{background-position:-36px 0;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowUp_Disabled div.dhtmlxMenu_SubLevelArea_Arrow_Icon{background-position:-45px 0;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowDown,div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowDown_Over,div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowDown_Disabled{position:absolute;height:16px;height= 18px;font-size:1px;padding:1px 1px 0 1px;background-color:#eaf2fb;border:#a4bed4 1px solid;border-top:none;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowDown div.dhtmlxMenu_SubLevelArea_Arrow_Icon{background-position:0 0;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowDown_Over div.dhtmlxMenu_SubLevelArea_Arrow_Icon{background-position:-9px 0;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_ArrowDown_Disabled div.dhtmlxMenu_SubLevelArea_Arrow_Icon{background-position:-18px 0;}.dhtmlxMenu_dhx_skyblue_Middle div.dhtmlxMenu_TopLevel_Text_right{position:absolute;top:5px;left:none;right:8px;font-family:Tahoma;font-size:11px;color:#000;cursor:default;}.dhtmlxMenu_dhx_skyblue_Middle div.dhtmlxMenu_TopLevel_Text_left{position:absolute;top:5px;right:none;left:8px;font-family:Tahoma;font-size:11px;color:#000;cursor:default;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl div.sub_icon{float:left;margin:0 2px 0 2px;width:18px;height:18px;background-position:top right;background-repeat:no-repeat;background-image:url('imgs//dhxmenu_dhx_skyblue/dhtmlxmenu_chrd.gif');}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl div.sub_icon.chbx_0{background-position:0 0!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl div.sub_icon.chbx_1{background-position:-18px 0!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_dis div.sub_icon.chbx_0{background-position:-36px 0!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_dis div.sub_icon.chbx_1{background-position:-54px 0!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl div.sub_icon.rdbt_0{background-position:-72px 0!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl div.sub_icon.rdbt_1{background-position:-90px 0!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_dis div.sub_icon.rdbt_0{background-position:-108px 0!important;}div.dhtmlxMenu_dhx_skyblue_SubLevelArea_Polygon table.dhtmlxMebu_SubLevelArea_Tbl tr.sub_item_dis div.sub_icon.rdbt_1{background-position:-126px 0!important;}.dhx_toolbar_base_dhx_skyblue{white-space:nowrap;overflow:hidden;height:35px;background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_bg.gif');background-repeat:repeat-x;position:relative;padding-left:5px;padding-right:5px;cursor:default;}.dhx_toolbar_base_dhx_skyblue div.dhxtoolbar_hdrline_ll{position:absolute;height:27px;border-left:#a4bed4 1px solid;left:0;top:0;-moz-user-select:none;}.dhx_toolbar_base_dhx_skyblue div.dhxtoolbar_hdrline_l{position:absolute;height:25px;border-left:#fff 1px solid;left:1px;top:1px;-moz-user-select:none;}.dhx_toolbar_base_dhx_skyblue div.dhxtoolbar_hdrline_rr{position:absolute;height:27px;border-right:#a4bed4 1px solid;right:0;top:0;-moz-user-select:none;}.dhx_toolbar_base_dhx_skyblue div.dhxtoolbar_hdrline_r{position:absolute;height:25px;border-right:#fff 1px solid;right:1px;top:1px;-moz-user-select:none;}.dhx_toolbar_base_dhx_skyblue div.float_left{float:left;aborder:#909090 1px solid;}.dhx_toolbar_base_dhx_skyblue div.float_right{float:right;aborder:#909090 1px solid;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn{float:left;margin-top:2px;color:#000;padding:3px;padding-bottom:2px;margin-right:1px;-moz-user-select:-moz-none;position:relative;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn.dis{color:#999!important;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn.over{border:#ffb552 1px solid;padding:2px;padding-bottom:1px;background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_bg_over.gif');background-position:top;background-repeat:repeat-x;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn.pres{border:#ffbe51 1px solid;padding:2px;padding-bottom:1px;background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_bg_pressed.gif');background-position:top;background-repeat:repeat-x;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn img{float:left;width:18px;height:18px;margin:0 1px;-moz-user-select:none;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn div{float:left;font-family:Tahoma;font-size:11px;margin:2px 2px 0 2px;height:16px;-moz-user-select:none;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_arw{float:left;margin-top:2px;color:#000;padding:3px;padding-bottom:2px;margin-right:1px;margin-left:-2px;-moz-user-select:none;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_arw.over{border:#ffb552 1px solid;padding:2px;padding-bottom:1px;background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_bg_over.gif');background-position:top;background-repeat:repeat-x;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_arw.pres{border:#ffbe51 1px solid;padding:2px;padding-bottom:1px;background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_bg_pressed.gif');background-position:top;background-repeat:repeat-x;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_arw div.arwimg{float:left;background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_btnarrow.gif');background-repeat:no-repeat;background-position:center;font-size:11px;font-family:Tahoma;height:16px;margin:2px 0 0 0;width:7px;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_arw.dis div.arwimg{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_btnarrow_dis.gif');}div.dhx_toolbar_poly_dhx_skyblue{position:absolute;margin:0;padding-top:1px;border:#a4bed4 1px solid;background-color:#eaf2fb;overflow:hidden;cursor:default;-moz-user-select:none;}div.dhx_toolbar_poly_dhx_skyblue table.buttons_cont tr.tr_btn{height:22px;background-repeat:repeat-x;}div.dhx_toolbar_poly_dhx_skyblue table.buttons_cont tr.tr_btn.tr_btn_over{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_subbg_over.gif');}div.dhx_toolbar_poly_dhx_skyblue table.buttons_cont tr.tr_btn.tr_btn_selected{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_subbg_sel.gif');}div.dhx_toolbar_poly_dhx_skyblue table.buttons_cont td.td_btn_sep{font-size:1px;height:3px;vertical-align:top;}div.dhx_toolbar_poly_dhx_skyblue td.td_btn_sep div.btn_sep{font-size:1px;cursor:default;border-top:#FFF 1px solid;background-color:#c7d4df;padding-top:1px;-moz-user-select:none;}div.dhx_toolbar_poly_dhx_skyblue table.buttons_cont td.td_btn_img{font-size:1px;width:22px;text-align:center;vertical-align:middle;}div.dhx_toolbar_poly_dhx_skyblue td.td_btn_img img.btn_sel_img{position:relative;width:16px;height:16px;margin-left:3px;margin-right:3px;-moz-user-select:none;}div.dhx_toolbar_poly_dhx_skyblue table.buttons_cont td.td_btn_txt{font-size:1px;vertical-align:middle;padding-left:1px;padding-right:10px;}div.dhx_toolbar_poly_dhx_skyblue td.td_btn_txt div.btn_sel_text{float:left;font-family:Tahoma;font-size:11px;color:#000;white-space:nowrap;}div.dhx_toolbar_poly_dhx_skyblue tr.tr_btn_disabled td.td_btn_txt div.btn_sel_text{color:#999!important;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_sep{float:left;height:24px;width:2px;margin-top:1px;font-size:1px;margin-right:1px;margin-left:0;background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_sep_bg.gif');background-position:top;background-repeat:no-repeat;-moz-user-select:none;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_text{float:left;vertical-align:middle;font-family:Tahoma;font-size:11px;color:#000;margin-top:7px;margin-right:1px;margin-left:0;padding:0 4px;-moz-user-select:none;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn .inp{position:relative;float:left;border:#a4bed4 1px solid;font-family:Tahoma;font-size:11px;padding:1px;margin:0;direction:ltr;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn div.sl_bg_l{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_slider_left.gif');background-position:right;background-repeat:no-repeat;width:2px;font-size:1px;margin-right:0;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn.dis div.sl_bg_l{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_slider_left_dis.gif');}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn div.sl_bg_m{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_slider_middle.gif');background-position:center;background-repeat:repeat-x;font-size:1px;margin-left:0;margin-right:0;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn.dis div.sl_bg_m{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_slider_middle_dis.gif');}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn div.sl_bg_r{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_slider_right.gif');background-position:left;background-repeat:no-repeat;width:2px;font-size:1px;margin-left:0;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn.dis div.sl_bg_r{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_slider_right_dis.gif');}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn div.sl_pen{position:absolute;top:2px;width:15px;height:15px;background-repeat:no-repeat;-moz-user-select:none;cursor:default;background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_slider_pen_def.gif');border:none;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn div.sl_pen.over{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_slider_pen_over.gif')!important;}.dhx_toolbar_base_dhx_skyblue div.dhx_toolbar_btn.dis div.sl_pen{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_slider_pen_dis.gif')!important;}div.dhx_toolbar_slider_label_dhx_skyblue{position:absolute;border:#ffb052 1px solid;background-color:#ffe5ad;font-family:Tahoma;font-size:10px;color:#000;font-weight:normal;padding:0 2px 0 2px;cursor:default;-moz-user-select:none;z-index:8422;}.dhx_toolbar_base_dhx_skyblue.in_layoutcell{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_bg_layoutcell.gif')!important;}.dhx_toolbar_base_dhx_skyblue.in_layoutcell div.dhxtoolbar_hdrline_ll{display:none;}.dhx_toolbar_base_dhx_skyblue.in_layoutcell div.dhxtoolbar_hdrline_rr{display:none;}.dhx_toolbar_base_dhx_skyblue.in_layoutcell div.dhxtoolbar_hdrline_l{left:0!important;}.dhx_toolbar_base_dhx_skyblue.in_layoutcell div.dhxtoolbar_hdrline_r{right:0!important;}.dhx_toolbar_base_dhx_skyblue.in_acccell{background-image:url('imgs//dhxtoolbar_dhx_skyblue/dhxtoolbar_bg_acccell.gif')!important;}.dhx_toolbar_base_dhx_skyblue.in_acccell div.dhxtoolbar_hdrline_ll{display:none;}.dhx_toolbar_base_dhx_skyblue.in_acccell div.dhxtoolbar_hdrline_rr{display:none;}.dhx_toolbar_base_dhx_skyblue.in_acccell div.dhxtoolbar_hdrline_l{left:0!important;}.dhx_toolbar_base_dhx_skyblue.in_acccell div.dhxtoolbar_hdrline_r{right:0!important;}.dhx_tabbar_zone_dhx_skyblue .dhx_toolbar_base_dhx_skyblue div.dhxtoolbar_hdrline_ll{display:none;}.dhx_tabbar_zone_dhx_skyblue .dhx_toolbar_base_dhx_skyblue div.dhxtoolbar_hdrline_rr{display:none;}.dhx_tabbar_zone_dhx_skyblue .dhx_toolbar_base_dhx_skyblue div.dhxtoolbar_hdrline_l{left:0!important;}.dhx_tabbar_zone_dhx_skyblue .dhx_toolbar_base_dhx_skyblue div.dhxtoolbar_hdrline_r{right:0!important;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_body_inner .dhx_toolbar_base_dhx_skyblue,.dhx_acc_base_dhx_skyblue .dhx_toolbar_base_dhx_skyblue,table.dhtmlxLayoutPolyContainer_dhx_skyblue td.dhtmlxLayoutSinglePoly .dhx_toolbar_base_dhx_skyblue{border:none;}.dhx_toolbar_base_dhx_skyblue div.dhxtoolbar_spacer.float_right{float:right;}.dhx_toolbar_base_dhx_skyblue div.dhxtoolbar_spacer.float_left{float:left;}.dhxtoolbar_maxopen_test{position:absolute;width:200px;height:50px;overflow-x:none;overflow-y:auto;left:-300px;top:100px;border:1px solid white;visibility:hidden;}.dhxtoolbar_maxopen_test2{height:200px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_body_outer{position:absolute;overflow:hidden;left:0;top:0;abackground-color:#FFF;background-color:#c2d5dc;background-image:url('imgs//dhxwins_dhx_skyblue/active/header_bg.gif');background-repeat:repeat-x;background-position:top;border:#a4bed4 1px solid;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_body_outer div.dhtmlx_wins_body_inner{position:absolute;overflow:hidden;aborder:#c2d5dc 5px solid;aborder:#a4bed4 1px solid;aborder-top:none;background-color:#ebebeb!important;border:#ebebeb 2px solid!important;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active .dhtmlx_wins_no_header{border-top:#c2d5dc 6px solid!important;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_title{position:absolute;top:0;height:29px;line-height:29px;vertical-align:middle;padding-left:28px;left:0;color:#000;font-family:Tahoma;font-size:11px;font-weight:bold;cursor:default;white-space:nowrap;overflow:hidden;-moz-user-select:none;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_progress{background-image:url('imgs//dhxwins_dhx_skyblue/active/progress.gif');}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_close_default{background-position:-96px 0;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_close_disabled{background-position:-96px -48px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_close_over_default{background-position:-96px -16px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_close_over_pressed{background-position:-96px -32px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_minmax1_default{background-position:-64px 0;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_minmax1_disabled{background-position:-64px -48px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_minmax1_over_default{background-position:-64px -16px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_minmax1_over_pressed{background-position:-64px -32px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_minmax2_default{background-position:-80px 0;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_minmax2_disabled{background-position:-80px -48px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_minmax2_over_default{background-position:-80px -16px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_minmax2_over_pressed{background-position:-80px -32px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_park_default{background-position:-48px 0;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_park_disabled{background-position:-48px -48px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_park_over_default{background-position:-48px -16px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_park_over_pressed{background-position:-48px -32px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_stick_default{background-position:0 0;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_stick_disabled{background-position:0 -48px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_stick_over_default{background-position:0 -16px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_stick_over_pressed{background-position:0 -32px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_sticked_default{background-position:-16px 0;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_sticked_disabled{background-position:-16px -48px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_sticked_over_default{background-position:-16px -16px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_sticked_over_pressed{background-position:-16px -32px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_help_default{background-position:-32px 0;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_help_disabled{background-position:-32px -48px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_help_over_default{background-position:-32px -16px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_help_over_pressed{background-position:-32px -32px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_dock_default{background-position:-112px 0;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_dock_disabled{background-position:-112px -48px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_dock_over_default{background-position:-112px -16px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_active div.dhtmlx_wins_btns .dhtmlx_button_dock_over_pressed{background-position:-112px -32px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_body_outer{position:absolute;overflow:hidden;left:0;top:0;background-color:#dbe6f3;background-image:url('imgs//dhxwins_dhx_skyblue/inactive/header_bg.gif');background-repeat:repeat-x;background-position:top;border:#c9d9e6 1px solid;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_body_outer div.dhtmlx_wins_body_inner{position:absolute;overflow:hidden;aaborder:#dbe6f3 5px solid;border-top:none;aabackground-color:#FFF;background-color:#ebebeb!important;border:#ebebeb 2px solid!important;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive .dhtmlx_wins_no_header{border-top:#c2d5dc 6px solid;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_title{position:absolute;top:0;height:29px;line-height:29px;vertical-align:middle;padding-left:28px;left:0;color:#686868;font-family:Tahoma;font-size:11px;font-weight:bold;cursor:default;white-space:nowrap;overflow:hidden;-moz-user-select:none;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_progress{background-image:url('imgs//dhxwins_dhx_skyblue/inactive/progress.gif');}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_close_default{background-position:-96px -64px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_close_disabled{background-position:-96px -112px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_close_over_default{background-position:-96px -80px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_close_over_pressed{background-position:-96px -96px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_minmax1_default{background-position:-64px -64px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_minmax1_disabled{background-position:-64px -112px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_minmax1_over_default{background-position:-64px -80px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_minmax1_over_pressed{background-position:-64px -96px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_minmax2_default{background-position:-80px -64px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_minmax2_disabled{background-position:-80px -112px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_minmax2_over_default{background-position:-80px -80px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_minmax2_over_pressed{background-position:-80px -96px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_park_default{background-position:-48px -64px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_park_disabled{background-position:-48px -112px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_park_over_default{background-position:-48px -80px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_park_over_pressed{background-position:-48px -96px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_stick_default{background-position:0 -64px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_stick_disabled{background-position:0 -112px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_stick_over_default{background-position:0 -80px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_stick_over_pressed{background-position:0 -96px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_sticked_default{background-position:-16px -64px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_sticked_disabled{background-position:-16px -112px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_sticked_over_default{background-position:-16px -80px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_sticked_over_pressed{background-position:-16px -96px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_help_default{background-position:-32px -64px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_help_disabled{background-position:-32px -112px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_help_over_default{background-position:-32px -80px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_help_over_pressed{background-position:-32px -96px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_dock_default{background-position:-112px -64px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_dock_disabled{background-position:-112px -112px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_dock_over_default{background-position:-112px -80px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_window_inactive div.dhtmlx_wins_btns .dhtmlx_button_dock_over_pressed{background-position:-112px -96px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_icon{position:absolute;top:7px;left:8px;width:16px;height:16px;border:none;z-index:1;-moz-user-select:none;background-repeat:no-repeat;font-size:1px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_btns{position:absolute;right:5px;top:6px;font-size:1px;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_btns div.dhtmlx_wins_btns_button{float:left;width:16px;height:16px;background-image:url('imgs//dhxwins_dhx_skyblue/buttons.gif');}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_resizer_t{position:absolute;left:0;top:0;width:100%;height:5px;font-size:1px;background:#FFF;z-index:1;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;-moz-user-select:none;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_resizer_l{position:absolute;left:0;top:0;width:5px;height:100%;font-size:1px;background:#FFF;z-index:1;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;-moz-user-select:none;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_resizer_r{position:absolute;right:0;top:0;width:5px;height:100%;font-size:1px;background:#FFF;z-index:1;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;-moz-user-select:none;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_resizer_b{position:absolute;left:0;bottom:0;width:100%;height:5px;font-size:1px;background:#FFF;z-index:1;filter:alpha(opacity=0);-moz-opacity:0;opacity:0;-moz-user-select:none;}.dhtmlx_skin_dhx_skyblue div.dhtmlx_wins_progress{position:absolute;top:5px;left:5px;width:16px;height:16px;background-repeat:no-repeat;}.dhtmlx_skin_dhx_skyblue div.dhxcont_sb_container{position:relative;height:24px;}.dhtmlx_skin_dhx_skyblue div.dhxcont_sb_container div.dhxcont_statusbar{position:relative;top:2px;height:22px;line-height:22px;background-image:url('imgs//dhxwins_dhx_skyblue/statusbar_bg.gif');background-repeat:repeat-x;width:auto;padding:0 4px;overflow:hidden;white-space:nowrap;border-top:none;border-bottom:none;border-left:#a4bed4 1px solid;border-right:#a4bed4 1px solid;font-family:Tahoma;font-size:11px;vertical-align:middle;color:#000;}.dhtmlx_skin_dhx_skyblue div.white_line{border-left:#FFF 1px solid;border-right:#FFF 1px solid;border-top:#FFF 1px solid;height:100%;}.dhtmlx_skin_dhx_skyblue div.white_line2{position:absolute;bottom:0;height:10px;width:100%;border-bottom:#FFF 1px solid;font-size:1px;}.dhtmlx_skin_dhx_skyblue .dhtmlxMenu_in_Window{aborder-bottom:#cedce8 1px solid;border-bottom:#a4bed4 1px solid;} \ No newline at end of file
diff --git a/samples/dhtmlx/dhtmlx.js b/samples/dhtmlx/dhtmlx.js
new file mode 100644
index 0000000..8ae2e4b
--- /dev/null
+++ b/samples/dhtmlx/dhtmlx.js
@@ -0,0 +1,1896 @@
+/*
+Copyright DHTMLX LTD. http://www.dhtmlx.com
+You allowed to use this component or parts of it under GPL terms
+To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com
+*/dhtmlx=function(a){for(var b in a)dhtmlx[b]=a[b];return dhtmlx};dhtmlx.extend_api=function(a,b,c){var d=window[a];if(d)window[a]=function(a){if(a&&typeof a=="object"&&!a.tagName){var c=d.apply(this,b._init?b._init(a):arguments),g;for(g in dhtmlx)if(b[g])this[b[g]](dhtmlx[g]);for(g in a)if(b[g])this[b[g]](a[g]);else g.indexOf("on")==0&&this.attachEvent(g,a[g])}else c=d.apply(this,arguments);b._patch&&b._patch(this);return c||this},window[a].prototype=d.prototype,c&&dhtmlXHeir(window[a].prototype,c)};
+dhtmlxAjax={get:function(a,b){var c=new dtmlXMLLoaderObject(!0);c.async=arguments.length<3;c.waitCall=b;c.loadXML(a);return c},post:function(a,b,c){var d=new dtmlXMLLoaderObject(!0);d.async=arguments.length<4;d.waitCall=c;d.loadXML(a,!0,b);return d},getSync:function(a){return this.get(a,null,!0)},postSync:function(a,b){return this.post(a,b,null,!0)}};
+function dtmlXMLLoaderObject(a,b,c,d){this.xmlDoc="";this.async=typeof c!="undefined"?c:!0;this.onloadAction=a||null;this.mainObject=b||null;this.waitCall=null;this.rSeed=d||!1;return this}
+dtmlXMLLoaderObject.prototype.waitLoadFunction=function(a){var b=!0;return this.check=function(){if(a&&a.onloadAction!=null&&(!a.xmlDoc.readyState||a.xmlDoc.readyState==4)&&b){b=!1;if(typeof a.onloadAction=="function")a.onloadAction(a.mainObject,null,null,null,a);if(a.waitCall)a.waitCall.call(this,a),a.waitCall=null}}};
+dtmlXMLLoaderObject.prototype.getXMLTopNode=function(a,b){if(this.xmlDoc.responseXML){var c=this.xmlDoc.responseXML.getElementsByTagName(a);c.length==0&&a.indexOf(":")!=-1&&(c=this.xmlDoc.responseXML.getElementsByTagName(a.split(":")[1]));var d=c[0]}else d=this.xmlDoc.documentElement;if(d)return this._retry=!1,d;if(_isIE&&!this._retry){var e=this.xmlDoc.responseText,b=this.xmlDoc;this._retry=!0;this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");this.xmlDoc.async=!1;this.xmlDoc.loadXML(e);return this.getXMLTopNode(a,
+b)}dhtmlxError.throwError("LoadXML","Incorrect XML",[b||this.xmlDoc,this.mainObject]);return document.createElement("DIV")};
+dtmlXMLLoaderObject.prototype.loadXMLString=function(a){if(_isIE)this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM"),this.xmlDoc.async=this.async,this.xmlDoc.onreadystatechange=function(){},this.xmlDoc.loadXML(a);else{var b=new DOMParser;this.xmlDoc=b.parseFromString(a,"text/xml")}if(this.onloadAction)this.onloadAction(this.mainObject,null,null,null,this);if(this.waitCall)this.waitCall(),this.waitCall=null};
+dtmlXMLLoaderObject.prototype.loadXML=function(a,b,c,d){this.rSeed&&(a+=(a.indexOf("?")!=-1?"&":"?")+"a_dhx_rSeed="+(new Date).valueOf());this.filePath=a;this.xmlDoc=!_isIE&&window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");if(this.async)this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this);this.xmlDoc.open(b?"POST":"GET",a,this.async);d?(this.xmlDoc.setRequestHeader("User-Agent","dhtmlxRPC v0.1 ("+navigator.userAgent+")"),this.xmlDoc.setRequestHeader("Content-type",
+"text/xml")):b&&this.xmlDoc.setRequestHeader("Content-type","application/x-www-form-urlencoded");this.xmlDoc.setRequestHeader("X-Requested-With","XMLHttpRequest");this.xmlDoc.send(c);this.async||(new this.waitLoadFunction(this))()};
+dtmlXMLLoaderObject.prototype.destructor=function(){return this.setXSLParamValue=this.getXMLTopNode=this.xmlNodeToJSON=this.doSerialization=this.loadXMLString=this.loadXML=this.doXSLTransToString=this.doXSLTransToObject=this.doXPathOpera=this.doXPath=this.xmlDoc=this.mainObject=this.onloadAction=this.filePath=this.rSeed=this.async=this._retry=this._getAllNamedChilds=this._filterXPath=null};
+dtmlXMLLoaderObject.prototype.xmlNodeToJSON=function(a){for(var b={},c=0;c<a.attributes.length;c++)b[a.attributes[c].name]=a.attributes[c].value;b._tagvalue=a.firstChild?a.firstChild.nodeValue:"";for(c=0;c<a.childNodes.length;c++){var d=a.childNodes[c].tagName;d&&(b[d]||(b[d]=[]),b[d].push(this.xmlNodeToJSON(a.childNodes[c])))}return b};function callerFunction(a,b){return this.handler=function(c){if(!c)c=window.event;a(c,b);return!0}}function getAbsoluteLeft(a){return getOffset(a).left}
+function getAbsoluteTop(a){return getOffset(a).top}function getOffsetSum(a){for(var b=0,c=0;a;)b+=parseInt(a.offsetTop),c+=parseInt(a.offsetLeft),a=a.offsetParent;return{top:b,left:c}}
+function getOffsetRect(a){var b=a.getBoundingClientRect(),c=document.body,d=document.documentElement,e=window.pageYOffset||d.scrollTop||c.scrollTop,f=window.pageXOffset||d.scrollLeft||c.scrollLeft,g=d.clientTop||c.clientTop||0,h=d.clientLeft||c.clientLeft||0,i=b.top+e-g,j=b.left+f-h;return{top:Math.round(i),left:Math.round(j)}}function getOffset(a){return a.getBoundingClientRect?getOffsetRect(a):getOffsetSum(a)}
+function convertStringToBoolean(a){typeof a=="string"&&(a=a.toLowerCase());switch(a){case "1":case "true":case "yes":case "y":case 1:case !0:return!0;default:return!1}}function getUrlSymbol(a){return a.indexOf("?")!=-1?"&":"?"}function dhtmlDragAndDropObject(){if(window.dhtmlDragAndDrop)return window.dhtmlDragAndDrop;this.dragStartObject=this.dragStartNode=this.dragNode=this.lastLanding=0;this.tempDOMM=this.tempDOMU=null;this.waitDrag=0;window.dhtmlDragAndDrop=this;return this}
+dhtmlDragAndDropObject.prototype.removeDraggableItem=function(a){a.onmousedown=null;a.dragStarter=null;a.dragLanding=null};dhtmlDragAndDropObject.prototype.addDraggableItem=function(a,b){a.onmousedown=this.preCreateDragCopy;a.dragStarter=b;this.addDragLanding(a,b)};dhtmlDragAndDropObject.prototype.addDragLanding=function(a,b){a.dragLanding=b};
+dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(a){if(!((a||window.event)&&(a||event).button==2)){if(window.dhtmlDragAndDrop.waitDrag)return window.dhtmlDragAndDrop.waitDrag=0,document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU,document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM,!1;window.dhtmlDragAndDrop.dragNode&&window.dhtmlDragAndDrop.stopDrag(a);window.dhtmlDragAndDrop.waitDrag=1;window.dhtmlDragAndDrop.tempDOMU=document.body.onmouseup;window.dhtmlDragAndDrop.tempDOMM=
+document.body.onmousemove;window.dhtmlDragAndDrop.dragStartNode=this;window.dhtmlDragAndDrop.dragStartObject=this.dragStarter;document.body.onmouseup=window.dhtmlDragAndDrop.preCreateDragCopy;document.body.onmousemove=window.dhtmlDragAndDrop.callDrag;window.dhtmlDragAndDrop.downtime=(new Date).valueOf();a&&a.preventDefault&&a.preventDefault();return!1}};
+dhtmlDragAndDropObject.prototype.callDrag=function(a){if(!a)a=window.event;dragger=window.dhtmlDragAndDrop;if(!((new Date).valueOf()-dragger.downtime<100)){if(!dragger.dragNode)if(dragger.waitDrag){dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode,a);if(!dragger.dragNode)return dragger.stopDrag();dragger.dragNode.onselectstart=function(){return!1};dragger.gldragNode=dragger.dragNode;document.body.appendChild(dragger.dragNode);document.body.onmouseup=dragger.stopDrag;dragger.waitDrag=
+0;dragger.dragNode.pWindow=window;dragger.initFrameRoute()}else return dragger.stopDrag(a,!0);if(dragger.dragNode.parentNode!=window.document.body&&dragger.gldragNode){var b=dragger.gldragNode;if(dragger.gldragNode.old)b=dragger.gldragNode.old;b.parentNode.removeChild(b);var c=dragger.dragNode.pWindow;b.pWindow&&b.pWindow.dhtmlDragAndDrop.lastLanding&&b.pWindow.dhtmlDragAndDrop.lastLanding.dragLanding._dragOut(b.pWindow.dhtmlDragAndDrop.lastLanding);if(_isIE){var d=document.createElement("Div");d.innerHTML=
+dragger.dragNode.outerHTML;dragger.dragNode=d.childNodes[0]}else dragger.dragNode=dragger.dragNode.cloneNode(!0);dragger.dragNode.pWindow=window;dragger.gldragNode.old=dragger.dragNode;document.body.appendChild(dragger.dragNode);c.dhtmlDragAndDrop.dragNode=dragger.dragNode}dragger.dragNode.style.left=a.clientX+15+(dragger.fx?dragger.fx*-1:0)+(document.body.scrollLeft||document.documentElement.scrollLeft)+"px";dragger.dragNode.style.top=a.clientY+3+(dragger.fy?dragger.fy*-1:0)+(document.body.scrollTop||
+document.documentElement.scrollTop)+"px";var e=a.srcElement?a.srcElement:a.target;dragger.checkLanding(e,a)}};dhtmlDragAndDropObject.prototype.calculateFramePosition=function(a){if(window.name){for(var b=parent.frames[window.name].frameElement.offsetParent,c=0,d=0;b;)c+=b.offsetLeft,d+=b.offsetTop,b=b.offsetParent;if(parent.dhtmlDragAndDrop){var e=parent.dhtmlDragAndDrop.calculateFramePosition(1);c+=e.split("_")[0]*1;d+=e.split("_")[1]*1}if(a)return c+"_"+d;else this.fx=c;this.fy=d}return"0_0"};
+dhtmlDragAndDropObject.prototype.checkLanding=function(a,b){a&&a.dragLanding?(this.lastLanding&&this.lastLanding.dragLanding._dragOut(this.lastLanding),this.lastLanding=a,this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding,this.dragStartNode,b.clientX,b.clientY,b),this.lastLanding_scr=_isIE?b.srcElement:b.target):a&&a.tagName!="BODY"?this.checkLanding(a.parentNode,b):(this.lastLanding&&this.lastLanding.dragLanding._dragOut(this.lastLanding,b.clientX,b.clientY,b),this.lastLanding=
+0,this._onNotFound&&this._onNotFound())};
+dhtmlDragAndDropObject.prototype.stopDrag=function(a,b){dragger=window.dhtmlDragAndDrop;if(!b){dragger.stopFrameRoute();var c=dragger.lastLanding;dragger.lastLanding=null;c&&c.dragLanding._drag(dragger.dragStartNode,dragger.dragStartObject,c,_isIE?event.srcElement:a.target)}dragger.lastLanding=null;dragger.dragNode&&dragger.dragNode.parentNode==document.body&&dragger.dragNode.parentNode.removeChild(dragger.dragNode);dragger.dragNode=0;dragger.gldragNode=0;dragger.fx=0;dragger.fy=0;dragger.dragStartNode=
+0;dragger.dragStartObject=0;document.body.onmouseup=dragger.tempDOMU;document.body.onmousemove=dragger.tempDOMM;dragger.tempDOMU=null;dragger.tempDOMM=null;dragger.waitDrag=0};dhtmlDragAndDropObject.prototype.stopFrameRoute=function(a){a&&window.dhtmlDragAndDrop.stopDrag(1,1);for(var b=0;b<window.frames.length;b++)try{window.frames[b]!=a&&window.frames[b].dhtmlDragAndDrop&&window.frames[b].dhtmlDragAndDrop.stopFrameRoute(window)}catch(c){}try{parent.dhtmlDragAndDrop&&parent!=window&&parent!=a&&parent.dhtmlDragAndDrop.stopFrameRoute(window)}catch(d){}};
+dhtmlDragAndDropObject.prototype.initFrameRoute=function(a,b){if(a)window.dhtmlDragAndDrop.preCreateDragCopy(),window.dhtmlDragAndDrop.dragStartNode=a.dhtmlDragAndDrop.dragStartNode,window.dhtmlDragAndDrop.dragStartObject=a.dhtmlDragAndDrop.dragStartObject,window.dhtmlDragAndDrop.dragNode=a.dhtmlDragAndDrop.dragNode,window.dhtmlDragAndDrop.gldragNode=a.dhtmlDragAndDrop.dragNode,window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag,window.waitDrag=0,!_isIE&&b&&(!_isFF||_FFrv<1.8)&&window.dhtmlDragAndDrop.calculateFramePosition();
+try{parent.dhtmlDragAndDrop&&parent!=window&&parent!=a&&parent.dhtmlDragAndDrop.initFrameRoute(window)}catch(c){}for(var d=0;d<window.frames.length;d++)try{window.frames[d]!=a&&window.frames[d].dhtmlDragAndDrop&&window.frames[d].dhtmlDragAndDrop.initFrameRoute(window,!a||b?1:0)}catch(e){}};_OperaRv=_KHTMLrv=_FFrv=_isChrome=_isMacOS=_isKHTML=_isOpera=_isIE=_isFF=!1;navigator.userAgent.indexOf("Macintosh")!=-1&&(_isMacOS=!0);navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(_isChrome=!0);
+navigator.userAgent.indexOf("Safari")!=-1||navigator.userAgent.indexOf("Konqueror")!=-1?(_KHTMLrv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Safari")+7,5)),_KHTMLrv>525?(_isFF=!0,_FFrv=1.9):_isKHTML=!0):navigator.userAgent.indexOf("Opera")!=-1?(_isOpera=!0,_OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Opera")+6,3))):navigator.appName.indexOf("Microsoft")!=-1?(_isIE=!0,navigator.appVersion.indexOf("MSIE 8.0")!=-1&&document.compatMode!="BackCompat"&&
+(_isIE=8),navigator.appVersion.indexOf("MSIE 9.0")!=-1&&document.compatMode!="BackCompat"&&(_isIE=8)):(_isFF=!0,_FFrv=parseFloat(navigator.userAgent.split("rv:")[1]));
+dtmlXMLLoaderObject.prototype.doXPath=function(a,b,c,d){if(_isKHTML||!_isIE&&!window.XPathResult)return this.doXPathOpera(a,b);if(_isIE)return b||(b=this.xmlDoc.nodeName?this.xmlDoc:this.xmlDoc.responseXML),b||dhtmlxError.throwError("LoadXML","Incorrect XML",[b||this.xmlDoc,this.mainObject]),c!=null&&b.setProperty("SelectionNamespaces","xmlns:xsl='"+c+"'"),d=="single"?b.selectSingleNode(a):b.selectNodes(a)||[];else{var e=b;b||(b=this.xmlDoc.nodeName?this.xmlDoc:this.xmlDoc.responseXML);b||dhtmlxError.throwError("LoadXML",
+"Incorrect XML",[b||this.xmlDoc,this.mainObject]);b.nodeName.indexOf("document")!=-1?e=b:(e=b,b=b.ownerDocument);var f=XPathResult.ANY_TYPE;if(d=="single")f=XPathResult.FIRST_ORDERED_NODE_TYPE;var g=[],h=b.evaluate(a,e,function(){return c},f,null);if(f==XPathResult.FIRST_ORDERED_NODE_TYPE)return h.singleNodeValue;for(var i=h.iterateNext();i;)g[g.length]=i,i=h.iterateNext();return g}};function L(){if(!this.catches)this.catches=[];return this}L.prototype.catchError=function(a,b){this.catches[a]=b};
+L.prototype.throwError=function(a,b,c){if(this.catches[a])return this.catches[a](a,b,c);if(this.catches.ALL)return this.catches.ALL(a,b,c);alert("Error type: "+a+"\nDescription: "+b);return null};window.dhtmlxError=new L;
+dtmlXMLLoaderObject.prototype.doXPathOpera=function(a,b){var c=a.replace(/[\/]+/gi,"/").split("/"),d=null,e=1;if(!c.length)return[];if(c[0]==".")d=[b];else if(c[0]=="")d=(this.xmlDoc.responseXML||this.xmlDoc).getElementsByTagName(c[e].replace(/\[[^\]]*\]/g,"")),e++;else return[];for(;e<c.length;e++)d=this._getAllNamedChilds(d,c[e]);c[e-1].indexOf("[")!=-1&&(d=this._filterXPath(d,c[e-1]));return d};
+dtmlXMLLoaderObject.prototype._filterXPath=function(a,b){for(var c=[],b=b.replace(/[^\[]*\[\@/g,"").replace(/[\[\]\@]*/g,""),d=0;d<a.length;d++)a[d].getAttribute(b)&&(c[c.length]=a[d]);return c};
+dtmlXMLLoaderObject.prototype._getAllNamedChilds=function(a,b){var c=[];_isKHTML&&(b=b.toUpperCase());for(var d=0;d<a.length;d++)for(var e=0;e<a[d].childNodes.length;e++)_isKHTML?a[d].childNodes[e].tagName&&a[d].childNodes[e].tagName.toUpperCase()==b&&(c[c.length]=a[d].childNodes[e]):a[d].childNodes[e].tagName==b&&(c[c.length]=a[d].childNodes[e]);return c};function dhtmlXHeir(a,b){for(var c in b)typeof b[c]=="function"&&(a[c]=b[c]);return a}
+function dhtmlxEvent(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)}dtmlXMLLoaderObject.prototype.xslDoc=null;dtmlXMLLoaderObject.prototype.setXSLParamValue=function(a,b,c){if(!c)c=this.xslDoc;if(c.responseXML)c=c.responseXML;var d=this.doXPath("/xsl:stylesheet/xsl:variable[@name='"+a+"']",c,"http://www.w3.org/1999/XSL/Transform","single");if(d!=null)d.firstChild.nodeValue=b};
+dtmlXMLLoaderObject.prototype.doXSLTransToObject=function(a,b){if(!a)a=this.xslDoc;if(a.responseXML)a=a.responseXML;if(!b)b=this.xmlDoc;if(b.responseXML)b=b.responseXML;if(_isIE){d=new ActiveXObject("Msxml2.DOMDocument.3.0");try{b.transformNodeToObject(a,d)}catch(c){d=b.transformNode(a)}}else{if(!this.XSLProcessor)this.XSLProcessor=new XSLTProcessor,this.XSLProcessor.importStylesheet(a);var d=this.XSLProcessor.transformToDocument(b)}return d};
+dtmlXMLLoaderObject.prototype.doXSLTransToString=function(a,b){var c=this.doXSLTransToObject(a,b);return typeof c=="string"?c:this.doSerialization(c)};dtmlXMLLoaderObject.prototype.doSerialization=function(a){if(!a)a=this.xmlDoc;if(a.responseXML)a=a.responseXML;if(_isIE)return a.xml;else{var b=new XMLSerializer;return b.serializeToString(a)}};
+dhtmlxEventable=function(a){a.attachEvent=function(a,c,d){a="ev_"+a.toLowerCase();this[a]||(this[a]=new this.eventCatcher(d||this));return a+":"+this[a].addEvent(c)};a.callEvent=function(a,c){a="ev_"+a.toLowerCase();return this[a]?this[a].apply(this,c):!0};a.checkEvent=function(a){return!!this["ev_"+a.toLowerCase()]};a.eventCatcher=function(a){var c=[],d=function(){for(var d=!0,f=0;f<c.length;f++)if(c[f]!=null)var g=c[f].apply(a,arguments),d=d&&g;return d};d.addEvent=function(a){typeof a!="function"&&
+(a=eval(a));return a?c.push(a)-1:!1};d.removeEvent=function(a){c[a]=null};return d};a.detachEvent=function(a){if(a!=!1){var c=a.split(":");this[c[0]].removeEvent(c[1])}};a.detachAllEvents=function(){for(var a in this)a.indexOf("ev_")==0&&delete this[a]}};
+(function(){var a=dhtmlx.message=function(b,c,d,e){if(!a.area)a.area=document.createElement("DIV"),a.area.style.cssText="position:absolute;right:5px;width:250px;z-index:100;",a.area.className="dhtmlx_message_area",a.area.style[a.defPosition]="5px",document.body.appendChild(a.area);typeof b!="object"&&(b={text:b,type:c,lifetime:d,id:e});b.type=b.type||"info";b.id=b.id||a.uid();b.lifetime=b.lifetime||a.defTimeout;a.hide(b.id);var f=document.createElement("DIV");f.style.cssText="border-radius:4px; padding:4px 4px 4px 20px;background-color:#FFFFCC;font-size:12px;font-family:Tahoma;color:navy;z-index: 10000;margin:5px;border:1px solid lightgrey;";
+f.innerHTML=b.text;f.className=b.type;a.defPosition=="bottom"&&a.area.firstChild?a.area.insertBefore(f,a.area.firstChild):a.area.appendChild(f);a.timers[b.id]=window.setTimeout(function(){a.hide(b.id)},b.lifetime);a.pull[b.id]=f;return b.id};a.defTimeout=4E3;a.defPosition="top";a.pull={};a.timers={};a.seed=(new Date).valueOf();a.uid=function(){return a.seed++};a.hideAll=function(){for(var b in a.pull)a.hide(b)};a.hide=function(b){var c=a.pull[b];c&&c.parentNode&&(c.parentNode.removeChild(c),window.clearTimeout(a.timers[b]),
+delete a.pull[b])}})();function dhtmlXAccordionItem(){}
+function dhtmlXAccordion(a,b){if(window.dhtmlXContainer){var c=this;this.skin=b!=null?b:"dhx_skyblue";if(a==document.body){this._isAccFS=!0;document.body.className+=" dhxacc_fullscreened";var d=document.createElement("DIV");d.className="dhxcont_global_layout_area";a.appendChild(d);this.cont=new dhtmlXContainer(a);this.cont.setContent(d);a.adjustContent(a,0);this.base=document.createElement("DIV");this.base.className="dhx_acc_base_"+this.skin;this.base.style.overflow="hidden";this.base.style.position=
+"absolute";this._adjustToFullScreen=function(){this.base.style.left="2px";this.base.style.top="2px";this.base.style.width=parseInt(d.childNodes[0].style.width)-4+"px";this.base.style.height=parseInt(d.childNodes[0].style.height)-4+"px"};this._adjustToFullScreen();d.childNodes[0].appendChild(this.base);this._resizeTM=null;this._resizeTMTime=400;this._doOnResize=function(){window.clearTimeout(c._resizeTM);c._resizeTM=window.setTimeout(function(){c._adjustAccordion()},c._resizeTMTime)};this._adjustAccordion=
+function(){document.body.adjustContent(document.body,0);this._adjustToFullScreen();this.setSizes()};dhtmlxEvent(window,"resize",this._doOnResize)}else this.base=typeof a=="string"?document.getElementById(a):a,this.base.className="dhx_acc_base_"+this.skin,this.base.innerHTML="";this.w=this.base.offsetWidth;this.h=this.base.offsetHeight;this.skinParams={dhx_blue:{cell_height:24,cell_space:1,content_offset:1},dhx_skyblue:{cell_height:27,cell_space:-1,content_offset:-1},dhx_black:{cell_height:24,cell_space:1,
+content_offset:1},dhx_web:{cell_height:26,cell_space:9,content_offset:0,cell_pading_max:1,cell_pading_min:0}};this.sk=this.skinParams[this.skin];this.setSkinParameters=function(a,b){isNaN(a)||(this.sk.cell_space=a);isNaN(b)||(this.sk.content_offset=b);this._reopenItem()};this.setSkin=function(a){if(this.skinParams[a]){this.skin=a;this.sk=this.skinParams[this.skin];this.base.className="dhx_acc_base_"+this.skin+(this._r?" dhx_acc_rtl":"");for(var b in this.idPull)this.idPull[b].skin=this.skin;this._reopenItem()}};
+this.idPull={};this.opened=null;this.cells=function(a){return this.idPull[a]==null?null:this.idPull[a]};this.itemH=90;this.multiMode=!1;this.enableMultiMode=function(){var a=0,b;for(b in this.idPull)a++;if(a==0)this.userOffset||(this.skinParams.dhx_skyblue.cell_space=3),this.multiMode=!0};this.userOffset=!1;this.setOffset=function(a,b){this.userOffset=!0;isNaN(a)||(this.skinParams[this.skin].cell_space=a);isNaN(b)||(this.skinParams[this.skin].content_offset=b);this.setSizes()};this.imagePath="";this.setIconsPath=
+function(a){this.imagePath=a};this.addItem=function(a,b){var d=document.createElement("DIV");d.className="dhx_acc_item";d.dir="ltr";d._isAcc=!0;d.skin=this.skin;this.base.appendChild(d);if(this.multiMode)d.h=this.itemH;var h=document.createElement("DIV");h._idd=a;h.className="dhx_acc_item_label";h.innerHTML="<span>"+b+"</span><div class='dhx_acc_item_label_btmbrd'>&nbsp;</div><div class='dhx_acc_item_arrow'></div><div class='dhx_acc_hdr_line_l'></div><div class='dhx_acc_hdr_line_r'></div>";h.onselectstart=
+function(a){a=a||event;a.returnValue=!1};h.onclick=function(){if(c.multiMode||!c.idPull[this._idd]._isActive)c.multiMode?c.idPull[this._idd]._isActive?c.checkEvent("onBeforeActive")?c.callEvent("onBeforeActive",[this._idd,"close"])&&c.closeItem(this._idd,"dhx_accord_outer_event"):c.closeItem(this._idd,"dhx_accord_outer_event"):c.checkEvent("onBeforeActive")?c.callEvent("onBeforeActive",[this._idd,"open"])&&c.openItem(this._idd,"dhx_accord_outer_event"):c.openItem(this._idd,"dhx_accord_outer_event"):
+c.checkEvent("onBeforeActive")?c.callEvent("onBeforeActive",[this._idd,"open"])&&c.openItem(this._idd,"dhx_accord_outer_event"):c.openItem(this._idd,"dhx_accord_outer_event")};h.onmouseover=function(){this.className="dhx_acc_item_label dhx_acc_item_lavel_hover"};h.onmouseout=function(){this.className="dhx_acc_item_label"};d.appendChild(h);var i=document.createElement("DIV");i.className="dhxcont_global_content_area";d.appendChild(i);var j=new dhtmlXContainer(d);j.setContent(i);d.adjustContent(d,this.sk.cell_height+
+this.sk.content_offset);d._id=a;this.idPull[a]=d;d.getId=function(){return this._id};d.setText=function(a){c.setText(this._id,a)};d.getText=function(){return c.getText(this._id)};d.open=function(){c.openItem(this._id)};d.isOpened=function(){return c.isActive(this._id)};d.close=function(){c.closeItem(this._id)};d.setIcon=function(a){c.setIcon(this._id,a)};d.clearIcon=function(){c.clearIcon(this._id)};d.dock=function(){c.dockItem(this._id)};d.undock=function(){c.undockItem(this._id)};d.show=function(){c.showItem(this._id)};
+d.hide=function(){c.hideItem(this._id)};d.setHeight=function(a){c.setItemHeight(this._id,a)};d.moveOnTop=function(){c.moveOnTop(this._id)};d._doOnAttachMenu=function(){c._reopenItem()};d._doOnAttachToolbar=function(){c._reopenItem()};d._doOnAttachStatusBar=function(){c._reopenItem()};this.openItem(a);this.multiMode||this._defineLastItem();return d};this.openItem=function(a,b,c){if(!this._openBuzy)if(this._enableOpenEffect&&!c)(!this.multiMode||!this.idPull[a]._isActive)&&this._openWithEffect(a,null,
+null,null,null,b);else if(this.multiMode)for(var d in this.idPull){if(this.idPull[d]._isActive||d==a)this.idPull[d].style.height=this.idPull[d].h+"px",this.idPull[d].childNodes[1].style.display="",this.skin=="dhx_web"&&this.idPull[d]._setPadding(this.skinParams[this.skin].cell_pading_max,"dhxcont_acc_dhx_web"),this.idPull[d].adjustContent(this.idPull[d],this.sk.cell_height+this.sk.content_offset,null,null,this.idPull[d]==this._lastVisible()&&this.skin!="dhx_web"?0:this.sk.cell_space),this.idPull[d].updateNestedObjects(),
+this.idPull[d]._isActive=!0,this._updateArrows(),b=="dhx_accord_outer_event"&&d==a&&this.callEvent("onActive",[a,!0])}else if(!a||!this.idPull[a]._isActive||c){var i=0;for(d in this.idPull)if(this.idPull[d].style.height=this.sk.cell_height+(this.idPull[d]!=this._lastVisible()&&d!=a?this.sk.cell_space:0)+"px",d!=a)this.idPull[d].childNodes[1].style.display="none",this.skin=="dhx_web"&&this.idPull[d]._setPadding(this.skinParams[this.skin].cell_pading_min,""),this.idPull[d]._isActive=!1,i+=this.idPull[d].offsetHeight;
+i=this.base.offsetHeight-i;if(a)this.idPull[a].style.height=i+"px",this.idPull[a].childNodes[1].style.display="",this.skin=="dhx_web"&&this.idPull[a]._setPadding(this.skinParams[this.skin].cell_pading_max,"dhxcont_acc_dhx_web"),this.idPull[a].adjustContent(this.idPull[a],this.sk.cell_height+this.sk.content_offset,null,null,this.idPull[a]==this._lastVisible()?0:this.sk.cell_space),this.idPull[a].updateNestedObjects(),this.idPull[a]._isActive=!0,b=="dhx_accord_outer_event"&&this.callEvent("onActive",
+[a,!0]);this._updateArrows()}};this._lastVisible=function(){for(var a=null,b=this.base.childNodes.length-1;b>=0;b--)!this.base.childNodes[b]._isHidden&&!a&&(a=this.base.childNodes[b]);return a};this.closeItem=function(a,b){if(this.idPull[a]!=null&&this.idPull[a]._isActive&&!this._openBuzy)this._enableOpenEffect?this._openWithEffect(this.multiMode?a:null,null,null,null,null,b):(this.idPull[a].style.height=this.sk.cell_height+(this.idPull[a]!=this._lastVisible()?this.sk.cell_space:0)+"px",this.idPull[a].childNodes[1].style.display=
+"none",this.skin=="dhx_web"&&this.idPull[a]._setPadding(this.skinParams[this.skin].cell_pading_min,""),this.idPull[a]._isActive=!1,b=="dhx_accord_outer_event"&&this.callEvent("onActive",[a,!1]),this._updateArrows())};this._updateArrows=function(){for(var a in this.idPull){for(var b=this.idPull[a].childNodes[0],c=null,d=0;d<b.childNodes.length;d++)String(b.childNodes[d].className).search("dhx_acc_item_arrow")!=-1&&(c=b.childNodes[d]);if(c!=null)c.className="dhx_acc_item_arrow "+(this.idPull[a]._isActive?
+"item_opened":"item_closed"),c=null}};this.setText=function(a,b,d){if(c.idPull[a]!=null){for(var h=c.idPull[a].childNodes[0],i=null,j=0;j<h.childNodes.length;j++)h.childNodes[j].tagName!=null&&String(h.childNodes[j].tagName).toLowerCase()=="span"&&(i=h.childNodes[j]);isNaN(d)?i.innerHTML=b:(i.style.paddingLeft=d+"px",i.style.paddingRight=d+"px")}};this.getText=function(a){if(c.idPull[a]!=null){for(var b=c.idPull[a].childNodes[0],d=null,h=0;h<b.childNodes.length;h++)b.childNodes[h].tagName!=null&&
+String(b.childNodes[h].tagName).toLowerCase()=="span"&&(d=b.childNodes[h]);return d.innerHTML}};this._initWindows=function(a){if(window.dhtmlXWindows){if(!this.dhxWins&&(this.dhxWins=new dhtmlXWindows,this.dhxWins.setSkin(this.skin),this.dhxWins.setImagePath(this.imagePath),this.dhxWinsIdPrefix="",!a))return;var b=this.dhxWinsIdPrefix+a;if(this.dhxWins.window(b))this.dhxWins.window(b).show();else{var c=this,d=this.dhxWins.createWindow(b,20,20,320,200);d.setText(this.getText(a));d.button("close").hide();
+d.attachEvent("onClose",function(a){a.hide()});d.addUserButton("dock",99,this.dhxWins.i18n.dock,"dock");d.button("dock").attachEvent("onClick",function(){c.cells(a).dock()})}}};this.dockWindow=function(a){if(this.idPull[a]._isUnDocked&&this.dhxWins&&this.dhxWins.window(this.dhxWinsIdPrefix+a))this.dhxWins.window(this.dhxWinsIdPrefix+a).moveContentTo(this.idPull[a]),this.dhxWins.window(this.dhxWinsIdPrefix+a).close(),this.idPull[a]._isUnDocked=!1,this.showItem(a),this.callEvent("onDock",[a])};this.undockWindow=
+function(a){if(!this.idPull[a]._isUnDocked)this._initWindows(a),this.idPull[a].moveContentTo(this.dhxWins.window(this.dhxWinsIdPrefix+a)),this.idPull[a]._isUnDocked=!0,this.hideItem(a),this.callEvent("onUnDock",[a])};this.setSizes=function(){this._reopenItem()};this.showItem=function(a){if(this.idPull[a]!=null&&this.idPull[a]._isHidden)this.idPull[a]._isUnDocked?this.dockItem(a):(this.idPull[a].className="dhx_acc_item",this.idPull[a]._isHidden=!1,this._defineLastItem(),this._reopenItem())};this.hideItem=
+function(a){if(this.idPull[a]!=null&&!this.idPull[a]._isHidden)this.closeItem(a),this.idPull[a].className="dhx_acc_item_hidden",this.idPull[a]._isHidden=!0,this._defineLastItem(),this._reopenItem()};this._reopenItem=function(){var a=null,b;for(b in this.idPull)this.idPull[b]._isActive&&!this.idPull[b]._isHidden&&(a=b);this.openItem(a,null,!0)};this.forEachItem=function(a){for(var b in this.idPull)a(this.idPull[b])};this._enableOpenEffect=!1;this._openStep=10;this._openStepIncrement=5;this._openStepTimeout=
+10;this._openBuzy=!1;this.setEffect=function(a){this._enableOpenEffect=a==!0?!0:!1};this._openWithEffect=function(a,b,c,d,i,j){if(this.multiMode){if(!i)this._openBuzy=!0,i=this._openStep,this.idPull[a]._isActive?(b=a,a=null,c=this.sk.cell_height+(this.idPull[b]!=this._lastVisible()?this.sk.cell_space:0),this.idPull[b].childNodes[1].style.display=""):(d=this.idPull[a].h,this.idPull[a].childNodes[1].style.display="");var k=!1;if(a){var m=parseInt(this.idPull[a].style.height)+i;m>d&&(m=d,k=!0);this.idPull[a].style.height=
+m+"px"}if(b)m=parseInt(this.idPull[b].style.height)-i,m<c&&(m=c,k=!0),this.idPull[b].style.height=m+"px";i+=this._openStepIncrement;if(k){if(a)this.idPull[a].adjustContent(this.idPull[a],this.sk.cell_height+this.sk.content_offset,null,null,this.idPull[a]==this._lastVisible()?0:this.sk.cell_space),this.idPull[a].updateNestedObjects(),this.idPull[a]._isActive=!0;if(b)this.idPull[b].childNodes[1].style.display="none",this.idPull[b]._isActive=!1;this._updateArrows();this._openBuzy=!1;a&&j=="dhx_accord_outer_event"&&
+this.callEvent("onActive",[a,!0]);b&&j=="dhx_accord_outer_event"&&this.callEvent("onActive",[b,!1])}else{var l=this;window.setTimeout(function(){l._openWithEffect(a,b,c,d,i,j)},this._openStepTimeout)}}else{if(!i&&(this._openBuzy=!0,i=this._openStep,a))this.idPull[a].childNodes[1].style.display="";if(!b||!c||!d){var d=c=0,n;for(n in this.idPull){var o=this.sk.cell_height+(this.idPull[n]!=this._lastVisible()&&n!=a?this.sk.cell_space:0);this.idPull[n]._isActive&&a!=n&&(b=n,c=o);n!=a&&(d+=o)}d=this.base.offsetHeight-
+d}k=!1;if(a){var p=parseInt(this.idPull[a].style.height)+i;p>d&&(k=!0)}if(b){var r=parseInt(this.idPull[b].style.height)-i;r<c&&(k=!0)}i+=this._openStepIncrement;k&&(p=d,r=c);if(b)this.idPull[b].style.height=r+"px";if(a)this.idPull[a].style.height=p+"px";if(k){if(b)this.idPull[b].childNodes[1].style.display="none",this.idPull[b]._isActive=!1;if(a)this.idPull[a].adjustContent(this.idPull[a],this.sk.cell_height+this.sk.content_offset,null,null,this.idPull[a]==this._lastVisible()?0:this.sk.cell_space),
+this.idPull[a].updateNestedObjects(),this.idPull[a]._isActive=!0;this._updateArrows();this._openBuzy=!1;j=="dhx_accord_outer_event"&&a&&this.callEvent("onActive",[a,!0])}else l=this,window.setTimeout(function(){l._openWithEffect(a,b,c,d,i,j)},this._openStepTimeout)}};this.setActive=function(a){this.openItem(a)};this.isActive=function(a){return this.idPull[a]._isActive===!0?!0:!1};this.dockItem=function(a){this.dockWindow(a)};this.undockItem=function(a){this.undockWindow(a)};this.setItemHeight=function(a,
+b){if(this.multiMode&&!isNaN(b))this.idPull[a].h=b,this._reopenItem()};this.setIcon=function(a,b){if(this.idPull[a]!=null){for(var c=this.idPull[a].childNodes[0],d=null,i=0;i<c.childNodes.length;i++)c.childNodes[i].className=="dhx_acc_item_icon"&&(d=c.childNodes[i]);if(d==null)d=document.createElement("IMG"),d.className="dhx_acc_item_icon",c.insertBefore(d,c.childNodes[0]),this.setText(a,null,20);d.src=this.imagePath+b}};this.clearIcon=function(a){if(this.idPull[a]!=null){for(var b=this.idPull[a].childNodes[0],
+c=null,d=0;d<b.childNodes.length;d++)b.childNodes[d].className=="dhx_acc_item_icon"&&(c=b.childNodes[d]);c!=null&&(b.removeChild(c),c=null,this.setText(a,null,0))}};this.moveOnTop=function(a){this.idPull[a]&&!(this.base.childNodes.length<=1)&&(this.base.insertBefore(this.idPull[a],this.base.childNodes[0]),this.setSizes())};this._defineLastItem=function(){if(!this.multiMode)for(var a=!1,b=this.base.childNodes.length-1;b>=0;b--)if(this.base.childNodes[b].className.search("last_item")>=0){if(this.base.childNodes[b]._isHidden||
+a)this.base.childNodes[b].className=String(this.base.childNodes[b].className).replace(/last_item/gi,"")}else!this.base.childNodes[b]._isHidden&&!a&&(this.base.childNodes[b].className+=" last_item",a=!0)};this.removeItem=function(a){var b=this.idPull[a],c=b.childNodes[0];c.onclick=null;c.onmouseover=null;c.onmouseout=null;c.onselectstart=null;c._idd=null;c.className="";for(b._dhxContDestruct();c.childNodes.length>0;)c.removeChild(c.childNodes[0]);c.parentNode&&c.parentNode.removeChild(c);for(c=null;b.childNodes.length>
+0;)b.removeChild(b.childNodes[0]);b._dhxContDestruct=null;b._doOnAttachMenu=null;b._doOnAttachToolbar=null;b._doOnAttachStatusBar=null;b.clearIcon=null;b.close=null;b.dock=null;b.getId=null;b.getText=null;b.hide=null;b.isOpened=null;b.open=null;b.setHeight=null;b.setIcon=null;b.setText=null;b.show=null;b.undock=null;b.parentNode&&b.parentNode.removeChild(b);b=null;this.idPull[a]=null;try{delete this.idPull[a]}catch(d){}};this.unload=function(){for(var a in this.skinParams){this.skinParams[a]=null;
+try{delete this.skinParams[a]}catch(b){}}this.skinParams=null;for(a in this.idPull)this.removeItem(a);this.userOffset=this.unload=this.undockWindowunload=this.undockWindow=this.undockItem=this.w=this.skin=this.showItem=this.setText=this.setSkinParameters=this.setSkin=this.setSizes=this.setOffset=this.setItemHeight=this.setIconsPath=this.setIcon=this.setEffect=this.setActive=this.removeItem=this.openItem=this.multiMode=this.itemH=this.isActive=this.imagePath=this.hideItem=this.h=this.getText=this.forEachItem=
+this.eventCatcher=this.enableMultiMode=this.dockWindow=this.dockItem=this.detachEvent=this.closeItem=this.clearIcon=this.checkEvent=this.cells=this.callEvent=this.attachEvent=this.addItem=this._updateArrows=this._reopenItem=this._lastVisible=this._initWindows=this.sk=this.idPull=null;if(this._isAccFS==!0)_isIE?window.detachEvent("onresize",this._doOnResize):window.removeEventListener("resize",this._doOnResize,!1),this._resizeTMTime=this._resizeTM=this._adjustToFullScreen=this._adjustAccordion=this._doOnResize=
+this._isAccFS=null,document.body.className=String(document.body.className).replace("dhxacc_fullscreened",""),this.cont.obj._dhxContDestruct(),this.cont.dhxcont.parentNode&&this.cont.dhxcont.parentNode.removeChild(this.cont.dhxcont),this.cont.dhxcont=null,this.cont=this.cont.setContent=null;if(this.dhxWins)this.dhxWins.unload(),this.dhxWins=null;this.base.className="";this.base=null;for(a in this)try{delete this[a]}catch(c){}};this._initWindows();dhtmlxEventable(this);return this}else alert(this.i18n.dhxcontalert)}
+dhtmlXAccordion.prototype.i18n={dhxcontalert:"dhtmlxcontainer.js is missed on the page"};
+(function(){dhtmlx.extend_api("dhtmlXAccordion",{_init:function(a){return[a.parent,a.skin]},icon_path:"setIconsPath",items:"_items",effect:"setEffect",multi_mode:"enableMultiMode"},{_items:function(a){for(var b=[],c=[],d=0;d<a.length;d++){var e=a[d];this.addItem(e.id,e.text);e.img&&this.cells(e.id).setIcon(e.img);e.height&&this.cells(e.id).setHeight(e.height);if(e.open===!0)b[b.length]=e.id;if(e.open===!1)c[c.length]=e.id}for(var f=0;f<b.length;f++)this.cells(b[f]).open();for(f=0;f<c.length;f++)this.cells(c[f]).close()}})})();
+function dhtmlXContainer(a){var b=this;this.obj=a;this.dhxcont=null;this.st=document.createElement("DIV");this.st.style.position="absolute";this.st.style.left="-200px";this.st.style.top="0px";this.st.style.width="100px";this.st.style.height="1px";this.st.style.visibility="hidden";this.st.style.overflow="hidden";document.body.insertBefore(this.st,document.body.childNodes[0]);this.obj._getSt=function(){return b.st};this.obj.dv="def";this.obj.av=this.obj.dv;this.obj.cv=this.obj.av;this.obj.vs={};this.obj.vs[this.obj.av]=
+{};this.obj.view=function(a){if(!this.vs[a]){this.vs[a]={};this.vs[a].dhxcont=this.vs[this.dv].dhxcont;var c=document.createElement("DIV");c.style.position="relative";c.style.left="0px";c.style.width="200px";c.style.height="200px";c.style.overflow="hidden";c.style.visibility="";b.st.appendChild(c);this.vs[a].dhxcont.mainCont[a]=c}this.avt=this.av;this.av=a;return this};this.obj.setActive=function(){if(this.vs[this.av])this.cv=this.av,this.vs[this.avt].dhxcont==this.vs[this.avt].dhxcont.mainCont[this.avt].parentNode&&
+(b.st.appendChild(this.vs[this.avt].dhxcont.mainCont[this.avt]),this.vs[this.avt].menu&&b.st.appendChild(document.getElementById(this.vs[this.avt].menuId)),this.vs[this.avt].toolbar&&b.st.appendChild(document.getElementById(this.vs[this.avt].toolbarId)),this.vs[this.avt].sb&&b.st.appendChild(document.getElementById(this.vs[this.avt].sbId))),this.vs[this.av].dhxcont!=this.vs[this.av].dhxcont.mainCont[this.av].parentNode&&(this.vs[this.av].dhxcont.insertBefore(this.vs[this.av].dhxcont.mainCont[this.av],
+this.vs[this.av].dhxcont.childNodes[this.vs[this.av].dhxcont.childNodes.length-1]),this.vs[this.av].menu&&this.vs[this.av].dhxcont.insertBefore(document.getElementById(this.vs[this.av].menuId),this.vs[this.av].dhxcont.childNodes[0]),this.vs[this.av].toolbar&&this.vs[this.av].dhxcont.insertBefore(document.getElementById(this.vs[this.av].toolbarId),this.vs[this.av].dhxcont.childNodes[this.vs[this.av].menu?1:0]),this.vs[this.av].sb&&this.vs[this.av].dhxcont.insertBefore(document.getElementById(this.vs[this.av].sbId),
+this.vs[this.av].dhxcont.childNodes[this.vs[this.av].dhxcont.childNodes.length-1])),this._doOnResize&&this._doOnResize(),this.avt=null};this.obj._viewRestore=function(){var a=this.av;if(this.avt)this.av=this.avt,this.avt=null;return a};this.setContent=function(a){this.obj.vs[this.obj.av].dhxcont=a;this.obj._init()};this.obj._init=function(){this.vs[this.av].dhxcont.innerHTML="<div ida='dhxMainCont' style='position: relative; left: 0px; top: 0px; overflow: hidden;'></div><div ida='dhxContBlocker' class='dhxcont_content_blocker' style='display: none;'></div>";
+this.vs[this.av].dhxcont.mainCont={};this.vs[this.av].dhxcont.mainCont[this.av]=this.vs[this.av].dhxcont.childNodes[0]};this.obj._genStr=function(a){for(var b="",c="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",g=0;g<a;g++)b+=c.charAt(Math.round(Math.random()*(c.length-1)));return b};this.obj.setMinContentSize=function(a,b){this.vs[this.av]._minDataSizeW=a;this.vs[this.av]._minDataSizeH=b};this.obj._setPadding=function(a,b){typeof a=="object"?(this._offsetTop=a[0],this._offsetLeft=
+a[1],this._offsetWidth=a[2],this._offsetHeight=a[3]):(this._offsetLeft=this._offsetTop=a,this._offsetWidth=-a*2,this._offsetHeight=-a*2);this.vs[this.av].dhxcont.className="dhxcont_global_content_area "+(b||"")};this.obj.moveContentTo=function(a){for(var b in this.vs){a.view(b).setActive();var c=null;this.vs[b].grid&&(c="grid");this.vs[b].tree&&(c="tree");this.vs[b].tabbar&&(c="tabbar");this.vs[b].folders&&(c="folders");this.vs[b].layout&&(c="layout");c!=null&&(a.view(b).attachObject(this.vs[b][c+
+"Id"]),a.vs[b][c]=this.vs[b][c],a.vs[b][c+"Id"]=this.vs[b][c+"Id"],a.vs[b][c+"Obj"]=this.vs[b][c+"Obj"],this.vs[b][c]=null,this.vs[b][c+"Id"]=null,this.vs[b][c+"Obj"]=null);if(this.vs[b]._frame)a.vs[b]._frame=this.vs[b]._frame,this.vs[b]._frame=null;if(this.vs[b].menu!=null)a.cv==a.av?a.vs[a.av].dhxcont.insertBefore(document.getElementById(this.vs[b].menuId),a.vs[a.av].dhxcont.childNodes[0]):a._getSt().appendChild(document.getElementById(this.vs[b].menuId)),a.vs[b].menu=this.vs[b].menu,a.vs[b].menuId=
+this.vs[b].menuId,a.vs[b].menuHeight=this.vs[b].menuHeight,this.vs[b].menu=null,this.vs[b].menuId=null,this.vs[b].menuHeight=null,this.cv==this.av&&this._doOnAttachMenu&&this._doOnAttachMenu("unload"),a.cv==a.av&&a._doOnAttachMenu&&a._doOnAttachMenu("move");if(this.vs[b].toolbar!=null)a.cv==a.av?a.vs[a.av].dhxcont.insertBefore(document.getElementById(this.vs[b].toolbarId),a.vs[a.av].dhxcont.childNodes[a.vs[a.av].menu!=null?1:0]):a._getSt().appendChild(document.getElementById(this.vs[b].toolbarId)),
+a.vs[b].toolbar=this.vs[b].toolbar,a.vs[b].toolbarId=this.vs[b].toolbarId,a.vs[b].toolbarHeight=this.vs[b].toolbarHeight,this.vs[b].toolbar=null,this.vs[b].toolbarId=null,this.vs[b].toolbarHeight=null,this.cv==this.av&&this._doOnAttachToolbar&&this._doOnAttachToolbar("unload"),a.cv==a.av&&a._doOnAttachToolbar&&a._doOnAttachToolbar("move");if(this.vs[b].sb!=null)a.cv==a.av?a.vs[a.av].dhxcont.insertBefore(document.getElementById(this.vs[b].sbId),a.vs[a.av].dhxcont.childNodes[a.vs[a.av].dhxcont.childNodes.length-
+1]):a._getSt().appendChild(document.getElementById(this.vs[b].sbId)),a.vs[b].sb=this.vs[b].sb,a.vs[b].sbId=this.vs[b].sbId,a.vs[b].sbHeight=this.vs[b].sbHeight,this.vs[b].sb=null,this.vs[b].sbId=null,this.vs[b].sbHeight=null,this.cv==this.av&&this._doOnAttachStatusBar&&this._doOnAttachStatusBar("unload"),a.cv==a.av&&a._doOnAttachStatusBar&&a._doOnAttachStatusBar("move");for(var g=this.vs[b].dhxcont.mainCont[b],h=a.vs[b].dhxcont.mainCont[b];g.childNodes.length>0;)h.appendChild(g.childNodes[0])}a.view(this.av).setActive()};
+this.obj.adjustContent=function(a,b,c,g,h){this.vs[this.av].dhxcont.style.left=(this._offsetLeft||0)+"px";this.vs[this.av].dhxcont.style.top=(this._offsetTop||0)+b+"px";var i=a.clientWidth+(this._offsetWidth||0);if(g!==!0)this.vs[this.av].dhxcont.style.width=Math.max(0,i)+"px";if(g!==!0&&this.vs[this.av].dhxcont.offsetWidth>i)this.vs[this.av].dhxcont.style.width=Math.max(0,i*2-this.vs[this.av].dhxcont.offsetWidth)+"px";var j=a.clientHeight+(this._offsetHeight||0);this.vs[this.av].dhxcont.style.height=
+Math.max(0,j-b)+(c!=null?c:0)+"px";if(this.vs[this.av].dhxcont.offsetHeight>j-b)this.vs[this.av].dhxcont.style.height=Math.max(0,(j-b)*2-this.vs[this.av].dhxcont.offsetHeight)+"px";if(h&&!isNaN(h))this.vs[this.av].dhxcont.style.height=Math.max(0,parseInt(this.vs[this.av].dhxcont.style.height)-h)+"px";if(this.vs[this.av]._minDataSizeH!=null&&parseInt(this.vs[this.av].dhxcont.style.height)<this.vs[this.av]._minDataSizeH)this.vs[this.av].dhxcont.style.height=this.vs[this.av]._minDataSizeH+"px";if(this.vs[this.av]._minDataSizeW!=
+null&&parseInt(this.vs[this.av].dhxcont.style.width)<this.vs[this.av]._minDataSizeW)this.vs[this.av].dhxcont.style.width=this.vs[this.av]._minDataSizeW+"px";if(g!==!0&&(this.vs[this.av].dhxcont.mainCont[this.av].style.width=this.vs[this.av].dhxcont.clientWidth+"px",this.vs[this.av].dhxcont.mainCont[this.av].offsetWidth>this.vs[this.av].dhxcont.clientWidth))this.vs[this.av].dhxcont.mainCont[this.av].style.width=Math.max(0,this.vs[this.av].dhxcont.clientWidth*2-this.vs[this.av].dhxcont.mainCont[this.av].offsetWidth)+
+"px";var k=this.vs[this.av].menu!=null?!this.vs[this.av].menuHidden?this.vs[this.av].menuHeight:0:0,m=this.vs[this.av].toolbar!=null?!this.vs[this.av].toolbarHidden?this.vs[this.av].toolbarHeight:0:0,l=this.vs[this.av].sb!=null?!this.vs[this.av].sbHidden?this.vs[this.av].sbHeight:0:0;this.vs[this.av].dhxcont.mainCont[this.av].style.height=this.vs[this.av].dhxcont.clientHeight+"px";if(this.vs[this.av].dhxcont.mainCont[this.av].offsetHeight>this.vs[this.av].dhxcont.clientHeight)this.vs[this.av].dhxcont.mainCont[this.av].style.height=
+Math.max(0,this.vs[this.av].dhxcont.clientHeight*2-this.vs[this.av].dhxcont.mainCont[this.av].offsetHeight)+"px";this.vs[this.av].dhxcont.mainCont[this.av].style.height=Math.max(0,parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)-k-m-l)+"px"};this.obj.coverBlocker=function(){return this.vs[this.av].dhxcont.childNodes[this.vs[this.av].dhxcont.childNodes.length-1]};this.obj.showCoverBlocker=function(){this.coverBlocker().style.display=""};this.obj.hideCoverBlocker=function(){this.coverBlocker().style.display=
+"none"};this.obj.updateNestedObjects=function(){this.vs[this.av].grid&&this.vs[this.av].grid.setSizes();this.vs[this.av].sched&&this.vs[this.av].sched.setSizes();this.vs[this.av].tabbar&&this.vs[this.av].tabbar.adjustOuterSize();this.vs[this.av].folders&&this.vs[this.av].folders.setSizes();this.vs[this.av].editor&&(_isIE||this.vs[this.av].editor._prepareContent(!0),this.vs[this.av].editor.setSizes());if(this.vs[this.av].layout)(this.vs[this.av].dhxcont._isAcc||this.vs[this.av].dhxcont._isTabbarCell)&&
+this.vs[this.av].dhxcont.skin=="dhx_skyblue"?(this.vs[this.av].layoutObj.style.width=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+2+"px",this.vs[this.av].layoutObj.style.height=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+2+"px"):(this.vs[this.av].layoutObj.style.width=this.vs[this.av].dhxcont.mainCont[this.av].style.width,this.vs[this.av].layoutObj.style.height=this.vs[this.av].dhxcont.mainCont[this.av].style.height),this.vs[this.av].layout.setSizes();if(this.vs[this.av].accordion!=
+null)this.skin=="dhx_web"?(this.vs[this.av].accordionObj.style.width=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+"px",this.vs[this.av].accordionObj.style.height=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+"px"):(this.vs[this.av].accordionObj.style.width=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+2+"px",this.vs[this.av].accordionObj.style.height=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+2+"px"),this.vs[this.av].accordion.setSizes();
+this.vs[this.av].dockedCell&&this.vs[this.av].dockedCell.updateNestedObjects();this.vs[this.av].form&&this.vs[this.av].form.setSizes()};this.obj.attachStatusBar=function(){if(!this.vs[this.av].sb){var a=document.createElement("DIV");a.className=this._isCell?"dhxcont_sb_container_layoutcell":"dhxcont_sb_container";a.id="sbobj_"+this._genStr(12);a.innerHTML="<div class='dhxcont_statusbar'></div>";this.cv==this.av?this.vs[this.av].dhxcont.insertBefore(a,this.vs[this.av].dhxcont.childNodes[this.vs[this.av].dhxcont.childNodes.length-
+1]):b.st.appendChild(a);a.setText=function(a){this.childNodes[0].innerHTML=a};a.getText=function(){return this.childNodes[0].innerHTML};a.onselectstart=function(a){a=a||event;return a.returnValue=!1};this.vs[this.av].sb=a;this.vs[this.av].sbHeight=this.skin=="dhx_web"?41:this.skin=="dhx_skyblue"?23:a.offsetHeight;this.vs[this.av].sbId=a.id;this._doOnAttachStatusBar&&this._doOnAttachStatusBar("init");this.adjust();return this.vs[this._viewRestore()].sb}};this.obj.detachStatusBar=function(){if(this.vs[this.av].sb)this.vs[this.av].sb.setText=
+null,this.vs[this.av].sb.getText=null,this.vs[this.av].sb.onselectstart=null,this.vs[this.av].sb.parentNode.removeChild(this.vs[this.av].sb),this.vs[this.av].sb=null,this.vs[this.av].sbHeight=null,this.vs[this.av].sbId=null,this._viewRestore(),this._doOnAttachStatusBar&&this._doOnAttachStatusBar("unload")};this.obj.getFrame=function(){return this.getView()._frame};this.obj.getView=function(a){return this.vs[a||this.av]};this.obj.attachMenu=function(a){if(!this.vs[this.av].menu){var c=document.createElement("DIV");
+c.style.position="relative";c.style.overflow="hidden";c.id="dhxmenu_"+this._genStr(12);this.cv==this.av?this.vs[this.av].dhxcont.insertBefore(c,this.vs[this.av].dhxcont.childNodes[0]):b.st.appendChild(c);typeof a!="object"?this.vs[this.av].menu=new dhtmlXMenuObject(c.id,a||this.skin):(a.parent=c.id,this.vs[this.av].menu=new dhtmlXMenuObject(a));this.vs[this.av].menuHeight=this.skin=="dhx_web"?29:c.offsetHeight;this.vs[this.av].menuId=c.id;this._doOnAttachMenu&&this._doOnAttachMenu("init");this.adjust();
+return this.vs[this._viewRestore()].menu}};this.obj.detachMenu=function(){if(this.vs[this.av].menu){var a=document.getElementById(this.vs[this.av].menuId);this.vs[this.av].menu.unload();this.vs[this.av].menu=null;this.vs[this.av].menuId=null;this.vs[this.av].menuHeight=null;a&&a.parentNode.removeChild(a);a=null;this._viewRestore();this._doOnAttachMenu&&this._doOnAttachMenu("unload")}};this.obj.attachToolbar=function(a){if(!this.vs[this.av].toolbar){var c=document.createElement("DIV");c.style.position=
+"relative";c.style.overflow="hidden";c.id="dhxtoolbar_"+this._genStr(12);this.cv==this.av?this.vs[this.av].dhxcont.insertBefore(c,this.vs[this.av].dhxcont.childNodes[this.vs[this.av].menu!=null?1:0]):b.st.appendChild(c);typeof a!="object"?this.vs[this.av].toolbar=new dhtmlXToolbarObject(c.id,a||this.skin):(a.parent=c.id,this.vs[this.av].toolbar=new dhtmlXToolbarObject(a));this.vs[this.av].toolbarHeight=this.skin=="dhx_web"?41:c.offsetHeight+(this._isLayout&&this.skin=="dhx_skyblue"?2:0);this.vs[this.av].toolbarId=
+c.id;this._doOnAttachToolbar&&this._doOnAttachToolbar("init");this.adjust();return this.vs[this._viewRestore()].toolbar}};this.obj.detachToolbar=function(){if(this.vs[this.av].toolbar){var a=document.getElementById(this.vs[this.av].toolbarId);this.vs[this.av].toolbar.unload();this.vs[this.av].toolbar=null;this.vs[this.av].toolbarId=null;this.vs[this.av].toolbarHeight=null;a&&a.parentNode.removeChild(a);a=null;this._viewRestore();this._doOnAttachToolbar&&this._doOnAttachToolbar("unload")}};this.obj.attachGrid=
+function(){if(this._isWindow&&this.skin=="dhx_skyblue")this.vs[this.av].dhxcont.mainCont[this.av].style.border="#a4bed4 1px solid",this._redraw();var a=document.createElement("DIV");a.id="dhxGridObj_"+this._genStr(12);a.style.width="100%";a.style.height="100%";a.cmp="grid";document.body.appendChild(a);this.attachObject(a.id,!1,!0);this.vs[this.av].grid=new dhtmlXGridObject(a.id);this.vs[this.av].grid.setSkin(this.skin);if(this.skin!="dhx_web")this.vs[this.av].grid.entBox.style.border="0px solid white",
+this.vs[this.av].grid._sizeFix=0;this.vs[this.av].gridId=a.id;this.vs[this.av].gridObj=a;return this.vs[this._viewRestore()].grid};this.obj.attachScheduler=function(a,b){var c=document.createElement("DIV");c.id="dhxSchedObj_"+this._genStr(12);c.innerHTML='<div id="'+c.id+'" class="dhx_cal_container" style="width:100%; height:100%;"><div class="dhx_cal_navline"><div class="dhx_cal_prev_button">&nbsp;</div><div class="dhx_cal_next_button">&nbsp;</div><div class="dhx_cal_today_button"></div><div class="dhx_cal_date"></div><div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div><div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div><div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div></div><div class="dhx_cal_header"></div><div class="dhx_cal_data"></div></div>';
+document.body.appendChild(c.firstChild);this.attachObject(c.id,!1,!0);this.vs[this.av].sched=scheduler;this.vs[this.av].schedId=c.id;scheduler.setSizes=scheduler.update_view;scheduler.destructor=function(){};scheduler.init(c.id,a,b);return this.vs[this._viewRestore()].sched};this.obj.attachTree=function(a){if(this._isWindow&&this.skin=="dhx_skyblue")this.vs[this.av].dhxcont.mainCont[this.av].style.border="#a4bed4 1px solid",this._redraw();var b=document.createElement("DIV");b.id="dhxTreeObj_"+this._genStr(12);
+b.style.width="100%";b.style.height="100%";b.cmp="tree";document.body.appendChild(b);this.attachObject(b.id,!1,!0);this.vs[this.av].tree=new dhtmlXTreeObject(b.id,"100%","100%",a||0);this.vs[this.av].tree.setSkin(this.skin);this.vs[this.av].tree.allTree.childNodes[0].style.marginTop="2px";this.vs[this.av].tree.allTree.childNodes[0].style.marginBottom="2px";this.vs[this.av].treeId=b.id;this.vs[this.av].treeObj=b;return this.vs[this._viewRestore()].tree};this.obj.attachTabbar=function(a){if(this._isWindow&&
+this.skin=="dhx_skyblue")this.vs[this.av].dhxcont.style.border="none",this.setDimension(this.w,this.h);var b=document.createElement("DIV");b.id="dhxTabbarObj_"+this._genStr(12);b.style.width="100%";b.style.height="100%";b.style.overflow="hidden";b.cmp="tabbar";document.body.appendChild(b);this.attachObject(b.id,!1,!0);this.className=="dhtmlxLayoutSinglePoly"&&this.hideHeader();this.vs[this.av].tabbar=new dhtmlXTabBar(b.id,a||"top",20);if(!this._isWindow)this.vs[this.av].tabbar._s.expand=!0;this.vs[this.av].tabbar.setSkin(this.skin);
+this.vs[this.av].tabbar.adjustOuterSize();this.vs[this.av].tabbarId=b.id;this.vs[this.av].tabbarObj=b;return this.vs[this._viewRestore()].tabbar};this.obj.attachFolders=function(){if(this._isWindow&&this.skin=="dhx_skyblue")this.vs[this.av].dhxcont.mainCont[this.av].style.border="#a4bed4 1px solid",this._redraw();var a=document.createElement("DIV");a.id="dhxFoldersObj_"+this._genStr(12);a.style.width="100%";a.style.height="100%";a.style.overflow="hidden";a.cmp="folders";document.body.appendChild(a);
+this.attachObject(a.id,!1,!0);this.vs[this.av].folders=new dhtmlxFolders(a.id);this.vs[this.av].folders.setSizes();this.vs[this.av].foldersId=a.id;this.vs[this.av].foldersObj=a;return this.vs[this._viewRestore()].folders};this.obj.attachAccordion=function(){if(this._isWindow&&this.skin=="dhx_skyblue")this.vs[this.av].dhxcont.mainCont[this.av].style.border="#a4bed4 1px solid",this._redraw();var a=document.createElement("DIV");a.id="dhxAccordionObj_"+this._genStr(12);this.skin=="dhx_web"?(a.style.left=
+"0px",a.style.top="0px",a.style.width=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+"px",a.style.height=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+"px"):(a.style.left="-1px",a.style.top="-1px",a.style.width=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+2+"px",a.style.height=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+2+"px");a.style.position="relative";a.cmp="accordion";document.body.appendChild(a);this.attachObject(a.id,
+!1,!0);this.vs[this.av].accordion=new dhtmlXAccordion(a.id,this.skin);this.vs[this.av].accordion.setSizes();this.vs[this.av].accordionId=a.id;this.vs[this.av].accordionObj=a;return this.vs[this._viewRestore()].accordion};this.obj.attachLayout=function(a,b){if(this._isCell&&this.skin=="dhx_skyblue")this.hideHeader(),this.vs[this.av].dhxcont.style.border="0px solid white",this.adjustContent(this.childNodes[0],0);this._isCell&&this.skin=="dhx_web"&&this.hideHeader();var c=document.createElement("DIV");
+c.id="dhxLayoutObj_"+this._genStr(12);c.style.overflow="hidden";c.style.position="absolute";c.style.left="0px";c.style.top="0px";c.style.width=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+"px";c.style.height=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+"px";if((this._isTabbarCell||this._isAcc)&&this.skin=="dhx_skyblue")c.style.left="-1px",c.style.top="-1px",c.style.width=parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.width)+2+"px",c.style.height=
+parseInt(this.vs[this.av].dhxcont.mainCont[this.av].style.height)+2+"px";c.dhxContExists=!0;c.cmp="layout";document.body.appendChild(c);this.attachObject(c.id,!1,!0);this.vs[this.av].layout=new dhtmlXLayoutObject(c,a,b||this.skin);this._isWindow&&this.attachEvent("_onBeforeTryResize",this.vs[this.av].layout._defineWindowMinDimension);this.vs[this.av].layoutId=c.id;this.vs[this.av].layoutObj=c;return this.vs[this._viewRestore()].layout};this.obj.attachEditor=function(){if(this._isWindow&&this.skin==
+"dhx_skyblue")this.vs[this.av].dhxcont.mainCont[this.av].style.border="#a4bed4 1px solid",this._redraw();var a=document.createElement("DIV");a.id="dhxEditorObj_"+this._genStr(12);a.style.position="relative";a.style.display="none";a.style.overflow="hidden";a.style.width="100%";a.style.height="100%";a.cmp="editor";document.body.appendChild(a);this.attachObject(a.id,!1,!0);this.vs[this.av].editor=new dhtmlXEditor(a.id,this.skin);this.vs[this.av].editorId=a.id;this.vs[this.av].editorObj=a;return this.vs[this._viewRestore()].editor};
+this.obj.attachMap=function(a){var b=document.createElement("DIV");b.id="GMapsObj_"+this._genStr(12);b.style.position="relative";b.style.display="none";b.style.overflow="hidden";b.style.width="100%";b.style.height="100%";b.cmp="gmaps";document.body.appendChild(b);this.attachObject(b.id,!1,!0);a||(a={center:new google.maps.LatLng(40.719837,-73.992348),zoom:11,mapTypeId:google.maps.MapTypeId.ROADMAP});this.vs[this.av].gmaps=new google.maps.Map(b,a);return this.vs[this.av].gmaps};this.obj.attachObject=
+function(a,b,c){typeof a=="string"&&(a=document.getElementById(a));if(b){a.style.visibility="hidden";a.style.display="";var g=a.offsetWidth,h=a.offsetHeight}this._attachContent("obj",a);if(b&&this._isWindow)a.style.visibility="",this._adjustToContent(g,h);c||this._viewRestore()};this.obj.detachObject=function(a,b){for(var c=null,g=null,h="tree,grid,layout,tabbar,accordion,folders".split(","),i=0;i<h.length;i++)if(this.vs[this.av][h[i]]){c=this.vs[this.av][h[i]];g=this.vs[this.av][h[i]+"Obj"];if(a){c.unload&&
+c.unload();for(c.destructor&&c.destructor();g.childNodes.length>0;)g.removeChild(g.childNodes[0]);g.parentNode.removeChild(g);c=g=null}else document.body.appendChild(g),g.style.display="none";this.vs[this.av][h[i]]=null;this.vs[this.av][h[i]+"Id"]=null;this.vs[this.av][h[i]+"Obj"]=null}if(c!=null&&g!=null)return[c,g];if(a&&this.vs[this.av]._frame)this._detachURLEvents(),this.vs[this.av]._frame=null;for(var j=this.vs[this.av].dhxcont.mainCont[this.av];j.childNodes.length>0;)if(a==!0)j.removeChild(j.childNodes[0]);
+else{var k=j.childNodes[0];b!=null?(typeof b!="object"&&(b=document.getElementById(b)),b.appendChild(k)):document.body.appendChild(k);k.style.display="none"}};this.obj.appendObject=function(a){typeof a=="string"&&(a=document.getElementById(a));this._attachContent("obj",a,!0)};this.obj.attachHTMLString=function(a){this._attachContent("str",a);for(var b=a.match(/<script[^>]*>[^\f]*?<\/script>/g)||[],c=0;c<b.length;c++){var g=b[c].replace(/<([\/]{0,1})script[^>]*>/g,"");window.execScript?window.execScript(g):
+window.eval(g)}};this.obj.attachURL=function(a,b){this._attachContent(b==!0?"urlajax":"url",a,!1);this._viewRestore()};this.obj.adjust=function(){if(this.skin=="dhx_skyblue"){if(this.vs[this.av].menu){if(this._isWindow||this._isLayout)this.vs[this.av].menu._topLevelOffsetLeft=0,document.getElementById(this.vs[this.av].menuId).style.height="26px",this.vs[this.av].menuHeight=document.getElementById(this.vs[this.av].menuId).offsetHeight,this._doOnAttachMenu&&this._doOnAttachMenu("show");if(this._isCell)document.getElementById(this.vs[this.av].menuId).className+=
+" in_layoutcell",this.vs[this.av].menuHeight=25;if(this._isAcc)document.getElementById(this.vs[this.av].menuId).className+=" in_acccell",this.vs[this.av].menuHeight=25;this._doOnAttachMenu&&this._doOnAttachMenu("adjust")}if(this.vs[this.av].toolbar){if(this._isWindow||this._isLayout)document.getElementById(this.vs[this.av].toolbarId).style.height="29px",this.vs[this.av].toolbarHeight=document.getElementById(this.vs[this.av].toolbarId).offsetHeight,this._doOnAttachToolbar&&this._doOnAttachToolbar("show");
+this._isCell&&(document.getElementById(this.vs[this.av].toolbarId).className+=" in_layoutcell");this._isAcc&&(document.getElementById(this.vs[this.av].toolbarId).className+=" in_acccell")}}};this.obj._attachContent=function(a,b,c){if(c!==!0){if(this.vs[this.av]._frame)this._detachURLEvents(),this.vs[this.av]._frame=null;for(;this.vs[this.av].dhxcont.mainCont[this.av].childNodes.length>0;)this.vs[this.av].dhxcont.mainCont[this.av].removeChild(this.vs[this.av].dhxcont.mainCont[this.av].childNodes[0])}if(a==
+"url"){if(this._isWindow&&b.cmp==null&&this.skin=="dhx_skyblue")this.vs[this.av].dhxcont.mainCont[this.av].style.border="#a4bed4 1px solid",this._redraw();var g=document.createElement("IFRAME");g.frameBorder=0;g.border=0;g.style.width="100%";g.style.height="100%";g.setAttribute("src","javascript:false;");this.vs[this.av].dhxcont.mainCont[this.av].appendChild(g);g.src=b;this.vs[this.av]._frame=g;this._attachURLEvents()}else if(a=="urlajax"){if(this._isWindow&&b.cmp==null&&this.skin=="dhx_skyblue")this.vs[this.av].dhxcont.mainCont[this.av].style.border=
+"#a4bed4 1px solid",this.vs[this.av].dhxcont.mainCont[this.av].style.backgroundColor="#FFFFFF",this._redraw();var h=this,i=String(this.av).valueOf(),j=function(){var a=h.av;h.av=i;h.attachHTMLString(this.xmlDoc.responseText,this);h.av=a;h._doOnFrameContentLoaded&&h._doOnFrameContentLoaded();this.destructor()},k=new dtmlXMLLoaderObject(j,window);k.dhxWindowObject=this;k.loadXML(b)}else if(a=="obj"){if(this._isWindow&&b.cmp==null&&this.skin=="dhx_skyblue")this.vs[this.av].dhxcont.mainCont[this.av].style.border=
+"#a4bed4 1px solid",this.vs[this.av].dhxcont.mainCont[this.av].style.backgroundColor="#FFFFFF",this._redraw();this.vs[this.av].dhxcont._frame=null;this.vs[this.av].dhxcont.mainCont[this.av].appendChild(b);this.vs[this.av].dhxcont.mainCont[this.av].style.overflow=c===!0?"auto":"hidden";b.style.display=""}else if(a=="str"){if(this._isWindow&&b.cmp==null&&this.skin=="dhx_skyblue")this.vs[this.av].dhxcont.mainCont[this.av].style.border="#a4bed4 1px solid",this.vs[this.av].dhxcont.mainCont[this.av].style.backgroundColor=
+"#FFFFFF",this._redraw();this.vs[this.av].dhxcont._frame=null;this.vs[this.av].dhxcont.mainCont[this.av].innerHTML=b}};this.obj._attachURLEvents=function(){var a=this,b=this.vs[this.av]._frame;_isIE?b.onreadystatechange=function(){if(b.readyState=="complete"){try{b.contentWindow.document.body.onmousedown=function(){a._doOnFrameMouseDown&&a._doOnFrameMouseDown()}}catch(c){}try{a._doOnFrameContentLoaded&&a._doOnFrameContentLoaded()}catch(g){}}}:b.onload=function(){try{b.contentWindow.onmousedown=function(){a._doOnFrameMouseDown&&
+a._doOnFrameMouseDown()}}catch(c){}try{a._doOnFrameContentLoaded&&a._doOnFrameContentLoaded()}catch(g){}}};this.obj._detachURLEvents=function(){if(_isIE)try{this.vs[this.av]._frame.onreadystatechange=null,this.vs[this.av]._frame.contentWindow.document.body.onmousedown=null,this.vs[this.av]._frame.onload=null}catch(a){}else try{this.vs[this.av]._frame.contentWindow.onmousedown=null,this.vs[this.av]._frame.onload=null}catch(b){}};this.obj.showMenu=function(){if(this.vs[this.av].menu&&this.vs[this.av].menuId&&
+document.getElementById(this.vs[this.av].menuId).style.display=="none")this.vs[this.av].menuHidden=!1,this._doOnAttachMenu&&this._doOnAttachMenu("show"),document.getElementById(this.vs[this.av].menuId).style.display="",this._viewRestore()};this.obj.hideMenu=function(){if(this.vs[this.av].menu&&this.vs[this.av].menuId&&document.getElementById(this.vs[this.av].menuId).style.display!="none")document.getElementById(this.vs[this.av].menuId).style.display="none",this.vs[this.av].menuHidden=!0,this._doOnAttachMenu&&
+this._doOnAttachMenu("hide"),this._viewRestore()};this.obj.showToolbar=function(){if(this.vs[this.av].toolbar&&this.vs[this.av].toolbarId&&document.getElementById(this.vs[this.av].toolbarId).style.display=="none")this.vs[this.av].toolbarHidden=!1,this._doOnAttachToolbar&&this._doOnAttachToolbar("show"),document.getElementById(this.vs[this.av].toolbarId).style.display="",this._viewRestore()};this.obj.hideToolbar=function(){if(this.vs[this.av].toolbar&&this.vs[this.av].toolbarId&&document.getElementById(this.vs[this.av].toolbarId).style.display!=
+"none")this.vs[this.av].toolbarHidden=!0,document.getElementById(this.vs[this.av].toolbarId).style.display="none",this._doOnAttachToolbar&&this._doOnAttachToolbar("hide"),this._viewRestore()};this.obj.showStatusBar=function(){if(this.vs[this.av].sb&&this.vs[this.av].sbId&&document.getElementById(this.vs[this.av].sbId).style.display=="none")this.vs[this.av].sbHidden=!1,this._doOnAttachStatusBar&&this._doOnAttachStatusBar("show"),document.getElementById(this.vs[this.av].sbId).style.display="",this._viewRestore()};
+this.obj.hideStatusBar=function(){if(this.vs[this.av].sb&&this.vs[this.av].sbId&&document.getElementById(this.vs[this.av].sbId).style.display!="none")this.vs[this.av].sbHidden=!0,document.getElementById(this.vs[this.av].sbId).style.display="none",this._doOnAttachStatusBar&&this._doOnAttachStatusBar("hide"),this._viewRestore()};this.obj._dhxContDestruct=function(){var a=this.av,c;for(c in this.vs)this.av=c,this.detachMenu(),this.detachToolbar(),this.detachStatusBar(),this.detachObject(!0),this.vs[c].dhxcont.mainCont[c].parentNode.removeChild(this.vs[c].dhxcont.mainCont[c]),
+this.vs[c].dhxcont.mainCont[c]=null;this.vs[this.dv].dhxcont.mainCont=null;this.vs[this.dv].dhxcont.parentNode.removeChild(this.vs[this.dv].dhxcont);for(c in this.vs)this.vs[c].dhxcont=null;this._dhxContDestruct=this._genStr=this._init=this._setPadding=this._viewRestore=this._detachURLEvents=this._attachURLEvents=this._attachContent=this.updateNestedObjects=this.hideCoverBlocker=this.showCoverBlocker=this.coverBlocker=this.adjustContent=this.moveContentTo=this.setMinContentSize=this.adjust=this.show=
+this.view=this.attachURL=this.attachHTMLString=this.appendObject=this.detachObject=this.attachObject=this.attachEditor=this.attachLayout=this.attachAccordion=this.attachFolders=this.attachTabbar=this.attachTree=this.attachScheduler=this.attachGrid=this.hideStatusBar=this.hideToolbar=this.hideMenu=this.showStatusBar=this.showToolbar=this.showMenu=this.detachStatusBar=this.detachToolbar=this.detachMenu=this.attachStatusBar=this.attachToolbar=this.attachMenu=this.vs=null;b.st.parentNode.removeChild(b.st);
+b.st=null;b.setContent=null;b.dhxcont=null;b=b.obj=null;if(dhtmlx.detaches)for(c in dhtmlx.detaches)dhtmlx.detaches[c](this)};if(dhtmlx.attaches)for(var c in dhtmlx.attaches)this.obj[c]=dhtmlx.attaches[c]}
+function dhtmlXCalendarObject(a,b){this.i={};this.uid=function(){if(!this.uidd)this.uidd=(new Date).getTime();return this.uidd++};var c=null,d=typeof a=="string"?document.getElementById(a):a;d&&typeof d=="object"&&d.tagName&&String(d.tagName).toLowerCase()!="input"&&(c=d);d=null;if(typeof a!="object"||!a.length)a=[a];for(var e=0;e<a.length;e++)typeof a[e]=="string"&&(a[e]=document.getElementById(a[e])||null),a[e]!=null&&a[e].tagName&&String(a[e].tagName).toLowerCase()=="input"&&(this.i[this.uid()]=
+a[e]),a[e]=null;this.skin=b||"dhx_skyblue";this.setSkin=function(a){this.skin=a;this.base.className="dhtmlxcalendar_container dhtmlxcalendar_skin_"+this.skin};this.base=document.createElement("DIV");this.base.className="dhtmlxcalendar_container";this.base.style.display="none";c!=null?(this._hasParent=!0,c.appendChild(this.base),c=null):document.body.appendChild(this.base);this.setParent=function(a){this._hasParent&&(typeof a=="object"?a.appendChild(this.base):typeof a=="string"&&document.getElementById(a).appendChild(this.base))};
+this.setSkin(this.skin);this.base.onclick=function(a){a=a||event;a.cancelBubble=!0};this.loadUserLanguage=function(a){if(this.langData[a]&&(this.lang=a,this.setWeekStartDay(this.langData[this.lang].weekstart),this.msCont))for(var b=0,c=0;c<this.msCont.childNodes.length;c++)for(var d=0;d<this.msCont.childNodes[c].childNodes.length;d++)this.msCont.childNodes[c].childNodes[d].innerHTML=this.langData[this.lang].monthesSNames[b++]};this.contMonth=document.createElement("DIV");this.contMonth.className=
+"dhtmlxcalendar_month_cont";this.contMonth.onselectstart=function(a){a=a||event;a.cancelBubble=!0;return a.returnValue=!1};this.base.appendChild(this.contMonth);var f=document.createElement("UL");f.className="dhtmlxcalendar_line";this.contMonth.appendChild(f);var g=document.createElement("LI");g.className="dhtmlxcalendar_cell dhtmlxcalendar_month_hdr";g.innerHTML="<div class='dhtmlxcalendar_month_arrow dhtmlxcalendar_month_arrow_left' onmouseover='this.className=\"dhtmlxcalendar_month_arrow dhtmlxcalendar_month_arrow_left_hover\";' onmouseout='this.className=\"dhtmlxcalendar_month_arrow dhtmlxcalendar_month_arrow_left\";'></div><span class='dhtmlxcalendar_month_label_month'>Month</span><span class='dhtmlxcalendar_month_label_year'>Year</span><div class='dhtmlxcalendar_month_arrow dhtmlxcalendar_month_arrow_right' onmouseover='this.className=\"dhtmlxcalendar_month_arrow dhtmlxcalendar_month_arrow_right_hover\";' onmouseout='this.className=\"dhtmlxcalendar_month_arrow dhtmlxcalendar_month_arrow_right\";'></div>";
+f.appendChild(g);var h=this;g.onclick=function(a){var a=a||event,b=a.target||a.srcElement;if(b.className&&b.className.indexOf("dhtmlxcalendar_month_arrow")===0){h._hideSelector();var c=b.parentNode.firstChild==b?-1:1;h._drawMonth(new Date(h._activeMonth.getFullYear(),h._activeMonth.getMonth()+c,1,0,0,0,0))}else b.className&&b.className=="dhtmlxcalendar_month_label_month"?(a.cancelBubble=!0,h._showSelector("month",31,21,"selector_month",!0)):b.className&&b.className=="dhtmlxcalendar_month_label_year"?
+(a.cancelBubble=!0,h._showSelector("year",42,21,"selector_year",!0)):h._hideSelector()};this.contDays=document.createElement("DIV");this.contDays.className="dhtmlxcalendar_days_cont";this.base.appendChild(this.contDays);this.setWeekStartDay=function(a){a==0&&(a=7);this._wStart=Math.min(Math.max(isNaN(a)?1:a,1),7);this._drawDaysOfWeek()};this._drawDaysOfWeek=function(){if(this.contDays.childNodes.length==0){var a=document.createElement("UL");a.className="dhtmlxcalendar_line";this.contDays.appendChild(a)}else a=
+this.contDays.firstChild;var b=this._wStart,c=this.langData[this.lang].daysSNames;c.push(String(this.langData[this.lang].daysSNames[0]).valueOf());for(var d=0;d<7;d++){if(a.childNodes[d]==null){var e=document.createElement("LI");a.appendChild(e)}else e=a.childNodes[d];e.className="dhtmlxcalendar_cell"+(b>=6?" dhtmlxcalendar_day_weekday_cell":"")+(d==0?"_first":"");e.innerHTML=c[b];++b>7&&(b=1)}this._activeMonth!=null&&this._drawMonth(this._activeMonth)};this._wStart=this.langData[this.lang].weekstart;
+this.setWeekStartDay(this._wStart);this.contDates=document.createElement("DIV");this.contDates.className="dhtmlxcalendar_dates_cont";this.base.appendChild(this.contDates);this.contDates.onclick=function(a){var a=a||event,b=a.target||a.srcElement;if(b._date!=null&&!b._css_dis){var c=h._activeDate.getHours(),d=h._activeDate.getMinutes();if(!h.checkEvent("onBeforeChange")||h.callEvent("onBeforeChange",[new Date(b._date.getFullYear(),b._date.getMonth(),b._date.getDate(),c,d)])){if(h._activeDateCell!=
+null)h._activeDateCell._css_date=!1,h._updateCellStyle(h._activeDateCell._q,h._activeDateCell._w);var e=!1;h._activeDate=new Date(b._date.getFullYear(),b._date.getMonth(),b._date.getDate(),c,d);h._activeDateCell=b;h._activeDateCell._css_date=!0;h._activeDateCell._css_hover=!1;h._lastHover=null;h._updateCellStyle(h._activeDateCell._q,h._activeDateCell._w);e&&h._drawMonth(h._activeDate);if(h._activeInp&&h.i[h._activeInp])h.i[h._activeInp].value=h._dateToStr(new Date(h._activeDate.getTime()));h._hasParent||
+h._hide();h.callEvent("onClick",[new Date(h._activeDate.getTime())])}}};this.contDates.onmouseover=function(a){var a=a||event,b=a.target||a.srcElement;if(b._date!=null)b._css_hover=!0,h._updateCellStyle(b._q,b._w),h._lastHover=b};this.contDates.onmouseout=function(){h._clearDayHover()};this._lastHover=null;this._clearDayHover=function(){if(this._lastHover)this._lastHover._css_hover=!1,this._updateCellStyle(this._lastHover._q,this._lastHover._w),this._lastHover=null};for(e=0;e<6;e++){f=document.createElement("UL");
+f.className="dhtmlxcalendar_line";this.contDates.appendChild(f);for(var i=0;i<7;i++)g=document.createElement("LI"),g.className="dhtmlxcalendar_cell",f.appendChild(g)}this.contTime=document.createElement("DIV");this.contTime.className="dhtmlxcalendar_time_cont";this.base.appendChild(this.contTime);this.showTime=function(){if(String(this.base.className).search("dhtmlxcalendar_time_hidden")>0)this.base.className=String(this.base.className).replace(/dhtmlxcalendar_time_hidden/gi,"")};this.hideTime=function(){String(this.base.className).search("dhtmlxcalendar_time_hidden")<
+0&&(this.base.className+=" dhtmlxcalendar_time_hidden")};f=document.createElement("UL");f.className="dhtmlxcalendar_line";this.contTime.appendChild(f);g=document.createElement("LI");g.className="dhtmlxcalendar_cell dhtmlxcalendar_time_hdr";g.innerHTML="<div class='dhtmlxcalendar_time_label'></div><span class='dhtmlxcalendar_label_hours'></span><span class='dhtmlxcalendar_label_colon'>:</span><span class='dhtmlxcalendar_label_minutes'></span>";f.appendChild(g);g.onclick=function(a){var a=a||event,
+b=a.target||a.srcElement;b.className&&b.className=="dhtmlxcalendar_label_hours"?(a.cancelBubble=!0,h._showSelector("hours",3,115,"selector_hours",!0)):b.className&&b.className=="dhtmlxcalendar_label_minutes"?(a.cancelBubble=!0,h._showSelector("minutes",59,115,"selector_minutes",!0)):h._hideSelector()};this._activeMonth=null;this._activeDate=new Date;this._activeDateCell=null;this.setDate=function(a){a===""&&(a=new Date);a instanceof Date||(a=this._strToDate(a,!1));var b=a.getTime();if(!(this._rangeActive&&
+(b<this._rangeFrom||b>this._rangeTo)||this._rangeSet[b]==!0))this._activeDate=new Date(b),this._drawMonth(this._activeDate),this._updateVisibleHours(),this._updateVisibleMinutes()};this.getDate=function(a){var b=new Date(this._activeDate.getTime());return a?this._dateToStr(b):b};this._drawMonth=function(a){if(a instanceof Date){isNaN(a.getFullYear())&&(a=new Date(this._activeMonth.getFullYear(),this._activeMonth.getMonth(),1,0,0,0,0));this._activeMonth=new Date(a.getFullYear(),a.getMonth(),1,0,0,
+0,0);this._activeDateCell=null;var b=new Date(this._activeMonth.getTime()),c=b.getDay(),d=c-this._wStart;d<0&&(d+=7);b.setDate(b.getDate()-d);for(var e=a.getMonth(),f=(new Date(this._activeDate.getFullYear(),this._activeDate.getMonth(),this._activeDate.getDate(),0,0,0,0)).getTime(),g=0,h=0;h<6;h++)for(var i=this._wStart,j=0;j<7;j++){var t=new Date(b.getFullYear(),b.getMonth(),b.getDate()+g++,0,0,0,0);this.contDates.childNodes[h].childNodes[j].innerHTML=t.getDate();var u=t.getDay(),w=t.getTime();this.contDates.childNodes[h].childNodes[j]._date=
+new Date(w);this.contDates.childNodes[h].childNodes[j]._q=h;this.contDates.childNodes[h].childNodes[j]._w=j;this.contDates.childNodes[h].childNodes[j]._css_month=t.getMonth()==e;this.contDates.childNodes[h].childNodes[j]._css_date=w==f;this.contDates.childNodes[h].childNodes[j]._css_weekend=i>=6;this.contDates.childNodes[h].childNodes[j]._css_dis=this._rangeActive&&(w<this._rangeFrom||w>this._rangeTo)||this._rangeSet[w]==!0;this.contDates.childNodes[h].childNodes[j]._css_holiday=this._holidays[w]==
+!0;this._updateCellStyle(h,j);if(w==f)this._activeDateCell=this.contDates.childNodes[h].childNodes[j];++i>7&&(i=1)}this.contMonth.firstChild.firstChild.childNodes[1].innerHTML=this.langData[this.lang].monthesFNames[a.getMonth()];this.contMonth.firstChild.firstChild.childNodes[2].innerHTML=a.getFullYear()}};this._updateCellStyle=function(a,b){var c=this.contDates.childNodes[a].childNodes[b],d="dhtmlxcalendar_cell dhtmlxcalendar_cell";d+=c._css_month?"_month":"";d+=c._css_date?"_date":"";d+=c._css_weekend?
+"_weekend":"";d+=c._css_holiday?"_holiday":"";d+=c._css_dis?"_dis":"";d+=c._css_hover&&!c._css_dis?"_hover":"";c.className=d;c=null};this._initSelector=function(a,b){if(!this._selCover)this._selCover=document.createElement("DIV"),this._selCover.className="dhtmlxcalendar_selector_cover",this.base.appendChild(this._selCover);if(!this._sel)this._sel=document.createElement("DIV"),this._sel.className="dhtmlxcalendar_selector_obj",this.base.appendChild(this._sel),this._sel.appendChild(document.createElement("TABLE")),
+this._sel.firstChild.className="dhtmlxcalendar_selector_table",this._sel.firstChild.cellSpacing=0,this._sel.firstChild.cellPadding=0,this._sel.firstChild.border=0,this._sel.firstChild.appendChild(document.createElement("TBODY")),this._sel.firstChild.firstChild.appendChild(document.createElement("TR")),this._sel.firstChild.firstChild.firstChild.appendChild(document.createElement("TD")),this._sel.firstChild.firstChild.firstChild.appendChild(document.createElement("TD")),this._sel.firstChild.firstChild.firstChild.appendChild(document.createElement("TD")),
+this._sel.firstChild.firstChild.firstChild.childNodes[0].className="dhtmlxcalendar_selector_cell_left",this._sel.firstChild.firstChild.firstChild.childNodes[1].className="dhtmlxcalendar_selector_cell_middle",this._sel.firstChild.firstChild.firstChild.childNodes[2].className="dhtmlxcalendar_selector_cell_right",this._sel.firstChild.firstChild.firstChild.childNodes[0].innerHTML="&nbsp;",this._sel.firstChild.firstChild.firstChild.childNodes[2].innerHTML="&nbsp;",this._sel.firstChild.firstChild.firstChild.childNodes[0].onmouseover=
+function(){this.className="dhtmlxcalendar_selector_cell_left dhtmlxcalendar_selector_cell_left_hover"},this._sel.firstChild.firstChild.firstChild.childNodes[0].onmouseout=function(){this.className="dhtmlxcalendar_selector_cell_left"},this._sel.firstChild.firstChild.firstChild.childNodes[2].onmouseover=function(){this.className="dhtmlxcalendar_selector_cell_right dhtmlxcalendar_selector_cell_right_hover"},this._sel.firstChild.firstChild.firstChild.childNodes[2].onmouseout=function(){this.className=
+"dhtmlxcalendar_selector_cell_right"},this._sel.firstChild.firstChild.firstChild.childNodes[0].onclick=function(a){a=a||event;a.cancelBubble=!0;h._scrollYears(-1)},this._sel.firstChild.firstChild.firstChild.childNodes[2].onclick=function(a){a=a||event;a.cancelBubble=!0;h._scrollYears(1)},this._sel._ta={},this._selHover=null,this._sel.onmouseover=function(a){var a=a||event,b=a.target||a.srcElement;if(b._cell===!0&&(h._selHover!=b&&h._clearSelHover(),String(b.className).match(/^\s{0,}dhtmlxcalendar_selector_cell\s{0,}$/gi)!=
+null))b.className+=" dhtmlxcalendar_selector_cell_hover",h._selHover=b},this._sel.onmouseout=function(){h._clearSelHover()},this._sel.appendChild(document.createElement("DIV")),this._sel.lastChild.className="dhtmlxcalendar_selector_obj_arrow";if(this._sel._ta[a]!=!0){if(a=="month"){this._msCells={};this.msCont=document.createElement("DIV");this.msCont.className="dhtmlxcalendar_area_"+b;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.msCont);for(var c=0,d=0;d<4;d++){var e=
+document.createElement("UL");e.className="dhtmlxcalendar_selector_line";this.msCont.appendChild(e);for(var f=0;f<3;f++){var g=document.createElement("LI");g.innerHTML=this.langData[this.lang].monthesSNames[c];g.className="dhtmlxcalendar_selector_cell";e.appendChild(g);g._month=c;g._cell=!0;this._msCells[c++]=g}}this.msCont.onclick=function(a){a=a||event;a.cancelBubble=!0;var b=a.target||a.srcElement;b._month!=null&&(h._hideSelector(),h._updateActiveMonth(),h._drawMonth(new Date(h._activeMonth.getFullYear(),
+b._month,1,0,0,0,0)),h._doOnSelectorChange())}}if(a=="year"){this._ysCells={};this.ysCont=document.createElement("DIV");this.ysCont.className="dhtmlxcalendar_area_"+b;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.ysCont);for(d=0;d<4;d++){e=document.createElement("UL");e.className="dhtmlxcalendar_selector_line";this.ysCont.appendChild(e);for(f=0;f<3;f++)g=document.createElement("LI"),g.className="dhtmlxcalendar_selector_cell",g._cell=!0,e.appendChild(g)}this.ysCont.onclick=
+function(a){a=a||event;a.cancelBubble=!0;var b=a.target||a.srcElement;b._year!=null&&(h._hideSelector(),h._drawMonth(new Date(b._year,h._activeMonth.getMonth(),1,0,0,0,0)),h._doOnSelectorChange())}}if(a=="hours"){this._hsCells={};this.hsCont=document.createElement("DIV");this.hsCont.className="dhtmlxcalendar_area_"+b;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.hsCont);for(d=c=0;d<4;d++){e=document.createElement("UL");e.className="dhtmlxcalendar_selector_line";this.hsCont.appendChild(e);
+for(f=0;f<6;f++)g=document.createElement("LI"),g.innerHTML=this._fixLength(c,2),g.className="dhtmlxcalendar_selector_cell",e.appendChild(g),g._hours=c,g._cell=!0,this._hsCells[c++]=g}this.hsCont.onclick=function(a){a=a||event;a.cancelBubble=!0;var b=a.target||a.srcElement;b._hours!=null&&(h._hideSelector(),h._activeDate.setHours(b._hours),h._updateActiveHours(),h._updateVisibleHours(),h._doOnSelectorChange())}}if(a=="minutes"){this._rsCells={};this.rsCont=document.createElement("DIV");this.rsCont.className=
+"dhtmlxcalendar_area_"+b;this._sel.firstChild.firstChild.firstChild.childNodes[1].appendChild(this.rsCont);for(d=c=0;d<4;d++){e=document.createElement("UL");e.className="dhtmlxcalendar_selector_line";this.rsCont.appendChild(e);for(f=0;f<3;f++)g=document.createElement("LI"),g.innerHTML=this._fixLength(c,2),g.className="dhtmlxcalendar_selector_cell",e.appendChild(g),g._minutes=c,g._cell=!0,this._rsCells[c]=g,c+=5}this.rsCont.onclick=function(a){a=a||event;a.cancelBubble=!0;var b=a.target||a.srcElement;
+b._minutes!=null&&(h._hideSelector(),h._activeDate.setMinutes(b._minutes),h._updateActiveMinutes(),h._updateVisibleMinutes(),h._doOnSelectorChange())}}this._sel._ta[a]=!0}};this._showSelector=function(a,b,c,d,e){e===!0&&this._sel!=null&&this._isSelectorVisible()&&a==this._sel._t?this._hideSelector():((!this._sel||!this._sel._ta[a])&&this._initSelector(a,d),this._selCover.style.display="",this._sel._t=a,this._sel.style.left=b+"px",this._sel.style.top=c+"px",this._sel.style.display="",this._sel.className=
+"dhtmlxcalendar_selector_obj dhtmlxcalendar_"+d,this._doOnSelectorShow(a))};this._doOnSelectorShow=function(a){a=="month"&&this._updateActiveMonth();a=="year"&&this._updateYearsList(this._activeMonth);a=="hours"&&this._updateActiveHours();a=="minutes"&&this._updateActiveMinutes()};this._hideSelector=function(){if(this._sel)this._sel.style.display="none",this._selCover.style.display="none"};this._isSelectorVisible=function(){return!this._sel?!1:this._sel.style.display!="none"};this._doOnSelectorChange=
+function(a){this.callEvent("onChange",[new Date(this._activeMonth.getFullYear(),this._activeMonth.getMonth(),this._activeDate.getDate(),this._activeDate.getHours(),this._activeDate.getMinutes(),this._activeDate.getSeconds()),a])};this._clearSelHover=function(){if(this._selHover)this._selHover.className=String(this._selHover.className.replace(/dhtmlxcalendar_selector_cell_hover/gi,"")),this._selHover=null};this._updateActiveMonth=function(){if(typeof this._msActive!="undefined"&&typeof this._msCells[this._msActive]!=
+"undefined")this._msCells[this._msActive].className="dhtmlxcalendar_selector_cell";this._msActive=this._activeMonth.getMonth();this._msCells[this._msActive].className="dhtmlxcalendar_selector_cell dhtmlxcalendar_selector_cell_active"};this._updateActiveYear=function(){var a=this._activeMonth.getFullYear();if(this._ysCells[a])this._ysCells[a].className="dhtmlxcalendar_selector_cell dhtmlxcalendar_selector_cell_active"};this._updateYearsList=function(a){for(var b in this._ysCells)this._ysCells[b]=null,
+delete this._ysCells[b];for(var c=12*Math.floor(a.getFullYear()/12),d=0;d<4;d++)for(var e=0;e<3;e++)this.ysCont.childNodes[d].childNodes[e].innerHTML=c,this.ysCont.childNodes[d].childNodes[e]._year=c,this.ysCont.childNodes[d].childNodes[e].className="dhtmlxcalendar_selector_cell",this._ysCells[c++]=this.ysCont.childNodes[d].childNodes[e];this._updateActiveYear()};this._scrollYears=function(a){var b=(a<0?this.ysCont.firstChild.firstChild._year:this.ysCont.lastChild.lastChild._year)+a,c=new Date(b,
+this._activeMonth.getMonth(),1,0,0,0,0);this._updateYearsList(c)};this._updateActiveHours=function(){if(typeof this._hsActive!="undefined"&&typeof this._hsCells[this._hsActive]!="undefined")this._hsCells[this._hsActive].className="dhtmlxcalendar_selector_cell";this._hsActive=this._activeDate.getHours();this._hsCells[this._hsActive].className="dhtmlxcalendar_selector_cell dhtmlxcalendar_selector_cell_active"};this._updateVisibleHours=function(){this.contTime.firstChild.firstChild.childNodes[1].innerHTML=
+this._fixLength(this._activeDate.getHours(),2)};this._updateActiveMinutes=function(){if(typeof this._rsActive!="undefined"&&typeof this._rsCells[this._rsActive]!="undefined")this._rsCells[this._rsActive].className="dhtmlxcalendar_selector_cell";this._rsActive=this._activeDate.getMinutes();if(typeof this._rsCells[this._rsActive]!="undefined")this._rsCells[this._rsActive].className="dhtmlxcalendar_selector_cell dhtmlxcalendar_selector_cell_active"};this._updateVisibleMinutes=function(){this.contTime.firstChild.firstChild.childNodes[3].innerHTML=
+this._fixLength(this._activeDate.getMinutes(),2)};this._fixLength=function(a,b){for(;String(a).length<b;)a="0"+String(a);return a};this._dateFormat="";this._dateFormatRE=null;this.setDateFormat=function(a){this._dateFormat=a;this._dateFormatRE=RegExp(String(this._dateFormat).replace(/%[a-zA-Z]+/g,function(a){var b=a.replace(/%/,"");switch(b){case "m":case "d":case "H":case "i":case "s":return"\\d{2}";case "Y":return"\\d{4}"}return a}))};this.setDateFormat("%Y-%m-%d");this._strToDate=function(a,b,
+c){var d={Y:!1,m:!1,d:!1,H:!1,i:!1,s:!1},e=String(a).match(/[0-9]{1,}/g),f=(c||this._dateFormat).match(/%[a-zA-Z]/g);if(!e)return"Invalid Date";for(var g=0;g<f.length;g++){var h=f[g].replace(/%/g,"");typeof d[h]!="undefined"&&(d[h]=Number(e[g]))}if(b)return d;for(e in d)d[e]===!1&&(d[e]=0);return new Date(d.Y,d.m-1,d.d,d.H,d.i,d.s,0)};this._dateToStr=function(a,b){if(a instanceof Date)var c=function(a){return String(a).length==1?"0"+String(a):a},d=function(b){switch(b){case "%d":return c(a.getDate());
+case "%j":return a.getDate();case "%D":return h.langData[h.lang].daysSNames[a.getDay()];case "%l":return h.langData[h.lang].daysFNames[a.getDay()];case "%m":return c(a.getMonth()+1);case "%n":return date.getMonth()+1;case "%M":return h.langData[h.lang].monthesSNames[a.getMonth()];case "%F":return h.langData[h.lang].monthesFNames[a.getMonth()];case "%y":return c(a.getYear()%100);case "%Y":return a.getFullYear();case "%g":return(a.getHours()+11)%12+1;case "%h":return c((a.getHours()+11)%12+1);case "%G":return a.getHours();
+case "%H":return c(a.getHours());case "%i":return c(a.getMinutes());case "%s":return c(a.getSeconds());case "%a":return a.getHours()>11?"pm":"am";case "%A":return a.getHours()>11?"PM":"AM";default:return b}},e=String(b||this._dateFormat).replace(/%[a-zA-Z]/g,d);return e||String(a)};this._updateDateStr=function(a){if(a=="")this.setDate(new Date),this.callEvent("onChange",[null,!0]);else if(this._dateFormatRE&&a.match(this._dateFormatRE)){var b=this._strToDate(a,!0),c=new Date(this._activeMonth.getFullYear(),
+this._activeMonth.getMonth(),this._activeDate.getDate(),this._activeDate.getHours(),this._activeDate.getMinutes(),this._activeDate.getSeconds());b.Y!==!1&&b.Y!=c.getFullYear()&&this._activeDate.setFullYear(b.Y);b.m!==!1&&(b.m--,b.m!=c.getMonth()&&this._activeDate.setMonth(b.m));b.d!==!1&&b.d!=c.getDate()&&this._activeDate.setDate(b.d);b.H!==!1&&b.H!=c.getHours()&&this._activeDate.setHours(b.H);b.i!==!1&&b.i!=c.getMinutes()&&this._activeDate.setMinutes(b.i);b.s!==!1&&b.s!=c.getSeconds()&&this._activeDate.setSeconds(b.s);
+this._drawMonth(this._activeDate);this._updateVisibleMinutes();this._updateVisibleHours();this._sel&&this._isSelectorVisible()&&this._doOnSelectorShow(this._sel._t);this._doOnSelectorChange(!0)}};this.setFormatedDate=function(a,b,c,d){var e=this._strToDate(b,!1,a);if(d)return e;this.setDate(e)};this.getFormatedDate=function(a,b){b&&b instanceof Date||(b=new Date(this._activeDate));return this._dateToStr(b,a)};this.show=function(a){if(!a&&this._hasParent)this._show();else if(typeof a=="object"&&typeof a._dhtmlxcalendar_uid!=
+"undefined"&&this.i[a._dhtmlxcalendar_uid]==a)this._show(a._dhtmlxcalendar_uid);else{if(typeof a=="undefined")for(var b in this.i)a||(a=b);a&&this._show(a)}};this.hide=function(){this._isVisible()&&this._hide()};this.draw=function(){this.show()};this.close=function(){this.hide()};this._activeInp=null;this.pos="bottom";this.setPosition=function(a,b){if(a=="right"||a=="bottom")this.pos=a;else if(!this._hasParent){if(typeof a!="undefined"&&!isNaN(a))this.base.style.left=a+"px";if(typeof b!="undefined"&&
+!isNaN(b))this.base.style.top=b+"px"}};this._show=function(a,b){b===!0&&this._activeInp==a&&this._isVisible()?this._hide():(a?(this.pos=="right"?(this.base.style.left=this._getLeft(this.i[a])+this.i[a].offsetWidth-1+"px",this.base.style.top=this._getTop(this.i[a])+"px"):(this.base.style.left=this._getLeft(this.i[a])+"px",this.base.style.top=this._getTop(this.i[a])+this.i[a].offsetHeight-1+"px"),this._activeInp=a):(this.base.style.left="0px",this.base.style.top="0px"),this._hideSelector(),this.base.style.display=
+"")};this._hide=function(){this._hideSelector();this.base.style.display="none";this._activeInp=null};this._isVisible=function(){return this.base.style.display!="none"};this._getLeft=function(a){return this._posGetOffset(a).left};this._getTop=function(a){return this._posGetOffset(a).top};this._posGetOffsetSum=function(a){for(var b=0,c=0;a;)b+=parseInt(a.offsetTop),c+=parseInt(a.offsetLeft),a=a.offsetParent;return{top:b,left:c}};this._posGetOffsetRect=function(a){var b=a.getBoundingClientRect(),c=document.body,
+d=document.documentElement,e=window.pageYOffset||d.scrollTop||c.scrollTop,f=window.pageXOffset||d.scrollLeft||c.scrollLeft,g=d.clientTop||c.clientTop||0,h=d.clientLeft||c.clientLeft||0,i=b.top+e-g,j=b.left+f-h;return{top:Math.round(i),left:Math.round(j)}};this._posGetOffset=function(a){return this[a.getBoundingClientRect?"_posGetOffsetRect":"_posGetOffsetSum"](a)};this._rangeActive=!1;this._rangeTo=this._rangeFrom=null;this._rangeSet={};this.setSensitive=function(a,b){var c=!1;if(a!=null&&b!=null){a instanceof
+Date||(a=this._strToDate(a,!1));b instanceof Date||(b=this._strToDate(b,!1));if(a.getTime()>b.getTime())return;this._rangeFrom=(new Date(a.getFullYear(),a.getMonth(),a.getDate(),0,0,0,0)).getTime();this._rangeTo=(new Date(b.getFullYear(),b.getMonth(),b.getDate(),0,0,0,0)).getTime();c=this._rangeActive=!0}if(!c&&a!=null&&typeof b=="undefined"){for(var d=this._extractDates(a),e=0;e<d.length;e++)this._rangeSet[(new Date(d[e].getFullYear(),d[e].getMonth(),d[e].getDate(),0,0,0,0)).getTime()]=!0;c=!0}!c&&
+a==null&&typeof a!="undefined"&&b==null&&typeof b!="undefined"&&(this._clearRange(),c=!0);!c&&a==null&&typeof a!="undefined"&&typeof b=="undefined"&&(this._clearRangeSet(),c=!0);!c&&typeof a=="undefined"&&typeof b=="undefined"&&(this._clearRange(),this._clearRangeSet(),c=!0);c&&this._drawMonth(this._activeDate)};this._holidays={};this.setHolidays=function(a){if(a==null)this._clearHolidays();else if(a!=null)for(var b=this._extractDates(a),c=0;c<b.length;c++)this._holidays[(new Date(b[c].getFullYear(),
+b[c].getMonth(),b[c].getDate(),0,0,0,0)).getTime()]=!0;this._drawMonth(this._activeDate)};this._extractDates=function(a){if(typeof a=="string"||a instanceof Date)a=[a];for(var b=[],c=0;c<a.length;c++)if(typeof a[c]=="string")for(var d=a[c].split(","),e=0;e<d.length;e++)b.push(this._strToDate(d[e],!1));else a[c]instanceof Date&&b.push(a[c]);return b};this._clearRange=function(){this._rangeActive=!1;this._rangeTo=this._rangeFrom=null};this._clearRangeSet=function(){for(var a in this._rangeSet)this._rangeSet[a]=
+null,delete this._rangeSet[a]};this._clearHolidays=function(){for(var a in this._holidays)this._holidays[a]=null,delete this._holidays[a]};this._doOnClick=function(a){var a=a||event,b=a.target||a.srcElement;if(b._dhtmlxcalendar_uid&&b._dhtmlxcalendar_uid!=h._activeInp&&h._isVisible())h._hide();else if(!b._dhtmlxcalendar_uid||!h.i[b._dhtmlxcalendar_uid])h._isSelectorVisible()?h._hideSelector():!h._hasParent&&h._isVisible()&&h._hide()};this._doOnKeyDown=function(a){a=a||event;a.keyCode==27&&(h._isSelectorVisible()?
+h._hideSelector():h._isVisible()&&!h._hasParent&&h._hide())};this._doOnInpClick=function(a){var a=a||event,b=a.target||a.srcElement;b._dhtmlxcalendar_uid&&(h._updateDateStr(b.value),h._show(b._dhtmlxcalendar_uid,!0))};this._doOnInpKeyUp=function(a){var a=a||event,b=a.target||a.srcElement;a.keyCode!=13&&b._dhtmlxcalendar_uid&&h._updateDateStr(b.value)};this._doOnUnload=function(){h.unload()};window.addEventListener?(document.body.addEventListener("click",h._doOnClick,!1),window.addEventListener("keydown",
+h._doOnKeyDown,!1),window.addEventListener("unload",h._doOnUnload,!1)):(document.body.attachEvent("onclick",h._doOnClick),document.body.attachEvent("onkeydown",h._doOnKeyDown),window.attachEvent("onunload",h._doOnUnload));this.attachObj=function(a){var b=this.uid();this.i[b]=a;this._attachEventsToObject(b)};this.detachObj=function(a){var b=a._dhtmlxcalendar_uid;if(this.i[b]!=null)this._detachEventsFromObject(b),this.i[b]._dhtmlxcalendar_uid=null,this.i[b]=null,delete this.i[b]};this._attachEventsToObject=
+function(a){this.i[a]._dhtmlxcalendar_uid=a;window.addEventListener?(this.i[a].addEventListener("click",h._doOnInpClick,!1),this.i[a].addEventListener("keyup",h._doOnInpKeyUp,!1)):(this.i[a].attachEvent("onclick",h._doOnInpClick),this.i[a].attachEvent("onkeyup",h._doOnInpKeyUp))};this._detachEventsFromObject=function(a){window.addEventListener?(this.i[a].removeEventListener("click",h._doOnInpClick,!1),this.i[a].removeEventListener("keyup",h._doOnInpKeyUp,!1)):(this.i[a].detachEvent("onclick",h._doOnInpClick),
+this.i[a].detachEvent("onkeyup",h._doOnInpKeyUp))};for(var j in this.i)this._attachEventsToObject(j);this.evs={};this.attachEvent=function(a,b){var c=this.uid();this.evs[c]={name:String(a).toLowerCase(),func:b};return c};this.detachEvent=function(a){if(this.evs[a])this.evs[a].name=null,this.evs[a].func=null,this.evs[a]=null,delete this.evs[a]};this.callEvent=function(a,b){var c=!0,d=String(a).toLowerCase(),b=b||[],e;for(e in this.evs)if(this.evs[e].name==d)var f=this.evs[e].func.apply(this,b),c=c&&
+f;return c};this.checkEvent=function(a){var b=!1,c=String(a).toLowerCase(),d;for(d in this.evs)b=b||this.evs[d].name==c;return b};this.unload=function(){this.uidd=this.uid=this._lastHover=this._dateFormatRE=this._dateFormat=this._activeMonth=this._activeInp=this._activeDateCell=this._activeDate=null;window.addEventListener?(document.body.removeEventListener("click",h._doOnClick,!1),window.removeEventListener("keydown",h._doOnKeyDown,!1),window.removeEventListener("unload",h._doOnUnload,!1)):(document.body.detachEvent("onclick",
+h._doOnClick),document.body.detachEvent("onkeydown",h._doOnKeyDown),window.detachEvent("onunload",h._doOnKeyDown));this._doOnUnload=this._doOnKeyDown=this._doOnClick=null;for(var a in this.i)this.i[a]._dhtmlxcalendar_uid=null,delete this.i[a]._dhtmlxcalendar_uid,window.addEventListener?(this.i[a].removeEventListener("click",h._doOnInpClick,!1),this.i[a].removeEventListener("keyup",h._doOnInpKeyUp,!1)):(this.i[a].detachEvent("onclick",h._doOnInpClick),this.i[a].detachEvent("onkeyup",h._doOnInpKeyUp)),
+this.i[a]=null,delete this.i[a];this._doOnInpKeyUp=this._doOnInpClick=this.i=null;for(a in this.evs)this.detachEvent(a);this.callEvent=this.checkEvent=this.detachEvent=this.attachEvent=this.evs=null;this.contMonth.onselectstart=null;this.contMonth.firstChild.firstChild.onclick=null;this.contMonth.firstChild.firstChild.firstChild.onmouseover=null;this.contMonth.firstChild.firstChild.firstChild.onmouseout=null;this.contMonth.firstChild.firstChild.lastChild.onmouseover=null;for(this.contMonth.firstChild.firstChild.lastChild.onmouseout=
+null;this.contMonth.firstChild.firstChild.childNodes.length>0;)this.contMonth.firstChild.firstChild.removeChild(this.contMonth.firstChild.firstChild.lastChild);this.contMonth.firstChild.removeChild(this.contMonth.firstChild.firstChild);this.contMonth.removeChild(this.contMonth.firstChild);this.contMonth.parentNode.removeChild(this.contMonth);for(this.contMonth=null;this.contDays.firstChild.childNodes.length>0;)this.contDays.firstChild.removeChild(this.contDays.firstChild.lastChild);this.contDays.removeChild(this.contDays.firstChild);
+this.contDays.parentNode.removeChild(this.contDays);this.contDays=null;this.contDates.onclick=null;this.contDates.onmouseover=null;for(this.contDates.onmouseout=null;this.contDates.childNodes.length>0;){for(;this.contDates.lastChild.childNodes.length>0;)this.contDates.lastChild.lastChild._css_date=null,this.contDates.lastChild.lastChild._css_month=null,this.contDates.lastChild.lastChild._css_weekend=null,this.contDates.lastChild.lastChild._css_hover=null,this.contDates.lastChild.lastChild._date=null,
+this.contDates.lastChild.lastChild._q=null,this.contDates.lastChild.lastChild._w=null,this.contDates.lastChild.removeChild(this.contDates.lastChild.lastChild);this.contDates.removeChild(this.contDates.lastChild)}this.contDates.parentNode.removeChild(this.contDates);this.contDates=null;for(this.contTime.firstChild.firstChild.onclick=null;this.contTime.firstChild.firstChild.childNodes.length>0;)this.contTime.firstChild.firstChild.removeChild(this.contTime.firstChild.firstChild.lastChild);this.contTime.firstChild.removeChild(this.contTime.firstChild.firstChild);
+this.contTime.removeChild(this.contTime.firstChild);this.contTime.parentNode.removeChild(this.contTime);this._lastHover=this.contTime=null;if(this.msCont){this._msActive=this.msCont.onclick=null;for(a in this._msCells)this._msCells[a]._cell=null,this._msCells[a]._month=null,this._msCells[a].parentNode.removeChild(this._msCells[a]),this._msCells[a]=null;for(this._msCells=null;this.msCont.childNodes.length>0;)this.msCont.removeChild(this.msCont.lastChild);this.msCont.parentNode.removeChild(this.msCont);
+this.msCont=null}if(this.ysCont){this.ysCont.onclick=null;for(a in this._ysCells)this._ysCells[a]._cell=null,this._ysCells[a]._year=null,this._ysCells[a].parentNode.removeChild(this._ysCells[a]),this._ysCells[a]=null;for(this._ysCells=null;this.ysCont.childNodes.length>0;)this.ysCont.removeChild(this.ysCont.lastChild);this.ysCont.parentNode.removeChild(this.ysCont);this.ysCont=null}if(this.hsCont){this._hsActive=this.hsCont.onclick=null;for(a in this._hsCells)this._hsCells[a]._cell=null,this._hsCells[a]._hours=
+null,this._hsCells[a].parentNode.removeChild(this._hsCells[a]),this._hsCells[a]=null;for(this._hsCells=null;this.hsCont.childNodes.length>0;)this.hsCont.removeChild(this.hsCont.lastChild);this.hsCont.parentNode.removeChild(this.hsCont);this.hsCont=null}if(this.rsCont){this._rsActive=this.rsCont.onclick=null;for(a in this._rsCells)this._rsCells[a]._cell=null,this._rsCells[a]._minutes=null,this._rsCells[a].parentNode.removeChild(this._rsCells[a]),this._rsCells[a]=null;for(this._rsCells=null;this.rsCont.childNodes.length>
+0;)this.rsCont.removeChild(this.rsCont.lastChild);this.rsCont.parentNode.removeChild(this.rsCont);this.rsCont=null}if(this._selCover)this._selCover.parentNode.removeChild(this._selCover),this._selCover=null;if(this._sel){for(a in this._sel._ta)this._sel._ta[a]=null;this._sel._ta=null;this._sel._t=null;this._sel.onmouseover=null;for(this._sel.onmouseout=null;this._sel.firstChild.firstChild.firstChild.childNodes.length>0;)this._sel.firstChild.firstChild.firstChild.lastChild.onclick=null,this._sel.firstChild.firstChild.firstChild.lastChild.onmouseover=
+null,this._sel.firstChild.firstChild.firstChild.lastChild.onmouseout=null,this._sel.firstChild.firstChild.firstChild.removeChild(this._sel.firstChild.firstChild.firstChild.lastChild);this._sel.firstChild.firstChild.removeChild(this._sel.firstChild.firstChild.firstChild);for(this._sel.firstChild.removeChild(this._sel.firstChild.firstChild);this._sel.childNodes.length>0;)this._sel.removeChild(this._sel.lastChild);this._sel.parentNode.removeChild(this._sel);this._sel=null}this.base.onclick=null;this.base.parentNode.removeChild(this.base);
+this.unload=this.showTime=this.show=this.setDateFormat=this.setDate=this.hideTime=this.hide=this._updateYearsList=this._updateVisibleMinutes=this._updateVisibleHours=this._updateDateStr=this._updateCellStyle=this._updateActiveYear=this._updateActiveMonth=this._updateActiveMinutes=this._updateActiveHours=this._strToDate=this._showSelector=this._show=this._scrollYears=this._posGetOffsetSum=this._posGetOffsetRect=this._posGetOffset=this._isVisible=this._isSelectorVisible=this._initSelector=this._hideSelector=
+this._hide=this._getTop=this._getLeft=this._fixLength=this._drawMonth=this._doOnSelectorShow=this._doOnSelectorChange=this._clearSelHover=this._clearDayHover=this.base=null;for(a in this)delete this[a];a=h=null};this.setDate(this._activeDate);return this}dhtmlXCalendarObject.prototype.setYearsRange=function(){};dhtmlXCalendarObject.prototype.lang="en";
+dhtmlXCalendarObject.prototype.langData={en:{dateformat:"%Y-%m-%d",monthesFNames:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),monthesSNames:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),daysFNames:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),daysSNames:"Su,Mo,Tu,We,Th,Fr,Sa".split(","),weekstart:1}};dhtmlxCalendarObject=dhtmlXCalendarObject;window.dhtmlx||(dhtmlx={});dhtmlx.version="3.0";
+dhtmlx.codebase="./";dhtmlx.extend=function(a,b){for(var c in b)a[c]=b[c];b._init&&a._init();return a};
+dhtmlx.proto_extend=function(){for(var a=arguments,b=a[0],c=[],d=a.length-1;d>0;d--){if(typeof a[d]=="function")a[d]=a[d].prototype;for(var e in a[d])e=="_init"?c.push(a[d][e]):b[e]||(b[e]=a[d][e])}a[0]._init&&c.push(a[0]._init);b._init=function(){for(var a=0;a<c.length;a++)c[a].apply(this,arguments)};b.base=a[1];var f=function(a){this._init(a);this._parseSettings&&this._parseSettings(a,this.defaults)};f.prototype=b;b=a=null;return f};dhtmlx.bind=function(a,b){return function(){return a.apply(b,arguments)}};
+dhtmlx.require=function(a){dhtmlx._modules[a]||(dhtmlx.exec(dhtmlx.ajax().sync().get(dhtmlx.codebase+a).responseText),dhtmlx._modules[a]=!0)};dhtmlx._modules={};dhtmlx.exec=function(a){window.execScript?window.execScript(a):window.eval(a)};dhtmlx.methodPush=function(a,b){return function(){var c=!1;return c=a[b].apply(a,arguments)}};dhtmlx.isNotDefined=function(a){return typeof a=="undefined"};dhtmlx.delay=function(a,b,c,d){setTimeout(function(){var d=a.apply(b,c);a=b=c=null;return d},d||1)};
+dhtmlx.uid=function(){if(!this._seed)this._seed=(new Date).valueOf();this._seed++;return this._seed};dhtmlx.toNode=function(a){return typeof a=="string"?document.getElementById(a):a};dhtmlx.toArray=function(a){return dhtmlx.extend(a||[],dhtmlx.PowerArray)};dhtmlx.toFunctor=function(a){return typeof a=="string"?eval(a):a};dhtmlx._events={};
+dhtmlx.event=function(a,b,c,d){var a=dhtmlx.toNode(a),e=dhtmlx.uid();dhtmlx._events[e]=[a,b,c];d&&(c=dhtmlx.bind(c,d));a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c);return e};dhtmlx.eventRemove=function(a){if(a){var b=dhtmlx._events[a];b[0].removeEventListener?b[0].removeEventListener(b[1],b[2],!1):b[0].detachEvent&&b[0].detachEvent("on"+b[1],b[2]);delete this._events[a]}};
+dhtmlx.EventSystem={_init:function(){this._events={};this._handlers={};this._map={}},block:function(){this._events._block=!0},unblock:function(){this._events._block=!1},mapEvent:function(a){dhtmlx.extend(this._map,a)},callEvent:function(a,b){if(this._events._block)return!0;var a=a.toLowerCase(),c=this._events[a.toLowerCase()],d=!0;if(c)for(var e=0;e<c.length;e++)if(c[e].apply(this,b||[])===!1)d=!1;this._map[a]&&!this._map[a].callEvent(a,b)&&(d=!1);return d},attachEvent:function(a,b,c){var a=a.toLowerCase(),
+c=c||dhtmlx.uid(),b=dhtmlx.toFunctor(b),d=this._events[a]||dhtmlx.toArray();d.push(b);this._events[a]=d;this._handlers[c]={f:b,t:a};return c},detachEvent:function(a){if(this._handlers[a]){var b=this._handlers[a].t,c=this._handlers[a].f,d=this._events[b];d.remove(c);delete this._handlers[a]}}};
+dhtmlx.PowerArray={removeAt:function(a,b){a>=0&&this.splice(a,b||1)},remove:function(a){this.removeAt(this.find(a))},insertAt:function(a,b){if(!b&&b!==0)this.push(a);else{var c=this.splice(b,this.length-b);this[b]=a;this.push.apply(this,c)}},find:function(a){for(i=0;i<this.length;i++)if(a==this[i])return i;return-1},each:function(a,b){for(var c=0;c<this.length;c++)a.call(b||this,this[c])},map:function(a,b){for(var c=0;c<this.length;c++)this[c]=a.call(b||this,this[c]);return this}};dhtmlx.env={};
+if(navigator.userAgent.indexOf("Opera")!=-1)dhtmlx._isOpera=!0;else{dhtmlx._isIE=!!document.all;dhtmlx._isFF=!document.all;dhtmlx._isWebKit=navigator.userAgent.indexOf("KHTML")!=-1;if(navigator.appVersion.indexOf("MSIE 8.0")!=-1&&document.compatMode!="BackCompat")dhtmlx._isIE=8;if(navigator.appVersion.indexOf("MSIE 9.0")!=-1&&document.compatMode!="BackCompat")dhtmlx._isIE=8}dhtmlx.env={};
+(function(){dhtmlx.env.transform=!1;dhtmlx.env.transition=!1;for(var a={names:["transform","transition"],transform:["transform","WebkitTransform","MozTransform","oTransform"],transition:["transition","WebkitTransition","MozTransition","oTransition"]},b=document.createElement("DIV"),c,d=0;d<a.names.length;d++)for(;p=a[a.names[d]].pop();)typeof b.style[p]!="undefined"&&(dhtmlx.env[a.names[d]]=!0)})();
+dhtmlx.env.transform_prefix=function(){var a;dhtmlx._isOpera?a="-o-":(a="",dhtmlx._isFF&&(a="-moz-"),dhtmlx._isWebKit&&(a="-webkit-"));return a}();dhtmlx.env.svg=function(){return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}();dhtmlx.zIndex={drag:1E4};
+dhtmlx.html={create:function(a,b,c){var b=b||{},d=document.createElement(a),e;for(e in b)d.setAttribute(e,b[e]);if(b.style)d.style.cssText=b.style;if(b["class"])d.className=b["class"];if(c)d.innerHTML=c;return d},getValue:function(a){a=dhtmlx.toNode(a);return!a?"":dhtmlx.isNotDefined(a.value)?a.innerHTML:a.value},remove:function(a){if(a instanceof Array)for(var b=0;b<a.length;b++)this.remove(a[b]);else a&&a.parentNode&&a.parentNode.removeChild(a)},insertBefore:function(a,b,c){a&&(b?b.parentNode.insertBefore(a,
+b):c.appendChild(a))},locate:function(a,b){for(var a=a||event,c=a.target||a.srcElement;c;){if(c.getAttribute){var d=c.getAttribute(b);if(d)return d}c=c.parentNode}return null},offset:function(a){if(a.getBoundingClientRect){var b=a.getBoundingClientRect(),c=document.body,d=document.documentElement,e=window.pageYOffset||d.scrollTop||c.scrollTop,f=window.pageXOffset||d.scrollLeft||c.scrollLeft,g=d.clientTop||c.clientTop||0,h=d.clientLeft||c.clientLeft||0,i=b.top+e-g,j=b.left+f-h;return{y:Math.round(i),
+x:Math.round(j)}}else{for(j=i=0;a;)i+=parseInt(a.offsetTop,10),j+=parseInt(a.offsetLeft,10),a=a.offsetParent;return{y:i,x:j}}},pos:function(a){a=a||event;if(a.pageX||a.pageY)return{x:a.pageX,y:a.pageY};var b=dhtmlx._isIE&&document.compatMode!="BackCompat"?document.documentElement:document.body;return{x:a.clientX+b.scrollLeft-b.clientLeft,y:a.clientY+b.scrollTop-b.clientTop}},preventEvent:function(a){a&&a.preventDefault&&a.preventDefault();dhtmlx.html.stopEvent(a)},stopEvent:function(a){(a||event).cancelBubble=
+!0;return!1},addCss:function(a,b){a.className+=" "+b},removeCss:function(a,b){a.className=a.className.replace(RegExp(b,"g"),"")}};(function(){var a=document.getElementsByTagName("SCRIPT");if(a.length)a=(a[a.length-1].getAttribute("src")||"").split("/"),a.splice(a.length-1,1),dhtmlx.codebase=a.slice(0,a.length).join("/")+"/"})();dhtmlx.ui={};
+dhtmlx.Destruction={_init:function(){dhtmlx.destructors.push(this)},destructor:function(){this.destructor=function(){};this._htmlrows=this._htmlmap=null;this._html&&document.body.appendChild(this._html);this._html=null;if(this._obj)this._obj.innerHTML="",this._obj._htmlmap=null;this.data=this._obj=this._dataobj=null;this._events=this._handlers={}}};dhtmlx.destructors=[];
+dhtmlx.event(window,"unload",function(){for(var a=0;a<dhtmlx.destructors.length;a++)dhtmlx.destructors[a].destructor();dhtmlx.destructors=[];for(var b in dhtmlx._events){var c=dhtmlx._events[b];c[0].removeEventListener?c[0].removeEventListener(c[1],c[2],!1):c[0].detachEvent&&c[0].detachEvent("on"+c[1],c[2]);delete dhtmlx._events[b]}});dhtmlx.math={};dhtmlx.math._toHex="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F".split(",");
+dhtmlx.math.toHex=function(a,b){a=parseInt(a,10);for(str="";a>0;)str=this._toHex[a%16]+str,a=Math.floor(a/16);for(;str.length<b;)str="0"+str;return str};dhtmlx.ui.Map=function(a){this.name="Map";this._id="map_"+dhtmlx.uid();this._key=a;this._map=[]};
+dhtmlx.ui.Map.prototype={addRect:function(a,b,c){this._createMapArea(a,"RECT",b,c)},addPoly:function(a,b){this._createMapArea(a,"POLY",b)},_createMapArea:function(a,b,c,d){var e="";arguments.length==4&&(e="userdata='"+d+"'");this._map.push("<area "+this._key+"='"+a+"' shape='"+b+"' coords='"+c.join()+"' "+e+"></area>")},addSector:function(a,b,c,d,e,f,g){var h=[];h.push(d);h.push(Math.floor(e*g));for(var i=b;i<c;i+=Math.PI/18)h.push(Math.floor(d+f*Math.cos(i))),h.push(Math.floor((e+f*Math.sin(i))*
+g));h.push(Math.floor(d+f*Math.cos(c)));h.push(Math.floor((e+f*Math.sin(c))*g));h.push(d);h.push(Math.floor(e*g));return this.addPoly(a,h)},render:function(a){var b=dhtmlx.html.create("DIV");b.style.cssText="position:absolute; width:100%; height:100%; top:0px; left:0px;";a.appendChild(b);var c=dhtmlx._isIE?"":"src='data:image/gif;base64,R0lGODlhEgASAIAAAP///////yH5BAUUAAEALAAAAAASABIAAAIPjI+py+0Po5y02ouz3pwXADs='";b.innerHTML="<map id='"+this._id+"' name='"+this._id+"'>"+this._map.join("\n")+"</map><img "+
+c+" class='dhx_map_img' usemap='#"+this._id+"'>";a._htmlmap=b;this._map=[]}};dhtmlx.chart={};
+dhtmlx.chart.area={pvt_render_area:function(a,b,c,d,e,f){var g=this._calculateParametersOfLineChart(a,b,c,d,e),h=Math.floor(g.cellWidth/2);if(b.length){a.globalAlpha=this._settings.alpha.call(this,b[0]);a.fillStyle=this._settings.color.call(this,b[0]);var i=this._getYPointOfLineChart(b[0],c,d,g),j=this._settings.offset?c.x+g.cellWidth*0.5:c.x;a.beginPath();a.moveTo(j,d.y);a.lineTo(j,i);f.addRect(b[0].id,[j-h,i-h,j+h,i+h]);this._settings.yAxis||this.renderTextAt(!1,!this._settings.offset?!1:!0,j,i-
+this._settings.labelOffset,this._settings.label(b[0]));for(var k=1;k<b.length;k++){var m=j+Math.floor(g.cellWidth*k)-0.5,l=this._getYPointOfLineChart(b[k],c,d,g);a.lineTo(m,l);f.addRect(b[k].id,[m-h,l-h,m+h,l+h]);this._settings.yAxis||this.renderTextAt(!1,!this._settings.offset&&k==b.length-1?"left":"center",m,l-this._settings.labelOffset,this._settings.label(b[k]))}a.lineTo(j+Math.floor(g.cellWidth*[b.length-1]),d.y);a.lineTo(j,d.y);a.fill()}}};
+dhtmlx.chart.stackedArea={pvt_render_stackedArea:function(a,b,c,d,e,f){var g=this._calculateParametersOfLineChart(a,b,c,d,e),h=Math.floor(g.cellWidth/2),i=[];if(b.length){a.globalAlpha=this._settings.alpha.call(this,b[0]);a.fillStyle=this._settings.color.call(this,b[0]);var j=e?b[0].$startY:d.y,k=this._settings.offset?c.x+g.cellWidth*0.5:c.x,m=this._getYPointOfLineChart(b[0],c,d,g)-(e?d.y-j:0);i[0]=m;a.beginPath();a.moveTo(k,j);a.lineTo(k,m);f.addRect(b[0].id,[k-h,m-h,k+h,m+h]);this._settings.yAxis||
+this.renderTextAt(!1,!0,k,m-this._settings.labelOffset,this._settings.label(b[0]));for(var l=1;l<b.length;l++){var n=k+Math.floor(g.cellWidth*l)-0.5,o=this._getYPointOfLineChart(b[l],c,d,g)-(e?d.y-b[l].$startY:0);i[l]=o;a.lineTo(n,o);f.addRect(b[l].id,[n-h,o-h,n+h,o+h]);this._settings.yAxis||this.renderTextAt(!1,!0,n,o-this._settings.labelOffset,this._settings.label(b[l]))}a.lineTo(k+Math.floor(g.cellWidth*[b.length-1]),j);if(e)for(l=b.length-1;l>=0;l--){var n=k+Math.floor(g.cellWidth*l)-0.5,p=b[l].$startY;
+a.lineTo(n,p)}else a.lineTo(k+Math.floor(g.cellWidth*(length-1))-0.5,j);a.lineTo(k,j);a.fill();for(l=0;l<b.length;l++)b[l].$startY=i[l]}}};
+dhtmlx.chart.spline={pvt_render_spline:function(a,b,c,d,e){var f=this._calculateParametersOfLineChart(a,b,c,d,e),g=Math.floor(f.cellWidth/2),g=this._settings.eventRadius||g,h=[];if(b.length){for(var i=this._settings.offset?c.x+f.cellWidth*0.5:c.x,j=0;j<b.length;j++){var k=!j?i:Math.floor(f.cellWidth*j)-0.5+i,m=this._getYPointOfLineChart(b[j],c,d,f);h.push({x:k,y:m})}for(var l=this._getSplineParameters(h),j=0;j<h.length-1;j++){for(var n=h[j].x,o=h[j].y,p=h[j+1].x,r=h[j+1].y,q=n;q<p;q++)this._drawLine(a,
+q,this._getSplineYPoint(q,n,j,l.a,l.b,l.c,l.d),q+1,this._getSplineYPoint(q+1,n,j,l.a,l.b,l.c,l.d),this._settings.line.color(b[j]),this._settings.line.width);this._drawLine(a,p-1,this._getSplineYPoint(q,n,j,l.a,l.b,l.c,l.d),p,r,this._settings.line.color(b[j]),this._settings.line.width);this._drawItemOfLineChart(a,n,o,b[j],this._settings.label(b[j]))}this._drawItemOfLineChart(a,p,r,b[j],this._settings.label(b[j]))}},_getSplineParameters:function(a){var b,c,d,e,f,g,h,i,j;b=[];m=[];j=a.length;for(var k=
+0;k<j-1;k++)b[k]=a[k+1].x-a[k].x,m[k]=(a[k+1].y-a[k].y)/b[k];c=[];d=[];c[0]=0;c[1]=2*(b[0]+b[1]);d[0]=0;d[1]=6*(m[1]-m[0]);for(k=2;k<j-1;k++)c[k]=2*(b[k-1]+b[k])-b[k-1]*b[k-1]/c[k-1],d[k]=6*(m[k]-m[k-1])-b[k-1]*d[k-1]/c[k-1];e=[];e[j-1]=e[0]=0;for(k=j-2;k>=1;k--)e[k]=(d[k]-b[k]*e[k+1])/c[k];f=[];g=[];h=[];i=[];for(k=0;k<j-1;k++)f[k]=a[k].y,g[k]=-b[k]*e[k+1]/6-b[k]*e[k]/3+(a[k+1].y-a[k].y)/b[k],h[k]=e[k]/2,i[k]=(e[k+1]-e[k])/(6*b[k]);return{a:f,b:g,c:h,d:i}},_getSplineYPoint:function(a,b,c,d,e,f,g){return d[c]+
+(a-b)*(e[c]+(a-b)*(f[c]+(a-b)*g[c]))}};
+dhtmlx.chart.barH={pvt_render_barH:function(a,b,c,d,e,f){var g,h,i,j,k=d.x-c.x,m=!!this._settings.yAxis,l=!!this._settings.xAxis,n=this._getLimits("h");g=n.max;h=n.min;var o=Math.floor((d.y-c.y)/b.length);e||this._drawHScales(a,b,c,d,h,g,o);m&&(g=parseFloat(this._settings.xAxis.end),h=parseFloat(this._settings.xAxis.start));var p=this._getRelativeValue(h,g);j=p[0];i=p[1];var r=j?k/j:10;if(!m)var q=10,r=j?(k-q)/j:10;var s=parseInt(this._settings.width,10);s*this._series.length+4>o&&(s=o/this._series.length-
+4);var y=Math.floor((o-s*this._series.length)/2),t=typeof this._settings.radius!="undefined"?parseInt(this._settings.radius,10):Math.round(s/5),u=!1,w=this._settings.gradient;w&&typeof w!="function"?(u=w,w=!1):w&&(w=a.createLinearGradient(c.x,c.y,d.x,c.y),this._settings.gradient(w));var B=0;m||this._drawLine(a,c.x-0.5,c.y,c.x-0.5,d.y,"#000000",1);for(var v=0;v<b.length;v++){var z=parseFloat(this._settings.value(b[v]||0));z>g&&(z=g);z-=h;z*=i;var A=c.x,x=c.y+y+v*o+(s+1)*e;if(z<0&&this._settings.origin==
+"auto"||this._settings.xAxis&&z===0&&!(this._settings.origin!="auto"&&this._settings.origin>h))this.renderTextAt("middle","right",A+10,x+s/2+y,this._settings.label(b[v]));else{z<0&&this._settings.origin!="auto"&&this._settings.origin>h&&(z=0);m||(z+=q/r);var C=w||this._settings.color.call(this,b[v]);this._settings.border&&this._drawBarHBorder(a,A,x,s,h,t,r,z,C);a.globalAlpha=this._settings.alpha.call(this,b[v]);var D=this._drawBarH(a,c,A,x,s,h,t,r,z,C,w,u);a.globalAlpha=1;u!=!1&&this._drawBarHGradient(a,
+A,x,s,h,t,r,z,C,u);D[3]==x?(this.renderTextAt("middle","left",D[0]-5,D[3]+Math.floor(s/2),this._settings.label(b[v])),f.addRect(b[v].id,[D[0],D[3],D[2],D[3]+s],e)):(this.renderTextAt("middle",!1,D[2]+5,D[1]+Math.floor(s/2),this._settings.label(b[v])),f.addRect(b[v].id,[D[0],x,D[2],D[3]],e))}}},_setBarHPoints:function(a,b,c,d,e,f,g,h){var i=0;if(e>f*g)var j=(e-f*g)/e,i=-Math.asin(j)+Math.PI/2;a.moveTo(b,c+h);var k=b+f*g-e-(e?0:h);e<f*g&&a.lineTo(k,c+h);var m=c+e;e&&a.arc(k,m,e-h,-Math.PI/2+i,0,!1);
+var l=c+d-e-(e?0:h),n=k+e-(e?h:0);a.lineTo(n,l);var o=k;e&&a.arc(o,l,e-h,0,Math.PI/2-i,!1);var p=c+d-h;a.lineTo(b,p);a.lineTo(b,c+h);return[n,p]},_drawHScales:function(a,b,c,d,e,f,g){var h=this._drawHXAxis(a,b,c,d,e,f);this._drawHYAxis(a,b,c,d,g,h)},_drawHYAxis:function(a,b,c,d,e,f){if(this._settings.yAxis){var g=parseInt(f?f:c.x,10)-0.5,h=d.y+0.5,i=c.y;this._drawLine(a,g,h,g,i,this._settings.yAxis.color,1);for(var j=0;j<b.length;j++){var k=this._settings.origin!="auto"&&this._settings.view=="barH"&&
+parseFloat(this._settings.value(b[j]))<this._settings.origin;this.renderTextAt("middle",k?!1:"left",k?g+5:g-5,i+e/2+j*e,this._settings.yAxis.template(b[j]),"dhx_axis_item_y",k?0:g-10)}this._setYAxisTitle(c,d)}},_drawHXAxis:function(a,b,c,d,e,f){var g,h={},i=this._settings.xAxis;if(i){var j=d.y+0.5,k=c.x-0.5,m=d.x-0.5,l=c.x;this._drawLine(a,k,j,m,j,i.color,1);i.step&&(g=parseFloat(i.step));if(typeof i.step=="undefined"||typeof i.start=="undefined"||typeof i.end=="undefined")h=this._calculateScale(e,
+f),e=h.start,f=h.end,g=h.step,this._settings.xAxis.end=f,this._settings.xAxis.start=e,this._settings.xAxis.step=g;if(g!==0){for(var n=(m-k)*g/(f-e),o=0,p=e;p<=f;p+=g){h.fixNum&&(p=parseFloat((new Number(p)).toFixed(h.fixNum)));var r=Math.floor(k+o*n)+0.5;!(p==e&&this._settings.origin=="auto")&&i.lines&&this._drawLine(a,r,j,r,c.y,this._settings.xAxis.color,0.2);p==this._settings.origin&&(l=r+1);this.renderTextAt(!1,!0,r,j+2,i.template(p.toString()),"dhx_axis_item_x");o++}this.renderTextAt(!0,!1,k,
+d.y+this._settings.padding.bottom-3,this._settings.xAxis.title,"dhx_axis_title_x",d.x-c.x);i.lines||this._drawLine(a,k,c.y-0.5,m,c.y-0.5,this._settings.xAxis.color,0.2);return l}}},_correctBarHParams:function(a,b,c,d,e,f,g){var h=this._settings.yAxis,i=b;h&&this._settings.origin!="auto"&&this._settings.origin>g&&(b+=(this._settings.origin-g)*e,i=b,d-=this._settings.origin-g,d<0&&(d*=-1,a.translate(b,c+f),a.rotate(Math.PI),b=0.5,c=0),b+=0.5);return{value:d,x0:b,y0:c,start:i}},_drawBarH:function(a,
+b,c,d,e,f,g,h,i,j,k,m){a.save();var l=this._correctBarHParams(a,c,d,i,h,e,f);a.fillStyle=j;a.beginPath();var n=this._setBarHPoints(a,l.x0,l.y0,e,g,h,l.value,this._settings.border?1:0);k&&!m&&a.lineTo(b.x+total_width,l.y0+(this._settings.border?1:0));a.fill();a.restore();var o=l.y0,p=l.y0!=d?d:n[1],r=l.y0!=d?l.start-n[0]:l.start,q=l.y0!=d?l.start:n[0];return[r,o,q,p]},_drawBarHBorder:function(a,b,c,d,e,f,g,h,i){a.save();var j=this._correctBarHParams(a,b,c,h,g,d,e);a.beginPath();a.fillStyle=i;this._setBarHPoints(a,
+j.x0,j.y0,d,f,g,j.value,0);a.lineTo(b,0);a.fill();a.fillStyle="#000000";a.globalAlpha=0.37;a.beginPath();this._setBarHPoints(a,j.x0,j.y0,d,f,g,j.value,0);a.fill();a.restore()},_drawBarHGradient:function(a,b,c,d,e,f,g,h,i,j){a.save();var k=this._correctBarHParams(a,b,c,h,g,d,e),m=this._setBarGradient(a,k.x0,k.y0+d,k.x0+g*k.value,k.y0,j,i,"x");a.fillStyle=m.gradient;a.beginPath();var l=this._setBarHPoints(a,k.x0,k.y0+m.offset,d-m.offset*2,f,g,k.value,m.offset);a.fill();a.globalAlpha=1;a.restore()}};
+dhtmlx.chart.stackedBarH={pvt_render_stackedBarH:function(a,b,c,d,e,f){var g,h,i,j,k=d.x-c.x,m=!!this._settings.yAxis,l=!!this._settings.xAxis,n=this._getStackedLimits(b);g=n.max;h=n.min;var o=Math.floor((d.y-c.y)/b.length);e||this._drawHScales(a,b,c,d,h,g,o);m&&(g=parseFloat(this._settings.xAxis.end),h=parseFloat(this._settings.xAxis.start));var p=this._getRelativeValue(h,g);j=p[0];i=p[1];var r=j?k/j:10;if(!m)var q=10,r=j?(k-q)/j:10;var s=parseInt(this._settings.width,10);s+4>o&&(s=o-4);var y=Math.floor((o-
+s)/2),t=0,u=!1,w=this._settings.gradient,u=!1;(w=this._settings.gradient)&&(u=!0);var B=0;m||this._drawLine(a,c.x-0.5,c.y,c.x-0.5,d.y,"#000000",1);for(var v=0;v<b.length;v++){if(!e)b[v].$startX=c.x;var z=parseFloat(this._settings.value(b[v]||0));z>g&&(z=g);z-=h;z*=i;var A=c.x,x=c.y+y+v*o;if(e)A=b[v].$startX;if(z<0||this._settings.yAxis&&z===0)this.renderTextAt("middle",!0,A+10,x+s/2,this._settings.label(b[v]));else{m||(z+=q/r);var C=this._settings.color.call(this,b[v]);if(this._settings.border)a.beginPath(),
+a.fillStyle=C,this._setBarHPoints(a,A,x,s,t,r,z,0),a.lineTo(A,0),a.fill(),a.fillStyle="#000000",a.globalAlpha=0.37,a.beginPath(),this._setBarHPoints(a,A,x,s,t,r,z,0),a.fill();a.globalAlpha=1;a.globalAlpha=this._settings.alpha.call(this,b[v]);a.fillStyle=this._settings.color.call(this,b[v]);a.beginPath();var D=this._setBarHPoints(a,A,x,s,t,r,z,this._settings.border?1:0);w&&!u&&a.lineTo(c.x+k,x+(this._settings.border?1:0));a.fill();if(u!=!1){var F=this._setBarGradient(a,A,x+s,A,x,u,C,"x");a.fillStyle=
+F.gradient;a.beginPath();D=this._setBarHPoints(a,A,x,s,t,r,z,0);a.fill();a.globalAlpha=1}this.renderTextAt("middle",!0,b[v].$startX+(D[0]-b[v].$startX)/2-1,x+(D[1]-x)/2,this._settings.label(b[v]));f.addRect(b[v].id,[b[v].$startX,x,D[0],D[1]],e);b[v].$startX=D[0]}}}};
+dhtmlx.chart.stackedBar={pvt_render_stackedBar:function(a,b,c,d,e,f){var g,h,i,j,k=d.y-c.y,m=!!this._settings.yAxis,l=!!this._settings.xAxis,n=this._getStackedLimits(b);g=n.max;h=n.min;var o=Math.floor((d.x-c.x)/b.length);e||this._drawScales(a,b,c,d,h,g,o);m&&(g=parseFloat(this._settings.yAxis.end),h=parseFloat(this._settings.yAxis.start));var p=this._getRelativeValue(h,g);j=p[0];i=p[1];var r=j?k/j:10,q=parseInt(this._settings.width,10);q+4>o&&(q=o-4);var s=Math.floor((o-q)/2),y=this._settings.gradient?
+this._settings.gradient:!1,t=0;l||this._drawLine(a,c.x,d.y+0.5,d.x,d.y+0.5,"#000000",1);for(var u=0;u<b.length;u++){var w=parseFloat(this._settings.value(b[u]||0));if(w){e||(w-=h);w*=i;var B=c.x+s+u*o,v=d.y;if(e)v=b[u].$startY;if(!(v<c.y+1))if(w<0||this._settings.yAxis&&w===0)this.renderTextAt(!0,!0,B+Math.floor(q/2),v,this._settings.label(b[u]));else{var z=this._settings.color.call(this,b[u]);if(this._settings.border)a.beginPath(),a.fillStyle=z,this._setStakedBarPoints(a,B-1,v,q+2,r,w,0,c.y),a.lineTo(B,
+v),a.fill(),a.fillStyle="#000000",a.globalAlpha=0.37,a.beginPath(),this._setStakedBarPoints(a,B-1,v,q+2,r,w,0,c.y),a.fill();a.globalAlpha=this._settings.alpha.call(this,b[u]);a.fillStyle=this._settings.color.call(this,b[u]);a.beginPath();var A=this._setStakedBarPoints(a,B,v,q,r,w,this._settings.border?1:0,c.y);a.fill();a.globalAlpha=1;if(y){var x=this._setBarGradient(a,B,v,B+q,A[1],y,z,"y");a.fillStyle=x.gradient;a.beginPath();A=this._setStakedBarPoints(a,B+x.offset,v,q-x.offset*2,r,w,this._settings.border?
+1:0,c.y);a.fill();a.globalAlpha=1}this.renderTextAt(!1,!0,B+Math.floor(q/2),A[1]+(v-A[1])/2-7,this._settings.label(b[u]));f.addRect(b[u].id,[B,A[1],A[0],b[u].$startY||v],e);b[u].$startY=this._settings.border?A[1]+1:A[1]}}else if(!b[u].$startY)b[u].$startY=d.y}},_setStakedBarPoints:function(a,b,c,d,e,f,g,h){a.moveTo(b,c);var i=c-e*f+g;i<h&&(i=h);a.lineTo(b,i);var j=b+d,k=i;a.lineTo(j,k);var m=i,l=b+d;a.lineTo(l,c);a.lineTo(b,c);return[l,k-2*g]}};
+dhtmlx.chart.line={pvt_render_line:function(a,b,c,d,e,f){var g=this._calculateParametersOfLineChart(a,b,c,d,e),h=this._settings.eventRadius||Math.floor(g.cellWidth/2);if(b.length)for(var i=this._getYPointOfLineChart(b[0],c,d,g),j=this._settings.offset?c.x+g.cellWidth*0.5:c.x,k=j,m=1;m<=b.length;m++){var l=Math.floor(g.cellWidth*m)-0.5+k;if(b.length!=m){var n=this._getYPointOfLineChart(b[m],c,d,g);this._drawLine(a,j,i,l,n,this._settings.line.color(b[m-1]),this._settings.line.width)}this._drawItemOfLineChart(a,
+j,i,b[m-1],!!this._settings.offset);f.addRect(b[m-1].id,[j-h,i-h,j+h,i+h],e);i=n;j=l}},_drawItemOfLineChart:function(a,b,c,d,e){var f=parseInt(this._settings.item.radius,10);a.lineWidth=parseInt(this._settings.item.borderWidth,10);a.fillStyle=this._settings.item.color(d);a.strokeStyle=this._settings.item.borderColor(d);a.beginPath();a.arc(b,c,f,0,Math.PI*2,!0);a.fill();a.stroke();e&&this.renderTextAt(!1,!0,b,c-f-this._settings.labelOffset,this._settings.label(d))},_getYPointOfLineChart:function(a,
+b,c,d){var e=d.minValue,f=d.maxValue,g=d.unit,h=d.valueFactor,i=this._settings.value(a),j=(parseFloat(i||0)-e)*h;this._settings.yAxis||(j+=d.startValue/g);var k=c.y-Math.floor(g*j);if(j<0)k=c.y;if(i>f)k=b.y;if(i<e)k=c.y;return k},_calculateParametersOfLineChart:function(a,b,c,d,e){var f={},g;f.totalHeight=d.y-c.y;f.cellWidth=Math.round((d.x-c.x)/(!this._settings.offset?b.length-1:b.length));var h=!!this._settings.yAxis,i=!!this._settings.xAxis,j=this._settings.view.indexOf("stacked")!=-1?this._getStackedLimits(b):
+this._getLimits();f.maxValue=j.max;f.minValue=j.min;e||this._drawScales(a,b,c,d,f.minValue,f.maxValue,f.cellWidth);if(h)f.maxValue=parseFloat(this._settings.yAxis.end),f.minValue=parseFloat(this._settings.yAxis.start);var k=this._getRelativeValue(f.minValue,f.maxValue);g=k[0];f.valueFactor=k[1];f.unit=g?f.totalHeight/g:10;f.startValue=0;if(!h)f.startValue=f.unit>10?f.unit:10,f.unit=g?(f.totalHeight-f.startValue)/g:10;return f}};
+dhtmlx.chart.bar={pvt_render_bar:function(a,b,c,d,e,f){var g,h,i,j,k=d.y-c.y,m=!!this._settings.yAxis,l=!!this._settings.xAxis,n=this._getLimits();g=n.max;h=n.min;var o=Math.floor((d.x-c.x)/b.length);!e&&(this._settings.origin=="auto"||m)&&this._drawScales(a,b,c,d,h,g,o);m&&(g=parseFloat(this._settings.yAxis.end),h=parseFloat(this._settings.yAxis.start));var p=this._getRelativeValue(h,g);j=p[0];i=p[1];var r=j?k/j:j;if(!m&&!(this._settings.origin!="auto"&&l))var q=10,r=j?(k-q)/j:q;!e&&this._settings.origin!=
+"auto"&&!m&&this._settings.origin>h&&this._drawXAxis(a,b,c,d,o,d.y-r*(this._settings.origin-h));var s=parseInt(this._settings.width,10);this._series&&s*this._series.length+4>o&&(s=o/this._series.length-4);var y=Math.floor((o-s*this._series.length)/2),t=typeof this._settings.radius!="undefined"?parseInt(this._settings.radius,10):Math.round(s/5),u=!1,w=this._settings.gradient;w&&typeof w!="function"?(u=w,w=!1):w&&(w=a.createLinearGradient(0,d.y,0,c.y),this._settings.gradient(w));var B=0;l||this._drawLine(a,
+c.x,d.y+0.5,d.x,d.y+0.5,"#000000",1);for(var v=0;v<b.length;v++){var z=parseFloat(this._settings.value(b[v]||0));z>g&&(z=g);z-=h;z*=i;var A=c.x+y+v*o+(s+1)*e,x=d.y;if(z<0||this._settings.yAxis&&z===0&&!(this._settings.origin!="auto"&&this._settings.origin>h))this.renderTextAt(!0,!0,A+Math.floor(s/2),x,this._settings.label(b[v]));else{!m&&!(this._settings.origin!="auto"&&l)&&(z+=q/r);var C=w||this._settings.color.call(this,b[v]);this._settings.border&&this._drawBarBorder(a,A,x,s,h,t,r,z,C);a.globalAlpha=
+this._settings.alpha.call(this,b[v]);var D=this._drawBar(a,c,A,x,s,h,t,r,z,C,w,u);a.globalAlpha=1;u&&this._drawBarGradient(a,A,x,s,h,t,r,z,C,u);D[0]!=A?this.renderTextAt(!1,!0,A+Math.floor(s/2),D[1],this._settings.label(b[v])):this.renderTextAt(!0,!0,A+Math.floor(s/2),D[3],this._settings.label(b[v]));f.addRect(b[v].id,[A,D[3],D[2],D[1]],e)}}},_correctBarParams:function(a,b,c,d,e,f,g){var h=this._settings.xAxis,i=c;h&&this._settings.origin!="auto"&&this._settings.origin>g&&(c-=(this._settings.origin-
+g)*e,i=c,d-=this._settings.origin-g,d<0&&(d*=-1,a.translate(b+f,c),a.rotate(Math.PI),c=b=0),c-=0.5);return{value:d,x0:b,y0:c,start:i}},_drawBar:function(a,b,c,d,e,f,g,h,i,j,k,m){a.save();a.fillStyle=j;var l=this._correctBarParams(a,c,d,i,h,e,f),n=this._setBarPoints(a,l.x0,l.y0,e,g,h,l.value,this._settings.border?1:0);k&&!m&&a.lineTo(l.x0+(this._settings.border?1:0),b.y);a.fill();a.restore();var o=l.x0,p=l.x0!=c?c+n[0]:n[0],r=l.x0!=c?l.start-n[1]:d,q=l.x0!=c?l.start:n[1];return[o,r,p,q]},_drawBarBorder:function(a,
+b,c,d,e,f,g,h,i){a.save();var j=this._correctBarParams(a,b,c,h,g,d,e);a.fillStyle=i;this._setBarPoints(a,j.x0,j.y0,d,f,g,j.value,0);a.lineTo(j.x0,0);a.fill();a.fillStyle="#000000";a.globalAlpha=0.37;this._setBarPoints(a,j.x0,j.y0,d,f,g,j.value,0);a.fill();a.restore()},_drawBarGradient:function(a,b,c,d,e,f,g,h,i,j){a.save();var k=this._correctBarParams(a,b,c,h,g,d,e),m=this._setBarGradient(a,k.x0,k.y0,k.x0+d,k.y0-g*k.value+2,j,i,"y");a.fillStyle=m.gradient;this._setBarPoints(a,k.x0+m.offset,k.y0,d-
+m.offset*2,f,g,k.value,m.offset);a.fill();a.restore()},_setBarPoints:function(a,b,c,d,e,f,g,h){a.beginPath();var i=0;if(e>f*g)var j=(e-f*g)/e,i=-Math.acos(j)+Math.PI/2;a.moveTo(b+h,c);var k=c-Math.floor(f*g)+e+(e?0:h);e<f*g&&a.lineTo(b+h,k);var m=b+e;e&&a.arc(m,k,e-h,-Math.PI+i,-Math.PI/2,!1);var l=b+d-e-(e?0:h),n=k-e+(e?h:0);a.lineTo(l,n);var o=k;e&&a.arc(l,o,e-h,-Math.PI/2,0-i,!1);var p=b+d-h;a.lineTo(p,c);a.lineTo(b+h,c);return[p,n]}};
+dhtmlx.chart.pie={pvt_render_pie:function(a,b,c,d,e,f){this._renderPie(a,b,c,d,1,f)},_renderPie:function(a,b,c,d,e,f){if(b.length){for(var g=0,h=this._getPieParameters(c,d),i=this._settings.radius?this._settings.radius:h.radius,j=this.max(this._settings.value),k=[],m=[],l=0,n=0;n<b.length;n++)g+=parseFloat(this._settings.value(b[n])||0);for(n=0;n<b.length;n++)m[n]=parseFloat(this._settings.value(b[n])),k[n]=Math.PI*2*(g?(m[n]+l)/g:1/b.length),l+=m[n];var o=this._settings.x?this._settings.x:h.x,p=
+this._settings.y?this._settings.y:h.y;e==1&&this._settings.shadow&&this._addShadow(a,o,p,i);p/=e;var r=-Math.PI/2;a.scale(1,e);for(n=0;n<b.length;n++)if(m[n]){a.lineWidth=2;a.beginPath();a.moveTo(o,p);alpha1=-Math.PI/2+k[n]-1.0E-4;a.arc(o,p,i,r,alpha1,!1);a.lineTo(o,p);var q=this._settings.color.call(this,b[n]);a.fillStyle=q;a.strokeStyle=this._settings.lineColor(b[n]);a.stroke();a.fill();this._settings.pieInnerText&&this._drawSectorLabel(o,p,5*i/6,r,alpha1,e,this._settings.pieInnerText(b[n],g),!0);
+this._settings.label&&this._drawSectorLabel(o,p,i+this._settings.labelOffset,r,alpha1,e,this._settings.label(b[n]));if(e!=1)this._createLowerSector(a,o,p,r,alpha1,i,!0),a.fillStyle="#000000",a.globalAlpha=0.2,this._createLowerSector(a,o,p,r,alpha1,i,!1),a.globalAlpha=1,a.fillStyle=q;f.addSector(b[n].id,r,alpha1,o,p,i,e);r=alpha1}if(this._settings.gradient){var s=e!=1?o+i/3:o,y=e!=1?p+i/3:p;this._showRadialGradient(a,o,p,i,s,y)}a.scale(1,1/e)}},_getPieParameters:function(a,b){var c=b.x-a.x,d=b.y-a.y,
+e=a.x+c/2,f=a.y+d/2,g=Math.min(c/2,d/2);return{x:e,y:f,radius:g}},_createLowerSector:function(a,b,c,d,e,f,g){a.lineWidth=1;if(d<=0&&e>=0||d>=0&&e<=Math.PI||d<=Math.PI&&e>=Math.PI){d<=0&&e>=0&&(d=0,g=!1,this._drawSectorLine(a,b,c,f,d,e));if(d<=Math.PI&&e>=Math.PI)e=Math.PI,g=!1,this._drawSectorLine(a,b,c,f,d,e);var h=(this._settings.height||Math.floor(f/4))/this._settings.cant;a.beginPath();a.arc(b,c,f,d,e,!1);a.lineTo(b+f*Math.cos(e),c+f*Math.sin(e)+h);a.arc(b,c+h,f,e,d,!0);a.lineTo(b+f*Math.cos(d),
+c+f*Math.sin(d));a.fill();g&&a.stroke()}},_drawSectorLine:function(a,b,c,d,e,f){a.beginPath();a.arc(b,c,d,e,f,!1);a.stroke()},_addShadow:function(a,b,c,d){for(var e="#676767,#7b7b7b,#a0a0a0,#bcbcbc,#d1d1d1,#d6d6d6".split(","),f=e.length-1;f>-1;f--)a.beginPath(),a.fillStyle=e[f],a.arc(b+2,c+2,d+f,0,Math.PI*2,!0),a.fill()},_getGrayGradient:function(a){a.addColorStop(0,"#ffffff");a.addColorStop(0.7,"#7a7a7a");a.addColorStop(1,"#000000");return a},_showRadialGradient:function(a,b,c,d,e,f){a.globalAlpha=
+0.3;a.beginPath();var g;typeof this._settings.gradient!="function"?(g=a.createRadialGradient(e,f,d/4,b,c,d),g=this._getGrayGradient(g)):g=this._settings.gradient(g);a.fillStyle=g;a.arc(b,c,d,0,Math.PI*2,!0);a.fill();a.globalAlpha=1},_drawSectorLabel:function(a,b,c,d,e,f,g,h){var i=this.renderText(0,0,g,0,1);if(i){var j=i.scrollWidth;i.style.width=j+"px";j>a&&(j=a);var k=8;h&&(k=j/1.8);var m=d+(e-d)/2;c-=(k-8)/2;var l=-k,n=-8,o="left";m>=Math.PI/2&&m<Math.PI&&(l=-j-l+1,o="right");m<=3*Math.PI/2&&m>=
+Math.PI&&(l=-j-l+1,o="right");var p=(b+Math.floor(c*Math.sin(m)))*f+n,r=a+Math.floor((c+k/2)*Math.cos(m))+l,q=e<Math.PI/2+0.01,s=m<Math.PI/2;s&&q?r=Math.max(r,a+3):!s&&!q&&(r=Math.min(r,a-j));!h&&f<1&&p>b*f&&(p+=this._settings.height||Math.floor(c/4));i.style.top=p+"px";i.style.left=r+"px";i.style.width=j+"px";i.style.textAlign=o;i.style.whiteSpace="nowrap"}}};dhtmlx.chart.pie3D={pvt_render_pie3D:function(a,b,c,d,e,f){this._renderPie(a,b,c,d,this._settings.cant,f)}};
+dhtmlx.Template={_cache:{},empty:function(){return""},setter:function(a){return dhtmlx.Template.fromHTML(a)},obj_setter:function(a){var b=dhtmlx.Template.setter(a),c=this;return function(){return b.apply(c,arguments)}},fromHTML:function(a){if(typeof a=="function")return a;if(this._cache[a])return this._cache[a];a=(a||"").toString();a=a.replace(/[\r\n]+/g,"\\n");a=a.replace(/\{obj\.([^}?]+)\?([^:]*):([^}]*)\}/g,'"+(obj.$1?"$2":"$3")+"');a=a.replace(/\{common\.([^}\(]*)\}/g,'"+common.$1+"');a=a.replace(/\{common\.([^\}\(]*)\(\)\}/g,
+'"+(common.$1?common.$1(obj):"")+"');a=a.replace(/\{obj\.([^}]*)\}/g,'"+obj.$1+"');a=a.replace(/#([a-z0-9_]+)#/gi,'"+obj.$1+"');a=a.replace(/\{obj\}/g,'"+obj+"');a=a.replace(/\{-obj/g,"{obj");a=a.replace(/\{-common/g,"{common");a='return "'+a+'";';return this._cache[a]=Function("obj","common",a)}};
+dhtmlx.Type={add:function(a,b){if(!a.types&&a.prototype.types)a=a.prototype;var c=b.name||"default";this._template(b);this._template(b,"edit");this._template(b,"loading");a.types[c]=dhtmlx.extend(dhtmlx.extend({},a.types[c]||this._default),b);return c},_default:{css:"default",template:function(){return""},template_edit:function(){return""},template_loading:function(){return"..."},width:150,height:80,margin:5,padding:0},_template:function(a,b){var b="template"+(b?"_"+b:""),c=a[b];if(c&&typeof c=="string"){if(c.indexOf("->")!=
+-1)switch(c=c.split("->"),c[0]){case "html":c=dhtmlx.html.getValue(c[1]).replace(/\"/g,'\\"');break;case "http":c=(new dhtmlx.ajax).sync().get(c[1],{uid:(new Date).valueOf()}).responseText}a[b]=dhtmlx.Template.fromHTML(c)}}};
+dhtmlx.SingleRender={_init:function(){},_toHTML:function(a){return this.type._item_start(a,this.type)+this.type.template(a,this.type)+this.type._item_end},render:function(){if(!this.callEvent||this.callEvent("onBeforeRender",[this.data])){if(this.data)this._dataobj.innerHTML=this._toHTML(this.data);this.callEvent&&this.callEvent("onAfterRender",[])}}};
+dhtmlx.ui.Tooltip=function(a){this.name="Tooltip";this.version="3.0";typeof a=="string"&&(a={template:a});dhtmlx.extend(this,dhtmlx.Settings);dhtmlx.extend(this,dhtmlx.SingleRender);this._parseSettings(a,{type:"default",dy:0,dx:20});this._dataobj=this._obj=document.createElement("DIV");this._obj.className="dhx_tooltip";dhtmlx.html.insertBefore(this._obj,document.body.firstChild)};
+dhtmlx.ui.Tooltip.prototype={show:function(a,b){if(!this._disabled){if(this.data!=a)this.data=a,this.render(a);this._obj.style.top=b.y+this._settings.dy+"px";this._obj.style.left=b.x+this._settings.dx+"px";this._obj.style.display="block"}},hide:function(){this.data=null;this._obj.style.display="none"},disable:function(){this._disabled=!0},enable:function(){this._disabled=!1},types:{"default":dhtmlx.Template.fromHTML("{obj.id}")},template_item_start:dhtmlx.Template.empty,template_item_end:dhtmlx.Template.empty};
+dhtmlx.AutoTooltip={tooltip_setter:function(a){var b=new dhtmlx.ui.Tooltip(a);this.attachEvent("onMouseMove",function(a,d){b.show(this.get(a),dhtmlx.html.pos(d))});this.attachEvent("onMouseOut",function(){b.hide()});this.attachEvent("onMouseMoving",function(){b.hide()});return b}};dhtmlx.ajax=function(a,b,c){if(arguments.length!==0){var d=new dhtmlx.ajax;if(c)d.master=c;d.get(a,null,b)}return!this.getXHR?new dhtmlx.ajax:this};
+dhtmlx.ajax.prototype={getXHR:function(){return dhtmlx.env.isIE?new ActiveXObject("Microsoft.xmlHTTP"):new XMLHttpRequest},send:function(a,b,c){var d=this.getXHR();typeof c=="function"&&(c=[c]);if(typeof b=="object"){var e=[],f;for(f in b){var g=b[f];if(g===null||g===dhtmlx.undefined)g="";e.push(f+"="+encodeURIComponent(g))}b=e.join("&")}b&&!this.post&&(a=a+(a.indexOf("?")!=-1?"&":"?")+b,b=null);d.open(this.post?"POST":"GET",a,!this._sync);this.post&&d.setRequestHeader("Content-type","application/x-www-form-urlencoded");
+var h=this;d.onreadystatechange=function(){if(!d.readyState||d.readyState==4){if(c&&h)for(var a=0;a<c.length;a++)c[a]&&c[a].call(h.master||h,d.responseText,d.responseXML,d);c=h=h.master=null}};d.send(b||null);return d},get:function(a,b,c){this.post=!1;return this.send(a,b,c)},post:function(a,b,c){this.post=!0;return this.send(a,b,c)},sync:function(){this._sync=!0;return this}};
+dhtmlx.AtomDataLoader={_init:function(a){this.data={};if(a)this._settings.datatype=a.datatype||"json",this._after_init.push(this._load_when_ready)},_load_when_ready:function(){this._ready_for_data=!0;this._settings.url&&this.url_setter(this._settings.url);this._settings.data&&this.data_setter(this._settings.data)},url_setter:function(a){if(!this._ready_for_data)return a;this.load(a,this._settings.datatype);return a},data_setter:function(a){if(!this._ready_for_data)return a;this.parse(a,this._settings.datatype);
+return!0},load:function(a,b,c){this.callEvent("onXLS",[]);typeof b=="string"?(this.data.driver=dhtmlx.DataDriver[b],b=c):this.data.driver=dhtmlx.DataDriver.xml;dhtmlx.ajax(a,[this._onLoad,b],this)},parse:function(a,b){this.callEvent("onXLS",[]);this.data.driver=dhtmlx.DataDriver[b||"xml"];this._onLoad(a,null)},_onLoad:function(a,b){var c=this.data.driver,d=c.getRecords(c.toObject(a,b))[0];this.data=c?c.getDetails(d):a;this.callEvent("onXLE",[])},_check_data_feed:function(a){if(!this._settings.dataFeed||
+this._ignore_feed||!a)return!0;var b=this._settings.dataFeed,b=b+(b.indexOf("?")==-1?"?":"&")+"action=get&id="+encodeURIComponent(a.id||a);this.callEvent("onXLS",[]);dhtmlx.ajax(b,function(a){this._ignore_feed=!0;this.setValues(dhtmlx.DataDriver.json.toObject(a)[0]);this._ignore_feed=!1;this.callEvent("onXLE",[])},this);return!1}};dhtmlx.DataDriver={};
+dhtmlx.DataDriver.json={toObject:function(a){a||(a="[]");return typeof a=="string"?(eval("dhtmlx.temp="+a),dhtmlx.temp):a},getRecords:function(a){return a&&!(a instanceof Array)?[a]:a},getDetails:function(a){return a},getInfo:function(a){return{_size:a.total_count||0,_from:a.pos||0}}};
+dhtmlx.DataDriver.json_ext={toObject:function(a){a||(a="[]");if(typeof a=="string"){var b;eval("temp="+a);dhtmlx.temp=[];for(var c=b.header,d=0;d<b.data.length;d++){for(var e={},f=0;f<c.length;f++)typeof b.data[d][f]!="undefined"&&(e[c[f]]=b.data[d][f]);dhtmlx.temp.push(e)}return dhtmlx.temp}return a},getRecords:function(a){return a&&!(a instanceof Array)?[a]:a},getDetails:function(a){return a},getInfo:function(a){return{_size:a.total_count||0,_from:a.pos||0}}};
+dhtmlx.DataDriver.html={toObject:function(a){if(typeof a=="string"){var b=null;a.indexOf("<")==-1&&(b=dhtmlx.toNode(a));if(!b)b=document.createElement("DIV"),b.innerHTML=a;return b.getElementsByTagName(this.tag)}return a},getRecords:function(a){return a.tagName?a.childNodes:a},getDetails:function(a){return dhtmlx.DataDriver.xml.tagToObject(a)},getInfo:function(){return{_size:0,_from:0}},tag:"LI"};
+dhtmlx.DataDriver.jsarray={toObject:function(a){return typeof a=="string"?(eval("dhtmlx.temp="+a),dhtmlx.temp):a},getRecords:function(a){return a},getDetails:function(a){for(var b={},c=0;c<a.length;c++)b["data"+c]=a[c];return b},getInfo:function(){return{_size:0,_from:0}}};
+dhtmlx.DataDriver.csv={toObject:function(a){return a},getRecords:function(a){return a.split(this.row)},getDetails:function(a){for(var a=this.stringToArray(a),b={},c=0;c<a.length;c++)b["data"+c]=a[c];return b},getInfo:function(){return{_size:0,_from:0}},stringToArray:function(a){for(var a=a.split(this.cell),b=0;b<a.length;b++)a[b]=a[b].replace(/^[ \t\n\r]*(\"|)/g,"").replace(/(\"|)[ \t\n\r]*$/g,"");return a},row:"\n",cell:","};
+dhtmlx.DataDriver.xml={toObject:function(a,b){return b&&(b=this.checkResponse(a,b))?b:typeof a=="string"?this.fromString(a):a},getRecords:function(a){return this.xpath(a,this.records)},records:"/*/item",getDetails:function(a){return this.tagToObject(a,{})},getInfo:function(a){return{_size:a.documentElement.getAttribute("total_count")||0,_from:a.documentElement.getAttribute("pos")||0}},xpath:function(a,b){if(window.XPathResult){var c=a;if(a.nodeName.indexOf("document")==-1)a=a.ownerDocument;for(var d=
+[],e=a.evaluate(b,c,null,XPathResult.ANY_TYPE,null),f=e.iterateNext();f;)d.push(f),f=e.iterateNext();return d}else{var g=!0;try{typeof a.selectNodes=="undefined"&&(g=!1)}catch(h){}if(g)return a.selectNodes(b);else{var i=b.split("/").pop();return a.getElementsByTagName(i)}}},tagToObject:function(a,b){var b=b||{},c=!1,d=a.attributes;if(d&&d.length){for(var e=0;e<d.length;e++)b[d[e].name]=d[e].value;c=!0}for(var f=a.childNodes,g={},e=0;e<f.length;e++)if(f[e].nodeType==1){var h=f[e].tagName;typeof b[h]!=
+"undefined"?(b[h]instanceof Array||(b[h]=[b[h]]),b[h].push(this.tagToObject(f[e],{}))):b[f[e].tagName]=this.tagToObject(f[e],{});c=!0}if(!c)return this.nodeValue(a);b.value=this.nodeValue(a);return b},nodeValue:function(a){return a.firstChild?a.firstChild.data:""},fromString:function(a){if(window.DOMParser)return(new DOMParser).parseFromString(a,"text/xml");if(window.ActiveXObject){var b=new ActiveXObject("Microsoft.xmlDOM");b.loadXML(a);return b}},checkResponse:function(a,b){if(b&&b.firstChild&&
+b.firstChild.tagName!="parsererror")return b;var c=this.fromString(a.replace(/^[\s]+/,""));if(c)return c}};
+dhtmlx.DataLoader={_init:function(a){a=a||"";name="DataStore";this.data=a.datastore||new dhtmlx.DataStore;this._readyHandler=this.data.attachEvent("onStoreLoad",dhtmlx.bind(this._call_onready,this))},load:function(a,b){dhtmlx.AtomDataLoader.load.apply(this,arguments);if(!this.data.feed)this.data.feed=function(b,d){if(this._load_count)return this._load_count=[b,d];else this._load_count=!0;this.load(a+(a.indexOf("?")==-1?"?":"&")+"posStart="+b+"&count="+d,function(){var a=this._load_count;this._load_count=
+!1;typeof a=="object"&&this.data.feed.apply(this,a)})}},_onLoad:function(a,b){this.data._parse(this.data.driver.toObject(a,b));this.callEvent("onXLE",[]);if(this._readyHandler)this.data.detachEvent(this._readyHandler),this._readyHandler=null},dataFeed_setter:function(a){this.data.attachEvent("onBeforeFilter",dhtmlx.bind(function(a,c){if(this._settings.dataFeed){var d={};if(a||d){if(typeof a=="function"){if(!c)return;a(c,d)}else d={text:c};this.clearAll();var e=this._settings.dataFeed,f=[],g;for(g in d)f.push("dhx_filter["+
+g+"]="+encodeURIComponent(d[g]));this.load(e+(e.indexOf("?")<0?"?":"&")+f.join("&"),this._settings.datatype);return!1}}},this));return a},_call_onready:function(){if(this._settings.ready){var a=dhtmlx.toFunctor(this._settings.ready);a&&a.call&&a.apply(this,arguments)}}};dhtmlx.DataStore=function(){this.name="DataStore";dhtmlx.extend(this,dhtmlx.EventSystem);this.setDriver("xml");this.pull={};this.order=dhtmlx.toArray()};
+dhtmlx.DataStore.prototype={setDriver:function(a){this.driver=dhtmlx.DataDriver[a]},_parse:function(a){this.callEvent("onParse",[this.driver,a]);this._filter_order&&this.filter();var b=this.driver.getInfo(a),c=this.driver.getRecords(a),d=(b._from||0)*1;if(d===0&&this.order[0])d=this.order.length;for(var e=0,f=0;f<c.length;f++){var g=this.driver.getDetails(c[f]),h=this.id(g);this.pull[h]||(this.order[e+d]=h,e++);this.pull[h]=g;this.extraParser&&this.extraParser(g);this._scheme&&(this._scheme.$init?
+this._scheme.$update(g):this._scheme.$update&&this._scheme.$update(g))}for(f=0;f<b._size;f++)this.order[f]||(h=dhtmlx.uid(),g={id:h,$template:"loading"},this.pull[h]=g,this.order[f]=h);this.callEvent("onStoreLoad",[this.driver,a]);this.refresh()},id:function(a){return a.id||(a.id=dhtmlx.uid())},changeId:function(a,b){this.pull[b]=this.pull[a];this.pull[b].id=b;this.order[this.order.find(a)]=b;this._filter_order&&(this._filter_order[this._filter_order.find(a)]=b);this.callEvent("onIdChange",[a,b]);
+this._render_change_id&&this._render_change_id(a,b)},get:function(a){return this.item(a)},set:function(a,b){return this.update(a,b)},item:function(a){return this.pull[a]},update:function(a,b){this._scheme&&this._scheme.$update&&this._scheme.$update(b);if(this.callEvent("onBeforeUpdate",[a,b])===!1)return!1;this.pull[a]=b;this.refresh(a)},refresh:function(a){this._skip_refresh||(a?this.callEvent("onStoreUpdated",[a,this.pull[a],"update"]):this.callEvent("onStoreUpdated",[null,null,null]))},silent:function(a){this._skip_refresh=
+!0;a.call(this);this._skip_refresh=!1},getRange:function(a,b){a=a?this.indexById(a):this.startOffset||0;b?b=this.indexById(b):(b=Math.min(this.endOffset||Infinity,this.dataCount()-1),b<0&&(b=0));if(a>b)var c=b,b=a,a=c;return this.getIndexRange(a,b)},getIndexRange:function(a,b){for(var b=Math.min(b||Infinity,this.dataCount()-1),c=dhtmlx.toArray(),d=a||0;d<=b;d++)c.push(this.item(this.order[d]));return c},dataCount:function(){return this.order.length},exists:function(a){return!!this.pull[a]},move:function(a,
+b){if(!(a<0||b<0)){var c=this.idByIndex(a),d=this.item(c);this.order.removeAt(a);this.order.insertAt(c,Math.min(this.order.length,b));this.callEvent("onStoreUpdated",[c,d,"move"])}},scheme:function(a){this._scheme=a},sync:function(a,b,c){typeof b!="function"&&(c=b,b=null);if(dhtmlx.debug_bind)this.debug_sync_master=a;if(a.name!="DataStore")a=a.data;var d=dhx.bind(function(d,f,g){if(g!="update"||b)d=null;if(!d)this.order=dhx.toArray([].concat(a.order)),this._filter_order=null,this.pull=a.pull,b&&this.silent(b),
+this._on_sync&&this._on_sync();c?c=!1:this.refresh(d)},this);a.attachEvent("onStoreUpdated",d);d()},add:function(a,b){if(this._scheme){var a=a||{},c;for(c in this._scheme)a[c]=a[c]||this._scheme[c];this._scheme&&(this._scheme.$init?this._scheme.$update(a):this._scheme.$update&&this._scheme.$update(a))}var d=this.id(a),e=this.dataCount();if(dhtmlx.isNotDefined(b)||b<0)b=e;b>e&&(b=Math.min(this.order.length,b));if(this.callEvent("onBeforeAdd",[d,a,b])===!1)return!1;if(this.exists(d))return null;this.pull[d]=
+a;this.order.insertAt(d,b);if(this._filter_order){var f=this._filter_order.length;!b&&this.order.length&&(f=0);this._filter_order.insertAt(d,f)}this.callEvent("onafterAdd",[d,b]);this.callEvent("onStoreUpdated",[d,a,"add"]);return d},remove:function(a){if(a instanceof Array)for(var b=0;b<a.length;b++)this.remove(a[b]);else{if(this.callEvent("onBeforeDelete",[a])===!1)return!1;if(!this.exists(a))return null;var c=this.item(a);this.order.remove(a);this._filter_order&&this._filter_order.remove(a);delete this.pull[a];
+this.callEvent("onafterdelete",[a]);this.callEvent("onStoreUpdated",[a,c,"delete"])}},clearAll:function(){this.pull={};this.order=dhtmlx.toArray();this._filter_order=this.feed=null;this.callEvent("onClearAll",[]);this.refresh()},idByIndex:function(a){return this.order[a]},indexById:function(a){var b=this.order.find(a);return b},next:function(a,b){return this.order[this.indexById(a)+(b||1)]},first:function(){return this.order[0]},last:function(){return this.order[this.order.length-1]},previous:function(a,
+b){return this.order[this.indexById(a)-(b||1)]},sort:function(a,b,c){var d=a;typeof a=="function"?d={as:a,dir:b}:typeof a=="string"&&(d={by:a,dir:b,as:c});var e=[d.by,d.dir,d.as];if(this.callEvent("onbeforesort",e)){if(this.order.length){var f=dhtmlx.sort.create(d),g=this.getRange(this.first(),this.last());g.sort(f);this.order=g.map(function(a){return this.id(a)},this)}this.refresh();this.callEvent("onaftersort",e)}},filter:function(a,b){if(this.callEvent("onBeforeFilter",[a,b])){if(this._filter_order)this.order=
+this._filter_order,delete this._filter_order;if(this.order.length){if(a){var c=a,b=b||"";typeof a=="string"&&(a=dhtmlx.Template.fromHTML(a),b=b.toString().toLowerCase(),c=function(b,c){return a(b).toLowerCase().indexOf(c)!=-1});for(var d=dhtmlx.toArray(),e=0;e<this.order.length;e++){var f=this.order[e];c(this.item(f),b)&&d.push(f)}this._filter_order=this.order;this.order=d}this.refresh();this.callEvent("onAfterFilter",[])}}},each:function(a,b){for(var c=0;c<this.order.length;c++)a.call(b||this,this.item(this.order[c]))},
+provideApi:function(a,b){this.debug_bind_master=a;b&&this.mapEvent({onbeforesort:a,onaftersort:a,onbeforeadd:a,onafteradd:a,onbeforedelete:a,onafterdelete:a,onbeforeupdate:a});for(var c="get,set,sort,add,remove,exists,idByIndex,indexById,item,update,refresh,dataCount,filter,next,previous,clearAll,first,last,serialize".split(","),d=0;d<c.length;d++)a[c[d]]=dhtmlx.methodPush(this,c[d])},serialize:function(){for(var a=this.order,b=[],c=0;c<a.length;c++)b.push(this.pull[a[c]]);return b}};
+dhtmlx.sort={create:function(a){return dhtmlx.sort.dir(a.dir,dhtmlx.sort.by(a.by,a.as))},as:{"int":function(a,b){a*=1;b*=1;return a>b?1:a<b?-1:0},string_strict:function(a,b){a=a.toString();b=b.toString();return a>b?1:a<b?-1:0},string:function(a,b){a=a.toString().toLowerCase();b=b.toString().toLowerCase();return a>b?1:a<b?-1:0}},by:function(a,b){if(!a)return b;typeof b!="function"&&(b=dhtmlx.sort.as[b||"string"]);a=dhtmlx.Template.fromHTML(a);return function(c,d){return b(a(c),a(d))}},dir:function(a,
+b){return a=="asc"?b:function(a,d){return b(a,d)*-1}}};
+dhtmlx.Group={_init:function(){this.data.attachEvent("onStoreLoad",dhtmlx.bind(function(){this._settings.group&&this.group(this._settings.group,!1)},this));this.attachEvent("onBeforeRender",dhtmlx.bind(function(a){this._settings.sort&&(a.block(),a.sort(this._settings.sort),a.unblock())},this));this.attachEvent("onBeforeSort",dhtmlx.bind(function(){this._settings.sort=null},this))},_init_group_data_event:function(a,b){a.attachEvent("onClearAll",dhtmlx.bind(function(){this.ungroup(!1)},b))},sum:function(a,
+b){var a=dhtmlx.Template.setter(a),b=b||this.data,c=0;b.each(function(b){c+=a(b)*1});return c},min:function(a,b){var a=dhtmlx.Template.setter(a),b=b||this.data,c=Infinity;b.each(function(b){a(b)*1<c&&(c=a(b)*1)});return c*1},max:function(a,b){var a=dhtmlx.Template.setter(a),b=b||this.data,c=-Infinity;b.each(function(b){a(b)*1>c&&(c=a(b)*1)});return c},_split_data_by:function(a){var b=function(a,b){a=dhtmlx.Template.setter(a);return a(b[0])},c=dhtmlx.Template.setter(a.by);a.map[c]||(a.map[c]=[c,b]);
+var d={},e=[];this.data.each(function(a){var b=c(a);d[b]||(e.push({id:b}),d[b]=dhtmlx.toArray());d[b].push(a)});for(var f in a.map){var g=a.map[f][1]||b;typeof g!="function"&&(g=this[g]);for(var h=0;h<e.length;h++)e[h][f]=g.call(this,a.map[f][0],d[e[h].id])}this._not_grouped_data=this.data;this.data=new dhtmlx.DataStore;this.data.provideApi(this,!0);this._init_group_data_event(this.data,this);this.parse(e,"json")},group:function(a,b){this.ungroup(!1);this._split_data_by(a);b!==!1&&this.render()},
+ungroup:function(a){if(this._not_grouped_data)this.data=this._not_grouped_data,this.data.provideApi(this,!0);a!==!1&&this.render()},group_setter:function(a){return a},sort_setter:function(a){typeof a!="object"&&(a={by:a});this._mergeSettings(a,{as:"string",dir:"asc"});return a}};
+dhtmlx.KeyEvents={_init:function(){dhtmlx.event(this._obj,"keypress",this._onKeyPress,this)},_onKeyPress:function(a){var a=a||event,b=a.which||a.keyCode;this.callEvent(this._edit_id?"onEditKeyPress":"onKeyPress",[b,a.ctrlKey,a.shiftKey,a])}};
+dhtmlx.MouseEvents={_init:function(){this.on_click&&(dhtmlx.event(this._obj,"click",this._onClick,this),dhtmlx.event(this._obj,"contextmenu",this._onContext,this));this.on_dblclick&&dhtmlx.event(this._obj,"dblclick",this._onDblClick,this);this.on_mouse_move&&(dhtmlx.event(this._obj,"mousemove",this._onMouse,this),dhtmlx.event(this._obj,dhtmlx._isIE?"mouseleave":"mouseout",this._onMouse,this))},_onClick:function(a){return this._mouseEvent(a,this.on_click,"ItemClick")},_onDblClick:function(a){return this._mouseEvent(a,
+this.on_dblclick,"ItemDblClick")},_onContext:function(a){var b=dhtmlx.html.locate(a,this._id);if(b&&!this.callEvent("onBeforeContextMenu",[b,a]))return dhtmlx.html.preventEvent(a)},_onMouse:function(a){dhtmlx._isIE&&(a=document.createEventObject(event));this._mouse_move_timer&&window.clearTimeout(this._mouse_move_timer);this.callEvent("onMouseMoving",[a]);this._mouse_move_timer=window.setTimeout(dhtmlx.bind(function(){a.type=="mousemove"?this._onMouseMove(a):this._onMouseOut(a)},this),500)},_onMouseMove:function(a){this._mouseEvent(a,
+this.on_mouse_move,"MouseMove")||this.callEvent("onMouseOut",[a||event])},_onMouseOut:function(a){this.callEvent("onMouseOut",[a||event])},_mouseEvent:function(a,b,c){for(var a=a||event,d=a.target||a.srcElement,e="",f=null,g=!1;d&&d.parentNode;){if(!g&&d.getAttribute&&(f=d.getAttribute(this._id))){d.getAttribute("userdata")&&this.callEvent("onLocateData",[f,d]);if(!this.callEvent("on"+c,[f,a,d]))return;g=!0}if(e=d.className)if(e=e.split(" "),e=e[0]||e[1],b[e])return b[e].call(this,a,f,d);d=d.parentNode}return g}};
+dhtmlx.Settings={_init:function(){this._settings=this.config={}},define:function(a,b){return typeof a=="object"?this._parseSeetingColl(a):this._define(a,b)},_define:function(a,b){var c=this[a+"_setter"];return this._settings[a]=c?c.call(this,b):b},_parseSeetingColl:function(a){if(a)for(var b in a)this._define(b,a[b])},_parseSettings:function(a,b){var c=dhtmlx.extend({},b);typeof a=="object"&&!a.tagName&&dhtmlx.extend(c,a);this._parseSeetingColl(c)},_mergeSettings:function(a,b){for(var c in b)switch(typeof a[c]){case "object":a[c]=
+this._mergeSettings(a[c]||{},b[c]);break;case "undefined":a[c]=b[c]}return a},_parseContainer:function(a,b,c){if(typeof a=="object"&&!a.tagName)a=a.container;this._obj=dhtmlx.toNode(a);if(!this._obj&&c)this._obj=c(a);this._obj.className+=" "+b;this._obj.onselectstart=function(){return!1};this._dataobj=this._obj},_set_type:function(a){if(typeof a=="object")return this.type_setter(a);this.type=dhtmlx.extend({},this.types[a]);this.customize()},customize:function(a){a&&dhtmlx.extend(this.type,a);this.type._item_start=
+dhtmlx.Template.fromHTML(this.template_item_start(this.type));this.type._item_end=this.template_item_end(this.type);this.render()},type_setter:function(a){this._set_type(typeof a=="object"?dhtmlx.Type.add(this,a):a);return a},template_setter:function(a){return this.type_setter({template:a})},css_setter:function(a){this._obj.className+=" "+a;return a}};dhtmlx.compat=function(a,b){if(dhtmlx.compat[a])dhtmlx.compat[a](b)};
+(function(){if(!window.dhtmlxError){var a=function(){};window.dhtmlxError={catchError:a,throwError:a};window.convertStringToBoolean=function(a){return!!a};window.dhtmlxEventable=function(a){dhtmlx.extend(a,dhtmlx.EventSystem)};var b={getXMLTopNode:function(){},doXPath:function(a){return dhtmlx.DataDriver.xml.xpath(this.xml,a)},xmlDoc:{responseXML:!0}};dhtmlx.compat.dataProcessor=function(a){var d="_sendData",e="_in_progress",f="_tMode",g="_waitMode";a[d]=function(a,c){if(a){c&&(this[e][c]=(new Date).valueOf());
+if(!this.callEvent("onBeforeDataSending",c?[c,this.getState(c)]:[]))return!1;var d=this,k=this.serverProcessor;this[f]!="POST"?dhtmlx.ajax().get(k+(k.indexOf("?")!=-1?"&":"?")+this.serialize(a,c),"",function(a,c){b.xml=dhtmlx.DataDriver.xml.checkResponse(a,c);d.afterUpdate(d,null,null,null,b)}):dhtmlx.ajax().post(k,this.serialize(a,c),function(a,c){b.xml=dhtmlx.DataDriver.xml.checkResponse(a,c);d.afterUpdate(d,null,null,null,b)});this[g]++}}}}})();if(!dhtmlx.attaches)dhtmlx.attaches={};
+dhtmlx.attaches.attachAbstract=function(a,b){var c=document.createElement("DIV");c.id="CustomObject_"+dhtmlx.uid();c.style.width="100%";c.style.height="100%";c.cmp="grid";document.body.appendChild(c);this.attachObject(c.id);b.container=c.id;var d=this.vs[this.av];d.grid=new window[a](b);d.gridId=c.id;d.gridObj=c;d.grid.setSizes=function(){this.resize?this.resize():this.render()};var e="_viewRestore";return this.vs[this[e]()].grid};
+dhtmlx.attaches.attachDataView=function(a){return this.attachAbstract("dhtmlXDataView",a)};dhtmlx.attaches.attachChart=function(a){return this.attachAbstract("dhtmlXChart",a)};dhtmlx.compat.layout=function(){};
+dhtmlx.DataDriver.dhtmlxgrid={_grid_getter:"_get_cell_value",toObject:function(a){return this._grid=a},getRecords:function(a){return a.rowsBuffer},getDetails:function(a){for(var b={},c=0;c<this._grid.getColumnsNum();c++)b["data"+c]=this._grid[this._grid_getter](a,c);return b},getInfo:function(){return{_size:0,_from:0}}};
+dhtmlx.Canvas={_init:function(){this._canvas_labels=[]},_prepareCanvas:function(a){this._canvas=dhtmlx.html.create("canvas",{width:a.offsetWidth,height:a.offsetHeight});a.appendChild(this._canvas);!this._canvas.getContext&&dhtmlx._isIE&&(dhtmlx.require("thirdparty/excanvas/excanvas.js"),G_vmlCanvasManager.init_(document),G_vmlCanvasManager.initElement(this._canvas));return this._canvas},getCanvas:function(a){return(this._canvas||this._prepareCanvas(this._obj)).getContext(a||"2d")},_resizeCanvas:function(){this._canvas&&
+(this._canvas.setAttribute("width",this._canvas.parentNode.offsetWidth),this._canvas.setAttribute("height",this._canvas.parentNode.offsetHeight))},renderText:function(a,b,c,d,e){if(c){var f=dhtmlx.html.create("DIV",{"class":"dhx_canvas_text"+(d?" "+d:""),style:"left:"+a+"px; top:"+b+"px;"},c);this._obj.appendChild(f);this._canvas_labels.push(f);if(e)f.style.width=e+"px";return f}},renderTextAt:function(a,b,c,d,e,f,g){var h=this.renderText.call(this,c,d,e,f,g);if(h){if(a)h.style.top=a=="middle"?parseInt(d-
+h.offsetHeight/2,10)+"px":d-h.offsetHeight+"px";if(b)h.style.left=b=="left"?c-h.offsetWidth+"px":parseInt(c-h.offsetWidth/2,10)+"px"}return h},clearCanvas:function(){for(var a=0;a<this._canvas_labels.length;a++)this._obj.removeChild(this._canvas_labels[a]);this._canvas_labels=[];if(this._obj._htmlmap)this._obj._htmlmap.parentNode.removeChild(this._obj._htmlmap),this._obj._htmlmap=null;this.getCanvas().clearRect(0,0,this._canvas.offsetWidth,this._canvas.offsetHeight)}};
+dhtmlXChart=function(a){this.name="Chart";this.version="3.0";dhtmlx.extend(this,dhtmlx.Settings);this._parseContainer(a,"dhx_chart");dhtmlx.extend(this,dhtmlx.AtomDataLoader);dhtmlx.extend(this,dhtmlx.DataLoader);this.data.provideApi(this,!0);dhtmlx.extend(this,dhtmlx.EventSystem);dhtmlx.extend(this,dhtmlx.MouseEvents);dhtmlx.extend(this,dhtmlx.Destruction);dhtmlx.extend(this,dhtmlx.Canvas);dhtmlx.extend(this,dhtmlx.Group);dhtmlx.extend(this,dhtmlx.AutoTooltip);for(var b in dhtmlx.chart)dhtmlx.extend(this,
+dhtmlx.chart[b]);this._parseSettings(a,{color:"RAINBOW",alpha:"1",label:!1,value:"{obj.value}",padding:{},view:"pie",lineColor:"#ffffff",cant:0.5,width:15,labelWidth:100,line:{},item:{},shadow:!0,gradient:!1,border:!0,labelOffset:20,origin:"auto"});this._series=[this._settings];this.data.attachEvent("onStoreUpdated",dhtmlx.bind(function(){this.render()},this));this.attachEvent("onLocateData",this._switchSerie)};
+dhtmlXChart.prototype={_id:"dhx_area_id",on_click:{},on_dblclick:{},on_mouse_move:{},bind:function(){dhx.BaseBind.legacyBind.apply(this,arguments)},sync:function(){dhx.BaseBind.legacySync.apply(this,arguments)},resize:function(){this._resizeCanvas();this.render()},view_setter:function(a){if(typeof this._settings.offset=="undefined")this._settings.offset=a=="area"||a=="stackedArea"?!1:!0;return a},render:function(){if(this.callEvent("onBeforeRender",[this.data])){this.clearCanvas();this._settings.legend&&
+this._drawLegend(this.getCanvas(),this.data.getRange(),this._obj.offsetWidth,this._obj.offsetHeight);for(var a=this._getChartBounds(this._obj.offsetWidth,this._obj.offsetHeight),b=new dhtmlx.ui.Map(this._id),c=this._settings,d=0;d<this._series.length;d++)this._settings=this._series[d],this["pvt_render_"+this._settings.view](this.getCanvas(),this.data.getRange(),a.start,a.end,d,b);b.render(this._obj);this._settings=c}},value_setter:dhtmlx.Template.obj_setter,alpha_setter:dhtmlx.Template.obj_setter,
+label_setter:dhtmlx.Template.obj_setter,lineColor_setter:dhtmlx.Template.obj_setter,pieInnerText_setter:dhtmlx.Template.obj_setter,gradient_setter:function(a){if(typeof a!="function"&&a&&(a===!0||a!="3d"))a="light";return a},colormap:{RAINBOW:function(a){var b=Math.floor(this.indexById(a.id)/this.dataCount()*1536);b==1536&&(b-=1);return this._rainbow[Math.floor(b/256)](b%256)}},color_setter:function(a){return this.colormap[a]||dhtmlx.Template.obj_setter(a)},legend_setter:function(a){if(!a){if(this.legendObj)this.legendObj.innerHTML=
+"",this.legendObj=null;return!1}typeof a!="object"&&(a={template:a});this._mergeSettings(a,{width:150,height:18,layout:"y",align:"left",valign:"bottom",template:"",marker:{type:"square",width:25,height:15}});a.template=dhtmlx.Template.setter(a.template);return a},item_setter:function(a){typeof a!="object"&&(a={color:a,borderColor:a});this._mergeSettings(a,{radius:4,color:"#000000",borderColor:"#000000",borderWidth:2});a.color=dhtmlx.Template.setter(a.color);a.borderColor=dhtmlx.Template.setter(a.borderColor);
+return a},line_setter:function(a){typeof a!="object"&&(a={color:a});this._mergeSettings(a,{width:3,color:"#d4d4d4"});a.color=dhtmlx.Template.setter(a.color);return a},padding_setter:function(a){typeof a!="object"&&(a={left:a,right:a,top:a,bottom:a});this._mergeSettings(a,{left:50,right:20,top:35,bottom:40});return a},xAxis_setter:function(a){if(!a)return!1;typeof a!="object"&&(a={template:a});this._mergeSettings(a,{title:"",color:"#000000",template:"{obj}",lines:!1});if(a.template)a.template=dhtmlx.Template.setter(a.template);
+return a},yAxis_setter:function(a){this._mergeSettings(a,{title:"",color:"#000000",template:"{obj}",lines:!0});if(a.template)a.template=dhtmlx.Template.setter(a.template);return a},_drawScales:function(a,b,c,d,e,f,g){var h=this._drawYAxis(a,b,c,d,e,f);this._drawXAxis(a,b,c,d,g,h);return h},_drawXAxis:function(a,b,c,d,e,f){if(this._settings.xAxis){var g=c.x-0.5,h=parseInt(f?f:d.y,10)+0.5,i=d.x,j,k=!0;this._drawLine(a,g,h,i,h,this._settings.xAxis.color,1);for(var m=0;m<b.length;m++){this._settings.offset===
+!0?j=g+e/2+m*e:(j=g+m*e,k=!!m);var l=this._settings.origin!="auto"&&this._settings.view=="bar"&&parseFloat(this._settings.value(b[m]))<this._settings.origin;this._drawXAxisLabel(j,h,b[m],k,l);this._settings.view_setter!="bar"&&this._drawXAxisLine(a,j,d.y,c.y)}this.renderTextAt(!0,!1,g,d.y+this._settings.padding.bottom-3,this._settings.xAxis.title,"dhx_axis_title_x",d.x-c.x);this._settings.xAxis.lines&&this._settings.offset&&this._drawLine(a,i+0.5,d.y,i+0.5,c.y+0.5,this._settings.xAxis.color,0.2)}},
+_drawYAxis:function(a,b,c,d,e,f){var g,h={};if(this._settings.yAxis){var i=c.x-0.5,j=d.y,k=c.y,m=d.y;this._drawLine(a,i,j,i,k,this._settings.yAxis.color,1);this._settings.yAxis.step&&(g=parseFloat(this._settings.yAxis.step));if(typeof this._settings.yAxis.step=="undefined"||typeof this._settings.yAxis.start=="undefined"||typeof this._settings.yAxis.end=="undefined")h=this._calculateScale(e,f),e=h.start,f=h.end,g=h.step,this._settings.yAxis.end=f,this._settings.yAxis.start=e;this._setYAxisTitle(c,
+d);if(g!==0){if(f==e)return j;for(var l=(j-k)*g/(f-e),n=0,o=e;o<=f;o+=g){h.fixNum&&(o=parseFloat((new Number(o)).toFixed(h.fixNum)));var p=Math.floor(j-n*l)+0.5;!(o==e&&this._settings.origin=="auto")&&this._settings.yAxis.lines&&this._drawLine(a,i,p,d.x,p,this._settings.yAxis.color,0.2);o==this._settings.origin&&(m=p);var r=o;if(g<1)var q=Math.min(this._log10(g),e===0?0:this._log10(e)),s=Math.pow(10,-q),r=Math.round(o*s)/s;this.renderText(0,p-5,this._settings.yAxis.template(r.toString()),"dhx_axis_item_y",
+c.x-5);n++}return m}}},_setYAxisTitle:function(a,b){var c=this.renderTextAt("middle",!1,0,parseInt((b.y-a.y)/2+a.y,10),this._settings.yAxis.title,"dhx_axis_title_y");if(c)c.style.left=(dhtmlx.env.transform?(c.offsetHeight-c.offsetWidth)/2:0)+"px"},_calculateScale:function(a,b){if(this._settings.origin!="auto"&&this._settings.origin<a)a=this._settings.origin;var c,d,e;c=(b-a)/8||1;var f=Math.floor(this._log10(c)),g=Math.pow(10,f),h=c/g,h=h>5?10:5;c=parseInt(h,10)*g;if(c>Math.abs(a))d=a<0?-c:0;else{var i=
+Math.abs(a),j=Math.floor(this._log10(i)),k=i/Math.pow(10,j);d=Math.ceil(k*10)/10*Math.pow(10,j)-c;a<0&&(d=-d-2*c)}for(e=d;e<b;)e+=c,e=parseFloat((new Number(e)).toFixed(Math.abs(f)));return{start:d,end:e,step:c,fixNum:Math.abs(f)}},_getLimits:function(a){var b,c,d=arguments.length&&a=="h"?this._settings.xAxis:this._settings.yAxis;if(d&&typeof d.end!="undefined"&&typeof d.start!="undefined"&&d.step)b=parseFloat(d.end),c=parseFloat(d.start);else if(b=this.max(this._series[0].value),c=this.min(this._series[0].value),
+this._series.length>1)for(var e=1;e<this._series.length;e++){var f=this.max(this._series[e].value),g=this.min(this._series[e].value);f>b&&(b=f);g<c&&(c=g)}return{max:b,min:c}},_log10:function(a){var b="log";return Math.floor(Math[b](a)/Math.LN10)},_drawXAxisLabel:function(a,b,c,d,e){if(this._settings.xAxis){var f=this.renderTextAt(e,d,a,b,this._settings.xAxis.template(c));f&&(f.className+=" dhx_axis_item_x")}},_drawXAxisLine:function(a,b,c,d){this._settings.xAxis&&this._settings.xAxis.lines&&this._drawLine(a,
+b,c,b,d,this._settings.xAxis.color,0.2)},_drawLine:function(a,b,c,d,e,f,g){a.strokeStyle=f;a.lineWidth=g;a.beginPath();a.moveTo(b,c);a.lineTo(d,e);a.stroke()},_getRelativeValue:function(a,b){var c,d=1;if(b!=a){if(c=b-a,Math.abs(c)<1)for(;Math.abs(c)<1;)d*=10,c*=d}else c=a;return[c,d]},_rainbow:[function(a){return"#FF"+dhtmlx.math.toHex(a/2,2)+"00"},function(a){return"#FF"+dhtmlx.math.toHex(a/2+128,2)+"00"},function(a){return"#"+dhtmlx.math.toHex(255-a,2)+"FF00"},function(a){return"#00FF"+dhtmlx.math.toHex(a,
+2)},function(a){return"#00"+dhtmlx.math.toHex(255-a,2)+"FF"},function(a){return"#"+dhtmlx.math.toHex(a,2)+"00FF"}],addSeries:function(a){var b=this._settings;this._settings=dhtmlx.extend({},b);this._parseSettings(a,{});this._series.push(this._settings);this._settings=b},_switchSerie:function(a,b){this._active_serie=b.getAttribute("userdata");if(this._series[this._active_serie]){for(var c=0;c<this._series.length;c++){var d=this._series[c].tooltip;d&&d.disable()}(d=this._series[this._active_serie].tooltip)&&
+d.enable()}},_drawLegend:function(a,b){var c=0,d=0,e=this._settings.legend,f,g,h=this._settings.legend.layout!="x"?"width:"+e.width+"px":"";if(this.legendObj)this.legendObj.innerHTML="";var i=dhtmlx.html.create("DIV",{"class":"dhx_chart_legend",style:"left:"+c+"px; top:"+d+"px;"+h},"");this.legendObj=i;this._obj.appendChild(i);var j=[];if(e.values)for(k=0;k<e.values.length;k++)j.push(this._drawLegendText(i,e.values[k].text));else for(var k=0;k<b.length;k++)j.push(this._drawLegendText(i,e.template(b[k])));
+g=i.offsetWidth;f=i.offsetHeight;this._settings.legend.width=g;this._settings.legend.height=f;g<this._obj.offsetWidth&&(e.layout=="x"&&e.align=="center"&&(c=(this._obj.offsetWidth-g)/2),e.align=="right"&&(c=this._obj.offsetWidth-g));f<this._obj.offsetHeight&&(e.valign=="middle"&&e.align!="center"&&e.layout!="x"?d=(this._obj.offsetHeight-f)/2:e.valign=="bottom"&&(d=this._obj.offsetHeight-f));i.style.left=c+"px";i.style.top=d+"px";for(k=0;k<j.length;k++){var m=j[k],l=e.values?e.values[k].color:this._settings.color.call(this,
+b[k]);this._drawLegendMarker(a,m.offsetLeft+c,m.offsetTop+d,l)}j=null},_drawLegendText:function(a,b){var c="";this._settings.legend.layout=="x"&&(c="float:left;");var d=dhtmlx.html.create("DIV",{style:c+"padding-left:"+(10+this._settings.legend.marker.width)+"px","class":"dhx_chart_legend_item"},b);a.appendChild(d);return d},_drawLegendMarker:function(a,b,c,d){var e=this._settings.legend;a.strokeStyle=a.fillStyle=d;a.lineWidth=e.marker.height;a.lineCap=e.marker.type;a.beginPath();b+=a.lineWidth/2+
+5;c+=a.lineWidth/2+3;a.moveTo(b,c);var f=b+e.marker.width-e.marker.height+1;a.lineTo(f,c);a.stroke()},_getChartBounds:function(a,b){var c,d,e,f;c=this._settings.padding.left;d=this._settings.padding.top;e=a-this._settings.padding.right;f=b-this._settings.padding.bottom;if(this._settings.legend){var g=this._settings.legend,h=this._settings.legend.width,i=this._settings.legend.height;g.layout=="x"?g.valign=="center"?g.align=="right"?e-=h:g.align=="left"&&(c+=h):g.valign=="bottom"?f-=i:d+=i:g.align==
+"right"?e-=h:g.align=="left"&&(c+=h)}return{start:{x:c,y:d},end:{x:e,y:f}}},_getStackedLimits:function(a){var b,c;if(this._settings.yAxis&&typeof this._settings.yAxis.end!="undefied"&&typeof this._settings.yAxis.start!="undefied"&&this._settings.yAxis.step)b=parseFloat(this._settings.yAxis.end),c=parseFloat(this._settings.yAxis.start);else{for(var d=0;d<a.length;d++){a[d].$sum=0;a[d].$min=Infinity;for(var e=0;e<this._series.length;e++){var f=parseFloat(this._series[e].value(a[d]));if(!isNaN(f)&&(a[d].$sum+=
+f,f<a[d].$min))a[d].$min=f}}b=-Infinity;c=Infinity;for(d=0;d<a.length;d++){if(a[d].$sum>b)b=a[d].$sum;if(a[d].$min<c)c=a[d].$min}c>0&&(c=0)}return{max:b,min:c}},_setBarGradient:function(a,b,c,d,e,f,g,h){var i,j;f=="light"?(i=h=="x"?a.createLinearGradient(b,c,d,c):a.createLinearGradient(b,c,b,e),i.addColorStop(0,"#FFFFFF"),i.addColorStop(0.9,g),i.addColorStop(1,g),j=2):(a.globalAlpha=0.37,j=0,i=h=="x"?a.createLinearGradient(b,e,b,c):a.createLinearGradient(b,c,d,c),i.addColorStop(0,"#000000"),i.addColorStop(0.5,
+"#FFFFFF"),i.addColorStop(0.6,"#FFFFFF"),i.addColorStop(1,"#000000"));return{gradient:i,offset:j}}};dhtmlx.compat("layout");
+function dhtmlXColorPickerInput(a){typeof a!="object"&&(a=document.getElementById(a));var b=a,c=b.getAttribute("colorbox"),d=b.getAttribute("customcolors"),e=b.getAttribute("selectonclick"),f=b.getAttribute("fullview"),g=b.getAttribute("selectedcolor"),h=b;if(c){var i=document.createElement("DIV");i.style.width=b.offsetWidth+"px";i.style.height=b.offsetHeight+"px";b.style.width=b.offsetWidth-b.offsetHeight-2;b.parentNode.insertBefore(i,b);i.style.position="relative";h=document.createElement("DIV");
+i.appendChild(h);i.appendChild(b);h.className="cs_colorBox";b.className+=" cs_colorInput";h.style.width=h.style.height=b.offsetHeight-(document.all?0:2)+"px";b.style.left=b.offsetHeight+2+"px"}var j=new dhtmlXColorPicker(null,e,d,!0,f);g&&j.setColor(g);j.linkToObjects=[h,b,b];return j}
+function dhtmlXColorPicker(a,b,c,d,e){if(document.all)try{document.execCommand("BackgroundImageCache",!1,!0)}catch(f){}this._cc=c;if(!a)a=document.createElement("DIV"),a.style.position="absolute",document.body.appendChild(a),a._dhx_remove=!0;this.container=typeof a!="object"?document.getElementById(a):a;dhtmlxEventable(this);this.skinName=dhtmlx.skin||"";this.ready=!1;this.hideOnInit=d||!1;this.linkToObjects=[];this.imgURL=dhtmlx.image_path||window.dhx_globalImgPath||"";this.hideSelfOnSelect=!0;this.hex=
+"000000";this.h=100;this.s=0.9;this.v=0.1;this.old_sat=this.old_hue=this.b=this.g=this.r=0;this.fullview=e||!1;this.customColorsCount=!this.fullview?10:8;this.language=null;this.elements=[];this.customColors=[];this.restoreFrom=null;this.fullview?this.colorSelectW=this.colorSelectH=255:(this.colorSelectH=119,this.colorSelectW=209);this.isClickOnly=b||!1;if(window.cs_dechex==null){var g=[0,1,2,3,4,5,6,7,8,9,"a","b","c","d","e","f"];window.cs_dechex=[];for(var h=0;h<256;h++){var i=g[h>>4].toString()+
+g[h&15].toString();i.length<2&&(i="0"+i);window.cs_dechex[h]=i}}defLeng={langname:"en-us",labelHue:"Hue",labelSat:"Sat",labelLum:"Lum",labelRed:"Red",labelGreen:"Green",labelBlue:"Blue",btnAddColor:"Add to Custom Colors",btnSelect:"Select",btnCancel:"Cancel"};window.dhtmlxColorPickerObjects?window.dhtmlxColorPickerObjects[window.dhtmlxColorPickerObjects.length]=this:window.dhtmlxColorPickerObjects=[this];if(!window.dhtmlxColorPickerLangModules)window.dhtmlxColorPickerLangModules={};window.dhtmlxColorPickerLangModules["en-us"]=
+defLeng;return this}
+dhtmlXColorPicker.prototype.generate=function(){X=document.compatMode!="BackCompat"?"X":"";if(this.fullview)a="<div class='dhtmlxcolorpicker"+(this.skinName!=""?"_"+this.skinName:"")+"' csid='cs_Content' style='display:none;'>",document.all&&this.container.style.position=="absolute"&&(a+="<iframe src='"+(this.imgURL||"")+"blank.html' style='position:absolute; top:0px; left:0px; width:320px; height:"+(this._cc?454:407)+"px; z-index:-1;'></iframe>"),a+="<table cellpadding='0' cellspacing='0'>",a+=
+"<tr><td style='width:2px;height:2px;background:url("+(this.imgURL||"")+"left_top.gif);'></td><td style='height:2px;background:url("+(this.imgURL||"")+"top.gif);'></td><td style='width:2px;height:2px;background:url("+(this.imgURL||"")+"right_top.gif);'></td></tr>",a+="<tr><td style='width:2px;background:url("+(this.imgURL||"")+"left.gif);'></td><td style='width:316px;height:"+(this._cc?446:392)+"px;background:#E6E5E5;'>",a+="<table class='cs_ContentTable' csid='cs_ContentTable' cellpadding='0px' cellspacing='0px'>",
+a+="<tr>",a+="<td><div class='cs_SelectorDiv' csid='cs_SelectorDiv'><div class='cs_SelectorVer' csid='cs_SelectorVer' style='left:100px;top:0px;'></div><div class='cs_SelectorHor' csid='cs_SelectorHor' style='left:0px;top:100px;'></div></div></td>",a+="<td><div class='cs_LumSelect' csid='cs_LumSelect'><div class='cs_LumSelectArrow' csid='cs_LumSelectArrow' style='left:16px;top:124px;'></div><div class='cs_LumSelectLine' csid='cs_LumSelectLine' style='left:0px;top:0px;'></div></div></td>",a+="</tr>",
+a+="<tr><td style='padding-top:10px;' colspan='2'>",a+="<table class='cs_ColorArea' cellpadding='0px' cellspacing='0px'>",a+="<tr><td rowspan='3'><div class='cs_EndColor' csid='cs_EndColor'></div></td><td valign='top' style='text-align:center;width:80px;'># <input csid='cs_Hex' class='cs_Hex'></td><td>"+this.language.labelHue+":</td><td><input tabindex='1' class='cs_Input' csid='cs_InputHue' value='' /></td><td>"+this.language.labelRed+":</td><td><input tabindex='4' class='cs_Input' csid='cs_InputRed' value='' /></td></tr>",
+a+="<tr><td></td><td>"+this.language.labelSat+":</td><td><input tabindex='2' class='cs_Input' csid='cs_InputSat' value='' /></td><td>"+this.language.labelGreen+":</td><td><input tabindex='4' class='cs_Input' csid='cs_InputGreen' value='' /></td></tr>",a+="<tr><td></td><td>"+this.language.labelLum+":</td><td><input tabindex='2' class='cs_Input' csid='cs_InputLum' value='' /></td><td>"+this.language.labelBlue+":</td><td><input tabindex='4' class='cs_Input' csid='cs_InputBlue' value='' /></td></tr>",
+this._cc&&(a+="<tr><td>",a+="<div class='cs_CustomColors' csid='cs_CustomColors'></div>",a+="</td><td></td><td colspan='4' valign='top'><input tabindex='7' class='cs_CustomColorAdd' csid='cs_CustomColorAdd' type='button' value='"+this.language.btnAddColor+"'></td></tr>"),a+="</table>",a+="</td></tr>",a+="</table>",a+="<table cellpadding='0' cellspacing='0' style='width:100%;'><tr><td style='height:49px;background:url("+(this.imgURL||"")+"buttons_panel.gif);'><input tabindex='9' class='cs_ButtonCancel' csid='cs_ButtonCancel' type='button' value='"+
+this.language.btnCancel+"' /><input tabindex='8' class='cs_ButtonOk' csid='cs_ButtonOk' type='button' value='"+this.language.btnSelect+"' /></td></tr></table>";else{var a="<div class='dhtmlxcolorpicker"+(this.skinName!=""?"_"+this.skinName:"")+"' csid='cs_Content' style='display:none;'>";document.all&&this.container.style.position=="absolute"&&(a+="<iframe src='"+(this.imgURL||"")+"blank.html' frameBorder='0' style='position:absolute; top:0px; left:0px; width:252px; height:"+(this._cc?300:244)+"px; z-index:-1;'></iframe>");
+a+="<table cellpadding='0' cellspacing='0'>";a+="<tr><td style='width:2px;height:2px;background:url("+(this.imgURL||"")+"left_top.gif);'></td><td style='height:2px;background:url("+(this.imgURL||"")+"top.gif);'></td><td style='width:2px;height:2px;background:url("+(this.imgURL||"")+"right_top.gif);'></td></tr>";a+="<tr><td style='width:2px;background:url("+(this.imgURL||"")+"left.gif);'></td><td style='width:"+(document.all?247:243)+"px;height:"+(this._cc?281:240)+"px;'>";a+="<table class='cs_ContentTable' csid='cs_ContentTable' cellpadding='0px' cellspacing='0px'>";
+a+="<tr>";a+="<td><div class='cs_SelectorDiv_Mini' csid='cs_SelectorDiv'><div class='cs_SelectorVer' csid='cs_SelectorVer' style='left:100px;top:0px;'></div><div class='cs_SelectorHor' csid='cs_SelectorHor' style='left:0px;top:100px;'></div></div></td>";a+="<td><div class='cs_LumSelect_Mini' csid='cs_LumSelect'><div csid='cs_LumSelectArrow'></div><div class='cs_LumSelectLine' csid='cs_LumSelectLine' style='left:0px;top:0px;'></div></div></td>";a+="</tr>";a+="<tr><td style='padding-top:10px;' colspan='2'>";
+a+="<table class='cs_ColorArea_Mini' cellpadding='0px' cellspacing='0px'>";a+="<tr><td rowspan='2' valign='top' style='text-align:left;'><div class='cs_EndColor_Mini' csid='cs_EndColor' ></div></td><td>"+this.language.labelHue+":</td><td><input tabindex='1' class='cs_Input_Mini"+X+"' csid='cs_InputHue' value='' /></td><td>"+this.language.labelRed+":</td><td><input tabindex='4' class='cs_Input_Mini"+X+"' csid='cs_InputRed' value='' /></td></tr>";a+="<tr><td>"+this.language.labelSat+":</td><td><input tabindex='2' class='cs_Input_Mini"+
+X+"' csid='cs_InputSat' value='' /></td><td>"+this.language.labelGreen+":</td><td><input tabindex='4' class='cs_Input_Mini"+X+"' csid='cs_InputGreen' value='' /></td></tr>";a+="<tr><td style='vertical-align:top;width:80px;text-align:left;'># <input csid='cs_Hex' class='cs_Hex_Mini"+X+"'></td><td>"+this.language.labelLum+":</td><td><input tabindex='2' class='cs_Input_Mini"+X+"' csid='cs_InputLum' value='' /></td><td>"+this.language.labelBlue+":</td><td><input tabindex='4' class='cs_Input_Mini"+X+"' csid='cs_InputBlue' value='' /></td></tr>";
+this._cc&&(a+="<tr><td colspan='6'><input tabindex='7' class='cs_CustomColorAdd_Mini' csid='cs_CustomColorAdd' type='button' value='"+this.language.btnAddColor+"'></td></tr>",a+="<tr><td colspan='6'><div class='cs_CustomColors_Mini' csid='cs_CustomColors'></div></td></tr>");a+="</table>";a+="</td></tr>";a+="</table>";a+="<table class='cs_ButtonsPanel' cellpadding='0' cellspacing='0' style='width:100%;'><tr><td style='width:100%;'><input tabindex='9' class='cs_ButtonCancel' csid='cs_ButtonCancel' type='button' value='"+
+this.language.btnCancel+"' /><input tabindex='8' class='cs_ButtonOk' csid='cs_ButtonOk' type='button' value='"+this.language.btnSelect+"' /></td></tr></table>"}a+="</td><td style='width:2px;background:url("+(this.imgURL||"")+"right.gif);'></td></tr>";a+="<tr><td style='width:2px;height:2px;background:url("+(this.imgURL||"")+"left_bottom.gif);'></td><td style='height:2px;background:url("+(this.imgURL||"")+"bottom.gif);'></td><td style='width:2px;height:2px;background:url("+(this.imgURL||"")+"right_bottom.gif);'></td></tr>";
+a+="</table>";a+="</div>";this.container.style.width=this.fullview?"320px":"252px";this.container.innerHTML=a;this._initCsIdElement();this.elements.cs_SelectorDiv.style.backgroundImage=this.fullview?"url("+(this.imgURL||"")+"color.png)":"url("+(this.imgURL||"")+"colormini.png)";this.elements.cs_SelectorDiv.z=this;this.elements.cs_LumSelect.z=this;this.elements.cs_LumSelectArrow.z=this;this.z=this;this._drawLum();this._colorizeLum(this.old_hue,this.old_sat);this._initEvents();this._cc&&this._initCustomColors();
+this.ColorNum=0;this.restoreFromHSV();this._drawValues()};dhtmlXColorPicker.prototype._initCsIdElement=function(a){if(a==null)a=this.container;for(var b=a.childNodes,c=b.length,d=0;d<c;d++)if(b[d].nodeType==1){var e=b[d].getAttribute("csid");e!==null&&(this.elements[e]=b[d]);b[d].childNodes.length>0&&this._initCsIdElement(b[d])}};
+dhtmlXColorPicker.prototype._initEvents=function(){this.elements.cs_SelectorDiv.onmousedown=this._startMoveColor;this.elements.cs_SelectorDiv.ondblclick=this.clickOk;this.elements.cs_LumSelect.onmousedown=this._startMoveLum;this.elements.cs_LumSelect.ondblclick=this.clickOk;this.elements.cs_LumSelectArrow.onmousedown=this._startMoveLum;if(this._cc)this.elements.cs_CustomColorAdd.z=this,this.elements.cs_CustomColorAdd.onclick=this.addCustomColor,this.elements.cs_CustomColorAdd.onmouseover=this.hoverButton,
+this.elements.cs_CustomColorAdd.onmouseout=this.normalButton;for(var a="cs_InputHue,cs_InputRed,cs_InputSat,cs_InputGreen,cs_InputLum,cs_InputBlue".split(","),b=0;b<a.length;b++)this.elements[a[b]].z=this,this.elements[a[b]].onchange=b%2?this._changeValueRGB:this._changeValueHSV;this.elements.cs_Hex.z=this;this.elements.cs_Hex.onchange=this._changeValueHEX;this.elements.cs_ButtonOk.z=this;this.elements.cs_ButtonOk.onclick=this.clickOk;this.elements.cs_ButtonOk.onmouseover=this.hoverButton;this.elements.cs_ButtonOk.onmouseout=
+this.normalButton;this.elements.cs_ButtonCancel.z=this;this.elements.cs_ButtonCancel.onclick=this.clickCancel;this.elements.cs_ButtonCancel.onmouseover=this.hoverButton;this.elements.cs_ButtonCancel.onmouseout=this.normalButton};dhtmlXColorPicker.prototype.resetHandlers=function(){};dhtmlXColorPicker.prototype.clickOk=function(){var a=this.z,b=a.getSelectedColor();a.callEvent("onSelect",[b[0]]);a.hideSelfOnSelect&&a.hide()};
+dhtmlXColorPicker.prototype.clickCancel=function(){var a=this.z;a.callEvent("onCancel",[]);this.z.hideSelfOnSelect&&this.z.hide()};
+dhtmlXColorPicker.prototype._setCrossPos=function(a){var b=this.z,c=b._getOffset(this.elements.cs_SelectorDiv),d=a.clientY-c[0];if(d<0)d=0;else if(d>this.colorSelectH)d=this.colorSelectH;var e=a.clientX-c[1];if(e<0)e=0;else if(e>this.colorSelectW)e=this.colorSelectW;b.elements.cs_SelectorVer.style.left=e+"px";b.elements.cs_SelectorHor.style.top=d+"px";var f=e==this.colorSelectW?0:360*e/this.colorSelectW,g=1-d/this.colorSelectH;return[f,g]};
+dhtmlXColorPicker.prototype._getScrollers=function(){return[document.body.scrollLeft||document.documentElement.scrollLeft,document.body.scrollTop||document.documentElement.scrollTop]};dhtmlXColorPicker.prototype._setLumPos=function(a){var b=this.z,c=b._getOffset(b.elements.cs_LumSelect),d=a.clientY-c[0]-4;d<-3&&(d=-3);d>this.colorSelectH-4&&(d=this.colorSelectH-4);b.elements.cs_LumSelectArrow.style.top=d+"px";b.elements.cs_LumSelectLine.style.top=d+4+"px";var e=(d+3)/this.colorSelectH;return e};
+dhtmlXColorPicker.prototype._startMoveColor=function(a){var b=this.z;a==null&&(a=event);b.elements.cs_SelectorDiv.onmousedown=null;b.b_move=document.body.onmousemove;b.b_up=document.body.onmouseup;var c=b;document.body.onmousemove=function(a){a==null&&(a=event);c._mouseMoveColor(a)};document.body.onmouseup=function(a){a==null&&(a=event);c._stopMoveColor(a);c=null};b.elements.cs_SelectorDiv.onmousemove=b._mouseMoveColor;b.elements.cs_SelectorDiv.onmouseup=b._stopMoveColor;var d=b._setCrossPos(a);b.h=
+d[0];b.s=d[1];var e=b._calculateColor();b._colorizeLum(e[0],e[1])};dhtmlXColorPicker.prototype._mouseMoveColor=function(a){var b=this.z;a==null&&(a=event);var c=b._setCrossPos(a);if(!b.isClickOnly){b.h=c[0];b.s=c[1];var d=b._calculateColor();b._colorizeLum(d[0],d[1])}};
+dhtmlXColorPicker.prototype._stopMoveColor=function(a){var b=this.z;a==null&&(a=event);b.elements.cs_SelectorDiv.onmousedown=b._startMoveColor;b.elements.cs_SelectorDiv.onmousemove=null;b.elements.cs_SelectorDiv.onmouseup=null;document.body.onmousemove=b.b_move;document.body.onmouseup=b.b_up;var c=b._setCrossPos(a);b.h=c[0];b.s=c[1];var d=b._calculateColor();b._colorizeLum(d[0],d[1])};
+dhtmlXColorPicker.prototype._startMoveLum=function(a){var b=this.z;a==null&&(a=event);b.elements.cs_LumSelect.onmousedown=null;b.elements.cs_LumSelectArrow.onmousedown=null;b.elements.cs_LumSelect.onmousemove=b._mouseMoveLum;b.elements.cs_LumSelect.onmouseup=b._stopMoveLum;b.b_move=document.body.onmousemove;b.b_up=document.body.onmouseup;b.b_selstart=document.body.onselectstart;var c=b;document.body.onmousemove=function(a){a==null&&(a=event);c._mouseMoveLum(a)};document.body.onmouseup=function(a){a==
+null&&(a=event);c._stopMoveLum(a);c=null};document.body.onselectstart=function(){return!1};b.v=b._setLumPos(a);b._calculateColor()};dhtmlXColorPicker.prototype._mouseMoveLum=function(a){var b=this.z;a==null&&(a=event);b.v=b._setLumPos(a);b.isClickOnly||b._calculateColor()};
+dhtmlXColorPicker.prototype._stopMoveLum=function(a){var b=this.z;a==null&&(a=event);b.elements.cs_LumSelect.onmousedown=b._startMoveLum;b.elements.cs_LumSelectArrow.onmousedown=b._startMoveLum;b.elements.cs_LumSelect.onmousemove=null;b.elements.cs_LumSelect.onmouseup=null;b.v=b._setLumPos(a);b._calculateColor();document.body.onmousemove=b.b_move;document.body.onmouseup=b.b_up;document.body.onselectstart=b.b_selstart};
+dhtmlXColorPicker.prototype._getOffset=function(a){var b=this._getOffsetTop(a),c=this._getOffsetLeft(a),d=this._getScrollers();return[b-d[1],c-d[0]]};dhtmlXColorPicker.prototype._getOffsetTop=function(a){var b=0;a.offsetParent&&(b+=a.offsetTop+this._getOffsetTop(a.offsetParent));return b};dhtmlXColorPicker.prototype._getOffsetLeft=function(a){var b=0;a.offsetParent&&(b+=a.offsetLeft+this._getOffsetLeft(a.offsetParent));return b};
+dhtmlXColorPicker.prototype._calculateColor=function(){if(this.restoreFrom=="RGB")var a=[this.r,this.g,this.b];else a=this._hsv2rgb(this.h,this.s,1-this.v),this.r=a[0],this.g=a[1],this.b=a[2];this.hex=this._getColorHEX(a);this.elements.cs_EndColor.style.backgroundColor="#"+this.hex;this._drawValues();this.restoreFrom=null;return[this.h,this.s,1-this.v]};
+dhtmlXColorPicker.prototype._drawValues=function(){this.elements.cs_Hex.value=this.hex;this.elements.cs_InputHue.value=Math.floor(this.h);this.elements.cs_InputSat.value=Math.floor(this.s*100);this.elements.cs_InputLum.value=Math.floor((1-this.v)*100);this.elements.cs_InputRed.value=Math.floor(this.r);this.elements.cs_InputGreen.value=Math.floor(this.g);this.elements.cs_InputBlue.value=Math.floor(this.b)};
+dhtmlXColorPicker.prototype.saveColor=function(a,b){var c=new Date,d=c.valueOf()+26784E5,c=new Date(d),e="color_"+b+"="+a+"; expires="+c.toGMTString();document.cookie=e};dhtmlXColorPicker.prototype.restoreColor=function(a){var b=!1,c="color_"+a;if(document.cookie.length>0){var d=document.cookie.indexOf(c+"=");if(d!=-1){var e=document.cookie.indexOf(";",d);if(e==-1)e=document.cookie.length;var f=document.cookie.indexOf("=",d)+1,b=document.cookie.substr(f,e-f)}}return b};
+dhtmlXColorPicker.prototype._hsv2rgb=function(a,b,c){Hi=Math.floor(a/60)%6;f=a/60-Hi;p=c*(1-b);q=c*(1-f*b);t=c*(1-(1-f)*b);var d=0,e=0,f=0;switch(Hi){case 0:d=c;e=t;f=p;break;case 1:d=q;e=c;f=p;break;case 2:d=p;e=c;f=t;break;case 3:d=p;e=q;f=c;break;case 4:d=t;e=p;f=c;break;case 5:d=c,e=p,f=q}d=Math.floor(d*255);e=Math.floor(e*255);f=Math.floor(f*255);return[d,e,f]};
+dhtmlXColorPicker.prototype._rgb2hsv=function(a,b,c){R=a/255;G=b/255;B=c/255;var d=Math.max(R,G,B),e=Math.min(R,G,B),f=d,g=d==0?0:1-e/d,h=0;d==e?h=0:d==R&&G>=B?h=60*(G-B)/(d-e)+0:d==R&&G<B?h=60*(G-B)/(d-e)+360:d==G?h=60*(B-R)/(d-e)+120:d==B&&(h=60*(R-G)/(d-e)+240);return[h,g,f]};
+dhtmlXColorPicker.prototype._drawLum=function(){for(var a=this.colorSelectH,b=!this.fullview?30:64,c=!this.fullview?8:4,d=0;d<b;d++){var e=document.createElement("div"),f=this._dec2hex(a);e.style.backgroundColor="#"+f+f+f;e.className="cs_LumElement";a-=c;this.elements.cs_LumSelect.appendChild(e)}};
+dhtmlXColorPicker.prototype._colorizeLum=function(a,b){this.old_hue=a;this.old_sat=b;for(var c=255,d=!this.fullview?8:4,e=this.elements.cs_LumSelect.childNodes.length,f=2;f<e;f++){var g=c>255?1:c/255,h=this._hsv2rgb(a,b,g),h="#"+this._getColorHEX(h);this.elements.cs_LumSelect.childNodes[f].style.backgroundColor=h;c-=d}this.callEvent("onChange",[this.getSelectedColor()])};dhtmlXColorPicker.prototype._dec2hex=function(a){return window.cs_dechex[a]||"00"};
+dhtmlXColorPicker.prototype._hex2dec=function(a){return parseInt(a,16)};
+dhtmlXColorPicker.prototype._initCustomColors=function(){for(var a=this.elements.cs_CustomColors,b=0;b<this.customColorsCount;b++){var c=document.createElement("div");c.className=this.fullview?"cs_CustomColor":"cs_CustomColor_Mini";c.color_num=b;if(document.all)navigator.appName=="Opera"?this.fullview?(c.style.width="14px",c.style.height="14px"):(c.style.width="18px",c.style.height="18px"):this.fullview?(c.style.width="16px",c.style.height="16px"):(c.style.width=document.compatMode!="BackCompat"?
+"18px":"20px",c.style.height="20px");c.z=this;c.onclick=this._selectCustomColor;c.ondblclick=this.clickOk;var d=this.restoreColor(b)||"0,0,0";c.color=d;var e=d.split(",");c.style.backgroundColor="#"+this._getColorHEX(e);this.customColors.push(c);a.appendChild(c)}};
+dhtmlXColorPicker.prototype._reinitCustomColors=function(){for(var a=this.elements.cs_CustomColors,b=0;b<this.customColorsCount;b++){var c=this.customColors[b],d=this.restoreColor(b)||"0,0,0";c.color=d;var e=d.split(",");c.style.backgroundColor="#"+this._getColorHEX(e);this.customColors[b]=c}};dhtmlXColorPicker.prototype._getColorHEX=function(a){var b=this._dec2hex(a[0]),c=this._dec2hex(a[1]),d=this._dec2hex(a[2]);return b+c+d};
+dhtmlXColorPicker.prototype._selectCustomColor=function(a){a==null&&(a=event);var b=this.z;if(!this.selected){for(var c=0;c<b.customColors.length;c++)b.customColors[c].style.border="1px solid gray";this.style.border="1px dashed black";this.selected=!0;if(b.selectedColor!=null)b.customColors[b.selectedColor].style.border="1px solid gray",b.customColors[b.selectedColor].selected=!1}b.selectedColor=this.color_num;b.ColorNum=this.color_num;var d=this.color.split(",");b.r=d[0];b.g=d[1];b.b=d[2];b.restoreFromRGB()};
+dhtmlXColorPicker.prototype.addCustomColor=function(){var a=this.z;if(a.selectedColor!=null){var b=a.customColors[a.selectedColor],c=a.selectedColor;b.style.border="1px solid gray";a.selectedColor=null}else b=a.customColors[a.ColorNum],c=a.ColorNum,b.style.border="1px solid gray";var d=a.r+","+a.g+","+a.b;a.saveColor(d,c);b.color=d;a.ColorNum=a.ColorNum==9?0:a.ColorNum+1;a.customColors[a.ColorNum].style.border="1px dashed red";b.style.backgroundColor=a.elements.cs_EndColor.style.backgroundColor};
+dhtmlXColorPicker.prototype.restoreFromRGB=function(){this.restoreFrom="RGB";var a=this._rgb2hsv(this.r,this.g,this.b);this.h=a[0];this.s=a[1];this.v=1-a[2];this.ready&&this.redraw()};dhtmlXColorPicker.prototype.restoreFromHSV=function(){this.restoreFrom="HSV";var a=this._hsv2rgb(this.h,this.s,this.v);this.r=a[0];this.g=a[1];this.b=a[2];this.redraw()};
+dhtmlXColorPicker.prototype.restoreFromHEX=function(){this.r=this._hex2dec(this.hex.substr(0,2));this.g=this._hex2dec(this.hex.substr(2,2));this.b=this._hex2dec(this.hex.substr(4,2));this.restoreFromRGB()};
+dhtmlXColorPicker.prototype.redraw=function(){var a=this.colorSelectW*this.h/360,b=(1-this.s)*this.colorSelectH,c=this.v*this.colorSelectH;this.elements.cs_SelectorHor.style.top=b+"px";this.elements.cs_SelectorVer.style.left=a+"px";this.elements.cs_LumSelectArrow.style.top=c-3+"px";this.elements.cs_LumSelectLine.style.top=c+1+"px";var d=this._calculateColor();this._colorizeLum(d[0],d[1])};
+dhtmlXColorPicker.prototype._changeValueHSV=function(){var a=this.z,b=parseInt(a.elements.cs_InputHue.value)||0,c=parseInt(a.elements.cs_InputSat.value)||0,d=parseInt(a.elements.cs_InputLum.value)||0;if(b<0||b>359)b=0;if(c<0||c>100)c=0;if(d<0||d>100)d=0;a.elements.cs_InputHue.value=b;a.elements.cs_InputSat.value=c;a.elements.cs_InputLum.value=d;a.h=b;a.s=c/100;a.v=1-d/100;a.restoreFromHSV()};
+dhtmlXColorPicker.prototype._changeValueRGB=function(){var a=this.z,b=parseInt(a.elements.cs_InputRed.value)||0,c=parseInt(a.elements.cs_InputGreen.value)||0,d=parseInt(a.elements.cs_InputBlue.value)||0;if(b<0||b>255)b=0;if(c<0||c>255)c=0;if(d<0||d>255)d=0;a.elements.cs_InputRed.value=b;a.elements.cs_InputGreen.value=c;a.elements.cs_InputBlue.value=d;a.r=b;a.g=c;a.b=d;a.restoreFromRGB()};
+dhtmlXColorPicker.prototype._changeValueHEX=function(){var a=this.z,b=a.elements.cs_Hex.value||0,b=b.replace(/[^a-fA-F0-9]/gi,"0");if(b.length>6)b=b.substr(0,6);else for(;b.length<6;)b+="0";a.elements.cs_Hex.value=b;a.hex=b;a.restoreFromHEX()};
+dhtmlXColorPicker.prototype.setCustomColors=function(a){for(var a=a.split(","),b=0;b<a.length;b++){var c=a[b];c.substr(0,1)=="#"&&(c=c.substr(1));var d=this._hex2dec(c.substr(0,2)),e=this._hex2dec(c.substr(2,2)),f=this._hex2dec(c.substr(4,2)),c=d+","+e+","+f;this.saveColor(c,b)}};
+dhtmlXColorPicker.prototype.setColor=function(a){if(typeof a!="string")var b=a[0],c=a[1],d=a[2];else if(a.indexOf("rgb")!=-1)var e=a.substr(a.indexOf("(")+1,a.lastIndexOf(")")-a.indexOf("(")-1).split(","),b=e[0],c=e[1],d=e[2];else a.substr(0,1)=="#"&&(a=a.substr(1)),b=this._hex2dec(a.substr(0,2)),c=this._hex2dec(a.substr(2,2)),d=this._hex2dec(a.substr(4,2));b=parseInt(b)||0;c=parseInt(c)||0;d=parseInt(d)||0;if(b<0||b>255)b=0;if(c<0||c>255)c=0;if(d<0||d>255)d=0;this.r=b;this.g=c;this.b=d;this.restoreFromRGB()};
+dhtmlXColorPicker.prototype.close=function(){this.elements.cs_SelectorDiv.z=null;this.elements.cs_LumSelect.z=null;this.elements.cs_LumSelectArrow.z=null;this.elements.cs_ButtonOk.z=null;this.elements.cs_ButtonCancel.z=null;if(this.cc)this.elements.cs_CustomColorAdd.z=null;this.container.innerHTML="";this.container._dhx_remove&&this.container.parentNode.removeChild(this.container)};
+dhtmlXColorPicker.prototype.show=function(){this.callEvent("onShow",[]);if(this.container.innerHTML!="")this.elements.cs_Content.style.display="",this.elements.cs_InputHue.focus()};dhtmlXColorPicker.prototype.setPosition=function(a,b){this.container.style.position="absolute";this.container.style.top=(b>0?b:10)+"px";this.container.style.left=a+"px"};dhtmlXColorPicker.prototype.hide=function(){this.resetHandlers();if(this.elements.cs_Content)this.elements.cs_Content.style.display="none"};
+dhtmlXColorPicker.prototype.setOnSelectHandler=function(a){this.attachEvent("onSelect",a)};dhtmlXColorPicker.prototype.setOnCancelHandler=function(a){this.attachEvent("onCancel",a)};dhtmlXColorPicker.prototype.getSelectedColor=function(){var a=[this.r,this.g,this.b],b=this._dec2hex(this.r)+this._dec2hex(this.g)+this._dec2hex(this.b),c=[this.h,this.s,this.v];return["#"+b,a,c]};
+dhtmlXColorPicker.prototype.linkTo=function(a,b,c){typeof a!="object"&&(a=document.getElementById(a));typeof b!="object"&&(b=document.getElementById(b));typeof c!="object"&&(c=document.getElementById(c));this.linkToObjects=arguments;var d=this;b.onclick=function(){var b=d._getOffset(a),c=d._getScrollers(),g=b[1]+c[0],h=b[0]+c[1];d.setPosition(g+a.offsetWidth,h);d.isVisible()?d.hide():d.show()};this.setOnSelectHandler(function(b){a.style.backgroundColor=b;if(c)c.value=b});this.close=this.hide;this.hide()};
+dhtmlXColorPicker.prototype.hideOnSelect=function(a){this.hideSelfOnSelect=a};dhtmlXColorPicker.prototype.setImagePath=function(a){this.imgURL=a};dhtmlXColorPicker.prototype.init=function(){this.language||this.loadUserLanguage("en-us");this.generate();this.ready=!0;this._cc&&this._reinitCustomColors();this.linkToObjects.length>0&&this.linkTo(this.linkToObjects[0],this.linkToObjects[1],this.linkToObjects[2]);this.hideOnInit||this.show()};
+dhtmlXColorPicker.prototype.loadUserLanguage=function(a){if(window.dhtmlxColorPickerLangModules[a])this.language=window.dhtmlxColorPickerLangModules[a],this.ready&&(this.generate(),this.show())};dhtmlXColorPicker.prototype.setSkin=function(a){this.skinName=a;if(this.elements.cs_Content)this.elements.cs_Content.className="dhtmlxcolorpicker"+(a?"_"+a:a)};dhtmlXColorPicker.prototype.isVisible=function(){return this.elements.cs_Content.style.display!="none"};
+dhtmlXColorPicker.prototype.hoverButton=function(){this.className+="_Hover"};dhtmlXColorPicker.prototype.normalButton=function(){this.className=this.className.substr(0,this.className.length-6)};(function(){dhtmlx.extend_api("dhtmlXColorPicker",{_init:function(a){return[a.parent,a.click,a.colors,a.hide,a.full]},show:"showA",link:"linkTo",image_path:"setImagePath",color:"setColor"},{showA:function(){this.init();this.show()}})})();
+function dhtmlXComboFromSelect(a,b){typeof a=="string"&&(a=document.getElementById(a));b=b||a.getAttribute("width")||(window.getComputedStyle?window.getComputedStyle(a,null).width:a.currentStyle?a.currentStyle.width:0);if(!b||b=="auto")b=a.offsetWidth||100;var c=document.createElement("SPAN");a.parentNode.insertBefore(c,a);a.style.display="none";for(var d=a.getAttribute("opt_type"),e=new dhtmlXCombo(c,a.name,b,d,a.tabIndex),f=[],g=-1,h=0;h<a.options.length;h++){a.options[h].selected&&(g=h);var i=
+a.options[h].innerHTML,j=a.options[h].getAttribute("value");if(typeof j=="undefined"||j===null)j=i;f[h]={value:j,text:i,img_src:a.options[h].getAttribute("img_src")}}f.length&&e.addOption(f);a.parentNode.removeChild(a);g>=0&&e.selectOption(g,null,!0);a.onchange&&e.attachEvent("onChange",a.onchange);a.style.direction=="rtl"&&e.setRTL&&e.setRTL(!0);return e}var dhtmlXCombo_optionTypes=[];
+function dhtmlXCombo(a,b,c,d,e){typeof a=="string"&&(a=document.getElementById(a));this.dhx_Event();this.optionType=d!=window.undefined&&dhtmlXCombo_optionTypes[d]?d:"default";this._optionObject=dhtmlXCombo_optionTypes[this.optionType];this._disabled=!1;if(!window.dhx_glbSelectAr)window.dhx_glbSelectAr=[],window.dhx_openedSelect=null,window.dhx_SelectId=1,dhtmlxEvent(document.body,"click",this.closeAll),dhtmlxEvent(document.body,"keydown",function(a){try{(a||event).keyCode==9&&window.dhx_glbSelectAr[0].closeAll()}catch(b){}return!0});
+if(a.tagName=="SELECT")return dhtmlXComboFromSelect(a);else this._createSelf(a,b,c,e);dhx_glbSelectAr.push(this)}dhtmlXCombo.prototype.setSize=function(a){this.DOMlist.style.width=a+"px";if(this.DOMlistF)this.DOMlistF.style.width=a+"px";this.DOMelem.style.width=a+"px";this.DOMelem_input.style.width=Math.max(0,a-19)+"px"};
+dhtmlXCombo.prototype.enableFilteringMode=function(a,b,c,d){this._filter=convertStringToBoolean(a);if(b)this._xml=b,this._autoxml=convertStringToBoolean(d);if(convertStringToBoolean(c))this._xmlCache=[]};dhtmlXCombo.prototype.setFilteringParam=function(a,b){if(!this._prs)this._prs=[];this._prs.push([a,b])};dhtmlXCombo.prototype.disable=function(a){var b=convertStringToBoolean(a);if(this._disabled!=b)this._disabled=this.DOMelem_input.disabled=b};
+dhtmlXCombo.prototype.readonly=function(a,b){this.DOMelem_input.readOnly=a?!0:!1;if(b===!1||a===!1)this.DOMelem.onkeyup=function(){};else{var c=this;this.DOMelem.onkeyup=function(a){a=a||window.event;if(a.keyCode!=9)a.cancelBubble=!0;if(a.keyCode>=48&&a.keyCode<=57||a.keyCode>=65&&a.keyCode<=90){for(var b=0;b<c.optionsArr.length;b++){var f=c.optionsArr[b].text;if(f.toString().toUpperCase().indexOf(String.fromCharCode(a.keyCode))==0){c.selectOption(b);break}}a.cancelBubble=!0}}}};
+dhtmlXCombo.prototype.getOption=function(a){for(var b=0;b<this.optionsArr.length;b++)if(this.optionsArr[b].value==a)return this.optionsArr[b];return null};dhtmlXCombo.prototype.getOptionByLabel=function(a){for(var b=0;b<this.optionsArr.length;b++)if(this.optionsArr[b].text==a||this.optionsArr[b]._ctext==a)return this.optionsArr[b];return null};dhtmlXCombo.prototype.getOptionByIndex=function(a){return this.optionsArr[a]};
+dhtmlXCombo.prototype.clearAll=function(a){a&&this.setComboText("");this.optionsArr=[];this.redrawOptions();a&&this._confirmSelection()};dhtmlXCombo.prototype.deleteOption=function(a){var b=this.getIndexByValue(a);if(!(b<0)){if(this.optionsArr[b]==this._selOption)this._selOption=null;this.optionsArr.splice(b,1);this.redrawOptions()}};dhtmlXCombo.prototype.render=function(a){this._skiprender=!convertStringToBoolean(a);this.redrawOptions()};
+dhtmlXCombo.prototype.updateOption=function(a,b,c,d){var e=this.getOption(a);typeof b!="object"&&(b={text:c,value:b,css:d});e.setValue(b);this.redrawOptions()};dhtmlXCombo.prototype.addOption=function(a){args=!arguments[0].length||typeof arguments[0]!="object"?[arguments]:a;this.render(!1);for(var b=0;b<args.length;b++){var c=args[b];if(c.length)c.value=c[0]||"",c.text=c[1]||"",c.css=c[2]||"";this._addOption(c)}this.render(!0)};
+dhtmlXCombo.prototype._addOption=function(a){dOpt=new this._optionObject;this.optionsArr.push(dOpt);dOpt.setValue.apply(dOpt,[a]);this.redrawOptions()};dhtmlXCombo.prototype.getIndexByValue=function(a){for(var b=0;b<this.optionsArr.length;b++)if(this.optionsArr[b].value==a)return b;return-1};dhtmlXCombo.prototype.getSelectedValue=function(){return this._selOption?this._selOption.value:null};dhtmlXCombo.prototype.getComboText=function(){return this.DOMelem_input.value};
+dhtmlXCombo.prototype.setComboText=function(a){this.DOMelem_input.value=a};dhtmlXCombo.prototype.setComboValue=function(a){this.setComboText(a);for(var b=0;b<this.optionsArr.length;b++)if(this.optionsArr[b].data()[0]==a)return this.selectOption(b,null,!0);this.DOMelem_hidden_input.value=a};dhtmlXCombo.prototype.getActualValue=function(){return this.DOMelem_hidden_input.value};dhtmlXCombo.prototype.getSelectedText=function(){return this._selOption?this._selOption.text:""};
+dhtmlXCombo.prototype.getSelectedIndex=function(){for(var a=0;a<this.optionsArr.length;a++)if(this.optionsArr[a]==this._selOption)return a;return-1};dhtmlXCombo.prototype.setName=function(a){this.DOMelem_hidden_input.name=a;this.DOMelem_hidden_input2=a.replace(/(\]?)$/,"_new_value$1");this.name=a};dhtmlXCombo.prototype.show=function(a){this.DOMelem.style.display=convertStringToBoolean(a)?"":"none"};
+dhtmlXCombo.prototype.destructor=function(){this.DOMParent.removeChild(this.DOMelem);this.DOMlist.parentNode.removeChild(this.DOMlist);var a=dhx_glbSelectAr;this.DOMParent=this.DOMlist=this.DOMelem=0;for(var b=this.DOMlist.combo=this.DOMelem.combo=0;b<a.length;b++)if(a[b]==this){a[b]=null;a.splice(b,1);break}};
+dhtmlXCombo.prototype._createSelf=function(a,b,c,d){if(c.toString().indexOf("%")!=-1){var e=this,f=parseInt(c)/100;window.setInterval(function(){if(a.parentNode){var b=a.parentNode.offsetWidth*f-2;if(!(b<0)&&b!=e._lastTs)e.setSize(e._lastTs=b)}},500);c=parseInt(a.offsetWidth)}c=parseInt(c||100);this.ListPosition="Bottom";this.DOMParent=a;this._inID=null;this.name=b;this._selOption=null;this.optionsArr=[];var g=new this._optionObject;g.DrawHeader(this,b,c,d);this.DOMlist=document.createElement("DIV");
+this.DOMlist.className="dhx_combo_list "+(dhtmlx.skin?dhtmlx.skin+"_list":"");this.DOMlist.style.width=c-(_isIE?0:0)+"px";if(_isOpera||_isKHTML)this.DOMlist.style.overflow="auto";this.DOMlist.style.display="none";document.body.insertBefore(this.DOMlist,document.body.firstChild);if(_isIE)this.DOMlistF=document.createElement("IFRAME"),this.DOMlistF.style.border="0px",this.DOMlistF.className="dhx_combo_list",this.DOMlistF.style.width=c-(_isIE?0:0)+"px",this.DOMlistF.style.display="none",this.DOMlistF.src=
+"javascript:false;",document.body.insertBefore(this.DOMlistF,document.body.firstChild);this.DOMlist.combo=this.DOMelem.combo=this;this.DOMelem_input.onkeydown=this._onKey;this.DOMelem_input.onkeypress=this._onKeyF;this.DOMelem_input.onblur=this._onBlur;this.DOMelem.onclick=this._toggleSelect;this.DOMlist.onclick=this._selectOption;this.DOMlist.onmousedown=function(){this._skipBlur=!0};this.DOMlist.onkeydown=function(a){(a||event).cancelBubble=!0;this.combo.DOMelem_input.onkeydown(a)};this.DOMlist.onmouseover=
+this._listOver};dhtmlXCombo.prototype._listOver=function(a){a=a||event;a.cancelBubble=!0;var b=_isIE?event.srcElement:a.target,c=this.combo;if(b.parentNode==c.DOMlist){c._selOption&&c._selOption.deselect();c._tempSel&&c._tempSel.deselect();for(var d=0;d<c.DOMlist.childNodes.length;d++)if(c.DOMlist.childNodes[d]==b)break;var e=c.optionsArr[d];c._tempSel=e;c._tempSel.select();c._autoxml&&d+1==c._lastLength&&c._fetchOptions(d+1,c._lasttext||"")}};
+dhtmlXCombo.prototype._positList=function(){var a=this.getPosition(this.DOMelem);this.ListPosition=="Bottom"?(this.DOMlist.style.top=a[1]+this.DOMelem.offsetHeight-1+"px",this.DOMlist.style.left=a[0]+"px"):this.ListPosition=="Top"?(this.DOMlist.style.top=a[1]-this.DOMlist.offsetHeight+"px",this.DOMlist.style.left=a[0]+"px"):(this.DOMlist.style.top=a[1]+"px",this.DOMlist.style.left=a[0]+this.DOMelem.offsetWidth+"px")};
+dhtmlXCombo.prototype.getPosition=function(a,b){if(_isChrome){if(!b)b=document.body;for(var c=a,d=0,e=0;c&&c!=b;)d+=c.offsetLeft-c.scrollLeft,e+=c.offsetTop-c.scrollTop,c=c.offsetParent;b==document.body&&(_isIE&&_isIE<8?(document.documentElement.scrollTop&&(e+=document.documentElement.scrollTop),document.documentElement.scrollLeft&&(d+=document.documentElement.scrollLeft)):_isFF||(d+=document.body.offsetLeft,e+=document.body.offsetTop));return[d,e]}var f=getOffset(a);return[f.left,f.top]};
+dhtmlXCombo.prototype._correctSelection=function(){if(this.getComboText()!="")for(var a=0;a<this.optionsArr.length;a++)if(!this.optionsArr[a].isHidden())return this.selectOption(a,!0,!1);this.unSelectOption()};dhtmlXCombo.prototype.selectNext=function(a){for(var b=this.getSelectedIndex()+a;this.optionsArr[b];){if(!this.optionsArr[b].isHidden())return this.selectOption(b,!1,!1);b+=a}};
+dhtmlXCombo.prototype._onKeyF=function(a){var b=this.parentNode.combo,c=a||event;c.cancelBubble=!0;c.keyCode=="13"||c.keyCode=="9"?(b._confirmSelection(),b.closeAll()):c.keyCode=="27"?(b._resetSelection(),b.closeAll()):b._activeMode=!0;return c.keyCode=="13"||c.keyCode=="27"?(b.callEvent("onKeyPressed",[c.keyCode]),!1):!0};
+dhtmlXCombo.prototype._onKey=function(a){var b=this.parentNode.combo;(a||event).cancelBubble=!0;var c=(a||event).keyCode;if(c>15&&c<19)return!0;if(c==27)return!0;if(b.DOMlist.style.display!="block"&&c!="13"&&c!="9"&&(!b._filter||b._filterAny))b.DOMelem.onclick(a||event);if(c!="13"&&c!="9"){if(window.setTimeout(function(){b._onKeyB(c)},1),c=="40"||c=="38")return!1}else if(c==9)b._confirmSelection(),b.closeAll(),(a||event).cancelBubble=!1};
+dhtmlXCombo.prototype._onKeyB=function(a){if(a=="40")var b=this.selectNext(1);else if(a=="38")this.selectNext(-1);else{this.callEvent("onKeyPressed",[a]);if(this._filter)return this.filterSelf(a==8||a==46);for(var c=0;c<this.optionsArr.length;c++)if(this.optionsArr[c].data()[1]==this.DOMelem_input.value)return this.selectOption(c,!1,!1),!1;this.unSelectOption()}return!0};
+dhtmlXCombo.prototype._onBlur=function(){var a=this.parentNode._self;window.setTimeout(function(){if(a.DOMlist._skipBlur)return!(a.DOMlist._skipBlur=!1);a._confirmSelection();a.callEvent("onBlur",[])},100)};dhtmlXCombo.prototype.redrawOptions=function(){if(!this._skiprender){for(var a=this.DOMlist.childNodes.length-1;a>=0;a--)this.DOMlist.removeChild(this.DOMlist.childNodes[a]);for(a=0;a<this.optionsArr.length;a++)this.DOMlist.appendChild(this.optionsArr[a].render())}};
+dhtmlXCombo.prototype.loadXML=function(a,b){this._load=!0;this.callEvent("onXLS",[]);if(this._prs)for(var c=0;c<this._prs.length;c++)a+=[getUrlSymbol(a),escape(this._prs[c][0]),"=",escape(this._prs[c][1])].join("");if(this._xmlCache&&this._xmlCache[a])this._fillFromXML(this,null,null,null,this._xmlCache[a]),b&&b();else{var d=new dtmlXMLLoaderObject(this._fillFromXML,this,!0,!0);if(b)d.waitCall=b;d._cPath=a;d.loadXML(a)}};
+dhtmlXCombo.prototype.loadXMLString=function(a){var b=new dtmlXMLLoaderObject(this._fillFromXML,this,!0,!0);b.loadXMLString(a)};
+dhtmlXCombo.prototype._fillFromXML=function(a,b,c,d,e){a._xmlCache&&(a._xmlCache[e._cPath]=e);var f=e.getXMLTopNode("complete");if(f.tagName!="complete")a._load=!1;else{var g=e.doXPath("//complete"),h=e.doXPath("//option"),i=!1;a.render(!1);if(!g[0]||!g[0].getAttribute("add")){if(a.clearAll(),a._lastLength=h.length,a._xml)if(!h||!h.length)a.closeAll();else if(a._activeMode)a._positList(),a.DOMlist.style.display="block",_isIE&&a._IEFix(!0)}else a._lastLength+=h.length||Infinity,i=!0;for(var j=0;j<
+h.length;j++){var k={};k.text=h[j].firstChild?h[j].firstChild.nodeValue:"";for(var m=0;m<h[j].attributes.length;m++){var l=h[j].attributes[m];if(l)k[l.nodeName]=l.nodeValue}a._addOption(k)}a.render(i!=!0||!!h.length);a._load&&a._load!==!0?a.loadXML(a._load):(a._load=!1,!a._lkmode&&a._filter&&a._correctSelection());var n=e.doXPath("//option[@selected]");n.length&&a.selectOption(a.getIndexByValue(n[0].getAttribute("value")),!1,!0);a.callEvent("onXLE",[])}};
+dhtmlXCombo.prototype.unSelectOption=function(){this._selOption&&this._selOption.deselect();this._tempSel&&this._tempSel.deselect();this._tempSel=this._selOption=null};dhtmlXCombo.prototype.confirmValue=function(){this._confirmSelection()};
+dhtmlXCombo.prototype._confirmSelection=function(a,b){if(arguments.length==0){var c=this.getOptionByLabel(this.DOMelem_input.value),a=c?c.value:this.DOMelem_input.value,b=c==null;if(a==this.getActualValue())return}this.DOMelem_input.focus();this.DOMelem_hidden_input.value=a;this.DOMelem_hidden_input2.value=b?"true":"false";this.callEvent("onChange",[]);this._activeMode=!1};
+dhtmlXCombo.prototype._resetSelection=function(){var a=this.getOption(this.DOMelem_hidden_input.value);this.setComboValue(a?a.data()[0]:this.DOMelem_hidden_input.value);this.setComboText(a?a.data()[1]:this.DOMelem_hidden_input.value)};
+dhtmlXCombo.prototype.selectOption=function(a,b,c){arguments.length<3&&(c=!0);this.unSelectOption();var d=this.optionsArr[a];if(d){this._selOption=d;this._selOption.select();var e=this._selOption.content.offsetTop+this._selOption.content.offsetHeight-this.DOMlist.scrollTop-this.DOMlist.offsetHeight;e>0&&(this.DOMlist.scrollTop+=e);e=this.DOMlist.scrollTop-this._selOption.content.offsetTop;e>0&&(this.DOMlist.scrollTop-=e);var f=this._selOption.data();c&&(this.setComboText(f[1]),this._confirmSelection(f[0],
+!1),this._autoxml&&a+1==this._lastLength&&this._fetchOptions(a+1,this._lasttext||""));if(b){var g=this.getComboText();g!=f[1]&&(this.setComboText(f[1]),dhtmlXRange(this.DOMelem_input,g.length+1,f[1].length))}else this.setComboText(f[1]);this._selOption.RedrawHeader(this);this.callEvent("onSelectionChange",[])}};
+dhtmlXCombo.prototype._selectOption=function(a){(a||event).cancelBubble=!0;for(var b=_isIE?event.srcElement:a.target,c=this.combo;!b._self;)if(b=b.parentNode,!b)return;for(var d=0;d<c.DOMlist.childNodes.length;d++)if(c.DOMlist.childNodes[d]==b)break;c.selectOption(d,!1,!0);c.closeAll();c.callEvent("onBlur",[]);c._activeMode=!1};
+dhtmlXCombo.prototype.openSelect=function(){if(!this._disabled){this.closeAll();this._positList();this.DOMlist.style.display="block";this.callEvent("onOpen",[]);this._tempSel&&this._tempSel.deselect();this._selOption&&this._selOption.select();if(this._selOption){var a=this._selOption.content.offsetTop+this._selOption.content.offsetHeight-this.DOMlist.scrollTop-this.DOMlist.offsetHeight;a>0&&(this.DOMlist.scrollTop+=a);a=this.DOMlist.scrollTop-this._selOption.content.offsetTop;a>0&&(this.DOMlist.scrollTop-=
+a)}_isIE&&this._IEFix(!0);this.DOMelem_input.focus();this._filter&&this.filterSelf()}};dhtmlXCombo.prototype._toggleSelect=function(a){var b=this.combo;b.DOMlist.style.display=="block"?b.closeAll():b.openSelect();(a||event).cancelBubble=!0};
+dhtmlXCombo.prototype._fetchOptions=function(a,b){if(b=="")return this.closeAll(),this.clearAll();var c=this._xml+(this._xml.indexOf("?")!=-1?"&":"?")+"pos="+a+"&mask="+encodeURIComponent(b);this._lasttext=b;this._load?this._load=c:this.callEvent("onDynXLS",[b,a])&&this.loadXML(c)};
+dhtmlXCombo.prototype.filterSelf=function(a){var b=this.getComboText();if(this._xml)this._lkmode=a,this._fetchOptions(0,b);var c=RegExp("^"+b.replace(/([\[\]\{\}\(\)\+\*\\\?\.])/g,"\\$1"),"i");this.filterAny=!1;for(var d=0;d<this.optionsArr.length;d++){var e=c.test(this.optionsArr[d].content?this.optionsArr[d].data()[1]:this.optionsArr[d].text);this.filterAny|=e;this.optionsArr[d].hide(!e)}this.filterAny?(this.DOMlist.style.display!="block"&&this.openSelect(),_isIE&&this._IEFix(!0)):(this.closeAll(),
+this._activeMode=!0);a?this.unSelectOption():this._correctSelection()};dhtmlXCombo.prototype._IEFix=function(a){this.DOMlistF.style.display=a?"block":"none";this.DOMlistF.style.top=this.DOMlist.style.top;this.DOMlistF.style.left=this.DOMlist.style.left};
+dhtmlXCombo.prototype.closeAll=function(){if(window.dhx_glbSelectAr)for(var a=0;a<dhx_glbSelectAr.length;a++){if(dhx_glbSelectAr[a].DOMlist.style.display=="block")dhx_glbSelectAr[a].DOMlist.style.display="none",_isIE&&dhx_glbSelectAr[a]._IEFix(!1);dhx_glbSelectAr[a]._activeMode=!1}};
+function dhtmlXRange(a,b,c){var d=typeof a=="object"?a:document.getElementById(a);try{d.focus()}catch(e){}var f=d.value.length;b--;if(b<0||b>c||b>f)b=0;c>f&&(c=f);if(b!=c)if(d.setSelectionRange)d.setSelectionRange(b,c);else if(d.createTextRange){var g=d.createTextRange();g.moveStart("character",b);g.moveEnd("character",c-f);try{g.select()}catch(h){}}}dhtmlXCombo_defaultOption=function(){this.init()};
+dhtmlXCombo_defaultOption.prototype.init=function(){this.value=null;this.text="";this.selected=!1;this.css=""};dhtmlXCombo_defaultOption.prototype.select=function(){if(this.content)this.content.className="dhx_selected_option"+(dhtmlx.skin?" combo_"+dhtmlx.skin+"_sel":"")};dhtmlXCombo_defaultOption.prototype.hide=function(a){this.render().style.display=a?"none":""};dhtmlXCombo_defaultOption.prototype.isHidden=function(){return this.render().style.display=="none"};
+dhtmlXCombo_defaultOption.prototype.deselect=function(){this.content&&this.render();this.content.className=""};dhtmlXCombo_defaultOption.prototype.setValue=function(a){this.value=a.value||"";this.text=a.text||"";this.css=a.css||"";this.content=null};
+dhtmlXCombo_defaultOption.prototype.render=function(){if(!this.content){this.content=document.createElement("DIV");this.content._self=this;this.content.style.cssText="width:100%; overflow:hidden;"+this.css;if(_isOpera||_isKHTML)this.content.style.padding="2px 0px 2px 0px";this.content.innerHTML=this.text;this._ctext=_isIE?this.content.innerText:this.content.textContent}return this.content};
+dhtmlXCombo_defaultOption.prototype.data=function(){if(this.content)return[this.value,this._ctext?this._ctext:this.text]};dhtmlXCombo_defaultOption.prototype.DrawHeader=function(a,b,c,d){var e=document.createElement("DIV");e.style.width=c+"px";e.className="dhx_combo_box "+(dhtmlx.skin||"");e._self=a;a.DOMelem=e;this._DrawHeaderInput(a,b,c,d);this._DrawHeaderButton(a,b,c);a.DOMParent.appendChild(a.DOMelem)};
+dhtmlXCombo_defaultOption.prototype._DrawHeaderInput=function(a,b,c,d){var e=document.createElement("input");e.setAttribute("autocomplete","off");e.type="text";e.className="dhx_combo_input";if(d)e.tabIndex=d;e.style.width=c-19-(document.compatMode=="BackCompat"?0:3)+"px";a.DOMelem.appendChild(e);a.DOMelem_input=e;e=document.createElement("input");e.type="hidden";e.name=b;a.DOMelem.appendChild(e);a.DOMelem_hidden_input=e;e=document.createElement("input");e.type="hidden";e.name=(b||"").replace(/(\]?)$/,
+"_new_value$1");e.value="true";a.DOMelem.appendChild(e);a.DOMelem_hidden_input2=e};dhtmlXCombo_defaultOption.prototype._DrawHeaderButton=function(a){var b=document.createElement("img");b.className="dhx_combo_img";if(dhtmlx.image_path)dhx_globalImgPath=dhtmlx.image_path;b.src=(window.dhx_globalImgPath?dhx_globalImgPath:"")+"combo_select"+(dhtmlx.skin?"_"+dhtmlx.skin:"")+".gif";a.DOMelem.appendChild(b);a.DOMelem_button=b};dhtmlXCombo_defaultOption.prototype.RedrawHeader=function(){};
+dhtmlXCombo_optionTypes["default"]=dhtmlXCombo_defaultOption;
+dhtmlXCombo.prototype.dhx_Event=function(){this.dhx_SeverCatcherPath="";this.attachEvent=function(a,b,c){c=c||this;a="ev_"+a;if(!this[a]||!this[a].addEvent){var d=new this.eventCatcher(c);d.addEvent(this[a]);this[a]=d}return a+":"+this[a].addEvent(b)};this.callEvent=function(a,b){return this["ev_"+a]?this["ev_"+a].apply(this,b):!0};this.checkEvent=function(a){return this["ev_"+a]?!0:!1};this.eventCatcher=function(a){var b=[],c=a,d=function(a,b){var a=a.split(":"),c="",d="",e=a[1];a[1]=="rpc"&&(c=
+'<?xml version="1.0"?><methodCall><methodName>'+a[2]+"</methodName><params>",d="</params></methodCall>",e=b);var k=function(){};return k},e=function(){if(b)var a=!0;for(var d=0;d<b.length;d++)if(b[d]!=null)var e=b[d].apply(c,arguments),a=a&&e;return a};e.addEvent=function(a){typeof a!="function"&&(a=a&&a.indexOf&&a.indexOf("server:")==0?new d(a,c.rpcServer):eval(a));return a?b.push(a)-1:!1};e.removeEvent=function(a){b[a]=null};return e};this.detachEvent=function(a){if(a!=!1){var b=a.split(":");this[b[0]].removeEvent(b[1])}}};
+(function(){dhtmlx.extend_api("dhtmlXCombo",{_init:function(a){if(a.image_path)dhx_globalImgPath=a.image_path;return[a.parent,a.name,a.width||"100%",a.type,a.index]},filter:"filter_command",auto_height:"enableOptionAutoHeight",auto_position:"enableOptionAutoPositioning",auto_width:"enableOptionAutoWidth",xml:"loadXML",readonly:"readonly",items:"addOption"},{filter_command:function(a){typeof a=="string"?this.enableFilteringMode(!0,a):this.enableFilteringMode(a)}})})();dhtmlXCombo_imageOption=function(){this.init()};
+dhtmlXCombo_imageOption.prototype=new dhtmlXCombo_defaultOption;dhtmlXCombo_imageOption.prototype.setValue=function(a){this.value=a.value||"";this.text=a.text||"";this.css=a.css||"";this.img_src=a.img_src||this.getDefImage()};
+dhtmlXCombo_imageOption.prototype.render=function(){if(!this.content){this.content=document.createElement("DIV");this.content._self=this;this.content.style.cssText="width:100%; overflow:hidden; "+this.css;var a="";this.img_src!=""&&(a+='<img style="float:left;" src="'+this.img_src+'" />');a+='<div style="float:left">'+this.text+"</div>";this.content.innerHTML=a}return this.content};dhtmlXCombo_imageOption.prototype.data=function(){return[this.value,this.text,this.img_src]};
+dhtmlXCombo_imageOption.prototype.DrawHeader=function(a,b,c){var d=document.createElement("DIV");d.style.width=c+"px";d.className="dhx_combo_box";d._self=a;a.DOMelem=d;this._DrawHeaderImage(a,b,c);this._DrawHeaderInput(a,b,c-19);this._DrawHeaderButton(a,b,c);a.DOMParent.appendChild(a.DOMelem)};dhtmlXCombo_imageOption.prototype._DrawHeaderImage=function(a){var b=document.createElement("img");b.className="dhx_combo_option_img";b.style.visibility="hidden";a.DOMelem.appendChild(b);a.DOMelem_image=b};
+dhtmlXCombo_imageOption.prototype.RedrawHeader=function(a){a.DOMelem_image.style.visibility="visible";a.DOMelem_image.src=this.img_src};dhtmlXCombo_imageOption.prototype.getDefImage=function(){return""};dhtmlXCombo.prototype.setDefaultImage=function(a){dhtmlXCombo_imageOption.prototype.getDefImage=function(){return a}};dhtmlXCombo_optionTypes.image=dhtmlXCombo_imageOption;dhtmlXCombo_checkboxOption=function(){this.init()};dhtmlXCombo_checkboxOption.prototype=new dhtmlXCombo_defaultOption;
+dhtmlXCombo_checkboxOption.prototype.setValue=function(a){this.value=a.value||"";this.text=a.text||"";this.css=a.css||"";this.checked=a.checked||0};
+dhtmlXCombo_checkboxOption.prototype.render=function(){if(!this.content){this.content=document.createElement("DIV");this.content._self=this;this.content.style.cssText="width:100%; overflow:hidden; "+this.css;var a="";a+=this.checked?'<input style="float:left;" type="checkbox" checked />':'<input style="float:left;" type="checkbox" />';a+='<div style="float:left">'+this.text+"</div>";this.content.innerHTML=a;this.content.firstChild.onclick=function(a){this.parentNode.parentNode.combo.DOMelem_input.focus();
+(a||event).cancelBubble=!0;if(!this.parentNode.parentNode.combo.callEvent("onCheck",[this.parentNode._self.value,this.checked]))return this.checked=!this.checked,!1}}return this.content};dhtmlXCombo_checkboxOption.prototype.data=function(){return[this.value,this.text,this.render().firstChild.checked]};
+dhtmlXCombo_checkboxOption.prototype.DrawHeader=function(a,b,c){a.DOMelem=document.createElement("DIV");a.DOMelem.style.width=c+"px";a.DOMelem.className="dhx_combo_box";a.DOMelem._self=a;this._DrawHeaderCheckbox(a,b,c);this._DrawHeaderInput(a,b,c-19);this._DrawHeaderButton(a,b,c);a.DOMParent.appendChild(a.DOMelem)};
+dhtmlXCombo_checkboxOption.prototype._DrawHeaderCheckbox=function(a){var b=document.createElement("input");b.type="checkbox";b.className="dhx_combo_option_img";b.style.visibility="hidden";b.onclick=function(c){var d=a.getIndexByValue(a.getActualValue());d!=-1&&a.setChecked(d,b.checked);(c||event).cancelBubble=!0};a.DOMelem.appendChild(b);a.DOMelem_checkbox=b};dhtmlXCombo_checkboxOption.prototype.RedrawHeader=function(a){a.DOMelem_checkbox.style.visibility="";a.DOMelem_checkbox.checked=this.content.firstChild.checked};
+dhtmlXCombo_optionTypes.checkbox=dhtmlXCombo_checkboxOption;dhtmlXCombo.prototype.getChecked=function(){for(var a=[],b=0;b<this.optionsArr.length;b++)this.optionsArr[b].data()[2]&&a.push(this.optionsArr[b].value);return a};dhtmlXCombo.prototype.setChecked=function(a,b){this.optionsArr[a].content.firstChild.checked=b!==!1};dhtmlXCombo.prototype.setCheckedByValue=function(a,b){return this.setChecked(this.getIndexByValue(a),b)};
+dhtmlXCombo.prototype.enableOptionAutoPositioning=function(a){if(!this.ListAutoPosit)this.ListAutoPosit=1;this.attachEvent("onOpen",function(){this._setOptionAutoPositioning(a)});this.attachEvent("onXLE",function(){this._setOptionAutoPositioning(a)})};
+dhtmlXCombo.prototype._setOptionAutoPositioning=function(a){if(typeof a!="undefined"&&!convertStringToBoolean(a))return this.ListPosition="Bottom",this.ListAutoPosit=0,!0;var b=this.getPosition(this.DOMelem),c=this._getClientHeight()-b[1]-this.DOMelem.offsetHeight,d=this.autoHeight?this.DOMlist.scrollHeight:parseInt(this.DOMlist.offsetHeight);this.ListPosition=c<d&&b[1]>d?"Top":"Bottom";this._positList()};
+dhtmlXCombo.prototype._getClientHeight=function(){return document.compatMode=="CSS1Compat"&&!window.opera?document.documentElement.clientHeight:document.body.clientHeight};dhtmlXCombo.prototype.setOptionWidth=function(a){if(arguments.length>0&&(this.DOMlist.style.width=a+"px",this.DOMlistF))this.DOMlistF.style.width=a+"px"};
+dhtmlXCombo.prototype.setOptionHeight=function(a){if(arguments.length>0){this.DOMlist.style.height=_isIE?this.DOMlistF.style.height=a+"px":a+"px";if(this.DOMlistF)this.DOMlistF.style.height=this.DOMlist.style.height;this._positList()}};
+dhtmlXCombo.prototype.enableOptionAutoWidth=function(a){if(!this._listWidthConf)this._listWidthConf=this.DOMlist.offsetWidth;arguments.length==0&&(a=1);if(convertStringToBoolean(a))this.autoOptionWidth=1,this.awOnOpen=this.attachEvent("onOpen",function(){this._setOptionAutoWidth()}),this.awOnXLE=this.attachEvent("onXLE",function(){this._setOptionAutoWidth()});else if(typeof this.awOnOpen!="undefined")this.autoOptionWidth=0,this.detachEvent(this.awOnOpen),this.detachEvent(this.awOnXLE),this.setOptionWidth(this._listWidthConf)};
+dhtmlXCombo.prototype._setOptionAutoWidth=function(){var a=!this.ahOnOpen&&this.DOMlist.scrollHeight>this.DOMlist.offsetHeight;this.setOptionWidth(1);for(var b=this.DOMlist.offsetWidth,c=0;c<this.optionsArr.length;c++){var d=_isFF?this.DOMlist.childNodes[c].scrollWidth-2:this.DOMlist.childNodes[c].scrollWidth;if(d>b)b=this.DOMlist.childNodes[c].scrollWidth}b+=a?18:0;this.setOptionWidth(this.DOMelem.offsetWidth>b?this.DOMelem.offsetWidth:b+2)};
+dhtmlXCombo.prototype.enableOptionAutoHeight=function(a,b){if(!this._listHeightConf)this._listHeightConf=this.DOMlist.style.height==""?100:parseInt(this.DOMlist.style.height);arguments.length==0&&(a=1);if(this.autoHeight=convertStringToBoolean(a)){if(this.ahOnOpen=this.attachEvent("onOpen",function(){this._setOptionAutoHeight(a,b);_isIE&&this._setOptionAutoHeight(a,b)}),!this.awOnOpen)this.ahOnXLE=this.attachEvent("onXLE",function(){var a=this;window.setTimeout(function(){a.callEvent("onOpen",[])},
+1)})}else typeof this.ahOnOpen!="undefined"&&(this.detachEvent(this.ahOnOpen),this.detachEvent(this.ahOnXLE),this.setOptionHeight(this._listHeightConf))};
+dhtmlXCombo.prototype._setOptionAutoHeight=function(a,b){if(convertStringToBoolean(a)){this.setOptionHeight(1);var c=0;this.optionsArr.length>0?(c=this.DOMlist.scrollHeight>this.DOMlist.offsetHeight?this.DOMlist.scrollHeight+2:this.DOMlist.offsetHeight,arguments.length>1&&b&&(b=parseInt(b),c=c>b?b:c),this.setOptionHeight(c)):this.DOMlist.style.display="none"}};
+dhtmlXCombo.prototype.attachChildCombo=function(a,b){if(!this._child_combos)this._child_combos=[];this._has_childen=1;this._child_combos[this._child_combos.length]=a;a.show(0);var c=this,d=arguments.length;this.attachEvent("onChange",function(){for(var e=0;e<c._child_combos.length;e++)c._child_combos[e]==a&&(a.show(1),a.callEvent("onMasterChange",[c.getActualValue(),c]));if(c.getActualValue()=="")c.showSubCombo(c,0);else if(a._xml){if(d==1)b=a._xml;a._xml=c.deleteParentVariable(b);a._xml+=(a._xml.indexOf("?")!=
+-1?"&":"?")+"parent="+encodeURIComponent(c.getActualValue())}else b&&(a.clearAll(!0),a.loadXML(b+(b.indexOf("?")!=-1?"&":"?")+"parent="+encodeURIComponent(c.getActualValue())))})};
+dhtmlXCombo.prototype.setAutoSubCombo=function(a,b){arguments.length==1&&(b="subcombo");if(this._parentCombo)c=new dhtmlXCombo(this._parentCombo.DOMParent,b,this._parentCombo.DOMelem.style.width),c._parentCombo=this._parentCombo;else{var c=new dhtmlXCombo(this.DOMParent,b,this.DOMelem.style.width);c._parentCombo=this}if(this._filter)c._filter=1;if(this._xml&&(c._xml=arguments.length>0?a:this._xml,a=c._xml,c._autoxml=this._autoxml,this._xmlCache))c._xmlCache=[];this.attachChildCombo(c,a);return c};
+dhtmlXCombo.prototype.detachChildCombo=function(a){for(var b=0;b<this._child_combos.length;b++)this._child_combos.splice(b,1);a.show(1)};dhtmlXCombo.prototype.showSubCombo=function(a,b){if(a._child_combos)for(var c=0;c<a._child_combos.length;c++)a._child_combos[c].show(b),a.showSubCombo(a._child_combos[c],0)};dhtmlXCombo.prototype.deleteParentVariable=function(a){return a=a.replace(/parent\=[^&]*/g,"").replace(/\?\&/,"?")};window.dhtmlx||(dhtmlx={});dhtmlx.version="3.0";dhtmlx.codebase="./";
+dhtmlx.extend=function(a,b){for(var c in b)a[c]=b[c];b._init&&a._init();return a};
+dhtmlx.proto_extend=function(){for(var a=arguments,b=a[0],c=[],d=a.length-1;d>0;d--){if(typeof a[d]=="function")a[d]=a[d].prototype;for(var e in a[d])e=="_init"?c.push(a[d][e]):b[e]||(b[e]=a[d][e])}a[0]._init&&c.push(a[0]._init);b._init=function(){for(var a=0;a<c.length;a++)c[a].apply(this,arguments)};b.base=a[1];var f=function(a){this._init(a);this._parseSettings&&this._parseSettings(a,this.defaults)};f.prototype=b;b=a=null;return f};dhtmlx.bind=function(a,b){return function(){return a.apply(b,arguments)}};
+dhtmlx.require=function(a){dhtmlx._modules[a]||(dhtmlx.exec(dhtmlx.ajax().sync().get(dhtmlx.codebase+a).responseText),dhtmlx._modules[a]=!0)};dhtmlx._modules={};dhtmlx.exec=function(a){window.execScript?window.execScript(a):window.eval(a)};dhtmlx.methodPush=function(a,b){return function(){var c=!1;return c=a[b].apply(a,arguments)}};dhtmlx.isNotDefined=function(a){return typeof a=="undefined"};dhtmlx.delay=function(a,b,c,d){setTimeout(function(){var d=a.apply(b,c);a=b=c=null;return d},d||1)};
+dhtmlx.uid=function(){if(!this._seed)this._seed=(new Date).valueOf();this._seed++;return this._seed};dhtmlx.toNode=function(a){return typeof a=="string"?document.getElementById(a):a};dhtmlx.toArray=function(a){return dhtmlx.extend(a||[],dhtmlx.PowerArray)};dhtmlx.toFunctor=function(a){return typeof a=="string"?eval(a):a};dhtmlx._events={};
+dhtmlx.event=function(a,b,c,d){var a=dhtmlx.toNode(a),e=dhtmlx.uid();dhtmlx._events[e]=[a,b,c];d&&(c=dhtmlx.bind(c,d));a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c);return e};dhtmlx.eventRemove=function(a){if(a){var b=dhtmlx._events[a];b[0].removeEventListener?b[0].removeEventListener(b[1],b[2],!1):b[0].detachEvent&&b[0].detachEvent("on"+b[1],b[2]);delete this._events[a]}};
+dhtmlx.EventSystem={_init:function(){this._events={};this._handlers={};this._map={}},block:function(){this._events._block=!0},unblock:function(){this._events._block=!1},mapEvent:function(a){dhtmlx.extend(this._map,a)},callEvent:function(a,b){if(this._events._block)return!0;var a=a.toLowerCase(),c=this._events[a.toLowerCase()],d=!0;if(c)for(var e=0;e<c.length;e++)if(c[e].apply(this,b||[])===!1)d=!1;this._map[a]&&!this._map[a].callEvent(a,b)&&(d=!1);return d},attachEvent:function(a,b,c){var a=a.toLowerCase(),
+c=c||dhtmlx.uid(),b=dhtmlx.toFunctor(b),d=this._events[a]||dhtmlx.toArray();d.push(b);this._events[a]=d;this._handlers[c]={f:b,t:a};return c},detachEvent:function(a){if(this._handlers[a]){var b=this._handlers[a].t,c=this._handlers[a].f,d=this._events[b];d.remove(c);delete this._handlers[a]}}};
+dhtmlx.PowerArray={removeAt:function(a,b){a>=0&&this.splice(a,b||1)},remove:function(a){this.removeAt(this.find(a))},insertAt:function(a,b){if(!b&&b!==0)this.push(a);else{var c=this.splice(b,this.length-b);this[b]=a;this.push.apply(this,c)}},find:function(a){for(i=0;i<this.length;i++)if(a==this[i])return i;return-1},each:function(a,b){for(var c=0;c<this.length;c++)a.call(b||this,this[c])},map:function(a,b){for(var c=0;c<this.length;c++)this[c]=a.call(b||this,this[c]);return this}};dhtmlx.env={};
+if(navigator.userAgent.indexOf("Opera")!=-1)dhtmlx._isOpera=!0;else{dhtmlx._isIE=!!document.all;dhtmlx._isFF=!document.all;dhtmlx._isWebKit=navigator.userAgent.indexOf("KHTML")!=-1;if(navigator.appVersion.indexOf("MSIE 8.0")!=-1&&document.compatMode!="BackCompat")dhtmlx._isIE=8;if(navigator.appVersion.indexOf("MSIE 9.0")!=-1&&document.compatMode!="BackCompat")dhtmlx._isIE=8}dhtmlx.env={};
+(function(){dhtmlx.env.transform=!1;dhtmlx.env.transition=!1;for(var a={names:["transform","transition"],transform:["transform","WebkitTransform","MozTransform","oTransform"],transition:["transition","WebkitTransition","MozTransition","oTransition"]},b=document.createElement("DIV"),c,d=0;d<a.names.length;d++)for(;p=a[a.names[d]].pop();)typeof b.style[p]!="undefined"&&(dhtmlx.env[a.names[d]]=!0)})();
+dhtmlx.env.transform_prefix=function(){var a;dhtmlx._isOpera?a="-o-":(a="",dhtmlx._isFF&&(a="-moz-"),dhtmlx._isWebKit&&(a="-webkit-"));return a}();dhtmlx.env.svg=function(){return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")}();dhtmlx.zIndex={drag:1E4};
+dhtmlx.html={create:function(a,b,c){var b=b||{},d=document.createElement(a),e;for(e in b)d.setAttribute(e,b[e]);if(b.style)d.style.cssText=b.style;if(b["class"])d.className=b["class"];if(c)d.innerHTML=c;return d},getValue:function(a){a=dhtmlx.toNode(a);return!a?"":dhtmlx.isNotDefined(a.value)?a.innerHTML:a.value},remove:function(a){if(a instanceof Array)for(var b=0;b<a.length;b++)this.remove(a[b]);else a&&a.parentNode&&a.parentNode.removeChild(a)},insertBefore:function(a,b,c){a&&(b?b.parentNode.insertBefore(a,
+b):c.appendChild(a))},locate:function(a,b){for(var a=a||event,c=a.target||a.srcElement;c;){if(c.getAttribute){var d=c.getAttribute(b);if(d)return d}c=c.parentNode}return null},offset:function(a){if(a.getBoundingClientRect){var b=a.getBoundingClientRect(),c=document.body,d=document.documentElement,e=window.pageYOffset||d.scrollTop||c.scrollTop,f=window.pageXOffset||d.scrollLeft||c.scrollLeft,g=d.clientTop||c.clientTop||0,h=d.clientLeft||c.clientLeft||0,i=b.top+e-g,j=b.left+f-h;return{y:Math.round(i),
+x:Math.round(j)}}else{for(j=i=0;a;)i+=parseInt(a.offsetTop,10),j+=parseInt(a.offsetLeft,10),a=a.offsetParent;return{y:i,x:j}}},pos:function(a){a=a||event;if(a.pageX||a.pageY)return{x:a.pageX,y:a.pageY};var b=dhtmlx._isIE&&document.compatMode!="BackCompat"?document.documentElement:document.body;return{x:a.clientX+b.scrollLeft-b.clientLeft,y:a.clientY+b.scrollTop-b.clientTop}},preventEvent:function(a){a&&a.preventDefault&&a.preventDefault();dhtmlx.html.stopEvent(a)},stopEvent:function(a){(a||event).cancelBubble=
+!0;return!1},addCss:function(a,b){a.className+=" "+b},removeCss:function(a,b){a.className=a.className.replace(RegExp(b,"g"),"")}};(function(){var a=document.getElementsByTagName("SCRIPT");if(a.length)a=(a[a.length-1].getAttribute("src")||"").split("/"),a.splice(a.length-1,1),dhtmlx.codebase=a.slice(0,a.length).join("/")+"/"})();dhtmlx.ui={};
+dhtmlx.Template={_cache:{},empty:function(){return""},setter:function(a){return dhtmlx.Template.fromHTML(a)},obj_setter:function(a){var b=dhtmlx.Template.setter(a),c=this;return function(){return b.apply(c,arguments)}},fromHTML:function(a){if(typeof a=="function")return a;if(this._cache[a])return this._cache[a];a=(a||"").toString();a=a.replace(/[\r\n]+/g,"\\n");a=a.replace(/\{obj\.([^}?]+)\?([^:]*):([^}]*)\}/g,'"+(obj.$1?"$2":"$3")+"');a=a.replace(/\{common\.([^}\(]*)\}/g,'"+common.$1+"');a=a.replace(/\{common\.([^\}\(]*)\(\)\}/g,
+'"+(common.$1?common.$1(obj):"")+"');a=a.replace(/\{obj\.([^}]*)\}/g,'"+obj.$1+"');a=a.replace(/#([a-z0-9_]+)#/gi,'"+obj.$1+"');a=a.replace(/\{obj\}/g,'"+obj+"');a=a.replace(/\{-obj/g,"{obj");a=a.replace(/\{-common/g,"{common");a='return "'+a+'";';return this._cache[a]=Function("obj","common",a)}};
+dhtmlx.Type={add:function(a,b){if(!a.types&&a.prototype.types)a=a.prototype;var c=b.name||"default";this._template(b);this._template(b,"edit");this._template(b,"loading");a.types[c]=dhtmlx.extend(dhtmlx.extend({},a.types[c]||this._default),b);return c},_default:{css:"default",template:function(){return""},template_edit:function(){return""},template_loading:function(){return"..."},width:150,height:80,margin:5,padding:0},_template:function(a,b){var b="template"+(b?"_"+b:""),c=a[b];if(c&&typeof c=="string"){if(c.indexOf("->")!=
+-1)switch(c=c.split("->"),c[0]){case "html":c=dhtmlx.html.getValue(c[1]).replace(/\"/g,'\\"');break;case "http":c=(new dhtmlx.ajax).sync().get(c[1],{uid:(new Date).valueOf()}).responseText}a[b]=dhtmlx.Template.fromHTML(c)}}};
+dhtmlx.Settings={_init:function(){this._settings=this.config={}},define:function(a,b){return typeof a=="object"?this._parseSeetingColl(a):this._define(a,b)},_define:function(a,b){var c=this[a+"_setter"];return this._settings[a]=c?c.call(this,b):b},_parseSeetingColl:function(a){if(a)for(var b in a)this._define(b,a[b])},_parseSettings:function(a,b){var c=dhtmlx.extend({},b);typeof a=="object"&&!a.tagName&&dhtmlx.extend(c,a);this._parseSeetingColl(c)},_mergeSettings:function(a,b){for(var c in b)switch(typeof a[c]){case "object":a[c]=
+this._mergeSettings(a[c]||{},b[c]);break;case "undefined":a[c]=b[c]}return a},_parseContainer:function(a,b,c){if(typeof a=="object"&&!a.tagName)a=a.container;this._obj=dhtmlx.toNode(a);if(!this._obj&&c)this._obj=c(a);this._obj.className+=" "+b;this._obj.onselectstart=function(){return!1};this._dataobj=this._obj},_set_type:function(a){if(typeof a=="object")return this.type_setter(a);this.type=dhtmlx.extend({},this.types[a]);this.customize()},customize:function(a){a&&dhtmlx.extend(this.type,a);this.type._item_start=
+dhtmlx.Template.fromHTML(this.template_item_start(this.type));this.type._item_end=this.template_item_end(this.type);this.render()},type_setter:function(a){this._set_type(typeof a=="object"?dhtmlx.Type.add(this,a):a);return a},template_setter:function(a){return this.type_setter({template:a})},css_setter:function(a){this._obj.className+=" "+a;return a}};
+dhtmlx.Destruction={_init:function(){dhtmlx.destructors.push(this)},destructor:function(){this.destructor=function(){};this._htmlrows=this._htmlmap=null;this._html&&document.body.appendChild(this._html);this._html=null;if(this._obj)this._obj.innerHTML="",this._obj._htmlmap=null;this.data=this._obj=this._dataobj=null;this._events=this._handlers={}}};dhtmlx.destructors=[];
+dhtmlx.event(window,"unload",function(){for(var a=0;a<dhtmlx.destructors.length;a++)dhtmlx.destructors[a].destructor();dhtmlx.destructors=[];for(var b in dhtmlx._events){var c=dhtmlx._events[b];c[0].removeEventListener?c[0].removeEventListener(c[1],c[2],!1):c[0].detachEvent&&c[0].detachEvent("on"+c[1],c[2]);delete dhtmlx._events[b]}});
+dhtmlx.ui.pager=function(a){this.name="Pager";dhtmlx.extend(this,dhtmlx.Settings);this._parseContainer(a,"dhx_pager");dhtmlx.extend(this,dhtmlx.EventSystem);dhtmlx.extend(this,dhtmlx.SingleRender);dhtmlx.extend(this,dhtmlx.MouseEvents);this._parseSettings(a,{size:10,page:-1,group:5,count:0,type:"default"});this.data=this._settings;this.refresh()};
+dhtmlx.ui.pager.prototype={_id:"dhx_p_id",on_click:{dhx_pager_item:function(a,b){this.select(b)}},select:function(a){switch(a){case "next":a=this._settings.page+1;break;case "prev":a=this._settings.page-1;break;case "first":a=0;break;case "last":a=this._settings.limit-1}a<0&&(a=0);a>=this.data.limit&&(a=this.data.limit-1);if(this.callEvent("onBeforePageChange",[this._settings.page,a]))this.data.page=a*1,this.refresh(),this.callEvent("onAfterPageChange",[a])},types:{"default":{template:dhtmlx.Template.fromHTML("{common.pages()}"),
+pages:function(a){var b="";if(a.page==-1)return"";a.min=a.page-Math.round((a.group-1)/2);a.max=a.min+a.group-1;if(a.min<0)a.max+=a.min*-1,a.min=0;if(a.max>=a.limit)a.min-=Math.min(a.min,a.max-a.limit+1),a.max=a.limit-1;for(var c=a.min||0;c<=a.max;c++)b+=this.button({id:c,index:c+1,selected:c==a.page?"_selected":""});return b},page:function(a){return a.page+1},first:function(){return this.button({id:"first",index:" &lt;&lt; ",selected:""})},last:function(){return this.button({id:"last",index:" &gt;&gt; ",
+selected:""})},prev:function(){return this.button({id:"prev",index:"&lt;",selected:""})},next:function(){return this.button({id:"next",index:"&gt;",selected:""})},button:dhtmlx.Template.fromHTML("<div dhx_p_id='{obj.id}' class='dhx_pager_item{obj.selected}'>{obj.index}</div>")}},refresh:function(){var a=this._settings;a.limit=Math.ceil(a.count/a.size);if(a.limit&&a.limit!=a.old_limit)a.page=Math.min(a.limit-1,a.page);var b=a.page;if(b!=-1&&b!=a.old_page||a.limit!=a.old_limit)this.render(),this.callEvent("onRefresh",
+[]),a.old_limit=a.limit,a.old_page=a.page},template_item_start:dhtmlx.Template.fromHTML("<div>"),template_item_end:dhtmlx.Template.fromHTML("</div>")};dhtmlx.SingleRender={_init:function(){},_toHTML:function(a){return this.type._item_start(a,this.type)+this.type.template(a,this.type)+this.type._item_end},render:function(){if(!this.callEvent||this.callEvent("onBeforeRender",[this.data])){if(this.data)this._dataobj.innerHTML=this._toHTML(this.data);this.callEvent&&this.callEvent("onAfterRender",[])}}};
+dhtmlx.ui.Tooltip=function(a){this.name="Tooltip";this.version="3.0";typeof a=="string"&&(a={template:a});dhtmlx.extend(this,dhtmlx.Settings);dhtmlx.extend(this,dhtmlx.SingleRender);this._parseSettings(a,{type:"default",dy:0,dx:20});this._dataobj=this._obj=document.createElement("DIV");this._obj.className="dhx_tooltip";dhtmlx.html.insertBefore(this._obj,document.body.firstChild)};
+dhtmlx.ui.Tooltip.prototype={show:function(a,b){if(!this._disabled){if(this.data!=a)this.data=a,this.render(a);this._obj.style.top=b.y+this._settings.dy+"px";this._obj.style.left=b.x+this._settings.dx+"px";this._obj.style.display="block"}},hide:function(){this.data=null;this._obj.style.display="none"},disable:function(){this._disabled=!0},enable:function(){this._disabled=!1},types:{"default":dhtmlx.Template.fromHTML("{obj.id}")},template_item_start:dhtmlx.Template.empty,template_item_end:dhtmlx.Template.empty};
+dhtmlx.AutoTooltip={tooltip_setter:function(a){var b=new dhtmlx.ui.Tooltip(a);this.attachEvent("onMouseMove",function(a,d){b.show(this.get(a),dhtmlx.html.pos(d))});this.attachEvent("onMouseOut",function(){b.hide()});this.attachEvent("onMouseMoving",function(){b.hide()});return b}};dhtmlx.compat=function(a,b){if(dhtmlx.compat[a])dhtmlx.compat[a](b)};
+(function(){if(!window.dhtmlxError){var a=function(){};window.dhtmlxError={catchError:a,throwError:a};window.convertStringToBoolean=function(a){return!!a};window.dhtmlxEventable=function(a){dhtmlx.extend(a,dhtmlx.EventSystem)};var b={getXMLTopNode:function(){},doXPath:function(a){return dhtmlx.DataDriver.xml.xpath(this.xml,a)},xmlDoc:{responseXML:!0}};dhtmlx.compat.dataProcessor=function(a){var d="_sendData",e="_in_progress",f="_tMode",g="_waitMode";a[d]=function(a,c){if(a){c&&(this[e][c]=(new Date).valueOf());
+if(!this.callEvent("onBeforeDataSending",c?[c,this.getState(c)]:[]))return!1;var d=this,k=this.serverProcessor;this[f]!="POST"?dhtmlx.ajax().get(k+(k.indexOf("?")!=-1?"&":"?")+this.serialize(a,c),"",function(a,c){b.xml=dhtmlx.DataDriver.xml.checkResponse(a,c);d.afterUpdate(d,null,null,null,b)}):dhtmlx.ajax().post(k,this.serialize(a,c),function(a,c){b.xml=dhtmlx.DataDriver.xml.checkResponse(a,c);d.afterUpdate(d,null,null,null,b)});this[g]++}}}}})();
+dhtmlx.DataProcessor={_dp_init:function(a){var b="_methods";a[b]=["setItemStyle","","changeId","remove"];this.attachEvent("onAfterAdd",function(b){a.setUpdated(b,!0,"inserted")});this.data.attachEvent("onStoreLoad",dhtmlx.bind(function(a,b){a.getUserData&&a.getUserData(b,this._userdata)},this));this.attachEvent("onBeforeDelete",function(b){var d=a.getState(b);if(d=="inserted")return a.setUpdated(b,!1),!0;if(d=="deleted")return!1;if(d=="true_deleted")return!0;a.setUpdated(b,!0,"deleted");return!1});
+this.attachEvent("onAfterEditStop",function(b){a.setUpdated(b,!0,"updated")});this.attachEvent("onBindUpdate",function(b){window.setTimeout(function(){a.setUpdated(b.id,!0,"updated")},1)});b="_getRowData";a[b]=function(a){var b=this.obj.data.get(a),e={},f;for(f in b)f.indexOf("_")!==0&&(e[f]=b[f]);return e};b="_clearUpdateFlag";a[b]=function(){};this._userdata={};a.attachEvent("insertCallback",this._dp_callback);a.attachEvent("updateCallback",this._dp_callback);a.attachEvent("deleteCallback",function(a,
+b){this.obj.setUserData(b,this.action_param,"true_deleted");this.obj.remove(b)});dhtmlx.compat("dataProcessor",a)},_dp_callback:function(a,b){this.obj.data.set(b,dhtmlx.DataDriver.xml.getDetails(a.firstChild));this.obj.data.refresh(b)},setItemStyle:function(a,b){var c=this._locateHTML(a);c&&(c.style.cssText+=";"+b)},changeId:function(a,b){this.data.changeId(a,b);this.refresh()},setUserData:function(a,b,c){a?this.data.get(a)[b]=c:this._userdata[b]=c},getUserData:function(a,b){return a?this.data.get(a)[b]:
+this._userdata[b]}};(function(){var a="_dp_init";dhtmlx.DataProcessor[a]=dhtmlx.DataProcessor._dp_init})();
+dhtmlx.compat.dnd=function(){if(window.dhtmlDragAndDropObject){var a="_dragged",b=dhtmlDragAndDropObject.prototype.checkLanding;dhtmlDragAndDropObject.prototype.checkLanding=function(a,c,d){b.apply(this,arguments);if(!d){var e=dhtmlx.DragControl._drag_context=dhtmlx.DragControl._drag_context||{};e.from=this.dragStartObject;dhtmlx.DragControl._checkLand(a,c,!0)}};var c=dhtmlDragAndDropObject.prototype.stopDrag;dhtmlDragAndDropObject.prototype.stopDrag=function(a,b,e){if(!e&&dhtmlx.DragControl._last)dhtmlx.DragControl._active=
+d.dragStartNode,dhtmlx.DragControl._stopDrag(a,!0);c.apply(this,arguments)};var d=new dhtmlDragAndDropObject,e=dhtmlx.DragControl._startDrag;dhtmlx.DragControl._startDrag=function(){e.apply(this,arguments);var b=dhtmlx.DragControl._drag_context;if(b){for(var c=[],g=[],f=0;f<b.source.length;f++)c[f]={idd:b.source[f]},g.push(b.source[f]);d.dragStartNode={parentNode:{},parentObject:{idd:c,id:g.length==1?g[0]:g,treeNod:{object:b.from}}};d.dragStartNode.parentObject.treeNod[a]=c;d.dragStartObject=b.from}};
+var f=dhtmlx.DragControl._checkLand;dhtmlx.DragControl._checkLand=function(a,b,c){f.apply(this,arguments);!this._last&&!c&&(a=d.checkLanding(a,b,!0))};var g=dhtmlx.DragControl._stopDrag;dhtmlx.DragControl._stopDrag=function(a,b){g.apply(this,arguments);d.lastLanding&&!b&&d.stopDrag(a,!1,!0)};var h=dhtmlx.DragControl.getMaster;dhtmlx.DragControl.getMaster=function(b){var c=null;b&&(c=h.apply(this,arguments));if(!c){for(var c=d.dragStartObject,e=[],g=c[a],f=0;f<g.length;f++)e.push(g[f].idd||g[f].id);
+dhtmlx.DragControl._drag_context.source=e}return c}}};
+dhtmlx.DataMove={_init:function(){},copy:function(a,b,c,d){var e=this.get(a);if(e)return c&&(e=c.externalData(e)),c=c||this,c.add(c.externalData(e,d),b)},move:function(a,b,c,d){if(a instanceof Array)for(var e=0;e<a.length;e++){var f=(c||this).indexById(this.move(a[e],b,c,dhtmlx.uid()));a[e+1]&&(b=f+(this.indexById(a[e+1])<f?0:1))}else if(nid=a,!(b<0)){var g=this.get(a);if(g)return!c||c==this?this.data.move(this.indexById(a),b):(nid=c.add(c.externalData(g,d),b),this.remove(a)),nid}},moveUp:function(a,
+b){return this.move(a,this.indexById(a)-(b||1))},moveDown:function(a,b){return this.moveUp(a,(b||1)*-1)},moveTop:function(a){return this.move(a,0)},moveBottom:function(a){return this.move(a,this.data.dataCount()-1)},externalData:function(a,b){var c=dhtmlx.extend({},a);c.id=b||dhtmlx.uid();c.$selected=c.$template=null;return c}};
+dhtmlx.DragControl={_drag_masters:dhtmlx.toArray(["dummy"]),addDrop:function(a,b,c){a=dhtmlx.toNode(a);a.dhx_drop=this._getCtrl(b);if(c)a.dhx_master=!0},_getCtrl:function(a){var a=a||dhtmlx.DragControl,b=this._drag_masters.find(a);if(b<0)b=this._drag_masters.length,this._drag_masters.push(a);return b},addDrag:function(a,b){a=dhtmlx.toNode(a);a.dhx_drag=this._getCtrl(b);dhtmlx.event(a,"mousedown",this._preStart,a)},_preStart:function(a){dhtmlx.DragControl._active&&(dhtmlx.DragControl._preStartFalse(),
+dhtmlx.DragControl.destroyDrag());dhtmlx.DragControl._active=this;dhtmlx.DragControl._start_pos={x:a.pageX,y:a.pageY};dhtmlx.DragControl._dhx_drag_mm=dhtmlx.event(document.body,"mousemove",dhtmlx.DragControl._startDrag);dhtmlx.DragControl._dhx_drag_mu=dhtmlx.event(document.body,"mouseup",dhtmlx.DragControl._preStartFalse);dhtmlx.DragControl._dhx_drag_sc=dhtmlx.event(this,"scroll",dhtmlx.DragControl._preStartFalse);a.cancelBubble=!0;return!1},_preStartFalse:function(){dhtmlx.DragControl._dhx_drag_mm=
+dhtmlx.eventRemove(dhtmlx.DragControl._dhx_drag_mm);dhtmlx.DragControl._dhx_drag_mu=dhtmlx.eventRemove(dhtmlx.DragControl._dhx_drag_mu);dhtmlx.DragControl._dhx_drag_sc=dhtmlx.eventRemove(dhtmlx.DragControl._dhx_drag_sc)},_startDrag:function(a){var b={x:a.pageX,y:a.pageY};if(!(Math.abs(b.x-dhtmlx.DragControl._start_pos.x)<5&&Math.abs(b.y-dhtmlx.DragControl._start_pos.y)<5)&&(dhtmlx.DragControl._preStartFalse(),dhtmlx.DragControl.createDrag(a)))dhtmlx.DragControl.sendSignal("start"),dhtmlx.DragControl._dhx_drag_mm=
+dhtmlx.event(document.body,"mousemove",dhtmlx.DragControl._moveDrag),dhtmlx.DragControl._dhx_drag_mu=dhtmlx.event(document.body,"mouseup",dhtmlx.DragControl._stopDrag),dhtmlx.DragControl._moveDrag(a)},_stopDrag:function(a){dhtmlx.DragControl._dhx_drag_mm=dhtmlx.eventRemove(dhtmlx.DragControl._dhx_drag_mm);dhtmlx.DragControl._dhx_drag_mu=dhtmlx.eventRemove(dhtmlx.DragControl._dhx_drag_mu);dhtmlx.DragControl._last&&(dhtmlx.DragControl.onDrop(dhtmlx.DragControl._active,dhtmlx.DragControl._last,this._landing,
+a),dhtmlx.DragControl.onDragOut(dhtmlx.DragControl._active,dhtmlx.DragControl._last,null,a));dhtmlx.DragControl.destroyDrag();dhtmlx.DragControl.sendSignal("stop")},_moveDrag:function(a){var b=dhtmlx.html.pos(a);dhtmlx.DragControl._html.style.top=b.y+dhtmlx.DragControl.top+"px";dhtmlx.DragControl._html.style.left=b.x+dhtmlx.DragControl.left+"px";dhtmlx.DragControl._skip?dhtmlx.DragControl._skip=!1:dhtmlx.DragControl._checkLand(a.srcElement||a.target,a);a.cancelBubble=!0;return!1},_checkLand:function(a,
+b){for(;a&&a.tagName!="BODY";){if(a.dhx_drop){if(this._last&&(this._last!=a||a.dhx_master))this.onDragOut(this._active,this._last,a,b);if(!this._last||this._last!=a||a.dhx_master)if(this._last=null,this._landing=this.onDragIn(dhtmlx.DragControl._active,a,b))this._last=a;return}a=a.parentNode}if(this._last)this._last=this._landing=this.onDragOut(this._active,this._last,null,b)},sendSignal:function(a){dhtmlx.DragControl.active=a=="start"},getMaster:function(a){return this._drag_masters[a.dhx_drag||
+a.dhx_drop]},getContext:function(){return this._drag_context},createDrag:function(a){var b=dhtmlx.DragControl._active,c=this._drag_masters[b.dhx_drag],d;if(c.onDragCreate)d=c.onDragCreate(b,a),d.style.position="absolute",d.style.zIndex=dhtmlx.zIndex.drag,d.onmousemove=dhtmlx.DragControl._skip_mark;else{var e=dhtmlx.DragControl.onDrag(b,a);if(!e)return!1;d=document.createElement("DIV");d.innerHTML=e;d.className="dhx_drag_zone";d.onmousemove=dhtmlx.DragControl._skip_mark;document.body.appendChild(d)}dhtmlx.DragControl._html=
+d;return!0},_skip_mark:function(){dhtmlx.DragControl._skip=!0},destroyDrag:function(){var a=dhtmlx.DragControl._active,b=this._drag_masters[a.dhx_drag];if(b&&b.onDragDestroy)b.onDragDestroy(a,dhtmlx.DragControl._html);else dhtmlx.html.remove(dhtmlx.DragControl._html);dhtmlx.DragControl._landing=dhtmlx.DragControl._active=dhtmlx.DragControl._last=dhtmlx.DragControl._html=null},top:5,left:5,onDragIn:function(a,b,c){var d=this._drag_masters[b.dhx_drop];if(d.onDragIn&&d!=this)return d.onDragIn(a,b,c);
+b.className+=" dhx_drop_zone";return b},onDragOut:function(a,b,c,d){var e=this._drag_masters[b.dhx_drop];if(e.onDragOut&&e!=this)return e.onDragOut(a,b,c,d);b.className=b.className.replace("dhx_drop_zone","");return null},onDrop:function(a,b,c,d){var e=this._drag_masters[b.dhx_drop];dhtmlx.DragControl._drag_context.from=dhtmlx.DragControl.getMaster(a);if(e.onDrop&&e!=this)return e.onDrop(a,b,c,d);b.appendChild(a)},onDrag:function(a,b){var c=this._drag_masters[a.dhx_drag];if(c.onDrag&&c!=this)return c.onDrag(a,
+b);dhtmlx.DragControl._drag_context={source:a,from:a};return"<div style='"+a.style.cssText+"'>"+a.innerHTML+"</div>"}};
+dhtmlx.DragItem={_init:function(){if(!this._settings||this._settings.drag)dhtmlx.DragItem._initHandlers(this);else if(this._settings)this.drag_setter=function(a){a&&(this._initHandlers(this),delete this.drag_setter);return a};this.dragMarker&&(this.attachEvent("onBeforeDragIn",this.dragMarker),this.attachEvent("onDragOut",this.dragMarker))},_initHandlers:function(a){dhtmlx.DragControl.addDrop(a._obj,a,!0);dhtmlx.DragControl.addDrag(a._obj,a)},onDragIn:function(a,b,c){var d=this.locate(c)||null,e=
+dhtmlx.DragControl._drag_context,f=dhtmlx.DragControl.getMaster(a),g=this._locateHTML(d)||this._obj;if(g==dhtmlx.DragControl._landing)return g;e.target=d;e.to=f;if(!this.callEvent("onBeforeDragIn",[e,c]))return e.id=null;dhtmlx.html.addCss(g,"dhx_drag_over");return g},onDragOut:function(a,b,c,d){var e=this.locate(d)||null,f=this._locateHTML(e)||(c?dhtmlx.DragControl.getMaster(c)._obj:window.undefined);if(f==dhtmlx.DragControl._landing)return null;var g=dhtmlx.DragControl._drag_context;dhtmlx.html.removeCss(dhtmlx.DragControl._landing,
+"dhx_drag_over");g.target=g.to=null;this.callEvent("onDragOut",[g,d]);return null},onDrop:function(a,b,c,d){var e=dhtmlx.DragControl._drag_context;e.to=this;e.index=e.target?this.indexById(e.target):this.dataCount();e.new_id=dhtmlx.uid();this.callEvent("onBeforeDrop",[e,d])&&(e.from==e.to?this.move(e.source,e.index):e.from&&e.from.move(e.source,e.index,e.to,e.new_id),this.callEvent("onAfterDrop",[e,d]))},onDrag:function(a,b){var c=this.locate(b),d=[c];if(c){if(this.getSelected){var e=this.getSelected();
+dhtmlx.PowerArray.find.call(e,c)!=-1&&(d=e)}var f=dhtmlx.DragControl._drag_context={source:d,start:c};f.from=this;if(this.callEvent("onBeforeDrag",[f,b]))return f.html||this._toHTML(this.get(c))}return null}};
+dhtmlx.EditAbility={_init:function(){this._edit_bind=this._edit_id=null;this.attachEvent("onEditKeyPress",function(a,b,c){a==13&&!c?this.stopEdit():a==27&&this.stopEdit(!0)});this.attachEvent("onBeforeRender",function(){this.stopEdit()})},isEdit:function(){return this._edit_id},edit:function(a){if(this.stopEdit(!1,a)&&this.callEvent("onBeforeEditStart",[a])){var b=this.data.get(a);if(!b.$template)b.$template="edit",this.data.refresh(a),this._edit_id=a,this._save_binding(a),this._edit_bind(!0,b),this.callEvent("onAfterEditStart",
+[a])}},stopEdit:function(a,b){if(!this._edit_id)return!0;if(this._edit_id==b)return!1;if(!this.callEvent("onBeforeEditStop",[this._edit_id]))return!1;var c=this.data.get(this._edit_id);c.$template=null;a||this._edit_bind(!1,c);var d=this._edit_id;this._edit_bind=this._edit_id=null;this.data.refresh(d);this.callEvent("onAfterEditStop",[d]);return!0},_save_binding:function(a){var b=this._locateHTML(a),c="",d="",e=[];if(b){for(var f=b.getElementsByTagName("*"),g="",h=0;h<f.length;h++)if(f[h].nodeType==
+1&&(g=f[h].getAttribute("bind")))c+="els["+e.length+"].value="+g+";",d+=g+"=els["+e.length+"].value;",e.push(f[h]),f[h].className+=" dhx_allow_selection",f[h].onselectstart=this._block_native;f=null}c=Function("obj","els",c);d=Function("obj","els",d);this._edit_bind=function(a,b){a?(c(b,e),e.length&&e[0].select&&e[0].select()):d(b,e)}},_block_native:function(a){return(a||event).cancelBubble=!0}};
+dhtmlx.KeyEvents={_init:function(){dhtmlx.event(this._obj,"keypress",this._onKeyPress,this)},_onKeyPress:function(a){var a=a||event,b=a.which||a.keyCode;this.callEvent(this._edit_id?"onEditKeyPress":"onKeyPress",[b,a.ctrlKey,a.shiftKey,a])}};
+dhtmlx.MouseEvents={_init:function(){this.on_click&&(dhtmlx.event(this._obj,"click",this._onClick,this),dhtmlx.event(this._obj,"contextmenu",this._onContext,this));this.on_dblclick&&dhtmlx.event(this._obj,"dblclick",this._onDblClick,this);this.on_mouse_move&&(dhtmlx.event(this._obj,"mousemove",this._onMouse,this),dhtmlx.event(this._obj,dhtmlx._isIE?"mouseleave":"mouseout",this._onMouse,this))},_onClick:function(a){return this._mouseEvent(a,this.on_click,"ItemClick")},_onDblClick:function(a){return this._mouseEvent(a,
+this.on_dblclick,"ItemDblClick")},_onContext:function(a){var b=dhtmlx.html.locate(a,this._id);if(b&&!this.callEvent("onBeforeContextMenu",[b,a]))return dhtmlx.html.preventEvent(a)},_onMouse:function(a){dhtmlx._isIE&&(a=document.createEventObject(event));this._mouse_move_timer&&window.clearTimeout(this._mouse_move_timer);this.callEvent("onMouseMoving",[a]);this._mouse_move_timer=window.setTimeout(dhtmlx.bind(function(){a.type=="mousemove"?this._onMouseMove(a):this._onMouseOut(a)},this),500)},_onMouseMove:function(a){this._mouseEvent(a,
+this.on_mouse_move,"MouseMove")||this.callEvent("onMouseOut",[a||event])},_onMouseOut:function(a){this.callEvent("onMouseOut",[a||event])},_mouseEvent:function(a,b,c){for(var a=a||event,d=a.target||a.srcElement,e="",f=null,g=!1;d&&d.parentNode;){if(!g&&d.getAttribute&&(f=d.getAttribute(this._id))){d.getAttribute("userdata")&&this.callEvent("onLocateData",[f,d]);if(!this.callEvent("on"+c,[f,a,d]))return;g=!0}if(e=d.className)if(e=e.split(" "),e=e[0]||e[1],b[e])return b[e].call(this,a,f,d);d=d.parentNode}return g}};
+dhtmlx.SelectionModel={_init:function(){this._selected=dhtmlx.toArray();this.data.attachEvent("onStoreUpdated",dhtmlx.bind(this._data_updated,this));this.data.attachEvent("onStoreLoad",dhtmlx.bind(this._data_loaded,this));this.data.attachEvent("onAfterFilter",dhtmlx.bind(this._data_filtered,this));this.data.attachEvent("onIdChange",dhtmlx.bind(this._id_changed,this))},_id_changed:function(a,b){for(var c=this._selected.length-1;c>=0;c--)this._selected[c]==a&&(this._selected[c]=b)},_data_filtered:function(){for(var a=
+this._selected.length-1;a>=0;a--){if(this.data.indexById(this._selected[a])<0)var b=this._selected[a];var c=this.item(b);c&&delete c.$selected;this._selected.splice(a,1);this.callEvent("onSelectChange",[b])}},_data_updated:function(a,b,c){if(c=="delete")this._selected.remove(a);else if(!this.data.dataCount()&&!this.data._filter_order)this._selected=dhtmlx.toArray()},_data_loaded:function(){this._settings.select&&this.data.each(function(a){a.$selected&&this.select(a.id)},this)},_select_mark:function(a,
+b,c){if(!c&&!this.callEvent("onBeforeSelect",[a,b]))return!1;this.data.item(a).$selected=b;c?c.push(a):(b?this._selected.push(a):this._selected.remove(a),this._refresh_selection(a));return!0},select:function(a,b,c){if(!a)return this.selectAll();if(a instanceof Array)for(var d=0;d<a.length;d++)this.select(a[d],b,c);else if(this.data.exists(a)){if(c&&this._selected.length)return this.selectAll(this._selected[this._selected.length-1],a);if(!b&&(this._selected.length!=1||this._selected[0]!=a))this._silent_selection=
+!0,this.unselectAll(),this._silent_selection=!1;this.isSelected(a)?b&&this.unselect(a):this._select_mark(a,!0)&&this.callEvent("onAfterSelect",[a])}},unselect:function(a){if(!a)return this.unselectAll();this.isSelected(a)&&this._select_mark(a,!1)},selectAll:function(a,b){var c,d=[];c=a||b?this.data.getRange(a||null,b||null):this.data.getRange();c.each(function(a){var b=this.data.item(a.id);b.$selected||(this._selected.push(a.id),this._select_mark(a.id,!0,d));return a.id},this);this._refresh_selection(d)},
+unselectAll:function(){var a=[];this._selected.each(function(b){this._select_mark(b,!1,a)},this);this._selected=dhtmlx.toArray();this._refresh_selection(a)},isSelected:function(a){return this._selected.find(a)!=-1},getSelected:function(a){switch(this._selected.length){case 0:return a?[]:"";case 1:return a?[this._selected[0]]:this._selected[0];default:return[].concat(this._selected)}},_is_mass_selection:function(a){return a.length>100||a.length>this.data.dataCount/2},_refresh_selection:function(a){typeof a!=
+"object"&&(a=[a]);if(a.length){if(this._is_mass_selection(a))this.data.refresh();else for(var b=0;b<a.length;b++)this.render(a[b],this.data.item(a[b]),"update");this._silent_selection||this.callEvent("onSelectChange",[a])}}};
+dhtmlx.RenderStack={_init:function(){this._html=document.createElement("DIV")},_toHTML:function(a){this.callEvent("onItemRender",[a]);return this.type._item_start(a,this.type)+(a.$template?this.type["template_"+a.$template]:this.type.template)(a,this.type)+this.type._item_end},_toHTMLObject:function(a){this._html.innerHTML=this._toHTML(a);return this._html.firstChild},_locateHTML:function(a){if(this._htmlmap)return this._htmlmap[a];this._htmlmap={};for(var b=this._dataobj.childNodes,c=0;c<b.length;c++){var d=
+b[c].getAttribute(this._id);d&&(this._htmlmap[d]=b[c])}return this._locateHTML(a)},locate:function(a){return dhtmlx.html.locate(a,this._id)},show:function(a){var b=this._locateHTML(a);if(b)this._dataobj.scrollTop=b.offsetTop-this._dataobj.offsetTop},render:function(a,b,c){if(a){var d=this._locateHTML(a);switch(c){case "update":if(!d)return;var e=this._htmlmap[a]=this._toHTMLObject(b);dhtmlx.html.insertBefore(e,d);dhtmlx.html.remove(d);break;case "delete":if(!d)return;dhtmlx.html.remove(d);delete this._htmlmap[a];
+break;case "add":e=this._htmlmap[a]=this._toHTMLObject(b);dhtmlx.html.insertBefore(e,this._locateHTML(this.data.next(a)),this._dataobj);break;case "move":this.render(a,b,"delete"),this.render(a,b,"add")}}else if(this.callEvent("onBeforeRender",[this.data]))this._dataobj.innerHTML=this.data.getRange().map(this._toHTML,this).join(""),this._htmlmap=null;this.callEvent("onAfterRender",[])},pager_setter:function(a){this.attachEvent("onBeforeRender",function(){var a=this._settings.pager._settings;if(a.page==
+-1)return!1;this.data.min=a.page*a.size;this.data.max=(a.page+1)*a.size-1;return!0});var b=new dhtmlx.ui.pager(a),c=dhtmlx.bind(function(){this.data.refresh()},this);b.attachEvent("onRefresh",c);this.data.attachEvent("onStoreUpdated",function(){var a=this.dataCount();if(a!=b._settings.count){b._settings.count=a;if(b._settings.page==-1)b._settings.page=0;b.refresh()}});return b},height_setter:function(a){a=="auto"&&(this.attachEvent("onAfterRender",this._correct_height),dhtmlx.event(window,"resize",
+dhtmlx.bind(this._correct_height,this)));return a},_correct_height:function(){this._dataobj.style.overflow="hidden";this._dataobj.style.height="1px";var a=this._dataobj.scrollHeight;this._dataobj.style.height=a+"px";if(dhtmlx._isFF){var b=this._dataobj.scrollHeight;if(b!=a)this._dataobj.style.height=b+"px"}this._obj.style.height=this._dataobj.style.height},_getDimension:function(){var a=this.type,b=(a.border||0)+(a.padding||0)*2+(a.margin||0)*2;return{x:a.width+b,y:a.height+b}},x_count_setter:function(a){var b=
+this._getDimension();this._dataobj.style.width=b.x*a+(this._settings.height!="auto"?18:0)+"px";return a},y_count_setter:function(a){var b=this._getDimension();this._dataobj.style.height=b.y*a+"px";return a}};
+dhtmlx.VirtualRenderStack={_init:function(){this._htmlmap={};this._dataobj.style.overflowY="scroll";dhtmlx.event(this._dataobj,"scroll",dhtmlx.bind(this._render_visible_rows,this));dhtmlx.event(window,"resize",dhtmlx.bind(function(){this.render()},this));this._unrendered_area=[];this.attachEvent("onItemRender",function(a){a.$template=="loading"&&this._unrendered_area.push(this.data.id(a))})},_locateHTML:function(a){return this._htmlmap[a]},show:function(a){range=this._getVisibleRange();var b=this.data.indexById(a),
+c=Math.floor(b/range._dx)*range._y;this._dataobj.scrollTop=c},render:function(a,b,c){if(a){var d=this._locateHTML(a);switch(c){case "update":if(!d)break;var e=this._htmlmap[a]=this._toHTMLObject(b);dhtmlx.html.insertBefore(e,d);dhtmlx.html.remove(d);break;default:this._render_delayed()}}else if(this.callEvent("onBeforeRender",[this.data]))this._htmlmap={},this._render_visible_rows(null,!0),this._wait_for_render=!1,this.callEvent("onAfterRender",[])},_render_delayed:function(){if(!this._wait_for_render)this._wait_for_render=
+!0,window.setTimeout(dhtmlx.bind(function(){this.render()},this),1)},_create_placeholder:function(a){var b=document.createElement("DIV");b.style.cssText="height:"+a+"px; width:100%; overflow:hidden;";return b},_render_visible_rows:function(a,b){this._unrendered_area=[];var c=this._getVisibleRange();if(!this._dataobj.firstChild||b)this._dataobj.innerHTML="",this._dataobj.appendChild(this._create_placeholder(c._max)),this._htmlrows=[this._dataobj.firstChild];for(var d=c._from,e=this.data.max||this.data.max===
+0?this.data.max:Infinity;d<=c._height;){for(;this._htmlrows[d]&&this._htmlrows[d]._filled&&d<=c._height;)d++;if(d>c._height)break;for(var f=d;!this._htmlrows[f];)f--;var g=this._htmlrows[f],h=d*c._dx+(this.data.min||0);if(h>e)break;var i=Math.min(h+c._dx-1,e),j=this._create_placeholder(c._y),k=this.data.getIndexRange(h,i);if(!k.length)break;j.innerHTML=k.map(this._toHTML,this).join("");for(var m=0;m<k.length;m++)this._htmlmap[this.data.idByIndex(h+m)]=j.childNodes[m];var l=parseInt(g.style.height,
+10),n=(d-f)*c._y,o=l-n-c._y;dhtmlx.html.insertBefore(j,n?g.nextSibling:g,this._dataobj);this._htmlrows[d]=j;j._filled=!0;if(n<=0&&o>0)g.style.height=o+"px",this._htmlrows[d+1]=g;else if(n<0?dhtmlx.html.remove(g):g.style.height=n+"px",o>0){var p=this._htmlrows[d+1]=this._create_placeholder(o);dhtmlx.html.insertBefore(p,j.nextSibling,this._dataobj)}d++}if(this._unrendered_area.length){var r=this.indexById(this._unrendered_area[0]),q=this.indexById(this._unrendered_area.pop())+1;if(q>r){if(!this.callEvent("onDataRequest",
+[r,q-r]))return!1;this.data.feed.call(this,r,q-r)}}},_getVisibleRange:function(){var a=this._dataobj.scrollTop,b=Math.max(this._dataobj.scrollWidth,this._dataobj.offsetWidth)-18,c=this._dataobj.offsetHeight,d=this.type,e=this._getDimension(),f=Math.floor(b/e.x)||1,g=Math.floor(a/e.y),h=Math.ceil((c+a)/e.y)-1,i=this.data.max?this.data.max-this.data.min:this.data.dataCount(),j=Math.ceil(i/f)*e.y;return{_from:g,_height:h,_top:a,_max:j,_y:e.y,_dx:f}}};
+dhtmlx.ajax=function(a,b,c){if(arguments.length!==0){var d=new dhtmlx.ajax;if(c)d.master=c;d.get(a,null,b)}return!this.getXHR?new dhtmlx.ajax:this};
+dhtmlx.ajax.prototype={getXHR:function(){return dhtmlx.env.isIE?new ActiveXObject("Microsoft.xmlHTTP"):new XMLHttpRequest},send:function(a,b,c){var d=this.getXHR();typeof c=="function"&&(c=[c]);if(typeof b=="object"){var e=[],f;for(f in b){var g=b[f];if(g===null||g===dhtmlx.undefined)g="";e.push(f+"="+encodeURIComponent(g))}b=e.join("&")}b&&!this.post&&(a=a+(a.indexOf("?")!=-1?"&":"?")+b,b=null);d.open(this.post?"POST":"GET",a,!this._sync);this.post&&d.setRequestHeader("Content-type","application/x-www-form-urlencoded");
+var h=this;d.onreadystatechange=function(){if(!d.readyState||d.readyState==4){if(c&&h)for(var a=0;a<c.length;a++)c[a]&&c[a].call(h.master||h,d.responseText,d.responseXML,d);c=h=h.master=null}};d.send(b||null);return d},get:function(a,b,c){this.post=!1;return this.send(a,b,c)},post:function(a,b,c){this.post=!0;return this.send(a,b,c)},sync:function(){this._sync=!0;return this}};
+dhtmlx.AtomDataLoader={_init:function(a){this.data={};if(a)this._settings.datatype=a.datatype||"json",this._after_init.push(this._load_when_ready)},_load_when_ready:function(){this._ready_for_data=!0;this._settings.url&&this.url_setter(this._settings.url);this._settings.data&&this.data_setter(this._settings.data)},url_setter:function(a){if(!this._ready_for_data)return a;this.load(a,this._settings.datatype);return a},data_setter:function(a){if(!this._ready_for_data)return a;this.parse(a,this._settings.datatype);
+return!0},load:function(a,b,c){this.callEvent("onXLS",[]);typeof b=="string"?(this.data.driver=dhtmlx.DataDriver[b],b=c):this.data.driver=dhtmlx.DataDriver.xml;dhtmlx.ajax(a,[this._onLoad,b],this)},parse:function(a,b){this.callEvent("onXLS",[]);this.data.driver=dhtmlx.DataDriver[b||"xml"];this._onLoad(a,null)},_onLoad:function(a,b){var c=this.data.driver,d=c.getRecords(c.toObject(a,b))[0];this.data=c?c.getDetails(d):a;this.callEvent("onXLE",[])},_check_data_feed:function(a){if(!this._settings.dataFeed||
+this._ignore_feed||!a)return!0;var b=this._settings.dataFeed,b=b+(b.indexOf("?")==-1?"?":"&")+"action=get&id="+encodeURIComponent(a.id||a);this.callEvent("onXLS",[]);dhtmlx.ajax(b,function(a){this._ignore_feed=!0;this.setValues(dhtmlx.DataDriver.json.toObject(a)[0]);this._ignore_feed=!1;this.callEvent("onXLE",[])},this);return!1}};dhtmlx.DataDriver={};
+dhtmlx.DataDriver.json={toObject:function(a){a||(a="[]");return typeof a=="string"?(eval("dhtmlx.temp="+a),dhtmlx.temp):a},getRecords:function(a){return a&&!(a instanceof Array)?[a]:a},getDetails:function(a){return a},getInfo:function(a){return{_size:a.total_count||0,_from:a.pos||0}}};
+dhtmlx.DataDriver.json_ext={toObject:function(a){a||(a="[]");if(typeof a=="string"){var b;eval("temp="+a);dhtmlx.temp=[];for(var c=b.header,d=0;d<b.data.length;d++){for(var e={},f=0;f<c.length;f++)typeof b.data[d][f]!="undefined"&&(e[c[f]]=b.data[d][f]);dhtmlx.temp.push(e)}return dhtmlx.temp}return a},getRecords:function(a){return a&&!(a instanceof Array)?[a]:a},getDetails:function(a){return a},getInfo:function(a){return{_size:a.total_count||0,_from:a.pos||0}}};
+dhtmlx.DataDriver.html={toObject:function(a){if(typeof a=="string"){var b=null;a.indexOf("<")==-1&&(b=dhtmlx.toNode(a));if(!b)b=document.createElement("DIV"),b.innerHTML=a;return b.getElementsByTagName(this.tag)}return a},getRecords:function(a){return a.tagName?a.childNodes:a},getDetails:function(a){return dhtmlx.DataDriver.xml.tagToObject(a)},getInfo:function(){return{_size:0,_from:0}},tag:"LI"};
+dhtmlx.DataDriver.jsarray={toObject:function(a){return typeof a=="string"?(eval("dhtmlx.temp="+a),dhtmlx.temp):a},getRecords:function(a){return a},getDetails:function(a){for(var b={},c=0;c<a.length;c++)b["data"+c]=a[c];return b},getInfo:function(){return{_size:0,_from:0}}};
+dhtmlx.DataDriver.csv={toObject:function(a){return a},getRecords:function(a){return a.split(this.row)},getDetails:function(a){for(var a=this.stringToArray(a),b={},c=0;c<a.length;c++)b["data"+c]=a[c];return b},getInfo:function(){return{_size:0,_from:0}},stringToArray:function(a){for(var a=a.split(this.cell),b=0;b<a.length;b++)a[b]=a[b].replace(/^[ \t\n\r]*(\"|)/g,"").replace(/(\"|)[ \t\n\r]*$/g,"");return a},row:"\n",cell:","};
+dhtmlx.DataDriver.xml={toObject:function(a,b){return b&&(b=this.checkResponse(a,b))?b:typeof a=="string"?this.fromString(a):a},getRecords:function(a){return this.xpath(a,this.records)},records:"/*/item",getDetails:function(a){return this.tagToObject(a,{})},getInfo:function(a){return{_size:a.documentElement.getAttribute("total_count")||0,_from:a.documentElement.getAttribute("pos")||0}},xpath:function(a,b){if(window.XPathResult){var c=a;if(a.nodeName.indexOf("document")==-1)a=a.ownerDocument;for(var d=
+[],e=a.evaluate(b,c,null,XPathResult.ANY_TYPE,null),f=e.iterateNext();f;)d.push(f),f=e.iterateNext();return d}else{var g=!0;try{typeof a.selectNodes=="undefined"&&(g=!1)}catch(h){}if(g)return a.selectNodes(b);else{var i=b.split("/").pop();return a.getElementsByTagName(i)}}},tagToObject:function(a,b){var b=b||{},c=!1,d=a.attributes;if(d&&d.length){for(var e=0;e<d.length;e++)b[d[e].name]=d[e].value;c=!0}for(var f=a.childNodes,g={},e=0;e<f.length;e++)if(f[e].nodeType==1){var h=f[e].tagName;typeof b[h]!=
+"undefined"?(b[h]instanceof Array||(b[h]=[b[h]]),b[h].push(this.tagToObject(f[e],{}))):b[f[e].tagName]=this.tagToObject(f[e],{});c=!0}if(!c)return this.nodeValue(a);b.value=this.nodeValue(a);return b},nodeValue:function(a){return a.firstChild?a.firstChild.data:""},fromString:function(a){if(window.DOMParser)return(new DOMParser).parseFromString(a,"text/xml");if(window.ActiveXObject){var b=new ActiveXObject("Microsoft.xmlDOM");b.loadXML(a);return b}},checkResponse:function(a,b){if(b&&b.firstChild&&
+b.firstChild.tagName!="parsererror")return b;var c=this.fromString(a.replace(/^[\s]+/,""));if(c)return c}};
+dhtmlx.DataLoader={_init:function(a){a=a||"";name="DataStore";this.data=a.datastore||new dhtmlx.DataStore;this._readyHandler=this.data.attachEvent("onStoreLoad",dhtmlx.bind(this._call_onready,this))},load:function(a,b){dhtmlx.AtomDataLoader.load.apply(this,arguments);if(!this.data.feed)this.data.feed=function(b,d){if(this._load_count)return this._load_count=[b,d];else this._load_count=!0;this.load(a+(a.indexOf("?")==-1?"?":"&")+"posStart="+b+"&count="+d,function(){var a=this._load_count;this._load_count=
+!1;typeof a=="object"&&this.data.feed.apply(this,a)})}},_onLoad:function(a,b){this.data._parse(this.data.driver.toObject(a,b));this.callEvent("onXLE",[]);if(this._readyHandler)this.data.detachEvent(this._readyHandler),this._readyHandler=null},dataFeed_setter:function(a){this.data.attachEvent("onBeforeFilter",dhtmlx.bind(function(a,c){if(this._settings.dataFeed){var d={};if(a||d){if(typeof a=="function"){if(!c)return;a(c,d)}else d={text:c};this.clearAll();var e=this._settings.dataFeed,f=[],g;for(g in d)f.push("dhx_filter["+
+g+"]="+encodeURIComponent(d[g]));this.load(e+(e.indexOf("?")<0?"?":"&")+f.join("&"),this._settings.datatype);return!1}}},this));return a},_call_onready:function(){if(this._settings.ready){var a=dhtmlx.toFunctor(this._settings.ready);a&&a.call&&a.apply(this,arguments)}}};dhtmlx.DataStore=function(){this.name="DataStore";dhtmlx.extend(this,dhtmlx.EventSystem);this.setDriver("xml");this.pull={};this.order=dhtmlx.toArray()};
+dhtmlx.DataStore.prototype={setDriver:function(a){this.driver=dhtmlx.DataDriver[a]},_parse:function(a){this.callEvent("onParse",[this.driver,a]);this._filter_order&&this.filter();var b=this.driver.getInfo(a),c=this.driver.getRecords(a),d=(b._from||0)*1;if(d===0&&this.order[0])d=this.order.length;for(var e=0,f=0;f<c.length;f++){var g=this.driver.getDetails(c[f]),h=this.id(g);this.pull[h]||(this.order[e+d]=h,e++);this.pull[h]=g;this.extraParser&&this.extraParser(g);this._scheme&&(this._scheme.$init?
+this._scheme.$update(g):this._scheme.$update&&this._scheme.$update(g))}for(f=0;f<b._size;f++)this.order[f]||(h=dhtmlx.uid(),g={id:h,$template:"loading"},this.pull[h]=g,this.order[f]=h);this.callEvent("onStoreLoad",[this.driver,a]);this.refresh()},id:function(a){return a.id||(a.id=dhtmlx.uid())},changeId:function(a,b){this.pull[b]=this.pull[a];this.pull[b].id=b;this.order[this.order.find(a)]=b;this._filter_order&&(this._filter_order[this._filter_order.find(a)]=b);this.callEvent("onIdChange",[a,b]);
+this._render_change_id&&this._render_change_id(a,b)},get:function(a){return this.item(a)},set:function(a,b){return this.update(a,b)},item:function(a){return this.pull[a]},update:function(a,b){this._scheme&&this._scheme.$update&&this._scheme.$update(b);if(this.callEvent("onBeforeUpdate",[a,b])===!1)return!1;this.pull[a]=b;this.refresh(a)},refresh:function(a){this._skip_refresh||(a?this.callEvent("onStoreUpdated",[a,this.pull[a],"update"]):this.callEvent("onStoreUpdated",[null,null,null]))},silent:function(a){this._skip_refresh=
+!0;a.call(this);this._skip_refresh=!1},getRange:function(a,b){a=a?this.indexById(a):this.startOffset||0;b?b=this.indexById(b):(b=Math.min(this.endOffset||Infinity,this.dataCount()-1),b<0&&(b=0));if(a>b)var c=b,b=a,a=c;return this.getIndexRange(a,b)},getIndexRange:function(a,b){for(var b=Math.min(b||Infinity,this.dataCount()-1),c=dhtmlx.toArray(),d=a||0;d<=b;d++)c.push(this.item(this.order[d]));return c},dataCount:function(){return this.order.length},exists:function(a){return!!this.pull[a]},move:function(a,
+b){if(!(a<0||b<0)){var c=this.idByIndex(a),d=this.item(c);this.order.removeAt(a);this.order.insertAt(c,Math.min(this.order.length,b));this.callEvent("onStoreUpdated",[c,d,"move"])}},scheme:function(a){this._scheme=a},sync:function(a,b,c){typeof b!="function"&&(c=b,b=null);if(dhtmlx.debug_bind)this.debug_sync_master=a;if(a.name!="DataStore")a=a.data;var d=dhx.bind(function(d,f,g){if(g!="update"||b)d=null;if(!d)this.order=dhx.toArray([].concat(a.order)),this._filter_order=null,this.pull=a.pull,b&&this.silent(b),
+this._on_sync&&this._on_sync();c?c=!1:this.refresh(d)},this);a.attachEvent("onStoreUpdated",d);d()},add:function(a,b){if(this._scheme){var a=a||{},c;for(c in this._scheme)a[c]=a[c]||this._scheme[c];this._scheme&&(this._scheme.$init?this._scheme.$update(a):this._scheme.$update&&this._scheme.$update(a))}var d=this.id(a),e=this.dataCount();if(dhtmlx.isNotDefined(b)||b<0)b=e;b>e&&(b=Math.min(this.order.length,b));if(this.callEvent("onBeforeAdd",[d,a,b])===!1)return!1;if(this.exists(d))return null;this.pull[d]=
+a;this.order.insertAt(d,b);if(this._filter_order){var f=this._filter_order.length;!b&&this.order.length&&(f=0);this._filter_order.insertAt(d,f)}this.callEvent("onafterAdd",[d,b]);this.callEvent("onStoreUpdated",[d,a,"add"]);return d},remove:function(a){if(a instanceof Array)for(var b=0;b<a.length;b++)this.remove(a[b]);else{if(this.callEvent("onBeforeDelete",[a])===!1)return!1;if(!this.exists(a))return null;var c=this.item(a);this.order.remove(a);this._filter_order&&this._filter_order.remove(a);delete this.pull[a];
+this.callEvent("onafterdelete",[a]);this.callEvent("onStoreUpdated",[a,c,"delete"])}},clearAll:function(){this.pull={};this.order=dhtmlx.toArray();this._filter_order=this.feed=null;this.callEvent("onClearAll",[]);this.refresh()},idByIndex:function(a){return this.order[a]},indexById:function(a){var b=this.order.find(a);return b},next:function(a,b){return this.order[this.indexById(a)+(b||1)]},first:function(){return this.order[0]},last:function(){return this.order[this.order.length-1]},previous:function(a,
+b){return this.order[this.indexById(a)-(b||1)]},sort:function(a,b,c){var d=a;typeof a=="function"?d={as:a,dir:b}:typeof a=="string"&&(d={by:a,dir:b,as:c});var e=[d.by,d.dir,d.as];if(this.callEvent("onbeforesort",e)){if(this.order.length){var f=dhtmlx.sort.create(d),g=this.getRange(this.first(),this.last());g.sort(f);this.order=g.map(function(a){return this.id(a)},this)}this.refresh();this.callEvent("onaftersort",e)}},filter:function(a,b){if(this.callEvent("onBeforeFilter",[a,b])){if(this._filter_order)this.order=
+this._filter_order,delete this._filter_order;if(this.order.length){if(a){var c=a,b=b||"";typeof a=="string"&&(a=dhtmlx.Template.fromHTML(a),b=b.toString().toLowerCase(),c=function(b,c){return a(b).toLowerCase().indexOf(c)!=-1});for(var d=dhtmlx.toArray(),e=0;e<this.order.length;e++){var f=this.order[e];c(this.item(f),b)&&d.push(f)}this._filter_order=this.order;this.order=d}this.refresh();this.callEvent("onAfterFilter",[])}}},each:function(a,b){for(var c=0;c<this.order.length;c++)a.call(b||this,this.item(this.order[c]))},
+provideApi:function(a,b){this.debug_bind_master=a;b&&this.mapEvent({onbeforesort:a,onaftersort:a,onbeforeadd:a,onafteradd:a,onbeforedelete:a,onafterdelete:a,onbeforeupdate:a});for(var c="get,set,sort,add,remove,exists,idByIndex,indexById,item,update,refresh,dataCount,filter,next,previous,clearAll,first,last,serialize".split(","),d=0;d<c.length;d++)a[c[d]]=dhtmlx.methodPush(this,c[d])},serialize:function(){for(var a=this.order,b=[],c=0;c<a.length;c++)b.push(this.pull[a[c]]);return b}};
+dhtmlx.sort={create:function(a){return dhtmlx.sort.dir(a.dir,dhtmlx.sort.by(a.by,a.as))},as:{"int":function(a,b){a*=1;b*=1;return a>b?1:a<b?-1:0},string_strict:function(a,b){a=a.toString();b=b.toString();return a>b?1:a<b?-1:0},string:function(a,b){a=a.toString().toLowerCase();b=b.toString().toLowerCase();return a>b?1:a<b?-1:0}},by:function(a,b){if(!a)return b;typeof b!="function"&&(b=dhtmlx.sort.as[b||"string"]);a=dhtmlx.Template.fromHTML(a);return function(c,d){return b(a(c),a(d))}},dir:function(a,
+b){return a=="asc"?b:function(a,d){return b(a,d)*-1}}};if(!dhtmlx.attaches)dhtmlx.attaches={};dhtmlx.attaches.attachAbstract=function(a,b){var c=document.createElement("DIV");c.id="CustomObject_"+dhtmlx.uid();c.style.width="100%";c.style.height="100%";c.cmp="grid";document.body.appendChild(c);this.attachObject(c.id);b.container=c.id;var d=this.vs[this.av];d.grid=new window[a](b);d.gridId=c.id;d.gridObj=c;d.grid.setSizes=function(){this.resize?this.resize():this.render()};var e="_viewRestore";return this.vs[this[e]()].grid};
+dhtmlx.attaches.attachDataView=function(a){return this.attachAbstract("dhtmlXDataView",a)};dhtmlx.attaches.attachChart=function(a){return this.attachAbstract("dhtmlXChart",a)};dhtmlx.compat.layout=function(){};
+dhtmlXDataView=function(a){this.name="DataView";this.version="3.0";dhtmlx.extend(this,dhtmlx.Settings);this._parseContainer(a,"dhx_dataview");dhtmlx.extend(this,dhtmlx.AtomDataLoader);dhtmlx.extend(this,dhtmlx.DataLoader);dhtmlx.extend(this,dhtmlx.EventSystem);dhtmlx.extend(this,dhtmlx.RenderStack);dhtmlx.extend(this,dhtmlx.SelectionModel);dhtmlx.extend(this,dhtmlx.MouseEvents);dhtmlx.extend(this,dhtmlx.KeyEvents);dhtmlx.extend(this,dhtmlx.EditAbility);dhtmlx.extend(this,dhtmlx.DataMove);dhtmlx.extend(this,
+dhtmlx.DragItem);dhtmlx.extend(this,dhtmlx.DataProcessor);dhtmlx.extend(this,dhtmlx.AutoTooltip);dhtmlx.extend(this,dhtmlx.Destruction);this.data.attachEvent("onStoreUpdated",dhtmlx.bind(function(){this.render.apply(this,arguments)},this));this._parseSettings(a,{drag:!1,edit:!1,select:"multiselect",type:"default"});this._settings.height!="auto"&&dhtmlx.extend(this,dhtmlx.VirtualRenderStack);this.data.provideApi(this,!0)};
+dhtmlXDataView.prototype={bind:function(){dhx.BaseBind.legacyBind.apply(this,arguments)},sync:function(){dhx.BaseBind.legacySync.apply(this,arguments)},dragMarker:function(a){var b=this._locateHTML(a.target);if(this.type.drag_marker){if(this._drag_marker)this._drag_marker.style.backgroundImage="",this._drag_marker.style.backgroundRepeat="";if(b)b.style.backgroundImage="url("+(dhtmlx.image_path||"")+this.type.drag_marker+")",b.style.backgroundRepeat="no-repeat",this._drag_marker=b}if(b&&this._settings.auto_scroll){var c=
+b.offsetTop,d=b.offsetHeight,e=this._obj.scrollTop,f=this._obj.offsetHeight;c-d>=0&&c-d*0.75<e?e=Math.max(c-d,0):c+d/0.75>e+f&&(e+=d);this._obj.scrollTop=e}return!0},_id:"dhx_f_id",on_click:{dhx_dataview_item:function(a,b){this.stopEdit(!1,b)&&this._settings.select&&(this._settings.select=="multiselect"?this.select(b,a.ctrlKey,a.shiftKey):this.select(b))}},on_dblclick:{dhx_dataview_item:function(a,b){this._settings.edit&&this.edit(b)}},on_mouse_move:{},types:{"default":{css:"default",template:dhtmlx.Template.fromHTML("<div style='padding:10px; white-space:nowrap; overflow:hidden;'>{obj.text}</div>"),
+template_edit:dhtmlx.Template.fromHTML("<div style='padding:10px; white-space:nowrap; overflow:hidden;'><textarea style='width:100%; height:100%;' bind='obj.text'></textarea></div>"),template_loading:dhtmlx.Template.fromHTML("<div style='padding:10px; white-space:nowrap; overflow:hidden;'>Loading...</div>"),width:210,height:115,margin:0,padding:10,border:1}},template_item_start:dhtmlx.Template.fromHTML("<div dhx_f_id='{-obj.id}' class='dhx_dataview_item dhx_dataview_{obj.css}_item{-obj.$selected?_selected:}' style='width:{obj.width}px; height:{obj.height}px; padding:{obj.padding}px; margin:{obj.margin}px; float:left; overflow:hidden;'>"),
+template_item_end:dhtmlx.Template.fromHTML("</div>")};dhtmlx.compat("layout");
+function dhtmlXEditor(a,b){var c=this;this.skin=b||dhtmlx.skin||"dhx_skyblue";this.iconsPath=dhtmlx.image_path||"../../codebase/imgs/";typeof a=="string"&&(a=document.getElementById(a));for(this.base=a;this.base.childNodes.length>0;)this.base.removeChild(this.base.childNodes[0]);this.tbData=(this._isToolbar=this.initDhtmlxToolbar!=null&&window.dhtmlXToolbarObject!=null?!0:!1)?"":"<div class='dhxeditor_"+this.skin+"_btns'><a href='javascript:void(0);' onclick='return false;' tabindex='-1'><div actv='b' cmd='applyBold' class='dhxeditor_"+this.skin+
+"_tbbtn btn_bold'></div></a><a href='javascript:void(0);' onclick='return false;' tabindex='-1'><div actv='i' cmd='applyItalic' class='dhxeditor_"+this.skin+"_tbbtn btn_italic'></div></a><a href='javascript:void(0);' onclick='return false;' tabindex='-1'><div actv='u' cmd='applyUnderscore' class='dhxeditor_"+this.skin+"_tbbtn btn_underline'></div></a><a href='javascript:void(0);' onclick='return false;' tabindex='-1'><div actv='c' cmd='clearFormatting' class='dhxeditor_"+this.skin+"_tbbtn btn_clearformat'></div></a><div class='verline_l'></div><div class='verline_r'></div></div>";
+var d=_isIE?this.base.currentStyle.position:window.getComputedStyle(this.base,null).getPropertyValue("position");if(!(d=="relative"||d=="absolute"))this.base.style.position="relative";this.base.innerHTML=this.tbData+"<div style='position:absolute; width: 100%; overflow: hidden;'></div>";var e=new dhtmlXContainerLite(this.base);e.skin=this.skin;e.setContent(this.base.childNodes[this._isToolbar?0:1]);var f=this._isToolbar?0:this.base.childNodes[0].offsetHeight;this.base.adjustContent(this.base,f);this.cBlock=
+document.createElement("DIV");this.cBlock.className="dhxcont_content_blocker";this.cBlock.style.display="none";this.base.appendChild(this.cBlock);this.editor=document.createElement("IFRAME");this.editor.className="dhxeditor_mainiframe_"+this.skin;this.editor.frameBorder=0;if(_isOpera)this.editor.scrolling="yes";var g=this.editor;if(_isIE)g.onreadystatechange=function(){if(g.readyState=="complete")try{this.contentWindow.document.body.attachEvent("onfocus",function(a){c._ev("focus",a)}),this.contentWindow.document.body.attachEvent("onblur",
+function(a){c._ev("blur",a)}),this.contentWindow.document.body.attachEvent("onkeydown",function(a){c._ev("keydown",a)}),this.contentWindow.document.body.attachEvent("onkeyup",function(a){c._ev("keyup",a)}),this.contentWindow.document.body.attachEvent("onkeypress",function(a){c._ev("keypress",a)}),this.contentWindow.document.body.attachEvent("onmouseup",function(a){c._ev("mouseup",a)}),this.contentWindow.document.body.attachEvent("onmousedown",function(a){c._ev("mousedown",a)}),this.contentWindow.document.body.attachEvent("onclick",
+function(a){c._ev("click",a)})}catch(a){}},g.onunload=function(){this.contentWindow.document.body.detachEvent("onfocus",function(){c._ev("focus",event)});this.contentWindow.document.body.detachEvent("onblur",function(){c._ev("blur",event)});this.contentWindow.document.body.detachEvent("onkeydown",function(){c._ev("keydown",event)});this.contentWindow.document.body.detachEvent("onkeyup",function(){c._ev("keyup",event)});this.contentWindow.document.body.detachEvent("onkeypress",function(){c._ev("keypress",
+event)});this.contentWindow.document.body.detachEvent("onmouseup",function(){c._ev("mouseup",event)});this.contentWindow.document.body.detachEvent("onmousedown",function(){c._ev("mousedown",event)});this.contentWindow.document.body.detachEvent("onclick",function(){c._ev("click",event)})};else{var h=this.editor;g.onload=function(){this.contentWindow.addEventListener("focus",function(a){c._ev("focus",a)},!1);this.contentWindow.addEventListener("blur",function(a){c._ev("blur",a)},!1);this.contentWindow.addEventListener("keydown",
+function(a){c._ev("keydown",a)},!1);this.contentWindow.addEventListener("keyup",function(a){c._ev("keyup",a)},!1);this.contentWindow.addEventListener("keypress",function(a){c._ev("keypress",a)},!1);this.contentWindow.addEventListener("mouseup",function(a){c._ev("mouseup",a)},!1);this.contentWindow.addEventListener("mousedown",function(a){c._ev("mousedown",a)},!1);this.contentWindow.addEventListener("click",function(a){c._ev("click",a)},!1)};g.onunload=function(){this.contentWindow.removeEventListener("focus",
+function(a){c._ev("focus",a)},!1);this.contentWindow.removeEventListener("blur",function(a){c._ev("blur",a)},!1);this.contentWindow.removeEventListener("keydown",function(a){c._ev("keydown",a)},!1);this.contentWindow.removeEventListener("keyup",function(a){c._ev("keyup",a)},!1);this.contentWindow.removeEventListener("keypress",function(a){c._ev("keypress",a)},!1);this.contentWindow.removeEventListener("mouseup",function(a){c._ev("mouseup",a)},!1);this.contentWindow.removeEventListener("mousedown",
+function(a){c._ev("mousedown",a)},!1);this.contentWindow.removeEventListener("click",function(a){c._ev("click",a)},!1)}}this._ev=function(a,b){this.callEvent("onAccess",[a,b])};this._focus=function(){_isIE?this.editor.contentWindow.document.body.focus():this.editor.contentWindow.focus()};this.base.attachObject(this.editor);this.edWin=this.editor.contentWindow;this.edDoc=this.edWin.document;this._prepareContent=function(a,b){var c="";a===!0&&this.getContent!=null&&(c=this.getContent());var d=this.editor.contentWindow.document;
+d.open("text/html","replace");_isOpera?d.write("<html><head><style> html, body { overflow:auto; padding:0px; padding-left:1px !important; height:100%; margin:0px; font-family:Tahoma; font-size:10pt; background-color:#ffffff;} </style></head><body "+(b!==!0?"contenteditable='true'":"")+" tabindex='0'></body></html>"):window._KHTMLrv?d.write("<html><head><style> html {overflow-x: auto; overflow-y: auto;} body { overflow: auto; overflow-y: scroll;} html,body { padding:0px; padding-left:1px !important; height:100%; margin:0px; font-family:Tahoma; font-size:10pt; background-color:#ffffff;} </style></head><body "+
+(b!==!0?"contenteditable='true'":"")+" tabindex='0'></body></html>"):_isIE?d.write("<html><head><style> html {overflow-y: auto;} body {overflow-y: scroll;} html,body { overflow-x: auto; padding:0px; padding-left:1px !important; height:100%; margin:0px; font-family:Tahoma; font-size:10pt; background-color:#ffffff;} </style></head><body "+(b!==!0?"contenteditable='true'":"")+" tabindex='0'></body></html>"):d.write("<html><head><style> html,body { overflow-x: auto; overflow-y: scroll; padding:0px; padding-left:1px !important; height:100%; margin:0px; font-family:Tahoma; font-size:10pt; background-color:#ffffff;} </style></head><body "+
+(b!==!0?"contenteditable='true'":"")+" tabindex='0'></body></html>");d.close();_isIE?d.contentEditable=b!==!0:d.designMode=b!==!0?"On":"Off";if(_isFF)try{d.execCommand("useCSS",!1,!0)}catch(e){}a===!0&&this.setContent!=null&&this.setContent(c)};this._prepareContent();this.setIconsPath=function(){};this.init=function(){};this.setSizes=function(){var a=this._isToolbar?0:this.base.childNodes[0].offsetHeight;this.base.adjustContent(this.base,a)};this._resizeTM=null;this._resizeTMTime=100;this._doOnResize=
+function(){window.clearTimeout(c._resizeTM);c._resizeTM=window.setTimeout(function(){c.setSizes&&c.setSizes()},c._resizeTMTime)};this._doOnUnload=function(){window.detachEvent("onresize",this._doOnResize);window.removeEventListener("resize",this._doOnResize,!1)};dhtmlxEvent(window,"resize",this._doOnResize);this.base.childNodes[0].onselectstart=function(a){a=a||event;a.cancelBubble=!0;a.returnValue=!1;a.preventDefault&&a.preventDefault();return!1};for(var i=0;i<this.base.childNodes[0].childNodes.length-
+2;i++)this.base.childNodes[0].childNodes[i].childNodes[0].onmousedown=function(){var a=this.getAttribute("cmd");typeof c[a]=="function"&&(c[a](),c.callEvent("onToolbarClick",[this.getAttribute("actv")]));return!1},this.base.childNodes[0].childNodes[i].childNodes[0].onclick=function(){return!1};this.runCommand=function(a,b){if(this._roMode!==!0){arguments.length<2&&(b=null);_isIE&&this.edWin.focus();try{var c=this.editor.contentWindow.document;c.execCommand(a,!1,b)}catch(d){}if(_isIE){this.edWin.focus();
+var e=this;window.setTimeout(function(){e.edWin.focus()},1)}}};this.applyBold=function(){this.runCommand("Bold")};this.applyItalic=function(){this.runCommand("Italic")};this.applyUnderscore=function(){this.runCommand("Underline")};this.clearFormatting=function(){this.runCommand("RemoveFormat")};this._isToolbar&&this.initDhtmlxToolbar();dhtmlxEventable(this);dhtmlxEvent(this.edDoc,"click",function(a){var b=a||window.event,d=b.target||b.srcElement;c.showInfo(d)});_isOpera&&dhtmlxEvent(this.edDoc,"mousedown",
+function(a){var b=a||window.event,d=b.target||b.srcElement;c.showInfo(d)});dhtmlxEvent(this.edDoc,"keyup",function(a){var b=a||window.event,d=b.keyCode,e=b.target||b.srcElement;(d==37||d==38||d==39||d==40||d==13)&&c.showInfo(e)});this.attachEvent("onFocusChanged",function(a){c._doOnFocusChanged&&c._doOnFocusChanged(a)});this.showInfo=function(a){if(a=this.getSelectionBounds().end?this.getSelectionBounds().end:a)try{if(this.edWin.getComputedStyle){var b=this.edWin.getComputedStyle(a,null),c=b.getPropertyValue("font-weight")==
+401?700:b.getPropertyValue("font-weight");this.style={fontStyle:b.getPropertyValue("font-style"),fontSize:b.getPropertyValue("font-size"),textDecoration:b.getPropertyValue("text-decoration"),fontWeight:c,fontFamily:b.getPropertyValue("font-family"),textAlign:b.getPropertyValue("text-align")};if(window._KHTMLrv)this.style.fontStyle=b.getPropertyValue("font-style"),this.style.vAlign=b.getPropertyValue("vertical-align"),this.style.del=this.isStyleProperty(a,"span","textDecoration","line-through"),this.style.u=
+this.isStyleProperty(a,"span","textDecoration","underline")}else b=a.currentStyle,this.style={fontStyle:b.fontStyle,fontSize:b.fontSize,textDecoration:b.textDecoration,fontWeight:b.fontWeight,fontFamily:b.fontFamily,textAlign:b.textAlign};this.setStyleProperty(a,"h1");this.setStyleProperty(a,"h2");this.setStyleProperty(a,"h3");this.setStyleProperty(a,"h4");window._KHTMLrv||(this.setStyleProperty(a,"del"),this.setStyleProperty(a,"sub"),this.setStyleProperty(a,"sup"),this.setStyleProperty(a,"u"));this.callEvent("onFocusChanged",
+[this.style,b])}catch(d){return null}};this.getSelectionBounds=function(){var a,b,c,d;if(this.edWin.getSelection){var e=this.edWin.getSelection();a=e.getRangeAt(e.rangeCount-1);c=a.startContainer;d=a.endContainer;b=a.commonAncestorContainer;if(c.nodeName=="#text")b=b.parentNode;if(c.nodeName=="#text")c=c.parentNode;if(c.nodeName.toLowerCase()=="body")c=c.firstChild;if(d.nodeName=="#text")d=d.parentNode;if(d.nodeName.toLowerCase()=="body")d=d.lastChild;c==d&&(b=c);return{root:b,start:c,end:d}}else if(this.edWin.document.selection){a=
+this.edDoc.selection.createRange();if(!a.duplicate)return null;b=a.parentElement();var g=a.duplicate(),f=a.duplicate();g.collapse(!0);f.moveToElementText(g.parentElement());f.setEndPoint("EndToStart",g);c=g.parentElement();g=a.duplicate();f=a.duplicate();f.collapse(!1);g.moveToElementText(f.parentElement());g.setEndPoint("StartToEnd",f);d=f.parentElement();if(c.nodeName.toLowerCase()=="body")c=c.firstChild;if(d.nodeName.toLowerCase()=="body")d=d.lastChild;c==d&&(b=c);return{root:b,start:c,end:d}}return null};
+this.getContent=function(){return this.edDoc.body?_isFF?this.editor.contentWindow.document.body.innerHTML.replace(/<\/{0,}br\/{0,}>\s{0,}$/gi,""):this.edDoc.body.innerHTML:""};this.setContent=function(a){if(this.edDoc.body){if(navigator.userAgent.indexOf("Firefox")!=-1){if(typeof this._ffTest=="undefined")this.editor.contentWindow.document.body.innerHTML="",this.runCommand("InsertHTML","test"),this._ffTest=this.editor.contentWindow.document.body.innerHTML.length>0;this._ffTest?this.editor.contentWindow.document.body.innerHTML=
+a:(this.editor.contentWindow.document.body.innerHTML="",a.length==0&&(a=" "),this.runCommand("InsertHTML",a))}else this.editor.contentWindow.document.body.innerHTML=a;this.callEvent("onContentSet",[])}else dhtmlxEvent(this.edWin,"load",function(){c.setContent(a)})};this.setContentHTML=function(a){(new dtmlXMLLoaderObject(this._ajaxOnLoad,this,!1,!0)).loadXML(a)};this._ajaxOnLoad=function(a,b,c,d,e){e.xmlDoc.responseText&&a.setContent(e.xmlDoc.responseText)}}
+function dhtmlXContainerLite(a){var b=this;this.obj=a;this.dhxcont=null;this.setContent=function(a){this.dhxcont=a;this.dhxcont.innerHTML="<div style='position: relative; left: 0px; top: 0px; overflow: hidden;'></div>";this.dhxcont.mainCont=this.dhxcont.childNodes[0];this.obj.dhxcont=this.dhxcont};this.obj._genStr=function(a){for(var b="",e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",f=0;f<a;f++)b+=e.charAt(Math.round(Math.random()*(e.length-1)));return b};this.obj.adjustContent=
+function(a,b,e,f,g){this.dhxcont.style.left=(this._offsetLeft||0)+"px";this.dhxcont.style.top=(this._offsetTop||0)+b+"px";var h=a.clientWidth+(this._offsetWidth||0);if(f!==!0)this.dhxcont.style.width=Math.max(0,h)+"px";if(f!==!0&&this.dhxcont.offsetWidth>h)this.dhxcont.style.width=Math.max(0,h*2-this.dhxcont.offsetWidth)+"px";var i=a.clientHeight+(this._offsetHeight||0);this.dhxcont.style.height=Math.max(0,i-b)+(e!=null?e:0)+"px";if(this.dhxcont.offsetHeight>i-b)this.dhxcont.style.height=Math.max(0,
+(i-b)*2-this.dhxcont.offsetHeight)+"px";if(g&&!isNaN(g))this.dhxcont.style.height=Math.max(0,parseInt(this.dhxcont.style.height)-g)+"px";if(this._minDataSizeH!=null&&parseInt(this.dhxcont.style.height)<this._minDataSizeH)this.dhxcont.style.height=this._minDataSizeH+"px";if(this._minDataSizeW!=null&&parseInt(this.dhxcont.style.width)<this._minDataSizeW)this.dhxcont.style.width=this._minDataSizeW+"px";if(f!==!0&&(this.dhxcont.mainCont.style.width=this.dhxcont.clientWidth+"px",this.dhxcont.mainCont.offsetWidth>
+this.dhxcont.clientWidth))this.dhxcont.mainCont.style.width=Math.max(0,this.dhxcont.clientWidth*2-this.dhxcont.mainCont.offsetWidth)+"px";var j=this.menu!=null?!this.menuHidden?this.menuHeight:0:0,k=this.toolbar!=null?!this.toolbarHidden?this.toolbarHeight:0:0,m=this.sb!=null?!this.sbHidden?this.sbHeight:0:0;this.dhxcont.mainCont.style.height=this.dhxcont.clientHeight+"px";if(this.dhxcont.mainCont.offsetHeight>this.dhxcont.clientHeight)this.dhxcont.mainCont.style.height=Math.max(0,this.dhxcont.clientHeight*
+2-this.dhxcont.mainCont.offsetHeight)+"px";this.dhxcont.mainCont.style.height=Math.max(0,parseInt(this.dhxcont.mainCont.style.height)-j-k-m)+"px"};this.obj.attachToolbar=function(){var a=document.createElement("DIV");a.style.position="relative";a.style.overflow="hidden";a.id="dhxtoolbar_"+this._genStr(12);this.dhxcont.insertBefore(a,this.dhxcont.childNodes[this.menu!=null?1:0]);this.toolbar=new dhtmlXToolbarObject(a.id,this.skin);b.skin=="dhx_web"?(this.toolbarHeight=32,this.dhxcont.className="dhtmlx_editor_extended_"+
+b.skin):this.toolbarHeight=a.offsetHeight+(this._isLayout&&this.skin=="dhx_skyblue"?2:0);this.toolbarId=a.id;this._doOnAttachToolbar&&this._doOnAttachToolbar("init");this.adjust();return this.toolbar};this.obj.attachObject=function(a,b){typeof a=="string"&&(a=document.getElementById(a));if(b){a.style.visibility="hidden";a.style.display="";var e=a.offsetWidth,f=a.offsetHeight}this._attachContent("obj",a);if(b&&this._isWindow)a.style.visibility="visible",this._adjustToContent(e,f)};this.obj.adjust=
+function(){if(this.skin=="dhx_skyblue"&&this.toolbar){if(this._isWindow||this._isLayout)document.getElementById(this.toolbarId).style.height="29px",this.toolbarHeight=document.getElementById(this.toolbarId).offsetHeight,this._doOnAttachToolbar&&this._doOnAttachToolbar("show");this._isCell&&(document.getElementById(this.toolbarId).className+=" in_layoutcell");this._isAcc&&(document.getElementById(this.toolbarId).className+=" in_acccell")}};this.obj._attachContent=function(a,d,e){for(;b.dhxcont.mainCont.childNodes.length>
+0;)b.dhxcont.mainCont.removeChild(b.dhxcont.mainCont.childNodes[0]);if(a=="obj"){if(this._isWindow&&d.cmp==null&&this.skin=="dhx_skyblue")this.dhxcont.mainCont.style.border="#a4bed4 1px solid",this.dhxcont.mainCont.style.backgroundColor="#FFFFFF",this._redraw();b.dhxcont._frame=null;b.dhxcont.mainCont.appendChild(d);b.dhxcont.mainCont.style.overflow=e===!0?"auto":"hidden";d.style.display=""}};this.obj._dhxContDestruct=function(){for(;this.dhxcont.mainCont.childNodes.length>0;)this.dhxcont.mainCont.removeChild(this.dhxcont.mainCont.childNodes[0]);
+this.dhxcont.mainCont.innerHTML="";this.dhxcont.mainCont=null;try{delete this.dhxcont.mainCont}catch(a){}for(;this.dhxcont.childNodes.length>0;)this.dhxcont.removeChild(this.dhxcont.childNodes[0]);this.dhxcont.innerHTML="";this.dhxcont=null;try{delete this.dhxcont}catch(b){}this.attachToolbar=this.adjustContent=this.moveContentTo=this.attachObject=this.adjust=this._dhxContDestruct=this._attachContent=this._genStr=null}}
+(function(){dhtmlx.extend_api("dhtmlXEditor",{_init:function(a){return[a.parent,a.skin]},content:"setContent"},{})})();
+dhtmlXEditor.prototype.unload=function(){if(this._isToolbar)this._unloadExtModule();else for(;this.base.childNodes[0].childNodes.length>0;){if(this.base.childNodes[0].childNodes[0].tagName&&String(this.base.childNodes[0].childNodes[0].tagName).toLowerCase()=="a")this.base.childNodes[0].childNodes[0].childNodes[0].onclick=null,this.base.childNodes[0].childNodes[0].childNodes[0].onmousedown=null,this.base.childNodes[0].childNodes[0].removeChild(this.base.childNodes[0].childNodes[0].childNodes[0]);this.base.childNodes[0].removeChild(this.base.childNodes[0].childNodes[0])}this.tbData=
+this.base.childNodes[0].onselectstart=null;this.detachAllEvents();_isIE?this.editor.onreadystatechange=null:this.editor.onload=null;this.editor.parentNode.removeChild(this.editor);this.edWin=this.edDoc=this.editor=this.editor.onunload=null;this.base._dhxContDestruct();this.base._idd=null;for(this.base.name=null;this.base.childNodes.length>0;)this.base.removeChild(this.base.childNodes[0]);this.unload=this.isReadonly=this.setReadonly=this.setContentHTML=this.setContent=this.getContent=this.getSelectionBounds=
+this.showInfo=this.detachAllEvents=this.detachEvent=this.eventCatcher=this.checkEvent=this.callEvent=this.attachEvent=this.clearFormatting=this.applyUnderscore=this.applyItalic=this.applyBold=this.runCommand=this.setSizes=this.init=this.setIconsPath=this._doOnUnload=this._doOnResize=this._prepareContent=this._focus=this._ev=this._ajaxOnLoad=this.iconsPath=this.skin=this._resizeTMTime=this._resizeTM=this._isToolbar=this.cBlock=this.base=null};
+dhtmlXEditor.prototype.setReadonly=function(a){this._roMode=a===!0;this._prepareContent(!0,this._roMode);this.cBlock.style.display=this._roMode?"":"none"};dhtmlXEditor.prototype.isReadonly=function(){return this._roMode||!1};
+dhtmlXEditor.prototype.initDhtmlxToolbar=function(){this.tb=this.base.attachToolbar();this.tb.setSkin(this.skin);if(this.skin=="dhx_skyblue")this.tb.base.style.borderLeft="none",this.tb.base.style.borderRight="none",this.tb.base.style.top="-1px";this.setSizes();this.tb.setIconsPath(this.iconsPath+"dhxeditor_"+this.skin+"/");this._availFonts="Arial,Arial Narrow,Comic Sans MS,Courier,Georgia,Impact,Tahoma,Times New Roman,Verdana".split(",");this._initFont=this._availFonts[0];this._xmlFonts="";for(var a=
+0;a<this._availFonts.length;a++){var b=String(this._availFonts[a]).replace(/\s/g,"_");this._xmlFonts+='<item type="button" id="applyFontFamily:'+b+'"><itemText><![CDATA[<img src="'+this.tb.imagePath+"font_"+String(b).toLowerCase()+'.gif" border="0" style="/*margin-top:1px;margin-bottom:1px;*/width:110px;height:16px;">]]\></itemText></item>'}this._availSizes={1:"8pt",2:"10pt",3:"12pt",4:"14pt",5:"18pt",6:"24pt",7:"36pt"};this._xmlSizes="";for(var c in this._availSizes)this._xmlSizes+='<item type="button" id="applyFontSize:'+
+c+":"+this._availSizes[c]+'" text="'+this._availSizes[c]+'"/>';this.tbXML='<toolbar><item id="applyH1" type="buttonTwoState" img="h1.gif" imgdis="h4_dis.gif" title="H1"/><item id="applyH2" type="buttonTwoState" img="h2.gif" imgdis="h4_dis.gif" title="H2"/><item id="applyH3" type="buttonTwoState" img="h3.gif" imgdis="h4_dis.gif" title="H3"/><item id="applyH4" type="buttonTwoState" img="h4.gif" imgdis="h4_dis.gif" title="H4"/><item id="separ01" type="separator"/><item id="applyBold" type="buttonTwoState" img="bold.gif" imgdis="bold_dis.gif" title="Bold Text"/><item id="applyItalic" type="buttonTwoState" img="italic.gif" imgdis="italic_dis.gif" title="Italic Text"/><item id="applyUnderscore" type="buttonTwoState" img="underline.gif" imgdis="underline_dis.gif" title="Underscore Text"/><item id="applyStrikethrough" type="buttonTwoState" img="strike.gif" imgdis="strike_dis.gif" title="Strikethrough Text"/><item id="separ02" type="separator"/><item id="alignLeft" type="buttonTwoState" img="align_left.gif" imgdis="align_left_dis.gif" title="Left Alignment"/><item id="alignCenter" type="buttonTwoState" img="align_center.gif" imgdis="align_center_dis.gif" title="Center Alignment"/><item id="alignRight" type="buttonTwoState" img="align_right.gif" imgdis="align_right_dis.gif" title="Right Alignment"/><item id="alignJustify" type="buttonTwoState" img="align_justify.gif" title="Justified Alignment"/><item id="separ03" type="separator"/><item id="applySub" type="buttonTwoState" img="script_sub.gif" imgdis="script_sub.gif" title="Subscript"/><item id="applySuper" type="buttonTwoState" img="script_super.gif" imgdis="script_super_dis.gif" title="Superscript"/><item id="separ04" type="separator"/><item id="createNumList" type="button" img="list_number.gif" imgdis="list_number_dis.gif" title="Number List"/><item id="createBulList" type="button" img="list_bullet.gif" imgdis="list_bullet_dis.gif" title="Bullet List"/><item id="separ05" type="separator"/><item id="increaseIndent" type="button" img="indent_inc.gif" imgdis="indent_inc_dis.gif" title="Increase Indent"/><item id="decreaseIndent" type="button" img="indent_dec.gif" imgdis="indent_dec_dis.gif" title="Decrease Indent"/><item id="separ06" type="separator"/><item id="clearFormatting" type="button" img="clear.gif" title="Clear Formatting"/></toolbar>';
+this.tb.loadXMLString(this.tbXML);this._checkAlign=function(a){this.tb.setItemState("alignCenter",!1);this.tb.setItemState("alignRight",!1);this.tb.setItemState("alignJustify",!1);this.tb.setItemState("alignLeft",!1);a&&this.tb.setItemState(a,!0)};this._checkH=function(a){this.tb.setItemState("applyH1",!1);this.tb.setItemState("applyH2",!1);this.tb.setItemState("applyH3",!1);this.tb.setItemState("applyH4",!1);a&&this.tb.setItemState(a,!0)};this._doOnFocusChanged=function(a){if(!a.h1&&!a.h2&&!a.h3&&
+!a.h4){var b=String(a.fontWeight).search(/bold/i)!=-1||Number(a.fontWeight)>=700;this.tb.setItemState("applyBold",b)}else this.tb.setItemState("applyBold",!1);var c="alignLeft";String(a.textAlign).search(/center/)!=-1&&(c="alignCenter");String(a.textAlign).search(/right/)!=-1&&(c="alignRight");String(a.textAlign).search(/justify/)!=-1&&(c="alignJustify");this.tb.setItemState(c,!0);this._checkAlign(c);this.tb.setItemState("applyH1",a.h1);this.tb.setItemState("applyH2",a.h2);this.tb.setItemState("applyH3",
+a.h3);this.tb.setItemState("applyH4",a.h4);if(window._KHTMLrv)a.sub=a.vAlign=="sub",a.sup=a.vAlign=="super";this.tb.setItemState("applyItalic",a.fontStyle=="italic");this.tb.setItemState("applyStrikethrough",a.del);this.tb.setItemState("applySub",a.sub);this.tb.setItemState("applySuper",a.sup);this.tb.setItemState("applyUnderscore",a.u)};this._doOnToolbarClick=function(a){var b=String(a).split(":");this[b[0]]!=null&&typeof this[b[0]]=="function"&&(this[b[0]](b[1]),this.callEvent("onToolbarClick",
+[a]))};this._doOnStateChange=function(a){this[a]();switch(a){case "alignLeft":case "alignCenter":case "alignRight":case "alignJustify":this._checkAlign(a);break;case "applyH1":case "applyH2":case "applyH3":case "applyH4":this._checkH(a)}this.callEvent("onToolbarClick",[a])};this._doOnBeforeStateChange=function(a,b){return(a=="alignLeft"||a=="alignCenter"||a=="alignRight"||a=="alignJustify")&&b==!0?!1:!0};var d=this;this.tb.attachEvent("onClick",function(a){d._doOnToolbarClick(a)});this.tb.attachEvent("onStateChange",
+function(a,b){d._doOnStateChange(a,b)});this.tb.attachEvent("onBeforeStateChange",function(a,b){return d._doOnBeforeStateChange(a,b)});this.applyBold=function(){this.runCommand("Bold")};this.applyItalic=function(){this.runCommand("Italic")};this.applyUnderscore=function(){this.runCommand("Underline")};this.applyStrikethrough=function(){this.runCommand("StrikeThrough")};this.alignLeft=function(){this.runCommand("JustifyLeft")};this.alignRight=function(){this.runCommand("JustifyRight")};this.alignCenter=
+function(){this.runCommand("JustifyCenter")};this.alignJustify=function(){this.runCommand("JustifyFull")};this.applySub=function(){this.runCommand("Subscript")};this.applySuper=function(){this.runCommand("Superscript")};this.applyH1=function(){this.runCommand("FormatBlock","<H1>")};this.applyH2=function(){this.runCommand("FormatBlock","<H2>")};this.applyH3=function(){this.runCommand("FormatBlock","<H3>")};this.applyH4=function(){this.runCommand("FormatBlock","<H4>")};this.createNumList=function(){this.runCommand("InsertOrderedList")};
+this.createBulList=function(){this.runCommand("InsertUnorderedList")};this.increaseIndent=function(){this.runCommand("Indent")};this.decreaseIndent=function(){this.runCommand("Outdent")};this.clearFormatting=function(){this.runCommand("RemoveFormat");this.tb.setItemState("applyBold",!1);this.tb.setItemState("applyItalic",!1);this.tb.setItemState("applyStrikethrough",!1);this.tb.setItemState("applySub",!1);this.tb.setItemState("applySuper",!1);this.tb.setItemState("applyUnderscore",!1)};this.getParentByTag=
+function(a,b){var b=b.toLowerCase(),c=a;do if(b==""||c.nodeName.toLowerCase()==b)return c;while(c=c.parentNode);return a};this.isStyleProperty=function(a,b,c,d){var b=b.toLowerCase(),i=a;do if(i.nodeName.toLowerCase()==b&&i.style[c]==d)return!0;while(i=i.parentNode);return!1};this.setStyleProperty=function(a,b){this.style[b]=!1;var c=this.getParentByTag(a,b);c&&c.tagName.toLowerCase()==b&&(this.style[b]=!0);if(b=="del"&&this.getParentByTag(a,"strike")&&this.getParentByTag(a,"strike").tagName.toLowerCase()==
+"strike")this.style.del=!0};this._unloadExtModule=function(){this.tb.unload();this.setStyleProperty=this.isStyleProperty=this.getParentByTag=this.clearFormatting=this.decreaseIndent=this.increaseIndent=this.createBulList=this.createNumList=this.applyH4=this.applyH3=this.applyH2=this.applyH1=this.applySuper=this.applySub=this.alignJustify=this.alignCenter=this.alignRight=this.alignLeft=this.applyStrikethrough=this.applyUnderscore=this.applyItalic=this.applyBold=this._doOnBeforeStateChange=this._doOnStateChange=
+this._doOnToolbarClick=this._doOnFocusChanged=this._checkH=this._checkAlign=this.tbXML=this._xmlSizes=this._availSizes=this._xmlFonts=this._initFont=this._availFonts=this.tb=null}};
+function dhtmlXForm(a,b){this.i={position:"label-left",labelWidth:"auto",labelHeight:"auto",inputWidth:"auto",inputHeight:"auto",labelAlign:"left"};this.apos_css={"label-left":"item_label_left","label-right":"item_label_right","label-top":"item_label_top",absolute:"item_absolute"};this.align_css={left:"align_left",center:"align_center",right:"align_right"};var c=this;this.skin="dhx_skyblue";this.setSkin=function(a){this.skin=a;this.cont.className="dhxlist_obj_"+this.skin;this.cont.style.fontSize=
+this.skin=="dhx_web"?"13px":"13px"};this._type="checkbox";this._rGroup="default";this.cont=typeof a=="object"?a:document.getElementById(a);if(!a._isNestedForm)this._parentForm=!0,this.cont.style.fontSize=this.skin=="dhx_web"?"13px":"13px",this.cont.className="dhxlist_obj_"+this.skin,this.setFontSize=function(a){this.cont.style.fontSize=a},this.getForm=function(){return this};this.b=null;this.base=[];this._prepare=function(a){this.b==null?this.b=0:this.b++;this.base[this.b]=document.createElement("DIV");
+this.base[this.b].className="dhxlist_base";typeof a=="string"&&(a=parseInt(a));if(typeof a=="number")this.base[this.b].style.marginLeft=a+"px";this.cont.appendChild(this.base[this.b])};this.setSizes=function(){};this._mergeSettings=function(a){var b=-1,c={type:"settings"},d;for(d in this.i)c[d]=this.i[d];for(var i=0;i<a.length;i++)if(a[i].type=="settings"){for(d in a[i])c[d]=a[i][d];b=i}a[b>=0?b:a.length]=c;return a};this._genStr=function(a){for(var b="",c="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
+d=0;d<a;d++)b+=c.charAt(Math.round(Math.random()*(c.length-1)));return b};this.idPrefix="dhxForm_"+this._genStr(12)+"_";this.objPull={};this.itemPull={};this._ic=0;this._addItem=function(a,b,d,h,i){if(!a)a=this._type;if(a=="list"&&{fieldset:!0,block:!0}[this.getItemType(i)]==!0)var j=this.itemPull[this.idPrefix+i]._addSubListNode();else a=="newcolumn"?j={}:(j=document.createElement("DIV"),this.base[this.b].appendChild(j));j._idd=b;if(typeof d.offsetLeft=="number")j.style.paddingLeft=d.offsetLeft+
+"px";if(typeof d.offsetTop=="number")j.style.paddingTop=d.offsetTop+"px";if(a=="list"){if(h!=null)j._sId=h;var k=this.items[a].render(j);if(!this.itemPull[this.idPrefix+b]._listObj)this.itemPull[this.idPrefix+b]._listObj=[];if(!this.itemPull[this.idPrefix+b]._list)this.itemPull[this.idPrefix+b]._list=[];if(!this.itemPull[this.idPrefix+b]._listBase)this.itemPull[this.idPrefix+b]._listBase=[];this.itemPull[this.idPrefix+b]._listObj.push(k[0]);this.itemPull[this.idPrefix+b]._list.push(k[1]);this.itemPull[this.idPrefix+
+b]._listBase.push(j);k[1].checkEvent=function(a){return c.checkEvent(a)};k[1].callEvent=function(a,b){return c.callEvent(a,b)};k[1].getForm=function(){return c.getForm()};k[1]._initObj(this._mergeSettings(d));j._inBlcok&&(j.className+=" in_block");return k[1]}if(a=="newcolumn")this._prepare(d.offset);else{if({input:!0,fieldset:!0,block:!0}[a]!==!0)j.onselectstart=function(a){a=a||event;return a.returnValue=!1};if(a=="label"&&this._ic++==0)d._isTopmost=!0;d.position=this.apos_css[!d.position||!this.apos_css[d.position]?
+this.i.position:d.position];j.className=d.position+(typeof d.className=="string"?" "+d.className:"");if(!d.labelWidth)d.labelWidth=this.i.labelWidth;if(!d.labelHeight)d.labelHeight=this.i.labelHeight;d.labelAlign=this.align_css[d.labelAlign]?this.align_css[d.labelAlign]:this.align_css[this.i.labelAlign];d.inputWidth=d.width?d.width:d.inputWidth?d.inputWidth:this.i.inputWidth;if(!d.inputHeight)d.inputHeight=this.i.inputHeight;j.checkEvent=function(a){return c.checkEvent(a)};j.callEvent=function(a,
+b){return c.callEvent(a,b)};j.getForm=function(){return c.getForm()};j._autoCheck=function(){c._autoCheck()};if(d.validate)j._validate=String(d.validate).split(",");this.objPull[this.idPrefix+b]=this.items[a].render(j,d);this.itemPull[this.idPrefix+b]=j}};this._initObj=function(a){this._prepare();for(var b=0;b<a.length;b++)if(a[b].type=="settings")for(var c in a[b])this.i[c]=a[b][c];for(b=0;b<a.length;b++){var d=a[b].type||"";if(this.items[d]){if(!a[b].name)a[b].name=this._genStr(12);var i=a[b].name;
+if(this.objPull[this.idPrefix+i]!=null||d=="radio")i=this._genStr(12);var j=a[b];j.label=j.label||"";j.value=j.value;j.checked=!!j.checked;j.disabled=!!j.disabled;j.name=j.name||this._genStr(12);j.options=j.options||[];j.rows=j.rows||"none";j.uid=this._genStr(12);this._addItem(d,i,j);this._parentEnabled===!1&&this._disableItem(i);for(var k=0;k<j.options.length;k++)if(j.options[k].list!=null){if(!j.options[k].value)j.options[k].value=this._genStr();var m=this._addItem("list",i,j.options[k].list,j.options[k].value);
+m._subSelect=!0;m._subSelectId=j.options[k].value}if(a[b].list!=null){if(!a[b].listParent)a[b].listParent=j.name;m=this._addItem("list",i,a[b].list,null,a[b].listParent)}}}this._autoCheck()};this._xmlSubItems={item:"list",option:"options"};this._xmlToObject=function(a,b){if(b===!0)var c=[];else{var c={},d;for(d in this._xmlSubItems)c[this._xmlSubItems[d]]=[]}for(var i=0;i<a.childNodes.length;i++)if(typeof a.childNodes[i].nodeName!="undefiend"&&this._xmlSubItems[a.childNodes[i].nodeName]!=null){for(var j=
+this._xmlSubItems[a.childNodes[i].nodeName],k={},m=0;m<a.childNodes[i].attributes.length;m++){k[a.childNodes[i].attributes[m].name]=a.childNodes[i].attributes[m].value;var l=this._xmlToObject(a.childNodes[i],!1);for(d in this._xmlSubItems)l[this._xmlSubItems[d]].length>0&&(k[this._xmlSubItems[d]]=l[this._xmlSubItems[d]])}b===!0?c.push(k):c[j].push(k)}return c};this._xmlParser=function(){c._initObj(c._xmlToObject(this.getXMLTopNode("items"),!0));c.cont&&c.cont.cmp&&c.cont.cmp=="form"&&c.setSizes();
+c.callEvent("onXLE",[]);typeof c._doOnLoad=="function"&&c._doOnLoad()};this._doOnLoad=null;this._xmlLoader=new dtmlXMLLoaderObject(this._xmlParser,window);this.loadStruct=function(a,b,c){if(typeof b=="string"){if(b.toLowerCase()=="json"){this._initObj(a);return}this._doOnLoad=c||null}else this._doOnLoad=b||null;this.callEvent("onXLS",[]);this._xmlLoader.loadXML(a)};this.loadStructString=function(a,b){this._doOnLoad=b||null;this._xmlLoader.loadXMLString(a)};this._autoCheck=function(a){typeof a=="undefined"&&
+(a=!0);for(var b in this.itemPull){var c=a&&this.itemPull[b]._udis!==!0;this[c?"_enableItem":"_disableItem"](this.itemPull[b]._idd);var d=c&&(typeof this.itemPull[b]._checked=="boolean"?this.itemPull[b]._checked:!0);if(this.itemPull[b]._list)for(var i=0;i<this.itemPull[b]._list.length;i++){var j=!0;if(this.itemPull[b]._list[i]._subSelect==!0){var j=!1,k=this.getItemValue(this.itemPull[b]._idd);typeof k=="object"&&typeof k.length=="number"||(k=[k]);for(var m=0;m<k.length;m++)j=k[m]==this.itemPull[b]._list[i]._subSelectId||
+j;this.itemPull[b]._listObj[i][j?"show":"hide"](this.itemPull[b]._listBase[i])}this.itemPull[b]._list[i]._autoCheck(d&&j)}}};this.doWithItem=function(a,b,c,d,i,j){if(typeof a=="object"){var k=a[0],m=a[1],l=null,n=null,o;for(o in this.itemPull){if((this.itemPull[o]._value==m||m===null)&&this.itemPull[o]._group==k)return this.objPull[o][b](this.itemPull[o],c,d,i,j);if(this.itemPull[o]._list!=null&&!n)for(var p=0;p<this.itemPull[o]._list.length;p++)n=this.itemPull[o]._list[p].doWithItem(a,b,c,d,i)}if(n!=
+null)return n;else if(b=="getType")return this.doWithItem(a[0],"getType")}else if(this.itemPull[this.idPrefix+a])return this.objPull[this.idPrefix+a][b](this.itemPull[this.idPrefix+a],c,d,i,j);else{n=null;for(o in this.itemPull)if(this.itemPull[o]._list&&!n)for(p=0;p<this.itemPull[o]._list.length;p++)n||(n=this.itemPull[o]._list[p].doWithItem(a,b,c,d,i,j));return n}};this.removeItem=function(a,b){b!=null?a=this.doWithItem([a,b],"destruct"):this.doWithItem(a,"destruct");this._clearItemData(a)};this._clearItemData=
+function(a){if(this.itemPull[this.idPrefix+a]){a=this.idPrefix+a;try{this.objPull[a]=null,this.itemPull[a]=null,delete this.objPull[a],delete this.itemPull[a]}catch(b){}}else for(var c in this.itemPull)if(this.itemPull[c]._list)for(var d=0;d<this.itemPull[c]._list.length;d++)this.itemPull[c]._list[d]._clearItemData(a)};this.isItem=function(a,b){b!=null&&(a=[a,b]);return this.doWithItem(a,"isExist")};this.getItemType=function(a,b){a=[a,b||null];return this.doWithItem(a,"getType")};this.getItemsList=
+function(){var a=[],b=[],c;for(c in this.itemPull){var d=null,d=this.itemPull[c]._group?this.itemPull[c]._group:c.replace(this.idPrefix,"");b[d]!=!0&&a.push(d);b[d]=!0}return a};this.forEachItem=function(a){for(var b in this.objPull)if(a(String(b).replace(this.idPrefix,"")),this.itemPull[b]._list)for(var c=0;c<this.itemPull[b]._list.length;c++)this.itemPull[b]._list[c].forEachItem(a)};this.setItemLabel=function(a,b,c){c!=null?a=[a,b]:c=b;this.doWithItem(a,"setText",c)};this.getItemLabel=function(a,
+b){b!=null&&(a=[a,b]);return this.doWithItem(a,"getText")};this.setItemText=this.setItemLabel;this.getItemText=this.getItemLabel;this._enableItem=function(a){this.doWithItem(a,"enable")};this._disableItem=function(a){this.doWithItem(a,"disable")};this._isItemEnabled=function(a){return this.doWithItem(a,"isEnabled")};this.checkItem=function(a,b){b!=null&&(a=[a,b]);this.doWithItem(a,"check");this._autoCheck()};this.uncheckItem=function(a,b){b!=null&&(a=[a,b]);this.doWithItem(a,"unCheck");this._autoCheck()};
+this.isItemChecked=function(a,b){b!=null&&(a=[a,b]);return this.doWithItem(a,"isChecked")};this.getCheckedValue=function(a){return this.doWithItem([a,null],"getChecked")};this._getRGroup=function(a,b){for(var c in this.itemPull){if(this.itemPull[c]._group==a&&(b==null||this.itemPull[c]._value==b))return this.itemPull[c]._idd;if(this.itemPull[c]._list!=null)for(var d=0;d<this.itemPull[c]._list.length;d++){var i=this.itemPull[c]._list[d]._getRGroup(a,b);if(i!=null)return i}}return null};this.setItemValue=
+function(a,b){return this.getItemType(a)=="radio"?(this._getRGroup(a,b)!=null?this.checkItem(a,b):this.uncheckItem(a,this.getCheckedValue(a)),null):this.doWithItem(a,"setValue",b)};this.getItemValue=function(a,b){return this.getItemType(a)=="radio"?this.getCheckedValue(a):this.doWithItem(a,"getValue",b)};this.showItem=function(a,b){b!=null&&(a=[a,b]);this.doWithItem(a,"show")};this.hideItem=function(a,b){b!=null&&(a=[a,b]);this.doWithItem(a,"hide")};this.isItemHidden=function(a,b){b!=null&&(a=[a,
+b]);return this.doWithItem(a,"isHidden")};this.getOptions=function(a){return this.doWithItem(a,"getOptions")};this.setItemWidth=function(a,b){this.doWithItem(a,"setWidth",b)};this.getItemWidth=function(a){return this.doWithItem(a,"getWidth")};this.setItemHeight=function(a,b){this.doWithItem(a,"setHeight",b)};this.setItemFocus=function(a){this.doWithItem(a,"setFocus")};this._getItemByName=function(a){for(var b in this.itemPull){if(this.itemPull[b]._idd==a)return this.itemPull[b];if(this.itemPull[b]._list!=
+null)for(var c=0;c<this.itemPull[b]._list.length;c++){var d=this.itemPull[b]._list[c]._getItemByName(a);if(d!=null)return d}}return null};this._resetValidateCss=function(a){a.className=a.className.replace(a._vcss,"");a._vcss=null};this.setValidateCss=function(a,b,c){var d=this[this.getItemType(a)=="radio"?"_getRGroup":"_getItemByName"](a);if(d)d._vcss!=null&&this._resetValidateCss(d),d._vcss=typeof c=="string"?c:"validate_"+(b===!0?"ok":"error"),d.className+=" "+d._vcss};this.resetValidateCss=function(){for(var a in this.itemPull)if(this.itemPull[a]._vcss!=
+null&&this._resetValidateCss(this.itemPull[a]),this.itemPull[a]._list!=null)for(var b=0;b<this.itemPull[a]._list.length;b++)this.itemPull[a]._list[b].resetValidateCss()};this.validate=function(a){if(!(a!="nestedFormCall"&&this.callEvent("onBeforeValidate",[])==!1)){var b=!0,c;for(c in this.itemPull){if(this.itemPull[c]._validate){for(var d=this.itemPull[c]._idd,i=this.getItemValue(d),j=!0,k=0;k<this.itemPull[c]._validate.length;k++){var m=dhtmlxValidation["is"+this.itemPull[c]._validate[k]];typeof m!=
+"function"&&typeof this.itemPull[c]._validate[k]=="function"&&(m=this.itemPull[c]._validate[k]);typeof m!="function"&&typeof window[this.itemPull[c]._validate[k]]=="function"&&(m=window[this.itemPull[c]._validate[k]]);j=j&&(typeof m=="function"?m(i):RegExp(this.itemPull[c]._validate[k]).test(i));m=null}b=b&&j;this.callEvent("onValidate"+(j?"Success":"Error"),[d,i,j])!==!1&&this.setValidateCss(d,j)}if(this.itemPull[c]._list)for(k=0;k<this.itemPull[c]._list.length;k++)b=this.itemPull[c]._list[k].validate("nestedFormCall")&&
+b}a!="nestedFormCall"&&this.callEvent("onAfterValidate",[b]);return b}};this.setReadonly=function(a,b){this.doWithItem(a,"setReadonly",b)};this.isReadonly=function(a){return this.doWithItem(a,"isReadonly")};this.enableItem=function(a,b){b!=null&&(a=[a,b]);this.doWithItem(a,"userEnable");this._autoCheck()};this.disableItem=function(a,b){b!=null&&(a=[a,b]);this.doWithItem(a,"userDisable");this._autoCheck()};this.isItemEnabled=function(a,b){b!=null&&(a=[a,b]);return this.doWithItem(a,"isUserEnabled")};
+this.clear=function(){var a={};this.formId=(new Date).valueOf();this.resetDataProcessor("inserted");for(var b in this.itemPull){var c=this.itemPull[b]._idd;this.itemPull[b]._type=="ch"&&this.uncheckItem(c);(this.itemPull[b]._type=="ta"||this.itemPull[b]._type=="editor"||this.itemPull[b]._type=="calendar")&&this.setItemValue(c,"");this.itemPull[b]._type=="combo"&&this.getCombo(c).selectOption(0);if(this.itemPull[b]._type=="se"){var d=this.getOptions(c);if(d.length>0)d[0].selected=!0}if(this.itemPull[b]._type==
+"ra"){var i=this.itemPull[b]._group;a[i]||(this.checkItem(i,this.doWithItem(c,"_getFirstValue")),a[i]=!0)}if(this.itemPull[b]._list)for(var j=0;j<this.itemPull[b]._list.length;j++)this.itemPull[b]._list[j].clear()}a=null;this._parentForm&&this._autoCheck();this.resetValidateCss()};this.unload=function(){for(var a in this.objPull)this.removeItem(String(a).replace(this.idPrefix,""));this.detachAllEvents();this._xmlLoader.destructor();this._subSelectId=this._subSelect=this.idPrefix=this.skin=this.i=
+this.b=this.align_css=this.apos_css=this.isReadonly=this.setReadonly=this.isLocked=this.unlock=this.lock=this.getItemsList=this.getFormData=this.setFormData=this.getEditor=this.getCombo=this.getColorPicker=this.getCalendar=this.setSizes=this.setRTL=this.getUserData=this.setUserData=this.getItemWidth=this.getCheckedValue=this.detachAllEvents=this._prepare=this._locked=this._mergeSettings=this._doLock=this._parentForm=this._parentEnabled=this._type=this._rGroup=this.setSkin=this.setItemWidth=this.setItemHeight=
+this.setFontSize=this.remove=this.loadStructString=this.loadStruct=this._ulToObject=this._ic=this.getOptions=this.isItemChecked=this.uncheckItem=this.checkItem=this.isItemHidden=this.hideItem=this.showItem=this.getItemValue=this.setItemValue=this.getItemText=this.setItemText=this.getItemLabel=this.setItemLabel=this._getPosition=this._setPosition=this.getItemPosition=this.setItemPosition=this.eventCatcher=this.detachEvent=this.checkEvent=this.callEvent=this.attachEvent=this.getForm=this.unload=this.removeItem=
+this.getItemType=this.doWithItem=this.clear=this.isItem=this.forEachItem=this._isItemEnabled=this._disableItem=this._enableItem=this._clearItemData=this._autoCheck=this._initObj=this._genStr=this._addItem=this.itemPull=this.objPull=this.items=this.loadXMLString=this.loadXML=this._xmlToObject=this._xmlParser=this._xmlLoader=null;for(var b=0;b<this.base.length;b++){for(;this.base[b].childNodes.length>0;)this.base[b].removeChild(this.base[b].childNodes[0]);this.base[b].parentNode&&this.base[b].parentNode.removeChild(this.base[b]);
+this.base[b]=null}this.base=null;this.cont.className="";this.cont=null};for(var d in this.items){this.items[d].t=d;if(!this.items[d].show)this.items[d].show=function(a){a.style.display="";if(a._listObj)for(var b=0;b<a._listObj.length;b++)a._listObj[b].show(a._listBase[b])};if(!this.items[d].hide)this.items[d].hide=function(a){a.style.display="none";if(a._listObj)for(var b=0;b<a._listObj.length;b++)a._listObj[b].hide(a._listBase[b])};if(!this.items[d].isHidden)this.items[d].isHidden=function(a){return a.style.display==
+"none"};if(!this.items[d].userEnable)this.items[d].userEnable=function(a){a._udis=!1};if(!this.items[d].userDisable)this.items[d].userDisable=function(a){a._udis=!0};if(!this.items[d].isUserEnabled)this.items[d].isUserEnabled=function(a){return a._udis!==!0};this.items[d].getType=function(){return this.t};this.items[d].isExist=function(){return!0}}this._locked=!1;this._doLock=function(a){var b=a===!0?!0:!1;if(this._locked!=b)this._locked=b,this._autoCheck(!this._locked)};this.lock=function(){this._doLock(!0)};
+this.unlock=function(){this._doLock(!1)};this.isLocked=function(){return this._locked};dhtmlxEventable(this);this.attachEvent("_onButtonClick",function(a,b){this.callEvent("onButtonClick",[a,b])});b!=null&&typeof b=="object"&&this._initObj(b)}dhtmlXForm.prototype.getInput=function(a){return this.doWithItem(a,"getInput")};dhtmlXForm.prototype.getSelect=function(a){return this.doWithItem(a,"getSelect")};dhtmlXForm.prototype.items={};
+dhtmlXForm.prototype.items.checkbox={render:function(a,b){a._type="ch";a._enabled=!0;a._checked=!1;a._value=String(b.value);a._ro=b.readonly==!0;var c=document.createElement("DIV");c.className="dhxlist_img chbx0";a.appendChild(c);if(!isNaN(b.inputLeft))c.style.left=parseInt(b.inputLeft)+"px";if(!isNaN(b.inputTop))c.style.top=parseInt(b.inputTop)+"px";this.doAddLabel(a,b);var d=document.createElement("INPUT");d.type="HIDDEN";d.value=String(b.value);a.appendChild(d);b.checked==!0&&this.check(a);b.hidden==
+!0&&this.hide(a);b.disabled==!0&&this.userDisable(a);this.doAttachEvents(a);return this},destruct:function(a){this.doUnloadNestedLists(a);this.doDestruct(a)},doAddLabel:function(a,b){var c=document.createElement("DIV");c.className="dhxlist_txt "+b.labelAlign;a.appendChild(c);c.innerHTML="<span class='nav_link' onkeypress='e=event||window.arguments[0];if(e.keyCode==32||e.charCode==32){e.cancelBubble=true;e.returnValue=false;_dhxForm_doClick(this,\"mousedown\");return false;}' "+(_dhxForm_isIPad?"ontouchstart='e=event;e.preventDefault();_dhxForm_doClick(this,\"mousedown\");' ":
+"")+"role='link' tabindex='0'>"+b.label+"</span>";if(!isNaN(b.labelWidth))c.style.width=parseInt(b.labelWidth)+"px";if(!isNaN(b.labelHeight))c.style.height=parseInt(b.labelHeight)+"px";if(!isNaN(b.labelLeft))c.style.left=parseInt(b.labelLeft)+"px";if(!isNaN(b.labelTop))c.style.top=parseInt(b.labelTop)+"px"},doUnloadNestedLists:function(a){if(a._list){for(var b=0;b<a._list.length;b++)a._list[b].unload(),a._list[b]=null,a._listObj[b]=null,a._listBase[b].parentNode.removeChild(a._listBase[b]),a._listBase[b]=
+null;a._list=null;a._listObj=null;a._listBase=null}},doDestruct:function(a){a.callEvent=null;a.checkEvent=null;a.getForm=null;a._autoCheck=null;a._checked=null;a._enabled=null;a._idd=null;a._type=null;a._value=null;a._group=null;a.onselectstart=null;a.childNodes[0].onmousedown=null;a.childNodes[0].ontouchstart=null;a.childNodes[1].onmousedown=null;a.childNodes[1].ontouchstart=null;a.childNodes[1].childNodes[0].onkeypress=null;a.childNodes[1].childNodes[0].ontouchstart=null;for(a.childNodes[1].removeChild(a.childNodes[1].childNodes[0]);a.childNodes.length>
+0;)a.removeChild(a.childNodes[0]);a.parentNode.removeChild(a);a=null},doAttachEvents:function(a){var b=this;a.childNodes[0][_dhxForm_isIPad?"ontouchstart":"onmousedown"]=function(a){a=a||event;a.preventDefault&&a.preventDefault();if(!this.parentNode._enabled||this.parentNode._ro)return a.cancelBubble=!0,a.returnValue=!1;b.doClick(this.parentNode)};a.childNodes[1].childNodes[0][_dhxForm_isIPad?"ontouchstart":"onmousedown"]=function(a){a=a||event;a.preventDefault&&a.preventDefault();if(!this.parentNode.parentNode._enabled)return a.cancelBubble=
+!0,a.returnValue=!1;b.doClick(this.parentNode.parentNode)}},doClick:function(a){a.childNodes[1].childNodes[0].focus();a._enabled&&!a._ro&&!(a.checkEvent("onBeforeChange")&&a.callEvent("onBeforeChange",[a._idd,a._value,a._checked])!==!0)&&(this.setChecked(a,!a._checked),a._autoCheck(),a.callEvent("onChange",[a._idd,a._value,a._checked]))},doCheckValue:function(a){a._checked&&a._enabled?a.childNodes[2].setAttribute("name",String(a._idd)):a.childNodes[2].removeAttribute("name")},setChecked:function(a,
+b){a._checked=b===!0?!0:!1;a.childNodes[0].className="dhxlist_img "+(a._checked?"chbx1":"chbx0");this.doCheckValue(a)},check:function(a){this.setChecked(a,!0)},unCheck:function(a){this.setChecked(a,!1)},isChecked:function(a){return a._checked},enable:function(a){if(String(a.className).search("disabled")>=0)a.className=String(a.className).replace(/disabled/gi,"");a._enabled=!0;a.childNodes[1].childNodes[0].tabIndex=0;a.childNodes[1].childNodes[0].removeAttribute("disabled");this.doCheckValue(a)},disable:function(a){String(a.className).search("disabled")<
+0&&(a.className+=" disabled");a._enabled=!1;a.childNodes[1].childNodes[0].tabIndex=-1;a.childNodes[1].childNodes[0].setAttribute("disabled","true");this.doCheckValue(a)},isEnabled:function(a){return a._enabled},setText:function(a,b){a.childNodes[1].childNodes[0].innerHTML=b},getText:function(a){return a.childNodes[1].childNodes[0].innerHTML},setValue:function(a,b){this.setChecked(a,b===!0||a._value===b)},getValue:function(a){return a._value},setReadonly:function(a,b){a._ro=b===!0},isReadonly:function(a){return a._ro},
+setValue:function(a,b){a._value=b;a.childNodes[2].value=a._value},getValue:function(a){return a._value}};
+dhtmlXForm.prototype.items.radio={input:{},firstValue:{},render:function(a,b,c){a._type="ra";a._enabled=!0;a._checked=!1;a._group=b.name;a._value=b.value;a._uid=c;a._ro=b.readonly==!0;var d=document.createElement("DIV");d.className="dhxlist_img rdbt0";a.appendChild(d);if(!isNaN(b.inputLeft))d.style.left=parseInt(b.inputLeft)+"px";if(!isNaN(b.inputTop))d.style.top=parseInt(b.inputTop)+"px";this.doAddLabel(a,b);if(this.input[b.name]==null){var e=document.createElement("INPUT");e.type="HIDDEN";e.name=
+b.name;e.firstValue=a._value;a.appendChild(e);this.input[b.name]=e}if(!this.firstValue[b.name])this.firstValue[b.name]=b.value;b.checked==!0&&this.check(a);b.hidden==!0&&this.hide(a);b.disabled==!0&&this.userDisable(a);this.doAttachEvents(a);return this},destruct:function(a){if(a.childNodes[a.childNodes.length-1]==this.input[a._group]){for(var b=a.parentNode,c=!1,d=0;d<b.childNodes.length;d++){var e=b.childNodes[d];e._idd!=a._idd&&e._group==a._group&&e._type=="ra"&&!c&&(e.appendChild(this.input[a._group]),
+c=!0);e=null}c==!1&&(this.input[a._group].parentNode.removeChild(this.input[a._group]),this.input[a._group]=null,this.firstValue[a._group]=null)}var f=a._idd;this.doUnloadNestedLists(a);this.doDestruct(a);return f},doClick:function(a){a.childNodes[1].childNodes[0].focus();if(a._enabled&&!a._checked&&!a._ro){var b=[a._group,a._value,!0];a.checkEvent("onBeforeChange")&&a.callEvent("onBeforeChange",b)!==!0||(this.setChecked(a,!0),a._autoCheck(),a.callEvent("onChange",b))}},doCheckValue:function(a){for(var b=
+null,c=a.parentNode.parentNode,d=0;d<c.childNodes.length;d++){for(var e=0;e<c.childNodes[d].childNodes.length;e++){var f=c.childNodes[d].childNodes[e];if(f._type=="ra"&&f._group==a._group&&f._checked&&f._enabled)b=f._value}b!=null?(this.input[a._group].setAttribute("name",String(a._group)),this.input[a._group].setAttribute("value",b),this.input[a._group]._value=b):(this.input[a._group].removeAttribute("name"),this.input[a._group].removeAttribute("value"),this.input[a._group]._value=null)}},setChecked:function(a,
+b){for(var b=b===!0,c=a._group,d=a.parentNode.parentNode,e=0;e<d.childNodes.length;e++)for(var f=0;f<d.childNodes[e].childNodes.length;f++)if(d.childNodes[e].childNodes[f]._group==c&&d.childNodes[e].childNodes[f]._type=="ra"){var g=!1,h=d.childNodes[e].childNodes[f];if(h._idd==a._idd){if(h._checked!=b)h._checked=b,g=!0}else if(h._checked)h._checked=!1,g=!0;if(g)h.childNodes[0].className="dhxlist_img "+(h._checked?"rdbt1":"rdbt0");h=null}this.doCheckValue(a)},getChecked:function(a){return this.input[a._group]._value},
+_getFirstValue:function(a){return this.firstValue[a._group]},setValue:function(){},setValue:function(a,b){a._value=b;if(a._checked)this.input[a._group].value=b},getValue:function(a){return a._value}};(function(){for(var a in{doAddLabel:1,doDestruct:1,doUnloadNestedLists:1,doAttachEvents:1,check:1,unCheck:1,isChecked:1,enable:1,disable:1,isEnabled:1,setText:1,getText:1,getValue:1,setReadonly:1,isReadonly:1})dhtmlXForm.prototype.items.radio[a]=dhtmlXForm.prototype.items.checkbox[a]})();
+dhtmlXForm.prototype.items.select={render:function(a,b){a._type="se";a._enabled=!0;a._value=null;a._newValue=null;this.doAddLabel(a,b);this.doAddInput(a,b,"SELECT",null,!0,!0,"dhxlist_txt_select");this.doAttachEvents(a);this.doLoadOpts(a,b);if(b.connector){var c=this;dhtmlxAjax.get(b.connector,function(b){for(var e=b.doXPath("//item"),f=[],g=0;g<e.length;g++)f[g]={label:e[g].getAttribute("label"),value:e[g].getAttribute("value"),selected:e[g].getAttribute("selected")!=null};c.doLoadOpts(a,{options:f},
+!0)})}return this},destruct:function(a){this.doUnloadNestedLists(a);a.callEvent=null;a.checkEvent=null;a.getForm=null;a._autoCheck=null;a._enabled=null;a._idd=null;a._type=null;a._value=null;a._newValue=null;a.onselectstart=null;a.childNodes[1].childNodes[0].onclick=null;a.childNodes[1].childNodes[0].onkeydown=null;a.childNodes[1].childNodes[0].onchange=null;a.childNodes[1].childNodes[0].onblur=null;for(a.childNodes[1].removeChild(a.childNodes[1].childNodes[0]);a.childNodes.length>0;)a.removeChild(a.childNodes[0]);
+a.parentNode.removeChild(a);a=null},doAddLabel:function(a,b){var c=document.createElement("DIV");c.className="dhxlist_txt_label "+b.labelAlign;c.innerHTML="<label for='"+b.uid+"'>"+b.label+"</label>";a.appendChild(c);if(b.label.length==0)c.style.display="none";if(!isNaN(b.labelWidth))c.style.width=parseInt(b.labelWidth)+"px";if(!isNaN(b.labelHeight))c.style.height=parseInt(b.labelHeight)+"px";if(!isNaN(b.labelLeft))c.style.left=parseInt(b.labelLeft)+"px";if(!isNaN(b.labelTop))c.style.top=parseInt(b.labelTop)+
+"px"},doAddInput:function(a,b,c,d,e,f,g){var h=document.createElement("DIV");h.className="dhxlist_cont";a.appendChild(h);var i=document.createElement(c);i.className=g;i.name=a._idd;i._idd=a._idd;i.id=b.uid;if(typeof d=="string")i.type=d;h.appendChild(i);b.readonly&&this.setReadonly(a,!0);b.hidden==!0&&this.hide(a);b.disabled==!0&&this.userDisable(a);if(e){if(!isNaN(b.inputLeft))h.style.left=parseInt(b.inputLeft)+"px";if(!isNaN(b.inputTop))h.style.top=parseInt(b.inputTop)+"px"}var j="";f&&(isNaN(b.inputWidth)||
+(j+="width:"+parseInt(b.inputWidth)+"px;"),isNaN(b.inputHeight)||(j+="height:"+parseInt(b.inputHeight)+"px;"));typeof b.style=="string"&&(j+=b.style);i.style.cssText=j;b.maxLength&&i.setAttribute("maxlength",b.maxLength);b.connector&&i.setAttribute("connector",b.connector)},doAttachEvents:function(a){var b=a.childNodes[1].childNodes[0],c=this;b.onclick=function(){c.doOnChange(this)};b.onkeydown=function(){c.doOnChange(this)};b.onchange=function(){c.doOnChange(this)}},doLoadOpts:function(a,b,c){for(var d=
+a.childNodes[1].childNodes[0],e=b.options,f=0;f<e.length;f++){var g=new Option(e[f].text||e[f].label,e[f].value);d.options.add(g);if(e[f].selected==!0||e[f].selected=="true")g.selected=!0,a._value=e[f].value}c===!0&&a.callEvent("onOptionsLoaded",[a._idd])},doOnChange:function(a){var b=a.parentNode.parentNode;b._newValue=a.selectedIndex>=0?a.options[a.selectedIndex].value:null;if(b._newValue!=b._value){if(b.checkEvent("onBeforeChange")&&b.callEvent("onBeforeChange",[b._idd,b._value,b._newValue])!==
+!0){for(var c=0;c<a.options.length;c++)if(a.options[c].value==b._value)a.options[c].selected=!0;return}b._value=b._newValue;b.callEvent("onChange",[b._idd,b._value])}b._autoCheck()},setText:function(a,b){b||(b="");a.childNodes[0].childNodes[0].innerHTML=b;a.childNodes[0].style.display=b.length==0||b==null?"none":""},getText:function(a){return a.childNodes[0].childNodes[0].innerHTML},enable:function(a){if(String(a.className).search("disabled")>=0)a.className=String(a.className).replace(/disabled/gi,
+"");a._enabled=!0;a.childNodes[1].childNodes[0].removeAttribute("disabled")},disable:function(a){String(a.className).search("disabled")<0&&(a.className+=" disabled");a._enabled=!1;a.childNodes[1].childNodes[0].setAttribute("disabled",!0)},getOptions:function(a){return a.childNodes[1].childNodes[0].options},setValue:function(a,b){for(var c=this.getOptions(a),d=0;d<c.length;d++)if(c[d].value==b)c[d].selected=!0,a._value=c[d].value},getValue:function(a){for(var b=-1,c=this.getOptions(a),d=0;d<c.length;d++)if(c[d].selected)b=
+c[d].value;return b},setWidth:function(a,b){a.childNodes[1].childNodes[0].style.width=b+"px"},getSelect:function(a){return a.childNodes[1].childNodes[0]}};(function(){for(var a in{doUnloadNestedLists:1})dhtmlXForm.prototype.items.select[a]=dhtmlXForm.prototype.items.checkbox[a]})();
+dhtmlXForm.prototype.items.multiselect={doLoadOpts:function(a,b){var c=a.childNodes[1].childNodes[0];c.multiple=!0;if(!isNaN(b.size))c.size=Number(b.size);a._value=[];a._newValue=[];for(var d=b.options,e=0;e<d.length;e++){var f=new Option(d[e].text||d[e].label,d[e].value);c.options.add(f);if(d[e].selected==!0||d[e].selected=="true")f.selected=!0,a._value.push(d[e].value)}},doAttachEvents:function(a){var b=a.childNodes[1].childNodes[0],c=this;b.onblur=function(){c.doOnChange(this)};b.onclick=function(){a._autoCheck()}},
+doOnChange:function(a){var b=a.parentNode.parentNode;b._newValue=[];for(var c=0;c<a.options.length;c++)a.options[c].selected&&b._newValue.push(a.options[c].value);if(b._value.sort().toString()!=b._newValue.sort().toString()){if(b.checkEvent("onBeforeChange")&&b.callEvent("onBeforeChange",[b._idd,b._value,b._newValue])!==!0){for(var d={},c=0;c<b._value.length;c++)d[b._value[c]]=!0;for(c=0;c<a.options.length;c++)a.options[c].selected=d[a.options[c].value]==!0;d=null;return}b._value=[];for(c=0;c<b._newValue.length;c++)b._value.push(b._newValue[c]);
+b.callEvent("onChange",[b._idd,b._value])}b._autoCheck()},setValue:function(a,b){var c={};typeof b=="string"&&(b=b.split(","));typeof b!="object"&&(b=[b]);for(var d=0;d<b.length;d++)c[b[d]]=!0;for(var e=this.getOptions(a),d=0;d<e.length;d++)e[d].selected=c[e[d].value]==!0},getValue:function(a){for(var b=[],c=this.getOptions(a),d=0;d<c.length;d++)c[d].selected&&b.push(c[d].value);return b}};
+(function(){for(var a in dhtmlXForm.prototype.items.select)dhtmlXForm.prototype.items.multiselect[a]||(dhtmlXForm.prototype.items.multiselect[a]=dhtmlXForm.prototype.items.select[a])})();
+dhtmlXForm.prototype.items.input={render:function(a,b){var c=!isNaN(b.rows);a._type="ta";a._enabled=!0;this.doAddLabel(a,b);this.doAddInput(a,b,c?"TEXTAREA":"INPUT",c?null:"TEXT",!0,!0,"dhxlist_txt_textarea");this.doAttachEvents(a);if(c)a.childNodes[1].childNodes[0].rows=b.rows;this.setValue(a,b.value);return this},doAttachEvents:function(a){a.childNodes[1].childNodes[0].onblur=function(){if(a._value!=this.value)a.checkEvent("onBeforeChange")&&a.callEvent("onBeforeChange",[this._idd,a._value,this.value])!==
+!0?this.value=a._value:(a._value=this.value,a.callEvent("onChange",[this._idd,this.value]))}},setValue:function(a,b){a._value=b;a.childNodes[1].childNodes[0].value=a._value||""},getValue:function(a){return a._value},setReadonly:function(a,b){a._ro=b===!0;a._ro?a.childNodes[1].childNodes[0].setAttribute("readOnly","true"):a.childNodes[1].childNodes[0].removeAttribute("readOnly")},isReadonly:function(a){if(!a._ro)a._ro=!1;return a._ro},setFocus:function(a){a.childNodes[1].childNodes[0].focus()},getInput:function(a){return a.childNodes[1].childNodes[0]}};
+(function(){for(var a in{doAddLabel:1,doAddInput:1,destruct:1,doUnloadNestedLists:1,setText:1,getText:1,enable:1,disable:1,setWidth:1})dhtmlXForm.prototype.items.input[a]=dhtmlXForm.prototype.items.select[a]})();dhtmlXForm.prototype.items.password={render:function(a,b){a._type="pw";a._enabled=!0;this.doAddLabel(a,b);this.doAddInput(a,b,"INPUT","PASSWORD",!0,!0,"dhxlist_txt_textarea");this.doAttachEvents(a);a._value=b.value||"";a.childNodes[1].childNodes[0].value=a._value;return this}};
+(function(){for(var a in{doAddLabel:1,doAddInput:1,doAttachEvents:1,destruct:1,doUnloadNestedLists:1,setText:1,getText:1,setValue:1,getValue:1,enable:1,disable:1,setWidth:1,setReadonly:1,isReadonly:1,setFocus:1,getInput:1})dhtmlXForm.prototype.items.password[a]=dhtmlXForm.prototype.items.input[a]})();
+dhtmlXForm.prototype.items.file={render:function(a,b){a._type="fl";a._enabled=!0;this.doAddLabel(a,b);this.doAddInput(a,b,"INPUT","FILE",!0,!1,"dhxlist_txt_textarea");a.childNodes[1].childNodes[0].onchange=function(){a.callEvent("onChange",[a._idd,this.value])};return this}};(function(){for(var a in{doAddLabel:1,doAddInput:1,destruct:1,doUnloadNestedLists:1,setText:1,getText:1,enable:1,disable:1,setWidth:1})dhtmlXForm.prototype.items.file[a]=dhtmlXForm.prototype.items.input[a]})();
+dhtmlXForm.prototype.items.label={render:function(a,b){a._type="lb";a._enabled=!0;a._checked=!0;var c=document.createElement("DIV");c.className="dhxlist_txt_label2"+(b._isTopmost?" topmost":"");c.innerHTML=b.label;a.appendChild(c);b.hidden==!0&&this.hide(a);b.disabled==!0&&this.userDisable(a);if(!isNaN(b.labelWidth))c.style.width=parseInt(b.labelWidth)+"px";if(!isNaN(b.labelHeight))c.style.height=parseInt(b.labelHeight)+"px";if(!isNaN(b.labelLeft))c.style.left=parseInt(b.labelLeft)+"px";if(!isNaN(b.labelTop))c.style.top=
+parseInt(b.labelTop)+"px";return this},destruct:function(a){this.doUnloadNestedLists(a);a._autoCheck=null;a._enabled=null;a._type=null;a.callEvent=null;a.checkEvent=null;a.getForm=null;a.onselectstart=null;a.parentNode.removeChild(a);a=null},enable:function(a){if(String(a.className).search("disabled")>=0)a.className=String(a.className).replace(/disabled/gi,"");a._enabled=!0},disable:function(a){String(a.className).search("disabled")<0&&(a.className+=" disabled");a._enabled=!1},isEnabled:function(a){return a._enabled},
+setText:function(a,b){a.firstChild.innerHTML=b},getText:function(a){return a.firstChild.innerHTML}};(function(){for(var a in{doUnloadNestedLists:1})dhtmlXForm.prototype.items.label[a]=dhtmlXForm.prototype.items.checkbox[a]})();
+dhtmlXForm.prototype.items.button={render:function(a,b){a._type="bt";a._enabled=!0;a._cmd=b.command;a._name=b.name;a.className=String(a.className).replace("item_label_top","item_label_left").replace("item_label_right","item_label_left");if(!isNaN(b.width))var c=Math.max(b.width-10,0);a.innerHTML='<div class="dhx_list_btn" role="link" tabindex="0" dir="ltr" onkeypress="e=event||window.arguments[0];if((e.keyCode==32||e.charCode==32)&&!this.parentNode._busy){this.parentNode._busy=true;e.cancelBubble=true;e.returnValue=false;_dhxForm_doClick(this.childNodes[0],[\'mousedown\',\'mouseup\']);return false;}" ontouchstart="e=event;e.preventDefault();if(!this.parentNode._busy){this.parentNode._busy=true;_dhxForm_doClick(this.childNodes[0],[\'mousedown\',\'mouseup\']);}" onblur="_dhxForm_doClick(this.childNodes[0],\'mouseout\');" ><table cellspacing="0" cellpadding="0" border="0" align="left"><tr><td class="btn_l"><div class="btn_l">&nbsp;</div></td><td class="btn_m"><div class="btn_txt"'+
+(c!=null?' style="width:'+c+'px;"':"")+">"+b.value+'</div></td><td class="btn_r"><div class="btn_r">&nbsp;</div></td></tr></table></div>';if(!isNaN(b.inputLeft))a.childNodes[0].style.left=parseInt(b.inputLeft)+"px";if(!isNaN(b.inputTop))a.childNodes[0].style.top=parseInt(b.inputTop)+"px";b.hidden==!0&&this.hide(a);b.disabled==!0&&this.userDisable(a);a.onselectstart=function(a){a=a||event;a.cancelBubble=!0;return a.returnValue=!1};a.childNodes[0].onselectstart=function(a){a=a||event;a.cancelBubble=
+!0;return a.returnValue=!1};a.childNodes[0].childNodes[0].onmouseover=function(){var a=this.parentNode.parentNode;if(a._enabled)this._isOver=!0,this.className="dhx_list_btn_over",a=null};a.childNodes[0].childNodes[0].onmouseout=function(){var a=this.parentNode.parentNode;if(a._enabled)this.className="",this._isOver=this._pressed=this._allowClick=!1,a=null};a.childNodes[0].childNodes[0].onmousedown=function(){if(!this._pressed){var a=this.parentNode.parentNode;if(a._enabled)this.className="dhx_list_btn_pressed",
+this._pressed=this._allowClick=!0,a=null}};a.childNodes[0].childNodes[0].onmouseup=function(){if(this._pressed){var a=this.parentNode.parentNode;if(a._enabled)a._busy=!1,this.className=this._isOver?"dhx_list_btn_over":"",this._pressed&&this._allowClick&&a.callEvent("_onButtonClick",[a._name,a._cmd]),this._pressed=this._allowClick=!1,a=null}};return this},destruct:function(a){this.doUnloadNestedLists(a);a.callEvent=null;a.checkEvent=null;a.getForm=null;a._autoCheck=null;a._type=null;a._enabled=null;
+a._cmd=null;a._name=null;a.onselectstart=null;a.childNodes[0].onselectstart=null;a.childNodes[0].onkeypress=null;a.childNodes[0].ontouchstart=null;a.childNodes[0].onblur=null;a.childNodes[0].childNodes[0].onmouseover=null;a.childNodes[0].childNodes[0].onmouseout=null;a.childNodes[0].childNodes[0].onmousedown=null;for(a.childNodes[0].childNodes[0].onmouseup=null;a.childNodes.length>0;)a.removeChild(a.childNodes[0]);a.parentNode.removeChild(a);a=null},enable:function(a){if(String(a.className).search("disabled")>=
+0)a.className=String(a.className).replace(/disabled/gi,"");a._enabled=!0;a.childNodes[0].tabIndex=0;a.childNodes[0].removeAttribute("disabled")},disable:function(a){String(a.className).search("disabled")<0&&(a.className+=" disabled");a._enabled=!1;a.childNodes[0].tabIndex=-1;a.childNodes[0].setAttribute("disabled","true")},isEnabled:function(a){return a._enabled},setText:function(a,b){a.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0].innerHTML=b},getText:function(a){return a.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[0].innerHTML}};
+(function(){for(var a in{doUnloadNestedLists:1})dhtmlXForm.prototype.items.button[a]=dhtmlXForm.prototype.items.checkbox[a]})();
+dhtmlXForm.prototype.items.hidden={render:function(a,b){a.style.display="none";a._name=b.name;a._type="hd";a._enabled=!0;var c=document.createElement("INPUT");c.type="HIDDEN";c.name=b.name;c.value=b.value||"";a.appendChild(c);return this},destruct:function(a){for(this.doUnloadNestedLists(a);a.childNodes.length>0;)a.removeChild(a.childNodes[0]);a._autoCheck=null;a._name=null;a._type=null;a._enabled=null;a.onselectstart=null;a.callEvent=null;a.checkEvent=null;a.getForm=null;a.parentNode.removeChild(a);
+a=null},enable:function(a){a._enabled=!0;a.childNodes[0].setAttribute("name",a._name)},disable:function(a){a._enabled=!1;a.childNodes[0].removeAttribute("name")},isEnabled:function(a){return a._enabled},show:function(){},hide:function(){},isHidden:function(){return!0},setValue:function(a,b){a.childNodes[0].value=b},getValue:function(a){return a.childNodes[0].value}};(function(){for(var a in{doUnloadNestedLists:1})dhtmlXForm.prototype.items.hidden[a]=dhtmlXForm.prototype.items.checkbox[a]})();
+dhtmlXForm.prototype.items.list={render:function(a){a._type="list";a._enabled=!0;a._isNestedForm=!0;a.className="dhxlist_base_nested";return[this,new dhtmlXForm(a)]},destruct:function(){}};
+dhtmlXForm.prototype.items.fieldset={render:function(a,b){a._type="fs";a._width=b.width;a._enabled=!0;a._checked=!0;a.className="fs_"+b.position+(typeof b.className=="string"?" "+b.className:"");var c=document.createElement("FIELDSET");c.className="dhxlist_fs";var d=String(b.labelAlign).replace("align_","");c.innerHTML="<legend class='fs_legend' align='"+d+"' style='text-align:"+d+"'>"+b.label+"</legend>";a.appendChild(c);if(!isNaN(b.inputLeft))c.style.left=parseInt(b.inputLeft)+"px";if(!isNaN(b.inputTop))c.style.top=
+parseInt(b.inputTop)+"px";if(b.inputWidth!="auto"&&!isNaN(b.inputWidth))c.style.width=parseInt(b.inputWidth)+"px";a._addSubListNode=function(){var a=document.createElement("DIV");this.childNodes[0].appendChild(a);return a};b.hidden==!0&&this.hide(a);b.disabled==!0&&this.userDisable(a);return this},destruct:function(a){this.doUnloadNestedLists(a);a._checked=null;a._enabled=null;a._idd=null;a._type=null;a._width=null;a.onselectstart=null;a._addSubListNode=null;a._autoCheck=null;a.callEvent=null;a.checkEvent=
+null;for(a.getForm=null;a.childNodes.length>0;)a.removeChild(a.childNodes[0]);a.parentNode.removeChild(a);a=null},setText:function(a,b){a.childNodes[0].childNodes[0].innerHTML=b},getText:function(a){return a.childNodes[0].childNodes[0].innerHTML},enable:function(a){a._enabled=!0;if(String(a.className).search("disabled")>=0)a.className=String(a.className).replace(/disabled/gi,"")},disable:function(a){a._enabled=!1;String(a.className).search("disabled")<0&&(a.className+=" disabled")},isEnabled:function(a){return a._enabled},
+setWidth:function(a,b){a.childNodes[0].style.width=b+"px";a._width=b},getWidth:function(a){return a._width}};(function(){for(var a in{doUnloadNestedLists:1})dhtmlXForm.prototype.items.fieldset[a]=dhtmlXForm.prototype.items.checkbox[a]})();
+dhtmlXForm.prototype.items.block={render:function(a,b){a._type="bl";a._width=b.width;a._enabled=!0;a._checked=!0;a.className="block_"+b.position+(typeof b.className=="string"?" "+b.className:"");var c=document.createElement("DIV");c.className="dhxlist_block";if(b.style)c.style.cssText=b.style;a.appendChild(c);if(!isNaN(b.inputLeft))c.style.left=parseInt(b.inputLeft)+"px";if(!isNaN(b.inputTop))c.style.top=parseInt(b.inputTop)+"px";if(b.inputWidth!="auto"&&!isNaN(b.inputWidth))c.style.width=parseInt(b.inputWidth)+
+"px";a._addSubListNode=function(){var a=document.createElement("DIV");a._inBlcok=!0;this.childNodes[0].appendChild(a);return a};b.hidden==!0&&this.hide(a);b.disabled==!0&&this.userDisable(a);return this}};(function(){for(var a in{enable:1,disable:1,isEnabled:1,setWidth:1,getWidth:1,doUnloadNestedLists:1,destruct:1})dhtmlXForm.prototype.items.block[a]=dhtmlXForm.prototype.items.fieldset[a]})();dhtmlXForm.prototype.items.newcolumn={};
+dhtmlXForm.prototype.items.template={render:function(a,b){var c=!isNaN(b.rows);a._type="tp";a._enabled=!0;if(b.format){if(typeof b.format=="function")a.format=b.format;if(typeof window[b.format]=="function")a.format=window[b.format]}if(!a.format)a.format=function(a,b){return b};this.doAddLabel(a,b);this.doAddInput(a,b,"DIV",null,!0,!0,"dhxlist_item_template");a._value=b.value||"";a.childNodes[1].childNodes[0].innerHTML=a.format(a._idd,a._value);return this},setValue:function(a,b){a._value=b;a.childNodes[1].childNodes[0].innerHTML=
+a.format(a._idd,a._value)},getValue:function(a){return a._value},enable:function(a){if(String(a.className).search("disabled")>=0)a.className=String(a.className).replace(/disabled/gi,"");a._enabled=!0},disable:function(a){String(a.className).search("disabled")<0&&(a.className+=" disabled");a._enabled=!1}};(function(){for(var a in{doAddLabel:1,doAddInput:1,destruct:1,doUnloadNestedLists:1,setText:1,getText:1,enable:1,disable:1,setWidth:1})dhtmlXForm.prototype.items.template[a]=dhtmlXForm.prototype.items.select[a]})();
+dhtmlXForm.prototype._ulToObject=function(a,b){for(var c=[],d=0;d<a.childNodes.length;d++){if(String(a.childNodes[d].tagName||"").toLowerCase()=="li"){for(var e={},f=a.childNodes[d],g=0;g<b.length;g++)f.getAttribute(b[g])!=null&&(e[String(b[g]).replace("ftype","type")]=f.getAttribute(b[g]));if(!e.label)try{e.label=f.firstChild.nodeValue}catch(h){}var i=f.getElementsByTagName("UL");i[0]!=null&&(e[e.type=="select"?"options":"list"]=dhtmlXForm.prototype._ulToObject(i[0],b));c[c.length]=e}if(String(a.childNodes[d].tagName||
+"").toLowerCase()=="div"){e={type:"label"};try{e.label=a.childNodes[d].firstChild.nodeValue}catch(j){}c[c.length]=e}}return c};
+dhtmlxEvent(window,"load",function(){for(var a="ftype,name,value,label,check,checked,disabled,text,rows,select,selected,command,width,style,labelWidth,labelHeight,labelLeft,labelTop,inputWidth,inputHeight,inputLeft,inputTop,position,size".split(","),b=document.getElementsByTagName("UL"),c=[],d=0;d<b.length;d++)if(b[d].className=="dhtmlxForm"){var e=document.createElement("DIV");c[c.length]={nodeUL:b[d],nodeForm:e,data:dhtmlXForm.prototype._ulToObject(b[d],a),name:b[d].getAttribute("name")||null}}for(d=
+0;d<c.length;d++){c[d].nodeUL.parentNode.insertBefore(c[d].nodeForm,c[d].nodeUL);var f=new dhtmlXForm(c[d].nodeForm,c[d].data);c[d].name!==null&&(window[c[d].name]=f);var g=c[d].nodeUL.getAttribute("oninit")||null;c[d].nodeUL.parentNode.removeChild(c[d].nodeUL);c[d].nodeUL=null;c[d].nodeForm=null;c[d].data=null;c[d]=null;if(g)if(typeof g=="function")g();else if(typeof window[g]=="function")window[g]()}});
+if(window.dhtmlXContainer){if(!dhtmlx.attaches)dhtmlx.attaches={};dhtmlx.attaches.attachForm||(dhtmlx.attaches.attachForm=function(a){var b=document.createElement("DIV");b.id="dhxFormObj_"+this._genStr(12);b.style.position="relative";b.style.width="100%";b.style.height="100%";b.style.overflow="auto";b.cmp="form";this.attachObject(b);this.vs[this.av].form=new dhtmlXForm(b,a);this.vs[this.av].form.setSkin(this.skin);this.vs[this.av].form.setSizes();this.vs[this.av].formObj=b;return this.vs[this.av].form});
+if(!dhtmlx.detaches)dhtmlx.detaches={};dhtmlx.detaches.detachForm||(dhtmlx.detaches.detachForm=function(a){if(a.form)a.form.unload(),a.form=null,a.formObj=null,a.attachForm=null})}dhtmlXForm.prototype.setUserData=function(a,b,c){if(!this._userdata)this._userdata={};this._userdata[a]=this._userdata[a]||{};this._userdata[a][b]=c};dhtmlXForm.prototype.getUserData=function(a,b){return this._userdata?(this._userdata[a]||{})[b]||"":""};
+dhtmlXForm.prototype.setRTL=function(a){this._rtl=a===!0?!0:!1;this.base.className=this._rtl?"dhxform_rtl":""};_dhxForm_doClick=function(a,b){if(typeof b=="object")var c=b[1],b=b[0];if(document.createEvent){var d=document.createEvent("MouseEvents");d.initEvent(b,!0,!1);a.dispatchEvent(d)}else if(document.createEventObject)d=document.createEventObject(),d.button=1,a.fireEvent("on"+b,d);c&&window.setTimeout(function(){_dhxForm_doClick(a,c)},100)};
+dhtmlXForm.prototype.setFormData=function(a){for(var b in a){var c=this.getItemType(b);switch(c){case "checkbox":this[a[b]==!0||parseInt(a[b])==1||a[b]=="true"?"checkItem":"uncheckItem"](b);break;case "radio":this.checkItem(b,a[b]);break;case "input":case "textarea":case "select":case "hidden":case "template":case "combo":case "calendar":case "editor":this.setItemValue(b,a[b]);break;default:if(this["setFormData_"+c])this["setFormData_"+c](b,a[b]);else{if(!this.hId)this.hId=this._genStr(12);this.setUserData(this.hId,
+b,a[b])}}}};
+dhtmlXForm.prototype.getFormData=function(a,b){var c={},d=this,e;for(e in this.itemPull){var f=this.itemPull[e]._idd,g=this.itemPull[e]._type;g=="ch"&&(c[f]=this.isItemChecked(f)?1:0);g=="ra"&&!c[this.itemPull[e]._group]&&(c[this.itemPull[e]._group]=this.getCheckedValue(this.itemPull[e]._group));g in{se:1,ta:1,pw:1,hd:1,tp:1,calendar:1,combo:1,editor:1}&&(c[f]=this.getItemValue(f,a));this["getFormData_"+g]&&(c[f]=this["getFormData_"+g](f));if(this.itemPull[e]._list)for(var h=0;h<this.itemPull[e]._list.length;h++){var i=this.itemPull[e]._list[h].getFormData(b),
+j;for(j in i)c[j]=i[j]}}if(!b&&this.hId&&this._userdata[this.hId])for(e in this._userdata[this.hId])c[e]||(c[e]=this._userdata[this.hId][e]);return c};_dhxForm_isIPad=navigator.userAgent.search(/iPad/gi)>=0;
+dhtmlXForm.prototype.load=function(a,b,c){var d=this;d.callEvent("onXLS",[]);typeof b=="function"&&(c=b,b="xml");dhtmlxAjax.get(a,function(e){var f={};if(b=="json")eval("data="+e.xmlDoc.responseText);else for(var g=e.doXPath("//data/*"),h=0;h<g.length;h++)f[g[h].tagName]=g[h].firstChild?g[h].firstChild.nodeValue:"";var i=a.match(/(\?|\&)id\=([a-z0-9_]*)/i);i&&i[0]&&(i=i[0].split("=")[1]);if(d.callEvent("onBeforeDataLoad",[i,f]))d.formId=i,d._last_load_data=f,d.setFormData(f),d.resetDataProcessor("updated");
+d.callEvent("onXLE",[]);c&&c.call(this)})};dhtmlXForm.prototype.reset=function(){this.callEvent("onBeforeReset",[this.formId,this.getFormData()])&&(this._last_load_data&&this.setFormData(this._last_load_data),this.callEvent("onAfterReset",[this.formId]))};
+dhtmlXForm.prototype.send=function(a,b,c){typeof b=="function"&&(c=b,b="post");if(this.validate()){var d=this.getFormData(),e=[],f;for(f in d)e.push(f+"="+encodeURIComponent(d[f]));var g=function(a){c&&c.call(this,a,a.xmlDoc.responseText)};b=="get"?dhtmlxAjax.get(a+(a.indexOf("?")==-1?"?":"&")+e.join("&"),g):dhtmlxAjax.post(a,e.join("&"),g)}};dhtmlXForm.prototype.save=function(){};dhtmlXForm.prototype.dummy=function(){};dhtmlXForm.prototype._changeFormId=function(a,b){this.formId=b};
+dhtmlXForm.prototype._dp_init=function(a){a._methods=["dummy","dummy","_changeFormId","dummy"];a._getRowData=function(a){var c=this.obj.getFormData();c[this.action_param]=this.obj.getUserData(a,this.action_param);return c};a._clearUpdateFlag=function(){};a.attachEvent("onAfterUpdate",function(a,c,d,e){if(c=="inserted"||c=="updated")this.obj.resetDataProcessor("updated"),this.obj._last_load_data=this.obj.getFormData();this.obj.callEvent("onAfterSave",[this.obj.formId,e]);return!0});a.autoUpdate=!1;
+a.setTransactionMode("POST",!0);this.dp=a;this.formId=(new Date).valueOf();this.resetDataProcessor("inserted");this.save=function(){this.callEvent("onBeforeSave",[this.formId,this.getFormData()])&&this.validate()&&a.sendData()}};dhtmlXForm.prototype.resetDataProcessor=function(a){if(this.dp)this.dp.updatedRows=[],this.dp._in_progress=[],this.dp.setUpdated(this.formId,!0,a)};dhtmlxValidation=function(){};
+dhtmlxValidation.prototype={isEmpty:function(a){return a==""},isNotEmpty:function(a){return!a==""},isValidBoolean:function(a){return!!a.match(/^(0|1|true|false)$/)},isValidEmail:function(a){return!!a.match(/(^[a-z]([a-z0-9_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\-\.]*)(\.[a-z]{2,3})$)/i)},isValidInteger:function(a){return!!a.match(/(^-?\d+$)/)},isValidNumeric:function(a){return!!a.match(/(^-?\d\d*[\.|,]\d*$)|(^-?\d\d*$)|(^-?[\.|,]\d\d*$)/)},isValidAplhaNumeric:function(a){return!!a.match(/^[_\-a-z0-9]+$/gi)},
+isValidDatetime:function(a){var b=a.match(/^(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})$/);return b&&!!(b[1]<=9999&&b[2]<=12&&b[3]<=31&&b[4]<=59&&b[5]<=59&&b[6]<=59)||!1},isValidDate:function(a){var b=a.match(/^(\d{4})-(\d{2})-(\d{2})$/);return b&&!!(b[1]<=9999&&b[2]<=12&&b[3]<=31)||!1},isValidTime:function(a){var b=a.match(/^(\d{1,2}):(\d{1,2}):(\d{1,2})$/);return b&&!!(b[1]<=24&&b[2]<=59&&b[3]<=59)||!1},isValidIPv4:function(a){var b=a.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);return b&&
+!!(b[1]<=255&&b[2]<=255&&b[3]<=255&&b[4]<=255)||!1},isValidCurrency:function(a){return a.match(/^\$?\s?\d+?[\.,\,]?\d+?\s?\$?$/)&&!0||!1},isValidSSN:function(a){return a.match(/^\d{3}\-?\d{2}\-?\d{4}$/)&&!0||!1},isValidSIN:function(a){return a.match(/^\d{9}$/)&&!0||!1}};dhtmlxValidation=new dhtmlxValidation;
+dhtmlXForm.prototype.items.calendar={ev:!1,inp:null,calendar:{},f:{},f0:{},render:function(a,b){var c=this;a._type="calendar";a._enabled=!0;this.doAddLabel(a,b);this.doAddInput(a,b,"INPUT","TEXT",!0,!0,"dhxlist_txt_textarea");this.f[a._idd]=b.dateFormat||"%d-%m-%Y";this.f0[a._idd]=b.serverDateFormat||this.f[a._idd];a._value=b.value?b.value instanceof Date?b.value:this.strToDate(a,b.value):"";a.childNodes[1].childNodes[0].value=this.getFValue(a,a._value,this.f[a._idd]);this.calendar[a._idd]=new dhtmlXCalendarObject(a.childNodes[1].childNodes[0]);
+this.calendar[a._idd].setSkin(b.skin||"dhx_skyblue");this.calendar[a._idd].setDateFormat(this.f[a._idd]);b.enableTime||this.calendar[a._idd].hideTime();typeof b.calendarPosition!="undefined"&&this.calendar[a._idd].setPosition(b.calendarPosition);this.calendar[a._idd]._itemIdd=a._idd;this.calendar[a._idd].attachEvent("onBeforeChange",function(b){if(a._value!=b){if(a.checkEvent("onBeforeChange")&&a.callEvent("onBeforeChange",[a._idd,a._value,b])!==!0)return!1;a._value=b;c.setValue(a,b);a.callEvent("onChange",
+[this._itemIdd,a._value])}return!0});a.childNodes[1].childNodes[0]._idd=a._idd;return this},getCalendar:function(a){return this.calendar[a._idd]},getFValue:function(a,b,c){if(b instanceof Date)var d=function(a){return String(a).length==1?"0"+String(a):a},e=function(a){switch(a){case "%Y":return b.getFullYear();case "%m":return d(b.getMonth()+1);case "%n":return date.getMonth()+1;case "%d":return d(b.getDate());case "%j":return b.getDate();case "%y":return d(b.getYear()%100);case "%D":return{0:"Su",
+1:"Mo",2:"Tu",3:"We",4:"Th",5:"Fr",6:"Sa"}[b.getDay()];case "%l":return{0:"Sunday",1:"Monday",2:"Tuesday",3:"Wednesday",4:"Thursday",5:"Friday",6:"Saturday"}[b.getDay()];case "%M":return{0:"Jan",1:"Feb",2:"Mar",3:"Apr",4:"May",5:"Jun",6:"Jul",7:"Aug",8:"Sep",9:"Oct",10:"Nov",11:"Dec"}[b.getMonth()];case "%F":return{0:"January",1:"February",2:"March",3:"April",4:"May",5:"June",6:"July",7:"August",8:"September",9:"October",10:"November",11:"December"}[b.getMonth()];case "%H":return d(b.getHours());
+case "%h":return d((b.getHours()+11)%12+1);case "%i":return d(b.getMinutes());case "%s":return d(b.getSeconds());case "%a":return b.getHours()>11?"pm":"am";case "%A":return b.getHours()>11?"PM":"AM";default:return a}},f=String(c).replace(/%[a-zA-Z]/g,e);return f||String(b)},strToDate:function(a,b){for(var c={Y:0,m:0,d:0,H:0,i:0,s:0},d=String(b).match(/[0-9]{1,}/g),e=this.f0[a._idd].match(/%[a-zA-Z]/g),f=0;f<e.length;f++){var g=e[f].replace(/%/g,"");typeof c[g]!="undefined"&&(c[g]=Number(d[f]))}return new Date(c.Y,
+c.m-1,c.d,c.H,c.i,c.s,0)},setValue:function(a,b){a._value=b instanceof Date?b:this.strToDate(a,b);a.childNodes[1].childNodes[0].value=this.getFValue(a,a._value,this.f[a._idd])},getValue:function(a,b){return b===!0?this.getFValue(a,a._value,this.f0[a._idd]):a._value},destruct:function(a){this.calendar[a._idd].unload();this.calendar[a._idd]=null;try{delete this.calendar[a._idd]}catch(b){}this.f[a._idd]=null;try{delete this.f[a._idd]}catch(c){}this.cz[a._idd].parentNode.removeChild(this.cz[a._idd]);
+this.cz[a._idd]=null;try{delete this.cz[a._idd]}catch(d){}var e=0,f;for(f in this.calendar)e++;if(e==0)_isIE?document.body.detachEvent("onclick",this.clickEvent):window.removeEventListener("click",this.clickEvent,!1),this.ev=!1;a.childNodes[1].childNodes[0]._idd=null;a.childNodes[1].childNodes[0].onkeypress=null;this.d2(a);a=null}};
+(function(){for(var a in{doAddLabel:1,doAddInput:1,doUnloadNestedLists:1,setText:1,getText:1,enable:1,disable:1,setWidth:1,setReadonly:1,isReadonly:1,setFocus:1,getInput:1})dhtmlXForm.prototype.items.calendar[a]=dhtmlXForm.prototype.items.input[a]})();dhtmlXForm.prototype.items.calendar.d2=dhtmlXForm.prototype.items.input.destruct;dhtmlXForm.prototype.getCalendar=function(a){return this.doWithItem(a,"getCalendar")};
+dhtmlXForm.prototype.items.colorpicker={ev:!1,inp:null,colorpicker:{},cz:{},render:function(a,b){var c=this;a._type="colorpicker";a._enabled=!0;this.doAddLabel(a,b);this.doAddInput(a,b,"INPUT","TEXT",!0,!0,"dhxlist_txt_textarea");a._value=b.value||"";a.childNodes[1].childNodes[0].value=a._value;this.cz[a._idd]=document.createElement("DIV");this.cz[a._idd].style.position="absolute";this.cz[a._idd].style.top="0px";this.cz[a._idd].style.zIndex=1;document.body.insertBefore(this.cz[a._idd],document.body.firstChild);
+this.colorpicker[a._idd]=new dhtmlXColorPicker(this.cz[a._idd],null,null,!0);this.colorpicker[a._idd].setImagePath(b.imagePath||"");this.colorpicker[a._idd].init();this.colorpicker[a._idd].elements.cs_Content.onclick=function(a){(a||event).cancelBubble=!0};this.colorpicker[a._idd].setOnSelectHandler(function(b){if(a._value!=b&&!(a.checkEvent("onBeforeChange")&&a.callEvent("onBeforeChange",[a._idd,a._value,b])!==!0))a._value=b,c.setValue(a,b),a.callEvent("onChange",[a._idd,a._value])});a.childNodes[1].childNodes[0]._idd=
+a._idd;a.childNodes[1].childNodes[0].onclick=function(){c.colorpicker[this._idd].isVisible()?(c.colorpicker[this._idd].hide(),c.inp=null):(c.colorpicker[this._idd].setPosition(getAbsoluteLeft(this),getAbsoluteTop(this)+this.offsetHeight-1),c.colorpicker[this._idd].setColor(a._value),c.colorpicker[this._idd].show(),c.inp=this._idd)};if(!this.ev)_isIE?document.body.attachEvent("onclick",this.clickEvent):window.addEventListener("click",this.clickEvent,!1),this.ev=!0;return this},clickEvent:function(){dhtmlXForm.prototype.items.colorpicker.hideAllColorPickers()},
+hideAllColorPickers:function(){for(var a in this.colorpicker)a!=this.inp&&this.colorpicker[a].hide();this.inp=null},getColorPicker:function(a){return this.colorpicker[a._idd]},destruct:function(a){this.colorpicker[a._idd].elements.cs_Content.onclick=null;this.colorpicker[a._idd].unload();this.colorpicker[a._idd]=null;try{delete this.colorpicker[a._idd]}catch(b){}this.cz[a._idd].parentNode.removeChild(this.cz[a._idd]);this.cz[a._idd]=null;try{delete this.cz[a._idd]}catch(c){}var d=0,e;for(e in this.colorpicker)d++;
+if(d==0)_isIE?document.body.detachEvent("onclick",this.clickEvent):window.removeEventListener("click",this.clickEvent,!1),this.ev=!1;a.childNodes[1].childNodes[0]._idd=null;this.d2(a);a=null}};(function(){for(var a in{doAddLabel:1,doAddInput:1,doUnloadNestedLists:1,setText:1,getText:1,enable:1,disable:1,setWidth:1,setReadonly:1,isReadonly:1,setValue:1,getValue:1,setFocus:1,getInput:1})dhtmlXForm.prototype.items.colorpicker[a]=dhtmlXForm.prototype.items.input[a]})();
+dhtmlXForm.prototype.items.colorpicker.d2=dhtmlXForm.prototype.items.input.destruct;dhtmlXForm.prototype.getColorPicker=function(a){return this.doWithItem(a,"getColorPicker")};
+dhtmlXColorPicker.prototype.unload=function(){this.elements.cs_SelectorVer.parentNode.removeChild(this.elements.cs_SelectorVer);this.elements.cs_SelectorHor.parentNode.removeChild(this.elements.cs_SelectorHor);this.elements.cs_SelectorVer=null;this.elements.cs_SelectorHor=null;this.elements.cs_SelectorDiv.ondblclick=null;this.elements.cs_SelectorDiv.onmousedown=null;this.elements.cs_SelectorDiv.z=null;this.elements.cs_SelectorDiv.parentNode.removeChild(this.elements.cs_SelectorDiv);this.elements.cs_SelectorDiv=
+null;this.elements.cs_LumSelectArrow.onmousedown=null;this.elements.cs_LumSelectArrow.z=null;this.elements.cs_LumSelectArrow.parentNode.removeChild(this.elements.cs_LumSelectArrow);this.elements.cs_LumSelectArrow=null;this.elements.cs_LumSelectLine.parentNode.removeChild(this.elements.cs_LumSelectLine);for(this.elements.cs_LumSelectLine=null;this.elements.cs_LumSelect.childNodes.length>0;)this.elements.cs_LumSelect.removeChild(this.elements.cs_LumSelect.childNodes[0]);this.elements.cs_LumSelect.ondblclick=
+null;this.elements.cs_LumSelect.onmousedown=null;this.elements.cs_LumSelect.z=null;this.elements.cs_LumSelect.parentNode.removeChild(this.elements.cs_LumSelect);this.elements.cs_LumSelect=null;this.elements.cs_EndColor.parentNode.removeChild(this.elements.cs_EndColor);this.elements.cs_EndColor=null;this.elements.cs_InputHue.onchange=null;this.elements.cs_InputHue.z=null;this.elements.cs_InputHue.parentNode.removeChild(this.elements.cs_InputHue);this.elements.cs_InputHue=null;this.elements.cs_InputRed.onchange=
+null;this.elements.cs_InputRed.z=null;this.elements.cs_InputRed.parentNode.removeChild(this.elements.cs_InputRed);this.elements.cs_InputRed=null;this.elements.cs_InputSat.onchange=null;this.elements.cs_InputSat.z=null;this.elements.cs_InputSat.parentNode.removeChild(this.elements.cs_InputSat);this.elements.cs_InputSat=null;this.elements.cs_InputGreen.onchange=null;this.elements.cs_InputGreen.z=null;this.elements.cs_InputGreen.parentNode.removeChild(this.elements.cs_InputGreen);this.elements.cs_InputGreen=
+null;this.elements.cs_Hex.onchange=null;this.elements.cs_Hex.z=null;this.elements.cs_Hex.parentNode.removeChild(this.elements.cs_Hex);this.elements.cs_Hex=null;this.elements.cs_InputLum.onchange=null;this.elements.cs_InputLum.z=null;this.elements.cs_InputLum.parentNode.removeChild(this.elements.cs_InputLum);this.elements.cs_InputLum=null;this.elements.cs_InputBlue.onchange=null;this.elements.cs_InputBlue.z=null;this.elements.cs_InputBlue.parentNode.removeChild(this.elements.cs_InputBlue);this.elements.cs_InputBlue=
+null;this.elements.cs_ButtonOk.onclick=null;this.elements.cs_ButtonOk.onmouseout=null;this.elements.cs_ButtonOk.onmouseover=null;this.elements.cs_ButtonOk.z=null;this.elements.cs_ButtonOk.parentNode.removeChild(this.elements.cs_ButtonOk);this.elements.cs_ButtonOk=null;this.elements.cs_ButtonCancel.onclick=null;this.elements.cs_ButtonCancel.onmouseout=null;this.elements.cs_ButtonCancel.onmouseover=null;this.elements.cs_ButtonCancel.z=null;this.elements.cs_ButtonCancel.parentNode.removeChild(this.elements.cs_ButtonCancel);
+this.elements.cs_ButtonCancel=null;this.elements.cs_ContentTable.parentNode.removeChild(this.elements.cs_ContentTable);this.elements.cs_ContentTable=null;this.elements.cs_Content.parentNode.removeChild(this.elements.cs_Content);this.z=this.elements.cs_Content=null;this.detachAllEvents();this.customColors=this.linkToObjects=this.language=this.elements=this.container=this._changeValueHEX=this._changeValueRGB=this._changeValueHSV=this._selectCustomColor=this._getColorHEX=this._reinitCustomColors=this._initCustomColors=
+this._hex2dec=this._dec2hex=this._colorizeLum=this._drawLum=this._rgb2hsv=this._hsv2rgb=this._drawValues=this._calculateColor=this._getOffsetLeft=this._getOffsetTop=this._getOffset=this._stopMoveLum=this._mouseMoveLum=this._startMoveLum=this._stopMoveColor=this._mouseMoveColor=this._startMoveColor=this._setLumPos=this._getScrollers=this._setCrossPos=this._initEvents=this._initCsIdElement=this.unload=this.showA=this.show=this.normalButton=this.hoverButton=this.isVisible=this.setSkin=this.loadUserLanguage=
+this.init=this.setImagePath=this.hideOnSelect=this.linkTo=this.getSelectedColor=this.setOnCancelHandler=this.setOnSelectHandler=this.hide=this.setPosition=this.close=this.setColor=this.setCustomColors=this.redraw=this.restoreFromHEX=this.restoreFromHSV=this.restoreFromRGB=this.addCustomColor=this.restoreColor=this.saveColor=this.clickCancel=this.clickOk=this.resetHandlers=this.generate=this.detachAllEvents=this.detachEvent=this.eventCatcher=this.checkEvent=this.callEvent=this.attachEvent=null};
+dhtmlXForm.prototype.items.combo={render:function(a,b){a._type="combo";a._enabled=!0;a._value=null;a._newValue=null;this.doAddLabel(a,b);this.doAddInput(a,b,"SELECT",null,!0,!0,"dhxlist_txt_select");this.doAttachEvents(a);this.doLoadOpts(a,b);a.childNodes[1].childNodes[0].opt_type=b.comboType||"";a._combo=new dhtmlXComboFromSelect(a.childNodes[1].childNodes[0]);a._combo._currentComboValue=a._combo.getSelectedValue();a._combo.DOMelem_input.id=b.uid;b.connector&&a._combo.loadXML(b.connector);b.filtering&&
+a._combo.enableFilteringMode(!0);b.readonly==!0&&this.setReadonly(a,!0);b.style&&(a._combo.DOMelem_input.style.cssText+=b.style);return this},destruct:function(a){a._combo._currentComboValue=null;a._combo.destructor();a._combo=null;a._apiChange=null;this.d2(a);a=null},doOnChange:function(a){var b=a.DOMParent.parentNode.parentNode;if(!b._apiChange){a._newComboValue=a.getSelectedValue();if(a._newComboValue!=a._currentComboValue){if(b.checkEvent("onBeforeChange")&&b.callEvent("onBeforeChange",[b._idd,
+a._currentComboValue,a._newComboValue])!==!0)return window.setTimeout(function(){a.setComboValue(a._currentComboValue)},1),!1;a._currentComboValue=a._newComboValue;b.callEvent("onChange",[b._idd,a._currentComboValue])}b._autoCheck()}},enable:function(a){if(String(a.className).search("disabled")>=0)a.className=String(a.className).replace(/disabled/gi,"");a._enabled=!0;a._combo.disable(!1)},disable:function(a){String(a.className).search("disabled")<0&&(a.className+=" disabled");a._enabled=!1;a._combo.disable(!0)},
+getCombo:function(a){return a._combo},setValue:function(a,b){a._apiChange=!0;a._combo.setComboValue(b);a._combo._currentComboValue=a._combo.getSelectedValue();a._apiChange=!1},getValue:function(a){return a._combo.getSelectedValue()},setWidth:function(a,b){a.childNodes[1].childNodes[0].style.width=b+"px"},setReadonly:function(a,b){a._combo_ro=b;a._combo.readonly(a._combo_ro)},isReadonly:function(a){return a._combo_ro||!1}};
+(function(){for(var a in{doAddLabel:1,doAddInput:1,doAttachEvents:1,doLoadOpts:1,doUnloadNestedLists:1,setText:1,getText:1})dhtmlXForm.prototype.items.combo[a]=dhtmlXForm.prototype.items.select[a]})();dhtmlXForm.prototype.items.combo.d2=dhtmlXForm.prototype.items.select.destruct;dhtmlXForm.prototype.getCombo=function(a){return this.doWithItem(a,"getCombo")};
+dhtmlXForm.prototype.items.editor={editor:{},render:function(a,b){var c=!isNaN(b.rows);a._type="editor";a._enabled=!0;this.doAddLabel(a,b);this.doAddInput(a,b,"DIV",null,!0,!0,"dhxlist_item_template");a._value=b.value||"";a.childNodes[1].childNodes[0].className+=" dhxeditor_inside";var d=this;this.editor[a._idd]=new dhtmlXEditor(a.childNodes[1].childNodes[0]);this.editor[a._idd].setContent(a._value);this.editor[a._idd].attachEvent("onAccess",function(b,c){_dhxForm_doClick(document.body,"click");b==
+"blur"&&d.doOnBlur(a,this);a.callEvent("onEditorAccess",[a._idd,b,c,this,a.getForm()])});this.editor[a._idd].attachEvent("onToolbarClick",function(b){a.callEvent("onEditorToolbarClick",[a._idd,b,this,a.getForm()])});a.childNodes[0].childNodes[0].removeAttribute("for");a.childNodes[0].childNodes[0].onclick=function(){d.editor[a._idd]._focus()};return this},doOnBlur:function(a,b){var c=b.getContent();if(a._value!=c)a.checkEvent("onBeforeChange")&&a.callEvent("onBeforeChange",[a._idd,a._value,c])!==
+!0?b.setContent(a._value):(a._value=c,a.callEvent("onChange",[a._idd,c]))},setValue:function(a,b){if(a._value!=b)a._value=b,this.editor[a._idd].setContent(a._value)},getValue:function(a){a._value=this.editor[a._idd].getContent();return a._value},enable:function(a){this.editor[a._idd].setReadonly(!1);this.doEn(a)},disable:function(a){this.editor[a._idd].setReadonly(!0);this.doDis(a)},getEditor:function(a){return this.editor[a._idd]||null},destruct:function(a){a.childNodes[0].childNodes[0].onclick=
+null;this.editor[a._idd].unload();this.editor[a._idd]=null;this.d2(a);a=null},setFocus:function(a){this.editor[a._idd]._focus()}};(function(){for(var a in{doAddLabel:1,doAddInput:1,doUnloadNestedLists:1,setText:1,getText:1,setWidth:1})dhtmlXForm.prototype.items.editor[a]=dhtmlXForm.prototype.items.template[a]})();dhtmlXForm.prototype.items.editor.d2=dhtmlXForm.prototype.items.select.destruct;dhtmlXForm.prototype.items.editor.doEn=dhtmlXForm.prototype.items.select.enable;
+dhtmlXForm.prototype.items.editor.doDis=dhtmlXForm.prototype.items.select.disable;dhtmlXForm.prototype.getEditor=function(a){return this.doWithItem(a,"getEditor")};var globalActiveDHTMLGridObject;String.prototype._dhx_trim=function(){return this.replace(/&nbsp;/g," ").replace(/(^[ \t]*)|([ \t]*$)/g,"")};function dhtmlxArray(a){return dhtmlXHeir(a||[],dhtmlxArray._master)}
+dhtmlxArray._master={_dhx_find:function(a){for(var b=0;b<this.length;b++)if(a==this[b])return b;return-1},_dhx_insertAt:function(a,b){this[this.length]=null;for(var c=this.length-1;c>=a;c--)this[c]=this[c-1];this[a]=b},_dhx_removeAt:function(a){this.splice(a,1)},_dhx_swapItems:function(a,b){var c=this[a];this[a]=this[b];this[b]=c}};
+function dhtmlXGridObject(a){if(_isIE)try{document.execCommand("BackgroundImageCache",!1,!0)}catch(b){}a?typeof a=="object"?(this.entBox=a,this.entBox.id="cgrid2_"+this.uid()):this.entBox=document.getElementById(a):(this.entBox=document.createElement("DIV"),this.entBox.id="cgrid2_"+this.uid());this.entBox.innerHTML="";dhtmlxEventable(this);var c=this;this._wcorr=0;this.fontWidth=7;this.row=this.cell=null;this.iconURL="";this.editor=null;this._dclE=this._f2kE=!0;this.combos=[];this.defVal=[];this.rowsAr=
+{};this.rowsBuffer=dhtmlxArray();this.rowsCol=dhtmlxArray();this._data_cache={};this._ecache={};this._ud_enabled=!0;this.xmlLoader=new dtmlXMLLoaderObject(this.doLoadDetails,this,!0,this.no_cashe);this._maskArr=[];this.selectedRows=dhtmlxArray();this.UserData={};this._sizeFix=this._borderFix=0;this.entBox.className+=" gridbox";this.entBox.style.width=this.entBox.getAttribute("width")||(window.getComputedStyle?this.entBox.style.width||window.getComputedStyle(this.entBox,null).width:this.entBox.currentStyle?
+this.entBox.currentStyle.width:this.entBox.style.width||0)||"100%";this.entBox.style.height=this.entBox.getAttribute("height")||(window.getComputedStyle?this.entBox.style.height||window.getComputedStyle(this.entBox,null).height:this.entBox.currentStyle?this.entBox.currentStyle.height:this.entBox.style.height||0)||"100%";this.entBox.style.cursor="default";this.entBox.onselectstart=function(){return!1};var d=function(a){var b=document.createElement("TABLE");b.cellSpacing=b.cellPadding=0;b.style.cssText=
+"width:100%;table-layout:fixed;";b.className=a.substr(2);return b};this.obj=d("c_obj");this.hdr=d("c_hdr");this.hdr.style.marginRight="20px";this.hdr.style.paddingRight="20px";this.objBox=document.createElement("DIV");this.objBox.style.width="100%";this.objBox.style.overflow="auto";this.objBox.appendChild(this.obj);this.objBox.className="objbox";this.hdrBox=document.createElement("DIV");this.hdrBox.style.width="100%";this.hdrBox.style.height="25px";this.hdrBox.style.overflow="hidden";this.hdrBox.className=
+"xhdr";this.preloadImagesAr=[];this.sortImg=document.createElement("IMG");this.sortImg.style.display="none";this.hdrBox.appendChild(this.sortImg);this.hdrBox.appendChild(this.hdr);this.hdrBox.style.position="relative";this.entBox.appendChild(this.hdrBox);this.entBox.appendChild(this.objBox);this.entBox.grid=this;this.objBox.grid=this;this.hdrBox.grid=this;this.obj.grid=this;this.hdr.grid=this;this.cellWidthPX=[];this.cellWidthPC=[];this.cellWidthType=this.entBox.cellwidthtype||"px";this.delim=this.entBox.delimiter||
+",";this._csvDelim=",";this.hdrLabels=[];this.columnIds=[];this.columnColor=[];this._hrrar=[];this.cellType=dhtmlxArray();this.cellAlign=[];this.initCellWidth=[];this.fldSort=[];this._srdh=_isIE&&document.compatMode!="BackCompat"?22:20;this.imgURL=window.dhx_globalImgPath||"";this.isActive=!1;this.isEditable=!0;this.pagingOn=this.useImagesInHeader=!1;this.rowsBufferOutSize=0;dhtmlxEvent(window,"unload",function(){try{c.destructor&&c.destructor()}catch(a){}});this.setSkin=function(a){this.skin_name=
+a;this.entBox.className="gridbox gridbox_"+a;this.skin_h_correction=0;this.enableAlterCss("ev_"+a,"odd_"+a,this.isTreeGrid());this._fixAlterCss();switch(a){case "clear":this._topMb=document.createElement("DIV");this._topMb.className="topMumba";this._topMb.innerHTML="<img style='left:0px' src='"+this.imgURL+"skinC_top_left.gif'><img style='right:20px' src='"+this.imgURL+"skinC_top_right.gif'>";this.entBox.appendChild(this._topMb);this._botMb=document.createElement("DIV");this._botMb.className="bottomMumba";
+this._botMb.innerHTML="<img style='left:0px' src='"+this.imgURL+"skinD_bottom_left.gif'><img style='right:20px' src='"+this.imgURL+"skinD_bottom_right.gif'>";this.entBox.appendChild(this._botMb);this.entBox.style.position="relative";this.skin_h_correction=20;break;case "dhx_skyblue":case "dhx_web":case "glassy_blue":case "dhx_black":case "dhx_blue":case "modern":case "light":this._srdh=20;this.forceDivInHeader=!0;break;case "xp":this.forceDivInHeader=!0;this._srdh=_isIE&&document.compatMode!="BackCompat"?
+25:22;break;case "mt":this._srdh=_isIE&&document.compatMode!="BackCompat"?25:22;break;case "gray":if(_isIE&&document.compatMode!="BackCompat")this._srdh=22}if(_isIE&&this.hdr){var b=this.hdr.parentNode;b.removeChild(this.hdr);b.appendChild(this.hdr)}this.setSizes()};_isIE&&this.preventIECaching(!0);if(window.dhtmlDragAndDropObject)this.dragger=new dhtmlDragAndDropObject;this._doOnScroll=function(a,b){this.callEvent("onScroll",[this.objBox.scrollLeft,this.objBox.scrollTop]);this.doOnScroll(a,b)};this.doOnScroll=
+function(a,b){this.hdrBox.scrollLeft=this.objBox.scrollLeft;if(this.ftr)this.ftr.parentNode.scrollLeft=this.objBox.scrollLeft;if(!b&&this._srnd)this._dLoadTimer&&window.clearTimeout(this._dLoadTimer),this._dLoadTimer=window.setTimeout(function(){c._update_srnd_view&&c._update_srnd_view()},100)};this.attachToObject=function(a){a.appendChild(this.globalBox?this.globalBox:this.entBox);this.setSizes()};this.init=function(a){if(this.isTreeGrid()&&!this._h2){this._h2=new dhtmlxHierarchy;if(this._fake&&
+!this._realfake)this._fake._h2=this._h2;this._tgc={imgURL:null}}if(this._hstyles){this.editStop();this.fldSorted=this.r_fldSorted=this.resized=this.lastClicked=null;this.cellWidthPX=[];this.cellWidthPC=[];this.hdr.rows.length>0&&this.clearAll(!0);for(var b=this.hdr.insertRow(0),d=0;d<this.hdrLabels.length;d++)b.appendChild(document.createElement("TH")),b.childNodes[d]._cellIndex=d,b.childNodes[d].style.height="0px";_isIE&&_isIE<8?b.style.position="absolute":b.style.height="auto";b=this.hdr.insertRow(_isKHTML?
+2:1);b._childIndexes=[];for(var h=0,d=0;d<this.hdrLabels.length;d++)b._childIndexes[d]=d-h,this.hdrLabels[d]==this.splitSign&&d!=0?(_isKHTML&&b.insertCell(d-h),b.cells[d-h-1].colSpan=(b.cells[d-h-1].colSpan||1)+1,b.childNodes[d-h-1]._cellIndex++,h++,b._childIndexes[d]=d-h):(b.insertCell(d-h),b.childNodes[d-h]._cellIndex=d,b.childNodes[d-h]._cellIndexS=d,this.setColumnLabel(d,this.hdrLabels[d]));if(h==0)b._childIndexes=null;this._cCount=this.hdrLabels.length;_isIE&&window.setTimeout(function(){c.setSizes&&
+c.setSizes()},1);this.obj.firstChild||this.obj.appendChild(document.createElement("TBODY"));var i=this.obj.firstChild;if(!i.firstChild){i.appendChild(document.createElement("TR"));i=i.firstChild;_isIE&&_isIE<8?i.style.position="absolute":i.style.height="auto";for(d=0;d<this.hdrLabels.length;d++)i.appendChild(document.createElement("TH")),i.childNodes[d].style.height="0px"}this._c_order=null;this.multiLine!=!0&&(this.obj.className+=" row20px");this.sortImg.style.position="absolute";this.sortImg.style.display=
+"none";this.sortImg.src=this.imgURL+"sort_desc.gif";this.sortImg.defLeft=0;this.noHeader?this.hdrBox.style.display="none":this.noHeader=!1;this.attachHeader();this.attachHeader(0,0,"_aFoot");this.setSizes();a&&this.parseXML();this.obj.scrollTop=0;this.dragAndDropOff&&this.dragger.addDragLanding(this.entBox,this);this._initDrF&&this._initD();this._init_point&&this._init_point()}};this.setColumnSizes=function(a){for(var b=0,c=[],d=0;d<this._cCount;d++)this.initCellWidth[d]=="*"&&!this._hrrar[d]?(this._awdth=
+!1,c.push(d)):(this.cellWidthType=="%"?(typeof this.cellWidthPC[d]=="undefined"&&(this.cellWidthPC[d]=this.initCellWidth[d]),this.cellWidthPX[d]=Math.floor(a*this.cellWidthPC[d]/100)||0):typeof this.cellWidthPX[d]=="undefined"&&(this.cellWidthPX[d]=this.initCellWidth[d]),this._hrrar[d]||(b+=this.cellWidthPX[d]*1));if(c.length){var i=Math.floor((a-b)/c.length);i<0&&(i=1);for(d=0;d<c.length;d++){var j=Math.max(this._drsclmW?this._drsclmW[c[d]]||0:0,i);this.cellWidthPX[c[d]]=j;b+=j}if(a>b){var k=c[c.length-
+1];this.cellWidthPX[k]+=a-b;b=a}this._setAutoResize()}this.obj.style.width=b+"px";this.hdr.style.width=b+"px";if(this.ftr)this.ftr.style.width=b+"px";this.chngCellWidth();return b};this.setSizes=function(){if(this.hdr.rows[0]){var a=this.quirks=_isIE&&document.compatMode=="BackCompat",b=(this.entBox.offsetWidth-this.entBox.clientWidth)/2;if(this.globalBox){var d=(this.globalBox.offsetWidth-this.globalBox.clientWidth)/2;if(this._delta_x&&!this._realfake){var h=this.globalBox.clientWidth;this.globalBox.style.width=
+this._delta_x;this.entBox.style.width=Math.max(0,this.globalBox.clientWidth+(a?d*2:0)-this._fake.entBox.clientWidth)+"px";h!=this.globalBox.clientWidth&&this._fake._correctSplit(this._fake.entBox.clientWidth)}if(this._delta_y&&!this._realfake)this.globalBox.style.height=this._delta_y,this.entBox.style.overflow=this._fake.entBox.style.overflow="hidden",this.entBox.style.height=this._fake.entBox.style.height=this.globalBox.clientHeight+(a?d*2:0)+"px"}else{if(this._delta_x)this.entBox.parentNode.tagName==
+"TD"?(this.entBox.style.width="1px",this.entBox.style.width=parseInt(this._delta_x)*this.entBox.parentNode.clientWidth/100-b*2+"px"):this.entBox.style.width=this._delta_x;if(this._delta_y)this.entBox.style.height=this._delta_y}window.clearTimeout(this._sizeTime);if(!this.entBox.offsetWidth&&(!this.globalBox||!this.globalBox.offsetWidth))this._sizeTime=window.setTimeout(function(){c.setSizes&&c.setSizes()},250);else{var i=(this.entBox.cmp||this._delta_x)&&(this.skin_name||"").indexOf("dhx")==0&&!a?
+2:0,j=(this.entBox.cmp||this._delta_y)&&(this.skin_name||"").indexOf("dhx")==0&&!a?2:0,k=this.parentGrid?!1:this.objBox.scrollHeight>this.objBox.offsetHeight,m=_isFF?18:18,l=this.entBox.clientWidth-(this.skin_h_correction||0)*(a?0:1)-i,n=this.entBox.clientWidth-(this.skin_h_correction||0)-i,o=this.entBox.clientHeight-j,p=this.setColumnSizes(n-(k?m:0)-(this._correction_x||0)),r=this.parentGrid?!1:this.objBox.scrollWidth>this.objBox.offsetWidth||this.objBox.style.overflowX=="scroll",q=this.hdr.clientHeight,
+s=this.ftr?this.ftr.clientHeight:0,y=l,t=o-q-s;this._awdth&&this._awdth[0]&&this._awdth[1]==99999&&(r=0);if(this._ahgr&&(t=this._ahgrMA?this.entBox.parentNode.clientHeight-q-s:this.obj.offsetHeight+(r?m:0)+(this._correction_y||0),this._ahgrM&&(t=this._ahgrF?Math.min(this._ahgrM,t+q+s)-q-s:Math.min(this._ahgrM,t)),k&&t>=this.obj.scrollHeight+(r?m:0)))k=!1,this.setColumnSizes(n-(this._correction_x||0));if(this._awdth&&this._awdth[0]){if(this.cellWidthType=="%")this.cellWidthType="px";this._fake&&(p+=
+this._fake.entBox.clientWidth);y=Math.min(Math.max(p+(k?m:0),this._awdth[2]),this._awdth[1])+(this._correction_x||0);this._fake&&(y-=this._fake.entBox.clientWidth)}t=Math.max(0,t);this._ff_size_delta=this._ff_size_delta==0.1?0.2:0.1;if(!_isFF)this._ff_size_delta=0;this.entBox.style.width=Math.max(0,y+(a?2:0)*b+this._ff_size_delta)+"px";this.entBox.style.height=t+(a?2:0)*b+q+s+"px";this.objBox.style.height=t+(a&&!k?2:0)*b+"px";this.hdrBox.style.height=q+"px";t!=o&&this.doOnScroll(0,!this._srnd);var u=
+this["setSizes_"+this.skin_name];u&&u.call(this);this.setSortImgPos();q!=this.hdr.clientHeight&&this._ahgr&&this.setSizes();this.callEvent("onSetSizes",[])}}};this.setSizes_clear=function(){var a=this.hdr.offsetHeight,b=this.entBox.offsetWidth,c=a+this.objBox.offsetHeight;this._topMb.style.top=(a||0)+"px";this._topMb.style.width=b+20+"px";this._botMb.style.top=c-3+"px";this._botMb.style.width=b+20+"px"};this.chngCellWidth=function(){if(_isOpera&&this.ftr)this.ftr.width=this.objBox.scrollWidth+"px";
+for(var a=this._cCount,b=0;b<a;b++)if(this.hdr.rows[0].cells[b].style.width=this.cellWidthPX[b]+"px",this.obj.rows[0].childNodes[b].style.width=this.cellWidthPX[b]+"px",this.ftr)this.ftr.rows[0].cells[b].style.width=this.cellWidthPX[b]+"px"};this.setDelimiter=function(a){this.delim=a};this.setInitWidthsP=function(a,b){this.cellWidthType="%";this.initCellWidth=a.split(this.delim.replace(/px/gi,""));b||this._setAutoResize()};this._setAutoResize=function(){if(!this._realfake){var a=window,b=this;dhtmlxEvent(window,
+"resize",function(){window.clearTimeout(b._resize_timer);if(b._setAutoResize)b._resize_timer=window.setTimeout(function(){b.setSizes&&b.setSizes();b._fake&&b._fake._correctSplit()},100)})}};this.setInitWidths=function(a){this.cellWidthType="px";this.initCellWidth=a.split(this.delim);if(_isFF)for(var b=0;b<this.initCellWidth.length;b++)this.initCellWidth[b]!="*"&&(this.initCellWidth[b]=parseInt(this.initCellWidth[b]))};this.enableMultiline=function(a){this.multiLine=convertStringToBoolean(a)};this.enableMultiselect=
+function(a){this.selMultiRows=convertStringToBoolean(a)};this.setImagesPath=this.setImagePath=function(a){this.imgURL=a};this.setIconsPath=this.setIconPath=function(a){this.iconURL=a};this.changeCursorState=function(a){var b=a.target||a.srcElement;b.tagName!="TD"&&(b=this.getFirstParentOfType(b,"TD"));if(b){if(b.tagName=="TD"&&this._drsclmn&&!this._drsclmn[b._cellIndex])return b.style.cursor="default";var c=(a.layerX||0)+(!_isIE&&a.target.tagName=="DIV"?b.offsetLeft:0);b.style.cursor=b.offsetWidth-
+(a.offsetX||(parseInt(this.getPosition(b,this.hdrBox))-c)*-1)<(_isOpera?20:10)?"E-resize":"default";if(_isOpera)this.hdrBox.scrollLeft=this.objBox.scrollLeft}};this.startColResize=function(a){this.resized&&this.stopColResize();this.resized=null;var b=a.target||a.srcElement;b.tagName!="TD"&&(b=this.getFirstParentOfType(b,"TD"));var d=a.clientX,h=this.hdr.offsetWidth,i=parseInt(b.offsetWidth);if(b.tagName=="TD"&&b.style.cursor!="default"&&(!this._drsclmn||this._drsclmn[b._cellIndex]))c._old_d_mm=document.body.onmousemove,
+c._old_d_mu=document.body.onmouseup,document.body.onmousemove=function(a){c&&c.doColResize(a||window.event,b,i,d,h)},document.body.onmouseup=function(){c&&c.stopColResize()}};this.stopColResize=function(){document.body.onmousemove=c._old_d_mm||"";document.body.onmouseup=c._old_d_mu||"";this.setSizes();this.doOnScroll(0,1);this.callEvent("onResizeEnd",[this])};this.doColResize=function(a,b,c,d,i){b.style.cursor="E-resize";this.resized=b;var j=c+(a.clientX-d),k=i+(a.clientX-d);if(this.callEvent("onResize",
+[b._cellIndex,j,this])){if(_isIE)this.objBox.scrollLeft=this.hdrBox.scrollLeft;if(b.colSpan>1){for(var m=[],l=0;l<b.colSpan;l++)m[l]=Math.round(j*this.hdr.rows[0].childNodes[b._cellIndexS+l].offsetWidth/b.offsetWidth);for(l=0;l<b.colSpan;l++)this._setColumnSizeR(b._cellIndexS+l*1,m[l])}else this._setColumnSizeR(b._cellIndex,j);this.doOnScroll(0,1);this.setSizes();this._fake&&this._awdth&&this._fake._correctSplit()}};this._setColumnSizeR=function(a,b){if(b>(this._drsclmW&&!this._notresize?this._drsclmW[a]||
+10:10)){this.obj.rows[0].childNodes[a].style.width=b+"px";this.hdr.rows[0].childNodes[a].style.width=b+"px";if(this.ftr)this.ftr.rows[0].childNodes[a].style.width=b+"px";if(this.cellWidthType=="px")this.cellWidthPX[a]=b;else{var c=parseInt(this.entBox.offsetWidth);this.objBox.scrollHeight>this.objBox.offsetHeight&&(c-=17);var d=Math.round(b/c*100);this.cellWidthPC[a]=d}this.sortImg.style.display!="none"&&this.setSortImgPos()}};this.setSortImgState=function(a,b,c,d){c=(c||"asc").toLowerCase();if(convertStringToBoolean(a)){this.sortImg.src=
+c=="asc"?this.imgURL+"sort_asc.gif":this.imgURL+"sort_desc.gif";this.sortImg.style.display="";this.fldSorted=this.hdr.rows[0].childNodes[b];var i=this.hdr.rows[d||1];if(i){for(var j=0;j<i.childNodes.length;j++)if(i.childNodes[j]._cellIndexS==b)return this.r_fldSorted=i.childNodes[j],this.setSortImgPos();return this.setSortImgState(a,b,c,(d||1)+1)}}else this.sortImg.style.display="none",this.fldSorted=null};this.setSortImgPos=function(a,b,c,d){if(!this._hrrar||!this._hrrar[this.r_fldSorted?this.r_fldSorted._cellIndex:
+a])if(d||(d=a?this.hdr.rows[c||0].cells[a]:this.r_fldSorted),d!=null){var i=this.getPosition(d,this.hdrBox),j=d.offsetWidth;this.sortImg.style.left=Number(i[0]+j-13)+"px";this.sortImg.defLeft=parseInt(this.sortImg.style.left);this.sortImg.style.top=Number(i[1]+5)+"px";if(!this.useImagesInHeader&&!b)this.sortImg.style.display="inline";this.sortImg.style.left=this.sortImg.defLeft+"px"}};this.setActive=function(a){arguments.length==0&&(a=!0);a==!0?(globalActiveDHTMLGridObject&&globalActiveDHTMLGridObject!=
+this&&(globalActiveDHTMLGridObject.editStop(),globalActiveDHTMLGridObject.callEvent("onBlur",[globalActiveDHTMLGridObject])),globalActiveDHTMLGridObject=this,this.isActive=!0):(this.isActive=!1,this.callEvent("onBlur",[this]))};this._doClick=function(a){var b=0,c=this.getFirstParentOfType(_isIE?a.srcElement:a.target,"TD");if(c){var d=!0;if(this.markedCells){var i=0;if(a.shiftKey||a.metaKey)i=1;a.ctrlKey&&(i=2);this.doMark(c,i);return!0}if(this.selMultiRows!=!1&&(a.shiftKey&&this.row!=null&&this.selectedRows.length&&
+(b=1),a.ctrlKey||a.metaKey))b=2;this.doClick(c,d,b)}};this._doContClick=function(a){var b=this.getFirstParentOfType(_isIE?a.srcElement:a.target,"TD");if(!b||typeof b.parentNode.idd=="undefined")return!0;if(a.button==2||_isMacOS&&a.ctrlKey){if(!this.callEvent("onRightClick",[b.parentNode.idd,b._cellIndex,a])){var c=function(a){(a||event).cancelBubble=!0;return!1};(a.srcElement||a.target).oncontextmenu=c;return c(a)}if(this._ctmndx){if(!this.callEvent("onBeforeContextMenu",[b.parentNode.idd,b._cellIndex,
+this]))return!0;if(_isIE)a.srcElement.oncontextmenu=function(){event.cancelBubble=!0;return!1};if(this._ctmndx.showContextMenu){var d=window.document.documentElement,i=window.document.body,j=[d.scrollLeft||i.scrollLeft,d.scrollTop||i.scrollTop];if(_isIE)var k=a.clientX+j[0],m=a.clientY+j[1];else k=a.pageX,m=a.pageY;this._ctmndx.showContextMenu(k-1,m-1);this.contextID=this._ctmndx.contextMenuZoneId=b.parentNode.idd+"_"+b._cellIndex;this._ctmndx._skip_hide=!0}else b.contextMenuId=b.parentNode.idd+"_"+
+b._cellIndex,b.contextMenu=this._ctmndx,b.a=this._ctmndx._contextStart,b.a(b,a),b.a=null;a.cancelBubble=!0;return!1}}else this._ctmndx&&(this._ctmndx.hideContextMenu?this._ctmndx.hideContextMenu():this._ctmndx._contextEnd());return!0};this.doClick=function(a,b,d,h){this.selMultiRows||(d=0);var i=this.row?this.row.idd:0;this.setActive(!0);d||(d=0);if(this.cell!=null)this.cell.className=this.cell.className.replace(/cellselected/g,"");if(a.tagName=="TD"){if(this.checkEvent("onSelectStateChanged"))var j=
+this.getSelectedId();var k=this.row;if(d==1){var m=this.rowsCol._dhx_find(a.parentNode),l=this.rowsCol._dhx_find(this.lastClicked);if(m>l)var n=l,o=m;else n=m,o=l;for(var p=0;p<this.rowsCol.length;p++)if(p>=n&&p<=o)if(this.rowsCol[p]&&!this.rowsCol[p]._sRow)this.rowsCol[p].className.indexOf("rowselected")==-1&&this.callEvent("onBeforeSelect",[this.rowsCol[p].idd,i])&&(this.rowsCol[p].className+=" rowselected",this.selectedRows[this.selectedRows.length]=this.rowsCol[p]);else return this.clearSelection(),
+this.doClick(a,b,0,h)}else if(d==2&&a.parentNode.className.indexOf("rowselected")!=-1){a.parentNode.className=a.parentNode.className.replace(/rowselected/g,"");this.selectedRows._dhx_removeAt(this.selectedRows._dhx_find(a.parentNode));var r=!0}this.editStop();if(typeof a.parentNode.idd=="undefined")return!0;if(!r&&!a.parentNode._sRow)if(this.callEvent("onBeforeSelect",[a.parentNode.idd,i])){if(d==0){if(this.getSelectedRowId()==a.parentNode.idd)return this.cell=a;this.clearSelection()}this.cell=a;
+k==a.parentNode&&this._chRRS&&(b=!1);this.row=a.parentNode;this.row.className+=" rowselected";if(this.cell&&_isIE&&_isIE==8){var q=this.cell.nextSibling,s=this.cell.parentNode;s.removeChild(this.cell);s.insertBefore(this.cell,q)}if(this.selectedRows._dhx_find(this.row)==-1)this.selectedRows[this.selectedRows.length]=this.row}else b=!1;if(this.cell&&this.cell.parentNode.className.indexOf("rowselected")!=-1)this.cell.className=this.cell.className.replace(/cellselected/g,"")+" cellselected";if(d!=1&&
+!this.row)return;this.lastClicked=a.parentNode;var y=this.row.idd,t=this.cell;b&&typeof y!="undefined"&&t&&!r?c.onRowSelectTime=setTimeout(function(){c.callEvent&&c.callEvent("onRowSelect",[y,t._cellIndex])},100):this.callEvent("onRowSelectRSOnly",[y]);if(this.checkEvent("onSelectStateChanged")){var u=this.getSelectedId();j!=u&&this.callEvent("onSelectStateChanged",[u,j])}}this.isActive=!0;h!==!1&&this.cell&&this.cell.parentNode.idd&&this.moveToVisible(this.cell)};this.selectAll=function(){this.clearSelection();
+var a=this.rowsBuffer;if(this.pagingOn)a=this.rowsCol;for(var b=0;b<a.length;b++)this.render_row(b).className+=" rowselected";this.selectedRows=dhtmlxArray([].concat(a));if(this.selectedRows.length)this.row=this.selectedRows[0],this.cell=this.row.cells[0];this._fake&&!this._realfake&&this._fake.selectAll()};this.selectCell=function(a,b,c,d,i,j){c||(c=!1);typeof a!="object"&&(a=this.render_row(a));if(!a||a==-1)return null;var k=a.childNodes[b];k||(k=a.childNodes[0]);d?this.doClick(k,c,3,j):this.doClick(k,
+c,0,j);i&&this.editCell()};this.moveToVisible=function(a,b){if(this.pagingOn){var c=Math.floor(this.getRowIndex(a.parentNode.idd)/this.rowsBufferOutSize)+1;c!=this.currentPage&&this.changePage(c)}try{if(a.offsetHeight){var d=a.offsetLeft+a.offsetWidth+20,i=0;d>this.objBox.offsetWidth+this.objBox.scrollLeft?a.offsetLeft>this.objBox.scrollLeft&&(i=a.offsetLeft-5):a.offsetLeft<this.objBox.scrollLeft&&(d-=a.offsetWidth*2/3,d<this.objBox.scrollLeft&&(i=a.offsetLeft-5));if(i&&!b)this.objBox.scrollLeft=
+i}if(a.offsetHeight)d=a.offsetTop;else var j=this._realfake?this._fake.rowsAr[a.parentNode.idd]:a.parentNode,d=this.rowsBuffer._dhx_find(j)*this._srdh;var k=d+a.offsetHeight+38;if(k>this.objBox.offsetHeight+this.objBox.scrollTop)var m=k-this.objBox.offsetHeight;else d<this.objBox.scrollTop&&(m=d-5);if(m)this.objBox.scrollTop=m}catch(l){}};this.editCell=function(){if(!(this.editor&&this.cell==this.editor.cell)){this.editStop();if(this.isEditable!=!0||!this.cell)return!1;var a=this.cell;if(a.parentNode._locked)return!1;
+this.editor=this.cells4(a);if(this.editor!=null){if(this.editor.isDisabled())return this.editor=null,!1;this.callEvent("onEditCell",[0,this.row.idd,this.cell._cellIndex])!=!1&&this.editor.edit?(this._Opera_stop=(new Date).valueOf(),a.className+=" editable",this.editor.edit(),this.callEvent("onEditCell",[1,this.row.idd,this.cell._cellIndex])):this.editor=null}}};this.editStop=function(a){if(_isOpera&&this._Opera_stop){if(this._Opera_stop*1+50>(new Date).valueOf())return;this._Opera_stop=null}if(this.editor&&
+this.editor!=null)if(this.editor.cell.className=this.editor.cell.className.replace("editable",""),a){var b=this.editor.val;this.editor.detach();this.editor.setValue(b);this.editor=null;this.callEvent("onEditCancel",[this.row.idd,this.cell._cellIndex,b])}else{if(this.editor.detach())this.cell.wasChanged=!0;var c=this.editor;this.editor=null;var d=this.callEvent("onEditCell",[2,this.row.idd,this.cell._cellIndex,c.getValue(),c.val]);if(typeof d=="string"||typeof d=="number")c[c.setImage?"setLabel":"setValue"](d);
+else if(!d)c[c.setImage?"setLabel":"setValue"](c.val);this._ahgr&&this.multiLine&&this.setSizes()}};this._nextRowCell=function(a,b,c){a=this._nextRow((this._groups?this.rowsCol:this.rowsBuffer)._dhx_find(a),b);return!a?null:a.childNodes[a._childIndexes?a._childIndexes[c]:c]};this._getNextCell=function(a,b,c){var a=a||this.cell,d=a.parentNode;this._tabOrder?(c=this._tabOrder[a._cellIndex],typeof c!="undefined"&&(a=c<0?this._nextRowCell(d,b,Math.abs(c)-1):d.childNodes[c])):(c=a._cellIndex+b,c>=0&&c<
+this._cCount?(d._childIndexes&&(c=d._childIndexes[a._cellIndex]+b),a=d.childNodes[c]):a=this._nextRowCell(d,b,b==1?0:this._cCount-1));return!a?(b==1&&this.tabEnd&&(this.tabEnd.focus(),this.tabEnd.focus(),this.setActive(!1)),b==-1&&this.tabStart&&(this.tabStart.focus(),this.tabStart.focus(),this.setActive(!1)),null):a.style.display!="none"&&(!this.smartTabOrder||!this.cells(a.parentNode.idd,a._cellIndex).isDisabled())?a:this._getNextCell(a,b)};this._nextRow=function(a,b){var c=this.render_row(a+b);
+return!c||c==-1?null:c&&c.style.display=="none"?this._nextRow(a+b,b):c};this.scrollPage=function(a){if(this.rowsBuffer.length){var b=this._realfake?this._fake:this,c=Math.floor((b._r_select||this.getRowIndex(this.row.idd)||0)+a*this.objBox.offsetHeight/(this._srdh||20));c<0&&(c=0);c>=this.rowsBuffer.length&&(c=this.rowsBuffer.length-1);if(this._srnd&&!this.rowsBuffer[c]){this.objBox.scrollTop+=Math.floor(a*this.objBox.offsetHeight/(this._srdh||20))*(this._srdh||20);if(this._fake)this._fake.objBox.scrollTop=
+this.objBox.scrollTop;b._r_select=c}else{this.selectCell(c,this.cell._cellIndex,!0,!1,!1,this.multiLine||this._srnd);if(!this.multiLine&&!this._srnd&&!this._realfake&&(this.objBox.scrollTop=this.getRowById(this.getRowId(c)).offsetTop,this._fake))this._fake.objBox.scrollTop=this.objBox.scrollTop;b._r_select=null}}};this.doKey=function(a){if(!a)return!0;if((a.target||a.srcElement).value!==window.undefined){var b=a.target||a.srcElement;if(!b.parentNode||b.parentNode.className.indexOf("editable")==-1)return!0}if(globalActiveDHTMLGridObject&&
+this!=globalActiveDHTMLGridObject)return globalActiveDHTMLGridObject.doKey(a);if(this.isActive==!1)return!0;if(this._htkebl)return!0;if(!this.callEvent("onKeyPress",[a.keyCode,a.ctrlKey,a.shiftKey,a]))return!1;var c="k"+a.keyCode+"_"+(a.ctrlKey?1:0)+"_"+(a.shiftKey?1:0);if(this.cell){if(this._key_events[c]){if(!1===this._key_events[c].call(this))return!0;a.preventDefault&&a.preventDefault();a.cancelBubble=!0;return!1}this._key_events.k_other&&this._key_events.k_other.call(this,a)}return!0};this.selectRow=
+function(a,b,c,d){typeof a!="object"&&(a=this.render_row(a));this.selectCell(a,0,b,c,!1,d)};this.wasDblClicked=function(a){var b=this.getFirstParentOfType(_isIE?a.srcElement:a.target,"TD");if(b){var c=b.parentNode.idd;return this.callEvent("onRowDblClicked",[c,b._cellIndex])}};this._onHeaderClick=function(a,b){var c=this.grid,b=b||c.getFirstParentOfType(_isIE?event.srcElement:a.target,"TD");if(this.grid.resized==null){if(!this.grid.callEvent("onHeaderClick",[b._cellIndexS,a||window.event]))return!1;
+c.sortField(b._cellIndexS,!1,b)}this.grid.resized=null};this.deleteSelectedRows=function(){var a=this.selectedRows.length;if(a!=0){var b=this.selectedRows;this.selectedRows=dhtmlxArray();for(var c=a-1;c>=0;c--){var d=b[c];if(this.deleteRow(d.idd,d)){if(d==this.row)var i=c}else this.selectedRows[this.selectedRows.length]=d}if(i)try{i+1>this.rowsCol.length&&i--,this.selectCell(i,0,!0)}catch(j){this.cell=this.row=null}}};this.getSelectedRowId=function(){for(var a=[],b={},c=0;c<this.selectedRows.length;c++){var d=
+this.selectedRows[c].idd;b[d]||(a[a.length]=d,b[d]=!0)}return a.length==0?null:a.join(this.delim)};this.getSelectedCellIndex=function(){return this.cell!=null?this.cell._cellIndex:-1};this.getColWidth=function(a){return parseInt(this.cellWidthPX[a])};this.setColWidth=function(a,b){this._hrrar[a]||(this.cellWidthType=="px"?this.cellWidthPX[a]=parseInt(b):this.cellWidthPC[a]=parseInt(b),this.setSizes())};this.getRowIndex=function(a){for(var b=0;b<this.rowsBuffer.length;b++)if(this.rowsBuffer[b]&&this.rowsBuffer[b].idd==
+a)return b;return-1};this.getRowId=function(a){return this.rowsBuffer[a]?this.rowsBuffer[a].idd:this.undefined};this.setRowId=function(a,b){this.changeRowId(this.getRowId(a),b)};this.changeRowId=function(a,b){if(a!=b){var c=this.rowsAr[a];c.idd=b;this.UserData[a]&&(this.UserData[b]=this.UserData[a],this.UserData[a]=null);if(this._h2&&this._h2.get[a])this._h2.get[b]=this._h2.get[a],this._h2.get[b].id=b,delete this._h2.get[a];this.rowsAr[a]=null;this.rowsAr[b]=c;for(var d=0;d<c.childNodes.length;d++)if(c.childNodes[d]._code)c.childNodes[d]._code=
+this._compileSCL(c.childNodes[d]._val,c.childNodes[d]);if(this._mat_links&&this._mat_links[a]){var i=this._mat_links[a];delete this._mat_links[a];for(var j in i)for(d=0;d<i[j].length;d++)this._compileSCL(i[j][d].original,i[j][d])}this.callEvent("onRowIdChange",[a,b])}};this.setColumnIds=function(a){this.columnIds=a.split(this.delim)};this.setColumnId=function(a,b){this.columnIds[a]=b};this.getColIndexById=function(a){for(var b=0;b<this.columnIds.length;b++)if(this.columnIds[b]==a)return b};this.getColumnId=
+function(a){return this.columnIds[a]};this.getColLabel=this.getColumnLabel=function(a,b,c){for(var d=(c||this.hdr).rows[(b||0)+1],i=0;i<d.cells.length;i++)if(d.cells[i]._cellIndexS==a)return _isIE?d.cells[i].innerText:d.cells[i].textContent;return""};this.getFooterLabel=function(a,b){return this.getColumnLabel(a,b,this.ftr)};this.setRowTextBold=function(a){var b=this.getRowById(a);if(b)b.style.fontWeight="bold"};this.setRowTextStyle=function(a,b){var c=this.getRowById(a);if(c)for(var d=0;d<c.childNodes.length;d++){var i=
+c.childNodes[d]._attrs.style||"";c.childNodes[d].style.cssText=i+"width:"+c.childNodes[d].style.width+";"+b}};this.setRowColor=function(a,b){for(var c=this.getRowById(a),d=0;d<c.childNodes.length;d++)c.childNodes[d].bgColor=b};this.setCellTextStyle=function(a,b,c){var d=this.getRowById(a);if(d){var i=d.childNodes[d._childIndexes?d._childIndexes[b]:b];if(i){var j="";i.style.cssText=j+"width:"+i.style.width+";"+c}}};this.setRowTextNormal=function(a){var b=this.getRowById(a);if(b)b.style.fontWeight=
+"normal"};this.doesRowExist=function(a){return this.getRowById(a)!=null?!0:!1};this.getColumnsNum=function(){return this._cCount};this.moveRowUp=function(a){var b=this.getRowById(a);if(this.isTreeGrid())return this.moveRowUDTG(a,-1);var c=this.rowsCol._dhx_find(b);if(b.previousSibling&&c!=0){b.parentNode.insertBefore(b,b.previousSibling);this.rowsCol._dhx_swapItems(c,c-1);this.setSizes();var d=this.rowsBuffer._dhx_find(b);this.rowsBuffer._dhx_swapItems(d,d-1);this._cssEven&&this._fixAlterCss(c-1)}};
+this.moveRowDown=function(a){var b=this.getRowById(a);if(this.isTreeGrid())return this.moveRowUDTG(a,1);var c=this.rowsCol._dhx_find(b);if(b.nextSibling){this.rowsCol._dhx_swapItems(c,c+1);b.nextSibling.nextSibling?b.parentNode.insertBefore(b,b.nextSibling.nextSibling):b.parentNode.appendChild(b);this.setSizes();var d=this.rowsBuffer._dhx_find(b);this.rowsBuffer._dhx_swapItems(d,d+1);this._cssEven&&this._fixAlterCss(c)}};this.getCombo=function(a){this.combos[a]||(this.combos[a]=new dhtmlXGridComboObject);
+return this.combos[a]};this.setUserData=function(a,b,c){a||(a="gridglobaluserdata");this.UserData[a]||(this.UserData[a]=new Hashtable);this.UserData[a].put(b,c)};this.getUserData=function(a,b){a||(a="gridglobaluserdata");this.getRowById(a);var c=this.UserData[a];return c?c.get(b):""};this.setEditable=function(a){this.isEditable=convertStringToBoolean(a)};this.selectRowById=function(a,b,c,d){d||(d=!1);this.selectCell(this.getRowById(a),0,d,b,!1,c)};this.clearSelection=function(){this.editStop();for(var a=
+0;a<this.selectedRows.length;a++){var b=this.rowsAr[this.selectedRows[a].idd];if(b)b.className=b.className.replace(/rowselected/g,"")}this.selectedRows=dhtmlxArray();this.row=null;if(this.cell!=null)this.cell.className=this.cell.className.replace(/cellselected/g,""),this.cell=null;this.callEvent("onSelectionCleared",[])};this.copyRowContent=function(a,b){var c=this.getRowById(a);if(this.isTreeGrid())this._copyTreeGridRowContent(c,a,b);else for(var d=0;d<c.cells.length;d++)this.cells(b,d).setValue(this.cells(a,
+d).getValue());if(!_isIE)this.getRowById(a).cells[0].height=c.cells[0].offsetHeight};this.setFooterLabel=function(a,b,c){return this.setColumnLabel(a,b,c,this.ftr)};this.setColumnLabel=function(a,b,c,d){var i=(d||this.hdr).rows[c||1],j=i._childIndexes?i._childIndexes[a]:a;if(i.cells[j]){if(this.useImagesInHeader){i.cells[j].style.textAlign="left";i.cells[j].innerHTML="<img src='"+this.imgURL+""+b+"' onerror='this.src = \""+this.imgURL+"imageloaderror.gif\"'>";var k=new Image;k.src=this.imgURL+""+
+b.replace(/(\.[a-z]+)/,".des$1");this.preloadImagesAr[this.preloadImagesAr.length]=k;var m=new Image;m.src=this.imgURL+""+b.replace(/(\.[a-z]+)/,".asc$1");this.preloadImagesAr[this.preloadImagesAr.length]=m}else{var l="<div class='hdrcell'>";if(b.indexOf("img:[")!=-1){var n=b.replace(/.*\[([^>]+)\].*/,"$1"),b=b.substr(b.indexOf("]")+1,b.length);l+="<img width='18px' height='18px' align='absmiddle' src='"+n+"' hspace='2'>"}l+=b;l+="</div>";i.cells[j].innerHTML=l;if(this._hstyles[j])i.cells[j].style.cssText=
+this._hstyles[j]}if((b||"").indexOf("#")!=-1){var o=b.match(/(^|{)#([^}]+)(}|$)/);if(o){var p="_in_header_"+o[2];if(this[p])this[p](this.forceDivInHeader?i.cells[j].firstChild:i.cells[j],j,b.split(o[0]))}}}};this.setColLabel=function(a,b,c,d){return this.setColumnLabel(a,b,(c||0)+1,d)};this.clearAll=function(a){if(this.obj.rows[0]){if(this._h2&&(this._h2=new dhtmlxHierarchy,this._fake))this._realfake?this._h2=this._fake._h2:this._fake._h2=this._h2;this.limit=this._limitC=0;this.editStop(!0);this._dLoadTimer&&
+window.clearTimeout(this._dLoadTimer);if(this._dload)this.objBox.scrollTop=0,this.limit=this._limitC||0,this._initDrF=!0;for(var b=this.rowsCol.length,b=this.obj.rows.length,c=b-1;c>0;c--){var d=this.obj.rows[c];d.parentNode.removeChild(d)}if(a){this._master_row=null;this.obj.rows[0].parentNode.removeChild(this.obj.rows[0]);for(c=this.hdr.rows.length-1;c>=0;c--)d=this.hdr.rows[c],d.parentNode.removeChild(d);if(this.ftr)this.ftr.parentNode.removeChild(this.ftr),this.ftr=null;this._aHead=this.ftr=this.cellWidth=
+this._aFoot=null;this.cellType=dhtmlxArray();this._hrrar=[];this.columnIds=[];this.combos=[];this._ivizcol=null}this.cell=this.row=null;this.rowsCol=dhtmlxArray();this.rowsAr={};this._RaSeCol=[];this.rowsBuffer=dhtmlxArray();this.UserData=[];this.selectedRows=dhtmlxArray();if(this.pagingOn||this._srnd)this.xmlFileUrl="";this.pagingOn&&this.changePage(1);this._contextCallTimer&&window.clearTimeout(this._contextCallTimer);this._sst&&this.enableStableSorting(!0);this._fillers=this.undefined;this.setSortImgState(!1);
+this.setSizes();this.callEvent("onClearAll",[])}};this.sortField=function(a,b,c){if(this.getRowsNum()==0)return!1;var d=this.hdr.rows[0].cells[a];if(d&&d.tagName=="TH"&&this.fldSort.length-1>=d._cellIndex&&this.fldSort[d._cellIndex]!="na"){var i=this.getSortingState(),j=i[0]==a&&i[1]=="asc"?"des":"asc";if(this.callEvent("onBeforeSorting",[a,this.fldSort[a],j])){this.sortImg.src=this.imgURL+"sort_"+(j=="asc"?"asc":"desc")+".gif";if(this.useImagesInHeader){var k=this.hdr.rows[1].cells[d._cellIndex].firstChild;
+if(this.fldSorted!=null){var m=this.hdr.rows[1].cells[this.fldSorted._cellIndex].firstChild;m.src=m.src.replace(/(\.asc\.)|(\.des\.)/,".")}k.src=k.src.replace(/(\.[a-z]+)$/,"."+j+"$1")}this.sortRows(d._cellIndex,this.fldSort[d._cellIndex],j);this.fldSorted=d;this.r_fldSorted=c;var l=this.hdr.rows[1],l=c.parentNode,n=l._childIndexes?l._childIndexes[d._cellIndex]:d._cellIndex;this.setSortImgPos(!1,!1,!1,c)}}};this.enableHeaderImages=function(a){this.useImagesInHeader=a};this.setHeader=function(a,b,
+c){for(var d=typeof a!="object"?this._eSplit(a):[].concat(a),i=[],j=new dhtmlxArray(0),k=[],m=[],l=[],n=0;n<d.length;n++)i[i.length]=Math.round(100/d.length),j[j.length]="ed",k[k.length]="left",m[m.length]="middle",l[l.length]="na";this.splitSign=b||"#cspan";this.hdrLabels=d;this.cellWidth=i;this.initCellWidth.length||this.setInitWidthsP(i.join(this.delim),!0);this.cellType=j;this.cellAlign=k;this.cellVAlign=m;this.fldSort=l;this._hstyles=c||[]};this._eSplit=function(a){if(![].push)return a.split(this.delim);
+var b="r"+(new Date).valueOf(),c=this.delim.replace(/([\|\+\*\^])/g,"\\$1");return(a||"").replace(RegExp(c,"g"),b).replace(RegExp("\\\\"+b,"g"),this.delim).split(b)};this.getColType=function(a){return this.cellType[a]};this.getColTypeById=function(a){return this.cellType[this.getColIndexById(a)]};this.setColTypes=function(a){this.cellType=dhtmlxArray(a.split(this.delim));this._strangeParams=[];for(var b=0;b<this.cellType.length;b++){if(this.cellType[b].indexOf("[")!=-1){var c=this.cellType[b].split(/[\[\]]+/g);
+this.cellType[b]=c[0];this.defVal[b]=c[1];c[1].indexOf("=")==0&&(this.cellType[b]="math",this._strangeParams[b]=c[0])}window["eXcell_"+this.cellType[b]]||dhtmlxError.throwError("Configuration","Incorrect cell type: "+this.cellType[b],[this,this.cellType[b]])}};this.setColSorting=function(a){this.fldSort=a.split(this.delim)};this.setColAlign=function(a){this.cellAlign=a.split(this.delim);for(var b=0;b<this.cellAlign.length;b++)this.cellAlign[b]=this.cellAlign[b]._dhx_trim()};this.setColVAlign=function(a){this.cellVAlign=
+a.split(this.delim)};this.setNoHeader=function(a){this.noHeader=convertStringToBoolean(a)};this.showRow=function(a){this.getRowById(a);this._h2&&this.openItem(this._h2.get[a].parent.id);for(var b=this.getRowById(a).childNodes[0];b&&b.style.display=="none";)b=b.nextSibling;b&&this.moveToVisible(b,!0)};this.setStyle=function(a,b,c,d){this.ssModifier=[a,b,c,c,d];for(var i=["#"+this.entBox.id+" table.hdr td","#"+this.entBox.id+" table.obj td","#"+this.entBox.id+" table.obj tr.rowselected td.cellselected",
+"#"+this.entBox.id+" table.obj td.cellselected","#"+this.entBox.id+" table.obj tr.rowselected td"],j=0;!_isIE;){try{var k=document.styleSheets[j].cssRules.length}catch(m){j++;continue}break}for(var l=0;l<i.length;l++)this.ssModifier[l]&&(_isIE?document.styleSheets[0].addRule(i[l],this.ssModifier[l]):document.styleSheets[j].insertRule(i[l]+(" { "+this.ssModifier[l]+" }"),document.styleSheets[j].cssRules.length))};this.setColumnColor=function(a){this.columnColor=a.split(this.delim)};this.enableAlterCss=
+function(a,b,c,d){(a||b)&&this.attachEvent("onGridReconstructed",function(){this._fixAlterCss();this._fake&&this._fake._fixAlterCss()});this._cssSP=c;this._cssSU=d;this._cssEven=a;this._cssUnEven=b};this._fixAlterCss=function(a){if(this._h2&&(this._cssSP||this._cssSU))return this._fixAlterCssTGR(a);if(this._cssEven||this._cssUnEven)for(var b=a=a||0,c=a;c<this.rowsCol.length;c++)if(this.rowsCol[c]&&this.rowsCol[c].style.display!="none")this.rowsCol[c]._cntr?b=1:(this.rowsCol[c].className=this.rowsCol[c].className.indexOf("rowselected")!=
+-1?b%2==1?this._cssUnEven+" rowselected "+(this.rowsCol[c]._css||""):this._cssEven+" rowselected "+(this.rowsCol[c]._css||""):b%2==1?this._cssUnEven+" "+(this.rowsCol[c]._css||""):this._cssEven+" "+(this.rowsCol[c]._css||""),b++)};this.getPosition=function(a,b){if(!b&&!_isChrome){var c=getOffset(a);return[c.left,c.top]}for(var b=b||document.body,d=a,i=0,j=0;d&&d!=b;)i+=d.offsetLeft-d.scrollLeft,j+=d.offsetTop-d.scrollTop,d=d.offsetParent;b==document.body&&(_isIE?(j+=document.body.offsetTop||document.documentElement.offsetTop,
+i+=document.body.offsetLeft||document.documentElement.offsetLeft):_isFF||(i+=document.body.offsetLeft,j+=document.body.offsetTop));return[i,j]};this.getFirstParentOfType=function(a,b){for(;a&&a.tagName!=b&&a.tagName!="BODY";)a=a.parentNode;return a};this.objBox.onscroll=function(){this.grid._doOnScroll()};if(!_isOpera||_OperaRv>8.5)this.hdr.onmousemove=function(a){this.grid.changeCursorState(a||window.event)},this.hdr.onmousedown=function(a){return this.grid.startColResize(a||window.event)};this.obj.onmousemove=
+this._drawTooltip;this.objBox.onclick=function(a){(a||event).cancelBubble=!0};this.obj.onclick=function(a){this.grid._doClick(a||window.event);this.grid._sclE&&this.grid.editCell(a||window.event);(a||event).cancelBubble=!0};_isMacOS?this.entBox.oncontextmenu=function(a){a.cancelBubble=!0;a.returnValue=!1;return this.grid._doContClick(a||window.event)}:(this.entBox.onmousedown=function(a){return this.grid._doContClick(a||window.event)},this.entBox.oncontextmenu=function(a){if(this.grid._ctmndx)(a||
+event).cancelBubble=!0;return!this.grid._ctmndx});this.obj.ondblclick=function(a){if(!this.grid.wasDblClicked(a||window.event))return!1;if(this.grid._dclE){var b=this.grid.getFirstParentOfType(_isIE?event.srcElement:a.target,"TR");b==this.grid.row&&this.grid.editCell(a||window.event)}(a||event).cancelBubble=!0;if(_isOpera)return!1};this.hdr.onclick=this._onHeaderClick;this.sortImg.onclick=function(){c._onHeaderClick.apply({grid:c},[null,c.r_fldSorted])};this.hdr.ondblclick=this._onHeaderDblClick;
+if(!document.body._dhtmlxgrid_onkeydown)dhtmlxEvent(document,_isOpera?"keypress":"keydown",function(a){if(globalActiveDHTMLGridObject)return globalActiveDHTMLGridObject.doKey(a||window.event)}),document.body._dhtmlxgrid_onkeydown=!0;dhtmlxEvent(document.body,"click",function(){c.editStop&&c.editStop();c.isActive&&c.setActive(!1)});this.entBox.onbeforeactivate=function(){this._still_active=null;this.grid.setActive();event.cancelBubble=!0};this.entBox.onbeforedeactivate=function(){this.grid._still_active?
+this.grid._still_active=null:this.grid.isActive=!1;event.cancelBubble=!0};if(this.entBox.style.height.toString().indexOf("%")!=-1)this._delta_y=this.entBox.style.height;if(this.entBox.style.width.toString().indexOf("%")!=-1)this._delta_x=this.entBox.style.width;(this._delta_x||this._delta_y)&&this._setAutoResize();this.setColHidden=this.setColumnsVisibility;this.enableCollSpan=this.enableColSpan;this.setMultiselect=this.enableMultiselect;this.setMultiLine=this.enableMultiline;this.deleteSelectedItem=
+this.deleteSelectedRows;this.getSelectedId=this.getSelectedRowId;this.getHeaderCol=this.getColumnLabel;this.isItemExists=this.doesRowExist;this.getColumnCount=this.getColumnsNum;this.setSelectedRow=this.selectRowById;this.setHeaderCol=this.setColumnLabel;this.preventIECashing=this.preventIECaching;this.enableAutoHeigth=this.enableAutoHeight;this.getUID=this.uid;dhtmlx.image_path&&this.setImagePath(dhtmlx.image_path);dhtmlx.skin&&this.setSkin(dhtmlx.skin);return this}
+dhtmlXGridObject.prototype={getRowAttribute:function(a,b){return this.getRowById(a)._attrs[b]},setRowAttribute:function(a,b,c){this.getRowById(a)._attrs[b]=c},isTreeGrid:function(){return this.cellType._dhx_find("tree")!=-1},setRowHidden:function(a,b){var c=convertStringToBoolean(b),d=this.getRowById(a);if(d){d.expand===""&&this.collapseKids(d);if(b&&d.style.display!="none"){d.style.display="none";var e=this.selectedRows._dhx_find(d);if(e!=-1){d.className=d.className.replace("rowselected","");for(var f=
+0;f<d.childNodes.length;f++)d.childNodes[f].className=d.childNodes[f].className.replace(/cellselected/g,"");this.selectedRows._dhx_removeAt(e)}this.callEvent("onGridReconstructed",[])}if(!b&&d.style.display=="none")d.style.display="",this.callEvent("onGridReconstructed",[]);this.callEvent("onRowHide",[a,b]);this.setSizes()}},enableRowsHover:function(a,b){this._unsetRowHover(!1,!0);this._hvrCss=b;if(convertStringToBoolean(a)){if(!this._elmnh)this.obj._honmousemove=this.obj.onmousemove,this.obj.onmousemove=
+this._setRowHover,_isIE?this.obj.onmouseleave=this._unsetRowHover:this.obj.onmouseout=this._unsetRowHover,this._elmnh=!0}else if(this._elmnh)this.obj.onmousemove=this.obj._honmousemove,_isIE?this.obj.onmouseleave=null:this.obj.onmouseout=null,this._elmnh=!1},enableEditEvents:function(a,b,c){this._sclE=convertStringToBoolean(a);this._dclE=convertStringToBoolean(b);this._f2kE=convertStringToBoolean(c)},enableLightMouseNavigation:function(a){if(convertStringToBoolean(a)){if(!this._elmn)this.entBox._onclick=
+this.entBox.onclick,this.entBox.onclick=function(){return!0},this.obj._onclick=this.obj.onclick,this.obj.onclick=function(a){var c=this.grid.getFirstParentOfType(a?a.target:event.srcElement,"TD");if(c)this.grid.editStop(),this.grid.doClick(c),this.grid.editCell(),(a||event).cancelBubble=!0},this.obj._onmousemove=this.obj.onmousemove,this.obj.onmousemove=this._autoMoveSelect,this._elmn=!0}else if(this._elmn)this.entBox.onclick=this.entBox._onclick,this.obj.onclick=this.obj._onclick,this.obj.onmousemove=
+this.obj._onmousemove,this._elmn=!1},_unsetRowHover:function(a,b){that=b?this:this.grid;if(that._lahRw&&that._lahRw!=b){for(var c=0;c<that._lahRw.childNodes.length;c++)that._lahRw.childNodes[c].className=that._lahRw.childNodes[c].className.replace(that._hvrCss,"");that._lahRw=null}},_setRowHover:function(a){var b=this.grid.getFirstParentOfType(a?a.target:event.srcElement,"TD");if(b&&b.parentNode!=this.grid._lahRw){this.grid._unsetRowHover(0,b);b=b.parentNode;if(!b.idd||b.idd=="__filler__")return;
+for(var c=0;c<b.childNodes.length;c++)b.childNodes[c].className+=" "+this.grid._hvrCss;this.grid._lahRw=b}this._honmousemove(a)},_autoMoveSelect:function(a){if(!this.grid.editor){var b=this.grid.getFirstParentOfType(a?a.target:event.srcElement,"TD");b.parentNode.idd&&this.grid.doClick(b,!0,0)}this._onmousemove(a)},destructor:function(){this.editStop(!0);if(this._sizeTime)this._sizeTime=window.clearTimeout(this._sizeTime);this.entBox.className=(this.entBox.className||"").replace(/gridbox.*/,"");if(this.formInputs)for(var a=
+0;a<this.formInputs.length;a++)this.parentForm.removeChild(this.formInputs[a]);var b;this.xmlLoader=this.xmlLoader.destructor();for(a=0;a<this.rowsCol.length;a++)if(this.rowsCol[a])this.rowsCol[a].grid=null;for(a in this.rowsAr)this.rowsAr[a]&&(this.rowsAr[a]=null);this.rowsCol=new dhtmlxArray;this.rowsAr={};this.entBox.innerHTML="";var c=function(){};this.setSizes=this._update_srnd_view=this.callEvent=this.entBox.onclick=this.entBox.onmousedown=this.entBox.onbeforeactivate=this.entBox.onbeforedeactivate=
+this.entBox.onbeforedeactivate=this.entBox.onselectstart=c;this.entBox.grid=this.objBox.grid=this.hdrBox.grid=this.obj.grid=this.hdr.grid=null;for(b in this){if(this[b]&&this[b].m_obj)this[b].m_obj=null;this[b]=null}this==globalActiveDHTMLGridObject&&(globalActiveDHTMLGridObject=null);return null},getSortingState:function(){var a=[];if(this.fldSorted)a[0]=this.fldSorted._cellIndex,a[1]=this.sortImg.src.indexOf("sort_desc.gif")!=-1?"des":"asc";return a},enableAutoHeight:function(a,b,c){this._ahgr=
+convertStringToBoolean(a);this._ahgrF=convertStringToBoolean(c);this._ahgrM=b||null;if(arguments.length==1)this.objBox.style.overflowY=a?"hidden":"auto";if(b=="auto")this._ahgrM=null,this._ahgrMA=!0,this._setAutoResize()},enableStableSorting:function(a){this._sst=convertStringToBoolean(a);this.rowsCol.stablesort=function(a){for(var c=this.length-1,d=0;d<this.length-1;d++){for(var e=0;e<c;e++)if(a(this[e],this[e+1])>0){var f=this[e];this[e]=this[e+1];this[e+1]=f}c--}}},enableKeyboardSupport:function(a){this._htkebl=
+!convertStringToBoolean(a)},enableContextMenu:function(a){this._ctmndx=a},setScrollbarWidthCorrection:function(){},enableTooltips:function(a){this._enbTts=a.split(",");for(var b=0;b<this._enbTts.length;b++)this._enbTts[b]=convertStringToBoolean(this._enbTts[b])},enableResizing:function(a){this._drsclmn=a.split(",");for(var b=0;b<this._drsclmn.length;b++)this._drsclmn[b]=convertStringToBoolean(this._drsclmn[b])},setColumnMinWidth:function(a,b){if(arguments.length==2){if(!this._drsclmW)this._drsclmW=
+[];this._drsclmW[b]=a}else this._drsclmW=a.split(",")},enableCellIds:function(a){this._enbCid=convertStringToBoolean(a)},lockRow:function(a,b){var c=this.getRowById(a);if(c)c._locked=convertStringToBoolean(b),this.cell&&this.cell.parentNode.idd==a&&this.editStop()},_getRowArray:function(a){for(var b=[],c=0;c<a.childNodes.length;c++){var d=this.cells3(a,c);b[c]=d.getValue()}return b},_launchCommands:function(a){for(var b=0;b<a.length;b++){for(var c=[],d=0;d<a[b].childNodes.length;d++)if(a[b].childNodes[d].nodeType==
+1)c[c.length]=a[b].childNodes[d].firstChild.data;this[a[b].getAttribute("command")].apply(this,c)}},_parseHead:function(a){var b=this.xmlLoader.doXPath("./head",a);if(b.length){var c=this.xmlLoader.doXPath("./column",b[0]),d=this.xmlLoader.doXPath("./settings",b[0]),e="setInitWidths",f=!1;if(d[0])for(var g=0;g<d[0].childNodes.length;g++)switch(d[0].childNodes[g].tagName){case "colwidth":d[0].childNodes[g].firstChild&&d[0].childNodes[g].firstChild.data=="%"&&(e="setInitWidthsP");break;case "splitat":f=
+d[0].childNodes[g].firstChild?d[0].childNodes[g].firstChild.data:!1}this._launchCommands(this.xmlLoader.doXPath("./beforeInit/call",b[0]));if(c.length>0){this.hdr.rows.length>0&&this.clearAll(!0);for(var h=[[],[],[],[],[],[],[],[],[]],i=",width,type,align,sort,color,format,hidden,id".split(","),j=["",e,"setColTypes","setColAlign","setColSorting","setColumnColor","","","setColumnIds"],k=0;k<c.length;k++){for(var m=1;m<i.length;m++)h[m].push(c[k].getAttribute(i[m]));h[0].push((c[k].firstChild?c[k].firstChild.data:
+"").replace(/^\s*((\s\S)*.+)\s*$/gi,"$1"))}this.setHeader(h[0]);for(k=0;k<j.length;k++)if(j[k])this[j[k]](h[k].join(this.delim));for(k=0;k<c.length;k++)if(this.cellType[k].indexOf("co")==0||this.cellType[k]=="clist"){var l=this.xmlLoader.doXPath("./option",c[k]);if(l.length){var n=[];if(this.cellType[k]=="clist"){for(m=0;m<l.length;m++)n[n.length]=l[m].firstChild?l[m].firstChild.data:"";this.registerCList(k,n)}else for(var o=this.getCombo(k),m=0;m<l.length;m++)o.put(l[m].getAttribute("value"),l[m].firstChild?
+l[m].firstChild.data:"")}}else h[6][k]&&(this.cellType[k].toLowerCase().indexOf("calendar")!=-1||this.fldSort[k]=="date"?this.setDateFormat(h[6][k]):this.setNumberFormat(h[6][k],k));this.init();var p=h[7].join(this.delim);this.setColHidden&&p.replace(/,/g,"")!=""&&this.setColHidden(p);f&&this.splitAt&&this.splitAt(f)}this._launchCommands(this.xmlLoader.doXPath("./afterInit/call",b[0]))}var r=this.xmlLoader.doXPath("//rows/userdata",a);if(r.length>0){this.UserData.gridglobaluserdata||(this.UserData.gridglobaluserdata=
+new Hashtable);for(m=0;m<r.length;m++){for(var q="",s=0;s<r[m].childNodes.length;s++)q+=r[m].childNodes[s].nodeValue;this.UserData.gridglobaluserdata.put(r[m].getAttribute("name"),q)}}},getCheckedRows:function(a){var b=[];this.forEachRowA(function(c){this.cells(c,a).getValue()!=0&&b.push(c)},!0);return b.join(",")},checkAll:function(){for(var a=arguments.length?arguments[0]:1,b=0;b<this.getColumnsNum();b++)this.getColType(b)=="ch"&&this.setCheckedRows(b,a)},uncheckAll:function(){this.checkAll(0)},
+setCheckedRows:function(a,b){this.forEachRowA(function(c){this.cells(c,a).isCheckbox()&&this.cells(c,a).setValue(b)})},_drawTooltip:function(a){var b=this.grid.getFirstParentOfType(a?a.target:event.srcElement,"TD");if(!b||this.grid.editor&&this.grid.editor.cell==b)return!0;var c=b.parentNode;if(c.idd&&c.idd!="__filler__"){var d=a?a.target:event.srcElement;if(c.idd==window.unknown)return!0;if(!this.grid.callEvent("onMouseOver",[c.idd,b._cellIndex,a||window.event]))return!0;if(this.grid._enbTts&&!this.grid._enbTts[b._cellIndex]){if(d.title)d.title=
+"";return!0}if(!(b._cellIndex>=this.grid._cCount)){var e=this.grid.cells3(c,b._cellIndex);if(e&&e.cell&&e.cell._attrs){if(d._title)e.cell.title="";if(!e.cell._attrs.title)d._title=!0;if(e)d.title=e.cell._attrs.title||(e.getTitle?e.getTitle():(e.getValue()||"").toString().replace(/<[^>]*>/gi,""));return!0}}}},enableCellWidthCorrection:function(a){if(_isFF)this._wcorr=parseInt(a)},getAllRowIds:function(a){for(var b=[],c=0;c<this.rowsBuffer.length;c++)this.rowsBuffer[c]&&b.push(this.rowsBuffer[c].idd);
+return b.join(a||this.delim)},getAllItemIds:function(){return this.getAllRowIds()},preventIECaching:function(a){this.no_cashe=convertStringToBoolean(a);this.xmlLoader.rSeed=this.no_cashe},enableColumnAutoSize:function(a){this._eCAS=convertStringToBoolean(a)},_onHeaderDblClick:function(a){var b=this.grid,c=b.getFirstParentOfType(_isIE?event.srcElement:a.target,"TD");if(!b._eCAS)return!1;b.adjustColumnSize(c._cellIndexS)},adjustColumnSize:function(a,b){if(!this._hrrar||!this._hrrar[a]){this._notresize=
+!0;var c=0;this._setColumnSizeR(a,20);for(var d=1;d<this.hdr.rows.length;d++){var e=this.hdr.rows[d];if((e=e.childNodes[e._childIndexes?e._childIndexes[a]:a])&&(!e.colSpan||e.colSpan<2)&&e._cellIndex==a)e.childNodes[0]&&e.childNodes[0].className=="hdrcell"&&(e=e.childNodes[0]),c=Math.max(c,_isFF||_isOpera?e.textContent.length*this.fontWidth:e.scrollWidth)}for(var f=this.obj.rows.length,g=1;g<f;g++){var h=this.obj.rows[g];this.rowsAr[h.idd]&&!(h._childIndexes&&h._childIndexes[a]!=a)&&h.childNodes[a]&&
+(h=_isFF||_isOpera||b?h.childNodes[a].textContent.length*this.fontWidth:h.childNodes[a].scrollWidth,h>c&&(c=h))}c+=20+(b||0);this._setColumnSizeR(a,c);this._notresize=!1;this.setSizes()}},detachHeader:function(a,b){var b=b||this.hdr,c=b.rows[a+1];c&&c.parentNode.removeChild(c);this.setSizes()},detachFooter:function(a){this.detachHeader(a,this.ftr)},attachHeader:function(a,b,c){typeof a=="string"&&(a=this._eSplit(a));typeof b=="string"&&(b=b.split(this.delim));c=c||"_aHead";if(this.hdr.rows.length)if(a)this._createHRow([a,
+b],this[c=="_aHead"?"hdr":"ftr"]);else{if(this[c])for(var d=0;d<this[c].length;d++)this.attachHeader.apply(this,this[c][d])}else this[c]||(this[c]=[]),this[c][this[c].length]=[a,b,c]},_createHRow:function(a,b){if(!b){if(this.entBox.style.position!="absolute")this.entBox.style.position="relative";var c=document.createElement("DIV");c.className="ftr";this.entBox.appendChild(c);var d=document.createElement("TABLE");d.cellPadding=d.cellSpacing=0;if(!_isIE)d.width="100%",d.style.paddingRight="20px";d.style.marginRight=
+"20px";d.style.tableLayout="fixed";c.appendChild(d);d.appendChild(document.createElement("TBODY"));this.ftr=b=d;for(var e=d.insertRow(0),f=this.hdrLabels.length<=1?a[0].length:this.hdrLabels.length,g=0;g<f;g++)e.appendChild(document.createElement("TH")),e.childNodes[g]._cellIndex=g;_isIE&&_isIE<8?e.style.position="absolute":e.style.height="auto"}var h=a[1],c=document.createElement("TR");b.rows[0].parentNode.appendChild(c);for(g=0;g<a[0].length;g++)if(a[0][g]=="#cspan"){var i=c.cells[c.cells.length-
+1];i.colSpan=(i.colSpan||1)+1}else if(a[0][g]=="#rspan"&&b.rows.length>1){for(var j=b.rows.length-2,k=!1,i=null;!k;){for(var i=b.rows[j],m=0;m<i.cells.length;m++)if(i.cells[m]._cellIndex==g){k=m+1;break}j--}i=i.cells[k-1];i.rowSpan=(i.rowSpan||1)+1}else{var l=document.createElement("TD");l._cellIndex=l._cellIndexS=g;if(this._hrrar&&this._hrrar[g]&&!_isIE)l.style.display="none";if(typeof a[0][g]=="object")l.appendChild(a[0][g]);else if(l.innerHTML=this.forceDivInHeader?"<div class='hdrcell'>"+(a[0][g]||
+"&nbsp;")+"</div>":a[0][g]||"&nbsp;",(a[0][g]||"").indexOf("#")!=-1)if(d=a[0][g].match(/(^|{)#([^}]+)(}|$)/)){var n="_in_header_"+d[2];if(this[n])this[n](this.forceDivInHeader?l.firstChild:l,g,a[0][g].split(d[0]))}if(h)l.style.cssText=h[g];c.appendChild(l)}var o=b;if(_isKHTML)b._kTimer&&window.clearTimeout(b._kTimer),b._kTimer=window.setTimeout(function(){b.rows[1].style.display="none";window.setTimeout(function(){b.rows[1].style.display=""},1)},500)},forEachRow:function(a){for(var b in this.rowsAr)this.rowsAr[b]&&
+this.rowsAr[b].idd&&a.apply(this,[this.rowsAr[b].idd])},forEachRowA:function(a){for(var b=0;b<this.rowsBuffer.length;b++)this.rowsBuffer[b]&&a.call(this,this.render_row(b).idd)},forEachCell:function(a,b){var c=this.getRowById(a);if(c)for(var d=0;d<this._cCount;d++)b(this.cells3(c,d),d)},enableAutoWidth:function(a,b,c){this._awdth=[convertStringToBoolean(a),parseInt(b||99999),parseInt(c||0)];if(arguments.length==1)this.objBox.style.overflowX=a?"hidden":"auto"},updateFromXML:function(a,b,c,d){typeof b==
+"undefined"&&(b=!0);this._refresh_mode=[!0,b,c];this.load(a,d)},_refreshFromXML:function(a){this._f_rowsBuffer&&this.filterBy(0,"");reset=!1;if(window.eXcell_tree)eXcell_tree.prototype.setValueX=eXcell_tree.prototype.setValue,eXcell_tree.prototype.setValue=function(a){var b=this.grid._h2.get[this.cell.parentNode.idd];b&&this.cell.parentNode.valTag?this.setLabel(a):this.setValueX(a)};var b=this.cellType._dhx_find("tree");a.getXMLTopNode("rows");var c=a.doXPath("//rows")[0].getAttribute("parent")||
+0,d={};this._refresh_mode[2]&&(b!=-1?this._h2.forEachChild(c,function(a){d[a.id]=!0},this):this.forEachRow(function(a){d[a]=!0}));for(var e=a.doXPath("//row"),f=0;f<e.length;f++){var g=e[f],h=g.getAttribute("id");d[h]=!1;c=g.parentNode.getAttribute("id")||c;if(this.rowsAr[h]&&this.rowsAr[h].tagName!="TR")this._h2?this._h2.get[h].buff.data=g:this.rowsBuffer[this.getRowIndex(h)].data=g,this.rowsAr[h]=g;else if(this.rowsAr[h])this._process_xml_row(this.rowsAr[h],g,-1),this._postRowProcessing(this.rowsAr[h],
+!0);else if(this._refresh_mode[1]){var i={idd:h,data:g,_parser:this._process_xml_row,_locator:this._get_xml_data},j=this.rowsBuffer.length;this._refresh_mode[1]=="top"?(this.rowsBuffer.unshift(i),j=0):this.rowsBuffer.push(i);if(this._h2)reset=!0,this._h2.add(h,g.parentNode.getAttribute("id")||g.parentNode.getAttribute("parent")).buff=this.rowsBuffer[this.rowsBuffer.length-1];this.rowsAr[h]=g;g=this.render_row(j);this._insertRowAt(g,j?-1:0)}}if(this._refresh_mode[2])for(h in d)d[h]&&this.rowsAr[h]&&
+this.deleteRow(h);this._refresh_mode=null;if(window.eXcell_tree)eXcell_tree.prototype.setValue=eXcell_tree.prototype.setValueX;reset&&this._renderSort();if(this._f_rowsBuffer)this._f_rowsBuffer=null,this.filterByAll()},getCustomCombo:function(a,b){var c=this.cells(a,b).cell;if(!c._combo)c._combo=new dhtmlXGridComboObject;return c._combo},setTabOrder:function(a){var b=a.split(this.delim);this._tabOrder=[];for(var c=this._cCount||a.length,d=0;d<c;d++)b[d]={c:parseInt(b[d]),ind:d};b.sort(function(a,
+b){return a.c>b.c?1:-1});for(d=0;d<c;d++)this._tabOrder[b[d].ind]=!b[d+1]||typeof b[d].c=="undefined"?(b[0].ind+1)*-1:b[d+1].ind},i18n:{loading:"Loading",decimal_separator:".",group_separator:","},_key_events:{k13_1_0:function(){var a=this.rowsCol._dhx_find(this.row);this.selectCell(this.rowsCol[a+1],this.cell._cellIndex,!0)},k13_0_1:function(){var a=this.rowsCol._dhx_find(this.row);this.selectCell(this.rowsCol[a-1],this.cell._cellIndex,!0)},k13_0_0:function(){this.editStop();this.callEvent("onEnter",
+[this.row?this.row.idd:null,this.cell?this.cell._cellIndex:null]);this._still_active=!0},k9_0_0:function(){this.editStop();if(!this.callEvent("onTab",[!0]))return!0;var a=this._getNextCell(null,1);if(a)this.selectCell(a.parentNode,a._cellIndex,this.row!=a.parentNode,!1,!0),this._still_active=!0},k9_0_1:function(){this.editStop();if(!this.callEvent("onTab",[!1]))return!1;var a=this._getNextCell(null,-1);if(a)this.selectCell(a.parentNode,a._cellIndex,this.row!=a.parentNode,!1,!0),this._still_active=
+!0},k113_0_0:function(){this._f2kE&&this.editCell()},k32_0_0:function(){var a=this.cells4(this.cell);if(!a.changeState||a.changeState()===!1)return!1},k27_0_0:function(){this.editStop(!0)},k33_0_0:function(){this.pagingOn?this.changePage(this.currentPage-1):this.scrollPage(-1)},k34_0_0:function(){this.pagingOn?this.changePage(this.currentPage+1):this.scrollPage(1)},k37_0_0:function(){if(!this.editor&&this.isTreeGrid())this.collapseKids(this.row);else return!1},k39_0_0:function(){if(!this.editor&&
+this.isTreeGrid())this.expandKids(this.row);else return!1},k40_0_0:function(){var a=this._realfake?this._fake:this;if(this.editor&&this.editor.combo)this.editor.shiftNext();else{if(!this.row.idd)return;var b=Math.max(a._r_select||0,this.getRowIndex(this.row.idd))+1;if(this.rowsBuffer[b])a._r_select=null,this.selectCell(b,this.cell._cellIndex,!0),a.pagingOn&&a.showRow(a.getRowId(b));else{if(!this.callEvent("onLastRow",[]))return!1;this._key_events.k34_0_0.apply(this,[]);this.pagingOn&&this.rowsCol[b]&&
+this.selectCell(b,0,!0)}}this._still_active=!0},k38_0_0:function(){var a=this._realfake?this._fake:this;if(this.editor&&this.editor.combo)this.editor.shiftPrev();else{if(!this.row.idd)return;var b=this.getRowIndex(this.row.idd)+1;if(b!=-1&&(!this.pagingOn||b!=1)){var c=this._nextRow(b-1,-1);this.selectCell(c,this.cell._cellIndex,!0);a.pagingOn&&c&&a.showRow(c.idd)}else this._key_events.k33_0_0.apply(this,[])}this._still_active=!0}},_build_master_row:function(){for(var a=document.createElement("DIV"),
+b=["<table><tr>"],c=0;c<this._cCount;c++)b.push("<td></td>");b.push("</tr></table>");a.innerHTML=b.join("");this._master_row=a.firstChild.rows[0]},_prepareRow:function(a){this._master_row||this._build_master_row();for(var b=this._master_row.cloneNode(!0),c=0;c<b.childNodes.length;c++){b.childNodes[c]._cellIndex=c;if(this._enbCid)b.childNodes[c].id="c_"+a+"_"+c;this.dragAndDropOff&&this.dragger.addDraggableItem(b.childNodes[c],this)}b.idd=a;b.grid=this;return b},_process_jsarray_row:function(a,b){a._attrs=
+{};for(var c=0;c<a.childNodes.length;c++)a.childNodes[c]._attrs={};this._fillRow(a,this._c_order?this._swapColumns(b):b);return a},_get_jsarray_data:function(a,b){return a[b]},_process_json_row:function(a,b){a._attrs={};for(var c=0;c<a.childNodes.length;c++)a.childNodes[c]._attrs={};this._fillRow(a,this._c_order?this._swapColumns(b.data):b.data);return a},_get_json_data:function(a,b){return a.data[b]},_process_csv_row:function(a,b){a._attrs={};for(var c=0;c<a.childNodes.length;c++)a.childNodes[c]._attrs=
+{};this._fillRow(a,this._c_order?this._swapColumns(b.split(this.csv.cell)):b.split(this.csv.cell));return a},_get_csv_data:function(a,b){return a.split(this.csv.cell)[b]},_process_store_row:function(a,b){for(var c=[],d=0;d<this.columnIds.length;d++)c[d]=b[this.columnIds[d]];for(var e=0;e<a.childNodes.length;e++)a.childNodes[e]._attrs={};a._attrs=b;this._fillRow(a,this._c_order?this._swapColumns(c):c)},_process_xml_row:function(a,b){var c=this.xmlLoader.doXPath(this.xml.cell,b),d=[];a._attrs=this._xml_attrs(b);
+if(this._ud_enabled)for(var e=this.xmlLoader.doXPath("./userdata",b),f=e.length-1;f>=0;f--){for(var g="",h=0;h<e[f].childNodes.length;h++)g+=e[f].childNodes[h].nodeValue;this.setUserData(a.idd,e[f].getAttribute("name"),g)}for(h=0;h<c.length;h++){var i=c[this._c_order?this._c_order[h]:h];if(i){var j=a._childIndexes?a._childIndexes[h]:h,k=i.getAttribute("type");if(a.childNodes[j]){if(k)a.childNodes[j]._cellType=k;a.childNodes[j]._attrs=this._xml_attrs(i)}i.getAttribute("xmlcontent")||(i=i.firstChild?
+i.firstChild.data:"");d.push(i)}}for(;h<a.childNodes.length;h++)a.childNodes[h]._attrs={};a.parentNode&&a.parentNode.tagName=="row"&&(a._attrs.parent=a.parentNode.getAttribute("idd"));this._fillRow(a,d);return a},_get_xml_data:function(a,b){for(a=a.firstChild;;){if(!a)return"";a.tagName=="cell"&&b--;if(b<0)break;a=a.nextSibling}return a.firstChild?a.firstChild.data:""},_fillRow:function(a,b){this.editor&&this.editStop();for(var c=0;c<a.childNodes.length;c++)if(c<b.length||this.defVal[c]){var d=a.childNodes[c]._cellIndex,
+e=b[d],f=this.cells4(a.childNodes[c]);if(this.defVal[d]&&(e==""||typeof e=="undefined"))e=this.defVal[d];f&&f.setValue(e)}else a.childNodes[c].innerHTML="&nbsp;",a.childNodes[c]._clearCell=!0;return a},_postRowProcessing:function(a,b){if(a._attrs["class"])a._css=a.className=a._attrs["class"];if(a._attrs.locked)a._locked=!0;if(a._attrs.bgColor)a.bgColor=a._attrs.bgColor;for(var c=0,d=0;d<a.childNodes.length;d++){var e=a.childNodes[d],f=e._cellIndex,g=e._attrs.style||a._attrs.style;g&&(e.style.cssText+=
+";"+g);if(e._attrs["class"])e.className=e._attrs["class"];if(g=e._attrs.align||this.cellAlign[f])e.align=g;e.vAlign=e._attrs.valign||this.cellVAlign[f];var h=e._attrs.bgColor||this.columnColor[f];if(h)e.bgColor=h;e._attrs.colspan&&!b&&(this.setColspan(a.idd,d+c,e._attrs.colspan),c+=e._attrs.colspan-1);if(this._hrrar&&this._hrrar[f]&&!b)e.style.display="none"}this.callEvent("onRowCreated",[a.idd,a,null])},load:function(a,b,c){this.callEvent("onXLS",[this]);arguments.length==2&&typeof b!="function"&&
+(c=b,b=null);c=c||"xml";if(!this.xmlFileUrl)this.xmlFileUrl=a;this._data_type=c;this.xmlLoader.onloadAction=function(a,e,f,g,h){a.callEvent&&(h=a["_process_"+c](h),a._contextCallTimer||a.callEvent("onXLE",[a,0,0,h]),b&&(b(),b=null))};this.xmlLoader.loadXML(a)},loadXML:function(a,b){this.load(a,b,"xml")},parse:function(a,b,c){arguments.length==2&&typeof b!="function"&&(c=b,b=null);this._data_type=c=c||"xml";a=this["_process_"+c](a);this._contextCallTimer||this.callEvent("onXLE",[this,0,0,a]);b&&b()},
+xml:{top:"rows",row:"./row",cell:"./cell",s_row:"row",s_cell:"cell",row_attrs:[],cell_attrs:[]},csv:{row:"\n",cell:","},_xml_attrs:function(a){var b={};if(a.attributes.length)for(var c=0;c<a.attributes.length;c++)b[a.attributes[c].name]=a.attributes[c].value;return b},_process_xml:function(a){if(!a.doXPath){var b=new dtmlXMLLoaderObject(function(){});typeof a=="string"?b.loadXMLString(a):(b.xmlDoc=a.responseXML?a:{},b.xmlDoc.responseXML=a);a=b}if(this._refresh_mode)return this._refreshFromXML(a);
+this._parsing=!0;var c=a.getXMLTopNode(this.xml.top);if(c.tagName.toLowerCase()==this.xml.top){this._parseHead(c);var d=a.doXPath(this.xml.row,c),e=parseInt(a.doXPath("//"+this.xml.top)[0].getAttribute("pos")||0),f=parseInt(a.doXPath("//"+this.xml.top)[0].getAttribute("total_count")||0),g=!1;f&&(this.rowsBuffer[f-1]||(this.rowsBuffer.length&&(g=!0),this.rowsBuffer[f-1]=null),f<this.rowsBuffer.length&&(this.rowsBuffer.splice(f,this.rowsBuffer.length-f),g=!0));if(this.isTreeGrid())return this._process_tree_xml(a);
+for(var h=0;h<d.length;h++)if(!this.rowsBuffer[h+e]){var i=d[h].getAttribute("id")||h+e+1;this.rowsBuffer[h+e]={idd:i,data:d[h],_parser:this._process_xml_row,_locator:this._get_xml_data};this.rowsAr[i]=d[h]}if(g&&this._srnd){var j=this.objBox.scrollTop;this._reset_view();this.objBox.scrollTop=j}else this.render_dataset();this._parsing=!1;return a.xmlDoc.responseXML?a.xmlDoc.responseXML:a.xmlDoc}},_process_jsarray:function(a){this._parsing=!0;if(a&&a.xmlDoc)eval("dhtmlx.temp="+a.xmlDoc.responseText+
+";"),a=dhtmlx.temp;for(var b=0;b<a.length;b++){var c=b+1;this.rowsBuffer.push({idd:c,data:a[b],_parser:this._process_jsarray_row,_locator:this._get_jsarray_data});this.rowsAr[c]=a[b]}this.render_dataset();this._parsing=!1},_process_csv:function(a){this._parsing=!0;if(a.xmlDoc)a=a.xmlDoc.responseText;a=a.replace(/\r/g,"");a=a.split(this.csv.row);if(this._csvHdr){this.clearAll();var b=a.splice(0,1)[0].split(this.csv.cell);this._csvAID||b.splice(0,1);this.setHeader(b.join(this.delim));this.init()}for(var c=
+0;c<a.length;c++)if(a[c]||c!=a.length-1){if(this._csvAID){var d=c+1;this.rowsBuffer.push({idd:d,data:a[c],_parser:this._process_csv_row,_locator:this._get_csv_data})}else{var e=a[c].split(this.csv.cell),d=e.splice(0,1)[0];this.rowsBuffer.push({idd:d,data:e,_parser:this._process_jsarray_row,_locator:this._get_jsarray_data})}this.rowsAr[d]=a[c]}this.render_dataset();this._parsing=!1},_process_json:function(a){this._parsing=!0;if(a&&a.xmlDoc)eval("dhtmlx.temp="+a.xmlDoc.responseText+";"),a=dhtmlx.temp;
+for(var b=0;b<a.rows.length;b++){var c=a.rows[b].id;this.rowsBuffer.push({idd:c,data:a.rows[b],_parser:this._process_json_row,_locator:this._get_json_data});this.rowsAr[c]=a[b]}this.render_dataset();this._parsing=!1},render_dataset:function(a,b){if(this._srnd){if(this._fillers)return this._update_srnd_view();b=Math.min(this._get_view_size()+(this._srnd_pr||0),this.rowsBuffer.length)}this.pagingOn?(a=Math.max(a||0,(this.currentPage-1)*this.rowsBufferOutSize),b=Math.min(this.currentPage*this.rowsBufferOutSize,
+this.rowsBuffer.length)):(a=a||0,b=b||this.rowsBuffer.length);for(var c=a;c<b;c++){var d=this.render_row(c);if(d==-1){if(this.xmlFileUrl&&this.callEvent("onDynXLS",[c,this._dpref?this._dpref:b-c]))this.load(this.xmlFileUrl+getUrlSymbol(this.xmlFileUrl)+"posStart="+c+"&count="+(this._dpref?this._dpref:b-c),this._data_type);b=c;break}if(!d.parentNode||!d.parentNode.tagName)if(this._insertRowAt(d,c),d._attrs.selected||d._attrs.select)this.selectRow(d,d._attrs.call?!0:!1,!0),d._attrs.selected=d._attrs.select=
+null;if(this._ads_count&&c-a==this._ads_count){var e=this;this._context_parsing=this._context_parsing||this._parsing;return this._contextCallTimer=window.setTimeout(function(){e._contextCallTimer=null;e.render_dataset(c,b);if(!e._contextCallTimer)e._context_parsing?e.callEvent("onXLE",[]):e._fixAlterCss(),e.callEvent("onDistributedEnd",[]),e._context_parsing=!1},this._ads_time)}}if(this._srnd&&!this._fillers)this._fillers=[this._add_filler(b,this.rowsBuffer.length-b)];this.setSizes()},render_row:function(a){if(!this.rowsBuffer[a])return-1;
+if(this.rowsBuffer[a]._parser){var b=this.rowsBuffer[a];if(this.rowsAr[b.idd]&&this.rowsAr[b.idd].tagName=="TR")return this.rowsBuffer[a]=this.rowsAr[b.idd];var c=this._prepareRow(b.idd);this.rowsBuffer[a]=c;this.rowsAr[b.idd]=c;b._parser.call(this,c,b.data);this._postRowProcessing(c);return c}return this.rowsBuffer[a]},_get_cell_value:function(a,b,c){return a._locator?(this._c_order&&(b=this._c_order[b]),a._locator.call(this,a.data,b)):this.cells3(a,b)[c?c:"getValue"]()},sortRows:function(a,b,c){c=
+(c||"asc").toLowerCase();b=b||this.fldSort[a];a=a||0;if(this.isTreeGrid())this.sortTreeRows(a,b,c);else{var d={},e=this.cellType[a],f="getValue";e=="link"&&(f="getContent");if(e=="dhxCalendar"||e=="dhxCalendarA")f="getDate";for(var g=0;g<this.rowsBuffer.length;g++)d[this.rowsBuffer[g].idd]=this._get_cell_value(this.rowsBuffer[g],a,f);this._sortRows(a,b,c,d)}this.callEvent("onAfterSorting",[a,b,c])},_sortCore:function(a,b,c,d,e){var f="sort";if(this._sst)e.stablesort=this.rowsCol.stablesort,f="stablesort";
+if(b=="str")e[f](function(a,b){return c=="asc"?d[a.idd]>d[b.idd]?1:-1:d[a.idd]<d[b.idd]?1:-1});else if(b=="int")e[f](function(a,b){var e=parseFloat(d[a.idd]),e=isNaN(e)?-99999999999999:e,f=parseFloat(d[b.idd]),f=isNaN(f)?-99999999999999:f;return c=="asc"?e-f:f-e});else if(b=="date")e[f](function(a,b){var e=Date.parse(d[a.idd])||Date.parse("01/01/1900"),f=Date.parse(d[b.idd])||Date.parse("01/01/1900");return c=="asc"?e-f:f-e})},_sortRows:function(a,b,c,d){this._sortCore(a,b,c,d,this.rowsBuffer);this._reset_view();
+this.callEvent("onGridReconstructed",[])},_reset_view:function(a){if(this.obj.rows[0]){this.callEvent("onResetView",[]);var b=this.obj.rows[0].parentNode,c=b.removeChild(b.childNodes[0],!0);if(_isKHTML)for(var d=b.parentNode.childNodes.length-1;d>=0;d--)b.parentNode.childNodes[d].tagName=="TR"&&b.parentNode.removeChild(b.parentNode.childNodes[d],!0);else if(_isIE)for(d=b.childNodes.length-1;d>=0;d--)b.childNodes[d].removeNode(!0);else b.innerHTML="";b.appendChild(c);this.rowsCol=dhtmlxArray();this._sst&&
+this.enableStableSorting(!0);this._fillers=this.undefined;a||this.render_dataset()}},deleteRow:function(a,b){b||(b=this.getRowById(a));if(b){this.editStop();if(!this._realfake&&this.callEvent("onBeforeRowDeleted",[a])==!1)return!1;var c=0;if(this.cellType._dhx_find("tree")!=-1&&!this._realfake)c=this._h2.get[a].parent.id,this._removeTrGrRow(b);else{b.parentNode&&b.parentNode.removeChild(b);var d=this.rowsCol._dhx_find(b);d!=-1&&this.rowsCol._dhx_removeAt(d);for(var e=0;e<this.rowsBuffer.length;e++)if(this.rowsBuffer[e]&&
+this.rowsBuffer[e].idd==a){this.rowsBuffer._dhx_removeAt(e);d=e;break}}this.rowsAr[a]=null;for(e=0;e<this.selectedRows.length;e++)this.selectedRows[e].idd==a&&this.selectedRows._dhx_removeAt(e);if(this._srnd){for(e=0;e<this._fillers.length;e++){var f=this._fillers[e];f&&(f[0]>=d?f[0]-=1:f[1]>=d&&(f[1]-=1))}this._update_srnd_view()}this.pagingOn&&this.changePage();this._realfake||this.callEvent("onAfterRowDeleted",[a,c]);this.callEvent("onGridReconstructed",[]);this._ahgr&&this.setSizes();return!0}},
+_addRow:function(a,b,c){if(c==-1||typeof c=="undefined")c=this.rowsBuffer.length;typeof b=="string"&&(b=b.split(this.delim));var d=this._prepareRow(a);d._attrs={};for(var e=0;e<d.childNodes.length;e++)d.childNodes[e]._attrs={};this.rowsAr[d.idd]=d;if(this._h2)this._h2.get[d.idd].buff=d;this._fillRow(d,b);this._postRowProcessing(d);if(this._skipInsert)return this._skipInsert=!1,this.rowsAr[d.idd]=d;if(this.pagingOn)return this.rowsBuffer._dhx_insertAt(c,d),this.rowsAr[d.idd]=d;if(this._fillers){this.rowsCol._dhx_insertAt(c,
+null);this.rowsBuffer._dhx_insertAt(c,d);this._fake&&this._fake.rowsCol._dhx_insertAt(c,null);this.rowsAr[d.idd]=d;for(var f=!1,g=0;g<this._fillers.length;g++){var h=this._fillers[g];if(h&&h[0]<=c&&h[0]+h[1]>=c)h[1]+=1,h[2].firstChild.style.height=parseInt(h[2].firstChild.style.height)+this._srdh+"px",f=!0,this._fake&&this._fake._fillers[g][1]++;h&&h[0]>c&&(h[0]+=1,this._fake&&this._fake._fillers[g][0]++)}f||this._fillers.push(this._add_filler(c,1,c==0?{parentNode:this.obj.rows[0].parentNode,nextSibling:this.rowsCol[1]}:
+this.rowsCol[c-1],!0));return d}this.rowsBuffer._dhx_insertAt(c,d);return this._insertRowAt(d,c)},addRow:function(a,b,c){var d=this._addRow(a,b,c);this.dragContext||this.callEvent("onRowAdded",[a]);this.pagingOn&&this.changePage(this.currentPage);this._srnd&&this._update_srnd_view();d._added=!0;this._ahgr&&this.setSizes();this.callEvent("onGridReconstructed",[]);return d},_insertRowAt:function(a,b,c){this.rowsAr[a.idd]=a;if(this._skipInsert)return this._skipInsert=!1,a;if(b<0||!b&&parseInt(b)!==0)b=
+this.rowsCol.length;else if(b>this.rowsCol.length)b=this.rowsCol.length;this._cssEven&&(a.className+=(this._cssSP?this.getLevel(a.idd):b)%2==1?" "+this._cssUnEven+(this._cssSU?" "+this._cssUnEven+"_"+this.getLevel(a.idd):""):" "+this._cssEven+(this._cssSU?" "+this._cssEven+"_"+this.getLevel(a.idd):""));c||(b==this.obj.rows.length-1||!this.rowsCol[b]?_isKHTML?this.obj.appendChild(a):this.obj.firstChild.appendChild(a):this.rowsCol[b].parentNode.insertBefore(a,this.rowsCol[b]));this.rowsCol._dhx_insertAt(b,
+a);this.callEvent("onRowInserted",[a,b]);return a},getRowById:function(a){var b=this.rowsAr[a];if(b){if(b.tagName!="TR"){for(var c=0;c<this.rowsBuffer.length;c++)if(this.rowsBuffer[c]&&this.rowsBuffer[c].idd==a)return this.render_row(c);if(this._h2)return this.render_row(null,b.idd)}return b}return null},cellById:function(a,b){return this.cells(a,b)},cells:function(a,b){if(arguments.length==0)return this.cells4(this.cell);else var c=this.getRowById(a);var d=c._childIndexes?c.childNodes[c._childIndexes[b]]:
+c.childNodes[b];return this.cells4(d)},cellByIndex:function(a,b){return this.cells2(a,b)},cells2:function(a,b){var c=this.render_row(a),d=c._childIndexes?c.childNodes[c._childIndexes[b]]:c.childNodes[b];return this.cells4(d)},cells3:function(a,b){var c=a._childIndexes?a.childNodes[a._childIndexes[b]]:a.childNodes[b];return this.cells4(c)},cells4:function(a){var b=window["eXcell_"+(a._cellType||this.cellType[a._cellIndex])];if(b)return new b(a)},cells5:function(a,b){b=b||a._cellType||this.cellType[a._cellIndex];
+if(!this._ecache[b]){var c=window["eXcell_"+b]?window["eXcell_"+b]:eXcell_ro;this._ecache[b]=new c(a)}this._ecache[b].cell=a;return this._ecache[b]},dma:function(a){if(!this._ecache)this._ecache={};if(a&&!this._dma)this._dma=this.cells4,this.cells4=this.cells5;else if(!a&&this._dma)this.cells4=this._dma,this._dma=null},getRowsNum:function(){return this.rowsBuffer.length},enableEditTabOnly:function(a){this.smartTabOrder=arguments.length>0?convertStringToBoolean(a):!0},setExternalTabOrder:function(a,
+b){var c=this;this.tabStart=typeof a=="object"?a:document.getElementById(a);this.tabStart.onkeydown=function(a){var b=a||window.event;if(b.keyCode==9)return b.cancelBubble=!0,c.selectCell(0,0,0,0,1),c.smartTabOrder&&c.cells2(0,0).isDisabled()&&c._key_events.k9_0_0.call(c),this.blur(),!1};if(_isOpera)this.tabStart.onkeypress=this.tabStart.onkeydown;this.tabEnd=typeof b=="object"?b:document.getElementById(b);this.tabEnd.onkeydown=this.tabEnd.onkeypress=function(a){var b=a||window.event;if(b.keyCode==
+9&&b.shiftKey)return b.cancelBubble=!0,c.selectCell(c.getRowsNum()-1,c.getColumnCount()-1,0,0,1),c.smartTabOrder&&c.cells2(c.getRowsNum()-1,c.getColumnCount()-1).isDisabled()&&c._key_events.k9_0_1.call(c),this.blur(),!1};if(_isOpera)this.tabEnd.onkeypress=this.tabEnd.onkeydown},uid:function(){if(!this._ui_seed)this._ui_seed=(new Date).valueOf();return this._ui_seed++},clearAndLoad:function(){var a=this._pgn_skin;this._pgn_skin=null;this.clearAll();this._pgn_skin=a;this.load.apply(this,arguments)},
+getStateOfView:function(){if(this.pagingOn){var a=(this.currentPage-1)*this.rowsBufferOutSize;return[this.currentPage,a,Math.min(a+this.rowsBufferOutSize,this.rowsBuffer.length),this.rowsBuffer.length]}return[Math.floor(this.objBox.scrollTop/this._srdh),Math.ceil(parseInt(this.objBox.offsetHeight)/this._srdh),this.rowsBuffer.length]}};
+(function(){function a(a,b){this[a]=b}function b(a,b){this[a].call(this,b)}function c(a,b){this[a].call(this,b.join(this.delim))}function d(a,b){for(var c=0;c<b.length;c++)if(typeof b[c]=="object"){var d=this.getCombo(c),e;for(e in b[c])d.put(e,b[c][e])}}function e(a,b){function c(a,b,d){e[b]||(e[b]=[]);if(typeof d=="object")d.toString=function(){return this.text};e[b][a]=d}for(var d=1,e=[],f=0;f<b.length;f++)if(typeof b[f]=="object"&&b[f].length)for(var l=0;l<b[f].length;l++)c(f,l,b[f][l]);else c(f,
+0,b[f]);for(f=0;f<e.length;f++)for(l=0;l<e[0].length;l++){var n=e[f][l];e[f][l]=(n||"").toString()||"&nbsp;";if(n&&n.colspan)for(var o=1;o<n.colspan;o++)c(l+o,f,"#cspan");if(n&&n.rowspan)for(o=1;o<n.rowspan;o++)c(l,f+o,"#rspan")}this.setHeader(e[0]);for(f=1;f<e.length;f++)this.attachHeader(e[f])}var f=[{name:"label",def:"&nbsp;",operation:"setHeader",type:e},{name:"id",def:"",operation:"columnIds",type:a},{name:"width",def:"*",operation:"setInitWidths",type:c},{name:"align",def:"left",operation:"cellAlign",
+type:a},{name:"valign",def:"middle",operation:"cellVAlign",type:a},{name:"sort",def:"na",operation:"fldSort",type:a},{name:"type",def:"ro",operation:"setColTypes",type:c},{name:"options",def:"",operation:"",type:d}];dhtmlx.extend_api("dhtmlXGridObject",{_init:function(a){return[a.parent]},image_path:"setImagePath",columns:"columns",rows:"rows",headers:"headers",skin:"setSkin",smart_rendering:"enableSmartRendering",css:"enableAlterCss",auto_height:"enableAutoHeight",save_hidden:"enableAutoHiddenColumnsSaving",
+save_cookie:"enableAutoSaving",save_size:"enableAutoSizeSaving",auto_width:"enableAutoWidth",block_selection:"enableBlockSelection",csv_id:"enableCSVAutoID",csv_header:"enableCSVHeader",cell_ids:"enableCellIds",colspan:"enableColSpan",column_move:"enableColumnMove",context_menu:"enableContextMenu",distributed:"enableDistributedParsing",drag:"enableDragAndDrop",drag_order:"enableDragOrder",tabulation:"enableEditTabOnly",header_images:"enableHeaderImages",header_menu:"enableHeaderMenu",keymap:"enableKeyboardSupport",
+mouse_navigation:"enableLightMouseNavigation",markers:"enableMarkedCells",math_editing:"enableMathEditing",math_serialization:"enableMathSerialization",drag_copy:"enableMercyDrag",multiline:"enableMultiline",multiselect:"enableMultiselect",save_column_order:"enableOrderSaving",hover:"enableRowsHover",rowspan:"enableRowspan",smart:"enableSmartRendering",save_sorting:"enableSortingSaving",stable_sorting:"enableStableSorting",undo:"enableUndoRedo",csv_cell:"setCSVDelimiter",date_format:"setDateFormat",
+drag_behavior:"setDragBehavior",editable:"setEditable",without_header:"setNoHeader",submit_changed:"submitOnlyChanged",submit_serialization:"submitSerialization",submit_selected:"submitOnlySelected",submit_id:"submitOnlyRowID",xml:"load"},{columns:function(a){for(var c=0;c<f.length;c++){for(var d=[],e=0;e<a.length;e++)d[e]=a[e][f[c].name]||f[c].def;var k=f[c].type||b;k.call(this,f[c].operation,d,a)}this.init()},rows:function(){},headers:function(a){for(var b=0;b<a.length;b++)this.attachHeader(a[b])}})})();
+dhtmlXGridObject.prototype._dp_init=function(a){a.attachEvent("insertCallback",function(a,c){this.obj._h2?this.obj.addRow(c,d,null,parent):this.obj.addRow(c,[],0);var d=this.obj.getRowById(c);d&&(this.obj._process_xml_row(d,a.firstChild),this.obj._postRowProcessing(d))});a.attachEvent("updateCallback",function(a,c){var d=this.obj.getRowById(c);d&&(this.obj._process_xml_row(d,a.firstChild),this.obj._postRowProcessing(d))});a.attachEvent("deleteCallback",function(a,c){this.obj.setUserData(c,this.action_param,
+"true_deleted");this.obj.deleteRow(c)});a._methods=["setRowTextStyle","setCellTextStyle","changeRowId","deleteRow"];this.attachEvent("onEditCell",function(b,c,d){if(a._columns&&!a._columns[d])return!0;var e=this.cells(c,d);b==1?e.isCheckbox()&&a.setUpdated(c,!0):b==2&&e.wasChanged()&&a.setUpdated(c,!0);return!0});this.attachEvent("onRowPaste",function(b){a.setUpdated(b,!0)});this.attachEvent("onRowIdChange",function(b,c){var d=a.findRow(b);d<a.updatedRows.length&&(a.updatedRows[d]=c)});this.attachEvent("onSelectStateChanged",
+function(){a.updateMode=="row"&&a.sendData();return!0});this.attachEvent("onEnter",function(){a.updateMode=="row"&&a.sendData();return!0});this.attachEvent("onBeforeRowDeleted",function(b){if(!this.rowsAr[b])return!0;if(this.dragContext&&a.dnd)return window.setTimeout(function(){a.setUpdated(b,!0)},1),!0;var c=a.getState(b);this._h2&&this._h2.forEachChild(b,function(b){a.setUpdated(b.id,!1);a.markRow(b.id,!0,"deleted")},this);if(c=="inserted")return a.set_invalid(b,!1),a.setUpdated(b,!1),!0;if(c==
+"deleted")return!1;if(c=="true_deleted")return a.setUpdated(b,!1),!0;a.setUpdated(b,!0,"deleted");return!1});this.attachEvent("onRowAdded",function(b){if(this.dragContext&&a.dnd)return!0;a.setUpdated(b,!0,"inserted");return!0});a._getRowData=function(a){var c=[];c.gr_id=a;this.obj.isTreeGrid()&&(c.gr_pid=this.obj.getParentId(a));for(var d=this.obj.getRowById(a),e=0;e<this.obj._cCount;e++){var f=this.obj._c_order?this.obj._c_order[e]:e,g=this.obj.cells(d.idd,e);if(!this._changed||g.wasChanged())this._endnm?
+c[this.obj.getColumnId(e)]=g.getValue():c["c"+f]=g.getValue()}var h=this.obj.UserData[a];if(h)for(var i=0;i<h.keys.length;i++)h.keys[i].indexOf("__")!=0&&(c[h.keys[i]]=h.values[i]);if(h=this.obj.UserData.gridglobaluserdata)for(i=0;i<h.keys.length;i++)c[h.keys[i]]=h.values[i];return c};a._clearUpdateFlag=function(a){var c=this.obj.getRowById(a);if(c)for(var d=0;d<this.obj._cCount;d++)this.obj.cells(a,d).cell.wasChanged=!1};a.checkBeforeUpdate=function(a){for(var c=!0,d=[],e=0;e<this.obj._cCount;e++)if(this.mandatoryFields[e]){var f=
+this.mandatoryFields[e].call(this.obj,this.obj.cells(a,e).getValue(),a,e);typeof f=="string"?(this.messages.push(f),c=!1):(c&=f,d[e]=!f)}c||(this.set_invalid(a,"invalid",d),this.setUpdated(a,!1));return c}};
+function dhtmlXGridCellObject(a){this.destructor=function(){return this.base=this.grid=this.cell=this.cell.obj=null};this.cell=a;this.getValue=function(){return this.cell.firstChild&&this.cell.firstChild.tagName=="TEXTAREA"?this.cell.firstChild.value:this.cell.innerHTML._dhx_trim()};this.getMathValue=function(){return this.cell.original?this.cell.original:this.getValue()};this.getFont=function(){arOut=Array(3);if(this.cell.style.fontFamily)arOut[0]=this.cell.style.fontFamily;if(this.cell.style.fontWeight==
+"bold"||this.cell.parentNode.style.fontWeight=="bold")arOut[1]="bold";if(this.cell.style.fontStyle=="italic"||this.cell.parentNode.style.fontWeight=="italic")arOut[1]+="italic";arOut[2]=this.cell.style.fontSize?this.cell.style.fontSize:"";return arOut.join("-")};this.getTextColor=function(){return this.cell.style.color?this.cell.style.color:"#000000"};this.getBgColor=function(){return this.cell.bgColor?this.cell.bgColor:"#FFFFFF"};this.getHorAlign=function(){return this.cell.style.textAlign?this.cell.style.textAlign:
+this.cell.style.textAlign?this.cell.style.textAlign:"left"};this.getWidth=function(){return this.cell.scrollWidth};this.setFont=function(a){fntAr=a.split("-");this.cell.style.fontFamily=fntAr[0];this.cell.style.fontSize=fntAr[fntAr.length-1];if(fntAr.length==3){if(/bold/.test(fntAr[1]))this.cell.style.fontWeight="bold";if(/italic/.test(fntAr[1]))this.cell.style.fontStyle="italic";if(/underline/.test(fntAr[1]))this.cell.style.textDecoration="underline"}};this.setTextColor=function(a){this.cell.style.color=
+a};this.setBgColor=function(a){a==""&&(a=null);this.cell.bgColor=a};this.setHorAlign=function(a){this.cell.style.textAlign=a.length==1?a=="c"?"center":a=="l"?"left":"right":a};this.wasChanged=function(){return this.cell.wasChanged?!0:!1};this.isCheckbox=function(){var a=this.cell.firstChild;return a&&a.tagName=="INPUT"?(type=a.type,type=="radio"||type=="checkbox"?!0:!1):!1};this.isChecked=function(){if(this.isCheckbox())return this.cell.firstChild.checked};this.isDisabled=function(){return this.cell._disabled};
+this.setChecked=function(a){if(this.isCheckbox())a!="true"&&a!=1&&(a=!1),this.cell.firstChild.checked=a};this.setDisabled=function(a){a!="true"&&a!=1&&(a=!1);if(this.isCheckbox())this.cell.firstChild.disabled=a,this.disabledF&&this.disabledF(a);this.cell._disabled=a}}
+dhtmlXGridCellObject.prototype={getAttribute:function(a){return this.cell._attrs[a]},setAttribute:function(a,b){this.cell._attrs[a]=b},getInput:function(){if(this.obj&&(this.obj.tagName=="INPUT"||this.obj.tagName=="TEXTAREA"))return this.obj;var a=(this.obj||this.cell).getElementsByTagName("TEXTAREA");a.length||(a=(this.obj||this.cell).getElementsByTagName("INPUT"));return a[0]}};
+dhtmlXGridCellObject.prototype.setValue=function(a){typeof a!="number"&&(!a||a.toString()._dhx_trim()=="")?(a="&nbsp;",this.cell._clearCell=!0):this.cell._clearCell=!1;this.setCValue(a)};dhtmlXGridCellObject.prototype.getTitle=function(){return _isIE?this.cell.innerText:this.cell.textContent};dhtmlXGridCellObject.prototype.setCValue=function(a){this.cell.innerHTML=a};dhtmlXGridCellObject.prototype.setCTxtValue=function(a){this.cell.innerHTML="";this.cell.appendChild(document.createTextNode(a))};
+dhtmlXGridCellObject.prototype.setLabel=function(a){this.cell.innerHTML=a};dhtmlXGridCellObject.prototype.getMath=function(){return this._val?this.val:this.getValue()};function eXcell(){this.val=this.obj=null;this.changeState=function(){return!1};this.edit=function(){this.val=this.getValue()};this.detach=function(){return!1};this.getPosition=function(a){for(var b=a,c=0,d=0;b.tagName!="BODY";)c+=b.offsetLeft,d+=b.offsetTop,b=b.offsetParent;return[c,d]}}eXcell.prototype=new dhtmlXGridCellObject;
+function eXcell_ed(a){if(a)this.cell=a,this.grid=this.cell.parentNode.grid;this.edit=function(){this.cell.atag=!this.grid.multiLine&&(_isKHTML||_isMacOS||_isFF)?"INPUT":"TEXTAREA";this.val=this.getValue();this.obj=document.createElement(this.cell.atag);this.obj.setAttribute("autocomplete","off");this.obj.style.height=this.cell.offsetHeight-(_isIE?4:4)+"px";this.obj.className="dhx_combo_edit";this.obj.wrap="soft";this.obj.style.textAlign=this.cell.style.textAlign;this.obj.onclick=function(a){(a||event).cancelBubble=
+!0};this.obj.onmousedown=function(a){(a||event).cancelBubble=!0};this.obj.value=this.val;this.cell.innerHTML="";this.cell.appendChild(this.obj);if(_isFF&&!window._KHTMLrv&&(this.obj.style.overflow="visible",this.grid.multiLine&&this.obj.offsetHeight>=18&&this.obj.offsetHeight<40))this.obj.style.height="36px",this.obj.style.overflow="scroll";this.obj.onselectstart=function(a){a||(a=event);return a.cancelBubble=!0};_isIE&&this.obj.focus();this.obj.focus()};this.getValue=function(){return this.cell.firstChild&&
+this.cell.atag&&this.cell.firstChild.tagName==this.cell.atag?this.cell.firstChild.value:this.cell._clearCell?"":this.cell.innerHTML.toString()._dhx_trim()};this.detach=function(){this.setValue(this.obj.value);return this.val!=this.getValue()}}eXcell_ed.prototype=new eXcell;
+function eXcell_edtxt(a){if(a)this.cell=a,this.grid=this.cell.parentNode.grid;this.getValue=function(){return this.cell.firstChild&&this.cell.atag&&this.cell.firstChild.tagName==this.cell.atag?this.cell.firstChild.value:this.cell._clearCell?"":_isIE?this.cell.innerText:this.cell.textContent};this.setValue=function(a){!a||a.toString()._dhx_trim()==""?(a=" ",this.cell._clearCell=!0):this.cell._clearCell=!1;this.setCTxtValue(a)}}eXcell_edtxt.prototype=new eXcell_ed;
+function eXcell_ch(a){if(a)this.cell=a,this.grid=this.cell.parentNode.grid;this.disabledF=function(a){this.cell.innerHTML=a==!0||a==1?this.cell.innerHTML.replace("item_chk0.","item_chk0_dis.").replace("item_chk1.","item_chk1_dis."):this.cell.innerHTML.replace("item_chk0_dis.","item_chk0.").replace("item_chk1_dis.","item_chk1.")};this.changeState=function(a){a===!0&&!this.grid.isActive&&(window.globalActiveDHTMLGridObject!=null&&window.globalActiveDHTMLGridObject!=this.grid&&window.globalActiveDHTMLGridObject.isActive&&
+window.globalActiveDHTMLGridObject.setActive(!1),this.grid.setActive(!0));if(this.grid.isEditable&&!this.cell.parentNode._locked&&!this.isDisabled())this.grid.callEvent("onEditCell",[0,this.cell.parentNode.idd,this.cell._cellIndex])?(this.val=this.getValue(),this.val=="1"?this.setValue("0"):this.setValue("1"),this.cell.wasChanged=!0,this.grid.callEvent("onEditCell",[1,this.cell.parentNode.idd,this.cell._cellIndex]),this.grid.callEvent("onCheckbox",[this.cell.parentNode.idd,this.cell._cellIndex,this.val!=
+"1"]),this.grid.callEvent("onCheck",[this.cell.parentNode.idd,this.cell._cellIndex,this.val!="1"])):this.editor=null};this.getValue=function(){return this.cell.chstate?this.cell.chstate.toString():"0"};this.isCheckbox=function(){return!0};this.isChecked=function(){return this.getValue()=="1"?!0:!1};this.setChecked=function(a){this.setValue(a.toString())};this.detach=function(){return this.val!=this.getValue()};this.edit=null}eXcell_ch.prototype=new eXcell;
+eXcell_ch.prototype.setValue=function(a){this.cell.style.verticalAlign="middle";if(a&&(a=a.toString()._dhx_trim(),a=="false"||a=="0"))a="";a?(a="1",this.cell.chstate="1"):(a="0",this.cell.chstate="0");var b=this;this.setCValue("<img src='"+this.grid.imgURL+"item_chk"+a+".gif' onclick='new eXcell_ch(this.parentNode).changeState(true); (arguments[0]||event).cancelBubble=true; '>",this.cell.chstate)};
+function eXcell_ra(a){this.base=eXcell_ch;this.base(a);this.grid=a.parentNode.grid;this.disabledF=function(a){this.cell.innerHTML=a==!0||a==1?this.cell.innerHTML.replace("radio_chk0.","radio_chk0_dis.").replace("radio_chk1.","radio_chk1_dis."):this.cell.innerHTML.replace("radio_chk0_dis.","radio_chk0.").replace("radio_chk1_dis.","radio_chk1.")};this.changeState=function(a){if(!(a===!1&&this.getValue()==1)&&this.grid.isEditable&&!this.cell.parentNode._locked)this.grid.callEvent("onEditCell",[0,this.cell.parentNode.idd,
+this.cell._cellIndex])!=!1?(this.val=this.getValue(),this.val=="1"?this.setValue("0"):this.setValue("1"),this.cell.wasChanged=!0,this.grid.callEvent("onEditCell",[1,this.cell.parentNode.idd,this.cell._cellIndex]),this.grid.callEvent("onCheckbox",[this.cell.parentNode.idd,this.cell._cellIndex,this.val!="1"]),this.grid.callEvent("onCheck",[this.cell.parentNode.idd,this.cell._cellIndex,this.val!="1"])):this.editor=null};this.edit=null}eXcell_ra.prototype=new eXcell_ch;
+eXcell_ra.prototype.setValue=function(a){this.cell.style.verticalAlign="middle";if(a&&(a=a.toString()._dhx_trim(),a=="false"||a=="0"))a="";if(a){if(!this.grid._RaSeCol)this.grid._RaSeCol=[];if(this.grid._RaSeCol[this.cell._cellIndex]){var b=this.grid.cells4(this.grid._RaSeCol[this.cell._cellIndex]);b.setValue("0");this.grid.rowsAr[b.cell.parentNode.idd]&&this.grid.callEvent("onEditCell",[1,b.cell.parentNode.idd,b.cell._cellIndex])}this.grid._RaSeCol[this.cell._cellIndex]=this.cell;a="1";this.cell.chstate=
+"1"}else a="0",this.cell.chstate="0";this.setCValue("<img src='"+this.grid.imgURL+"radio_chk"+a+".gif' onclick='new eXcell_ra(this.parentNode).changeState(false);'>",this.cell.chstate)};
+function eXcell_txt(a){if(a)this.cell=a,this.grid=this.cell.parentNode.grid;this.edit=function(){this.val=this.getValue();this.obj=document.createElement("TEXTAREA");this.obj.className="dhx_textarea";this.obj.onclick=function(a){(a||event).cancelBubble=!0};var a=this.grid.getPosition(this.cell);this.obj.value=this.val;this.obj.style.display="";this.obj.style.textAlign=this.cell.style.textAlign;if(_isFF){var c=document.createElement("DIV");c.appendChild(this.obj);c.style.overflow="auto";c.className=
+"dhx_textarea";this.obj.style.margin="0px 0px 0px 0px";this.obj.style.border="0px";this.obj=c}document.body.appendChild(this.obj);if(_isOpera)this.obj.onkeypress=function(a){if(a.keyCode==9)return!1};this.obj.onkeydown=function(a){var b=a||event;if(b.keyCode==9)return globalActiveDHTMLGridObject.entBox.focus(),globalActiveDHTMLGridObject.doKey({keyCode:b.keyCode,shiftKey:b.shiftKey,srcElement:"0"}),!1};this.obj.style.left=a[0]+"px";this.obj.style.top=a[1]+this.cell.offsetHeight+"px";var d=this.cell.offsetWidth<
+200?200:this.cell.offsetWidth;this.obj.style.width=d+(_isFF?18:16)+"px";if(_isFF)this.obj.firstChild.style.width=parseInt(this.obj.style.width)+"px",this.obj.firstChild.style.height=this.obj.offsetHeight-3+"px";if(_isIE)this.obj.select(),this.obj.value=this.obj.value;_isFF?this.obj.firstChild.focus():this.obj.focus()};this.detach=function(){var a="",a=_isFF?this.obj.firstChild.value:this.obj.value;this.cell._clearCell=a==""?!0:!1;this.setValue(a);document.body.removeChild(this.obj);this.obj=null;
+return this.val!=this.getValue()};this.getValue=function(){return this.obj?_isFF?this.obj.firstChild.value:this.obj.value:this.cell._clearCell?"":this.grid.multiLine?this.cell.innerHTML.replace(/<br[^>]*>/gi,"\n")._dhx_trim():this.cell._brval||this.cell.innerHTML}}eXcell_txt.prototype=new eXcell;
+function eXcell_txttxt(a){if(a)this.cell=a,this.grid=this.cell.parentNode.grid;this.getValue=function(){return this.cell.firstChild&&this.cell.firstChild.tagName=="TEXTAREA"?this.cell.firstChild.value:this.cell._clearCell?"":!this.grid.multiLine&&this.cell._brval?this.cell._brval:_isIE?this.cell.innerText:this.cell.textContent};this.setValue=function(a){this.cell._brval=a;!a||a.toString()._dhx_trim()==""?(a=" ",this.cell._clearCell=!0):this.cell._clearCell=!1;this.setCTxtValue(a)}}
+eXcell_txttxt.prototype=new eXcell_txt;eXcell_txt.prototype.setValue=function(a){!a||a.toString()._dhx_trim()==""?(a="&nbsp;",this.cell._clearCell=!0):this.cell._clearCell=!1;this.cell._brval=a;this.grid.multiLine?this.setCValue(a.replace(/\n/g,"<br/>"),a):this.setCValue(a,a)};
+function eXcell_co(a){if(a)this.cell=a,this.grid=this.cell.parentNode.grid,this.combo=this.cell._combo||this.grid.getCombo(this.cell._cellIndex),this.editable=!0;this.shiftNext=function(){var a=this.list.options[this.list.selectedIndex+1];if(a)a.selected=!0;this.obj.value=this.list.options[this.list.selectedIndex].text;return!0};this.shiftPrev=function(){if(this.list.selectedIndex!=0){var a=this.list.options[this.list.selectedIndex-1];if(a)a.selected=!0;this.obj.value=this.list.options[this.list.selectedIndex].text}return!0};
+this.edit=function(){this.val=this.getValue();this.text=this.getText()._dhx_trim();var a=this.grid.getPosition(this.cell);this.obj=document.createElement("TEXTAREA");this.obj.className="dhx_combo_edit";this.obj.style.height=this.cell.offsetHeight-4+"px";this.obj.wrap="soft";this.obj.style.textAlign=this.cell.style.textAlign;this.obj.onclick=function(a){(a||event).cancelBubble=!0};this.obj.value=this.text;this.obj.onselectstart=function(a){a||(a=event);return a.cancelBubble=!0};var c=this;this.obj.onkeyup=
+function(a){var b=(a||event).keyCode;if(!(b==38||b==40||b==9))for(var d=this.readonly?String.fromCharCode(b):this.value,e=c.list.options,g=0;g<e.length;g++)if(e[g].text.indexOf(d)==0)return e[g].selected=!0};this.list=document.createElement("SELECT");this.list.className="dhx_combo_select";this.list.style.width=this.cell.offsetWidth+"px";this.list.style.left=a[0]+"px";this.list.style.top=a[1]+this.cell.offsetHeight+"px";this.list.onclick=function(a){var b=a||window.event,d=b.target||b.srcElement;if(d.tagName==
+"OPTION")d=d.parentNode;c.editable=!1;c.grid.editStop();b.cancelBubble=!0};for(var d=this.combo.getKeys(),e=!1,f=0,g=0;g<d.length;g++){var h=this.combo.get(d[g]);this.list.options[this.list.options.length]=new Option(h,d[g]);d[g]==this.val&&(f=this.list.options.length-1,e=!0)}e==!1&&(this.list.options[this.list.options.length]=new Option(this.text,this.val===null?"":this.val),f=this.list.options.length-1);document.body.appendChild(this.list);this.list.size="6";this.cstate=1;this.editable?this.cell.innerHTML=
+"":(this.obj.style.width="1px",this.obj.style.height="1px");this.cell.appendChild(this.obj);this.list.options[f].selected=!0;if(!_isFF||this.editable)this.obj.focus(),this.obj.focus();if(!this.editable)this.obj.style.visibility="hidden",this.list.focus(),this.list.onkeydown=function(a){a=a||window.event;c.grid.setActive(!0);if(a.keyCode<30)return c.grid.doKey({target:c.cell,keyCode:a.keyCode,shiftKey:a.shiftKey,ctrlKey:a.ctrlKey})}};this.getValue=function(){return this.cell.combo_value==window.undefined?
+"":this.cell.combo_value};this.detach=function(){if(this.val!=this.getValue())this.cell.wasChanged=!0;if(this.list.parentNode!=null)if(this.editable){var a=this.list.options[this.list.selectedIndex];if(a&&a.text==this.obj.value)this.setValue(this.list.value);else{var c=this.cell._combo||this.grid.getCombo(this.cell._cellIndex),d=c.values._dhx_find(this.obj.value);d!=-1?this.setValue(c.keys[d]):this.setCValue(this.cell.combo_value=this.obj.value)}}else this.setValue(this.list.value);this.list.parentNode&&
+this.list.parentNode.removeChild(this.list);this.obj.parentNode&&this.obj.parentNode.removeChild(this.obj);return this.val!=this.getValue()}}eXcell_co.prototype=new eXcell;eXcell_co.prototype.getText=function(){return this.cell.innerHTML};
+eXcell_co.prototype.setValue=function(a){if(typeof a=="object"){var b=this.grid.xmlLoader.doXPath("./option",a);if(b.length)this.cell._combo=new dhtmlXGridComboObject;for(var c=0;c<b.length;c++)this.cell._combo.put(b[c].getAttribute("value"),b[c].firstChild?b[c].firstChild.data:"");a=a.firstChild.data}if((a||"").toString()._dhx_trim()=="")a=null;this.cell.combo_value=a;if(a!==null){var d=(this.cell._combo||this.grid.getCombo(this.cell._cellIndex)).get(a);this.setCValue(d===null?a:d,a)}else this.setCValue("&nbsp;",
+a)};function eXcell_coro(a){this.base=eXcell_co;this.base(a);this.editable=!1}eXcell_coro.prototype=new eXcell_co;function eXcell_cotxt(a){this.base=eXcell_co;this.base(a)}eXcell_cotxt.prototype=new eXcell_co;eXcell_cotxt.prototype.getText=function(){return _isIE?this.cell.innerText:this.cell.textContent};
+eXcell_cotxt.prototype.setValue=function(a){if(typeof a=="object"){var b=this.grid.xmlLoader.doXPath("./option",a);if(b.length)this.cell._combo=new dhtmlXGridComboObject;for(var c=0;c<b.length;c++)this.cell._combo.put(b[c].getAttribute("value"),b[c].firstChild?b[c].firstChild.data:"");a=a.firstChild.data}if((a||"").toString()._dhx_trim()=="")a=null;a!==null?this.setCTxtValue((this.cell._combo||this.grid.getCombo(this.cell._cellIndex)).get(a)||a,a):this.setCTxtValue(" ",a);this.cell.combo_value=a};
+function eXcell_corotxt(a){this.base=eXcell_co;this.base(a);this.editable=!1}eXcell_corotxt.prototype=new eXcell_cotxt;
+function eXcell_cp(a){try{this.cell=a,this.grid=this.cell.parentNode.grid}catch(b){}this.edit=function(){this.val=this.getValue();this.obj=document.createElement("SPAN");this.obj.style.border="1px solid black";this.obj.style.position="absolute";var a=this.grid.getPosition(this.cell);this.colorPanel(4,this.obj);document.body.appendChild(this.obj);this.obj.style.left=a[0]+"px";this.obj.style.zIndex=1;this.obj.style.top=a[1]+this.cell.offsetHeight+"px"};this.toolDNum=function(a){a.length==1&&(a="0"+
+a);return a};this.colorPanel=function(a,b){var e=document.createElement("TABLE");b.appendChild(e);e.cellSpacing=0;e.editor_obj=this;e.style.cursor="default";e.onclick=function(a){var b=a||window.event,c=b.target||b.srcElement,d=c.parentNode.parentNode.parentNode.editor_obj;d.setValue(c._bg);d.grid.editStop()};for(var f=256/a,g=0;g<=256/f;g++)for(var h=e.insertRow(g),i=0;i<=256/f;i++)for(var j=0;j<=256/f;j++){R=new Number(f*g)-(g==0?0:1);G=new Number(f*i)-(i==0?0:1);B=new Number(f*j)-(j==0?0:1);var k=
+this.toolDNum(R.toString(16))+""+this.toolDNum(G.toString(16))+""+this.toolDNum(B.toString(16)),m=h.insertCell(i);m.width="10px";m.innerHTML="&nbsp;";m.title=k.toUpperCase();m.style.backgroundColor="#"+k;m._bg="#"+k;if(this.val!=null&&"#"+k.toUpperCase()==this.val.toUpperCase())m.style.border="2px solid white"}};this.getValue=function(){return this.cell.firstChild._bg||""};this.getRed=function(){return Number(parseInt(this.getValue().substr(1,2),16))};this.getGreen=function(){return Number(parseInt(this.getValue().substr(3,
+2),16))};this.getBlue=function(){return Number(parseInt(this.getValue().substr(5,2),16))};this.detach=function(){this.obj.offsetParent!=null&&document.body.removeChild(this.obj);return this.val!=this.getValue()}}eXcell_cp.prototype=new eXcell;eXcell_cp.prototype.setValue=function(a){this.setCValue("<div style='width:100%;height:"+(this.grid.multiLine?this.cell.offsetHeight-2:16)+";background-color:"+(a||"")+";border:0px;'>&nbsp;</div>",a);this.cell.firstChild._bg=a};
+function eXcell_img(a){try{this.cell=a,this.grid=this.cell.parentNode.grid}catch(b){}this.getValue=function(){if(this.cell.firstChild.tagName=="IMG")return this.cell.firstChild.src+(this.cell.titFl!=null?"^"+this.cell._brval:"");else if(this.cell.firstChild.tagName=="A"){var a=this.cell.firstChild.firstChild.src+(this.cell.titFl!=null?"^"+this.cell._brval:"");a+="^"+this.cell.lnk;this.cell.trg&&(a+="^"+this.cell.trg);return a}};this.isDisabled=function(){return!0}}eXcell_img.prototype=new eXcell;
+eXcell_img.prototype.getTitle=function(){return this.cell._brval};eXcell_img.prototype.setValue=function(a){var b=a;if(a.indexOf("^")!=-1){var c=a.split("^"),a=c[0],b=this.cell._attrs.title||c[1];if(c.length>2&&(this.cell.lnk=c[2],c[3]))this.cell.trg=c[3];this.cell.titFl="1"}this.setCValue("<img src='"+this.grid.iconURL+(a||"")._dhx_trim()+"' border='0'>",a);if(this.cell.lnk)this.cell.innerHTML="<a href='"+this.cell.lnk+"' target='"+this.cell.trg+"'>"+this.cell.innerHTML+"</a>";this.cell._brval=b};
+function eXcell_price(a){this.base=eXcell_ed;this.base(a);this.getValue=function(){return this.cell.childNodes.length>1?this.cell.childNodes[1].innerHTML.toString()._dhx_trim():"0"}}eXcell_price.prototype=new eXcell_ed;eXcell_price.prototype.setValue=function(a){isNaN(parseFloat(a))&&(a=this.val||0);var b="green";a<0&&(b="red");this.setCValue("<span>$</span><span style='padding-right:2px;color:"+b+";'>"+a+"</span>",a)};
+function eXcell_dyn(a){this.base=eXcell_ed;this.base(a);this.getValue=function(){return this.cell.firstChild.childNodes[1].innerHTML.toString()._dhx_trim()}}eXcell_dyn.prototype=new eXcell_ed;
+eXcell_dyn.prototype.setValue=function(a){if(!a||isNaN(Number(a)))a!==""&&(a=0);if(a>0)var b="green",c="dyn_up.gif";else a==0?(b="black",c="dyn_.gif"):(b="red",c="dyn_down.gif");this.setCValue("<div style='position:relative;padding-right:2px; width:100%;overflow:hidden; white-space:nowrap;'><img src='"+this.grid.imgURL+""+c+"' height='15' style='position:absolute;top:0px;left:0px;'><span style=' padding-left:20px; width:100%;color:"+b+";'>"+a+"</span></div>",a)};
+function eXcell_ro(a){if(a)this.cell=a,this.grid=this.cell.parentNode.grid;this.edit=function(){};this.isDisabled=function(){return!0};this.getValue=function(){return this.cell._clearCell?"":this.cell.innerHTML.toString()._dhx_trim()}}eXcell_ro.prototype=new eXcell;
+function eXcell_ron(a){this.cell=a;this.grid=this.cell.parentNode.grid;this.edit=function(){};this.isDisabled=function(){return!0};this.getValue=function(){return this.cell._clearCell?"":this.grid._aplNFb(this.cell.innerHTML.toString()._dhx_trim(),this.cell._cellIndex)}}eXcell_ron.prototype=new eXcell;
+eXcell_ron.prototype.setValue=function(a){if(a!==0&&(!a||a.toString()._dhx_trim()==""))return this.setCValue("&nbsp;"),this.cell._clearCell=!0;this.cell._clearCell=!1;this.setCValue(a?this.grid._aplNF(a,this.cell._cellIndex):"0")};
+function eXcell_rotxt(a){this.cell=a;this.grid=this.cell.parentNode.grid;this.edit=function(){};this.isDisabled=function(){return!0};this.setValue=function(a){a?this.cell._clearCell=!1:(a=" ",this.cell._clearCell=!0);this.setCTxtValue(a)};this.getValue=function(){return this.cell._clearCell?"":_isIE?this.cell.innerText:this.cell.textContent}}eXcell_rotxt.prototype=new eXcell;
+function dhtmlXGridComboObject(){this.keys=new dhtmlxArray;this.values=new dhtmlxArray;this.put=function(a,b){for(var c=0;c<this.keys.length;c++)if(this.keys[c]==a)return this.values[c]=b,!0;this.values[this.values.length]=b;this.keys[this.keys.length]=a};this.get=function(a){for(var b=0;b<this.keys.length;b++)if(this.keys[b]==a)return this.values[b];return null};this.clear=function(){this.keys=new dhtmlxArray;this.values=new dhtmlxArray};this.remove=function(a){for(var b=0;b<this.keys.length;b++)if(this.keys[b]==
+a)return this.keys._dhx_removeAt(b),this.values._dhx_removeAt(b),!0};this.size=function(){for(var a=0,b=0;b<this.keys.length;b++)this.keys[b]!=null&&a++;return a};this.getKeys=function(){for(var a=[],b=0;b<this.keys.length;b++)this.keys[b]!=null&&(a[a.length]=this.keys[b]);return a};this.save=function(){this._save=[];for(var a=0;a<this.keys.length;a++)this._save[a]=[this.keys[a],this.values[a]]};this.restore=function(){if(this._save){this.keys[a]=[];this.values[a]=[];for(var a=0;a<this._save.length;a++)this.keys[a]=
+this._save[a][0],this.values[a]=this._save[a][1]}};return this}function Hashtable(){this.keys=new dhtmlxArray;this.values=new dhtmlxArray;return this}Hashtable.prototype=new dhtmlXGridComboObject;
+dhtmlXGridObject.prototype.filterBy=function(a,b,c){if(this.isTreeGrid())return this.filterTreeBy(a,b,c);if(this._f_rowsBuffer){if(!c&&(this.rowsBuffer=dhtmlxArray([].concat(this._f_rowsBuffer)),this._fake))this._fake.rowsBuffer=this.rowsBuffer}else this._f_rowsBuffer=[].concat(this.rowsBuffer);if(this.rowsBuffer.length){var d=!0;this.dma(!0);if(typeof a=="object")for(var e=0;e<b.length;e++)this._filterA(a[e],b[e]);else this._filterA(a,b);this.dma(!1);this.pagingOn&&this.rowsBuffer.length/this.rowsBufferOutSize<
+this.currentPage-1&&this.changePage(0);this._reset_view();this.callEvent("onGridReconstructed",[])}};dhtmlXGridObject.prototype._filterA=function(a,b){if(b!=""){var c=!0;typeof b=="function"?c=!1:b=(b||"").toString().toLowerCase();if(this.rowsBuffer.length)for(var d=this.rowsBuffer.length-1;d>=0;d--)(c?this._get_cell_value(this.rowsBuffer[d],a).toString().toLowerCase().indexOf(b)==-1:!b.call(this,this._get_cell_value(this.rowsBuffer[d],a),this.rowsBuffer[d].idd))&&this.rowsBuffer.splice(d,1)}};
+dhtmlXGridObject.prototype.getFilterElement=function(a){if(this.filters){for(var b=0;b<this.filters.length;b++)if(this.filters[b][1]==a)return this.filters[b][0].combo||this.filters[b][0];return null}};
+dhtmlXGridObject.prototype.collectValues=function(a){var b=this.callEvent("onCollectValues",[a]);if(b!==!0)return b;if(this.isTreeGrid())return this.collectTreeValues(a);this.dma(!0);this._build_m_order();for(var a=this._m_order?this._m_order[a]:a,c={},d=[],e=this._f_rowsBuffer||this.rowsBuffer,f=0;f<e.length;f++){var g=this._get_cell_value(e[f],a);if(g&&(!e[f]._childIndexes||e[f]._childIndexes[a]!=e[f]._childIndexes[a-1]))c[g]=!0}this.dma(!1);var h=this.combos[a],i;for(i in c)c[i]===!0&&d.push(h?
+h.get(i)||i:i);return d.sort()};dhtmlXGridObject.prototype._build_m_order=function(){if(this._c_order){this._m_order=[];for(var a=0;a<this._c_order.length;a++)this._m_order[this._c_order[a]]=a}};
+dhtmlXGridObject.prototype.filterByAll=function(){var a=[],b=[];this._build_m_order();for(var c=0;c<this.filters.length;c++)if(!(d>=this._cCount)){var d=this._m_order?this._m_order[this.filters[c][1]]:this.filters[c][1];b.push(d);var e=this.filters[c][0]._filter?this.filters[c][0]._filter():this.filters[c][0].value,f;if(typeof e!="function"&&(f=this.combos[d]))d=f.values._dhx_find(e),e=d==-1?e:f.keys[d];a.push(e)}this.callEvent("onFilterStart",[b,a])&&(this.filterBy(b,a),this._cssEven&&this._fixAlterCss(),
+this.callEvent("onFilterEnd",[this.filters]))};
+dhtmlXGridObject.prototype.makeFilter=function(a,b){if(!this.filters)this.filters=[];typeof a!="object"&&(a=document.getElementById(a));if(a){var c=this;if(!a.style.width)a.style.width="90%";if(a.tagName=="SELECT"){this.filters.push([a,b]);this._loadSelectOptins(a,b);a.onchange=function(){c.filterByAll()};if(_isIE)a.style.marginTop="1px";this.attachEvent("onEditCell",function(c,d,g){this._build_m_order();c==2&&this.filters&&(this._m_order?g==this._m_order[b]:g==b)&&this._loadSelectOptins(a,b);return!0})}else if(a.tagName==
+"INPUT")this.filters.push([a,b]),a.value="",a.onkeydown=function(){this._timer&&window.clearTimeout(this._timer);this._timer=window.setTimeout(function(){if(a.value!=a.old_value)c.filterByAll(),a.old_value=a.value},500)};else if(a.tagName=="DIV"&&a.className=="combo"){this.filters.push([a,b]);a.style.padding="0px";a.style.margin="0px";if(!window.dhx_globalImgPath)window.dhx_globalImgPath=this.imgURL;var d=new dhtmlXCombo(a,"_filter","90%");d.filterSelfA=d.filterSelf;d.filterSelf=function(){this.getSelectedIndex()==
+0&&this.setComboText("");this.filterSelfA.apply(this,arguments);this.optionsArr[0].hide(!1)};d.enableFilteringMode(!0);a.combo=d;a.value="";this._loadComboOptins(a,b);d.attachEvent("onChange",function(){a.value=d.getSelectedValue();if(a.value===null)a.value="";c.filterByAll()})}a.parentNode&&(a.parentNode.className+=" filter");this._filters_ready()}};
+dhtmlXGridObject.prototype.findCell=function(a,b,c){var d=[],a=a.toString().toLowerCase();typeof c!="number"&&(c=c?1:0);if(!this.rowsBuffer.length)return d;for(var e=b||0;e<this._cCount;e++){if(this._h2)this._h2.forEachChild(0,function(b){if(c&&d.length==c)return d;this._get_cell_value(b.buff,e).toString().toLowerCase().indexOf(a)!=-1&&d.push([b.id,e])},this);else for(var f=0;f<this.rowsBuffer.length;f++)if(this._get_cell_value(this.rowsBuffer[f],e).toString().toLowerCase().indexOf(a)!=-1&&(d.push([this.rowsBuffer[f].idd,
+e]),c&&d.length==c))return d;if(typeof b!="undefined")break}return d};dhtmlXGridObject.prototype.makeSearch=function(a,b){typeof a!="object"&&(a=document.getElementById(a));if(a){var c=this;if(a.tagName=="INPUT")a.onkeypress=function(){this._timer&&window.clearTimeout(this._timer);this._timer=window.setTimeout(function(){if(a.value!=""){var d=c.findCell(a.value,b,!0);d.length&&(c._h2&&c.openItem(d[0][0]),c.selectCell(c.getRowIndex(d[0][0]),b||0))}},500)};a.parentNode&&(a.parentNode.className+=" filter")}};
+dhtmlXGridObject.prototype._loadSelectOptins=function(a,b){var c=this.collectValues(b),d=a.value;a.innerHTML="";a.options[0]=new Option("","");for(var e=this._filter_tr?this._filter_tr[b]:null,f=0;f<c.length;f++)a.options[a.options.length]=new Option(e?e(c[f]):c[f],c[f]);a.value=d};dhtmlXGridObject.prototype.setSelectFilterLabel=function(a,b){if(!this._filter_tr)this._filter_tr=[];this._filter_tr[a]=b};
+dhtmlXGridObject.prototype._loadComboOptins=function(a,b){var c=this.collectValues(b);a.combo.clearAll();a.combo.render(!1);for(var d=[["","&nbsp;"]],e=0;e<c.length;e++)d.push([c[e],c[e]]);a.combo.addOption(d);a.combo.render(!0)};
+dhtmlXGridObject.prototype.refreshFilters=function(){if(this.filters)for(var a=0;a<this.filters.length;a++)switch(this.filters[a][0].tagName.toLowerCase()){case "select":this._loadSelectOptins.apply(this,this.filters[a]);break;case "div":this._loadComboOptins.apply(this,this.filters[a])}};
+dhtmlXGridObject.prototype._filters_ready=function(){this.attachEvent("onXLE",this.refreshFilters);this.attachEvent("onRowCreated",function(a,b){if(this._f_rowsBuffer)for(var c=0;c<this._f_rowsBuffer.length;c++)if(this._f_rowsBuffer[c].idd==a)return this._f_rowsBuffer[c]=b});this.attachEvent("onClearAll",function(){this._f_rowsBuffer=null;if(!this.hdr.rows.length)this.filters=[]});window.dhtmlXCombo&&this.attachEvent("onScroll",dhtmlXCombo.prototype.closeAll);this._filters_ready=function(){}};
+dhtmlXGridObject.prototype._in_header_text_filter=function(a,b){a.innerHTML="<input type='text' style='width:90%; font-size:8pt; font-family:Tahoma; -moz-user-select:text; '>";a.onclick=a.onmousedown=function(a){return(a||event).cancelBubble=!0};a.onselectstart=function(){return event.cancelBubble=!0};this.makeFilter(a.firstChild,b)};
+dhtmlXGridObject.prototype._in_header_text_filter_inc=function(a,b){a.innerHTML="<input type='text' style='width:90%; font-size:8pt; font-family:Tahoma; -moz-user-select:text; '>";a.onclick=a.onmousedown=function(a){return(a||event).cancelBubble=!0};a.onselectstart=function(){return event.cancelBubble=!0};this.makeFilter(a.firstChild,b);a.firstChild._filter=function(){return a.firstChild.value==""?"":function(b){return b.toString().toLowerCase().indexOf(a.firstChild.value.toLowerCase())==0}};this._filters_ready()};
+dhtmlXGridObject.prototype._in_header_select_filter=function(a,b){a.innerHTML="<select style='width:90%; font-size:8pt; font-family:Tahoma;'></select>";a.onclick=function(a){(a||event).cancelBubble=!0;return!1};this.makeFilter(a.firstChild,b)};
+dhtmlXGridObject.prototype._in_header_select_filter_strict=function(a,b){a.innerHTML="<select style='width:90%; font-size:8pt; font-family:Tahoma;'></select>";a.onclick=function(a){(a||event).cancelBubble=!0;return!1};this.makeFilter(a.firstChild,b);a.firstChild._filter=function(){return!a.firstChild.value?"":function(b){return a.firstChild.value.toLowerCase()==""?!0:b.toString().toLowerCase()==a.firstChild.value.toLowerCase()}};this._filters_ready()};
+dhtmlXGridObject.prototype._in_header_combo_filter=function(a,b){a.innerHTML="<div style='width:100%; padding-left:2px; overflow:hidden; font-size:8pt; font-family:Tahoma; -moz-user-select:text;' class='combo'></div>";a.onselectstart=function(){return event.cancelBubble=!0};a.onclick=a.onmousedown=function(a){return(a||event).cancelBubble=!0};this.makeFilter(a.firstChild,b)};
+dhtmlXGridObject.prototype._in_header_text_search=function(a,b){a.innerHTML="<input type='text' style='width:90%; font-size:8pt; font-family:Tahoma; -moz-user-select:text;'>";a.onclick=a.onmousedown=function(a){return(a||event).cancelBubble=!0};a.onselectstart=function(){return event.cancelBubble=!0};this.makeSearch(a.firstChild,b)};
+dhtmlXGridObject.prototype._in_header_numeric_filter=function(a,b){this._in_header_text_filter.call(this,a,b);a.firstChild._filter=function(){var a=this.value,b,e="==",f=parseFloat(a.replace("=","")),g=null;if(a){if(a.indexOf("..")!=-1)return a=a.split(".."),f=parseFloat(a[0]),g=parseFloat(a[1]),function(a){return a>=f&&a<=g?!0:!1};if(b=a.match(/>=|<=|>|</))e=b[0],f=parseFloat(a.replace(e,""));return Function("v"," if (v "+e+" "+f+" ) return true; return false;")}return""}};
+dhtmlXGridObject.prototype._in_header_master_checkbox=function(a,b,c){a.innerHTML=c[0]+"<input type='checkbox' />"+c[1];var d=this;a.getElementsByTagName("input")[0].onclick=function(a){d._build_m_order();var c=d._m_order?d._m_order[b]:b,g=this.checked?1:0;d.forEachRowA(function(a){var b=this.cells(a,c);if(b.isCheckbox())b.setValue(g),b.cell.wasChanged=!0;this.callEvent("onEditCell",[1,a,c,g])});(a||event).cancelBubble=!0}};
+dhtmlXGridObject.prototype._in_header_stat_total=function(a,b,c){var d=function(){var a=0;this._build_m_order();for(var c=this._m_order?this._m_order[b]:b,d=0;d<this.rowsBuffer.length;d++){var h=parseFloat(this._get_cell_value(this.rowsBuffer[d],c));a+=isNaN(h)?0:h}return this._maskArr[c]?this._aplNF(a,c):Math.round(a*100)/100};this._stat_in_header(a,d,b,c,c)};
+dhtmlXGridObject.prototype._in_header_stat_multi_total=function(a,b,c){var d=c[1].split(":");c[1]="";for(var e=0;e<d.length;e++)d[e]=parseInt(d[e]);for(var f=function(){for(var a=0,c=0;c<this.rowsBuffer.length;c++){for(var e=1,g=0;g<d.length;g++)e*=parseFloat(this._get_cell_value(this.rowsBuffer[c],d[g]));a+=isNaN(e)?0:e}return this._maskArr[b]?this._aplNF(a,b):Math.round(a*100)/100},g=[],b=0;b<d.length;b++)g[d[b]]=!0;this._stat_in_header(a,f,g,c,c)};
+dhtmlXGridObject.prototype._in_header_stat_max=function(a,b,c){var d=function(){var a=-999999999;if(this.getRowsNum()==0)return"&nbsp;";for(var c=0;c<this.rowsBuffer.length;c++)a=Math.max(a,parseFloat(this._get_cell_value(this.rowsBuffer[c],b)));return this._maskArr[b]?this._aplNF(a,b):a};this._stat_in_header(a,d,b,c)};
+dhtmlXGridObject.prototype._in_header_stat_min=function(a,b,c){var d=function(){var a=999999999;if(this.getRowsNum()==0)return"&nbsp;";for(var c=0;c<this.rowsBuffer.length;c++)a=Math.min(a,parseFloat(this._get_cell_value(this.rowsBuffer[c],b)));return this._maskArr[b]?this._aplNF(a,b):a};this._stat_in_header(a,d,b,c)};
+dhtmlXGridObject.prototype._in_header_stat_average=function(a,b,c){var d=function(){var a=0,c=0;if(this.getRowsNum()==0)return"&nbsp;";for(var d=0;d<this.rowsBuffer.length;d++){var h=parseFloat(this._get_cell_value(this.rowsBuffer[d],b));a+=isNaN(h)?0:h;c++}return this._maskArr[b]?this._aplNF(a/c,b):Math.round(a/c*100)/100};this._stat_in_header(a,d,b,c)};dhtmlXGridObject.prototype._in_header_stat_count=function(a,b,c){var d=function(){return this.getRowsNum()};this._stat_in_header(a,d,b,c)};
+dhtmlXGridObject.prototype._stat_in_header=function(a,b,c,d){var e=this,f=function(){this.dma(!0);a.innerHTML=(d[0]?d[0]:"")+b.call(this)+(d[1]?d[1]:"");this.dma(!1);this.callEvent("onStatReady",[])};if(!this._stat_events)this._stat_events=[],this.attachEvent("onClearAll",function(){if(!this.hdr.rows[1]){for(var a=0;a<this._stat_events.length;a++)for(var b=0;b<4;b++)this.detachEvent(this._stat_events[a][b]);this._stat_events=[]}});this._stat_events.push([this.attachEvent("onGridReconstructed",f),
+this.attachEvent("onXLE",f),this.attachEvent("onFilterEnd",f),this.attachEvent("onEditCell",function(a,b,d){a==2&&(d==c||c&&c[d])&&f.call(this);return!0})]);a.innerHTML=""};dhtmlXGridObject.prototype.enableDragAndDrop=function(a){a=="temporary_disabled"?(this.dADTempOff=!1,a=!0):this.dADTempOff=!0;this.dragAndDropOff=convertStringToBoolean(a);this._drag_validate=!0;if(a)this.objBox.ondragstart=function(a){(a||event).cancelBubble=!0;return!1}};
+dhtmlXGridObject.prototype.setDragBehavior=function(a){this.dadmodec=this.dadmodefix=0;switch(a){case "child":this.dadmode=0;this._sbmod=!1;break;case "sibling":this.dadmode=1;this._sbmod=!1;break;case "sibling-next":this.dadmode=1;this._sbmod=!0;break;case "complex":this.dadmode=2;this._sbmod=!1;break;case "complex-next":this.dadmode=2,this._sbmod=!0}};dhtmlXGridObject.prototype.enableDragOrder=function(a){this._dndorder=convertStringToBoolean(a)};
+dhtmlXGridObject.prototype._checkParent=function(a,b){var c=this._h2.get[a.idd].parent;if(c.parent){for(var d=0;d<b.length;d++)if(b[d]==c.id)return!0;return this._checkParent(this.rowsAr[c.id],b)}};
+dhtmlXGridObject.prototype._createDragNode=function(a,b){this.editStop();if(window.dhtmlDragAndDrop.dragNode)return null;if(!this.dADTempOff)return null;a.parentObject={};a.parentObject.treeNod=this;var c=this.callEvent("onBeforeDrag",[a.parentNode.idd,a._cellIndex]);if(!c)return null;var d=[];d[this.selMultiRows?d.length:0]=a.parentNode.idd;if(this.isTreeGrid())for(var e=d.length-1;e>=0;e--)this._checkParent(this.rowsAr[d[e]],d)&&d.splice(e,1);var f=this;d.length&&this._dndorder&&d.sort(function(a,
+b){return f.rowsAr[a].rowIndex>f.rowsAr[b].rowIndex?1:-1});var g=this.getFirstParentOfType(_isIE?b.srcElement:b.target,"TD");if(g)this._dndExtra=g._cellIndex;this._dragged=[];for(e=0;e<d.length;e++)if(this.rowsAr[d[e]])this._dragged[this._dragged.length]=this.rowsAr[d[e]],this.rowsAr[d[e]].treeNod=this;a.parentObject.parentNode=a.parentNode;var h=document.createElement("div");h.innerHTML=c!==!0?c:this.rowToDragElement(a.parentNode.idd);h.style.position="absolute";h.className="dragSpanDiv";return h};
+dhtmlXGridObject.prototype._createSdrgc=function(){this._sdrgc=document.createElement("DIV");this._sdrgc.innerHTML="&nbsp;";this._sdrgc.className="gridDragLine";this.objBox.appendChild(this._sdrgc)};function dragContext(a,b,c,d,e,f,g,h,i,j){this.source=a||"grid";this.target=b||"grid";this.mode=c||"move";this.dropmode=d||"child";this.sid=e||0;this.tid=f;this.sobj=g||null;this.tobj=h||null;this.sExtra=i||null;this.tExtra=j||null;return this}
+dragContext.prototype.valid=function(){if(this.sobj!=this.tobj)return!0;if(this.sid==this.tid)return!1;if(this.target=="treeGrid")for(var a=this.tid;a=this.tobj.getParentId(a);)if(this.sid==a)return!1;return!0};dragContext.prototype.close=function(){this.tobj=this.sobj=null};dragContext.prototype.copy=function(){return new dragContext(this.source,this.target,this.mode,this.dropmode,this.sid,this.tid,this.sobj,this.tobj,this.sExtra,this.tExtra)};dragContext.prototype.set=function(a,b){this[a]=b;return this};
+dragContext.prototype.uid=function(){for(this.nid=this.sid;this.tobj.rowsAr[this.nid];)this.nid+=(new Date).valueOf();return this};dragContext.prototype.data=function(){return this.sobj==this.tobj?this.sobj._getRowArray(this.sobj.rowsAr[this.sid]):this.source=="tree"?this.tobj.treeToGridElement(this.sobj,this.sid,this.tid):this.tobj.gridToGrid(this.sid,this.sobj,this.tobj)};
+dragContext.prototype.childs=function(){return this.source=="treeGrid"?this.sobj._h2.get[this.sid]._xml_await?this.sobj._h2.get[this.sid].has_kids:null:null};
+dragContext.prototype.pid=function(){if(!this.tid)return 0;if(!this.tobj._h2)return 0;if(this.target=="treeGrid")if(this.dropmode=="child")return this.tid;else{var a=this.tobj.rowsAr[this.tid],b=this.tobj._h2.get[a.idd].parent.id;if(this.alfa&&this.tobj._sbmod&&a.nextSibling){var c=this.tobj._h2.get[a.nextSibling.idd].parent.id;if(c==this.tid)return this.tid;if(c!=b)return c}return b}};
+dragContext.prototype.ind=function(){if(this.tid==window.unknown)return 0;this.target=="treeGrid"&&(this.dropmode=="child"?this.tobj.openItem(this.tid):this.tobj.openItem(this.tobj.getParentId(this.tid)));var a=this.tobj.rowsBuffer._dhx_find(this.tobj.rowsAr[this.tid]);if(this.alfa&&this.tobj._sbmod&&this.dropmode=="sibling"){var b=this.tobj.rowsAr[this.tid];if(b.nextSibling&&this._h2.get[b.nextSibling.idd].parent.id==this.tid)return a+1}return a+1+(this.target=="treeGrid"&&a>=0&&this.tobj._h2.get[this.tobj.rowsBuffer[a].idd].state==
+"minus"?this.tobj._getOpenLenght(this.tobj.rowsBuffer[a].idd,0):0)};dragContext.prototype.img=function(){return this.target!="grid"&&this.sobj._h2?this.sobj.getItemImage(this.sid):null};dragContext.prototype.slist=function(){for(var a=[],b=0;b<this.sid.length;b++)a[a.length]=this.sid[b][this.source=="tree"?"id":"idd"];return a.join(",")};
+dhtmlXGridObject.prototype._drag=function(a,b,c,d){if(this._realfake)return this._fake._drag();var e=this.lastLanding;this._autoOpenTimer&&window.clearTimeout(this._autoOpenTimer);var f=c.parentNode,g=a.parentObject;if(!f.idd)f.grid=this,this.dadmodefix=0;var h=new dragContext(0,0,0,f.grid.dadmode==1||f.grid.dadmodec?"sibling":"child");if(g&&g.childNodes)h.set("source","tree").set("sobj",g.treeNod).set("sid",h.sobj._dragged);else{if(!g)return!0;g.treeNod.isTreeGrid&&g.treeNod.isTreeGrid()&&h.set("source",
+"treeGrid");h.set("sobj",g.treeNod).set("sid",h.sobj._dragged)}f.grid.isTreeGrid()?h.set("target","treeGrid"):h.set("dropmode","sibling");h.set("tobj",f.grid).set("tid",f.idd);var i=this.getFirstParentOfType(d,"TD");i&&h.set("tExtra",i._cellIndex);i&&h.set("sExtra",h.sobj._dndExtra);h.sobj.dpcpy&&h.set("mode","copy");if(h.tobj._realfake)h.tobj=h.tobj._fake;if(h.sobj._realfake)h.sobj=h.sobj._fake;h.tobj._clearMove();if(g&&g.treeNod&&g.treeNod._nonTrivialRow)g.treeNod._nonTrivialRow(this,h.tid,h.dropmode,
+g);else{h.tobj.dragContext=h;if(!h.tobj.callEvent("onDrag",[h.slist(),h.tid,h.sobj,h.tobj,h.sExtra,h.tExtra]))return h.tobj.dragContext=null;var j=[];if(typeof h.sid=="object"){for(var k=h.copy(),m=0;m<h.sid.length;m++)if(k.set("alfa",!m).set("sid",h.sid[m][h.source=="tree"?"id":"idd"]).valid())k.tobj._dragRoutine(k),k.target=="treeGrid"&&k.dropmode=="child"&&k.tobj.openItem(k.tid),j[j.length]=k.nid,k.set("dropmode","sibling").set("tid",k.nid);k.close()}else h.tobj._dragRoutine(h);h.tobj.laterLink&&
+h.tobj.laterLink();h.tobj.callEvent("onDrop",[h.slist(),h.tid,j.join(","),h.sobj,h.tobj,h.sExtra,h.tExtra])}h.tobj.dragContext=null;h.close()};
+dhtmlXGridObject.prototype._dragRoutine=function(a){if(a.sobj==a.tobj&&a.source=="grid"&&a.mode=="move"&&!this._fake){if(!a.sobj._dndProblematic){var b=a.sobj.rowsAr[a.sid],c=a.sobj.rowsCol._dhx_find(b);a.sobj.rowsCol._dhx_removeAt(a.sobj.rowsCol._dhx_find(b));a.sobj.rowsBuffer._dhx_removeAt(a.sobj.rowsBuffer._dhx_find(b));a.sobj.rowsBuffer._dhx_insertAt(a.ind(),b);if(a.tobj._fake){a.tobj._fake.rowsCol._dhx_removeAt(c);var d=a.tobj._fake.rowsAr[a.sid];d.parentNode.removeChild(d)}a.sobj._insertRowAt(b,
+a.ind());a.nid=a.sid;a.sobj.callEvent("onGridReconstructed",[])}}else{var e;this._h2&&typeof a.tid!="undefined"&&a.dropmode=="sibling"&&(this._sbmod||a.tid)?a.alfa&&this._sbmod&&this._h2.get[a.tid].childs.length?(this.openItem(a.tid),e=a.uid().tobj.addRowBefore(a.nid,a.data(),this._h2.get[a.tid].childs[0].id,a.img(),a.childs())):e=a.uid().tobj.addRowAfter(a.nid,a.data(),a.tid,a.img(),a.childs()):e=a.uid().tobj.addRow(a.nid,a.data(),a.ind(),a.pid(),a.img(),a.childs());if(a.source=="tree"){this.callEvent("onRowAdded",
+[a.nid]);var f=a.sobj._globalIdStorageFind(a.sid);if(f.childsCount){for(var g=a.copy().set("tid",a.nid).set("dropmode",a.target=="grid"?"sibling":"child"),h=0;h<f.childsCount;h++)a.tobj._dragRoutine(g.set("sid",f.childNodes[h].id)),a.mode=="move"&&h--;g.close()}}else if(a.tobj._copyUserData(a),this.callEvent("onRowAdded",[a.nid]),a.source=="treeGrid"){if(a.sobj==a.tobj)e._xml=a.sobj.rowsAr[a.sid]._xml;var i=a.sobj._h2.get[a.sid];if(i&&i.childs.length){g=a.copy().set("tid",a.nid);a.target=="grid"?
+g.set("dropmode","sibling"):(g.tobj.openItem(a.tid),g.set("dropmode","child"));for(var j=i.childs.length,h=0;h<j;h++)if(a.sobj.render_row_tree(null,i.childs[h].id),a.tobj._dragRoutine(g.set("sid",i.childs[h].id)),j!=i.childs.length)h--,j=i.childs.length;g.close()}}if(a.mode=="move"&&(a.sobj[a.source=="tree"?"deleteItem":"deleteRow"](a.sid),a.sobj==a.tobj&&!a.tobj.rowsAr[a.sid]))a.tobj.changeRowId(a.nid,a.sid),a.nid=a.sid}};
+dhtmlXGridObject.prototype.gridToGrid=function(a,b){for(var c=[],d=0;d<b.hdr.rows[0].cells.length;d++)c[d]=b.cells(a,d).getValue();return c};dhtmlXGridObject.prototype.checkParentLine=function(a,b){return!this._h2||!b||!a?!1:a.id==b?!0:this.checkParentLine(a.parent,b)};
+dhtmlXGridObject.prototype._dragIn=function(a,b,c,d){if(!this.dADTempOff)return 0;var e=this.isTreeGrid(),f=b.parentNode.idd?b.parentNode:b.parentObject;if(this._drag_validate){if(a.parentNode==b.parentNode)return 0;if(e&&this==f.grid&&this.checkParentLine(this._h2.get[a.parentNode.idd],b.parentNode.idd))return 0}if(!this.callEvent("onDragIn",[f.idd||f.id,a.parentNode.idd,f.grid||f.treeNod,a.grid||a.parentNode.grid]))return this._setMove(a,c,d,!0);this._setMove(a,c,d);e&&a.parentNode.expand!=""?(this._autoOpenTimer=
+window.setTimeout(new callerFunction(this._autoOpenItem,this),1E3),this._autoOpenId=a.parentNode.idd):this._autoOpenTimer&&window.clearTimeout(this._autoOpenTimer);return a};dhtmlXGridObject.prototype._autoOpenItem=function(a,b){b.openItem(b._autoOpenId)};dhtmlXGridObject.prototype._dragOut=function(a){this._clearMove();var b=a.parentNode.parentObject?a.parentObject.id:a.parentNode.idd;this.callEvent("onDragOut",[b]);this._autoOpenTimer&&window.clearTimeout(this._autoOpenTimer)};
+dhtmlXGridObject.prototype._setMove=function(a,b,c,d){if(a.parentNode.idd){var e=getAbsoluteTop(a),f=getAbsoluteTop(this.objBox);if(e-f>parseInt(this.objBox.offsetHeight)-50)this.objBox.scrollTop=parseInt(this.objBox.scrollTop)+20;if(e-f+parseInt(this.objBox.scrollTop)<parseInt(this.objBox.scrollTop)+30)this.objBox.scrollTop=parseInt(this.objBox.scrollTop)-20;if(d)return 0;if(this.dadmode==2){var g=c-e+(document.body.scrollTop||document.documentElement.scrollTop)-2-a.offsetHeight/2;Math.abs(g)-a.offsetHeight/
+6>0?(this.dadmodec=1,this.dadmodefix=g<0?-1:1):this.dadmodec=0}else this.dadmodec=this.dadmode;if(this.dadmodec)this._sdrgc||this._createSdrgc(),this._sdrgc.style.display="block",this._sdrgc.style.top=e-f+parseInt(this.objBox.scrollTop)+(this.dadmodefix>=0?a.offsetHeight:0)+"px";else if(this._llSelD=a,a.parentNode.tagName=="TR")for(var h=0;h<a.parentNode.childNodes.length;h++)g=a.parentNode.childNodes[h],g._bgCol=g.style.backgroundColor,g.style.backgroundColor="#FFCCCC"}};
+dhtmlXGridObject.prototype._clearMove=function(){if(this._sdrgc)this._sdrgc.style.display="none";if(this._llSelD&&this._llSelD.parentNode.tagName=="TR")for(var a=this._llSelD.parentNode.childNodes,b=0;b<a.length;b++)a[b].style.backgroundColor=a[b]._bgCol;this._llSelD=null};dhtmlXGridObject.prototype.rowToDragElement=function(a){var b=this.cells(a,0).getValue();return b};
+dhtmlXGridObject.prototype._copyUserData=function(a){if(!a.tobj.UserData[a.nid]||a.tobj!=a.sobj){a.tobj.UserData[a.nid]=new Hashtable;var b=a.sobj.UserData[a.sid],c=a.tobj.UserData[a.nid];if(b)c.keys=c.keys.concat(b.keys),c.values=c.values.concat(b.values)}};dhtmlXGridObject.prototype.moveRow=function(a,b,c,d){switch(b){case "row_sibling":this.moveRowTo(a,c,"move","sibling",this,d);break;case "up":this.moveRowUp(a);break;case "down":this.moveRowDown(a)}};
+dhtmlXGridObject.prototype.loadCSVFile=function(a,b){this.load(a,b,"csv")};dhtmlXGridObject.prototype.enableCSVAutoID=function(a){this._csvAID=convertStringToBoolean(a)};dhtmlXGridObject.prototype.enableCSVHeader=function(a){this._csvHdr=convertStringToBoolean(a)};dhtmlXGridObject.prototype.setCSVDelimiter=function(a){this.csv.cell=a};dhtmlXGridObject.prototype._csvAID=!0;dhtmlXGridObject.prototype.loadCSVString=function(a){this.parse(a,"csv")};
+dhtmlXGridObject.prototype.serializeToCSV=function(a){this.editStop();this._agetm=this._mathSerialization?"getMathValue":this._strictText||a?"getTitle":"getValue";var b=[];if(this._csvHdr)for(var c=1;c<this.hdr.rows.length;c++){for(var d=[],e=0;e<this._cCount;e++)(!this._srClmn||this._srClmn[e])&&d.push(this.getColumnLabel(e,c-1));b.push(this.csvParser.str(d,this.csv.cell,this.csv.row))}for(var e=0,f=this.rowsBuffer.length;e<f;e++){var g=this._serializeRowToCVS(null,e);g!=""&&b.push(g)}return this.csvParser.block(b,
+this.csv.row)};
+dhtmlXGridObject.prototype._serializeRowToCVS=function(a,b,c,d){var e=[];a||(a=this.render_row(b),this._fake&&!this._fake.rowsAr[a.idd]&&this._fake.render_row(b));if(!this._csvAID)e[e.length]=a.idd;for(var c=c||0,d=d||this._cCount,f=!1,g=c;a.childNodes[c]._cellIndex>g&&c;)c--;for(var h=c;g<d;h++){if(!a.childNodes[h])break;var i=a.childNodes[h]._cellIndex;if(!this._srClmn||this._srClmn[i]){for(var j=a.childNodes[h],k=this.cells(a.idd,i);g!=i;)if(g++,e.push(""),g>=d)break;if(g>=d)break;g++;zxVal=k.cell?
+k[this._agetm]():"";this._chAttr&&k.wasChanged()&&(f=!0);e[e.length]=zxVal===null?"":zxVal;if(this._ecspn&&j.colSpan&&j.colSpan>1)for(var j=j.colSpan-1,m=0;m<j;m++)e[e.length]="",g++}else g++}return this._onlChAttr&&!f?"":this.csvParser.str(e,this.csv.cell,this.csv.row)};dhtmlXGridObject.prototype.toClipBoard=function(a){window.clipboardData?window.clipboardData.setData("Text",a):(new Clipboard).copy(a)};
+dhtmlXGridObject.prototype.fromClipBoard=function(){return window.clipboardData?window.clipboardData.getData("Text"):(new Clipboard).paste()};dhtmlXGridObject.prototype.cellToClipboard=function(a,b){if(!a||!b){if(!this.selectedRows[0])return;a=this.selectedRows[0].idd;b=this.cell._cellIndex}var c=this.cells(a,b);this.toClipBoard(((c.getLabel?c.getLabel():c.getValue())||"").toString())};
+dhtmlXGridObject.prototype.updateCellFromClipboard=function(a,b){if(!a||!b){if(!this.selectedRows[0])return;a=this.selectedRows[0].idd;b=this.cell._cellIndex}var c=this.cells(a,b);c[c.setImage?"setLabel":"setValue"](this.fromClipBoard())};
+dhtmlXGridObject.prototype.rowToClipboard=function(a){var b="";this._agetm=this._mathSerialization?"getMathValue":this._strictText?"getTitle":"getValue";if(a)b=this._serializeRowToCVS(this.getRowById(a));else for(var c=[],d=0;d<this.selectedRows.length;d++)c[c.length]=this._serializeRowToCVS(this.selectedRows[d]),b=this.csvParser.block(c,this.csv.row);this.toClipBoard(b)};
+dhtmlXGridObject.prototype.updateRowFromClipboard=function(a){var b=this.fromClipBoard();if(b){var c=a?this.getRowById(a):this.selectedRows[0];if(c){var d=this.csvParser,b=d.unblock(b,this.csv.cell,this.csv.row)[0];this._csvAID||b.splice(0,1);for(var e=0;e<b.length;e++){var f=this.cells3(c,e);f[f.setImage?"setLabel":"setValue"](b[e])}}}};
+dhtmlXGridObject.prototype.csvParser={block:function(a,b){return a.join(b)},unblock:function(a,b,c){for(var d=(a||"").split(c),e=0;e<d.length;e++)d[e]=(d[e]||"").split(b);return d},str:function(a,b){return a.join(b)}};
+dhtmlXGridObject.prototype.csvExtParser={_quote:RegExp('"',"g"),_quote_esc:RegExp('\\\\"',"g"),block:function(a,b){return a.join(b)},unblock:function(a,b,c){var d=[[]],e=0;if(!a)return d;for(var f=/^[ ]*"/,g=/"[ ]*$/,h=RegExp(".*"+c+".*$"),i=a.split(b),j=0;j<i.length;j++)if(i[j].match(f)){for(var k=i[j].replace(f,"");!i[j].match(g);)j++,k+=i[j];d[e].push(k.replace(g,"").replace(this._quote_esc,'"'))}else if(i[j].match(h)){var m=i[j].split(c,2);d[e].push(m[0]);e++;d[e]=[];i[j]=m[1];j--}else(i[j]||
+j!=i.length-1)&&d[e].push(i[j]);return d},str:function(a,b){for(var c=0;c<a.length;c++)a[c]='"'+a[c].replace(this._quote,'\\"')+'"';return a.join(b)}};dhtmlXGridObject.prototype.addRowFromClipboard=function(){var a=this.fromClipBoard();if(a)for(var b=this.csvParser.unblock(a,this.csv.cell,this.csv.row),c=0;c<b.length;c++)b[c]&&(a=b[c],a.length&&(this._csvAID?this.addRow(this.getRowsNum()+2,a):(this.rowsAr[a[0]]&&(a[0]=this.uid()),this.addRow(a[0],a.slice(1)))))};
+dhtmlXGridObject.prototype.gridToClipboard=function(){this.toClipBoard(this.serializeToCSV())};dhtmlXGridObject.prototype.gridFromClipboard=function(){var a=this.fromClipBoard();a&&this.loadCSVString(a)};
+dhtmlXGridObject.prototype.getXLS=function(a){if(!this.xslform){this.xslform=document.createElement("FORM");this.xslform.action=(a||"")+"xls.php";this.xslform.method="post";this.xslform.target=_isIE?"_blank":"";document.body.appendChild(this.xslform);var b=document.createElement("INPUT");b.type="hidden";b.name="csv";this.xslform.appendChild(b);var c=document.createElement("INPUT");c.type="hidden";c.name="csv_header";this.xslform.appendChild(c)}var d=this.serializeToCSV();this.xslform.childNodes[0].value=
+d;for(var e=[],f=this._cCount,g=0;g<f;g++)e.push(this.getHeaderCol(g));e=e.join(",");this.xslform.childNodes[1].value=e;this.xslform.submit()};
+dhtmlXGridObject.prototype.printView=function(a,b){var c="<style>TD { font-family:Arial; text-align:center; padding-left:2px;padding-right:2px; } \n td.filter input, td.filter select { display:none; }\t\n </style>",d=null;if(this._fake)for(var d=[].concat(this._hrrar),e=0;e<this._fake._cCount;e++)this._hrrar[e]=null;c+="<base href='"+document.location.href+"'></base>";this.parentGrid||(c+=a||"");c+='<table width="100%" border="2px" cellpadding="0" cellspacing="0">';var f=Math.max(this.rowsBuffer.length,
+this.rowsCol.length),g=this._cCount,h=this._printWidth();c+='<tr class="header_row_1">';for(e=0;e<g;e++)if(!this._hrrar||!this._hrrar[e]){for(var i=this.hdr.rows[1].cells[this.hdr.rows[1]._childIndexes?this.hdr.rows[1]._childIndexes[parseInt(e)]:e],j=i.colSpan||1,k=i.rowSpan||1,m=1;m<j;m++)h[e]+=h[m];c+='<td rowspan="'+k+'" width="'+h[e]+'%" style="background-color:lightgrey;" colspan="'+j+'">'+this.getHeaderCol(e)+"</td>";e+=j-1}c+="</tr>";for(e=2;e<this.hdr.rows.length;e++)if(_isIE){c+="<tr style='background-color:lightgrey' class='header_row_"+
+e+"'>";for(var l=this.hdr.rows[e].childNodes,m=0;m<l.length;m++)if(!this._hrrar||!this._hrrar[l[m]._cellIndex])c+=l[m].outerHTML;c+="</tr>"}else c+="<tr class='header_row_"+e+"' style='background-color:lightgrey'>"+(this._fake?this._fake.hdr.rows[e].innerHTML:"")+this.hdr.rows[e].innerHTML+"</tr>";for(e=0;e<f;e++)if(c+="<tr>",this.rowsCol[e]&&this.rowsCol[e]._cntr)c+=this.rowsCol[e].innerHTML.replace(/<img[^>]*>/gi,"")+"</tr>";else if(!(this.rowsCol[e]&&this.rowsCol[e].style.display=="none")){var n;
+if(this.rowsCol[e])n=this.rowsCol[e].idd;else if(this.rowsBuffer[e])n=this.rowsBuffer[e].idd;else continue;for(m=0;m<g;m++)if(!this._hrrar||!this._hrrar[m]){if(this.rowsAr[n]&&this.rowsAr[n].tagName=="TR")var o=this.cells(n,m),p=o._setState?"":o.getContent?o.getContent():o.getImage||o.combo?o.cell.innerHTML:o.getValue();else p=this._get_cell_value(this.rowsBuffer[e],m);var r=this.columnColor[m]?"background-color:"+this.columnColor[m]+";":"",q=this.cellAlign[m]?"text-align:"+this.cellAlign[m]+";":
+"",s=o.getAttribute("colspan");c+='<td style="'+r+q+'" '+(s?'colSpan="'+s+'"':"")+">"+(p===""?"&nbsp;":p)+"</td>";s&&(m+=s-1)}c+="</tr>";if(this.rowsCol[e]&&this.rowsCol[e]._expanded){var y=this.cells4(this.rowsCol[e]._expanded.ctrl);c+=y.getSubGrid?'<tr><td colspan="'+g+'">'+y.getSubGrid().printView()+"</td></tr>":'<tr><td colspan="'+g+'">'+this.rowsCol[e]._expanded.innerHTML+"</td></tr>"}}if(this.ftr)for(e=1;e<this.ftr.childNodes[0].rows.length;e++)c+="<tr style='background-color:lightgrey'>"+(this._fake?
+this._fake.ftr.childNodes[0].rows[e].innerHTML:"")+this.ftr.childNodes[0].rows[e].innerHTML+"</tr>";c+="</table>";if(this.parentGrid)return c;c+=b||"";var t=window.open("","_blank");t.document.write(c);t.document.write("<script>window.onerror=function(){return true;}<\/script>");t.document.close();if(this._fake)this._hrrar=d};
+dhtmlXGridObject.prototype._printWidth=function(){for(var a=[],b=0,c=0;c<this._cCount;c++){var d=this.getColWidth(c);a.push(d);b+=d}for(var e=[],f=0,c=0;c<a.length;c++){var g=Math.floor(a[c]/b*100);f+=g;e.push(g)}e[e.length-1]+=100-f;return e};dhtmlXGridObject.prototype.loadObject=function(){};dhtmlXGridObject.prototype.loadJSONFile=function(){};dhtmlXGridObject.prototype.serializeToObject=function(){};dhtmlXGridObject.prototype.serializeToJSON=function(){};
+if(!window.clipboardData)window.clipboardData={_make:function(){var a=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(!a)return null;var b=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(!b)return null;b.addDataFlavor("text/unicode");var c=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);this._p=[a,b,c];return!0},
+setData:function(a,b){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(c){return dhtmlxError.throwError("Clipboard","Access to clipboard denied",[a,b]),""}if(!this._make())return!1;this._p[2].data=b;this._p[1].setTransferData("text/unicode",this._p[2],b.length*2);var d=Components.interfaces.nsIClipboard;this._p[0].setData(this._p[1],null,d.kGlobalClipboard)},getData:function(a){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(b){return dhtmlxError.throwError("Clipboard",
+"Access to clipboard denied",[a]),""}if(!this._make())return!1;this._p[0].getData(this._p[1],this._p[0].kGlobalClipboard);var c={},d={};try{this._p[1].getTransferData("text/unicode",d,c)}catch(e){return""}d&&(d=d.value.QueryInterface(Components.interfaces.nsISupportsString));return d?d.data.substring(0,c.value/2):""}};
+dhtmlXGridObject.prototype.enableBlockSelection=function(a){if(typeof this._bs_mode=="undefined"){var b=this;this.obj.onmousedown=function(a){b._bs_mode&&b._OnSelectionStart(a||event,this);return!0};this._CSVRowDelimiter=this.csv.row;this.attachEvent("onResize",function(){b._HideSelection();return!0});this.attachEvent("onGridReconstructed",function(){b._HideSelection();return!0});this.attachEvent("onFilterEnd",this._HideSelection)}if(a===!1)return this._bs_mode=!1,this._HideSelection();else this._bs_mode=
+!0};dhtmlXGridObject.prototype.forceLabelSelection=function(a){this._strictText=convertStringToBoolean(a)};dhtmlXGridObject.prototype.disableBlockSelection=function(){this.obj.onmousedown=null};
+dhtmlXGridObject.prototype._OnSelectionStart=function(a){var b=this;if(a.button!=2){var c=a.srcElement||a.target;if(this.editor){if(c.tagName&&(c.tagName=="INPUT"||c.tagName=="TEXTAREA"))return;this.editStop()}b.isActive||b.setActive(!0);var d=this.getPosition(this.obj),e=a.clientX-d[0]+document.body.scrollLeft,f=a.clientY-d[1]+document.body.scrollTop;this._CreateSelection(e-4,f-4);if(c==this._selectionObj)this._HideSelection(),this._startSelectionCell=null;else{for(;c.tagName.toLowerCase()!="td";)c=
+c.parentNode;this._startSelectionCell=c}if(this._startSelectionCell&&!this.callEvent("onBeforeBlockSelected",[this._startSelectionCell.parentNode.idd,this._startSelectionCell._cellIndex]))return this._startSelectionCell=null;this.obj.onmousedown=null;this.obj[_isIE?"onmouseleave":"onmouseout"]=function(){b._blsTimer&&window.clearTimeout(b._blsTimer)};this.obj.onmmold=this.obj.onmousemove;this._init_pos=[e,f];this._selectionObj.onmousemove=this.obj.onmousemove=function(c){c=c||a;c.returnValue=!1;b._OnSelectionMove(c)};
+this._oldDMP=document.body.onmouseup;document.body.onmouseup=function(c){c=c||a;b._OnSelectionStop(c,this);return!0};this.callEvent("onBeforeBlockSelection",[]);document.body.onselectstart=function(){return!1}}};
+dhtmlXGridObject.prototype._getCellByPos=function(a,b){this._fake&&(a+=this._fake.entBox.offsetWidth);for(var c=0,d=0;d<this.obj.rows.length;d++)if(b-=this.obj.rows[d].offsetHeight,b<=0){c=this.obj.rows[d];break}if(!c||!c.idd)return null;for(d=0;d<this._cCount;d++)if(a-=this.getColWidth(d),a<=0)for(;;)if(c._childIndexes&&c._childIndexes[d+1]==c._childIndexes[d])c=c.previousSibling;else return this.cells(c.idd,d).cell;return null};
+dhtmlXGridObject.prototype._OnSelectionMove=function(a){var b=this;this._ShowSelection();var c=this.getPosition(this.obj),d=a.clientX-c[0]+(document.body.scrollLeft||(document.documentElement?document.documentElement.scrollLeft:0)),e=a.clientY-c[1]+(document.body.scrollTop||(document.documentElement?document.documentElement.scrollTop:0));if(Math.abs(this._init_pos[0]-d)<5&&Math.abs(this._init_pos[1]-e)<5)return this._HideSelection();var f=this._endSelectionCell;if(this._startSelectionCell==null)this._endSelectionCell=
+this._startSelectionCell=this.getFirstParentOfType(a.srcElement||a.target,"TD");else if(a.srcElement||a.target)if((a.srcElement||a.target).className=="dhtmlxGrid_selection")this._endSelectionCell=this._getCellByPos(d,e)||this._endSelectionCell;else{var g=this.getFirstParentOfType(a.srcElement||a.target,"TD");if(g.parentNode.idd)this._endSelectionCell=g}if(this._endSelectionCell&&!this.callEvent("onBeforeBlockSelected",[this._endSelectionCell.parentNode.idd,this._endSelectionCell._cellIndex]))this._endSelectionCell=
+f;var h=this.objBox.scrollLeft+this.objBox.clientWidth,i=this.objBox.scrollTop+this.objBox.clientHeight,j=this.objBox.scrollLeft,k=this.objBox.scrollTop,m=!1;this._blsTimer&&window.clearTimeout(this._blsTimer);d+20>=h?(this.objBox.scrollLeft+=20,m=!0):d-20<j&&(this.objBox.scrollLeft-=20,m=!0);e+20>=i&&!this._realfake?(this.objBox.scrollTop+=20,m=!0):e-20<k&&!this._realfake&&(this.objBox.scrollTop-=20,m=!0);this._selectionArea=this._RedrawSelectionPos(this._startSelectionCell,this._endSelectionCell);
+if(m){var l=a.clientX,n=a.clientY;this._blsTimer=window.setTimeout(function(){b._OnSelectionMove({clientX:l,clientY:n})},100)}};
+dhtmlXGridObject.prototype._OnSelectionStop=function(a){var b=this;this._blsTimer&&window.clearTimeout(this._blsTimer);this.obj.onmousedown=function(c){b._bs_mode&&b._OnSelectionStart(c||a,this);return!0};this.obj.onmousemove=this.obj.onmmold||null;this._selectionObj.onmousemove=null;document.body.onmouseup=this._oldDMP||null;if(parseInt(this._selectionObj.style.width)<2&&parseInt(this._selectionObj.style.height)<2)this._HideSelection();else{var c=this.getFirstParentOfType(a.srcElement||a.target,
+"TD");if(!c||!c.parentNode.idd)c=this._endSelectionCell;if(!c)return this._HideSelection();for(;c.tagName.toLowerCase()!="td";)c=c.parentNode;this._stopSelectionCell=c;this._selectionArea=this._RedrawSelectionPos(this._startSelectionCell,this._stopSelectionCell);this.callEvent("onBlockSelected",[])}document.body.onselectstart=function(){}};
+dhtmlXGridObject.prototype._RedrawSelectionPos=function(a,b){var c={};c.LeftTopCol=a._cellIndex;c.LeftTopRow=this.getRowIndex(a.parentNode.idd);c.RightBottomCol=b._cellIndex;c.RightBottomRow=this.getRowIndex(b.parentNode.idd);var d=a.offsetWidth,e=a.offsetHeight,a=this.getPosition(a,this.obj),f=b.offsetWidth,g=b.offsetHeight,b=this.getPosition(b,this.obj);if(a[0]<b[0])var h=a[0],i=b[0]+f;else{var j=c.RightBottomCol;c.RightBottomCol=c.LeftTopCol;c.LeftTopCol=j;h=b[0];i=a[0]+d}if(a[1]<b[1])var k=a[1],
+m=b[1]+g;else j=c.RightBottomRow,c.RightBottomRow=c.LeftTopRow,c.LeftTopRow=j,k=b[1],m=a[1]+e;var l=i-h,n=m-k;this._selectionObj.style.left=h+"px";this._selectionObj.style.top=k+"px";this._selectionObj.style.width=l+"px";this._selectionObj.style.height=n+"px";return c};
+dhtmlXGridObject.prototype._CreateSelection=function(a,b){if(this._selectionObj==null){var c=document.createElement("div");c.style.position="absolute";c.style.display="none";c.className="dhtmlxGrid_selection";this._selectionObj=c;this._selectionObj.onmousedown=function(a){a=a||event;if(a.button==2||_isMacOS&&a.ctrlKey)return this.parentNode.grid.callEvent("onBlockRightClick",["BLOCK",a])};this._selectionObj.oncontextmenu=function(a){(a||event).cancelBubble=!0;return!1};this.objBox.appendChild(this._selectionObj)}this._selectionObj.style.width=
+"0px";this._selectionObj.style.height="0px";this._selectionObj.style.left=a+"px";this._selectionObj.style.top=b+"px";this._selectionObj.startX=a;this._selectionObj.startY=b};dhtmlXGridObject.prototype._ShowSelection=function(){if(this._selectionObj)this._selectionObj.style.display=""};dhtmlXGridObject.prototype._HideSelection=function(){if(this._selectionObj)this._selectionObj.style.display="none";this._selectionArea=null};
+dhtmlXGridObject.prototype.copyBlockToClipboard=function(){if(this._selectionArea!=null){var a=[];this._agetm=this._mathSerialization?"getMathValue":this._strictText?"getTitle":"getValue";for(var b=this._selectionArea.LeftTopRow;b<=this._selectionArea.RightBottomRow;b++){var c=this._serializeRowToCVS(this.rowsBuffer[b],null,this._selectionArea.LeftTopCol,this._selectionArea.RightBottomCol+1);a[a.length]=this._csvAID?c:c.substr(c.indexOf(this.csv.cell)+1)}a=a.join(this._CSVRowDelimiter);this.toClipBoard(a)}};
+dhtmlXGridObject.prototype.pasteBlockFromClipboard=function(){var a=this.fromClipBoard();if(this._selectionArea!=null)var b=this._selectionArea.LeftTopRow,c=this._selectionArea.LeftTopCol;else if(this.cell!=null&&!this.editor)b=this.getRowIndex(this.cell.parentNode.idd),c=this.cell._cellIndex;else return!1;var a=this.csvParser.unblock(a,this.csv.cell,this.csv.row),d=b+a.length,e=c+a[0].length;if(e>this._cCount)e=this._cCount;for(var f=0,g=b;g<d;g++){var h=this.render_row(g);if(h!=-1){for(var i=0,
+j=c;j<e;j++){var k=this.cells3(h,j);if(k.isDisabled())i++;else{this._onEditUndoRedo&&this._onEditUndoRedo(2,h.idd,j,a[f][i],k.getValue());if(k.combo){for(var m=k.combo.values,l=0;l<m.length;l++)if(a[f][i]==m[l]){k.setValue(k.combo.keys[l]);m=null;break}m!=null&&k.editable?k.setValue(a[f][i++]):i++}else k[k.setImage?"setLabel":"setValue"](a[f][i++]);k.cell.wasChanged=!0}}this.callEvent("onRowPaste",[h.idd]);f++}}};
+dhtmlXGridObject.prototype.getSelectedBlock=function(){return this._selectionArea?this._selectionArea:this.getSelectedRowId()!==null?{LeftTopRow:this.getSelectedRowId(),LeftTopCol:this.getSelectedCellIndex(),RightBottomRow:this.getSelectedRowId(),RightBottomCol:this.getSelectedCellIndex()}:null};
+dhtmlXGridObject.prototype.enableSmartRendering=function(a,b,c){arguments.length>2&&(b&&!this.rowsBuffer[b-1]&&(this.rowsBuffer[b-1]=0),b=c);this._srnd=convertStringToBoolean(a);this._srdh=this._srdh||20;this._dpref=b||0};dhtmlXGridObject.prototype.enablePreRendering=function(a){this._srnd_pr=parseInt(a||50)};
+dhtmlXGridObject.prototype.forceFullLoading=function(a){for(var a=a||50,b=0;b<this.rowsBuffer.length;b++)if(!this.rowsBuffer[b]){if(this.callEvent("onDynXLS",[b,a])){var c=this;this.load(this.xmlFileUrl+getUrlSymbol(this.xmlFileUrl)+"posStart="+b+"&count="+a,function(){window.setTimeout(function(){c.forceFullLoading(a)},100)},this._data_type)}break}};dhtmlXGridObject.prototype.setAwaitedRowHeight=function(a){this._srdh=parseInt(a)};
+dhtmlXGridObject.prototype._get_view_size=function(){return Math.floor(parseInt(this.entBox.offsetHeight)/this._srdh)+2};
+dhtmlXGridObject.prototype._add_filler=function(a,b,c,d){if(!b)return null;var e="__filler__",f=this._prepareRow(e);f.firstChild.style.width="1px";for(var g=1;g<f.childNodes.length;g++)f.childNodes[g].style.display="none";f.firstChild.style.height=b*this._srdh+"px";(c=c||this.rowsCol[a])&&c.nextSibling?c.parentNode.insertBefore(f,c.nextSibling):_isKHTML?this.obj.appendChild(f):this.obj.rows[0].parentNode.appendChild(f);this.callEvent("onAddFiller",[a,b,f,c,d]);return[a,b,f]};
+dhtmlXGridObject.prototype._update_srnd_view=function(){var a=Math.floor(this.objBox.scrollTop/this._srdh),b=a+this._get_view_size();if(this.multiLine){for(var c=this.objBox.scrollTop,a=0;c>0;)c-=this.rowsCol[a]?this.rowsCol[a].offsetHeight:this._srdh,a++;b=a+this._get_view_size();a>0&&a--}b+=this._srnd_pr||0;if(b>this.rowsBuffer.length)b=this.rowsBuffer.length;for(var d=a;d<b;d++)if(!this.rowsCol[d]){var e=this._add_from_buffer(d);if(e==-1){if(this.xmlFileUrl)this._current_load=[d,this._dpref?this._dpref:
+b-d],this.callEvent("onDynXLS",[d,this._current_load[1]])&&this.load(this.xmlFileUrl+getUrlSymbol(this.xmlFileUrl)+"posStart="+d+"&count="+this._current_load[1],this._data_type);return}else if(this._tgle&&(this._updateLine(this._h2.get[this.rowsBuffer[d].idd],this.rowsBuffer[d]),this._updateParentLine(this._h2.get[this.rowsBuffer[d].idd],this.rowsBuffer[d])),d&&d==(this._realfake?this._fake:this)._r_select)this.selectCell(d,this.cell?this.cell._cellIndex:0,!0)}if(this._fake&&!this._realfake&&this.multiLine)this._fake.objBox.scrollTop=
+this.objBox.scrollTop};
+dhtmlXGridObject.prototype._add_from_buffer=function(a){var b=this.render_row(a);if(b==-1)return-1;if(b._attrs.selected||b._attrs.select)this.selectRow(b,!1,!0),b._attrs.selected=b._attrs.select=null;if(this._cssSP){if(this._h2){var c=this._h2.get[b.idd];b.className+=" "+(c.level%2?this._cssUnEven+" "+this._cssUnEven:this._cssEven+" "+this._cssEven)+"_"+c.level+(this.rowsAr[c.id]._css||"")}}else if(this._cssEven&&a%2==0)b.className=this._cssEven+(b.className.indexOf("rowselected")!=-1?" rowselected ":
+" ")+(b._css||"");else if(this._cssUnEven&&a%2==1)b.className=this._cssUnEven+(b.className.indexOf("rowselected")!=-1?" rowselected ":" ")+(b._css||"");for(var d=0;d<this._fillers.length;d++){var e=this._fillers[d];if(e&&e[0]<=a&&e[0]+e[1]>a){var f=a-e[0];f==0?(this._insert_before(a,b,e[2]),this._update_fillers(d,-1,1)):f==e[1]-1?(this._insert_after(a,b,e[2]),this._update_fillers(d,-1,0)):(this._fillers.push(this._add_filler(a+1,e[1]-f-1,e[2],1)),this._insert_after(a,b,e[2]),this._update_fillers(d,
+-e[1]+f,0));break}}};dhtmlXGridObject.prototype._update_fillers=function(a,b,c){var d=this._fillers[a];d[1]+=b;d[0]+=c;d[1]?(d[2].firstChild.style.height=parseFloat(d[2].firstChild.style.height)+b*this._srdh+"px",this.callEvent("onUpdateFiller",[d[2]])):(this.callEvent("onRemoveFiller",[d[2]]),d[2].parentNode.removeChild(d[2]),this._fillers.splice(a,1))};
+dhtmlXGridObject.prototype._insert_before=function(a,b,c){c.parentNode.insertBefore(b,c);this.rowsCol[a]=b;this.callEvent("onRowInserted",[b,null,c,"before"])};dhtmlXGridObject.prototype._insert_after=function(a,b,c){c.nextSibling?c.parentNode.insertBefore(b,c.nextSibling):c.parentNode.appendChild(b);this.rowsCol[a]=b;this.callEvent("onRowInserted",[b,null,c,"after"])};
+function dhtmlXGridFromTable(a,b){typeof a!="object"&&(a=document.getElementById(a));a.className="";var c=document.createElement("DIV");c.setAttribute("width",a.getAttribute("gridWidth")||(a.offsetWidth?a.offsetWidth+"px":0)||(window.getComputedStyle?window.getComputedStyle(a,null).width:a.currentStyle?a.currentStyle.width:0));c.setAttribute("height",a.getAttribute("gridHeight")||(a.offsetHeight?a.offsetHeight+"px":0)||(window.getComputedStyle?window.getComputedStyle(a,null).height:a.currentStyle?
+a.currentStyle.height:0));var d=a,e=a.getAttribute("dragAndDrop");d.parentNode.insertBefore(c,d);var f=d.getAttribute("name")||"name_"+(new Date).valueOf(),g=new dhtmlXGridObject(c);window[f]=g;var h=d.getAttribute("onbeforeinit"),i=d.getAttribute("oninit");h&&eval(h);g.setImagePath(g.imgURL||d.getAttribute("imgpath")||"");b&&b(g);for(var j=d.rows[0],k="",m="",l="",n="",o="",p=0;p<j.cells.length;p++){k+=(k?",":"")+j.cells[p].innerHTML;var r=j.cells[p].getAttribute("width")||j.cells[p].offsetWidth||
+(window.getComputedStyle?window.getComputedStyle(j.cells[p],null).width:j.cells[p].currentStyle?j.cells[p].currentStyle.width:0);m+=(m?",":"")+(r=="*"?r:parseInt(r));l+=(l?",":"")+(j.cells[p].getAttribute("align")||"left");n+=(n?",":"")+(j.cells[p].getAttribute("type")||"ed");o+=(o?",":"")+(j.cells[p].getAttribute("sort")||"str");var q=j.cells[p].getAttribute("format");if(q)j.cells[p].getAttribute("type").toLowerCase().indexOf("calendar")!=-1?g._dtmask=q:g.setNumberFormat(q,p)}g.setHeader(k);g.setInitWidths(m);
+g.setColAlign(l);g.setColTypes(n);g.setColSorting(o);a.getAttribute("gridHeight")=="auto"&&g.enableAutoHeigth(!0);a.getAttribute("multiline")&&g.enableMultiline(!0);var s=d.getAttribute("lightnavigation");s&&g.enableLightMouseNavigation(s);var y=d.getAttribute("evenrow"),t=d.getAttribute("unevenrow");(y||t)&&g.enableAlterCss(y,t);e&&g.enableDragAndDrop(!0);g.init();a.getAttribute("split")&&g.splitAt(a.getAttribute("split"));g._process_inner_html(d,1);i&&eval(i);a.parentNode&&a.parentNode.removeChild&&
+a.parentNode.removeChild(a);return g}dhtmlXGridObject.prototype._process_html=function(a){if(a.tagName&&a.tagName=="TABLE")return this._process_inner_html(a,0);var b=document.createElement("DIV");b.innerHTML=a.xmlDoc.responseText;var c=b.getElementsByTagName("TABLE")[0];this._process_inner_html(c,0)};
+dhtmlXGridObject.prototype._process_inner_html=function(a,b){for(var c=a.rows.length,d=b;d<c;d++){var e=a.rows[d].getAttribute("id")||d;this.rowsBuffer.push({idd:e,data:a.rows[d],_parser:this._process_html_row,_locator:this._get_html_data})}this.render_dataset();this.setSizes()};
+dhtmlXGridObject.prototype._process_html_row=function(a,b){var c=b.getElementsByTagName("TD"),d=[];a._attrs=this._xml_attrs(b);for(var e=0;e<c.length;e++){var f=c[e],g=f.getAttribute("type");if(a.childNodes[e]){if(g)a.childNodes[e]._cellType=g;a.childNodes[e]._attrs=this._xml_attrs(c[e])}f.firstChild?d.push(f.innerHTML):d.push("");if(f.colSpan>1){a.childNodes[e]._attrs.colspan=f.colSpan;for(var h=1;h<f.colSpan;h++)d.push("")}}for(;e<a.childNodes.length;e++)a.childNodes[e]._attrs={};this._fillRow(a,
+this._c_order?this._swapColumns(d):d);return a};dhtmlXGridObject.prototype._get_html_data=function(a,b){for(a=a.firstChild;;){if(!a)return"";a.tagName=="TD"&&b--;if(b<0)break;a=a.nextSibling}return a.firstChild?a.firstChild.data:""};dhtmlxEvent(window,"load",function(){for(var a=document.getElementsByTagName("table"),b=0;b<a.length;b++)a[b].className=="dhtmlxGrid"&&dhtmlXGridFromTable(a[b])});dhtmlxValidation=function(){};
+dhtmlxValidation.prototype={trackInput:function(a,b,c,d){dhtmlxEvent(a,"keyup",function(){if(dhtmlxValidation._timer)window.clearTimeout(dhtmlxValidation._timer),dhtmlxValidation._timer=null;dhtmlxValidation._timer=window.setTimeout(function(){if(dhtmlxValidation.checkInput(a,b))a.className=a.className.replace(/[ ]*dhtmlx_live_validation_error/g,""),d&&d(a,a.value,b);else if(!c||c(a,a.value,b))a.className+=" dhtmlx_live_validation_error"},250)})},checkInput:function(a,b){return this.checkValue(a.value,
+b)},checkValue:function(a,b){typeof b=="string"&&(b=b.split(","));for(var c=!0,d=0;d<b.length;d++)this["is"+b[d]]?c=c&&this["is"+b[d]](a):alert("Incorrect validation rule: "+b[d]);return c},isEmpty:function(a){return a==""},isNotEmpty:function(a){return!a==""},isValidBoolean:function(a){return!!a.toString().match(/^(0|1|true|false)$/)},isValidEmail:function(a){return!!a.toString().match(/(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\-\.]*)(\.[a-z]{2,4})$)/i)},isValidInteger:function(a){return!!a.toString().match(/(^-?\d+$)/)},
+isValidNumeric:function(a){return!!a.toString().match(/(^-?\d\d*[\.|,]\d*$)|(^-?\d\d*$)|(^-?[\.|,]\d\d*$)/)},isValidAplhaNumeric:function(a){return!!a.toString().match(/^[_\-a-z0-9]+$/gi)},isValidDatetime:function(a){var b=a.toString().match(/^(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})$/);return b&&!!(b[1]<=9999&&b[2]<=12&&b[3]<=31&&b[4]<=59&&b[5]<=59&&b[6]<=59)||!1},isValidDate:function(a){var b=a.toString().match(/^(\d{4})-(\d{2})-(\d{2})$/);return b&&!!(b[1]<=9999&&b[2]<=12&&b[3]<=31)||!1},
+isValidTime:function(a){var b=a.toString().match(/^(\d{1,2}):(\d{1,2}):(\d{1,2})$/);return b&&!!(b[1]<=24&&b[2]<=59&&b[3]<=59)||!1},isValidIPv4:function(a){var b=a.toString().match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);return b&&!!(b[1]<=255&&b[2]<=255&&b[3]<=255&&b[4]<=255)||!1},isValidCurrency:function(a){return a.toString().match(/^\$?\s?\d+?[\.,\,]?\d+?\s?\$?$/)&&!0||!1},isValidSSN:function(a){return a.toString().match(/^\d{3}\-?\d{2}\-?\d{4}$/)&&!0||!1},isValidSIN:function(a){return a.toString().match(/^\d{9}$/)&&
+!0||!1}};dhtmlxValidation=new dhtmlxValidation;dhtmlXGridObject.prototype.enableValidation=function(a,b){this._validators=(a=convertStringToBoolean(a))?{data:[]}:!1;if(arguments.length>1)this._validators._live=b;if(!this._validators._event)this._validators._event=this.attachEvent("onEditCell",this.validationEvent)};dhtmlXGridObject.prototype.setColValidators=function(a){this._validators||this.enableValidation(!0);typeof a=="string"&&(a=a.split(this.delim));this._validators.data=a};
+dhtmlXGridObject.prototype.validationEvent=function(a,b,c,d){var e=this._validators;if(!e)return!0;var f=e.data[c]||this.cells(b,c).getAttribute("validate")||"";if(a==1&&f){var g=this.editor||(this._fake||{}).editor;if(!g)return!0;g.cell.className=g.cell.className.replace(/[ ]*dhtmlx_validation_error/g,"");if(e._live){var h=this;dhtmlxValidation.trackInput(g.getInput(),f,function(a,d,e){return h.callEvent("onLiveValidationError",[b,c,d,a,e])},function(a,d,e){return h.callEvent("onLiveValidationCorrect",
+[b,c,d,a,e])})}}a==2&&this.validateCell(b,c,f,d);return!0};
+dhtmlXGridObject.prototype.validateCell=function(a,b,c,d){c=c||this._validators.data[b]||this.cells(a,b).getAttribute("validate");d=d||this.cells(a,b).getValue();if(c){var e=this.cells(a,b).cell,f=!0;typeof c=="string"&&(c=c.split(this.delim));for(var g=0;g<c.length;g++)dhtmlxValidation.checkValue(d,c[g])||(this.callEvent("onValidationError",[a,b,d,c[g]])&&(e.className+=" dhtmlx_validation_error"),f=!1);if(f)this.callEvent("onValidationCorrect",[a,b,d,c]),e.className=e.className.replace(/[ ]*dhtmlx_validation_error/g,
+"");return f}};function eXcell_dhxCalendar(a){if(a&&(this.cell=a,this.grid=this.cell.parentNode.grid,!this.grid._grid_calendarA)){var b=this.grid._grid_calendarA=new dhtmlxCalendarObject;this.grid.callEvent("onDhxCalendarCreated",[b]);var c=this.grid;b.attachEvent("onClick",function(){this._last_operation_calendar=!0;window.setTimeout(function(){c.editStop()},1);return!0});var d=function(a){(a||event).cancelBubble=!0};dhtmlxEvent(b.base,"click",d);b=null}}eXcell_dhxCalendar.prototype=new eXcell;
+eXcell_dhxCalendar.prototype.edit=function(){var a=this.grid.getPosition(this.cell);this.grid._grid_calendarA._show(!1,!1);this.grid._grid_calendarA.setPosition(a[0],a[1]+this.cell.offsetHeight);this.grid._grid_calendarA._last_operation_calendar=!1;this.grid.callEvent("onCalendarShow",[this.grid._grid_calendarA,this.cell.parentNode.idd,this.cell._cellIndex]);this.cell._cediton=!0;this.val=this.cell.val;this._val=this.cell.innerHTML;var b=this.grid._grid_calendarA.draw;this.grid._grid_calendarA.draw=
+function(){};this.grid._grid_calendarA.setDateFormat(this.grid._dtmask||"%d/%m/%Y");this.grid._grid_calendarA.setDate(this.val||new Date);this.grid._grid_calendarA.draw=b};eXcell_dhxCalendar.prototype.getDate=function(){return this.cell.val?this.cell.val:null};eXcell_dhxCalendar.prototype.getValue=function(){return this.cell._clearCell?"":this.grid._dtmask_inc&&this.cell.val?this.grid._grid_calendarA.getFormatedDate(this.grid._dtmask_inc,this.cell.val).toString():this.cell.innerHTML.toString()._dhx_trim()};
+eXcell_dhxCalendar.prototype.detach=function(){if(this.grid._grid_calendarA&&(this.grid._grid_calendarA.hide(),this.cell._cediton)){this.cell._cediton=!1;if(this.grid._grid_calendarA._last_operation_calendar){var a=this.grid._grid_calendarA.getFormatedDate(this.grid._dtmask||"%d/%m/%Y"),b=this.grid._grid_calendarA.getDate();this.cell.val=new Date(b);this.setCValue(a,b);this.cell._clearCell=!a;var c=this.val;this.val=this._val;return this.cell.val.valueOf()!=c}return!1}};
+eXcell_dhxCalendar.prototype.setValue=function(a){typeof a=="object"?(this.cell.val=a,this.cell._clearCell=!1,this.setCValue(this.grid._grid_calendarA.getFormatedDate(this.grid._dtmask||"%d/%m/%Y",a).toString(),this.cell.val)):(!a||a.toString()._dhx_trim()==""?(a="&nbsp",this.cell._clearCell=!0,this.cell.val=""):(this.cell._clearCell=!1,this.cell.val=new Date(this.grid._grid_calendarA.setFormatedDate(this.grid._dtmask_inc||this.grid._dtmask||"%d/%m/%Y",a.toString(),null,!0)),this.grid._dtmask_inc&&
+(a=this.grid._grid_calendarA.getFormatedDate(this.grid._dtmask||"%d/%m/%Y",this.cell.val))),this.cell.val=="NaN"||this.cell.val=="Invalid Date"?(this.cell._clearCell=!0,this.cell.val=new Date,this.setCValue("&nbsp;",0)):this.setCValue((a||"").toString(),this.cell.val))};
+function eXcell_dhxCalendarA(a){if(a&&(this.cell=a,this.grid=this.cell.parentNode.grid,!this.grid._grid_calendarA)){var b=this.grid._grid_calendarA=new dhtmlxCalendarObject(!1,!1,{isYearEditable:!0});this.grid.callEvent("onDhxCalendarCreated",[b]);var c=this.grid;b.attachEvent("onClick",function(){this._last_operation_calendar=!0;window.setTimeout(function(){c.editStop()},1);return!0});var d=function(a){(a||event).cancelBubble=!0};dhtmlxEvent(b.base,"click",d)}}eXcell_dhxCalendarA.prototype=new eXcell;
+eXcell_dhxCalendarA.prototype.edit=function(){var a=this.grid.getPosition(this.cell);this.grid._grid_calendarA._show(!1,!1);this.grid._grid_calendarA.setPosition(a[0]*1+this.cell.offsetWidth,a[1]*1);this.grid.callEvent("onCalendarShow",[this.grid._grid_calendarA,this.cell.parentNode.idd,this.cell._cellIndex]);this.grid._grid_calendarA._last_operation_calendar=!1;this.cell._cediton=!0;this.val=this.cell.val;this._val=this.cell.innerHTML;var b=this.grid._grid_calendarA.draw;this.grid._grid_calendarA.draw=
+function(){};this.grid._grid_calendarA.setDateFormat(this.grid._dtmask||"%d/%m/%Y");this.grid._grid_calendarA.setDate(this.val);this.grid._grid_calendarA.draw=b;this.grid._grid_calendarA.draw();this.cell.atag=!this.grid.multiLine&&(_isKHTML||_isMacOS||_isFF)?"INPUT":"TEXTAREA";this.obj=document.createElement(this.cell.atag);this.obj.style.height=this.cell.offsetHeight-(_isIE?4:2)+"px";this.obj.className="dhx_combo_edit";this.obj.wrap="soft";this.obj.style.textAlign=this.cell.align;this.obj.onclick=
+function(a){(a||event).cancelBubble=!0};this.obj.onmousedown=function(a){(a||event).cancelBubble=!0};this.obj.value=this.getValue();this.cell.innerHTML="";this.cell.appendChild(this.obj);if(_isFF&&(this.obj.style.overflow="visible",this.grid.multiLine&&this.obj.offsetHeight>=18&&this.obj.offsetHeight<40))this.obj.style.height="36px",this.obj.style.overflow="scroll";this.obj.onselectstart=function(a){a||(a=event);return a.cancelBubble=!0};this.obj.focus();this.obj.focus()};
+eXcell_dhxCalendarA.prototype.getDate=function(){return this.cell.val?this.cell.val:null};eXcell_dhxCalendarA.prototype.getValue=function(){return this.cell._clearCell?"":this.grid._dtmask_inc&&this.cell.val?this.grid._grid_calendarA.getFormatedDate(this.grid._dtmask_inc,this.cell.val).toString():this.cell.innerHTML.toString()._dhx_trim()};
+eXcell_dhxCalendarA.prototype.detach=function(){if(this.grid._grid_calendarA&&(this.grid._grid_calendarA.hide(),this.cell._cediton)){this.cell._cediton=!1;if(this.grid._grid_calendarA._last_operation_calendar){this.grid._grid_calendarA._last_operation_calendar=!1;var a=this.grid._grid_calendarA.getFormatedDate(this.grid._dtmask||"%d/%m/%Y"),b=this.grid._grid_calendarA.getDate();this.cell.val=new Date(b);this.setCValue(a,b);this.cell._clearCell=!a;var c=this.val;this.val=this._val;return this.cell.val.valueOf()!=
+(c|0).valueOf()}this.setValue(this.obj.value);c=this.val;this.val=this._val;return this.cell.val.valueOf()!=(c||"").valueOf()}};
+eXcell_dhxCalendarA.prototype.setValue=function(a){typeof a=="object"?(this.cell.val=a,this.cell._clearCell=!1,this.setCValue(this.grid._grid_calendarA.getFormatedDate(this.grid._dtmask||"%d/%m/%Y",a).toString(),this.cell.val)):(!a||a.toString()._dhx_trim()==""?(a="&nbsp",this.cell._clearCell=!0,this.cell.val=""):(this.cell._clearCell=!1,this.cell.val=new Date(this.grid._grid_calendarA.setFormatedDate(this.grid._dtmask_inc||this.grid._dtmask||"%d/%m/%Y",a.toString(),null,!0)),this.grid._dtmask_inc&&
+(a=this.grid._grid_calendarA.getFormatedDate(this.grid._dtmask||"%d/%m/%Y",this.cell.val))),this.cell.val=="NaN"||this.cell.val=="Invalid Date"?(this.cell.val=new Date,this.cell._clearCell=!0,this.setCValue("&nbsp;",0)):this.setCValue((a||"").toString(),this.cell.val))};
+function eXcell_cntr(a){this.cell=a;this.grid=this.cell.parentNode.grid;if(!this.grid._ex_cntr_ready&&!this._realfake)this.grid._ex_cntr_ready=!0,this.grid._h2&&this.grid.attachEvent("onOpenEn",function(){this.resetCounter(a._cellIndex)}),this.grid.attachEvent("onBeforeSorting",function(){var b=this;window.setTimeout(function(){b._fake&&!b._realfake&&a._cellIndex<b._fake._cCount?b._fake.resetCounter(a._cellIndex):b.resetCounter(a._cellIndex)},1);return!0});this.edit=function(){};this.getValue=function(){return this.cell.innerHTML};
+this.setValue=function(){this.cell.style.paddingRight="2px";var a=this.cell;window.setTimeout(function(){if(a.parentNode){var c=a.parentNode.rowIndex;if(a.parentNode.grid.currentPage||c<0||a.parentNode.grid._srnd)c=a.parentNode.grid.rowsBuffer._dhx_find(a.parentNode)+1;if(!(c<=0))a.innerHTML=c,a.parentNode.grid._fake&&a._cellIndex<a.parentNode.grid._fake._cCount&&a.parentNode.grid._fake.rowsAr[a.parentNode.idd]&&a.parentNode.grid._fake.cells(a.parentNode.idd,a._cellIndex).setCValue(c),a=null}},100)}}
+dhtmlXGridObject.prototype.resetCounter=function(a){this._fake&&!this._realfake&&a<this._fake._cCount&&this._fake.resetCounter(a,this.currentPage);var b=a||0;this.currentPage&&(b=(this.currentPage-1)*this.rowsBufferOutSize);for(b=0;b<this.rowsBuffer.length;b++)if(this.rowsBuffer[b]&&this.rowsBuffer[b].tagName=="TR"&&this.rowsAr[this.rowsBuffer[b].idd])this.rowsAr[this.rowsBuffer[b].idd].childNodes[a].innerHTML=b+1};eXcell_cntr.prototype=new eXcell;
+function eXcell_link(a){this.cell=a;this.grid=this.cell.parentNode.grid;this.isDisabled=function(){return!0};this.edit=function(){};this.getValue=function(){return this.cell.firstChild.getAttribute?this.cell.firstChild.innerHTML+"^"+this.cell.firstChild.getAttribute("href"):""};this.setValue=function(a){if(typeof a!="number"&&(!a||a.toString()._dhx_trim()==""))return this.setCValue("&nbsp;",c),this.cell._clearCell=!0;var c=a.split("^");c.length==1?c[1]="":c.length>1&&(c[1]="href='"+c[1]+"'",c[1]+=
+c.length==3?" target='"+c[2]+"'":" target='_blank'");this.setCValue("<a "+c[1]+" onclick='(_isIE?event:arguments[0]).cancelBubble = true;'>"+c[0]+"</a>",c)}}eXcell_link.prototype=new eXcell;eXcell_link.prototype.getTitle=function(){var a=this.cell.firstChild;return a&&a.tagName?a.getAttribute("href"):""};eXcell_link.prototype.getContent=function(){var a=this.cell.firstChild;return a&&a.tagName?a.innerHTML:""};function dhtmlXLayoutPanel(){}
+function dhtmlXLayoutObject(a,b,c){if(window.dhtmlXContainer){var d=this;this._autodetectSkin=function(){var a=document.createElement("DIV");a.className="dhxlayout_skin_detect";document.body.childNodes.length>0?document.body.insertBefore(a,document.body.childNodes[0]):document.body.appendChild(a);var b=a.offsetWidth;document.body.removeChild(a);a=null;return b==199?"dhx_skyblue":b==299?"dhx_blue":b==399?"dhx_black":b==499?"dhx_web":"dhx_skyblue"};this.skin=c!=null?c:this._autodetectSkin();this.setSkin=
+function(a){if(this.skinParams[a]){this.skin=a;this._CPanelHeight=this.skinParams[this.skin].cpanel_height;this._collapsedW=this.skinParams[this.skin].cpanel_collapsed_width;this._collapsedH=this.skinParams[this.skin].cpanel_collapsed_height;this.tpl.className="dhtmlxLayoutPolyContainer_"+this.skin+(this._r?" dhxlayout_rtl":"");this.sizer.className="dhxLayout_Sizer_"+this.skin;this.dhxWins&&this.dhxWins.setSkin(this.skin);for(var b in this.polyObj)this.polyObj[b].skin=this.skin;this.base.skin=this.skin;
+this._fixIcons();this.setSizes()}};this._isIPad=navigator.userAgent.search(/iPad/gi)>=0;this._dblClickTM=200;this._mBottom=this._mTop=0;typeof a=="string"&&(a=document.getElementById(a));if((a._isWindow==!0||a._isCell)&&!this.base){if(a._isCell&&a.attachLayout)return a.attachLayout(b,c);if(a.isWindow)return a.attachLayout(b,c);this.base=a}if(a==document.body&&!this.base)document.body.style.overflow="hidden";if((typeof a=="object"||a==document.body)&&!this.base){var e=document.createElement("DIV");
+e.className="dhxcont_global_layout_area";a.appendChild(e);a._isLayout=!0;this.cont=new dhtmlXContainer(a);this.cont.setContent(e);if(a==document.body){if(this.skin=="dhx_skyblue"||this.skin=="dhx_blue")this.cont.obj._offsetTop=2,this.cont.obj._offsetLeft=2,this.cont.obj._offsetHeight=-4,this.cont.obj._offsetWidth=-4;if(this.skin=="dhx_web")this.cont.obj._offsetTop=9,this.cont.obj._offsetLeft=9,this.cont.obj._offsetHeight=-18,this.cont.obj._offsetWidth=-18;document.body.className+=" dhxlayout_fullscreened"}a.adjustContent(a,
+this._mTop,null,null,this._mBottom);this.base=document.createElement("DIV");this.base.style.overflow="hidden";this.base.style.position="absolute";this.base.style.left="0px";this.base.style.top="0px";this.base.style.width=e.childNodes[0].style.width;this.base.style.height=e.childNodes[0].style.height;e.childNodes[0].appendChild(this.base);if(a==document.body)this._lw=this._tmTime=null,this._doOnResizeStart=function(){window.clearTimeout(this._tmTime);this._tmTime=window.setTimeout(function(){d._doOnResizeEnd()},
+200)},this._doOnResizeEnd=function(){this.setSizes(!1)},_isIE?window.attachEvent("onresize",d._doOnResizeStart):window.addEventListener("resize",d._doOnResizeStart,!1)}this.items=[];this.cells=function(a){return this.polyObj[a]!=null?this.polyObj[a]:null};this.getIdByIndex=function(a){return a<0?null:a>=this.items.length?null:this.items[a]._idd};this.getIndexById=function(a){return this.cells(a)!=null?this.cells(a).getIndex():null};this.imagePath=dhtmlx.image_path||"codebase/imgs/";this.setImagePath=
+function(a){this.imagePath=a};this.polyObj={};this.sepHor=[];this.sepVer=[];this._layoutView=b!=null?String(b).toUpperCase():"3E";this._minHeight=this._minWidth=40;this._CPanelBtnsWidth=32;this.skinParams={dhx_black:{hor_sep_height:5,ver_sep_width:5,cpanel_height:34,cpanel_collapsed_width:18,cpanel_collapsed_height:18},dhx_blue:{hor_sep_height:5,ver_sep_width:5,cpanel_height:34,cpanel_collapsed_width:18,cpanel_collapsed_height:18},dhx_skyblue:{hor_sep_height:5,ver_sep_width:5,cpanel_height:26,cpanel_collapsed_width:18,
+cpanel_collapsed_height:18},dhx_web:{hor_sep_height:9,ver_sep_width:9,cpanel_height:27,cpanel_collapsed_width:18,cpanel_collapsed_height:18,cell_pading_max:1,cell_pading_min:0}};this._CPanelHeight=this.skinParams[this.skin].cpanel_height;this._collapsedW=this.skinParams[this.skin].cpanel_collapsed_width;this._collapsedH=this.skinParams[this.skin].cpanel_collapsed_height;this.tpl=document.createElement("TABLE");this.tpl.dir="ltr";this.tpl.className="dhtmlxLayoutPolyContainer_"+this.skin;this.tpl.cellSpacing=
+0;this.tpl.cellPadding=0;var f=document.createElement("TBODY");this.tpl.appendChild(f);this.tpl.border=0;this.tplSizes={};this._effects={collapse:!1,resize:!1,highlight:!0};this.sizer=document.createElement("DIV");this.sizer.className="dhxLayout_Sizer_"+this.skin;this.sizer.style.display="none";document.body.appendChild(this.sizer);this._attachSizer=function(a){d.sizer.style.left=getAbsoluteLeft(a)+"px";d.sizer.style.top=getAbsoluteTop(a)+"px";d.sizer.style.width=a.offsetWidth+"px";d.sizer.style.height=
+a.offsetHeight+"px";if(d._sizerML!=null)d.sizer.style.marginLeft=d._sizerML+"px";if(d._sizerMT!=null)d.sizer.style.marginTop=d._sizerMT+"px";d.sizer.style.display="";d.sizer.className="dhxLayout_Sizer_"+d.skin;a._dir!=null&&(d.sizer.className+=" "+(a._dir=="hor"?"dhxCursorNResize":"dhxCursorWResize"))};this.listViews=function(){var a=[],b;for(b in this.tplData)a[a.length]=b;return a};this._init=function(){this.obj=document.createElement("DIV");this.obj.className="dhtmlxLayoutObject";this.base.appendChild(this.obj);
+this.obj.appendChild(this.tpl);this.w=this.obj.offsetWidth;this.h=this.obj.offsetHeight;this._xmlLoader.loadXMLString(this.tplData[this._layoutView]!=null?this.tplData[this._layoutView]:this.tplData["3E"]);this._initWindows()};this._autoHor=[];this._autoVer=[];this._dimension=[320,200];this._colsRatio=this._rowsRatio=100;this._xmlParser=function(){for(var a=[],b=[],c={},e=this.getXMLTopNode("layout"),f=0;f<e.childNodes.length;f++){if(e.childNodes[f].tagName=="row"){var m=e.childNodes[f],l=document.createElement("TR");
+d.tpl.childNodes[0].appendChild(l);for(var n=0;n<m.childNodes.length;n++)if(m.childNodes[n].tagName=="cell"){var o=m.childNodes[n],p=document.createElement("TD");p._dir="null";if(o.getAttribute("obj")!=null){for(var r=o.getAttribute("obj"),q=String(o.getAttribute("wh")).split(","),s=isNaN(q[0]),y=isNaN(q[0])?parseInt(d.polyObj[q[0]].style.width):0,t=0;t<a.length;t++)for(var u=0;u<a[t].length;u++)if(a[t][u]==r){if(!s){for(var s=!0,w=d.base.offsetWidth-c[r][0]*d.skinParams[d.skin].ver_sep_width,B=0;B<
+a[t].length;B++)isNaN(a[t][B])||(w-=a[t][B],q[0]-=1);y=Math.ceil(w/q[0])}a[t][u]=y}p.style.width=y+"px";for(var s=isNaN(q[1]),v=isNaN(q[1])?parseInt(d.polyObj[q[1]].style.height):0,t=0;t<b.length;t++)for(u=0;u<b[t].length;u++)if(b[t][u]==r){if(!s){for(var s=!0,z=d.base.offsetHeight-c[r][1]*d.skinParams[d.skin].hor_sep_height,B=0;B<b.length;B++)isNaN(b[B][u])||(z-=b[B][u],q[1]-=1);v=Math.ceil(z/q[1])}b[t][u]=v}p.style.height=v+"px";p.className="dhtmlxLayoutSinglePoly";p.innerHTML="";p._minW=o.getAttribute("minWidth")!=
+null?Number(o.getAttribute("minWidth")):d._minWidth;p._minH=o.getAttribute("minHeight")!=null?Number(o.getAttribute("minHeight")):d._minHeight;p._initCPanel=o.getAttribute("cpanel")!=null?o.getAttribute("cpanel")=="false"?!1:!0:!0;p._resize=o.getAttribute("resize");for(var A=String(o.getAttribute("neighbors")).split(";"),x=0;x<A.length;x++){var C=String(A[x]).split(",");C.length>1&&(A[x]=C)}p._rowData=A;d.polyObj[r]=p}if(o.getAttribute("sep")!=null){var D=o.getAttribute("sep");if(D=="hor"){p.className=
+"dhtmlxLayoutPolySplitterHor";p._dir="hor";for(var F=o.getAttribute("top").split(";"),x=0;x<F.length;x++)C=String(F[x]).split(","),C.length>1&&(F[x]=C);p._top=F;for(var I=o.getAttribute("bottom").split(";"),x=0;x<I.length;x++)C=String(I[x]).split(","),C.length>1&&(I[x]=C);p._bottom=I;d.sepHor[d.sepHor.length]=p}else{p.className="dhtmlxLayoutPolySplitterVer";p._dir="ver";for(var J=o.getAttribute("left").split(";"),x=0;x<J.length;x++)C=String(J[x]).split(","),C.length>1&&(J[x]=C);p._left=J;for(var K=
+o.getAttribute("right").split(";"),x=0;x<K.length;x++)C=String(K[x]).split(","),C.length>1&&(K[x]=C);p._right=K;d.sepVer[d.sepVer.length]=p}p._dblClick=o.getAttribute("dblclick");p._isSep=!0;p.innerHTML='<div style="height:2px;overflow:hidden;">&nbsp;</div>'}if(o.getAttribute("colspan")!=null)p.colSpan=o.getAttribute("colspan");if(o.getAttribute("rowspan")!=null)p.rowSpan=o.getAttribute("rowspan");l.appendChild(p)}}if(e.childNodes[f].tagName=="autosize")d._autoHor=e.childNodes[f].getAttribute("hor").split(";"),
+d._autoVer=e.childNodes[f].getAttribute("ver").split(";"),d._totalCols=e.childNodes[f].getAttribute("cols"),d._totalRows=e.childNodes[f].getAttribute("rows"),d._dimension[0]=d._totalCols*d._colsRatio,d._dimension[1]=d._totalRows*d._rowsRatio;if(e.childNodes[f].tagName=="table"){for(var M=e.childNodes[f].getAttribute("data"),B=String(M).split(";"),t=0;t<B.length;t++){a[t]=[];b[t]=[];for(var G=String(B[t]).split(","),u=0;u<G.length;u++)a[t][u]=G[u],b[t][u]=G[u],c[G[u]]==null&&(c[G[u]]=[0,0])}for(var H in c){s=
+!1;for(t=0;t<a.length;t++)for(u=0;u<a[t].length;u++)if(a[t][u]==H&&!s){for(var s=!0,E=0;E<a[t].length;E++)a[t][E]!=H&&c[H][0]++;for(E=0;E<a.length;E++)a[E][u]!=H&&c[H][1]++}}}}b=a=null;d._buildSurface();this.destructor()};this._xmlLoader=new dtmlXMLLoaderObject(this._xmlParser,window);this.listAutoSizes=function(){var a=this._availAutoSize[this._layoutView+"_hor"],b=this._availAutoSize[this._layoutView+"_ver"],c=this._autoHor.join(";"),d=this._autoVer.join(";");return[c,d,a,b]};this.setAutoSize=function(a,
+b){if(a!=null){for(var c=!1,d=this._availAutoSize[this._layoutView+"_hor"],e=0;e<d.length;e++)c=c||d[e]==a;if(c==!0)this._autoHor=a.split(";")}if(b!=null){c=!1;d=this._availAutoSize[this._layoutView+"_ver"];for(e=0;e<d.length;e++)c=c||d[e]==b;if(c==!0)this._autoVer=b.split(";")}};this._buildSurface=function(){for(var a=0;a<this.tpl.childNodes[0].childNodes.length;a++)for(var b=this.tpl.childNodes[0].childNodes[a],c=0;c<b.childNodes.length;c++){var d=b.childNodes[c],e=this;if(!d._isSep)d._isCell=!0,
+d.skin=this.skin,d.getId=function(){return this._idd},d.getIndex=function(){return this._ind},d.showHeader=function(){e.showPanel(this._idd)},d.hideHeader=function(){e.hidePanel(this._idd)},d.isHeaderVisible=function(){return e.isPanelVisible(this._idd)},d.setText=function(a){e.setText(this._idd,a)},d.getText=function(){return e.getText(this._idd)},d.expand=function(){e._isCollapsed(this._idd)&&e._expand(this._idd,"hide")},d.collapse=function(){e._isCollapsed(this._idd)||e._collapse(this._idd,"hide")},
+d.isCollapsed=function(){return e._isCollapsed(this._idd)},d.dock=function(){e._isCollapsed(this._idd)&&(e._expand(this._idd,"dock"),e.dockWindow(this._idd))},d.undock=function(){e._isCollapsed(this._idd)||(e.unDockWindow(this._idd),e._collapse(this._idd,"dock"))},d.setWidth=function(a){Number(a)&&e._setWidth(this._idd,a)},d.getWidth=function(){return parseInt(this.style.width)},d.setHeight=function(a){Number(a)&&e._setHeight(this._idd,a)},d.getHeight=function(){return parseInt(this.style.height)},
+d.fixSize=function(a,b){e._fixSize(this._idd,a,b)},d.progressOn=function(){e._progressControl(this._idd,!0)},d.progressOff=function(){e._progressControl(this._idd,!1)},d._doOnAttachMenu=function(){this.adjustContent(this.childNodes[0],this._noHeader?0:e.skinParams[e.skin].cpanel_height);this.updateNestedObjects()},d._doOnAttachToolbar=function(){this.adjustContent(this.childNodes[0],this._noHeader?0:e.skinParams[e.skin].cpanel_height);this.updateNestedObjects()},d._doOnAttachStatusBar=function(){this.adjustContent(this.childNodes[0],
+this._noHeader?0:e.skinParams[e.skin].cpanel_height);this.updateNestedObjects()},d._doOnFrameContentLoaded=function(){e.callEvent("onContentLoaded",[this._idd])},d._doOnResize=function(){this.adjustContent(this.childNodes[0],this._noHeader?0:e.skinParams[e.skin].cpanel_height);this.updateNestedObjects()},d._redraw=function(){},d.showArrow=function(){this.childNodes[0].childNodes[0].childNodes[4].style.display=""},d.hideArrow=function(){this.childNodes[0].childNodes[0].childNodes[4].style.display=
+"none"},d.isArrowVisible=function(){return this.childNodes[0].childNodes[0].childNodes[4].style.display!="none"};if(d._dir=="ver")d.onselectstart=function(a){a=a||event;a.returnValue=!1},d[this._isIPad?"ontouchstart":"onmousedown"]=function(a){a=a||event;if(this._lastClick){var b=this._lastClick;this._lastClick=(new Date).getTime();if(b+e._dblClickTM>=this._lastClick&&e._doOnDoubleClick(this)===!0)return}else this._lastClick=(new Date).getTime();var c=e._findDockCellsVer(this);e._resAreaData=[];if(c[0]!=
+null&&c[1]!=null){String(document.body.className).search("dhxCursorWResize")==-1&&(document.body.className+=" dhxCursorWResize");e._resObj=this;e._anyExpL=c[0];e._anyExpR=c[1];e._collectResAreaData(c);e._resX=e._isIPad?a.touches[0].clientX:a.clientX;if(e._effects.resize==!1){e._attachSizer(this);e.sizer._leftXStart=parseInt(e.sizer.style.left);var d=e.polyObj[e._anyExpL[0]];e._resXMaxWidthLeft=parseInt(d.style.width)-e._minWidth;var g=e.polyObj[e._anyExpR[0]];e._resXMaxWidthRight=parseInt(g.style.width)-
+e._minWidth;if(e._alterSizes.length>0)for(var h=0;h<e._alterSizes.length;h++){for(var f=0;f<e._anyExpL.length;f++)if(e._alterSizes[h][0]==e._anyExpL[f]){var i=e._resXMaxWidthLeft=parseInt(d.style.width)-e._alterSizes[h][1];if(i<e._resXMaxWidthLeft)e._resXMaxWidthLeft=i}for(f=0;f<e._anyExpR.length;f++)if(e._alterSizes[h][0]==e._anyExpR[f]&&(i=parseInt(g.style.width)-e._alterSizes[h][1],i<e._resXMaxWidthRight))e._resXMaxWidthRight=i}e._resXStart=e._resX}e._resFunc=e._resizeVer;e._showCovers();e._isIPad&&
+a.preventDefault()}},d.onmouseup=function(){if(e._effects.resize==!0)e._resizeStop(),e._anyExpL=null,e._anyExpR=null};if(d._dir=="hor")d.onselectstart=function(a){a=a||event;a.returnValue=!1},d[this._isIPad?"ontouchstart":"onmousedown"]=function(a){a=a||event;if(this._lastClick){var b=this._lastClick;this._lastClick=(new Date).getTime();if(b+e._dblClickTM>=this._lastClick&&e._doOnDoubleClick(this)===!0)return}else this._lastClick=(new Date).getTime();var c=e._findDockCellsHor(this);e._resAreaData=
+[];if(c[0]!=null&&c[1]!=null){String(document.body.className).search("dhxCursorNResize")==-1&&(document.body.className+=" dhxCursorNResize");e._resObj=this;e._anyExpT=c[0];e._anyExpB=c[1];e._collectResAreaData(c);e._resY=e._isIPad?a.touches[0].clientY:a.clientY;if(e._effects.resize==!1){e._attachSizer(this);e.sizer._topYStart=parseInt(e.sizer.style.top);var d=e.polyObj[e._anyExpT[0]];e._resYMaxHeightTop=parseInt(d.style.height)-e._minHeight;var g=e.polyObj[e._anyExpB[0]];e._resYMaxHeightBottom=parseInt(g.style.height)-
+e._minHeight;if(e._alterSizes.length>0)for(var h=0;h<e._alterSizes.length;h++){for(var f=0;f<e._anyExpT.length;f++)if(e._alterSizes[h][0]==e._anyExpT[f]){var i=parseInt(d.style.height)-e._alterSizes[h][2]-(d.childNodes[0].style.display!="none"?e.skinParams[e.skin].cpanel_height:0);if(i<e._resYMaxHeightTop)e._resYMaxHeightTop=i}for(f=0;f<e._anyExpB.length;f++)if(e._alterSizes[h][0]==e._anyExpB[f]&&(i=parseInt(g.style.height)-e._alterSizes[h][2]-(g.childNodes[0].style.display!="none"?e.skinParams[e.skin].cpanel_height:
+0),i<e._resYMaxHeightBottom))e._resYMaxHeightBottom=i}e._resYStart=e._resY}e._resFunc=e._resizeHor;e._showCovers();e._isIPad&&a.preventDefault()}},d.onmouseup=function(){if(e._effects.resize==!0)e._resizeStop(),e._anyExpT=null,e._anyExpB=null}}for(var f in this.polyObj){this.polyObj[f]._collapsed=!1;this.polyObj[f]._idd=f;this.polyObj[f]._ind=this.items.length;this.items[this.items.length]=this.polyObj[f];var l=document.createElement("DIV");l.style.position="relative";l.style.left="0px";l.style.top=
+"0px";l.style.width=this.polyObj[f].style.width;l.style.height=this.polyObj[f].style.height;l.style.overflow="hidden";this.polyObj[f].appendChild(l);var n=document.createElement("DIV");n._dockCell=f;n._resize=this.polyObj[f]._resize;n.className="dhtmlxPolyInfoBar";n.innerHTML="<div class='dhtmlxInfoBarLabel'>"+f+"</div><div class='dhtmlxInfoBarButtonsFake'><div class='dhtmlxInfoBarButtonsFake2'></div></div><div class='dhtmlxInfoButtonDock' title='"+this.i18n.dock+"'></div><div class='dhtmlxInfoButtonUnDock' style='display: none;' title='"+
+this.i18n.undock+"'></div><div class='dhtmlxInfoButtonShowHide_"+n._resize+"' title='"+this.i18n.collapse+"'></div><div class='dhtmlxLineL'></div><div class='dhtmlxLineR'></div>";this.polyObj[f]._initCPanel==!0?(n._h=this._CPanelHeight,n.style.display=""):(n._h=0,n.style.display="none");this.polyObj[f].childNodes[0].appendChild(n);n.ondblclick=function(){e.callEvent("onDblClick",[this._dockCell])};n.childNodes[4].onclick=function(){var a=this.parentNode._dockCell;e._isCollapsed(a)?e._expand(a,"hide"):
+e._collapse(a,"hide")};for(a=0;a<n.childNodes.length;a++)n.childNodes[a].onselectstart=function(a){a=a||event;a.returnValue=!1};var o=document.createElement("DIV");o.className="dhxcont_global_content_area";this.polyObj[f].childNodes[0].appendChild(o);var p=new dhtmlXContainer(this.polyObj[f]);p.setContent(o);this.skin=="dhx_web"&&this.polyObj[f]._setPadding(this.skinParams[this.skin].cell_pading_max,"dhxcont_layout_dhx_web");this.polyObj[f].adjustContent(this.polyObj[f].childNodes[0],this.skinParams[this.skin].cpanel_height)}this._fixIcons()};
+this._anyExpB=this._anyExpT=this._anyExpR=this._anyExpL=this._resFunc=this._resObj=this._resY=this._resX=null;this._expand=function(a,b){this._doExpand(this.polyObj[a]._resize,a,this.polyObj[a]._rowData,b)};this._collapse=function(a,b){if(!this._isCollapsed(a))this.polyObj[a]._savedW=parseInt(this.polyObj[a].style.width),this.polyObj[a]._savedH=parseInt(this.polyObj[a].style.height),this._doCollapse(this.polyObj[a]._resize,a,this.polyObj[a]._rowData,b)};this._isCollapsed=function(a){return this.polyObj[a]._collapsed};
+this._checkAlterMinSize=function(a){this._alterSizes=[];for(var b=0;b<a.length;b++)for(var c=0;c<a[b].length;c++)if(this.polyObj[a[b][c]].vs[this.polyObj[a[b][c]].av].layout!=null){var d=this.polyObj[a[b][c]].vs[this.polyObj[a[b][c]].av].layout._defineWindowMinDimension(this.polyObj[a[b][c]],!0);d[0]=a[b][c];this._alterSizes[this._alterSizes.length]=d}};this._findDockCellsVer=function(a){var b=[null,null];if(a==null)return b;for(var c=null,d=a._left.length-1;d>=0;d--)if(c==null)if(typeof a._left[d]==
+"object"){for(var e=!1,f=0;f<a._left[d].length;f++)e=e||this.polyObj[a._left[d][f]]._isBlockedWidth||!1;e||(c=a._left[d])}else this.polyObj[a._left[d]]._collapsed==!1&&(this.polyObj[a._left[d]]._isBlockedWidth||(c=a._left[d]));for(var l=null,d=0;d<a._right.length;d++)if(l==null)if(typeof a._right[d]=="object"){e=!1;for(f=0;f<a._right[d].length;f++)e=e||this.polyObj[a._right[d][f]]._isBlockedWidth||!1;e||(l=a._right[d])}else this.polyObj[a._right[d]]._collapsed==!1&&(this.polyObj[a._right[d]]._isBlockedWidth||
+(l=a._right[d]));if(c==null||l==null)return b;typeof c=="string"&&(c=Array(c));typeof l=="string"&&(l=Array(l));b[0]=c;b[1]=l;this._checkAlterMinSize(b);this._minWRAlter=this._minWLAlter=0;if(this._alterSizes.length>0&&this._effects.resize==!0){for(var n=[],o=[],d=0;d<c.length;d++)n[d]=this.polyObj[c[d]];for(d=0;d<l.length;d++)o[d]=this.polyObj[l[d]];for(d=0;d<n.length;d++)for(f=0;f<this._alterSizes.length;f++)if(this._alterSizes[f][0]==n[d]._idd&&this._minWLAlter<this._alterSizes[f][1])this._minWLAlter=
+this._alterSizes[f][1];for(d=0;d<o.length;d++)for(f=0;f<this._alterSizes.length;f++)if(this._alterSizes[f][0]==o[d]._idd&&this._maxWRAlter<this._alterSizes[f][1])this._minWRAlter=this._alterSizes[f][1]}return b};this._findDockCellsHor=function(a){var b=[null,null];if(a==null)return b;for(var c=null,d=a._top.length-1;d>=0;d--)if(c==null)if(typeof a._top[d]=="object"){for(var e=!1,f=0;f<a._top[d].length;f++)e=e||this.polyObj[a._top[d][f]]._isBlockedHeight||!1;e||(c=a._top[d])}else this.polyObj[a._top[d]]._collapsed==
+!1&&(this.polyObj[a._top[d]]._isBlockedHeight||(c=a._top[d]));for(var l=null,d=0;d<a._bottom.length;d++)if(l==null)if(typeof a._bottom[d]=="object"){e=!1;for(f=0;f<a._bottom[d].length;f++)e=e||this.polyObj[a._bottom[d][f]]._isBlockedHeight||!1;e||(l=a._bottom[d])}else this.polyObj[a._bottom[d]]._collapsed==!1&&(this.polyObj[a._bottom[d]]._isBlockedHeight||(l=a._bottom[d]));if(c==null||l==null)return b;typeof c=="string"&&(c=Array(c));typeof l=="string"&&(l=Array(l));b[0]=c;b[1]=l;this._checkAlterMinSize(b);
+this._minHBAlter=this._minHTAlter=0;if(this._alterSizes.length>0&&this._effects.resize==!0){for(var n=[],o=[],d=0;d<c.length;d++)n[d]=this.polyObj[c[d]];for(d=0;d<l.length;d++)o[d]=this.polyObj[l[d]];for(d=0;d<n.length;d++)for(f=0;f<this._alterSizes.length;f++)if(this._alterSizes[f][0]==n[d]._idd&&this._minHTAlter<this._alterSizes[f][2])this._minHTAlter=this._alterSizes[f][2];for(d=0;d<o.length;d++)for(f=0;f<this._alterSizes.length;f++)if(this._alterSizes[f][0]==o[d]._idd&&this._minHBAlter<this._alterSizes[f][2])this._minHBAlter=
+this._alterSizes[f][2]}return b};this._resizeVer=function(a){this._isIPad&&a.preventDefault();if(!(this._resObj==null||this._anyExpL==null||this._anyExpR==null)){var b=this._isIPad?a.touches[0].clientX:a.clientX;if(this._effects.resize==!1){this._resX=b;var c=b-this._resXStart;if(-c>this._resXMaxWidthLeft&&c<0)c=-this._resXMaxWidthLeft,this._resX=c+this._resXStart;if(c>this._resXMaxWidthRight&&c>0)c=this._resXMaxWidthRight,this._resX=c+this._resXStart;this.sizer.style.left=this.sizer._leftXStart+
+c+"px"}else{for(var e=this._anyExpL,f=this._anyExpR,m=b,c=b-d._resX,l=[],n=[],o=0;o<e.length;o++)l[o]=this.polyObj[e[o]];for(o=0;o<f.length;o++)n[o]=this.polyObj[f[o]];var p=parseInt(l[0].style.width),r=parseInt(n[0].style.width);if(c<0){var q=p+c;if(q>l[0]._minW&&q>this._minWLAlter){for(var s=r+p-q,o=0;o<l.length;o++)this._setW(l[o],q);for(o=0;o<n.length;o++)this._setW(n[o],s);this._resX=m}}else if(c>0&&(s=r-c,s>n[0]._minW&&s>this._minWRAlter)){q=p+r-s;for(o=0;o<l.length;o++)this._setW(l[o],q);for(o=
+0;o<n.length;o++)this._setW(n[o],s);this._resX=m}}}};this._resizeHor=function(a){if(!(this._resObj==null||this._anyExpT==null||this._anyExpB==null)){var b=this._isIPad?a.touches[0].clientY:a.clientY;if(this._effects.resize==!1){this._resY=b;var c=b-this._resYStart;if(-c>this._resYMaxHeightTop&&c<0)c=-this._resYMaxHeightTop,this._resY=c+this._resYStart;if(c>this._resYMaxHeightBottom&&c>0)c=this._resYMaxHeightBottom,this._resY=c+this._resYStart;this.sizer.style.top=this.sizer._topYStart+c+"px"}else{for(var e=
+this._anyExpT,f=this._anyExpB,m=b,c=b-d._resY,l=[],n=[],o=0;o<e.length;o++)l[o]=this.polyObj[e[o]];for(o=0;o<f.length;o++)n[o]=this.polyObj[f[o]];var p=parseInt(l[0].style.height),r=parseInt(n[0].style.height);if(c<0){var q=p+c;if(q>l[0]._minH+this._minHTAlter){for(var s=r+p-q,o=0;o<l.length;o++)this._setH(l[o],q);for(o=0;o<n.length;o++)this._setH(n[o],s);this._resY=m}}else if(c>0&&(s=r-c,s>n[0]._minH+this._minHBAlter)){q=p+r-s;for(o=0;o<l.length;o++)this._setH(l[o],q);for(o=0;o<n.length;o++)this._setH(n[o],
+s);this._resY=m}}}};this._resizeStop=function(){var a=document.body.className;if(a.search("dhxCursorWResize")!==-1||a.search("dhxCursorNResize")!==-1)document.body.className=String(document.body.className).replace(/dhxCursorWResize/g,"").replace(/dhxCursorNResize/g,"");if(this._resObj!=null)if(this._effects.resize==!1){this.sizer.style.display="none";if(this._resObj._dir=="hor"){var b=typeof this._anyExpT[0]=="object"?this._anyExpT[0][0]:this._anyExpT[0],c=this._resY-this._resYStart,d=parseInt(this.polyObj[b].style.height)+
+c;this._setHeight(b,d)}else{var e=typeof this._anyExpL[0]=="object"?this._anyExpL[0][0]:this._anyExpL[0],f=this._resX-this._resXStart,l=parseInt(this.polyObj[e].style.width)+f;this._setWidth(e,l)}var n={},o=function(a){for(var b in a)typeof a[b]=="object"&&o(a[b]),n[a[b]]=!0};o(this._anyExpT);o(this._anyExpB);o(this._anyExpL);o(this._anyExpR);var p=[],r;for(r in n)p[p.length]=r;if(typeof this._anyExpT=="object"&&this._anyExpT!=null)this.updateNestedObjectsArray(this._anyExpT),this._anyExpT=null;if(typeof this._anyExpB==
+"object"&&this._anyExpB!=null)this.updateNestedObjectsArray(this._anyExpB),this._anyExpB=null;if(typeof this._anyExpL=="object"&&this._anyExpL!=null)this.updateNestedObjectsArray(this._anyExpL),this._anyExpL=null;if(typeof this._anyExpR=="object"&&this._anyExpR!=null)this.updateNestedObjectsArray(this._anyExpR),this._anyExpR=null;this._resFunc=this._resObj=null;this._hideCovers();this.callEvent("onPanelResizeFinish",[p])}else{var q=[];if(this._resObj._left!=null)for(var s=0;s<this._resObj._left.length;s++)q[q.length]=
+this._resObj._left[s];if(this._resObj._right!=null)for(s=0;s<this._resObj._right.length;s++)q[q.length]=this._resObj._right[s];if(this._resObj._top!=null)for(s=0;s<this._resObj._top.length;s++)q[q.length]=this._resObj._top[s];if(this._resObj._bottom!=null)for(s=0;s<this._resObj._bottom.length;s++)q[q.length]=this._resObj._bottom[s];this._resObj=this._resFunc=null;this._hideCovers();for(var y=[],s=0;s<q.length;s++)if(typeof q[s]=="object")for(var t=0;t<q[s].length;t++)y[y.length]=this.polyObj[q[s][t]];
+else y[y.length]=this.polyObj[q[s]];for(s=0;s<y.length;s++)y[s].updateNestedObjects();this.callEvent("onPanelResizeFinish",[])}};this._showCovers=function(){for(var a in this.polyObj)this._effects.highlight&&this._isResizable(a)&&this.polyObj[a].showCoverBlocker()};this._hideCovers=function(){for(var a in this.polyObj)this.polyObj[a].hideCoverBlocker()};this._isResizable=function(a){for(var b=!1,c=0;c<this._resAreaData.length;c++)b=b||this._resAreaData[c]==a;return b};this._collectResAreaData=function(a){for(var b=
+0;b<a.length;b++)typeof a[b]=="string"?this._resAreaData[this._resAreaData.length]=a[b]:typeof a[b]=="object"&&this._collectResAreaData(a[b])};this._doOnDoubleClick=function(a){if(a._dblClick!=null&&this.polyObj[a._dblClick]!=null&&!this.polyObj[a._dblClick]._noHeader){var b=this.polyObj[a._dblClick];if(b.childNodes[0].style.display!="none")return b._collapsed==!0?this._doExpand(b._resize,a._dblClick,b._rowData,"hide"):(b._savedW=parseInt(b.style.width),b._savedH=parseInt(b.style.height),this._doCollapse(b._resize,
+a._dblClick,b._rowData,"hide")),!0}};this._doOnSelectStart=function(a){a=a||event;if(d._resObj!=null)a.returnValue=!1};this._doOnMouseMove=function(a){a=a||event;d._resObj!=null&&d._resFunc!=null&&d._resFunc(a)};this._doOnMouseUp=function(){d._resizeStop()};this._isIPad?(document.addEventListener("touchmove",d._doOnMouseMove,!1),document.addEventListener("touchend",d._doOnMouseUp,!1)):_isIE?(document.body.attachEvent("onselectstart",d._doOnSelectStart),document.body.attachEvent("onmousemove",d._doOnMouseMove),
+document.body.attachEvent("onmouseup",d._doOnMouseUp)):(document.body.addEventListener("mousemove",d._doOnMouseMove,!1),document.body.addEventListener("mouseup",d._doOnMouseUp,!1));this._doExpand=function(a,b,c,d){if(!(c.length<=1)){for(var e=-1,f=0;f<c.length;f++)c[f]==b&&(e=f);if(e!=-1){for(var l=null,f=e+1;f<c.length;f++)l==null&&(typeof c[f]=="string"?this.polyObj[c[f]]._collapsed==!1&&(l=c[f]):l=c[f]);if(l==null)for(f=e-1;f>=0;f--)l==null&&(typeof c[f]=="string"?this.polyObj[c[f]]._collapsed==
+!1&&(l=c[f]):l=c[f]);if(l!=null){typeof l!="object"&&(l=Array(l));if(a=="hor"){for(var n=65536,f=0;f<l.length;f++){var o=this.polyObj[l[f]].vs[this.polyObj[l[f]].av].layout!=null?this.polyObj[l[f]].vs[this.polyObj[l[f]].av].layout._defineWindowMinDimension(this.polyObj[l[f]],!0):[0,0],p=parseInt(this.polyObj[l[f]].style.width)-this._minWidth-o[1];p<n&&(n=p)}var r=this.polyObj[b]._savedW;r>n&&(r=n);if(r<this._minWidth)return;var q=Math.round(r/3)}else{n=65536;for(f=0;f<l.length;f++)o=this.polyObj[l[f]].vs[this.polyObj[l[f]].av].layout!=
+null?this.polyObj[l[f]].vs[this.polyObj[l[f]].av].layout._defineWindowMinDimension(this.polyObj[l[f]],!0):[0,0,0],p=parseInt(this.polyObj[l[f]].style.height)-this._minHeight-o[2],p<n&&(n=p);r=this.polyObj[b]._savedH;r>n&&(r=n);if(r<this._minHeight)return;q=Math.round(r/3)}this.polyObj[b].childNodes[0].childNodes[1].style.display="";this.polyObj[b].childNodes[0].childNodes[0].className="dhtmlxPolyInfoBar";this.polyObj[b].childNodes[0].childNodes[0].childNodes[1].style.display="";this.polyObj[b].childNodes[0].childNodes[0].childNodes[2].style.display=
+"";this.polyObj[b].childNodes[0].childNodes[0].childNodes[4].style.display="";for(var s=[],f=0;f<l.length;f++)s[f]=this.polyObj[l[f]];if(this.polyObj[b].className=="dhtmlxLayoutSinglePolyTabbarCollapsed")this.polyObj[b].className="dhtmlxLayoutSinglePolyTabbar";this._expandEffect(this.polyObj[b],s,r,d,this._effects.collapse==!0?q:1E6,a)}}}};this._doCollapse=function(a,b,c,d){if(!(c.length<=1)){for(var e=-1,f=0;f<c.length;f++)c[f]==b&&(e=f);if(e!=-1){for(var l=null,f=e+1;f<c.length;f++)l==null&&(typeof c[f]==
+"string"?this.polyObj[c[f]]._collapsed==!1&&(l=c[f]):l=c[f]);if(l==null)for(f=e-1;f>=0;f--)l==null&&(typeof c[f]=="string"?this.polyObj[c[f]]._collapsed==!1&&(l=c[f]):l=c[f]);l==null&&c[e+1]!=null&&(l=c[e+1]);l==null&&e-1>=0&&c[e-1]!=null&&(l=c[e-1]);if(l!=null){if(typeof l!="object"){if(this.polyObj[l]._collapsed==!0){this.polyObj[l].childNodes[0].childNodes[1].style.display="";this.polyObj[l]._collapsed=!1;this.polyObj[l].childNodes[0].childNodes[0].className="dhtmlxPolyInfoBar";this.polyObj[l].childNodes[0].childNodes[0].childNodes[1].style.display=
+"";this.polyObj[l].childNodes[0].childNodes[0].childNodes[4].title=this.i18n.collapse;this.polyObj[l].childNodes[0].childNodes[0].childNodes[2].style.display="";this.polyObj[l].childNodes[0].childNodes[0].childNodes[3].style.display="none";this.polyObj[l].childNodes[0].childNodes[0].childNodes[4].style.display="";this.polyObj[l]._isUnDocked===!0&&this.dockWindow(l);if(this.polyObj[l].className=="dhtmlxLayoutSinglePolyTabbarCollapsed")this.polyObj[l].className="dhtmlxLayoutSinglePolyTabbar";this._fixSplitters();
+this._fixIcons();this.polyObj[l].removeAttribute("title");this.callEvent("onExpand",[l])}l=Array(l)}for(var n=[],f=0;f<l.length;f++)n[f]=this.polyObj[l[f]];var o=a=="hor"?Math.round(Math.max(this.polyObj[b].offsetWidth,this.polyObj[l[0]].offsetWidth)/3):Math.round(Math.max(this.polyObj[b].offsetHeight,this.polyObj[l[0]].offsetHeight)/3);this.polyObj[b].childNodes[0].childNodes[1].style.display="none";this._collapseEffect(this.polyObj[b],n,d,this._effects.collapse==!0?o:1E6,a)}}}};this.setEffect=function(a,
+b){this._effects[a]!=null&&typeof b=="boolean"&&(this._effects[a]=b)};this.getEffect=function(a){return this._effects[a]!=null?this._effects[a]:null};this._expandEffect=function(a,b,c,e,f,m){if(m=="hor")var l=parseInt(a.style.width),n=parseInt(b[0].style.width);else l=parseInt(a.style.height),n=parseInt(b[0].style.height);var o=l+f;o>c&&(o=c);m=="hor"?(a.style.width=o+"px",a.childNodes[0].style.width=a.style.width):(a.style.height=o+"px",a.childNodes[0].style.height=a.style.height);a.adjustContent(a.childNodes[0],
+a._noHeader?0:this.skinParams[this.skin].cpanel_height);for(var p=0;p<b.length;p++)m=="hor"?(b[p].style.width=n+l-o+"px",b[p].childNodes[0].style.width=b[p].style.width):(b[p].style.height=n+l-o+"px",b[p].childNodes[0].style.height=b[p].style.height),b[p].adjustContent(b[p].childNodes[0],b[p]._noHeader?0:this.skinParams[this.skin].cpanel_height);if(o!=c)window.setTimeout(function(){d._expandEffect(a,b,c,e,f,m)},4);else{a._collapsed=!1;for(p=0;p<b.length;p++)b[p].updateNestedObjects();this.polyObj[a._idd].updateNestedObjects();
+this.polyObj[a._idd].childNodes[0].childNodes[0].childNodes[4].title=this.i18n.collapse;this._fixSplitters();this._fixIcons();a.removeAttribute("title");this.callEvent("onExpand",[a._idd])}};this._collapseEffect=function(a,b,c,e,f){if(f=="hor")var m=parseInt(a.style.width),l=parseInt(b[0].style.width);else m=parseInt(a.style.height),l=parseInt(b[0].style.height);var n=m-e;if(f=="hor"){if(n<this._collapsedW)n=this._collapsedW;a.style.width=n+"px";a.childNodes[0].style.width=a.style.width}else{if(n<
+this._collapsedH)n=this._collapsedH;a.style.height=n+"px";a.childNodes[0].style.height=a.style.height}for(var o=0;o<b.length;o++)f=="hor"?(b[o].style.width=l+(m-n)+"px",b[o].childNodes[0].style.width=b[o].style.width):(b[o].style.height=l+(m-n)+"px",b[o].childNodes[0].style.height=b[o].style.height),b[o].adjustContent(b[o].childNodes[0],b[o]._noHeader?0:this.skinParams[this.skin].cpanel_height);if(n>this._collapsedW&&f=="hor"||n>this._collapsedH&&f=="ver")window.setTimeout(function(){d._collapseEffect(a,
+b,c,e,f)},4);else{for(o=0;o<b.length;o++)f=="hor"?(b[o].style.width=l+(m-n)+"px",b[o].childNodes[0].style.width=b[o].style.width):(b[o].style.height=l+(m-n)+"px",b[o].childNodes[0].style.height=b[o].style.height),b[o].adjustContent(b[o].childNodes[0],b[o]._noHeader?0:this.skinParams[this.skin].cpanel_height);a._collapsed=!0;a.childNodes[0].childNodes[0].className=f=="hor"?"dhtmlxPolyInfoBarCollapsedVer":"dhtmlxPolyInfoBarCollapsedHor";for(o=0;o<b.length;o++)b[o].updateNestedObjects();c=="hide"?(a.childNodes[0].childNodes[0].childNodes[1].style.display=
+"",a.childNodes[0].childNodes[0].childNodes[2].style.display="none",a.childNodes[0].childNodes[0].childNodes[3].style.display="none",a.childNodes[0].childNodes[0].childNodes[4].style.display=""):(a.childNodes[0].childNodes[0].childNodes[1].style.display="",a.childNodes[0].childNodes[0].childNodes[2].style.display="",a.childNodes[0].childNodes[0].childNodes[3].style.display="none",a.childNodes[0].childNodes[0].childNodes[4].style.display="none");if(a.className=="dhtmlxLayoutSinglePolyTabbar")a.className=
+"dhtmlxLayoutSinglePolyTabbarCollapsed";this.polyObj[a._idd].childNodes[0].childNodes[0].childNodes[4].title=this.i18n.expand;this._fixSplitters();this._fixIcons();a.title=this.getTextTooltip(a._idd);this.callEvent("onCollapse",[a._idd])}};this._setW=function(a,b){a.style.width=b+"px";a.childNodes[0].style.width=a.style.width;a.adjustContent(a.childNodes[0],a._noHeader?0:this.skinParams[this.skin].cpanel_height)};this._setH=function(a,b){a.style.height=b+"px";a.childNodes[0].style.height=a.style.height;
+a.adjustContent(a.childNodes[0],a._noHeader?0:this.skinParams[this.skin].cpanel_height)};this._setWidth=function(a,b){if(this.polyObj[a]!=null&&Number(b)){for(var c=null,d=0;d<this.sepVer.length;d++){var e=this.sepVer[d]._left;if(e[e.length-1]==a)c=[this.sepVer[d],"left"];else if(typeof e[e.length-1]=="object")for(var f=e[e.length-1],l=0;l<f.length;l++)f[l]==a&&(c=[this.sepVer[d],"left"]);e=this.sepVer[d]._right;if(e[0]==a)c=[this.sepVer[d],"right"];else if(typeof e[0]=="object"){f=e[0];for(l=0;l<
+f.length;l++)f[l]==a&&(c=[this.sepVer[d],"right"])}}if(c!=null){var n=this._findDockCellsVer(c[0]),o=n[0],p=n[1];if(!(o==null||p==null)){var r=parseInt(this.polyObj[o[0]].style.width)+parseInt(this.polyObj[p[0]].style.width);b<this._minWidth?b=this._minWidth:b>r-this._minWidth&&(b=r-this._minWidth);for(var q=r-b,d=0;d<o.length;d++)this._setW(this.polyObj[o[d]],c[1]=="left"?b:q),this.polyObj[o[d]].updateNestedObjects();for(d=0;d<p.length;d++)this._setW(this.polyObj[p[d]],c[1]=="right"?b:q),this.polyObj[p[d]].updateNestedObjects()}}}};
+this._setHeight=function(a,b){if(this.polyObj[a]!=null&&Number(b)){for(var c=null,d=0;d<this.sepHor.length;d++){var e=this.sepHor[d]._top;if(e[e.length-1]==a)c=[this.sepHor[d],"top"];else if(typeof e[e.length-1]=="object")for(var f=e[e.length-1],l=0;l<f.length;l++)f[l]==a&&(c=[this.sepHor[d],"top"]);e=this.sepHor[d]._bottom;if(e[0]==a)c=[this.sepHor[d],"bottom"];else if(typeof e[0]=="object"){f=e[0];for(l=0;l<f.length;l++)f[l]==a&&(c=[this.sepHor[d],"bottom"])}}if(c!=null){var n=this._findDockCellsHor(c[0]),
+o=n[0],p=n[1];if(!(o==null||p==null)){var r=parseInt(this.polyObj[o[0]].style.height)+parseInt(this.polyObj[p[0]].style.height);b<this._minHeight?b=this._minHeight:b>r-this._minHeight&&(b=r-this._minHeight);for(var q=r-b,d=0;d<o.length;d++)this._setH(this.polyObj[o[d]],c[1]=="top"?b:q),this.polyObj[o[d]].updateNestedObjects();for(d=0;d<p.length;d++)this._setH(this.polyObj[p[d]],c[1]=="bottom"?b:q),this.polyObj[p[d]].updateNestedObjects()}}}};this.updateNestedObjectsArray=function(a){for(var b=0;b<
+a.length;b++)typeof a[b]=="object"?this.updateNestedObjectsArray(a[b]):this.polyObj[a[b]].updateNestedObjects()};this.dockWindow=function(a){if(this.dhxWins&&this.dhxWins.window(this.dhxWinsIdPrefix+a))this.dhxWins.window(this.dhxWinsIdPrefix+a).close(),this.dhxWins.window(this.dhxWinsIdPrefix+a).moveContentTo(this.polyObj[a]),this.polyObj[a]._isUnDocked=!1,this.callEvent("onDock",[a])};this.unDockWindow=function(a){this._initWindows(a);this.polyObj[a].moveContentTo(this.dhxWins.window(this.dhxWinsIdPrefix+
+a));this.polyObj[a]._isUnDocked=!0;this.callEvent("onUnDock",[a])};this._initWindows=function(a){if(window.dhtmlXWindows){if(!this.dhxWins&&(this.dhxWins=new dhtmlXWindows,this.dhxWins.setSkin(this.skin),this.dhxWins.setImagePath(this.imagePath),this.dhxWinsIdPrefix="",!a))return;var b=this.dhxWinsIdPrefix+a;if(this.dhxWins.window(b))this.dhxWins.window(b).show();else{var c=this,d=this.dhxWins.createWindow(b,20,20,320,200);d.setText(this.polyObj[a].getText());d.button("close").hide();d.attachEvent("onClose",
+function(a){a.hide()});d.button("dock").show();d.button("dock").attachEvent("onClick",function(){c.polyObj[a].dock()});d.dockedCell=this.polyObj[a]}}};this.isPanelVisible=function(a){return!this.polyObj[a]._noHeader};this.showPanel=function(a){if(this.polyObj[a]!=null&&this.polyObj[a]._collapsed!=!0){var b=this.polyObj[a].childNodes[0].childNodes[0];b.style.display="";this.polyObj[a]._noHeader=!1;this.skin=="dhx_web"&&this.polyObj[a]._setPadding(this.skinParams[this.skin].cell_pading_max,"dhxcont_layout_dhx_web");
+this.polyObj[a].adjustContent(this.polyObj[a].childNodes[0],this.skinParams[this.skin].cpanel_height);this.polyObj[a].updateNestedObjects()}};this.hidePanel=function(a){if(this.polyObj[a]!=null&&this.polyObj[a]._collapsed!=!0){var b=this.polyObj[a].childNodes[0].childNodes[0];b.style.display="none";this.polyObj[a]._noHeader=!0;this.skin=="dhx_web"&&this.polyObj[a]._setPadding(this.skinParams[this.skin].cell_pading_min,"");this.polyObj[a].adjustContent(this.polyObj[a].childNodes[0],0);this.polyObj[a].updateNestedObjects()}};
+this.setText=function(a,b){this._changeCPanelText(a,b)};this.getText=function(a){return this.polyObj[a].childNodes[0].childNodes[0].childNodes[0].innerHTML};this.getTextTooltip=function(a){var b=this.polyObj[a].childNodes[0].childNodes[0].childNodes[0];return b.innerText||b.textContent};this._changeCPanelText=function(a,b){var c=d;if(c.polyObj[a]!=null)c.polyObj[a].childNodes[0].childNodes[0].childNodes[0].innerHTML=b,d.dhxWins!=null&&d.dhxWins.window(d.dhxWinsIdPrefix+a)!=null&&d.dhxWins.window(d.dhxWinsIdPrefix+
+a).setText(b)};this.forEachItem=function(a){for(var b=0;b<this.items.length;b++)a(this.items[b])};this._fixPositionInWin=function(a,b){this.base.style.width=a+"px";this.base.style.height=b+"px"};this.attachMenu=function(){this.base._isWindow?this.menu=this.base._window.attachMenu():(this.cont.obj.skin=this.skin,this.menu=this.cont.obj.attachMenu(),this.cont.obj.adjustContent(this.cont.obj,0),this.setSizes());return this.menu};this.detachMenu=function(){if(this.menu)this.cont.obj.detachMenu(),this.setSizes(),
+this.menu=null};this.showMenu=function(){this.menu&&(this.cont.obj.showMenu(),this.setSizes())};this.hideMenu=function(){this.menu&&(this.cont.obj.hideMenu(),this.setSizes())};this.attachToolbar=function(){this.base._isWindow?this.toolbar=this.base._window.attachToolbar():(this.cont.obj.skin=this.skin,this.toolbar=this.cont.obj.attachToolbar(),this.cont.obj.adjustContent(this.cont.obj,0),this.setSizes());return this.toolbar};this.detachToolbar=function(){if(this.toolbar)this.cont.obj.detachToolbar(),
+this.setSizes(),this.toolbar=null};this.showToolbar=function(){this.toolbar&&(this.cont.obj.showToolbar(),this.setSizes())};this.hideToolbar=function(){this.toolbar&&(this.cont.obj.hideToolbar(),this.setSizes())};this.attachStatusBar=function(){this.base._isWindow?this.statusbar=this.base._window.attachStatusBar():(this.statusbar=this.cont.obj.attachStatusBar(),this.cont.obj.adjustContent(this.cont.obj,0),this.setSizes());return this.statusbar};this.detachStatusBar=function(){if(this.statusbar)this.cont.obj.detachStatusBar(),
+this.setSizes(),this.statusbar=null};this.showStatusBar=function(){this.statusbar&&(this.cont.obj.showStatusBar(),this.setSizes())};this.hideStatusBar=function(){this.statusbar&&(this.cont.obj.hideStatusBar(),this.setSizes())};this.progressOn=function(){this._progressControlGlobal(!0)};this.progressOff=function(){this._progressControlGlobal(!1)};this._progressControl=function(a,b){if(this.polyObj[a]!=null){if(this.polyObj[a]._progressCover==null){var c=document.createElement("DIV");c.className="dhtmlxLayoutPolyProgress";
+this.polyObj[a].childNodes[0].appendChild(c);var d=document.createElement("DIV");d.className="dhtmlxLayoutPolyProgressBGIMG";this.polyObj[a].childNodes[0].appendChild(d);this.polyObj[a]._progressCover=[c,d]}this.polyObj[a]._progressCover[0].style.display=b==!0?"":"none";this.polyObj[a]._progressCover[1].style.display=this.polyObj[a]._progressCover[0].style.display}};this._progressControlGlobal=function(a){if(this._progressCover==null){var b=document.createElement("DIV");b.className="dhtmlxLayoutPolyProgressGlobal_"+
+this.skin;this.obj.appendChild(b);var c=document.createElement("DIV");c.className="dhtmlxLayoutPolyProgressBGIMGGlobal_"+this.skin;this.obj.appendChild(c);this._progressCover=[b,c]}this._progressCover[0].style.display=a==!0?"":"none";this._progressCover[1].style.display=this._progressCover[0].style.display};this._fixSize=function(a,b,c){if(this.polyObj[a]!=null)this.polyObj[a]._isBlockedWidth=b,this.polyObj[a]._isBlockedHeight=c,this._fixSplitters()};this._fixSplitters=function(){for(var a=0;a<this.sepVer.length;a++){var b=
+this._findDockCellsVer(this.sepVer[a]);if(b[0]==null||b[1]==null){if(this.sepVer[a].className!="dhtmlxLayoutPolySplitterVerInactive")this.sepVer[a].className="dhtmlxLayoutPolySplitterVerInactive"}else if(this.sepVer[a].className!="dhtmlxLayoutPolySplitterVer")this.sepVer[a].className="dhtmlxLayoutPolySplitterVer"}for(a=0;a<this.sepHor.length;a++)if(b=this._findDockCellsHor(this.sepHor[a]),b[0]==null||b[1]==null){if(this.sepHor[a].className!="dhtmlxLayoutPolySplitterHorInactive")this.sepHor[a].className=
+"dhtmlxLayoutPolySplitterHorInactive"}else if(this.sepHor[a].className!="dhtmlxLayoutPolySplitterHor")this.sepHor[a].className="dhtmlxLayoutPolySplitterHor"};this._fixIcons=function(){for(var a in this.polyObj){for(var b=this.polyObj[a]._rowData,c=this.polyObj[a]._collapsed,d=-1,e=0;e<b.length;e++)typeof b[e]!="object"&&b[e]==a&&(d=e);var f=null;if(d!=-1){for(e=d+1;e<b.length;e++)typeof b[e]=="object"?f=this.polyObj[a]._resize=="ver"?c?"b":"t":c?"r":"l":this.polyObj[b[e]]._collapsed==!1&&(f=this.polyObj[a]._resize==
+"ver"?c?"b":"t":c?"r":"l");if(f==null&&d>=1)for(e=d-1;e>=0;e--)typeof b[e]=="object"?f=this.polyObj[a]._resize=="ver"?c?"t":"b":c?"l":"r":this.polyObj[b[e]]._collapsed==!1&&(f=this.polyObj[a]._resize=="ver"?c?"t":"b":c?"l":"r")}if(f!=null){var l=this.polyObj[a]._resize;this.polyObj[a].childNodes[0].childNodes[0].childNodes[4].className="dhtmlxInfoButtonShowHide_"+l+" dhxLayoutButton_"+this.skin+"_"+l+(this.polyObj[a]._collapsed?"2":"1")+f}}};this._defineWindowMinDimension=function(a,b){if(b==!0){var c=
+[];c[0]=parseInt(a.style.width);c[1]=parseInt(a.style.height)}else{c=a.getDimension();if(c[0]=="100%")c[0]=a.offsetWidth;if(c[1]=="100%")c[1]=a.offsetHeight}var e=d._getNearestParents("hor"),f=d._getNearestParents("ver");if(!b){var m=[],l=[],n;for(n in e)m[m.length]=n;for(n in f)l[l.length]=n;d._checkAlterMinSize([m,l]);for(var o={},p={},r=0;r<d._alterSizes.length;r++){n=d._alterSizes[r][0];var q=d._alterSizes[r][1],s=d._alterSizes[r][2];o[n]==null?o[n]=q:q>o[n]&&(o[n]=q);p[n]==null?p[n]=s:s>p[n]&&
+(p[n]=s)}for(n in e)o[n]!=null&&(e[n]=e[n]-o[n]+d._minWidth);for(n in f)p[n]!=null&&(f[n]=f[n]-p[n]+d._minHeight-(d.polyObj[n].childNodes[0].style.display!="none"?d.skinParams[d.skin].cpanel_height:0))}var y=65536;for(n in e)e[n]<y&&(y=e[n]);y-=d._minWidth;y=c[0]-y;y<d._dimension[0]&&!b&&(y=d._dimension[0]);var t=65536;for(n in f)f[n]<t&&(t=f[n]);t-=d._minHeight;t=c[1]-t;t<d._dimension[1]&&!b&&(t=d._dimension[1]);if(b==!0)return["",y,t];a.setMinDimension(y,t)};this._getNearestParents=function(a){for(var b=
+a=="hor"?this._autoHor:this._autoVer,c={},d=0;d<b.length;d++){var e=b[d];if(this.polyObj[e]._collapsed==!0&&this.polyObj[e]._resize==a){for(var f=this.polyObj[e]._rowData,l=-1,n=0;n<f.length;n++)typeof f[n]=="object"?l=n:f[n]==e&&(l=n);var o=l,e=null;if(l>0)for(n=l-1;n>=0;n--)typeof f[n]=="object"?e=f[n]:this.polyObj[f[n]]._collapsed==!1&&e==null&&(e=f[n]);if(e==null)for(n=o;n<f.length;n++)typeof f[n]=="object"?e=f[n]:this.polyObj[f[n]]._collapsed==!1&&e==null&&(e=f[n])}if(e!=null){typeof e=="string"&&
+(e=Array(e));for(n=0;n<e.length;n++)c[e[n]]=parseInt(a=="hor"?this.polyObj[e[n]].style.width:this.polyObj[e[n]].style.height)}}return c};this.setSizes=function(a){var b=this._defineWindowMinDimension(this.base,!0);this.cont.obj.setMinContentSize(b[1],b[2]);this.cont.obj.adjustContent(this.cont.obj,0);if(this.base.offsetParent){this.cont&&a!==!1&&this.cont.obj.adjustContent(this.cont.obj,this._mTop,null,null,this._mBottom);var c=this.base.offsetParent.offsetWidth-this.base.offsetWidth+(this._baseWFix!=
+null?this._baseWFix:0),d=this.base.offsetParent.offsetHeight-this.base.offsetHeight+(this._baseHFix!=null?this._baseHFix:0);this.base.style.width=parseInt(this.base.style.width)+c+"px";this.base.style.height=parseInt(this.base.style.height)+d+"px";var e={},f;for(f in this._getNearestParents("hor"))this.polyObj[f].style.width=Math.max(0,parseInt(this.polyObj[f].style.width)+c)+"px",this.polyObj[f].childNodes[0].style.width=this.polyObj[f].style.width,e[f]=1;for(f in this._getNearestParents("ver"))this.polyObj[f].style.height=
+Math.max(0,parseInt(this.polyObj[f].style.height)+d)+"px",this.polyObj[f].childNodes[0].style.height=this.polyObj[f].style.height,e[f]=1;for(f in e)this.polyObj[f].adjustContent(this.polyObj[f].childNodes[0],this.polyObj[f]._noHeader?0:this.skinParams[this.skin].cpanel_height),this.polyObj[f].updateNestedObjects();this.callEvent("onResizeFinish",[])}};dhtmlxEventable(this);this._init()}else alert(this.i18n.dhxcontalert)}
+dhtmlXLayoutObject.prototype.unload=function(){this._isIPad?(document.removeEventListener("touchmove",this._doOnMouseMove,!1),document.removeEventListener("touchend",this._doOnMouseUp,!1)):_isIE?(document.body.detachEvent("onselectstart",this._doOnSelectStart),document.body.detachEvent("onmousemove",this._doOnMouseMove),document.body.detachEvent("onmouseup",this._doOnMouseUp)):(document.body.removeEventListener("mousemove",this._doOnMouseMove,!1),document.body.removeEventListener("mouseup",this._doOnMouseUp,
+!1));this._doOnMouseUp=this._doOnMouseMove=this._doOnSelectStart=null;for(var a in this.polyObj){var b=this.polyObj[a];b._isCell=null;b.skin=null;b.getId=null;b.getIndex=null;b.showHeader=null;b.hideHeader=null;b.isHeaderVisible=null;b.setText=null;b.getText=null;b.expand=null;b.collapse=null;b.isCollapsed=null;b.dock=null;b.undock=null;b.setWidth=null;b.getWidth=null;b.setHeight=null;b.getHeight=null;b.fixSize=null;b.progressOn=null;b.progressOff=null;b._doOnAttachMenu=null;b._doOnAttachToolbar=
+null;b._doOnAttachStatusBar=null;b._collapsed=null;b._idd=null;b._ind=null;b._rowData=null;b._dir=null;b._initCPanel=null;b._minW=null;b._minH=null;b._resize=null;b._savedH=null;b._savedW=null;b.ondblclick=null;var c=b.childNodes[0].childNodes[0];c.className="";c._dockCell=null;c._resize=null;c._h=null;c.ondblclick=null;c.childNodes[4].onclick=null;for(var d=0;d<c.childNodes.length;d++)c.childNodes[d].onselectstart=null;for(;c.childNodes.length>0;)c.removeChild(c.childNodes[0]);c.parentNode.removeChild(c);
+c=null;b._dhxContDestruct();b._dhxContDestruct=null;b.removeChild(b.childNodes[0]);b.parentNode.removeChild(b);b=null}for(a in this.polyObj)this.polyObj[a]=null;for(var e=0;e<this.items.length;e++)this.items[e]=null;this.items=this.polyObj=null;for(var f=this.tpl.childNodes[0];f.childNodes.length>0;){for(;f.childNodes[0].childNodes.length>0;){d=f.childNodes[0].childNodes[0];d._top=null;d._bottom=null;d._left=null;d._right=null;d._dblClick=null;d._isSep=null;d._dir=null;d._lastClick=null;d.ondblclick=
+null;d.onmousedown=null;d.onmouseup=null;for(d.onselectstart=null;d.childNodes.length>0;)d.removeChild(d.childNodes[0]);d.parentNode.removeChild(d);d=null}f.removeChild(f.childNodes[0])}f.parentNode.removeChild(f);f=null;this.tpl.parentNode.removeChild(this.tpl);this.tpl=null;for(a in this.sepHor)this.sepHor[a]=null;for(a in this.sepVer)this.sepVer[a]=null;this.sepVer=this.sepHor=null;if(this._ha){this.detachEvent(this._haEv);for(this._haEv=null;this._ha.childNodes.length>0;)this._ha.removeChild(this._ha.childNodes[0]);
+this._ha.parentNode.removeChild(this._ha);this._ha=null}if(this._fa){this.detachEvent(this._faEv);for(this._faEv=null;this._fa.childNodes.length>0;)this._fa.removeChild(this._fa.childNodes[0]);this._fa.parentNode.removeChild(this._fa);this._fa=null}this._CPanelHeight=this._CPanelBtnsWidth=this.tplSizes=this.tplData=this.skinParams=this.skin=this.imagePath=this.h=this.w=this._xmlLoader=this._totalRows=this._totalCols=this._rowsRatio=this._colsRatio=this._resY=this._resX=this._resObj=this._resFunc=
+this._minHeight=this._minWidth=this._mTop=this._mBottom=this._layoutView=this._effects=this._dimension=this._availAutoSize=this._autoVer=this._autoHor=this.attachFooter=this.attachHeader=null;this.sizer.parentNode&&this.sizer.parentNode.removeChild(this.sizer);this._resYMaxHeightBottom=this._resYMaxHeightTop=this._resXMaxWidthRight=this._resXMaxWidthLeft=this._resYStart=this._resXStart=this._minHTAlter=this._minHBAlter=this._minWRAlter=this._minWLAlter=this._collapsedW=this._collapsedH=this._dblClickTM=
+this._doOnDoubleClick=this._autodetectSkin=this.dhx_SeverCatcherPath=this._effect=this._autosize=this._cells=this.hideStatusBar=this.hideToolbar=this.hideMenu=this.showStatusBar=this.showToolbar=this.showMenu=this.detachStatusBar=this.detachToolbar=this.detachMenu=this.attachStatusBar=this.attachToolbar=this.attachMenu=this.setCollapsedText=this.updateNestedObjectsArray=this.unload=this.unDockWindow=this.showPanel=this.setText=this.setSkin=this.setSizes=this.setImagePath=this.setEffect=this.setAutoSize=
+this.progressOn=this.progressOff=this.listViews=this.listAutoSizes=this.isPanelVisible=this.hidePanel=this.getText=this.getIndexById=this.getIdByIndex=this.getEffect=this.forEachItem=this.eventCatcher=this.dockWindow=this.detachEvent=this.checkEvent=this.cells=this.callEvent=this.attachToolbar=this.attachStatusBar=this.attachMenu=this.attachEvent=this._xmlParser=this._showCovers=this._setWidth=this._setW=this._setHeight=this._setH=this._resAreaData=this._resizeVer=this._resizeStop=this._resizeHor=
+this._progressControlGlobal=this._progressControl=this._isResizable=this._isCollapsed=this._initWindows=this._init=this._hideCovers=this._getNearestParents=this._fixSplitters=this._fixSize=this._fixPositionInWin=this._fixIcons=this._findDockCellsVer=this._findDockCellsHor=this._expandEffect=this._expand=this._doExpand=this._doCollapse=this._defineWindowMinDimension=this._collectResAreaData=this._collapseEffect=this._collapse=this._checkAlterMinSize=this._changeCPanelText=this._buildSurface=this._attachSizer=
+this._alterSizes=this.sizer=null;if(this.obj)this.obj.parentNode.removeChild(this.obj),this.obj=null;if(this.base&&this.base!=document.body)this.base.parentNode.removeChild(this.base),this.base=null;if(this.dhxWins)this.dhxWins.unload(),this.dhxWinsIdPrefix=this.dhxWins=null;if(this._doOnResizeStart)_isIE?window.detachEvent("onresize",this._doOnResizeStart):window.removeEventListener("resize",this._doOnResizeStart,!1),this._tmTime=this._doOnResizeEnd=this._doOnResizeStart=null;this.detachAllEvents();
+this.detachAllEvents=null};
+dhtmlXLayoutObject.prototype.tplData={"1C":'<layout><autosize hor="a" ver="a" rows="1" cols="1"/><table data="a"/><row><cell obj="a" wh="1,1" resize="ver" neighbors="a"/></row></layout>',"2E":'<layout><autosize hor="a;b" ver="b" rows="2" cols="1"/><table data="a;b"/><row><cell obj="a" wh="1,2" resize="ver" neighbors="a;b"/></row><row sep="true"><cell sep="hor" top="a" bottom="b" dblclick="a"/></row><row><cell obj="b" wh="1,2" resize="ver" neighbors="a;b"/></row></layout>',"2U":'<layout><autosize hor="b" ver="a;b" rows="1" cols="2"/><table data="a,b"/><row><cell obj="a" wh="2,1" resize="hor" neighbors="a;b"/><cell sep="ver" left="a" right="b"/><cell obj="b" wh="2,1" resize="hor" neighbors="a;b"/></row></layout>',
+"3E":'<layout><autosize hor="a;b;c" ver="c" rows="3" cols="1"/><table data="a;b;c"/><row><cell obj="a" wh="1,3" resize="ver" neighbors="a;b;c"/></row><row sep="yes"><cell sep="hor" top="a" bottom="b;c" dblclick="a"/></row><row><cell obj="b" wh="1,3" resize="ver" neighbors="a;b;c"/></row><row sep="yes"><cell sep="hor" top="a;b" bottom="c" dblclick="b"/></row><row><cell obj="c" wh="1,3" resize="ver" neighbors="a;b;c"/></row></layout>',"3W":'<layout><autosize hor="c" ver="a;b;c" rows="1" cols="3"/><table data="a,b,c"/><row><cell obj="a" wh="3,1" resize="hor" neighbors="a;b;c"/><cell sep="ver" left="a" right="b;c" dblclick="a"/><cell obj="b" wh="3,1" resize="hor" neighbors="a;b;c"/><cell sep="ver" left="a;b" right="c" dblclick="b"/><cell obj="c" wh="3,1" resize="hor" neighbors="a;b;c"/></row></layout>',
+"3J":'<layout><autosize hor="b" ver="b;c" rows="2" cols="2"/><table data="a,b;c,b"/><row><cell obj="a" wh="2,2" resize="ver" neighbors="a;c"/><cell sep="ver" left="a,c" right="b" dblclick="b" rowspan="3"/><cell obj="b" wh="2,1" resize="hor" neighbors="a,c;b" rowspan="3"/></row><row sep="yes"><cell sep="hor" top="a" bottom="c" dblclick="a"/></row><row><cell obj="c" wh="2,2" resize="ver" neighbors="a;c"/></row></layout>',"3T":'<layout><autosize hor="a;c" ver="b;c" rows="2" cols="2"/><table data="a,a;b,c"/><row><cell obj="a" wh="1,2" resize="ver" neighbors="a;b,c" colspan="3"/></row><row sep="true"><cell sep="hor" top="a" bottom="b,c" dblclick="a" colspan="3"/></row><row><cell obj="b" wh="2,2" resize="hor" neighbors="b;c"/><cell sep="ver" left="b" right="c" dblclick="b"/><cell obj="c" wh="2,2" resize="hor" neighbors="b;c"/></row></layout>',
+"3L":'<layout><autosize hor="b;c" ver="a;c" rows="2" cols="2"/><table data="a,b;a,c"/><row><cell obj="a" wh="2,1" resize="hor" neighbors="a;b,c" rowspan="3"/><cell sep="ver" left="a" right="b,c" dblclick="a" rowspan="3"/><cell obj="b" wh="2,2" resize="ver" neighbors="b;c"/></row><row sep="true"><cell sep="hor" top="b" dblclick="b" bottom="c"/></row><row><cell obj="c" wh="b,2" resize="ver" neighbors="b;c"/></row></layout>',"3U":'<layout><autosize hor="b;c" ver="c" rows="2" cols="2"/><table data="a,b;c,c"/><row><cell obj="a" wh="2,2" resize="hor" neighbors="a;b"/><cell sep="ver" left="a" right="b" dblclick="a"/><cell obj="b" wh="2,2" resize="hor" neighbors="a;b"/></row><row sep="true"><cell sep="hor" top="a,b" bottom="c" dblclick="c" colspan="3"/></row><row><cell obj="c" wh="1,2" resize="ver" neighbors="a,b;c" colspan="3"/></row></layout>',
+"4H":'<layout><autosize hor="d" ver="a;c;d" rows="2" cols="3"/><table data="a,b,d;a,c,d"/><row><cell obj="a" wh="3,1" resize="hor" neighbors="a;b,c;d" rowspan="3"/><cell sep="ver" left="a" right="b,c;d" dblclick="a" rowspan="3"/><cell obj="b" wh="3,2" resize="ver" neighbors="b;c"/><cell sep="ver" left="a;b,c" right="d" dblclick="d" rowspan="3"/><cell obj="d" wh="3,1" resize="hor" neighbors="a;b,c;d" rowspan="3"/></row><row sep="true"><cell sep="hor" top="b" dblclick="b" bottom="c"/></row><row><cell obj="c" wh="3,2" resize="ver" neighbors="b;c"/></row></layout>',
+"4I":'<layout><autosize hor="a;c;d" ver="d" rows="3" cols="2"/><table data="a,a;b,c;d,d"/><row><cell obj="a" wh="1,3" resize="ver" neighbors="a;b,c;d" colspan="3"/></row><row sep="true"><cell sep="hor" top="a" bottom="b,c;d" dblclick="a" colspan="3"/></row><row><cell obj="b" wh="2,3" resize="hor" neighbors="b;c"/><cell sep="ver" left="b" dblclick="b" right="c"/><cell obj="c" wh="2,3" resize="hor" neighbors="b;c"/></row><row sep="true"><cell sep="hor" top="a;b,c" bottom="d" dblclick="d" colspan="3"/></row><row><cell obj="d" wh="1,3" resize="ver" neighbors="a;b,c;d" colspan="3"/></row></layout>',
+"4T":'<layout><autosize hor="a;d" ver="b;c;d" rows="2" cols="3"/><table data="a,a,a;b,c,d"/><row><cell obj="a" wh="1,2" resize="ver" neighbors="a;b,c,d" colspan="5"/></row><row sep="true"><cell sep="hor" top="a" bottom="b,c,d" dblclick="a" colspan="5"/></row><row><cell obj="b" wh="3,2" resize="hor" neighbors="b;c;d"/><cell sep="ver" left="b" right="c;d" dblclick="b"/><cell obj="c" wh="3,2" resize="hor" neighbors="b;c;d"/><cell sep="ver" left="b;c" right="d" dblclick="c"/><cell obj="d" wh="3,2" resize="hor" neighbors="b;c;d"/></row></layout>',
+"4U":'<layout><autosize hor="c;d" ver="d" rows="2" cols="3"/><table data="a,b,c;d,d,d"/><row><cell obj="a" wh="3,2" resize="hor" neighbors="a;b;c"/><cell sep="ver" left="a" right="b;c" dblclick="a"/><cell obj="b" wh="3,2" resize="hor" neighbors="a;b;c"/><cell sep="ver" left="a;b" right="c" dblclick="b"/><cell obj="c" wh="3,2" resize="hor" neighbors="a;b;c"/></row><row sep="true"><cell sep="hor" top="a,b,c" bottom="d" dblclick="d" colspan="5"/></row><row><cell obj="d" wh="1,2" resize="ver" neighbors="a,b,c;d" colspan="5"/></row></layout>',
+"5H":'<layout><autosize hor="b;c;d" ver="a;c;e" rows="3" cols="3"/><table data="a,b,e;a,c,e;a,d,e"/><row><cell obj="a" wh="3,1" resize="hor" neighbors="a;b,c,d" rowspan="5"/><cell sep="ver" left="a" right="b,c,d;e" dblclick="a" rowspan="5"/><cell obj="b" wh="3,3" resize="ver" neighbors="b;c;d"/><cell sep="ver" left="a;b,c,d" right="e" dblclick="e" rowspan="5"/><cell obj="e" wh="3,1" resize="hor" neighbors="b,c,d;e" rowspan="5"/></row><row sep="true"><cell sep="hor" top="b" dblclick="b" bottom="c;d"/></row><row><cell obj="c" wh="3,3" resize="ver" neighbors="b;c;d"/></row><row sep="true"><cell sep="hor" top="b;c" dblclick="c" bottom="d"/></row><row><cell obj="d" wh="3,3" resize="ver" neighbors="b;c;d"/></row></layout>',
+"5I":'<layout><autosize hor="a;d;e" ver="e" rows="3" cols="3"/><table data="a,a,a;b,c,d;e,e,e"/><row><cell obj="a" wh="1,3" resize="ver" neighbors="a;b,c,d;e" colspan="5"/></row><row sep="match"><cell sep="hor" top="a" bottom="b,c,d;e" dblclick="a" colspan="5"/></row><row><cell obj="b" wh="3,3" resize="hor" neighbors="b;c;d"/><cell sep="ver" left="b" right="c;d" dblclick="b"/><cell obj="c" wh="3,3" resize="hor" neighbors="b;c;d"/><cell sep="ver" left="b;c" right="d" dblclick="c"/><cell obj="d" wh="3,3" resize="hor" neighbors="b;c;d"/></row><row sep="match"><cell sep="hor" top="a;b,c,d" bottom="e" dblclick="e" colspan="5"/></row><row><cell obj="e" wh="1,3" resize="ver" neighbors="a;b,c,d;e" colspan="5"/></row></layout>',
+"6I":'<layout><autosize hor="a;e;f" ver="f" rows="3" cols="4"/><table data="a,a,a,a;b,c,d,e;f,f,f,f"/><row><cell obj="a" wh="1,3" resize="ver" neighbors="a;b,c,d,e;f" colspan="7"/></row><row sep="true"><cell sep="hor" top="a" bottom="b,c,d,e;f" dblclick="a" colspan="7"/></row><row><cell obj="b" wh="4,3" resize="hor" neighbors="b;c;d;e"/><cell sep="ver" left="b" right="c;d;e" dblclick="b"/><cell obj="c" wh="4,3" resize="hor" neighbors="b;c;d;e"/><cell sep="ver" left="b;c" right="d;e" dblclick="c"/><cell obj="d" wh="4,3" resize="hor" neighbors="b;c;d;e"/><cell sep="ver" left="b;c;d" right="e" dblclick="d"/><cell obj="e" wh="4,3" resize="hor" neighbors="b;c;d;e"/></row><row sep="true"><cell sep="hor" top="a;b,c,d,e" bottom="f" dblclick="f" colspan="7"/></row><row><cell obj="f" wh="1,3" resize="ver" neighbors="a;b,c,d,e;f" colspan="7"/></row></layout>'};
+dhtmlXLayoutObject.prototype._availAutoSize={"1C_hor":["a"],"1C_ver":["a"],"2E_hor":["a;b"],"2E_ver":["a","b"],"2U_hor":["a","b"],"2U_ver":["a;b"],"3E_hor":["a;b;c"],"3E_ver":["a","b","c"],"3W_hor":["a","b","c"],"3W_ver":["a;b;c"],"3J_hor":["a;c","b"],"3J_ver":["a;b","c;b"],"3T_hor":["a;b","a;c"],"3T_ver":["a","b;c"],"3L_hor":["a","b;c"],"3L_ver":["a;b","a;c"],"3U_hor":["a;c","b;c"],"3U_ver":["a;b","c"],"4H_hor":["a","b;c","d"],"4H_ver":["a;b;d","a;c;d"],"4I_hor":["a;b;d","a;c;d"],"4I_ver":["a","b;c",
+"d"],"4T_hor":["a;b","a;c","a;d"],"4T_ver":["a","b;c;d"],"4U_hor":["a;d","b;d","c;d"],"4U_ver":["a;b;c","d"],"5H_hor":["a","b;c;d","e"],"5H_ver":["a;b;e","a;c;e","a;d;e"],"5I_hor":["a;b;e","a;c;e","a;d;e"],"5I_ver":["a","b;c;d","e"],"6I_hor":["a;b;f","a;c;f","a;d;f","a;e;f"],"6I_ver":["a","b;c;d;e","f"]};
+dhtmlXLayoutObject.prototype.setCollapsedText=function(a,b){if(this.polyObj[a]){var c=this.polyObj[a].childNodes[0].childNodes[0];if(c.childNodes[c.childNodes.length-1]._ct===!0)var d=c.childNodes[c.childNodes.length-1];else d=document.createElement("DIV"),d._ct=!0,d.className="dhtmlxInfoBarLabel_collapsed_"+this.polyObj[a]._resize,c.appendChild(d);d.innerHTML=b;c=null}};
+dhtmlXLayoutObject.prototype.i18n={dhxcontalert:"dhtmlxcontainer.js is missed on the page",collapse:"Collapse",expand:"Expand",dock:"Dock",undock:"UnDock"};
+(function(){dhtmlx.extend_api("dhtmlXLayoutObject",{_init:function(a){return[a.parent,a.pattern,a.skin]},image_path:"setImagePath",effect:"_effect",cells:"_cells",autosize:"_autosize"},{_cells:function(a){for(var b=0;b<a.length;b++){var c=a[b],d=this.cells(c.id);d&&(c.height&&d.setHeight(c.height),c.width&&d.setWidth(c.width),c.text&&d.setText(c.text),c.collapse&&d.collapse(),c.fix_size&&d.fixSize(c.fix_size[0],c.fix_size[1]),c.header===!1&&d.hideHeader())}},_autosize:function(a){this.setAutoSize(a[0],
+a[1])},_effect:function(a){a.collapse&&this.setEffect("collapse",a.collapse);a.resize&&this.setEffect("resize",a.resize);a.highlight&&this.setEffect("highlight",a.highlight)}})})();
+dhtmlXLayoutObject.prototype.attachHeader=function(a){if(!this._ha){typeof a!="object"&&(a=document.getElementById(a));var b=a.offsetHeight+(this.skin=="dhx_web"?9:2)+2;this.cont.obj._offsetTop=b;this.cont.obj._offsetHeight=-b;this.setSizes();this._ha=document.createElement("DIV");this._ha.style.position="absolute";this._ha.style.top="2px";this._ha.style.left=this.cont.obj.vs[this.cont.obj.av].dhxcont.style.left;this._ha.style.width=this.cont.obj.vs[this.cont.obj.av].dhxcont.style.width;this._ha.style.height=
+a.offsetHeight+"px";document.body.appendChild(this._ha);this._ha.appendChild(a);this._haEv=this.attachEvent("onResizeFinish",function(){this._ha.style.width=this.cont.obj.vs[this.cont.obj.av].dhxcont.style.width})}};
+dhtmlXLayoutObject.prototype.attachFooter=function(a){if(!this._fa){typeof a!="object"&&(a=document.getElementById(a));var b=a.offsetHeight+(this.skin=="dhx_web"?9:2)-2;this.cont.obj._offsetHeight-=b;this.setSizes();this._fa=document.createElement("DIV");this._fa.style.position="absolute";this._fa.style.bottom="2px";this._fa.style.left=this.cont.obj.vs[this.cont.obj.av].dhxcont.style.left;this._fa.style.width=this.cont.obj.vs[this.cont.obj.av].dhxcont.style.width;this._fa.style.height=a.offsetHeight+
+"px";document.body.appendChild(this._fa);this._fa.appendChild(a);this._faEv=this.attachEvent("onResizeFinish",function(){this._fa.style.width=this.cont.obj.vs[this.cont.obj.av].dhxcont.style.width})}};
+function dhtmlXMenuObject(a,b){var c=this;this.addBaseIdAsContextZone=null;this.isDhtmlxMenuObject=!0;this.skin=b!=null?b:"dhx_skyblue";this.imagePath="";this._isIE6=!1;if(_isIE)this._isIE6=window.XMLHttpRequest==null?!0:!1;if(a==null)this.base=document.body;else{var d=typeof a=="string"?document.getElementById(a):a;if(d!=null){this.base=d;if(!this.base.id)this.base.id=(new Date).valueOf();for(;this.base.childNodes.length>0;)this.base.removeChild(this.base.childNodes[0]);this.base.className+=" dhtmlxMenu_"+
+this.skin+"_Middle dir_left";this.base._autoSkinUpdate=!0;if(this.base.oncontextmenu)this.base._oldContextMenuHandler=this.base.oncontextmenu;this.addBaseIdAsContextZone=this.base.id;this.base.onselectstart=function(a){a=a||event;return a.returnValue=!1};this.base.oncontextmenu=function(a){a=a||event;return a.returnValue=!1}}else this.base=document.body}this.topId="dhxWebMenuTopId";if(!this.extendedModule){for(var e=function(){alert(this.i18n.dhxmenuextalert)},f="setItemEnabled,setItemDisabled,isItemEnabled,_changeItemState,getItemText,setItemText,loadFromHTML,hideItem,showItem,isItemHidden,_changeItemVisible,setUserData,getUserData,setOpenMode,setWebModeTimeout,enableDynamicLoading,_updateLoaderIcon,getItemImage,setItemImage,clearItemImage,setAutoShowMode,setAutoHideMode,setContextMenuHideAllMode,getContextMenuHideAllMode,setVisibleArea,setTooltip,getTooltip,setHotKey,getHotKey,setItemSelected,setTopText,setRTL,setAlign,setHref,clearHref,getCircuit,_clearAllSelectedSubItemsInPolygon,_checkArrowsState,_addUpArrow,_addDownArrow,_removeUpArrow,_removeDownArrow,_isArrowExists,_doScrollUp,_doScrollDown,_countPolygonItems,setOverflowHeight,_getRadioImgObj,_setRadioState,_radioOnClickHandler,getRadioChecked,setRadioChecked,addRadioButton,_getCheckboxState,_setCheckboxState,_readLevel,_updateCheckboxImage,_checkboxOnClickHandler,setCheckboxState,getCheckboxState,addCheckbox,serialize".split(","),
+g=0;g<f.length;g++)this[f[g]]||(this[f[g]]=e);f=null}this.fixedPosition=!1;this.menuLastClicked=this.menuSelected=-1;this.idPrefix="";this.itemTagName="item";this.itemTextTagName="itemtext";this.userDataTagName="userdata";this.itemTipTagName="tooltip";this.itemHotKeyTagName="hotkey";this.itemHrefTagName="href";this.dirTopLevel="bottom";this.dirSubLevel="right";this.menuY2=this.menuY1=this.menuX2=this.menuX1=null;this.menuMode="web";this.menuTimeoutMsec=400;this.menuTimeoutHandler=null;this.idPull=
+{};this.itemPull={};this.userData={};this.radio={};this._rtl=!1;this._align="left";this.menuTouched=!1;this.zInd=this.zIndInit=1200;this.zIndStep=50;this.menuModeTopLevelTimeout=!0;this.menuModeTopLevelTimeoutTime=200;this._topLevelBottomMargin=1;this._topLevelRightMargin=0;this._topLevelOffsetLeft=1;this._arrowFFFix=_isIE?document.compatMode=="BackCompat"?0:-4:-4;this.setSkin=function(a){var b=this.skin;this.skin=a;switch(this.skin){case "dhx_black":case "dhx_blue":case "dhx_skyblue":case "dhx_web":this._topLevelBottomMargin=
+2;this._topLevelOffsetLeft=this._topLevelRightMargin=1;this._arrowFFFix=_isIE?document.compatMode=="BackCompat"?0:-4:-4;break;case "dhx_web":this._arrowFFFix=0}if(this.base._autoSkinUpdate)this.base.className=this.base.className.replace("dhtmlxMenu_"+b+"_Middle","")+" dhtmlxMenu_"+this.skin+"_Middle";for(var c in this.idPull)this.idPull[c].className=String(this.idPull[c].className).replace(b,this.skin)};this.setSkin(this.skin);this.dLoad=!1;this.dLoadUrl="";this.dLoadSign="?";this.loaderIcon=!1;this.limit=
+0;this._scrollUpTM=null;this._scrollUpTMTime=20;this._scrollUpTMStep=3;this._scrollDownTM=null;this._scrollDownTMTime=20;this._scrollDownTMStep=3;this.context=!1;this.contextZones={};this.contextMenuZoneId=!1;this.contextHideAllMode=this.contextAutoHide=this.contextAutoShow=!0;this.sxDacProc=null;this.dacSpeed=10;this.dacCycles=[];for(g=0;g<10;g++)this.dacCycles[g]=g;this.dacSpeedIE=10;this.dacCyclesIE=[];for(g=0;g<10;g++)this.dacCyclesIE[g]=g;this._enableDacSupport=function(a){this.sxDacProc=a};
+this._selectedSubItems=[];this._openedPolygons=[];this._addSubItemToSelected=function(a,b){for(var c=!0,d=0;d<this._selectedSubItems.length;d++)this._selectedSubItems[d][0]==a&&this._selectedSubItems[d][1]==b&&(c=!1);c==!0&&this._selectedSubItems.push([a,b]);return c};this._removeSubItemFromSelected=function(a,b){for(var c=[],d=!1,e=0;e<this._selectedSubItems.length;e++)this._selectedSubItems[e][0]==a&&this._selectedSubItems[e][1]==b?d=!0:c[c.length]=this._selectedSubItems[e];if(d==!0)this._selectedSubItems=
+c;return d};this._getSubItemToDeselectByPolygon=function(a){for(var b=[],c=0;c<this._selectedSubItems.length;c++)if(this._selectedSubItems[c][1]==a){b[b.length]=this._selectedSubItems[c][0];for(var b=b.concat(this._getSubItemToDeselectByPolygon(this._selectedSubItems[c][0])),d=!0,e=0;e<this._openedPolygons.length;e++)this._openedPolygons[e]==this._selectedSubItems[c][0]&&(d=!1);d==!0&&(this._openedPolygons[this._openedPolygons.length]=this._selectedSubItems[c][0]);this._selectedSubItems[c][0]=-1;
+this._selectedSubItems[c][1]=-1}return b};this._hidePolygon=function(a){if(this.idPull["polygon_"+a]!=null)if(this.sxDacProc!=null&&this.idPull["sxDac_"+a]!=null)this.idPull["sxDac_"+a]._hide();else if(this.idPull["polygon_"+a].style.display!="none"){this.idPull["polygon_"+a].style.display="none";if(this.idPull["arrowup_"+a]!=null)this.idPull["arrowup_"+a].style.display="none";if(this.idPull["arrowdown_"+a]!=null)this.idPull["arrowdown_"+a].style.display="none";this._updateItemComplexState(a,!0,!1);
+if(this._isIE6&&this.idPull["polygon_"+a+"_ie6cover"]!=null)this.idPull["polygon_"+a+"_ie6cover"].style.display="none";a=String(a).replace(this.idPrefix,"");a==this.topId&&(a=null);this.callEvent("onHide",[a])}};this._showPolygon=function(a,b){var c=this._countVisiblePolygonItems(a);if(c!=0){var d="polygon_"+a;if(this.idPull[d]!=null&&this.idPull[a]!=null&&(!this.menuModeTopLevelTimeout||this.menuMode!="web"||this.context||this.idPull[a]._mouseOver||b!=this.dirTopLevel)){this.fixedPosition||this._autoDetectVisibleArea();
+var e=0,f=0,g=null,o=null;if(this.limit>0&&this.limit<c){var p="arrowup_"+a,r="arrowdown_"+a;this.idPull["arrowup_"+a]==null&&this._addUpArrow(String(a).replace(this.idPrefix,""));this.idPull["arrowdown_"+a]==null&&this._addDownArrow(String(a).replace(this.idPrefix,""));g=this.idPull["arrowup_"+a];g.style.visibility="hidden";g.style.display="";g.style.zIndex=this.zInd;e=g.offsetHeight;o=this.idPull["arrowdown_"+a];o.style.visibility="hidden";o.style.display="";o.style.zIndex=this.zInd;f=o.offsetHeight}this.idPull[d].style.visibility=
+"hidden";this.idPull[d].style.left="0px";this.idPull[d].style.top="0px";this.idPull[d].style.display="";this.idPull[d].style.zIndex=this.zInd;if(this.limit>0)this.limit<c?(this.idPull[d].style.height=24*this.limit+"px",this.idPull[d].scrollTop=0):this.idPull[d].style.height="";this.zInd+=this.zIndStep;if(this.itemPull[a]!=null)var q="polygon_"+this.itemPull[a].parent;else this.context&&(q=this.idPull[this.idPrefix+this.topId]);var s=this.idPull[a].tagName!=null?getAbsoluteLeft(this.idPull[a]):this.idPull[a][0],
+y=this.idPull[a].tagName!=null?getAbsoluteTop(this.idPull[a]):this.idPull[a][1],t=this.idPull[a].tagName!=null?this.idPull[a].offsetWidth:0,u=this.idPull[a].tagName!=null?this.idPull[a].offsetHeight+e+f:0,w=0,B=0,v=this.idPull[d].offsetWidth,z=this.idPull[d].offsetHeight;b=="bottom"&&(w=this._rtl?s+(t!=null?t:0)-v:this._align=="right"?s+t-v:s-1+(b==this.dirTopLevel?this._topLevelRightMargin:0),B=y-1+u-e-f+this._topLevelBottomMargin);b=="right"&&(w=s+t-1,B=y+2);b=="left"&&(w=s-this.idPull[d].offsetWidth+
+2,B=y+2);b=="top"&&(w=s-1,B=y-z+2);if(this.fixedPosition)var A=65536,x=65536;else if(A=this.menuX2!=null?this.menuX2:0,x=this.menuY2!=null?this.menuY2:0,A==0)window.innerWidth?(A=window.innerWidth,x=window.innerHeight):(A=document.body.offsetWidth,x=document.body.scrollHeight);w+v>A&&!this._rtl&&(w=s-v+2);w<this.menuX1&&this._rtl&&(w=s+t-2);w<0&&(w=0);B+z>x&&this.menuY2!=null&&(B=Math.max(y+u-z+2,2),this.itemPull[a]!=null&&!this.context&&this.itemPull[a].parent==this.idPrefix+this.topId&&(B-=this.base.offsetHeight));
+this.idPull[d].style.left=w+"px";this.idPull[d].style.top=B+e+"px";if(this.sxDacProc!=null&&this.idPull["sxDac_"+a]!=null)this.idPull["sxDac_"+a]._show();else{this.idPull[d].style.visibility="";if(this.limit>0&&this.limit<c)g.style.left=w+"px",g.style.top=B+"px",g.style.width=v+this._arrowFFFix+"px",g.style.visibility="",o.style.left=w+"px",o.style.top=B+e+z+"px",o.style.width=v+this._arrowFFFix+"px",o.style.visibility="",this._checkArrowsState(a);if(this._isIE6){var C=d+"_ie6cover";if(this.idPull[C]==
+null){var D=document.createElement("IFRAME");D.className="dhtmlxMenu_IE6CoverFix_"+this.skin;D.frameBorder=0;D.setAttribute("src","javascript:false;");document.body.insertBefore(D,document.body.firstChild);this.idPull[C]=D}this.idPull[C].style.left=this.idPull[d].style.left;this.idPull[C].style.top=this.idPull[d].style.top;this.idPull[C].style.width=this.idPull[d].offsetWidth+"px";this.idPull[C].style.height=this.idPull[d].offsetHeight+"px";this.idPull[C].style.zIndex=this.idPull[d].style.zIndex-
+1;this.idPull[C].style.display=""}a=String(a).replace(this.idPrefix,"");a==this.topId&&(a=null);this.callEvent("onShow",[a])}}}};this._redistribSubLevelSelection=function(a,b){for(;this._openedPolygons.length>0;)this._openedPolygons.pop();var c=this._getSubItemToDeselectByPolygon(b);this._removeSubItemFromSelected(-1,-1);for(var d=0;d<c.length;d++)if(this.idPull[c[d]]!=null&&c[d]!=a&&this.itemPull[c[d]].state=="enabled")this.idPull[c[d]].className="sub_item";for(d=0;d<this._openedPolygons.length;d++)this._openedPolygons[d]!=
+b&&this._hidePolygon(this._openedPolygons[d]);if(this.itemPull[a].state=="enabled"){this.idPull[a].className="sub_item_selected";if(this.itemPull[a].complex&&this.dLoad&&this.itemPull[a].loaded=="no"){this.loaderIcon==!0&&this._updateLoaderIcon(a,!0);var e=new dtmlXMLLoaderObject(this._xmlParser,window);this.itemPull[a].loaded="get";this.callEvent("onXLS",[]);e.loadXML(this.dLoadUrl+this.dLoadSign+"action=loadMenu&parentId="+a.replace(this.idPrefix,"")+"&etc="+(new Date).getTime())}if((this.itemPull[a].complex||
+this.dLoad&&this.itemPull[a].loaded=="yes")&&this.itemPull[a].complex&&this.idPull["polygon_"+a]!=null)this._updateItemComplexState(a,!0,!0),this._showPolygon(a,this.dirSubLevel);this._addSubItemToSelected(a,b);this.menuSelected=a}};this._doOnClick=function(a,b,c){this.menuLastClicked=a;if(this.itemPull[this.idPrefix+a].href_link!=null&&this.itemPull[this.idPrefix+a].state=="enabled"){var d=document.createElement("FORM"),e=String(this.itemPull[this.idPrefix+a].href_link).split("?");d.action=e[0];
+if(e[1]!=null)for(var f=String(e[1]).split("&"),g=0;g<f.length;g++){var o=String(f[g]).split("="),p=document.createElement("INPUT");p.type="hidden";p.name=o[0]||"";p.value=o[1]||"";d.appendChild(p)}if(this.itemPull[this.idPrefix+a].href_target!=null)d.target=this.itemPull[this.idPrefix+a].href_target;d.style.display="none";document.body.appendChild(d);d.submit();d!=null&&(document.body.removeChild(d),d=null)}else b.charAt(0)!="c"&&b.charAt(1)!="d"&&b.charAt(2)!="s"&&(this.checkEvent("onClick")?(this._clearAndHide(),
+this._isContextMenuVisible()&&this.contextAutoHide&&this._hideContextMenu(),this.callEvent("onClick",[a,this.contextMenuZoneId,c])):b.charAt(1)=="d"||this.menuMode=="win"&&b.charAt(2)=="t"||(this._clearAndHide(),this._isContextMenuVisible()&&this.contextAutoHide&&this._hideContextMenu()))};this._doOnTouchMenu=function(a){if(this.menuTouched==!1)this.menuTouched=!0,this.checkEvent("onTouch")&&this.callEvent("onTouch",[a])};this._searchMenuNode=function(a,b){for(var c=[],d=0;d<b.length;d++)if(typeof b[d]==
+"object"){b[d].length==5&&typeof b[d][0]!="object"&&b[d][0].replace(this.idPrefix,"")==a&&d==0&&(c=b);var e=this._searchMenuNode(a,b[d]);e.length>0&&(c=e)}return c};this._getMenuNodes=function(a){var b=[],c;for(c in this.itemPull)this.itemPull[c].parent==a&&(b[b.length]=c);return b};this._genStr=function(a){for(var b="",c="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",d=0;d<a;d++)b+=c.charAt(Math.round(Math.random()*(c.length-1)));return b};this.getItemType=function(a){a=this.idPrefix+
+a;return this.itemPull[a]==null?null:this.itemPull[a].type};this.forEachItem=function(a){for(var b in this.itemPull)a(String(b).replace(this.idPrefix,""))};this._clearAndHide=function(){c.menuSelected=-1;for(c.menuLastClicked=-1;c._openedPolygons.length>0;)c._openedPolygons.pop();for(var a=0;a<c._selectedSubItems.length;a++){var b=c._selectedSubItems[a][0];if(c.idPull[b]!=null&&c.itemPull[b].state=="enabled"){if(c.idPull[b].className=="sub_item_selected")c.idPull[b].className="sub_item";if(c.idPull[b].className==
+"dhtmlxMenu_"+c.skin+"_TopLevel_Item_Selected")c.idPull[b].className=c.itemPull[b].cssNormal!=null?c.itemPull[b].cssNormal:"dhtmlxMenu_"+c.skin+"_TopLevel_Item_Normal"}c._hidePolygon(b)}c.menuTouched=!1;if(c.context)c.contextHideAllMode?(c._hidePolygon(c.idPrefix+c.topId),c.zInd=c.zIndInit):c.zInd=c.zIndInit+c.zIndStep};this._doOnLoad=function(){};this.loadXML=function(a,b){if(b)this._doOnLoad=function(){b()};this.callEvent("onXLS",[]);this._xmlLoader.loadXML(a)};this.loadXMLString=function(a,b){if(b)this._doOnLoad=
+function(){b()};this._xmlLoader.loadXMLString(a)};this._buildMenu=function(a,b){for(var c=0,d=0;d<a.childNodes.length;d++)if(a.childNodes[d].tagName==this.itemTagName){var e=a.childNodes[d],f={};f.id=this.idPrefix+(e.getAttribute("id")||this._genStr(24));f.title=e.getAttribute("text")||"";f.imgen=e.getAttribute("img")||"";f.imgdis=e.getAttribute("imgdis")||"";f.tip="";f.hotkey="";e.getAttribute("cssNormal")!=null&&(f.cssNormal=e.getAttribute("cssNormal"));f.type=e.getAttribute("type")||"item";if(f.type==
+"checkbox")f.checked=e.getAttribute("checked")!=null,f.imgen="chbx_"+(f.checked?"1":"0"),f.imgdis=f.imgen;if(f.type=="radio")f.checked=e.getAttribute("checked")!=null,f.imgen="rdbt_"+(f.checked?"1":"0"),f.imgdis=f.imgen,f.group=e.getAttribute("group")||this._genStr(24),this.radio[f.group]==null&&(this.radio[f.group]=[]),this.radio[f.group][this.radio[f.group].length]=f.id;f.state=e.getAttribute("enabled")!=null||e.getAttribute("disabled")!=null?e.getAttribute("enabled")=="false"||e.getAttribute("disabled")==
+"true"?"disabled":"enabled":"enabled";f.parent=b!=null?b:this.idPrefix+this.topId;f.complex=this.dLoad?e.getAttribute("complex")!=null?!0:!1:this._buildMenu(e,f.id)>0;this.dLoad&&f.complex&&(f.loaded="no");this.itemPull[f.id]=f;for(var g=0;g<e.childNodes.length;g++){var o=e.childNodes[g].tagName;o!=null&&(o=o.toLowerCase());if(o==this.userDataTagName){var p=e.childNodes[g];p.getAttribute("name")!=null&&(this.userData[f.id+"_"+p.getAttribute("name")]=p.firstChild.nodeValue!=null?p.firstChild.nodeValue:
+"")}if(o==this.itemTextTagName)f.title=e.childNodes[g].firstChild.nodeValue;if(o==this.itemTipTagName)f.tip=e.childNodes[g].firstChild.nodeValue;if(o==this.itemHotKeyTagName)f.hotkey=e.childNodes[g].firstChild.nodeValue;if(o==this.itemHrefTagName&&f.type=="item")f.href_link=e.childNodes[g].firstChild.nodeValue,e.childNodes[g].getAttribute("target")!=null&&(f.href_target=e.childNodes[g].getAttribute("target"))}c++}return c};this._xmlParser=function(){if(c.dLoad){var a=this.getXMLTopNode("menu");parentId=
+a.getAttribute("parentId")!=null?a.getAttribute("parentId"):null;if(parentId==null)c._buildMenu(a,null),c._initTopLevelMenu();else{c._buildMenu(a,c.idPrefix+parentId);c._addSubMenuPolygon(c.idPrefix+parentId,c.idPrefix+parentId);if(c.menuSelected==c.idPrefix+parentId){var b=c.idPrefix+parentId,d=c.itemPull[c.idPrefix+parentId].parent==c.idPrefix+c.topId,e=d&&!c.context?c.dirTopLevel:c.dirSubLevel,f=!1;if(d&&c.menuModeTopLevelTimeout&&c.menuMode=="web"&&!c.context){var g=c.idPull[c.idPrefix+parentId];
+if(g._mouseOver==!0){var n=c.menuModeTopLevelTimeoutTime-((new Date).getTime()-g._dynLoadTM);if(n>1)g._menuOpenTM=window.setTimeout(function(){c._showPolygon(b,e)},n),f=!0}}f||c._showPolygon(b,e)}c.itemPull[c.idPrefix+parentId].loaded="yes";c.loaderIcon==!0&&c._updateLoaderIcon(c.idPrefix+parentId,!1)}this.destructor();c.callEvent("onXLE",[])}else a=this.getXMLTopNode("menu"),c._buildMenu(a,null),c.init(),c.callEvent("onXLE",[]),c._doOnLoad()};this._xmlLoader=new dtmlXMLLoaderObject(this._xmlParser,
+window);this._showSubLevelItem=function(a,b){if(document.getElementById("arrow_"+this.idPrefix+a)!=null)document.getElementById("arrow_"+this.idPrefix+a).style.display=b?"none":"";if(document.getElementById("image_"+this.idPrefix+a)!=null)document.getElementById("image_"+this.idPrefix+a).style.display=b?"none":"";if(document.getElementById(this.idPrefix+a)!=null)document.getElementById(this.idPrefix+a).style.display=b?"":"none"};this._hideSubLevelItem=function(a){this._showSubLevelItem(a,!0)};this.idPrefix=
+this._genStr(12);this._bodyClick=function(a){a=a||event;a.button==2||_isOpera&&a.ctrlKey==!0||(c.context?c.contextAutoHide&&(!_isOpera||c._isContextMenuVisible()&&_isOpera)&&c._hideContextMenu():c._clearAndHide())};this._bodyContext=function(a){var a=a||event,b=(a.srcElement||a.target).className;if(!(b.search("dhtmlxMenu")!=-1&&b.search("SubLevelArea")!=-1)){var d=!0,e=a.target||a.srcElement;e.id!=null&&c.isContextZone(e.id)&&(d=!1);e==document.body&&(d=!1);d&&c.hideContextMenu()}};_isIE?(document.body.attachEvent("onclick",
+this._bodyClick),document.body.attachEvent("oncontextmenu",this._bodyContext)):(window.addEventListener("click",this._bodyClick,!1),window.addEventListener("contextmenu",this._bodyContext,!1));this._UID=this._genStr(32);dhtmlxMenuObjectLiveInstances[this._UID]=this;dhtmlxEventable(this);return this}
+dhtmlXMenuObject.prototype.init=function(){if(this._isInited!=!0)this.dLoad?(this.callEvent("onXLS",[]),this._xmlLoader.loadXML(this.dLoadUrl+this.dLoadSign+"action=loadMenu&etc="+(new Date).getTime())):(this._initTopLevelMenu(),this._isInited=!0)};
+dhtmlXMenuObject.prototype._countVisiblePolygonItems=function(a){var b=0,c;for(c in this.itemPull){var d=this.itemPull[c].parent,e=this.itemPull[c].type;this.idPull[c]!=null&&d==a&&(e=="item"||e=="radio"||e=="checkbox")&&this.idPull[c].style.display!="none"&&b++}return b};
+dhtmlXMenuObject.prototype._redefineComplexState=function(a){if(this.idPrefix+this.topId!=a&&this.idPull["polygon_"+a]!=null&&this.idPull[a]!=null){var b=this._countVisiblePolygonItems(a);b>0&&!this.itemPull[a].complex&&this._updateItemComplexState(a,!0,!1);b==0&&this.itemPull[a].complex&&this._updateItemComplexState(a,!1,!1)}};
+dhtmlXMenuObject.prototype._updateItemComplexState=function(a,b){if(!this.context&&this._getItemLevelType(a.replace(this.idPrefix,""))=="TopLevel")this.itemPull[a].complex=b;else if(!(this.idPull[a]==null||this.itemPull[a]==null))if(this.itemPull[a].complex=b,a!=this.idPrefix+this.topId){var c=null,d=this.idPull[a].childNodes[this._rtl?0:2];d.childNodes[0]&&String(d.childNodes[0].className).search("complex_arrow")===0&&(c=d.childNodes[0]);if(this.itemPull[a].complex){if(c==null){c=document.createElement("DIV");
+c.className="complex_arrow";for(c.id="arrow_"+a;d.childNodes.length>0;)d.removeChild(d.childNodes[0]);d.appendChild(c)}if(this.dLoad&&this.itemPull[a].loaded=="get"&&this.loaderIcon){if(c.className!="complex_arrow_loading")c.className="complex_arrow_loading"}else c.className="complex_arrow"}else!this.itemPull[a].complex&&c!=null&&(d.removeChild(c),this.itemPull[a].hotkey_backup!=null&&this.setHotKey&&this.setHotKey(a.replace(this.idPrefix,""),this.itemPull[a].hotkey_backup))}};
+dhtmlXMenuObject.prototype._getItemLevelType=function(a){return this.itemPull[this.idPrefix+a].parent==this.idPrefix+this.topId?"TopLevel":"SubLevelArea"};
+dhtmlXMenuObject.prototype._redistribTopLevelSelection=function(a){var b=this._getSubItemToDeselectByPolygon("parent");this._removeSubItemFromSelected(-1,-1);for(var c=0;c<b.length;c++)if(b[c]!=a&&this._hidePolygon(b[c]),this.idPull[b[c]]!=null&&b[c]!=a)this.idPull[b[c]].className=this.idPull[b[c]].className.replace(/Selected/g,"Normal");if(this.itemPull[this.idPrefix+a].state=="enabled")this.idPull[this.idPrefix+a].className="dhtmlxMenu_"+this.skin+"_TopLevel_Item_Selected",this._addSubItemToSelected(this.idPrefix+
+a,"parent"),this.menuSelected=this.menuMode=="win"?this.menuSelected!=-1?a:this.menuSelected:a,this.itemPull[this.idPrefix+a].complex&&this.menuSelected!=-1&&this._showPolygon(this.idPrefix+a,this.dirTopLevel)};
+dhtmlXMenuObject.prototype._initTopLevelMenu=function(){this.dirTopLevel="bottom";this.dirSubLevel=this._rtl?"left":"right";if(this.context)this.idPull[this.idPrefix+this.topId]=[0,0],this._addSubMenuPolygon(this.idPrefix+this.topId,this.idPrefix+this.topId);else for(var a=this._getMenuNodes(this.idPrefix+this.topId),b=0;b<a.length;b++)this.itemPull[a[b]].type=="item"&&this._renderToplevelItem(a[b],null),this.itemPull[a[b]].type=="separator"&&this._renderSeparator(a[b],null)};
+dhtmlXMenuObject.prototype._renderToplevelItem=function(a,b){var c=this,d=document.createElement("DIV");d.id=a;d.className=this.itemPull[a].state=="enabled"&&this.itemPull[a].cssNormal!=null?this.itemPull[a].cssNormal:"dhtmlxMenu_"+this.skin+"_TopLevel_Item_"+(this.itemPull[a].state=="enabled"?"Normal":"Disabled");if(this.itemPull[a].title!=""){var e=document.createElement("DIV");e.className="top_level_text";e.innerHTML=this.itemPull[a].title;d.appendChild(e)}if(this.itemPull[a].tip.length>0)d.title=
+this.itemPull[a].tip;if(this.itemPull[a].imgen!=""||this.itemPull[a].imgdis!=""){var f=this.itemPull[a][this.itemPull[a].state=="enabled"?"imgen":"imgdis"];if(f){var g=document.createElement("IMG");g.border="0";g.id="image_"+a;g.src=this.imagePath+f;g.className="dhtmlxMenu_TopLevel_Item_Icon";d.childNodes.length>0&&!this._rtl?d.insertBefore(g,d.childNodes[0]):d.appendChild(g)}}d.onselectstart=function(a){a=a||event;return a.returnValue=!1};d.oncontextmenu=function(a){a=a||event;return a.returnValue=
+!1};if(!this.cont)this.cont=document.createElement("DIV"),this.cont.dir="ltr",this.cont.className=this._align=="right"?"align_right":"align_left",this.base.appendChild(this.cont);b!=null&&(b++,b<0&&(b=0),b>this.cont.childNodes.length-1&&(b=null));b!=null?this.cont.insertBefore(d,this.cont.childNodes[b]):this.cont.appendChild(d);this.idPull[d.id]=d;this.itemPull[a].complex&&!this.dLoad&&this._addSubMenuPolygon(this.itemPull[a].id,this.itemPull[a].id);d.onmouseover=function(){c.menuMode=="web"&&window.clearTimeout(c.menuTimeoutHandler);
+var a=c._getSubItemToDeselectByPolygon("parent");c._removeSubItemFromSelected(-1,-1);for(var b=0;b<a.length;b++)if(a[b]!=this.id&&c._hidePolygon(a[b]),c.idPull[a[b]]!=null&&a[b]!=this.id)if(c.itemPull[a[b]].cssNormal!=null)c.idPull[a[b]].className=c.itemPull[a[b]].cssNormal;else{if(c.idPull[a[b]].className=="sub_item_selected")c.idPull[a[b]].className="sub_item";c.idPull[a[b]].className=c.idPull[a[b]].className.replace(/Selected/g,"Normal")}if(c.itemPull[this.id].state=="enabled"){this.className=
+"dhtmlxMenu_"+c.skin+"_TopLevel_Item_Selected";c._addSubItemToSelected(this.id,"parent");c.menuSelected=c.menuMode=="win"?c.menuSelected!=-1?this.id:c.menuSelected:this.id;if(c.dLoad&&c.itemPull[this.id].loaded=="no"){if(c.menuModeTopLevelTimeout&&c.menuMode=="web"&&!c.context)this._mouseOver=!0,this._dynLoadTM=(new Date).getTime();var d=new dtmlXMLLoaderObject(c._xmlParser,window);c.itemPull[this.id].loaded="get";c.callEvent("onXLS",[]);d.loadXML(c.dLoadUrl+c.dLoadSign+"action=loadMenu&parentId="+
+this.id.replace(c.idPrefix,"")+"&etc="+(new Date).getTime())}if((!c.dLoad||c.dLoad&&(!c.itemPull[this.id].loaded||c.itemPull[this.id].loaded=="yes"))&&c.itemPull[this.id].complex&&c.menuSelected!=-1)if(c.menuModeTopLevelTimeout&&c.menuMode=="web"&&!c.context){this._mouseOver=!0;var e=this.id;this._menuOpenTM=window.setTimeout(function(){c._showPolygon(e,c.dirTopLevel)},c.menuModeTopLevelTimeoutTime)}else c._showPolygon(this.id,c.dirTopLevel)}c._doOnTouchMenu(this.id.replace(c.idPrefix,""))};d.onmouseout=
+function(){if(!(c.itemPull[this.id].complex&&c.menuSelected!=-1)&&c.itemPull[this.id].state=="enabled")d.className=c.itemPull[this.id].cssNormal!=null?c.itemPull[this.id].cssNormal:"dhtmlxMenu_"+c.skin+"_TopLevel_Item_Normal";if(c.menuMode=="web")window.clearTimeout(c.menuTimeoutHandler),c.menuTimeoutHandler=window.setTimeout(function(){c._clearAndHide()},c.menuTimeoutMsec,"JavaScript");if(c.menuModeTopLevelTimeout&&c.menuMode=="web"&&!c.context)this._mouseOver=!1,window.clearTimeout(this._menuOpenTM)};
+d.onclick=function(a){c.menuMode=="web"&&window.clearTimeout(c.menuTimeoutHandler);if(!(c.menuMode!="web"&&c.itemPull[this.id].state=="disabled")){a=a||event;a.cancelBubble=!0;a.returnValue=!1;if(c.menuMode=="win"&&c.itemPull[this.id].complex){if(c.menuSelected==this.id){c.menuSelected=-1;var b=!1}else c.menuSelected=this.id,b=!0;b?c._showPolygon(this.id,c.dirTopLevel):c._hidePolygon(this.id)}var d=c.itemPull[this.id].complex?"c":"-",e=c.itemPull[this.id].state!="enabled"?"d":"-",f={ctrl:a.ctrlKey,
+alt:a.altKey,shift:a.shiftKey};c._doOnClick(this.id.replace(c.idPrefix,""),d+e+"t",f);return!1}}};dhtmlXMenuObject.prototype.setImagePath=function(){};dhtmlXMenuObject.prototype.setIconsPath=function(a){this.imagePath=a};dhtmlXMenuObject.prototype.setIconPath=dhtmlXMenuObject.prototype.setIconsPath;
+dhtmlXMenuObject.prototype._updateItemImage=function(a){var a=this.idPrefix+a,b=this.itemPull[a].parent==this.idPrefix+this.topId&&!this.context,c=null;if(b)for(var d=0;d<this.idPull[a].childNodes.length;d++)try{this.idPull[a].childNodes[d].className=="dhtmlxMenu_TopLevel_Item_Icon"&&(c=this.idPull[a].childNodes[d])}catch(e){}else try{c=this.idPull[a].childNodes[this._rtl?2:0].childNodes[0]}catch(f){}var g=this.itemPull[a].type=="radio"?this.itemPull[a][this.itemPull[a].state=="enabled"?"imgen":"imgdis"]:
+this.itemPull[a][this.itemPull[a].state=="enabled"?"imgen":"imgdis"];if(g.length>0)if(c!=null)c.src=this.imagePath+g;else if(b)c=document.createElement("IMG"),c.className="dhtmlxMenu_TopLevel_Item_Icon",c.src=this.imagePath+g,c.border="0",c.id="image_"+a,!this._rtl&&this.idPull[a].childNodes.length>0?this.idPull[a].insertBefore(c,this.idPull[a].childNodes[0]):this.idPull[a].appendChild(c);else{c=document.createElement("IMG");c.className="sub_icon";c.src=this.imagePath+g;c.border="0";c.id="image_"+
+a;for(var h=this.idPull[a].childNodes[this._rtl?2:0];h.childNodes.length>0;)h.removeChild(h.childNodes[0]);h.appendChild(c)}else c!=null&&c.parentNode.removeChild(c)};
+dhtmlXMenuObject.prototype.removeItem=function(a,b,c){b||(a=this.idPrefix+a);var d=null;if(a!=this.idPrefix+this.topId){if(this.itemPull[a]==null)return;var e=this.itemPull[a].type;if(e=="separator"){var f=this.idPull["separator_"+a];this.itemPull[a].parent==this.idPrefix+this.topId?(f.onclick=null,f.onselectstart=null,f.id=null):(f.childNodes[0].childNodes[0].onclick=null,f.childNodes[0].childNodes[0].onselectstart=null,f.childNodes[0].childNodes[0].id=null,f.childNodes[0].removeChild(f.childNodes[0].childNodes[0]),
+f.removeChild(f.childNodes[0]));f.parentNode.removeChild(f);this.idPull["separator_"+a]=null;this.itemPull[a]=null;delete this.idPull["separator_"+a]}else{d=this.itemPull[a].parent;f=this.idPull[a];f.onclick=null;f.oncontextmenu=null;f.onmouseover=null;f.onmouseout=null;f.onselectstart=null;for(f.id=null;f.childNodes.length>0;)f.removeChild(f.childNodes[0]);f.parentNode.removeChild(f);this.idPull[a]=null;this.itemPull[a]=null;delete this.idPull[a]}delete this.itemPull[a];e=f=null}for(var g in this.itemPull)this.itemPull[g].parent==
+a&&this.removeItem(g,!0,!0);var h=Array(a);d!=null&&!c&&this.idPull["polygon_"+d]!=null&&this.idPull["polygon_"+d].tbd.childNodes.length==0&&(h.push(d),this._updateItemComplexState(d,!1,!1));for(var i=0;i<h.length;i++)if(this.idPull["polygon_"+h[i]]){var j=this.idPull["polygon_"+h[i]];j.onclick=null;j.oncontextmenu=null;j.tbl.removeChild(j.tbd);j.tbd=null;j.removeChild(j.tbl);j.tbl=null;j.id=null;j.parentNode.removeChild(j);j=null;if(this._isIE6){var k="polygon_"+h[i]+"_ie6cover";this.idPull[k]!=
+null&&(document.body.removeChild(this.idPull[k]),delete this.idPull[k])}this.idPull["arrowup_"+a]!=null&&this._removeArrow&&this._removeArrow("arrowup_"+a);this.idPull["arrowdown_"+a]!=null&&this._removeArrow&&this._removeArrow("arrowdown_"+a);this.idPull["polygon_"+h[i]]=null;delete this.idPull["polygon_"+h[i]]}h=null};
+dhtmlXMenuObject.prototype._getAllParents=function(a){var b=[],c;for(c in this.itemPull)if(this.itemPull[c].parent==a&&(b[b.length]=this.itemPull[c].id,this.itemPull[c].complex))for(var d=this._getAllParents(this.itemPull[c].id),e=0;e<d.length;e++)b[b.length]=d[e];return b};
+dhtmlXMenuObject.prototype.renderAsContextMenu=function(){this.context=!0;if(this.base._autoSkinUpdate==!0)this.base.className=this.base.className.replace("dhtmlxMenu_"+this.skin+"_Middle",""),this.base._autoSkinUpdate=!1;this.addBaseIdAsContextZone!=null&&this.addContextZone(this.addBaseIdAsContextZone)};
+dhtmlXMenuObject.prototype.addContextZone=function(a){if(a==document.body)var a="document.body."+this.idPrefix,b=document.body;else b=document.getElementById(a);var c=!1,d;for(d in this.contextZones)c=c||d==a||this.contextZones[d]==b;if(c==!0)return!1;this.contextZones[a]=b;var e=this;if(_isOpera)this.operaContext=function(a){e._doOnContextMenuOpera(a,e)},b.addEventListener("mouseup",this.operaContext,!1);else{if(b.oncontextmenu!=null&&!b._oldContextMenuHandler)b._oldContextMenuHandler=b.oncontextmenu;
+b.oncontextmenu=function(a){for(var b in dhtmlxMenuObjectLiveInstances)b!=e._UID&&dhtmlxMenuObjectLiveInstances[b].context&&dhtmlxMenuObjectLiveInstances[b]._hideContextMenu();a=a||event;a.cancelBubble=!0;a.returnValue=!1;e._doOnContextBeforeCall(a,this);return!1}}};
+dhtmlXMenuObject.prototype._doOnContextMenuOpera=function(a,b){for(var c in dhtmlxMenuObjectLiveInstances)c!=b._UID&&dhtmlxMenuObjectLiveInstances[c].context&&dhtmlxMenuObjectLiveInstances[c]._hideContextMenu();a.cancelBubble=!0;a.returnValue=!1;a.button==0&&a.ctrlKey==!0&&b._doOnContextBeforeCall(a,this);return!1};
+dhtmlXMenuObject.prototype.removeContextZone=function(a){if(!this.isContextZone(a))return!1;a==document.body&&(a="document.body."+this.idPrefix);var b=this.contextZones[a];_isOpera?b.removeEventListener("mouseup",this.operaContext,!1):(b.oncontextmenu=b._oldContextMenuHandler!=null?b._oldContextMenuHandler:null,b._oldContextMenuHandler=null);try{this.contextZones[a]=null,delete this.contextZones[a]}catch(c){}return!0};
+dhtmlXMenuObject.prototype.isContextZone=function(a){if(a==document.body&&this.contextZones["document.body."+this.idPrefix]!=null)return!0;var b=!1;this.contextZones[a]!=null&&this.contextZones[a]==document.getElementById(a)&&(b=!0);return b};dhtmlXMenuObject.prototype._isContextMenuVisible=function(){return this.idPull["polygon_"+this.idPrefix+this.topId]==null?!1:this.idPull["polygon_"+this.idPrefix+this.topId].style.display==""};
+dhtmlXMenuObject.prototype._showContextMenu=function(a,b,c){this._clearAndHide();if(this.idPull["polygon_"+this.idPrefix+this.topId]==null)return!1;window.clearTimeout(this.menuTimeoutHandler);this.idPull[this.idPrefix+this.topId]=[a,b];this._showPolygon(this.idPrefix+this.topId,"bottom");this.callEvent("onContextMenu",[c])};
+dhtmlXMenuObject.prototype._hideContextMenu=function(){if(this.idPull["polygon_"+this.idPrefix+this.topId]==null)return!1;this._clearAndHide();this._hidePolygon(this.idPrefix+this.topId);this.zInd=this.zIndInit};
+dhtmlXMenuObject.prototype._doOnContextBeforeCall=function(a,b){this.contextMenuZoneId=b.id;this._clearAndHide();this._hideContextMenu();var c=a.srcElement||a.target,d=_isIE||_isOpera||_KHTMLrv?a.offsetX:a.layerX,e=_isIE||_isOpera||_KHTMLrv?a.offsetY:a.layerY,f=getAbsoluteLeft(c)+d,g=getAbsoluteTop(c)+e;this.checkEvent("onBeforeContextMenu")?this.callEvent("onBeforeContextMenu",[b.id,a])&&this.contextAutoShow&&(this._showContextMenu(f,g),this.callEvent("onAfterContextMenu",[b.id,a])):this.contextAutoShow&&
+(this._showContextMenu(f,g),this.callEvent("onAfterContextMenu",[b.id]))};dhtmlXMenuObject.prototype.showContextMenu=function(a,b){this._showContextMenu(a,b,!1)};dhtmlXMenuObject.prototype.hideContextMenu=function(){this._hideContextMenu()};
+dhtmlXMenuObject.prototype._autoDetectVisibleArea=function(){if(!this._isVisibleArea)this.menuX1=document.body.scrollLeft,this.menuX2=this.menuX1+(window.innerWidth||document.body.clientWidth),this.menuY1=Math.max((_isIE?document.documentElement:document.getElementsByTagName("html")[0]).scrollTop,document.body.scrollTop),this.menuY2=this.menuY1+(_isIE?Math.max(document.documentElement.clientHeight||0,document.documentElement.offsetHeight||0,document.body.clientHeight||0):window.innerHeight)};
+dhtmlXMenuObject.prototype.getItemPosition=function(a){var a=this.idPrefix+a,b=-1;if(this.itemPull[a]==null)return b;for(var c=this.itemPull[a].parent,d=this.idPull["polygon_"+c]!=null?this.idPull["polygon_"+c].tbd:this.cont,e=0;e<d.childNodes.length;e++)if(d.childNodes[e]==this.idPull["separator_"+a]||d.childNodes[e]==this.idPull[a])b=e;return b};
+dhtmlXMenuObject.prototype.setItemPosition=function(a,b){a=this.idPrefix+a;if(this.idPull[a]!=null){var c=this.itemPull[a].parent==this.idPrefix+this.topId,d=this.idPull[a],e=this.getItemPosition(a.replace(this.idPrefix,"")),f=this.itemPull[a].parent,g=this.idPull["polygon_"+f]!=null?this.idPull["polygon_"+f].tbd:this.cont;g.removeChild(g.childNodes[e]);b<0&&(b=0);c&&b<1&&(b=1);b<g.childNodes.length?g.insertBefore(d,g.childNodes[b]):g.appendChild(d)}};
+dhtmlXMenuObject.prototype.getParentId=function(a){a=this.idPrefix+a;return this.itemPull[a]==null?null:(this.itemPull[a].parent!=null?this.itemPull[a].parent:this.topId).replace(this.idPrefix,"")};
+dhtmlXMenuObject.prototype.addNewSibling=function(a,b,c,d,e,f){var g=this.idPrefix+(b!=null?b:this._genStr(24)),h=this.idPrefix+(a!=null?this.getParentId(a):this.topId);this._addItemIntoGlobalStrorage(g,h,c,"item",d,e,f);h==this.idPrefix+this.topId&&!this.context?this._renderToplevelItem(g,this.getItemPosition(a)):this._renderSublevelItem(g,this.getItemPosition(a))};
+dhtmlXMenuObject.prototype.addNewChild=function(a,b,c,d,e,f,g){if(a==null)if(this.context)a=this.topId;else{this.addNewSibling(a,c,d,e,f,g);b!=null&&this.setItemPosition(c,b);return}c=this.idPrefix+(c!=null?c:this._genStr(24));this.setHotKey&&this.setHotKey(a,"");a=this.idPrefix+a;this._addItemIntoGlobalStrorage(c,a,d,"item",e,f,g);this.idPull["polygon_"+a]==null&&this._renderSublevelPolygon(a,a);this._renderSublevelItem(c,b-1);this._redefineComplexState(a)};
+dhtmlXMenuObject.prototype._addItemIntoGlobalStrorage=function(a,b,c,d,e,f,g){var h={id:a,title:c,imgen:f!=null?f:"",imgdis:g!=null?g:"",type:d,state:e==!0?"disabled":"enabled",parent:b,complex:!1,hotkey:"",tip:""};this.itemPull[h.id]=h};
+dhtmlXMenuObject.prototype._addSubMenuPolygon=function(a,b){for(var c=this._renderSublevelPolygon(a,b),d=this._getMenuNodes(b),e=0;e<d.length;e++)this.itemPull[d[e]].type=="separator"?this._renderSeparator(d[e],null):this._renderSublevelItem(d[e],null);for(var f=a==b?"topLevel":"subLevel",e=0;e<d.length;e++)this.itemPull[d[e]].complex&&this._addSubMenuPolygon(a,this.itemPull[d[e]].id)};
+dhtmlXMenuObject.prototype._renderSublevelPolygon=function(a,b){var c=document.createElement("DIV");c.className="dhtmlxMenu_"+this.skin+"_SubLevelArea_Polygon "+(this._rtl?"dir_right":"");c.dir="ltr";c.oncontextmenu=function(a){a=a||event;a.returnValue=!1;a.cancelBubble=!0;return!1};c.id="polygon_"+b;c.onclick=function(a){a=a||event;a.cancelBubble=!0};c.style.display="none";document.body.insertBefore(c,document.body.firstChild);var d=document.createElement("TABLE");d.className="dhtmlxMebu_SubLevelArea_Tbl";
+d.cellSpacing=0;d.cellPadding=0;d.border=0;var e=document.createElement("TBODY");d.appendChild(e);c.appendChild(d);c.tbl=d;c.tbd=e;this.idPull[c.id]=c;this.sxDacProc!=null&&(this.idPull["sxDac_"+b]=new this.sxDacProc(c,c.className),_isIE?(this.idPull["sxDac_"+b]._setSpeed(this.dacSpeedIE),this.idPull["sxDac_"+b]._setCustomCycle(this.dacCyclesIE)):(this.idPull["sxDac_"+b]._setSpeed(this.dacSpeed),this.idPull["sxDac_"+b]._setCustomCycle(this.dacCycles)));return c};
+dhtmlXMenuObject.prototype._renderSublevelItem=function(a,b){var c=this,d=document.createElement("TR");d.className=this.itemPull[a].state=="enabled"?"sub_item":"sub_item_dis";var e=document.createElement("TD");e.className="sub_item_icon";var f=this.itemPull[a][this.itemPull[a].state=="enabled"?"imgen":"imgdis"];if(f!=""){var g=this.itemPull[a].type;if(g=="checkbox"||g=="radio"){var h=document.createElement("DIV");h.id="image_"+this.itemPull[a].id;h.className="sub_icon "+f;e.appendChild(h)}if(!(g==
+"checkbox"||g=="radio"))h=document.createElement("IMG"),h.id="image_"+this.itemPull[a].id,h.className="sub_icon",h.src=this.imagePath+f,e.appendChild(h)}var i=document.createElement("TD");i.className="sub_item_text";if(this.itemPull[a].title!=""){var j=document.createElement("DIV");j.className="sub_item_text";j.innerHTML=this.itemPull[a].title;i.appendChild(j)}else i.innerHTML="&nbsp;";var k=document.createElement("TD");k.className="sub_item_hk";if(this.itemPull[a].complex){var m=document.createElement("DIV");
+m.className="complex_arrow";m.id="arrow_"+this.itemPull[a].id;k.appendChild(m)}else if(this.itemPull[a].hotkey.length>0&&!this.itemPull[a].complex){var l=document.createElement("DIV");l.className="sub_item_hk";l.innerHTML=this.itemPull[a].hotkey;k.appendChild(l)}else k.innerHTML="&nbsp;";d.appendChild(this._rtl?k:e);d.appendChild(i);d.appendChild(this._rtl?e:k);d.id=this.itemPull[a].id;d.parent=this.itemPull[a].parent;if(this.itemPull[a].tip.length>0)d.title=this.itemPull[a].tip;d.onselectstart=function(a){a=
+a||event;return a.returnValue=!1};d.onmouseover=function(){c.menuMode=="web"&&window.clearTimeout(c.menuTimeoutHandler);c._redistribSubLevelSelection(this.id,this.parent)};if(c.menuMode=="web")d.onmouseout=function(){window.clearTimeout(c.menuTimeoutHandler);c.menuTimeoutHandler=window.setTimeout(function(){c._clearAndHide()},c.menuTimeoutMsec,"JavaScript")};d.onclick=function(a){if(c.checkEvent("onClick")||!c.itemPull[this.id].complex){a=a||event;a.cancelBubble=!0;a.returnValue=!1;tc=c.itemPull[this.id].complex?
+"c":"-";td=c.itemPull[this.id].state=="enabled"?"-":"d";var b={ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};switch(c.itemPull[this.id].type){case "checkbox":c._checkboxOnClickHandler(this.id.replace(c.idPrefix,""),tc+td+"n",b);break;case "radio":c._radioOnClickHandler(this.id.replace(c.idPrefix,""),tc+td+"n",b);break;case "item":c._doOnClick(this.id.replace(c.idPrefix,""),tc+td+"n",b)}return!1}};var n=this.idPull["polygon_"+this.itemPull[a].parent];b!=null&&(b++,b<0&&(b=0),b>n.tbd.childNodes.length-
+1&&(b=null));b!=null&&n.tbd.childNodes[b]!=null?n.tbd.insertBefore(d,n.tbd.childNodes[b]):n.tbd.appendChild(d);this.idPull[d.id]=d};
+dhtmlXMenuObject.prototype._renderSeparator=function(a,b){var c=this.context?"SubLevelArea":this.itemPull[a].parent==this.idPrefix+this.topId?"TopLevel":"SubLevelArea";if(!(c=="TopLevel"&&this.context)){var d=this;if(c!="TopLevel"){var e=document.createElement("TR");e.className="sub_sep";var f=document.createElement("TD");f.colSpan="3";e.appendChild(f)}var g=document.createElement("DIV");g.id="separator_"+a;g.className=c=="TopLevel"?"top_sep":"sub_sep";g.onselectstart=function(a){a=a||event;a.returnValue=
+!1};g.onclick=function(a){a=a||event;a.cancelBubble=!0;var b={ctrl:a.ctrlKey,alt:a.altKey,shift:a.shiftKey};d._doOnClick(this.id.replace("separator_"+d.idPrefix,""),"--s",b)};if(c=="TopLevel"){if(b!=null)b++,b<0&&(b=0),this.cont.childNodes[b]!=null?this.cont.insertBefore(g,this.cont.childNodes[b]):this.cont.appendChild(g);else{var h=this.cont.childNodes[this.cont.childNodes.length-1];String(h).search("TopLevel_Text")==-1?this.cont.appendChild(g):this.cont.insertBefore(g,h)}this.idPull[g.id]=g}else{var i=
+this.idPull["polygon_"+this.itemPull[a].parent];b!=null&&(b++,b<0&&(b=0),b>i.tbd.childNodes.length-1&&(b=null));b!=null&&i.tbd.childNodes[b]!=null?i.tbd.insertBefore(e,i.tbd.childNodes[b]):i.tbd.appendChild(e);f.appendChild(g);this.idPull[g.id]=e}}};dhtmlXMenuObject.prototype.addNewSeparator=function(a,b){var b=this.idPrefix+(b!=null?b:this._genStr(24)),c=this.idPrefix+this.getParentId(a);this._addItemIntoGlobalStrorage(b,c,"","separator",!1,"","");this._renderSeparator(b,this.getItemPosition(a))};
+dhtmlXMenuObject.prototype.hide=function(){this._clearAndHide()};dhtmlXMenuObject.prototype.clearAll=function(){this.removeItem(this.idPrefix+this.topId,!0);this._isInited=!1;this.idPrefix=this._genStr(12)};
+dhtmlXMenuObject.prototype.unload=function(){_isIE?(document.body.detachEvent("onclick",this._bodyClick),document.body.detachEvent("oncontextmenu",this._bodyContext)):(window.removeEventListener("click",this._bodyClick,!1),window.removeEventListener("contextmenu",this._bodyContext,!1));this._bodyContext=this._bodyClick=null;this.removeItem(this.idPrefix+this.topId,!0);this.idPull=this.itemPull=null;if(this.context)for(var a in this.contextZones)this.removeContextZone(a);if(this.cont!=null)this.cont.className=
+"",this.cont.parentNode.removeChild(this.cont),this.cont=null;if(this.base!=null){this.base.className="";if(!this.context)this.base.oncontextmenu=this.base._oldContextMenuHandler||null;this.base=this.base.onselectstart=null}this.setSkin=null;this.detachAllEvents();if(this._xmlLoader)this._xmlLoader.destructor(),this._xmlLoader=null;this.extendedModule=this.serialize=this.addCheckbox=this.getCheckboxState=this.setCheckboxState=this.addRadioButton=this.setRadioChecked=this.getRadioChecked=this.userData=
+this.setOverflowHeight=this.contextZones=this.getCircuit=this.clearHref=this.setHref=this.setAlign=this.setRTL=this.setTopText=this.setItemSelected=this.getHotKey=this.setHotKey=this.getTooltip=this.setTooltip=this.setVisibleArea=this.getContextMenuHideAllMode=this.setContextMenuHideAllMode=this.setAutoHideMode=this.setAutoShowMode=this.clearItemImage=this.setItemImage=this.getItemImage=this.enableDynamicLoading=this.setWebModeTimeout=this.setOpenMode=this.getUserData=this.setUserData=this.isItemHidden=
+this.showItem=this.hideItem=this.loadFromHTML=this.setItemText=this.getItemText=this.isItemEnabled=this.setItemDisabled=this.setItemEnabled=this._removeArrow=this._checkboxOnClickHandler=this._updateCheckboxImage=this._readLevel=this._setCheckboxState=this._getCheckboxState=this._radioOnClickHandler=this._setRadioState=this._getRadioImgObj=this._countPolygonItems=this._doScrollDown=this._doScrollUp=this._isArrowExists=this._removeDownArrow=this._removeUpArrow=this._addDownArrow=this._addUpArrow=this._checkArrowsState=
+this._clearAllSelectedSubItemsInPolygon=this._updateLoaderIcon=this._changeItemVisible=this._changeItemState=this.hideContextMenu=this.showContextMenu=this.hide=this.detachAllEvents=this.radio=this.items=this.unload=this.dhx_Event=this.detachEvent=this.eventCatcher=this.checkEvent=this.callEvent=this.attachEvent=this.addNewSeparator=this.addNewChild=this.addNewSibling=this.getParentId=this.setItemPosition=this.getItemPosition=this.clearAll=this._hideContextMenu=this._renderSeparator=this._renderSublevelItem=
+this._renderSublevelPolygon=this._addSubMenuPolygon=this._addItemIntoGlobalStrorage=this._autoDetectVisibleArea=this._doOnContextBeforeCall=this._showContextMenu=this._isContextMenuVisible=this.isContextZone=this.removeContextZone=this.addContextZone=this.renderAsContextMenu=this._getAllParents=this.removeItem=this._updateItemImage=this.setIconPath=this.setIconsPath=this.setImagePath=this._renderToplevelItem=this._initTopLevelMenu=this._redistribTopLevelSelection=this._getItemLevelType=this._updateItemComplexState=
+this._redefineComplexState=this._countVisiblePolygonItems=this._hideSubLevelItem=this._showSubLevelItem=this._xmlParser=this._buildMenu=this.loadXMLString=this.loadXML=this.init=this.forEachItem=this.getItemType=this._doOnLoad=this._clearAndHide=this._genStr=this._getMenuNodes=this._searchMenuNode=this._doOnTouchMenu=this._doOnClick=this._redistribSubLevelSelection=this._showPolygon=this._hidePolygon=this._getSubItemToDeselectByPolygon=this._removeSubItemFromSelected=this._addSubItemToSelected=this._openedPolygons=
+this._selectedSubItems=this._enableDacSupport=this.zIndStep=this.zIndInit=this.zInd=this.dacSpeedIE=this.dacSpeed=this.dacCyclesIE=this.dacCycles=this.topId=this.skin=this.userDataTagName=this.itemTipTagName=this.itemTextTagName=this.itemTagName=this.itemHrefTagName=this.itemHotKeyTagName=this.isDhtmlxMenuObject=this.menuTouched=this.menuTimeoutMsec=this.menuTimeoutHandler=this.menuModeTopLevelTimeoutTime=this.menuModeTopLevelTimeout=this.menuMode=this.imagePath=this.idPrefix=this.menuLastClicked=
+this.menuSelected=this.limit=this.dirTopLevel=this.dirSubLevel=this.fixedPosition=this.loaderIcon=this.dLoadUrl=this.dLoadSign=this.dLoad=this.contextMenuZoneId=this.contextHideAllMode=this.contextAutoShow=this.contextAutoHide=this.context=this.addBaseIdAsContextZone=this._topLevelRightMargin=this._topLevelBottomMargin=this._topLevelOffsetLeft=this._topLevelBottomMargin=this._scrollUpTMTime=this._scrollUpTMStep=this._scrollDownTMTime=this._scrollDownTMStep=this._rtl=this._isInited=this._isIE6=this._arrowFFFix=
+this._align=null;dhtmlxMenuObjectLiveInstances[this._UID]=null;try{delete dhtmlxMenuObjectLiveInstances[this._UID]}catch(b){}this._UID=null};var dhtmlxMenuObjectLiveInstances={};dhtmlXMenuObject.prototype.i18n={dhxmenuextalert:"dhtmlxmenu_ext.js required"};
+(function(){dhtmlx.extend_api("dhtmlXMenuObject",{_init:function(a){return[a.parent,a.skin]},align:"setAlign",top_text:"setTopText",context:"renderAsContextMenu",icon_path:"setIconsPath",open_mode:"setOpenMode",rtl:"setRTL",skin:"setSkin",dynamic:"enableDynamicLoading",xml:"loadXML",items:"items",overflow:"setOverflowHeight"},{items:function(a,b){for(var c=1E5,d=null,e=0;e<a.length;e++){var f=a[e];f.type=="separator"?(this.addNewSeparator(d,c,f.id),d=f.id):(this.addNewChild(b,c,f.id,f.text,f.disabled,
+f.img,f.img_disabled),d=f.id,f.items&&this.items(f.items,f.id))}}})})();dhtmlXMenuObject.prototype.extendedModule="DHXMENUEXT";dhtmlXMenuObject.prototype.setItemEnabled=function(a){this._changeItemState(a,"enabled",this._getItemLevelType(a))};dhtmlXMenuObject.prototype.setItemDisabled=function(a){this._changeItemState(a,"disabled",this._getItemLevelType(a))};
+dhtmlXMenuObject.prototype.isItemEnabled=function(a){return this.itemPull[this.idPrefix+a]!=null?this.itemPull[this.idPrefix+a].state=="enabled":!1};
+dhtmlXMenuObject.prototype._changeItemState=function(a,b,c){var d=!1,e=this.idPrefix+a;if(this.itemPull[e]!=null&&this.idPull[e]!=null&&this.itemPull[e].state!=b)this.itemPull[e].state=b,this.idPull[e].className=this.itemPull[e].parent==this.idPrefix+this.topId&&!this.context?"dhtmlxMenu_"+this.skin+"_TopLevel_Item_"+(this.itemPull[e].state=="enabled"?"Normal":"Disabled"):"sub_item"+(this.itemPull[e].state=="enabled"?"":"_dis"),this._updateItemComplexState(this.idPrefix+a,this.itemPull[this.idPrefix+
+a].complex,!1),this._updateItemImage(a,c),this.idPrefix+this.menuLastClicked==e&&c!="TopLevel"&&this._redistribSubLevelSelection(e,this.itemPull[e].parent);return d};dhtmlXMenuObject.prototype.getItemText=function(a){return this.itemPull[this.idPrefix+a]!=null?this.itemPull[this.idPrefix+a].title:""};
+dhtmlXMenuObject.prototype.setItemText=function(a,b){a=this.idPrefix+a;if(this.itemPull[a]!=null&&this.idPull[a]!=null)if(this._clearAndHide(),this.itemPull[a].title=b,this.itemPull[a].parent==this.idPrefix+this.topId&&!this.context){for(var c=null,d=0;d<this.idPull[a].childNodes.length;d++)try{this.idPull[a].childNodes[d].className=="top_level_text"&&(c=this.idPull[a].childNodes[d])}catch(e){}if(String(this.itemPull[a].title).length==""||this.itemPull[a].title==null)c!=null&&c.parentNode.removeChild(c);
+else{if(!c)c=document.createElement("DIV"),c.className="top_level_text",this._rtl&&this.idPull[a].childNodes.length>0?this.idPull[a].insertBefore(c,this.idPull[a].childNodes[0]):this.idPull[a].appendChild(c);c.innerHTML=this.itemPull[a].title}}else{c=null;for(d=0;d<this.idPull[a].childNodes[1].childNodes.length;d++)if(String(this.idPull[a].childNodes[1].childNodes[d].className||"")=="sub_item_text")c=this.idPull[a].childNodes[1].childNodes[d];if(String(this.itemPull[a].title).length==""||this.itemPull[a].title==
+null){if(c)c.parentNode.removeChild(c),c=null,this.idPull[a].childNodes[1].innerHTML="&nbsp;"}else{if(!c)c=document.createElement("DIV"),c.className="sub_item_text",this.idPull[a].childNodes[1].innerHTML="",this.idPull[a].childNodes[1].appendChild(c);c.innerHTML=this.itemPull[a].title}}};dhtmlXMenuObject.prototype.loadFromHTML=function(a,b,c){this.itemTagName="DIV";typeof a=="string"&&(a=document.getElementById(a));this._buildMenu(a,null);this.init();b&&a.parentNode.removeChild(a);c!=null&&c()};
+dhtmlXMenuObject.prototype.hideItem=function(a){this._changeItemVisible(a,!1)};dhtmlXMenuObject.prototype.showItem=function(a){this._changeItemVisible(a,!0)};dhtmlXMenuObject.prototype.isItemHidden=function(a){var b=null;this.idPull[this.idPrefix+a]!=null&&(b=this.idPull[this.idPrefix+a].style.display=="none");return b};
+dhtmlXMenuObject.prototype._changeItemVisible=function(a,b){var c=this.idPrefix+a;if(this.itemPull[c]!=null&&(this.itemPull[c].type=="separator"&&(c="separator_"+c),this.idPull[c]!=null))this.idPull[c].style.display=b?"":"none",this._redefineComplexState(this.itemPull[this.idPrefix+a].parent)};dhtmlXMenuObject.prototype.setUserData=function(a,b,c){this.userData[this.idPrefix+a+"_"+b]=c};
+dhtmlXMenuObject.prototype.getUserData=function(a,b){return this.userData[this.idPrefix+a+"_"+b]!=null?this.userData[this.idPrefix+a+"_"+b]:null};dhtmlXMenuObject.prototype.setOpenMode=function(a){if(a=="win"||a=="web")this.menuMode=a};dhtmlXMenuObject.prototype.setWebModeTimeout=function(a){this.menuTimeoutMsec=!isNaN(a)?a:400};
+dhtmlXMenuObject.prototype.enableDynamicLoading=function(a,b){this.dLoad=!0;this.dLoadUrl=a;this.dLoadSign=String(this.dLoadUrl).search(/\?/)==-1?"?":"&";this.loaderIcon=b;this.init()};
+dhtmlXMenuObject.prototype._updateLoaderIcon=function(a,b){if(this.idPull[a]!=null&&!(String(this.idPull[a].className).search("TopLevel_Item")>=0)){var c=this._rtl?0:2;if(this.idPull[a].childNodes[c]&&this.idPull[a].childNodes[c].childNodes[0]){var d=this.idPull[a].childNodes[c].childNodes[0];if(String(d.className).search("complex_arrow")===0)d.className="complex_arrow"+(b?"_loading":"")}}};
+dhtmlXMenuObject.prototype.getItemImage=function(a){var b=[null,null],a=this.idPrefix+a;if(this.itemPull[a].type=="item")b[0]=this.itemPull[a].imgen,b[1]=this.itemPull[a].imgdis;return b};dhtmlXMenuObject.prototype.setItemImage=function(a,b,c){if(this.itemPull[this.idPrefix+a].type=="item")this.itemPull[this.idPrefix+a].imgen=b,this.itemPull[this.idPrefix+a].imgdis=c,this._updateItemImage(a,this._getItemLevelType(a))};dhtmlXMenuObject.prototype.clearItemImage=function(a){this.setItemImage(a,"","")};
+dhtmlXMenuObject.prototype.setAutoShowMode=function(a){this.contextAutoShow=a==!0?!0:!1};dhtmlXMenuObject.prototype.setAutoHideMode=function(a){this.contextAutoHide=a==!0?!0:!1};dhtmlXMenuObject.prototype.setContextMenuHideAllMode=function(a){this.contextHideAllMode=a==!0?!0:!1};dhtmlXMenuObject.prototype.getContextMenuHideAllMode=function(){return this.contextHideAllMode};
+dhtmlXMenuObject.prototype.setVisibleArea=function(a,b,c,d){this._isVisibleArea=!0;this.menuX1=a;this.menuX2=b;this.menuY1=c;this.menuY2=d};dhtmlXMenuObject.prototype.setTooltip=function(a,b){a=this.idPrefix+a;if(this.itemPull[a]!=null&&this.idPull[a]!=null)this.idPull[a].title=b.length>0?b:null,this.itemPull[a].tip=b};dhtmlXMenuObject.prototype.getTooltip=function(a){return this.itemPull[this.idPrefix+a]==null?null:this.itemPull[this.idPrefix+a].tip};
+dhtmlXMenuObject.prototype.setHotKey=function(a,b){a=this.idPrefix+a;if(this.itemPull[a]!=null&&this.idPull[a]!=null&&(this.itemPull[a].parent!=this.idPrefix+this.topId||this.context)&&!this.itemPull[a].complex){var c=this.itemPull[a].type;if(c=="item"||c=="checkbox"||c=="radio"){var d=null;try{if(this.idPull[a].childNodes[this._rtl?0:2].childNodes[0].className=="sub_item_hk")d=this.idPull[a].childNodes[this._rtl?0:2].childNodes[0]}catch(e){}if(b.length==0)this.itemPull[a].hotkey_backup=this.itemPull[a].hotkey,
+this.itemPull[a].hotkey="",d!=null&&d.parentNode.removeChild(d);else{this.itemPull[a].hotkey=b;this.itemPull[a].hotkey_backup=null;if(d==null){d=document.createElement("DIV");d.className="sub_item_hk";for(var f=this.idPull[a].childNodes[this._rtl?0:2];f.childNodes.length>0;)f.removeChild(f.childNodes[0]);f.appendChild(d)}d.innerHTML=b}}}};dhtmlXMenuObject.prototype.getHotKey=function(a){return this.itemPull[this.idPrefix+a]==null?null:this.itemPull[this.idPrefix+a].hotkey};
+dhtmlXMenuObject.prototype.setItemSelected=function(a){if(this.itemPull[this.idPrefix+a]==null)return null};dhtmlXMenuObject.prototype.setTopText=function(a){if(!this.context){if(this._topText==null)this._topText=document.createElement("DIV"),this._topText.className="dhtmlxMenu_TopLevel_Text_"+(this._rtl?"left":this._align=="left"?"right":"left"),this.base.appendChild(this._topText);this._topText.innerHTML=a}};
+dhtmlXMenuObject.prototype.setAlign=function(a){if(this._align!=a&&(a=="left"||a=="right")){this._align=a;if(this.cont)this.cont.className=this._align=="right"?"align_right":"align_left";if(this._topText!=null)this._topText.className="dhtmlxMenu_TopLevel_Text_"+(this._align=="left"?"right":"left")}};dhtmlXMenuObject.prototype.setHref=function(a,b,c){if(this.itemPull[this.idPrefix+a]!=null)this.itemPull[this.idPrefix+a].href_link=b,c!=null&&(this.itemPull[this.idPrefix+a].href_target=c)};
+dhtmlXMenuObject.prototype.clearHref=function(a){this.itemPull[this.idPrefix+a]!=null&&(delete this.itemPull[this.idPrefix+a].href_link,delete this.itemPull[this.idPrefix+a].href_target)};dhtmlXMenuObject.prototype.getCircuit=function(a){for(var b=Array(a);this.getParentId(a)!=this.topId;)a=this.getParentId(a),b[b.length]=a;return b.reverse()};
+dhtmlXMenuObject.prototype._clearAllSelectedSubItemsInPolygon=function(a){for(var b=this._getSubItemToDeselectByPolygon(a),c=0;c<this._openedPolygons.length;c++)this._openedPolygons[c]!=a&&this._hidePolygon(this._openedPolygons[c]);for(c=0;c<b.length;c++)if(this.idPull[b[c]]!=null&&this.itemPull[b[c]].state=="enabled")this.idPull[b[c]].className="dhtmlxMenu_"+this.skin+"_SubLevelArea_Item_Normal"};
+dhtmlXMenuObject.prototype._checkArrowsState=function(a){var b=this.idPull["polygon_"+a],c=this.idPull["arrowup_"+a],d=this.idPull["arrowdown_"+a];c.className=b.scrollTop==0?"dhtmlxMenu_"+this.skin+"_SubLevelArea_ArrowUp_Disabled":"dhtmlxMenu_"+this.skin+"_SubLevelArea_ArrowUp"+(c.over?"_Over":"");d.className=b.scrollTop+b.offsetHeight<b.scrollHeight?"dhtmlxMenu_"+this.skin+"_SubLevelArea_ArrowDown"+(d.over?"_Over":""):"dhtmlxMenu_"+this.skin+"_SubLevelArea_ArrowDown_Disabled"};
+dhtmlXMenuObject.prototype._addUpArrow=function(a){var b=this,c=document.createElement("DIV");c.pId=this.idPrefix+a;c.id="arrowup_"+this.idPrefix+a;c.className="dhtmlxMenu_"+this.skin+"_SubLevelArea_ArrowUp";c.innerHTML="<div class='dhtmlxMenu_"+this.skin+"_SubLevelArea_Arrow'><div class='dhtmlxMenu_SubLevelArea_Arrow_Icon'></div></div>";c.style.display="none";c.over=!1;c.onselectstart=function(a){a=a||event;return a.returnValue=!1};c.oncontextmenu=function(a){a=a||event;return a.returnValue=!1};
+c.onmouseover=function(){b.menuMode=="web"&&window.clearTimeout(b.menuTimeoutHandler);b._clearAllSelectedSubItemsInPolygon(this.pId);if(this.className!="dhtmlxMenu_"+b.skin+"_SubLevelArea_ArrowUp_Disabled")this.className="dhtmlxMenu_"+b.skin+"_SubLevelArea_ArrowUp_Over",this.over=!0,b._canScrollUp=!0,b._doScrollUp(this.pId,!0)};c.onmouseout=function(){if(b.menuMode=="web")window.clearTimeout(b.menuTimeoutHandler),b.menuTimeoutHandler=window.setTimeout(function(){b._clearAndHide()},b.menuTimeoutMsec,
+"JavaScript");this.over=!1;b._canScrollUp=!1;if(this.className!="dhtmlxMenu_"+b.skin+"_SubLevelArea_ArrowUp_Disabled")this.className="dhtmlxMenu_"+b.skin+"_SubLevelArea_ArrowUp",window.clearTimeout(b._scrollUpTM)};c.onclick=function(a){a=a||event;a.returnValue=!1;a.cancelBubble=!0;return!1};document.body.insertBefore(c,document.body.firstChild);this.idPull[c.id]=c};
+dhtmlXMenuObject.prototype._addDownArrow=function(a){var b=this,c=document.createElement("DIV");c.pId=this.idPrefix+a;c.id="arrowdown_"+this.idPrefix+a;c.className="dhtmlxMenu_"+this.skin+"_SubLevelArea_ArrowDown";c.innerHTML="<div class='dhtmlxMenu_"+this.skin+"_SubLevelArea_Arrow'><div class='dhtmlxMenu_SubLevelArea_Arrow_Icon'></div></div>";c.style.display="none";c.over=!1;c.onselectstart=function(a){a=a||event;return a.returnValue=!1};c.oncontextmenu=function(a){a=a||event;return a.returnValue=
+!1};c.onmouseover=function(){b.menuMode=="web"&&window.clearTimeout(b.menuTimeoutHandler);b._clearAllSelectedSubItemsInPolygon(this.pId);if(this.className!="dhtmlxMenu_"+b.skin+"_SubLevelArea_ArrowDown_Disabled")this.className="dhtmlxMenu_"+b.skin+"_SubLevelArea_ArrowDown_Over",this.over=!0,b._canScrollDown=!0,b._doScrollDown(this.pId,!0)};c.onmouseout=function(){if(b.menuMode=="web")window.clearTimeout(b.menuTimeoutHandler),b.menuTimeoutHandler=window.setTimeout(function(){b._clearAndHide()},b.menuTimeoutMsec,
+"JavaScript");this.over=!1;b._canScrollDown=!1;if(this.className!="dhtmlxMenu_"+b.skin+"_SubLevelArea_ArrowDown_Disabled")this.className="dhtmlxMenu_"+b.skin+"_SubLevelArea_ArrowDown",window.clearTimeout(b._scrollDownTM)};c.onclick=function(a){a=a||event;a.returnValue=!1;a.cancelBubble=!0;return!1};document.body.insertBefore(c,document.body.firstChild);this.idPull[c.id]=c};dhtmlXMenuObject.prototype._removeUpArrow=function(a){var b="arrowup_"+this.idPrefix+a;this._removeArrow(b)};
+dhtmlXMenuObject.prototype._removeDownArrow=function(a){var b="arrowdown_"+this.idPrefix+a;this._removeArrow(b)};dhtmlXMenuObject.prototype._removeArrow=function(a){var b=this.idPull[a];b.onselectstart=null;b.oncontextmenu=null;b.onmouseover=null;b.onmouseout=null;b.onclick=null;b.parentNode&&b.parentNode.removeChild(b);b=null;this.idPull[a]=null;try{delete this.idPull[a]}catch(c){}};
+dhtmlXMenuObject.prototype._isArrowExists=function(a){return this.idPull["arrowup_"+a]!=null&&this.idPull["arrowdown_"+a]!=null?!0:!1};dhtmlXMenuObject.prototype._doScrollUp=function(a,b){var c=this.idPull["polygon_"+a];if(this._canScrollUp&&c.scrollTop>0){var d=!1,e=c.scrollTop-this._scrollUpTMStep;e<0&&(d=!0,e=0);c.scrollTop=e;if(!d){var f=this;this._scrollUpTM=window.setTimeout(function(){f._doScrollUp(a,!1)},this._scrollUpTMTime)}}else this._canScrollUp=!1,this._checkArrowsState(a);b&&this._checkArrowsState(a)};
+dhtmlXMenuObject.prototype._doScrollDown=function(a,b){var c=this.idPull["polygon_"+a];if(this._canScrollDown&&c.scrollTop+c.offsetHeight<=c.scrollHeight){var d=!1,e=c.scrollTop+this._scrollDownTMStep;e+c.offsetHeight>c.scollHeight&&(d=!0,e=c.scollHeight-c.offsetHeight);c.scrollTop=e;if(!d){var f=this;this._scrollDownTM=window.setTimeout(function(){f._doScrollDown(a,!1)},this._scrollDownTMTime)}}else this._checkArrowsState(a);b&&this._checkArrowsState(a)};
+dhtmlXMenuObject.prototype._countPolygonItems=function(a){var b=0,c;for(c in this.itemPull){var d=this.itemPull[c].parent,e=this.itemPull[c].type;d==this.idPrefix+a&&(e=="item"||e=="radio"||e=="checkbox")&&b++}return b};
+dhtmlXMenuObject.prototype.setOverflowHeight=function(a){if(!(this.limit==0&&a<=0))if(this._clearAndHide(),this.limit>=0&&a>0)this.limit=a;else if(this.limit>0&&a<=0){for(var b in this.itemPull)if(this._isArrowExists(b)){var c=String(b).replace(this.idPrefix,"");this._removeUpArrow(c);this._removeDownArrow(c);this.idPull["polygon_"+b].style.height=""}this.limit=0}};
+dhtmlXMenuObject.prototype._getRadioImgObj=function(a){try{var b=this.idPull[this.idPrefix+a].childNodes[this._rtl?2:0].childNodes[0]}catch(c){b=null}return b};dhtmlXMenuObject.prototype._setRadioState=function(a,b){var c=this._getRadioImgObj(a);if(c!=null){var d=this.itemPull[this.idPrefix+a];d.checked=b;d.imgen="rdbt_"+(d.checked?"1":"0");d.imgdis=d.imgen;c.className="sub_icon "+d.imgen}};
+dhtmlXMenuObject.prototype._radioOnClickHandler=function(a,b,c){if(!(b.charAt(1)=="d"||this.itemPull[this.idPrefix+a].group==null)){var d=this.itemPull[this.idPrefix+a].group;this.checkEvent("onRadioClick")?this.callEvent("onRadioClick",[d,this.getRadioChecked(d),a,this.contextMenuZoneId,c])&&this.setRadioChecked(d,a):this.setRadioChecked(d,a);this.checkEvent("onClick")&&this.callEvent("onClick",[a])}};
+dhtmlXMenuObject.prototype.getRadioChecked=function(a){for(var b=null,c=0;c<this.radio[a].length;c++){var d=this.radio[a][c].replace(this.idPrefix,""),e=this._getRadioImgObj(d);if(e!=null){var f=e.className.match(/rdbt_1$/gi);f!=null&&(b=d)}}return b};dhtmlXMenuObject.prototype.setRadioChecked=function(a,b){if(this.radio[a]!=null)for(var c=0;c<this.radio[a].length;c++){var d=this.radio[a][c].replace(this.idPrefix,"");this._setRadioState(d,d==b)}};
+dhtmlXMenuObject.prototype.addRadioButton=function(a,b,c,d,e,f,g,h){if(!(this.context&&b==this.topId)){if(this.itemPull[this.idPrefix+b]==null)return;if(a=="child"&&this.itemPull[this.idPrefix+b].type!="item")return}var i=this.idPrefix+(d!=null?d:this._genStr(24)),j="rdbt_"+(g?"1":"0"),k=j;if(a=="sibling"){var m=this.idPrefix+this.getParentId(b);this._addItemIntoGlobalStrorage(i,m,e,"radio",h,j,k);this._renderSublevelItem(i,this.getItemPosition(b))}else m=this.idPrefix+b,this._addItemIntoGlobalStrorage(i,
+m,e,"radio",h,j,k),this.idPull["polygon_"+m]==null&&this._renderSublevelPolygon(m,m),this._renderSublevelItem(i,c-1),this._redefineComplexState(m);var l=f!=null?f:this._genStr(24);this.itemPull[i].group=l;this.radio[l]==null&&(this.radio[l]=[]);this.radio[l][this.radio[l].length]=i;g==!0&&this.setRadioChecked(l,String(i).replace(this.idPrefix,""))};dhtmlXMenuObject.prototype._getCheckboxState=function(a){return this.itemPull[this.idPrefix+a]==null?null:this.itemPull[this.idPrefix+a].checked};
+dhtmlXMenuObject.prototype._setCheckboxState=function(a,b){this.itemPull[this.idPrefix+a]!=null&&(this.itemPull[this.idPrefix+a].checked=b)};
+dhtmlXMenuObject.prototype._updateCheckboxImage=function(a){if(this.idPull[this.idPrefix+a]!=null){this.itemPull[this.idPrefix+a].imgen="chbx_"+(this._getCheckboxState(a)?"1":"0");this.itemPull[this.idPrefix+a].imgdis=this.itemPull[this.idPrefix+a].imgen;try{this.idPull[this.idPrefix+a].childNodes[this._rtl?2:0].childNodes[0].className="sub_icon "+this.itemPull[this.idPrefix+a].imgen}catch(b){}}};
+dhtmlXMenuObject.prototype._checkboxOnClickHandler=function(a,b,c){if(b.charAt(1)!="d"&&this.itemPull[this.idPrefix+a]!=null){var d=this._getCheckboxState(a);this.checkEvent("onCheckboxClick")?this.callEvent("onCheckboxClick",[a,d,this.contextMenuZoneId,c])&&this.setCheckboxState(a,!d):this.setCheckboxState(a,!d);this.checkEvent("onClick")&&this.callEvent("onClick",[a])}};dhtmlXMenuObject.prototype.setCheckboxState=function(a,b){this._setCheckboxState(a,b);this._updateCheckboxImage(a)};
+dhtmlXMenuObject.prototype.getCheckboxState=function(a){return this._getCheckboxState(a)};
+dhtmlXMenuObject.prototype.addCheckbox=function(a,b,c,d,e,f,g){if(!(this.context&&b==this.topId)){if(this.itemPull[this.idPrefix+b]==null)return;if(a=="child"&&this.itemPull[this.idPrefix+b].type!="item")return}var h="chbx_"+(f?"1":"0"),i=h;if(a=="sibling"){var j=this.idPrefix+(d!=null?d:this._genStr(24)),k=this.idPrefix+this.getParentId(b);this._addItemIntoGlobalStrorage(j,k,e,"checkbox",g,h,i);this.itemPull[j].checked=f;this._renderSublevelItem(j,this.getItemPosition(b))}else j=this.idPrefix+(d!=
+null?d:this._genStr(24)),k=this.idPrefix+b,this._addItemIntoGlobalStrorage(j,k,e,"checkbox",g,h,i),this.itemPull[j].checked=f,this.idPull["polygon_"+k]==null&&this._renderSublevelPolygon(k,k),this._renderSublevelItem(j,c-1),this._redefineComplexState(k)};
+dhtmlXMenuObject.prototype._readLevel=function(a){var b="",c;for(c in this.itemPull)if(this.itemPull[c].parent==a){var d="",e="",f="",g=String(this.itemPull[c].id).replace(this.idPrefix,""),h="",i=this.itemPull[c].title!=""?' text="'+this.itemPull[c].title+'"':"",j="";this.itemPull[c].type=="item"&&(this.itemPull[c].imgen!=""&&(d=' img="'+this.itemPull[c].imgen+'"'),this.itemPull[c].imgdis!=""&&(e=' imgdis="'+this.itemPull[c].imgdis+'"'),this.itemPull[c].hotkey!=""&&(f="<hotkey>"+this.itemPull[c].hotkey+
+"</hotkey>"));this.itemPull[c].type=="separator"?h=' type="separator"':this.itemPull[c].state=="disabled"&&(j=' enabled="false"');this.itemPull[c].type=="checkbox"&&(h=' type="checkbox"'+(this.itemPull[c].checked?' checked="true"':""));this.itemPull[c].type=="radio"&&(h=' type="radio" group="'+this.itemPull[c].group+'" '+(this.itemPull[c].checked?' checked="true"':""));b+="<item id='"+g+"'"+i+h+d+e+j+">";b+=f;this.itemPull[c].complex&&(b+=this._readLevel(c));b+="</item>"}return b};
+dhtmlXMenuObject.prototype.serialize=function(){var a="<menu>"+this._readLevel(this.idPrefix+this.topId)+"</menu>";return a};
+function dhtmlxSlider(a,b,c,d,e,f,g,h){if(_isIE)try{document.execCommand("BackgroundImageCache",!1,!0)}catch(i){}var j;if(a&&typeof a=="object"&&!a.nodeName)j=a.parent,c=a.skin,e=a.min,f=a.max,h=a.step,d=a.vertical,g=a.value,b=a.size;if(a)j=typeof a!="object"?document.getElementById(a):a;else{var k="slider_div_"+(new Date).valueOf()+Math.random(1E3);j=document.createElement("div");j.setAttribute("id",k);for(var m=document.body.lastChild;m.lastChild&&m.lastChild.nodeType==1;)m=m.lastChild;m.parentNode.insertBefore(j,
+m)}if(typeof b=="object")c=b.skin,e=b.min,f=b.max,h=b.step,d=b.vertical,g=b.value,b=b.size;this.size=b;this.vMode=d||!1;this.skin=dhtmlx.skin||c||"default";this.parent=j;this.disabled=this.isInit=!1;this.value=g||e||0;this.inputPriority=!0;this.stepping=!1;this.imgURL=window.dhx_globalImgPath||dhtmlx.image_path||"";this._skinsImgs={"default":{ls:1,lz:1,rz:1,rs:1},ball:{ls:1,lz:1,rz:1,rs:1},zipper:{bg:1,lz:1,rz:1},arrow:{bg:1,ls:1,rs:1},arrowgreen:{bg:1,ls:1,rs:1},simplesilver:{lz:1,ls:1,rs:1,rz:1},
+simplegray:{lz:1,ls:1,rs:1,rz:1},bar:{bg:1,ls:1,rs:1},dhx_skyblue:{bg:1,ls:1,rs:1}};this._def=[e-0||0,f-0||100,h-0||1,g-0||0,b-0];dhtmlxEventable(this);return this}
+dhtmlxSlider.prototype.createStructure=function(){if(this.con)this.con.parentNode.removeChild(this.con),this.con=null;if(this.vMode){this._sW="height";this._sH="width";this._sL="top";this._sT="left";var a=this.imgURL+"skins/"+this.skin+"/vertical/"}else this._sW="width",this._sH="height",this._sL="left",this._sT="top",a=this.imgURL+"skins/"+this.skin+"/";this.con=document.createElement("DIV");this.con.onselectstart=function(){return!1};this.con._etype="slider";this.con.className="dhtmlxSlider"+(this.skin!=
+"default"?"_"+this.skin:"");if(this._skinsImgs[this.skin].bg)this.con.style.backgroundImage="url("+a+"bg.gif)";this.drag=document.createElement("DIV");this.drag._etype="drag";this.drag.className="selector";this.drag.style.backgroundImage="url("+a+"selector.gif)";var b=document.createElement("DIV");b.className="leftSide";if(this._skinsImgs[this.skin].ls)b.style.background="url("+a+"leftside_bg.gif)";this.leftZone=document.createElement("DIV");this.leftZone.className="leftZone";if(this._skinsImgs[this.skin].lz)this.leftZone.style.background=
+"url("+a+"leftzone_bg.gif)";var c=document.createElement("DIV");c.className="rightSide";if(this._skinsImgs[this.skin].rs)c.style.background="url("+a+"rightside_bg.gif)";this.rightZone=document.createElement("DIV");this.rightZone.className="rightZone";if(this._skinsImgs[this.skin].rz)this.rightZone.style.background="url("+a+"rightzone_bg.gif)";this.con.appendChild(b);this.con.appendChild(this.leftZone);this.con.appendChild(this.rightZone);this.con.appendChild(c);this.con.appendChild(this.drag);this.parent.appendChild(this.con);
+(!this.parent.parentNode||!this.parent.parentNode.tagName)&&document.body.appendChild(this.parent);if(this.vMode){this._sW="height";this._sH="width";this._sL="top";this._sT="left";this.con.style.width=this.con.offsetHeight+"px";for(var d=0;d<this.con.childNodes.length;d++){this.con.childNodes[d].style.fontSize="0";var e=this.con.childNodes[d].offsetWidth;this.con.childNodes[d].style.width=this.con.childNodes[d].offsetHeight+"px";this.con.childNodes[d].style.height=e+"px";e=this.con.childNodes[d].offsetLeft;
+this.con.childNodes[d].style.left=this.con.childNodes[d].offsetTop+"px";this.con.childNodes[d].style.top=e+"px"}c.style.top=this.size-c.offsetHeight+"px";this.zoneSize=this.size-c.offsetHeight;this.dragLeft=this.drag.offsetTop;this.dragWidth=this.drag.offsetHeight;this.rightZone.style.height=this.zoneSize+"px"}else this.zoneSize=this.size-c.offsetWidth,this.dragLeft=this.drag.offsetLeft,this.dragWidth=this.drag.offsetWidth,this.rightZone.style.width=this.zoneSize+"px";this.con.style[this._sW]=this.size+
+"px";this.con.onmousedown=this._onMouseDown;this.con.onmouseup=this.con.onmouseout=function(){clearInterval(this.that._int)};this.con.that=this;this._aCalc(this._def)};
+dhtmlxSlider.prototype._aCalc=function(a){if(this.isInit){this.shift=a[0];this.limit=a[1]-this.shift;this._mod=(a[4]-this.dragLeft*2-this.dragWidth)/this.limit;this._step=a[2];this.step=this._step*this._mod;this._xlimit=a[4]-this.dragLeft*2-this.dragWidth;if(!this.posX)this.posX=this._xlimit*(a[3]-this.shift)/this.limit;this._applyPos(!0);return this}};dhtmlxSlider.prototype.setMin=function(a){this._def[0]=a-0;this._aCalc(this._def)};dhtmlxSlider.prototype.setMax=function(a){this._def[1]=a-0;this._aCalc(this._def)};
+dhtmlxSlider.prototype.setStep=function(a){this._def[2]=a-0;this._aCalc(this._def)};
+dhtmlxSlider.prototype._applyPos=function(a){if(this.isInit){if(this.step!=1)this.posX=Math.round(this.posX/this.step)*this.step;if(this.posX<0)this.posX=0;if(this.value<(this._def[0]||0))this.value=this._def[0]||0;if(this.value>this._def[1])this.value=this._def[1];if(this.posX>this._xlimit)this.posX=this._xlimit;var b=this.drag.style[this._sL];this.drag.style[this._sL]=this.posX+this.dragLeft*1+"px";this.leftZone.style[this._sW]=this.posX+this.dragLeft*1+"px";this.rightZone.style[this._sL]=this.posX+
+this.dragLeft*1+1+"px";this.rightZone.style[this._sW]=this.zoneSize-(this.posX+this.dragLeft*1)+"px";var c=this.getValue();if(this._link)this._linkBoth?this._link.value=c:this._link.innerHTML=c;!a&&b!=this.drag.style[this._sL]&&this.callEvent("onChange",[c,this]);this.value=this.getValue();this._dttp||this._setTooltip(c)}};dhtmlxSlider.prototype._setTooltip=function(a){this.con.title=a};dhtmlxSlider.prototype.setSkin=function(a){this.skin=a||"default";this.isInit&&this.createStructure()};
+dhtmlxSlider.prototype.startDrag=function(a){if(!this._busy&&(a.button===0||a.button===1)){this.drag_mx=a.clientX;this.drag_my=a.clientY;this.drag_cx=this.posX;this.d_b_move=document.body.onmousemove;this.d_b_up=document.body.onmouseup;var b=this;document.body.onmouseup=function(a){b.stopDrag(a||event);b=null};document.body.onmousemove=function(a){b.onDrag(a||event)};this._busy=!0}};
+dhtmlxSlider.prototype.onDrag=function(a){if(this._busy)this.posX=this.vMode?this.drag_cx+a.clientY-this.drag_my:this.drag_cx+a.clientX-this.drag_mx,this._applyPos()};dhtmlxSlider.prototype.stopDrag=function(){document.body.onmousemove=this.d_b_move?this.d_b_move:null;document.body.onmouseup=this.d_b_up?this.d_b_up:null;this.d_b_move=this.d_b_up=null;this._busy=!1;this.callEvent("onSlideEnd",[this.getValue()])};
+dhtmlxSlider.prototype.getValue=function(){return!this._busy&&this.inputPriority?(Math.round(this.value/this._step)*this._step).toFixed(6)-0:Math.round((Math.round(this.posX/this._mod/this._step)*this._step+this.shift*1)*1E4)/1E4};dhtmlxSlider.prototype.setValue=function(a,b){if(!isNaN(a))this._def[3]=this.value=a-0,this.posX=Math.round(((a||0)-this.shift)*this._mod),this._applyPos(b==null?!0:b)};
+dhtmlxSlider.prototype._getActionElement=function(a){return a._etype?a:a.parentNode?this._getActionElement(a.parentNode):null};
+dhtmlxSlider.prototype._onMouseDown=function(a){if(!this.that.disabled){var a=a||event,b=this.that,c=b._getActionElement(_isIE?a.srcElement:a.target);switch(c._etype){case "slider":var d=b.vMode?a.clientY-(getAbsoluteTop(b.con)-document.body.scrollTop):a.clientX-(getAbsoluteLeft(b.con)-document.body.scrollLeft),e=b.posX;b.posX=d-b.dragLeft-b.dragWidth/2;b.direction=b.posX>e?1:-1;b.stepping?(clearInterval(b._int),b.setValue(b.value+b._step*b.direction,!1),b._int=setInterval(function(){b.setValue(b.value+
+b._step*b.direction,!1)},600)):(b._busy=!0,b._applyPos(),b._busy=!1);break;case "drag":b.startDrag(a||event)}return!1}};dhtmlxSlider.prototype.setOnChangeHandler=function(a){this.attachEvent("onChange",a)};dhtmlxSlider.prototype._linkFrom=function(){this.disabled||this.setValue(parseFloat(this._link.value),!1)};
+dhtmlxSlider.prototype.linkTo=function(a){this._link=a=typeof a!="object"?document.getElementById(a):a;var b=a.tagName.toString().toLowerCase();if(this._linkBoth=b=="input"||b=="select"||b=="textarea"?1:0){var c=this,d=function(){this._nextSlider&&window.clearTimeout(this._nextSlider);this._nextSlider=window.setTimeout(function(){c._linkFrom()},500)};a.onblur=a.onkeypress=a.onchange=d}this._applyPos()};
+dhtmlxSlider.prototype.enableTooltip=function(a){this._dttp=!convertStringToBoolean(a);this._setTooltip(this._dttp?"":this.getValue())};dhtmlxSlider.prototype.setImagePath=function(a){this.imgURL=a};dhtmlxSlider.prototype.init=function(){this.isInit=!0;this.createStructure()};dhtmlxSlider.prototype.setInputPriority=function(a){this.inputPriority=a};dhtmlxSlider.prototype.setSteppingMode=function(a){this.stepping=a};dhtmlxSlider.prototype.disable=function(a){this.disabled=a};
+(function(){dhtmlx.extend_api("dhtmlxSlider",{_init:function(a){return[a.parent,a.size,a.skin,a.vertical,a.min,a.max,a.value,a.step]},link:"linkTo"},{})})();
+function dhtmlXTabBar(a,b,c){b=b||"top";dhtmlxEventable(this);this._hrefs={};this._s={};this._c={};this._s.mode=b;this._s.scrolls=!0;this._s.line_height=(parseInt(c)||20)+3;this._s.skin_line=1;this._s.tab_margin=0;this._s.expand=0;this._s.ext_border=2;this._s._bMode=b=="right"||b=="bottom"?1:0;this._s._vMode=b=="right"||b=="left"?1:0;this._dx=this._s._vMode?"height":"width";this._dy=this._s._vMode?"width":"height";switch(b){case "top":this._py="top";this._px="left";this._pxc="right";break;case "bottom":this._py=
+"bottom";this._px="left";this._pxc="right";break;case "right":this._py="right";this._px="top";this._pxc="bottom";break;case "left":this._py="left",this._px="top",this._pxc="bottom"}this._active=null;this._tabs={};this._content={};this._href={};this._rows=[];this._s._tabSize=150;this._styles={"default":{left:3,right:3,select_shift:3,select_top:2,margin:1,offset:5,tab_color:"#F4F3EE",data_color:"#F0F8FF"},winbiscarf:{left:18,right:18,select_shift:3,select_top:2,margin:1,offset:5},winscarf:{left:18,
+right:4,select_shift:3,select_top:2,margin:5,offset:5},modern:{left:5,right:5,select_shift:3,select_top:2,margin:1,offset:5,tab_color:"#F4F3EE",data_color:"#F0F8FF"},silver:{left:7,right:7,select_shift:3,select_top:2,margin:1,offset:5,tab_color:"#F4F3EE",data_color:"#F0F8FF"},dark_blue:{left:2,right:2,select_shift:3,select_top:2,margin:1,offset:5},glassy_blue:{left:2,right:3,select_shift:3,select_top:2,margin:1,offset:5},dhx_black:{left:2,right:2,select_shift:3,select_top:0,margin:1,offset:5},dhx_blue:{left:2,
+right:2,select_shift:3,select_top:0,margin:1,offset:5,tab_color:"#F4F3EE",data_color:"#F0F8FF"},dhx_skyblue:{left:3,right:3,select_shift:0,select_top:0,margin:-1,offset:5,data_color:"white",hover:!0},dhx_web:{left:3,right:3,select_shift:1,select_top:0,margin:5,offset:15,data_color:"white"}};typeof a!="object"&&(a=document.getElementById(a));this.entBox=a;this.entBox.className+=" dhx_tabbar_zone_"+this._s.mode;dhtmlx.image_path&&this.setImagePath(dhtmlx.image_path);this.setStyle("default");this.__skin=
+!1;this._createSelf();_isIE&&this.preventIECashing(!0);return this}
+dhtmlXTabBar.prototype={_get_size:function(a,b){var c=this.entBox.getAttribute(a)||this.entBox.style[a]||(window.getComputedStyle?window.getComputedStyle(this.entBox,null)[a]:this.entBox.currentStyle?this.entBox.currentStyle[a]:0);(c||"").indexOf("%")!=-1&&this.enableAutoReSize(!0,!0);if(!c||c.indexOf("%")!=-1||c=="auto")c=b+"px";return c},setStyle:function(a){this.setSkin(a)},_getSkin:function(){return this._a},setSkin:function(a){a=a.toLowerCase();this._styles[a]||(a="default");this._a=this._styles[a];
+this.skin=a;if(this._tabAll)this._tabAll.className="dhx_tabbar_zone dhx_tabbar_zone_"+this.skin;var b=a.indexOf("dhx_sky")==0,c=a.indexOf("dhx_web")==0;if(b)this._s.skin_line=0;if(c)this._s.line_height=29,this._s.ext_border=-1,this._s.expand=!0;if(b){this._s.line_height=26;this._setRowSizes();if(this._s.expand)this._s.tab_margin=-1;this._s.skin_line_x=!0;this._s.skin_line=-3;var d=this._s._rendered;if(d)for(var e=0;e<d.length;e++)d[e].parentNode.removeChild(d[e]);var f=document.createElement("DIV");
+f.className="dhx_tabbar_lineA";this._tabAll.appendChild(f);var g=document.createElement("DIV");g.className="dhx_tabbar_lineB";this._tabAll.appendChild(g);var h=document.createElement("DIV");h.className="dhx_tabbar_lineC";this._tabAll.appendChild(h);var i=document.createElement("DIV");i.className="dhx_tabbar_lineD";this._tabAll.appendChild(i);this._getCoverLine();this._s._rendered=[f,g,h,i];if(this._s.expand){this._conZone.style.borderWidth="0px 0px 0px 0px";this._tabZone.firstChild.style.borderWidth=
+"0px 0px 0px 0px";h.style.borderWidth="0px 0px 0px 0px";i.style.left="0px";h.style.right="0px";f.style.borderWidth="0px 0px 0px 0px";if(this._s.mode=="top")this._lineA.style.borderWidth="1px 0px 0px 0px";g.style.left="1px"}var j=function(){this._lineA.style[this._dx]="1px";var a=_isIE&&document.compatMode=="BackCompat",b=this._tabAll[this._s._vMode?"offsetHeight":"offsetWidth"]+(a?2:0);this._lastActive&&(b=Math.max(b,this._lastActive.parentNode[this._s._vMode?"scrollHeight":"scrollWidth"]));b<6||
+(f.style[this._py]=parseInt(this._conZone.style[this._py])-3+"px",f.style[this._dx]=b-2+"px",g.style[this._py]=parseInt(this._conZone.style[this._py])-3+"px",g.style[this._dx]=b-(a?6:4)+(this._s.expand?2:0)+"px",h.style[this._dy]=parseInt(this._tabZone.style[this._dy])-3+"px",this._lineA.style[this._dx]=b-2+"px")};j.call(this);var k=this._checkScroll;this._checkScroll=function(){j.apply(this,arguments);k.apply(this,arguments)};var m=this._scrollTo;this._scrollTo=function(){m.apply(this,arguments);
+j.apply(this,arguments)}}if(this._a.data_color&&this._conZone)this._conZone.style.backgroundColor=this._a.data_color;this.__skin=!0},enableAutoReSize:function(){var a=this;dhtmlxEvent(window,"resize",function(){window.setTimeout(function(){a&&a._setSizes&&a._setSizes()},1)})},_createSelf:function(){this._tabAll=document.createElement("DIV");this._tabZone=document.createElement("DIV");this._conZone=document.createElement("DIV");this.entBox.appendChild(this._tabAll);this._tabAll.appendChild(this._tabZone);
+this._tabAll.appendChild(this._conZone);this._tabAll.className="dhx_tabbar_zone dhx_tabbar_zone_"+this.skin;this._s._vMode&&(this._tabAll.className+="V");this._s._bMode&&(this._tabAll.className+="B");this._tabZone.className="dhx_tablist_zone";this._conZone.className="dhx_tabcontent_zone";if(this._a.data_color)this._conZone.style.backgroundColor=this._a.data_color;this._tabZone.onselectstart=function(){return!1};this._tabZone.onclick=this._onClickHandler;this._tabZone.onmouseover=this._onMouseOverHandler;
+this._tabZone[_isFF?"onmouseout":"onmouseleave"]=this._onMouseOutHandler;this._tabZone.tabbar=this;this._createRow()},_createRow:function(){var a=document.createElement("DIV");a.className="dhx_tabbar_row";a.tabCount=0;this._tabZone.appendChild(a);this._rows[this._rows.length]=a;this._setRowSizes()},_removeRow:function(a){a.parentNode.removeChild(a);for(var b=[],c=0;c<this._rows.length;c++)this._rows[c]!=a&&(b[b.length]=this._rows[c]);this._rows=b},_setSizes:function(a,b){var c=["clientHeight","clientWidth"];
+this._dx!="width"&&c.reverse();var d=_isIE&&document.compatMode=="BackCompat",e=this._conZone.offsetWidth-this._conZone.clientWidth,f=b||this.entBox[c[0]]+(d?e:0),d=a||this.entBox[c[1]]+(d?e:0),g=this._rows.length*(this._s.line_height-(this._s.skin_line_x?4:2))+(this._s.skin_line_x?2:0);this._tabZone.style[this._dy]=g+"px";this._conZone.style[this._dy]=Math.max(0,f-this._s.ext_border-g-(this._s.skin_line_x?3:0)-this._s.tab_margin)+"px";this._conZone.style[this._dx]=Math.max(0,d-(this._s.expand?0:
+2))+"px";this._tabZone.style[this._py]=this._s.tab_margin+"px";this._conZone.style[this._py]=g+this._s.tab_margin-this._s.skin_line+"px";this._checkScroll();var h=this.getActiveTab();h&&this.cells(h).activate()},_checkScroll:function(){if(this._lineA){this._lineA.style[this._dx]="1px";var a=_isIE&&document.compatMode=="BackCompat",b=this._tabAll[this._s._vMode?"offsetHeight":"offsetWidth"]+(a?2:0);this._lastActive&&(b=Math.max(b,this._lastActive.parentNode[this._s._vMode?"scrollHeight":"scrollWidth"]));
+b>2&&(this._lineA.style[this._dx]=b-2+"px")}if(!this._s._vMode&&this._s.scrolls)for(var c=0;c<this._rows.length;c++)this._rows[c].scrollWidth-this._rows[c].offsetWidth>2?this._showScroll(c):this._hideScroll(c)},_showScroll:function(a){if(!this._rows[a]._scroll){var b=this._rows[a]._scroll=[],c=Math.max(0,this._s.line_height-23);b[0]=document.createElement("DIV");b[0].style.cssText="background-image:url("+this.imgUrl+this.skin+"/"+this.skin+"_scroll_left.gif); width:20px; height:21px;position:absolute;left:0px;z-index:990;top:"+
+c+"px;";b[0].className="dhx_tab_scroll_left";this._rows[a].appendChild(b[0]);b[1]=document.createElement("DIV");b[1].style.cssText="background-image:url("+this.imgUrl+this.skin+"/"+this.skin+"_scroll_right.gif); width:20px; height:21px;position:absolute;right:0px;z-index:990;top:"+c+"px;";b[1].className="dhx_tab_scroll_right";this._rows[a].appendChild(b[1])}},_hideScroll:function(a){if(this._rows[a]._scroll)this._rows[a].removeChild(this._rows[a]._scroll[0]),this._rows[a].removeChild(this._rows[a]._scroll[1]),
+this._rows[a]._scroll=null},_setRowSizes:function(){for(var a=0;a<this._rows.length;a++)this._rows[a].style[this._dy]=this._s.line_height+"px",this._rows[a].style[this._py]=a*(this._s.line_height-(this._s.skin_line_x?4:2))-(_isIE&&!window.postMessage&&this._s._bMode?0:0)+"px",this._rows[a].style.zIndex=10+a;this._setSizes()},_setTabSizes:function(a){for(var b=this._a.offset,c=this._vMode?this._pxc:this._px,d=0;d<a.tabCount;d++){var e=a.childNodes[d];e.style.display!="none"&&(e.style[c]=b-(this._lastActive==
+e?this._a.select_shift:0)+"px",b+=e._size+this._a.margin)}},addTab:function(a,b,c,d,e){!this.__skin&&dhtmlx.skin&&this.setSkin(dhtmlx.skin);for(var e=e||0,f=this._rows.length;f<=e;f++)this._createRow();var g=this._rows[e].tabCount;!d&&d!==0&&(d=g);var h=this._createTab(a,b,c=="*"?10:c||this._s._tabSize);this._addTab(this._rows[e],h,c,d);this._tabs[a]=h;this.cells(a).hide();this._checkScroll()},removeTab:function(a,b){var c=this._tabs[a];if(c){this.cells(a)._dhxContDestruct();this._content[a]&&this._content[a].parentNode&&
+this._content[a].parentNode.removeChild(this._content[a]);this._content[a]=null;this._goToAny(c,b);var d=c.parentNode;c.innerHTML="";d.removeChild(c);d.tabCount--;d.tabCount==0&&this._rows.length>1?this._removeRow(d):this._setTabSizes(d);delete this._tabs[a];if(this._lastActive==c)this._lastActive=null;this._setRowSizes()}},_goToAny:function(a,b){if(this._lastActive==a&&(b&&this.goToNextTab()==a&&this.goToPrevTab(),this._lastActive==a))this._lastActive=null},_createTab:function(a,b,c){var d=document.createElement("DIV");
+d.className="dhx_tab_element dhx_tab_element_inactive";var e="<span>"+b+"</span><div></div><div></div><div></div>";this._close&&(e+="<IMG style='"+this._pxc+":4px; "+this._py+(this.skin=="dhx_web"?":7":":4")+"px; position:absolute;z-index:11;' src='"+this.imgUrl+this.skin+"/close.png' >");d.innerHTML=e;d.setAttribute("tab_id",a);d._size=parseInt(c);d.style[this._dx]=parseInt(c)+"px";d.style[this._dy]=this._s.line_height+"px";d.style[this._py]=this._a.select_top+"px";d.skin=this.skin;if(this._a.tab_color)d.style.backgroundColor=
+this._a.tab_color;if(this._c[a])d.childNodes[0].style.cssText=this._c[a].color;this._img_all(d);if(this._close){var f=this;d.childNodes[4].onclick=function(a){var b=this.parentNode.getAttribute("tab_id");f.callEvent("onTabClose",[b])&&f.removeTab(b,!0);(a||event).cancelBubble=!0}}return d},_img_all:function(a){var b=this._getSkin(a),c=a._active?1:4;this._img(a.childNodes[1],c,this._px,b.left);this._img(a.childNodes[2],c+2,this._pxc,b.right);this._img(a.childNodes[3],c+1,this._px,parseInt(a.style[this._dx])-
+(b.left+b.right),b.left)},_get_img_pos:function(a){this._s._bMode&&a<7&&(a=Math.abs(a-6));a=-5-a*45;return this._s._vMode?a+"px 0px":"0px "+a+"px"},_img:function(a,b,c,d,e){if(typeof a!="undefined")a.style.backgroundImage="url("+this.imgUrl+this.skin+"/"+this.skin+"_"+this._s.mode+".gif)",a.style.backgroundPosition=this._get_img_pos(b),a.style[this._py]="0px",c&&(a.style[this._dx]=Math.max(d,0)+"px",a.style[c]=(e||0)+"px")},_addTab:function(a,b,c,d){var e=this._a.offset;if(a.tabCount)var f=a.childNodes[a.tabCount-
+1],e=parseInt(f.style[this._s.align?this._pxc:this._px])+parseInt(f._size)+this._a.margin;var g=a.childNodes[d];g?a.insertBefore(b,g):a.appendChild(b);a.tabCount++;if(c=="*")b.style.whiteSpace="nowrap",this.adjustTabSize(b);b.style[this._s.align?this._pxc:this._px]=e+"px";d!=a.tabCount-1&&this._setTabSizes(a)},adjustTabSize:function(a,b){var c=this._getSkin(c);if(!b)a.style.fontWeight="bold",a.childNodes[3].style[this._dx]=a.style[this._dx]="10px",b=a[this._s._vMode?"scrollHeight":"scrollWidth"]+
+10+(this._close?20:0),a.style.fontWeight="";a.style[this._dx]=b+"px";a._size=b;this._img_all(a)},_onMouseOverHandler:function(a){var b=this.tabbar._getTabTarget(a?a.target:event.srcElement);this.tabbar._showHover(b)},_onMouseOutHandler:function(){this.tabbar._showHover()},_showHover:function(a){if(a!=this._lastHower){if(this._lastHower&&this._lastHower!=this._lastActive){var b=this._getSkin(this._lastHower);this._lastHower.className=this._lastHower.className.replace(/[ ]*dhx_tab_hover/gi,"");b.hover?
+this._img_all(this._lastHower):this._img(this._lastHower.childNodes[3],5,this._px,parseInt(this._lastHower.style[this._dx])-(b.left+b.right),b.left);this._lastHower=null}if(!a||!(a==this._lastActive||a._disabled))if(this._lastHower=a)b=this._getSkin(a),a.className+=" dhx_tab_hover",b.hover&&(this._img(a.childNodes[1],7,this._px,b.left),this._img(a.childNodes[2],8,this._pxc,b.right)),this._img(a.childNodes[3],0,this._px,parseInt(a.style[this._dx])-(b.left+b.right),b.left)}},_getTabTarget:function(a){if(!a)return null;
+for(;!a.className||a.className.indexOf("dhx_tab_element")==-1;){if(a.className&&a.className.indexOf("dhx_tabbar_zone")!=-1)return null;a=a.parentNode;if(!a)return null}return a},_onClickHandler:function(a){var b=a?a.target:event.srcElement,c=this.tabbar._getTabTarget(b);if(c&&!c._disabled)this.tabbar._setTabActive(c);else{var d=null;if(b.className=="dhx_tab_scroll_left")b.parentNode.scrollLeft=Math.max(0,b.parentNode.scrollLeft-b.parentNode.offsetWidth/2),d=b,this.tabbar._setTabTop(this.tabbar._lastActive);
+else if(b.className=="dhx_tab_scroll_right")b.parentNode.scrollLeft+=b.parentNode.offsetWidth/2,d=b.previousSibling,this.tabbar._setTabTop(this.tabbar._lastActive);if(d&&d.parentNode){d.style.left=d.parentNode.scrollLeft+"px";if(!_isIE||window.XMLHttpRequest)d.nextSibling.style.right=d.parentNode.scrollLeft*-1+"px";return!1}}},_deactivateTab:function(){this._setTabInActive(this._lastActive);this._lastActive=null},_setTabInActive:function(a){if(!a||a!=this._lastActive)return!0;var b=this._getSkin(a),
+c=a.getAttribute("tab_id"),d=this._s.align?this._pxc:this._px;a.className=a.className.replace("_active","_inactive");a.style[this._py]=b.select_top+"px";a.style[d]=parseInt(a.style[d])+b.select_shift+"px";a.style[this._dx]=a._size+"px";a._active=!1;if(b.tab_color)a.style.backgroundColor=b.tab_color;if(this._c[c])a.childNodes[0].style.cssText=this._c[c].color;this._img_all(a);this.cells(c).hide()},_setTabActive:function(a,b){if(!a)return!0;var c=a.getAttribute("tab_id"),d=this._lastActive?this._lastActive.getAttribute("tab_id"):
+null,e=this._getSkin(a);b||this.callEvent("onTabClick",[c,d]);if(a==this._lastActive)return!0;if(b||this.callEvent("onSelect",[c,d])){var f=this._s.align?this._pxc:this._px;this._setTabInActive(this._lastActive);a.className=a.className.replace("_inactive","_active");a.style[this._py]="0px";a.style[f]=parseInt(a.style[f])-e.select_shift+"px";a.style[this._dx]=a._size+e.select_shift*2+"px";a._active=!0;if(e.data_color)a.style.backgroundColor=e.data_color;if(this._c[c])a.childNodes[0].style.cssText=
+this._c[c].scolor;this._img_all(a);this._setTabTop(a);this._lastActive=a;this.cells(c).show();this._scrollTo(a);return!0}},_scrollTo:function(a){if(this._s.scrolls&&(a.offsetLeft<a.parentNode.scrollLeft||a.offsetLeft+a.offsetWidth>a.parentNode.scrollLeft+a.parentNode.offsetWidth)){a.parentNode.scrollLeft=a.offsetLeft;var b=a.parentNode._scroll;if(b&&b[0]&&(b[0].style.left=b[0].parentNode.scrollLeft+"px",!_isIE||window.XMLHttpRequest))b[1].style.right=b[1].parentNode.scrollLeft*-1+"px"}},_setTabTop:function(a){for(var b=
+this._rows.length-1,c=0;c<this._rows.length;c++)if(this._rows[c]==a.parentNode){var d=this._rows[c];c!=b&&(this._rows[c]=this._rows[b],this._rows[b]=d);var e=this._getCoverLine();d.appendChild(e);e.style[this._dx]="1px";var f=this._s._vMode?Math.max(this._tabZone.offsetHeight,d.scrollHeight):Math.max(this._tabZone.offsetWidth,d.scrollWidth);f>0&&(e.style[this._dx]=f+"px");a.style.zIndex=e._index++;break}this._setRowSizes()},_getCoverLine:function(){if(!this._lineA)this._lineA=document.createElement("div"),
+this._lineA.className="dhx_tablist_line",this._lineA.style[this._py]=this._s.line_height-3-(this._s.skin_line_x?1:0)+"px",this._lineA.style[this._dx]="100%",this._lineA._index=1;this._lineA.style.zIndex=this._lineA._index++;return this._lineA},cells:function(a){if(!this._tabs[a])return null;if(!this._content[a]){var b=document.createElement("DIV");b.style.cssText="width:100%;height:100%;visibility:hidden;overflow:hidden;position:absolute;top:0px; left:0px;";b.setAttribute("tab_id",a);b.skin=this.skin;
+this._conZone.appendChild(b);(new dhtmlXContainer(b)).setContent(b);this.skin=="dhx_web"&&b._setPadding&&b._setPadding(1,"dhxcont_tabbar_dhx_web");b._isTabbarCell=!0;this._content[a]=b;var c=this;b.show=function(){if(c._s.hide)this.style.display="";this.style.visibility="";this.style.zIndex="1";this.autoSize();this._activate()};b.hide=function(){c._s.hide?(this.style.visibility="",this.style.display="none"):this.style.visibility="hidden";this.style.zIndex=-1;c._hrfmode=="iframe"&&this.attachURL("javascript:false")};
+b.autoSize=function(){if(c._awdj||c._ahdj){var a=this.vs?this.vs[this.av].dhxcont.mainCont[this.av]:this.mainCont;if(!a.offsetWidth)a.style.width=Math.max(0,c.entBox.offsetWidth-2)+"px";if(c._ahdj)a.style.height="1px";var b=this._getContentDim();if(c._awdj)c.entBox.style.width=b[0]+2+"px",a.style.width=b[0]+"px";if(c._ahdj)c._tabAll.style.height=c.entBox.style.height=b[1]+c._rows.length*(c._s.line_height-2)+(c._s.expand?0:2)+2+"px",a.style.height=b[1]+"px";c._setSizes();c._setTabTop(c._lastActive)}};
+b._activate=function(){this._delay&&this._attachContent.apply(this,this._delay);this.activate();if(c._hrfmode!="iframe")this._delay=null};b._doOnResize=function(){this.activate()};b.activate=function(){this.adjustContent(this.parentNode,0,0,!1,0);b.updateNestedObjects()};b._doOnAttachStatusBar=b.activate;b._doOnAttachMenu=b.activate;b._doOnAttachToolbar=b.activate;b._getContentDim=function(){var a=this.vs?this.vs[this.av].dhxcont.mainCont[this.av]:this.mainCont;return[a.scrollWidth,a.scrollHeight]};
+b._doOnFrameContentLoaded=function(){(c._awdj||c._ahdj)&&c.cells(a).autoSize();c.callEvent("onXLE",[]);c.callEvent("onTabContentLoaded",[this.getAttribute("tab_id")])};b._doOnBeforeAttachURL=function(){c.callEvent("onXLS",[])};b.adjustContent(b.parentNode,0,0,!1,0)}return this._content[a]},forceLoad:function(a,b){this.setContentHref(a,b||this._hrefs[a]);this.cells(a)._activate()},enableAutoSize:function(a,b){this._ahdj=convertStringToBoolean(b);this._awdj=convertStringToBoolean(a)},clearAll:function(){for(var a in this._tabs)this.removeTab(a,
+!1);if(this._lineA){var b=this._getCoverLine();b.parentNode&&b.parentNode.removeChild(b)}},enableTabCloseButton:function(a){this._close=convertStringToBoolean(a)},preventIECashing:function(a){this.no_cashe=convertStringToBoolean(a);if(this.XMLLoader)this.XMLLoader.rSeed=this.no_cashe},setTabActive:function(a,b){this._setTabActive(this._tabs[a],b===!1)},setTabInActive:function(){var a=this._lastActive;a&&(this._deactivateTab(),this._setTabTop(a),this._getCoverLine())},loadXMLString:function(a,b){this.XMLLoader=
+new dtmlXMLLoaderObject(this._parseXML,this,!0,this.no_cashe);this.XMLLoader.waitCall=b||0;this.XMLLoader.loadXMLString(a)},loadXML:function(a,b){this.callEvent("onXLS",[]);this.XMLLoader=new dtmlXMLLoaderObject(this._parseXML,this,!0,this.no_cashe);this.XMLLoader.waitCall=b||0;this.XMLLoader.loadXML(a)},_parseXML:function(a,b,c,d,e){a.clearAll();var f="";if(!e)e=a.XMLLoader;var g=e.getXMLTopNode("tabbar"),h=e.doXPath("//row",g),i=g.getAttribute("tabstyle");i&&a.setStyle(i);a._hrfmode=g.getAttribute("hrefmode")||
+a._hrfmode;a._a.margin=parseInt(g.getAttribute("margin")||a._a.margin,10);if(i=g.getAttribute("align"))a._s.align=i=="right"||i=="bottom";a._a.offset=parseInt(g.getAttribute("offset")||a._a.offset,10);(i=g.getAttribute("skinColors"))&&a.setSkinColors(i.split(",")[0],i.split(",")[1]);for(var j=0;j<h.length;j++)for(var k=e.doXPath("./tab",h[j]),m=0;m<k.length;m++){var l=k[m].getAttribute("width"),n=a._getXMLContent(k[m]),o=k[m].getAttribute("id");a.addTab(o,n,l,"",j);k[m].getAttribute("selected")&&
+(f=o);if(a._hrfmode)a.setContentHref(o,k[m].getAttribute("href"));else for(var p=0;p<k[m].childNodes.length;p++){var r=k[m].childNodes[p];r.tagName=="content"&&(r.getAttribute("id")?a.setContent(o,r.getAttribute("id")):a.setContentHTML(o,a._getXMLContent(r)))}}f&&a.setTabActive(f);a.callEvent("onXLE",[])},adjustOuterSize:function(){this._setSizes()},_getXMLContent:function(a){for(var b="",c=0;c<a.childNodes.length;c++){var d=a.childNodes[c];b+=d.nodeValue===null?"":d.nodeValue}return b},enableContentZone:function(a){this._conZone.style.display=
+convertStringToBoolean(a)?"":"none";this._setSizes()},enableForceHiding:function(a){this._s.hide=convertStringToBoolean(a)},setSize:function(a,b){this.entBox.style.width=a+"px";this.entBox.style.height=b+"px";this._setSizes()},setSkinColors:function(a,b,c){if(a)this._a.data_color=a;if(b)this._a.tab_color=b;this._conZone.style.backgroundColor=c||a},setCustomStyle:function(a,b,c,d){var e="";this._c[a]={color:";"+(b?"color:"+b+";":"")+(d||""),scolor:";"+(c?"color:"+c+";":"")+(d||"")};if(this._tabs[a])this._tabs[a].childNodes[0].style.cssText=
+this._tabs[a]==this._lastActive?this._c[a].scolor:this._c[a].color},setImagePath:function(a){this.imgUrl=a},getNext:function(a,b){var b=b||"nextSibling",c=a[b];c&&c.className.indexOf("dhx_tab_element")==-1&&(c=null);!c&&a.parentNode[b]&&(c=a.parentNode[b].childNodes[0]);return c||a},goToNextTab:function(a){do a=this.getNext(a||this._lastActive);while(!this._setTabActive(a));return a},goToPrevTab:function(a){do a=this.getNext(a||this._lastActive,"previousSibling");while(!this._setTabActive(a));return a},
+disableTab:function(a){this._tabs[a]._disabled=!0;this._tabs[a].style.color="silver"},enableTab:function(a){this._tabs[a]._disabled=!1;this._tabs[a].style.color=""},showTab:function(a){var b=this._tabs[a];b.style.display="";this._setTabSizes(b.parentNode)},hideTab:function(a,b){var c=this._tabs[a];c.style.display="none";c==this._lastActive&&b!==!1&&this.goToNextTab();this._setTabSizes(c.parentNode)},getActiveTab:function(){return!this._lastActive?null:this._lastActive.getAttribute("tab_id")},setLabel:function(a,
+b,c){var d=this.getActiveTab();this._tabs[a].firstChild.innerHTML=b;this.adjustTabSize(this._tabs[a],c);this._setTabSizes(this._tabs[a].parentNode);this._checkScroll()},getLabel:function(a){return this._tabs[a].firstChild.innerHTML},setOffset:function(a){this._a.offset=a*1},enableScroll:function(a){this._s.scrolls=convertStringToBoolean(a)},setMargin:function(a){this._a.margin=a*1},setAlign:function(a){this._s.align=a=="bottom"||a=="right"},tabWindow:function(a){return this._content[a]?this._content[a]._frame.contentWindow:
+null},setContentHTML:function(a,b){this.cells(a).attachHTMLString(b)},setContent:function(a,b){this.cells(a).attachObject(b);this.cells(a).activate()},setHrefMode:function(a){this._hrfmode=a},setContentHref:function(a,b){this._hrefs[a]=b;switch(this._hrfmode){case "iframes":this.cells(a).attachURL(b);break;case "iframe":case "iframes-on-demand":this.cells(a)._delay=["url",b,!1];break;case "ajax":var c=this.cells(a),d=this;c._delay=["urlajax",b,!0];if(!c.attachHTMLStringA)c.attachHTMLStringA=c.attachHTMLString,
+c.attachHTMLString=function(a,b){b&&(a=d._getXMLContent(b.doXPath("//content")[0]));return this.attachHTMLStringA(a)};break;case "ajax-html":this.cells(a)._delay=["urlajax",b,!0]}this._tabs[a]==this._lastActive&&this.cells(a).show(!0)},normalize:function(a,b){function c(a,b){d[b]._size+=j!=Infinity?j-i:0;a.adjustTabSize(d[b],d[b]._size)}for(var a=a||this._tabZone.offsetWidth,d=[],e=0;e<this._rows.length;e++)for(var f=0;f<this._rows[e].tabCount;f++)d.push(this._rows[e].removeChild(this._rows[e].childNodes[0]));
+this._tabZone.innerHTML="";this._rows=[];var g=this._lastActive;this._lastActive=null;this._createRow();for(var h=0,i=this._a.offset,j=Infinity,k=null,f=0;f<d.length;f++)i+d[f]._size+this._a.margin<a?(this._rows[h].appendChild(d[f]),this._rows[h].tabCount++,i+=d[f]._size+this._a.margin):(b&&i<j&&c(this,f-1),this._createRow(),f--,h++,j=i,i=this._a.offset);b&&i<j&&j!=Infinity&&c(this,f-1);for(e=0;e<this._rows.length;e++)this._setTabSizes(this._rows[e]);this._setSizes();(this._lastActive=g)&&this._setTabTop(this._lastActive)},
+showInnerScroll:function(){for(var a in this._tabs)if(this.cells(a).vs){var b=this.cells(a).av;this.cells(a).vs[b].dhxcont.mainCont[b].style.overflow="auto"}else this.cells(a).dhxcont.mainCont.style.overflow="auto"},getNumberOfTabs:function(){for(var a=0,b=0;b<this._rows.length;b++)a+=this._rows[b].tabCount;return a},destructor:function(){}};
+if(!window.dhtmlXContainer)window.dhtmlXContainer=function(a){var b=this;this.obj=a;this.dhxcont=null;this.setContent=function(a){this.dhxcont=a;this.dhxcont.innerHTML="<div id='dhxMainCont' class='dhxcont_main_content'></div><div id='dhxContBlocker' class='dhxcont_content_blocker' style='display: none;'></div>";this.dhxcont.mainCont=this.dhxcont.childNodes[0];this.obj.dhxcont=this.dhxcont};this.obj._genStr=function(a){for(var b="",e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
+f=0;f<a;f++)b+=e.charAt(Math.round(Math.random()*e.length));return b};this.obj.setMinContentSize=function(a,b){this._minDataSizeW=a;this._minDataSizeH=b};this.obj.moveContentTo=function(a){a.updateNestedObjects()};this.obj.adjustContent=function(a,b,e,f,g){this.dhxcont.style.top=b+"px";this.dhxcont.style.left="0px";if(f!=!0)this.dhxcont.style.width=a.clientWidth+"px";var h=a.clientHeight-b;h<0&&(h=0);this.dhxcont.style.height=h+(e!=null?e:0)+"px";if(f!=!0&&this.dhxcont.offsetWidth>a.clientWidth)this.dhxcont.style.width=
+Math.max(0,a.clientWidth*2-this.dhxcont.offsetWidth)+"px";if(this.dhxcont.offsetHeight>a.clientHeight-b)h=(a.clientHeight-b)*2-this.dhxcont.offsetHeight,h<0&&(h=0),this.dhxcont.style.height=h+"px";if(g&&!isNaN(g))this.dhxcont.style.height=parseInt(this.dhxcont.style.height)-g+"px";if(this._minDataSizeH!=null&&parseInt(this.dhxcont.style.height)<this._minDataSizeH)this.dhxcont.style.height=this._minDataSizeH+"px";if(this._minDataSizeW!=null&&parseInt(this.dhxcont.style.width)<this._minDataSizeW)this.dhxcont.style.width=
+this._minDataSizeW+"px";if(f!=!0)this.dhxcont.mainCont.style.width=this.dhxcont.clientWidth+"px";var i=this.menu!=null?!this.menuHidden?this.menuHeight:0:0,j=this.toolbar!=null?!this.toolbarHidden?this.toolbarHeight:0:0,k=this.sb!=null?!this.sbHidden?this.sbHeight:0:0;this.dhxcont.mainCont.style.height=this.dhxcont.clientHeight-i-j-k+"px"};this.obj.updateNestedObjects=function(){};this.obj.attachObject=function(a,b){typeof a=="string"&&(a=document.getElementById(a));if(b){a.style.visibility="hidden";
+a.style.display="";var e=a.offsetWidth,f=a.offsetHeight}this._attachContent("obj",a);if(b&&this._isWindow)a.style.visibility="",this._adjustToContent(e,f)};this.obj.appendObject=function(a){typeof a=="string"&&(a=document.getElementById(a));this._attachContent("obj",a,!0)};this.obj.attachHTMLString=function(a){this._attachContent("str",a);for(var b=a.match(/<script[^>]*>[^\f]*?<\/script>/g)||[],e=0;e<b.length;e++){var f=b[e].replace(/<([\/]{0,1})script[^>]*>/g,"");if(window.execScript){var g=b[e].match(/src=("|')([^"']+)("|')/);
+if(g)f=dhtmlxAjax.getSync(g[2]).xmlDoc.responseText;f&&window.execScript(f)}else window.eval(f)}};this.obj.attachURL=function(a,b){this._attachContent(b==!0?"urlajax":"url",a,!1)};this.obj._attachContent=function(a,d,e){if(e!==!0)for(;b.dhxcont.mainCont.childNodes.length>0;)b.dhxcont.mainCont.removeChild(b.dhxcont.mainCont.childNodes[0]);if(a=="url"){var f=document.createElement("IFRAME");f.frameBorder=0;f.border=0;f.style.width="100%";f.style.height="100%";b.dhxcont.mainCont.appendChild(f);f.src=
+d;this._frame=f;this._doOnFrameContentLoaded&&this._doOnFrameContentLoaded(!0)}else if(a=="urlajax"){var g=this,h=function(){g.attachHTMLString(this.xmlDoc.responseText,this);g._doOnFrameContentLoaded&&g._doOnFrameContentLoaded(!1);this.destructor()},i=new dtmlXMLLoaderObject(h,window);i.loadXML(d);g._doOnBeforeAttachURL&&g._doOnBeforeAttachURL(!1)}else if(a=="obj")b.dhxcont._frame=null,b.dhxcont.mainCont.appendChild(d),b.dhxcont.mainCont.style.overflow=e===!0?"auto":"hidden",d.style.display="";else if(a==
+"str")b.dhxcont._frame=null,b.dhxcont.mainCont.innerHTML=d};this.obj._dhxContDestruct=function(){}};
+(function(){dhtmlx.extend_api("dhtmlXTabBar",{_init:function(a){return[a.parent,a.mode,a.height]},tabs:"tabs",skin:"setSkin",offset:"setOffset",margin:"setMargin",image_path:"setImagePath",href_mode:"setHrefMode",align:"setAlign",xml:"loadXML",close_button:"enableTabCloseButton",scroll:"enableScroll",forced:"enableForceHiding",content_zone:"enableContentZone",size_by_content:"enableAutoSize",auto_size:"enableAutoReSize"},{tabs:function(a){for(var b=0;b<a.length;b++){var c=a[b];this.addTab(c.id,c.label,
+c.width,c.index,c.row);c.active&&this.setTabActive(c.id)}}})})();
+function dhx_init_tabbars(){for(var a=document.getElementsByTagName("div"),b=0;b<a.length;b++)if(a[b].className.indexOf("dhtmlxTabBar")!=-1){var c=a[b],d=c.id;c.className="";for(var e=[],f=0;f<c.childNodes.length;f++)c.childNodes[f].tagName&&c.childNodes[f].tagName!="!"&&(e[e.length]=c.childNodes[f]);var g=new dhtmlXTabBar(d,c.getAttribute("mode")||"top",c.getAttribute("tabheight")||20);window[d]=g;(h=c.getAttribute("onbeforeinit"))&&eval(h);c.getAttribute("enableForceHiding")&&g.enableForceHiding(!0);
+g.setImagePath(c.getAttribute("imgpath"));var h=c.getAttribute("margin");if(h!=null)g._margin=h;if(h=c.getAttribute("align"))g._align=h;(h=c.getAttribute("hrefmode"))&&g.setHrefMode(h);h=c.getAttribute("offset");if(h!=null)g._offset=h;h=c.getAttribute("tabstyle");h!=null&&g.setStyle(h);var h=c.getAttribute("select"),i=c.getAttribute("skinColors");i&&g.setSkinColors(i.split(",")[0],i.split(",")[1]);for(f=0;f<e.length;f++){var j=e[f];j.parentNode.removeChild(j);g.addTab(j.id,j.getAttribute("name"),
+j.getAttribute("width"),null,j.getAttribute("row"));var k=j.getAttribute("href");k?g.setContentHref(j.id,k):g.setContent(j.id,j);if(!g._dspN&&j.style.display=="none")j.style.display=""}e.length&&g.setTabActive(h||e[0].id);(h=c.getAttribute("oninit"))&&eval(h)}}dhtmlxEvent(window,"load",dhx_init_tabbars);
+function dhtmlXToolbarObject(a,b){var c=this;for(this.cont=typeof a!="object"?document.getElementById(a):a;this.cont.childNodes.length>0;)this.cont.removeChild(this.cont.childNodes[0]);this.cont.dir="ltr";this.cont.innerHTML+="<div class='dhxtoolbar_hdrline_ll'></div><div class='dhxtoolbar_hdrline_rr'></div><div class='dhxtoolbar_hdrline_l'></div><div class='dhxtoolbar_hdrline_r'></div>";this.base=document.createElement("DIV");this.base.className="float_left";this.cont.appendChild(this.base);this.align=
+"left";this.setAlign=function(a){this.align=a=="right"?"right":"left";this.base.className=a=="right"?"float_right":"float_left";if(this._spacer)this._spacer.className="dhxtoolbar_spacer "+(a=="right"?" float_left":" float_right")};this._isIE6=!1;if(_isIE)this._isIE6=window.XMLHttpRequest==null?!0:!1;if(this._isIPad=navigator.userAgent.search(/iPad/gi)>=0)this.cont.ontouchstart=function(a){a=a||event;a.returnValue=!1;a.cancelBubble=!0;return!1};this.selectPolygonOffsetLeft=this.selectPolygonOffsetTop=
+0;this.setSkin=function(a){this.skin=a;if(this.skin=="dhx_skyblue")this.selectPolygonOffsetTop=2;if(this.skin=="dhx_web")this.selectPolygonOffsetLeft=this.selectPolygonOffsetTop=1;this.cont.className="dhx_toolbar_base_"+this.skin+(this.rtl?" rtl":"");for(var b in this.objPull){var c=this.objPull[b];if(c.type=="slider")c.pen._detectLimits(),c.pen._definePos(),c.label.className="dhx_toolbar_slider_label_"+this.skin+(this.rtl?" rtl":"");if(c.type=="buttonSelect")c.polygon.className="dhx_toolbar_poly_"+
+this.skin+(this.rtl?" rtl":"")}};this.setSkin(b==null?"dhx_skyblue":b);this.objPull={};this.anyUsed="none";this.imagePath="";this.setIconPath=this.setIconsPath=function(a){this.imagePath=a};this._doOnLoad=function(){};this.loadXML=function(a,b){if(b!=null)this._doOnLoad=function(){b()};this.callEvent("onXLS",[]);this._xmlLoader=new dtmlXMLLoaderObject(this._xmlParser,window);this._xmlLoader.loadXML(a)};this.loadXMLString=function(a,b){if(b!=null)this._doOnLoad=function(){b()};this._xmlLoader=new dtmlXMLLoaderObject(this._xmlParser,
+window);this._xmlLoader.loadXMLString(a)};this._xmlParser=function(){for(var a=this.getXMLTopNode("toolbar"),b="id,type,hidden,title,text,enabled,img,imgdis,action,openAll,renderSelect,maxOpen,width,value,selected,length,textMin,textMax,toolTip,valueMin,valueMax,valueNow".split(","),f="id,type,enabled,disabled,action,selected,img,text".split(","),g=0;g<a.childNodes.length;g++)if(a.childNodes[g].tagName=="item"){for(var h={},i=0;i<b.length;i++)h[b[i]]=a.childNodes[g].getAttribute(b[i]);h.items=[];
+h.userdata=[];for(var j=0;j<a.childNodes[g].childNodes.length;j++){if(a.childNodes[g].childNodes[j].tagName=="item"&&h.type=="buttonSelect"){for(var k={},i=0;i<f.length;i++)k[f[i]]=a.childNodes[g].childNodes[j].getAttribute(f[i]);try{k.itemText=a.childNodes[g].childNodes[j].getElementsByTagName("itemText")[0].firstChild.nodeValue}catch(m){}for(var l=a.childNodes[g].childNodes[j].getElementsByTagName("userdata"),i=0;i<l.length;i++){if(!k.userdata)k.userdata={};var n={};try{n.name=l[i].getAttribute("name")}catch(o){n.name=
+""}try{n.value=l[i].firstChild.nodeValue}catch(p){n.value=""}if(n.name!="")k.userdata[n.name]=n.value}h.items[h.items.length]=k}if(a.childNodes[g].childNodes[j].tagName=="userdata"){k={};try{k.name=a.childNodes[g].childNodes[j].getAttribute("name")}catch(r){k.name=""}try{k.value=a.childNodes[g].childNodes[j].firstChild.nodeValue}catch(q){k.value=""}h.userdata[h.userdata.length]=k}}c._addItemToStorage(h)}c.callEvent("onXLE",[]);c._doOnLoad();this.destructor()};this._addItemToStorage=function(a,b){var c=
+a.id||this._genStr(24),g=a.type||"";if(g!=""&&this["_"+g+"Object"]!=null)this.objPull[this.idPrefix+c]=new this["_"+g+"Object"](this,c,a),this.objPull[this.idPrefix+c].type=g,this.setPosition(c,b);if(a.userdata)for(var h=0;h<a.userdata.length;h++)this.setUserData(c,a.userdata[h].name,a.userdata[h].value)};this._genStr=function(a){for(var b="",c="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",g=0;g<a;g++)b+=c.charAt(Math.round(Math.random()*(c.length-1)));return b};this.rootTypes=
+"button,buttonSelect,buttonTwoState,separator,label,slider,text,buttonInput".split(",");this.idPrefix=this._genStr(12);dhtmlxEventable(this);this._getObj=function(a,b){for(var c=null,g=0;g<a.childNodes.length;g++)a.childNodes[g].tagName!=null&&String(a.childNodes[g].tagName).toLowerCase()==String(b).toLowerCase()&&(c=a.childNodes[g]);return c};this._addImgObj=function(a){var b=document.createElement("IMG");a.childNodes.length>0?a.insertBefore(b,a.childNodes[0]):a.appendChild(b);return b};this._setItemImage=
+function(a,b,c){c==!0?a.imgEn=b:a.imgDis=b;if(!(!a.state&&c==!0||a.state&&c==!1)){var g=this._getObj(a.obj,"img");g==null&&(g=this._addImgObj(a.obj));g.src=this.imagePath+b}};this._clearItemImage=function(a,b){b==!0?a.imgEn="":a.imgDis="";if(!(!a.state&&b==!0||a.state&&b==!1)){var c=this._getObj(a.obj,"img");c!=null&&c.parentNode.removeChild(c)}};this._setItemText=function(a,b){var c=this._getObj(a.obj,"div");b==null||b.length==0?c!=null&&c.parentNode.removeChild(c):(c==null&&(c=document.createElement("DIV"),
+a.obj.appendChild(c)),c.innerHTML=b)};this._getItemText=function(a){var b=this._getObj(a.obj,"div");return b!=null?b.innerHTML:""};this._enableItem=function(a){if(!a.state){a.state=!0;this.objPull[a.id].type=="buttonTwoState"&&this.objPull[a.id].obj.pressed==!0?(a.obj.className="dhx_toolbar_btn pres",a.obj.renderAs="dhx_toolbar_btn over"):(a.obj.className="dhx_toolbar_btn def",a.obj.renderAs=a.obj.className);if(a.arw)a.arw.className=String(a.obj.className).replace("btn","arw");var b=this._getObj(a.obj,
+"img");a.imgEn!=""?(b==null&&(b=this._addImgObj(a.obj)),b.src=this.imagePath+a.imgEn):b!=null&&b.parentNode.removeChild(b)}};this._disableItem=function(a){if(a.state){a.state=!1;a.obj.className="dhx_toolbar_btn dis";a.obj.renderAs="dhx_toolbar_btn def";if(a.arw)a.arw.className=String(a.obj.className).replace("btn","arw");var b=this._getObj(a.obj,"img");a.imgDis!=""?(b==null&&(b=this._addImgObj(a.obj)),b.src=this.imagePath+a.imgDis):b!=null&&b.parentNode.removeChild(b);if(a.polygon!=null&&a.polygon.style.display!=
+"none"&&(a.polygon.style.display="none",a.polygon._ie6cover))a.polygon._ie6cover.style.display="none";this.anyUsed="none"}};this.clearAll=function(){for(var a in this.objPull)this._removeItem(String(a).replace(this.idPrefix,""))};this._isWebToolbar=!0;this._doOnClick=function(){c.forEachItem(function(a){if(c.objPull[c.idPrefix+a].type=="buttonSelect"){var b=c.objPull[c.idPrefix+a];if(b.polygon.style.display!="none"&&(b.obj.renderAs="dhx_toolbar_btn def",b.obj.className=b.obj.renderAs,b.arw.className=
+String(b.obj.renderAs).replace("btn","arw"),c.anyUsed="none",b.polygon.style.display="none",b.polygon._ie6cover))b.polygon._ie6cover.style.display="none"}})};this._isIPad?document.addEventListener("touchstart",this._doOnClick,!1):_isIE?document.body.attachEvent("onclick",this._doOnClick):window.addEventListener("click",this._doOnClick,!1);return this}
+dhtmlXToolbarObject.prototype.addSpacer=function(a){var b=this.idPrefix+a;if(this._spacer!=null){if(this._spacer.idd!=a)if(this._spacer==this.objPull[b].obj.parentNode){for(var c=!0;c;){var d=this._spacer.childNodes[0].idd;this.base.appendChild(this._spacer.childNodes[0]);if(d==a||this._spacer.childNodes.length==0)this.objPull[b].arw!=null&&this.base.appendChild(this.objPull[b].arw),c=!1}this._spacer.idd=a}else if(this.base==this.objPull[b].obj.parentNode){for(var c=!0,e=this.objPull[b].arw!=null;c;){var f=
+this.base.childNodes.length-1;e==!0&&this.base.childNodes[f]==this.objPull[b].arw&&(c=!1);this.base.childNodes[f].idd==a&&(c=!1);c&&(this._spacer.childNodes.length>0?this._spacer.insertBefore(this.base.childNodes[f],this._spacer.childNodes[0]):this._spacer.appendChild(this.base.childNodes[f]))}this._spacer.idd=a}}else{for(var g=null,f=0;f<this.base.childNodes.length;f++)this.base.childNodes[f]==this.objPull[this.idPrefix+a].obj&&(g=f,this.objPull[this.idPrefix+a].arw!=null&&(g=f+1));if(g!=null){this._spacer=
+document.createElement("DIV");this._spacer.className="dhxtoolbar_spacer "+(this.align=="right"?" float_left":" float_right");this._spacer.dir="rtl";for(this._spacer.idd=a;this.base.childNodes.length>g+1;)this._spacer.appendChild(this.base.childNodes[g+1]);this.cont.appendChild(this._spacer)}}};
+dhtmlXToolbarObject.prototype.removeSpacer=function(){if(this._spacer){for(;this._spacer.childNodes.length>0;)this.base.appendChild(this._spacer.childNodes[0]);this._spacer.parentNode.removeChild(this._spacer);this._spacer=null}};
+dhtmlXToolbarObject.prototype.getType=function(a){var b=this.getParentId(a);if(b!=null){var c=null,d=this.objPull[this.idPrefix+b]._listOptions[a];d!=null&&(c=d.sep!=null?"buttonSelectSeparator":"buttonSelectButton");return c}else return this.objPull[this.idPrefix+a]==null?null:this.objPull[this.idPrefix+a].type};dhtmlXToolbarObject.prototype.getTypeExt=function(a){var b=this.getType(a);return b=="buttonSelectButton"||b=="buttonSelectSeparator"?b=b=="buttonSelectButton"?"button":"separator":null};
+dhtmlXToolbarObject.prototype.inArray=function(a,b){for(var c=0;c<a.length;c++)if(a[c]==b)return!0;return!1};dhtmlXToolbarObject.prototype.getParentId=function(a){var b=null,c;for(c in this.objPull)if(this.objPull[c]._listOptions)for(var d in this.objPull[c]._listOptions)d==a&&(b=String(c).replace(this.idPrefix,""));return b};dhtmlXToolbarObject.prototype._addItem=function(a,b){this._addItemToStorage(a,b)};
+dhtmlXToolbarObject.prototype.addButton=function(a,b,c,d,e){this._addItem({id:a,type:"button",text:c,img:d,imgdis:e},b)};dhtmlXToolbarObject.prototype.addText=function(a,b,c){this._addItem({id:a,type:"text",text:c},b)};
+dhtmlXToolbarObject.prototype.addButtonSelect=function(a,b,c,d,e,f,g,h,i){for(var j=[],k=0;k<d.length;k++){var m={};d[k].id&&d[k].type?(m.id=d[k].id,m.type=d[k].type=="obj"?"button":"separator",m.text=d[k].text,m.img=d[k].img):(m.id=d[k][0],m.type=d[k][1]=="obj"?"button":"separator",m.text=d[k][2]||null,m.img=d[k][3]||null);j[j.length]=m}this._addItem({id:a,type:"buttonSelect",text:c,img:e,imgdis:f,renderSelect:g,openAll:h,items:j,maxOpen:i},b)};
+dhtmlXToolbarObject.prototype.addButtonTwoState=function(a,b,c,d,e){this._addItem({id:a,type:"buttonTwoState",img:d,imgdis:e,text:c},b)};dhtmlXToolbarObject.prototype.addSeparator=function(a,b){this._addItem({id:a,type:"separator"},b)};dhtmlXToolbarObject.prototype.addSlider=function(a,b,c,d,e,f,g,h,i){this._addItem({id:a,type:"slider",length:c,valueMin:d,valueMax:e,valueNow:f,textMin:g,textMax:h,toolTip:i},b)};
+dhtmlXToolbarObject.prototype.addInput=function(a,b,c,d){this._addItem({id:a,type:"buttonInput",value:c,width:d},b)};dhtmlXToolbarObject.prototype.forEachItem=function(a){for(var b in this.objPull)this.inArray(this.rootTypes,this.objPull[b].type)&&a(this.objPull[b].id.replace(this.idPrefix,""))};
+(function(){for(var a="showItem,hideItem,isVisible,enableItem,disableItem,isEnabled,setItemText,getItemText,setItemToolTip,getItemToolTip,setItemImage,setItemImageDis,clearItemImage,clearItemImageDis,setItemState,getItemState,setItemToolTipTemplate,getItemToolTipTemplate,setValue,getValue,setMinValue,getMinValue,setMaxValue,getMaxValue,setWidth,getWidth,setMaxOpen".split(","),b=["","",!1,"","",!1,"","","","","","","","","",!1,"","","",null,"",[null,null],"",[null,null],"",null],c=function(a,b){return function(c,
+d,e){c=this.idPrefix+c;return this.objPull[c][a]!=null?this.objPull[c][a].call(this.objPull[c],d,e):b}},d=0;d<a.length;d++){var e=a[d],f=b[d];dhtmlXToolbarObject.prototype[e]=c(e,f)}})();dhtmlXToolbarObject.prototype.getPosition=function(a){return this._getPosition(a)};
+dhtmlXToolbarObject.prototype._getPosition=function(a){if(this.objPull[this.idPrefix+a]==null)return null;for(var b=null,c=0,d=0;d<this.base.childNodes.length;d++)this.base.childNodes[d].idd!=null&&(this.base.childNodes[d].idd==a&&(b=c),c++);if(!b&&this._spacer!=null)for(d=0;d<this._spacer.childNodes.length;d++)this._spacer.childNodes[d].idd!=null&&(this._spacer.childNodes[d].idd==a&&(b=c),c++);return b};dhtmlXToolbarObject.prototype.setPosition=function(a,b){this._setPosition(a,b)};
+dhtmlXToolbarObject.prototype._setPosition=function(a,b){if(this.objPull[this.idPrefix+a]!=null){if(isNaN(b))b=this.base.childNodes.length;b<0&&(b=0);var c=null;if(this._spacer)c=this._spacer.idd,this.removeSpacer();var d=this.objPull[this.idPrefix+a];this.base.removeChild(d.obj);d.arw&&this.base.removeChild(d.arw);var e=this._getIdByPosition(b,!0);e[0]==null?(this.base.appendChild(d.obj),d.arw&&this.base.appendChild(d.arw)):(this.base.insertBefore(d.obj,this.base.childNodes[e[1]]),d.arw&&this.base.insertBefore(d.arw,
+this.base.childNodes[e[1]+1]));c!=null&&this.addSpacer(c)}};dhtmlXToolbarObject.prototype._getIdByPosition=function(a,b){for(var c=null,d=0,e=0,f=0;f<this.base.childNodes.length;f++)this.base.childNodes[f].idd!=null&&c==null&&d++==a&&(c=this.base.childNodes[f].idd),c==null&&e++;e=c==null?null:e;return b==!0?[c,e]:c};dhtmlXToolbarObject.prototype.removeItem=function(a){this._removeItem(a)};
+dhtmlXToolbarObject.prototype._removeItem=function(a){var b=this.getType(a),a=this.idPrefix+a,c=this.objPull[a];if(b=="button")c.obj._doOnMouseOver=null,c.obj._doOnMouseOut=null,c.obj._doOnMouseUp=null,c.obj._doOnMouseUpOnceAnywhere=null,c.obj.onclick=null,c.obj.onmouseover=null,c.obj.onmouseout=null,c.obj.onmouseup=null,c.obj.onmousedown=null,c.obj.onselectstart=null,c.obj.renderAs=null,c.obj.idd=null,c.obj.parentNode.removeChild(c.obj),c.obj=null,c.id=null,c.state=null,c.img=null,c.imgEn=null,c.imgDis=
+null,c.type=null,c.enableItem=null,c.disableItem=null,c.isEnabled=null,c.showItem=null,c.hideItem=null,c.isVisible=null,c.setItemText=null,c.getItemText=null,c.setItemImage=null,c.clearItemImage=null,c.setItemImageDis=null,c.clearItemImageDis=null,c.setItemToolTip=null,c.getItemToolTip=null;if(b=="buttonTwoState")c.obj._doOnMouseOver=null,c.obj._doOnMouseOut=null,c.obj.onmouseover=null,c.obj.onmouseout=null,c.obj.onmousedown=null,c.obj.onselectstart=null,c.obj.renderAs=null,c.obj.idd=null,c.obj.parentNode.removeChild(c.obj),
+c.obj=null,c.id=null,c.state=null,c.img=null,c.imgEn=null,c.imgDis=null,c.type=null,c.enableItem=null,c.disableItem=null,c.isEnabled=null,c.showItem=null,c.hideItem=null,c.isVisible=null,c.setItemText=null,c.getItemText=null,c.setItemImage=null,c.clearItemImage=null,c.setItemImageDis=null,c.clearItemImageDis=null,c.setItemToolTip=null,c.getItemToolTip=null,c.setItemState=null,c.getItemState=null;if(b=="buttonSelect"){for(var d in c._listOptions)this.removeListOption(a,d);c._listOptions=null;if(c.polygon._ie6cover)document.body.removeChild(c.polygon._ie6cover),
+c.polygon._ie6cover=null;c.p_tbl.removeChild(c.p_tbody);c.polygon.removeChild(c.p_tbl);c.polygon.onselectstart=null;document.body.removeChild(c.polygon);c.p_tbody=null;c.p_tbl=null;c.polygon=null;c.obj.onclick=null;c.obj.onmouseover=null;c.obj.onmouseout=null;c.obj.onmouseup=null;c.obj.onmousedown=null;c.obj.onselectstart=null;c.obj.idd=null;c.obj.iddPrefix=null;c.obj.parentNode.removeChild(c.obj);c.obj=null;c.arw.onclick=null;c.arw.onmouseover=null;c.arw.onmouseout=null;c.arw.onmouseup=null;c.arw.onmousedown=
+null;c.arw.onselectstart=null;c.arw.parentNode.removeChild(c.arw);c.arw=null;c.renderSelect=null;c.state=null;c.type=null;c.id=null;c.img=null;c.imgEn=null;c.imgDis=null;c.openAll=null;c._isListButton=null;c._separatorButtonSelectObject=null;c._buttonButtonSelectObject=null;c.setWidth=null;c.enableItem=null;c.disableItem=null;c.isEnabled=null;c.showItem=null;c.hideItem=null;c.isVisible=null;c.setItemText=null;c.getItemText=null;c.setItemImage=null;c.clearItemImage=null;c.setItemImageDis=null;c.clearItemImageDis=
+null;c.setItemToolTip=null;c.getItemToolTip=null;c.addListOption=null;c.removeListOption=null;c.showListOption=null;c.hideListOption=null;c.isListOptionVisible=null;c.enableListOption=null;c.disableListOption=null;c.isListOptionEnabled=null;c.setListOptionPosition=null;c.getListOptionPosition=null;c.setListOptionImage=null;c.getListOptionImage=null;c.clearListOptionImage=null;c.setListOptionText=null;c.getListOptionText=null;c.setListOptionToolTip=null;c.getListOptionToolTip=null;c.forEachListOption=
+null;c.getAllListOptions=null;c.setListOptionSelected=null;c.getListOptionSelected=null}if(b=="buttonInput")c.obj.childNodes[0].onkeydown=null,c.obj.removeChild(c.obj.childNodes[0]),c.obj.w=null,c.obj.idd=null,c.obj.parentNode.removeChild(c.obj),c.obj=null,c.id=null,c.type=null,c.enableItem=null,c.disableItem=null,c.isEnabled=null,c.showItem=null,c.hideItem=null,c.isVisible=null,c.setItemToolTip=null,c.getItemToolTip=null,c.setWidth=null,c.getWidth=null,c.setValue=null,c.getValue=null,c.setItemText=
+null,c.getItemText=null;if(b=="slider"){this._isIPad?(document.removeEventListener("touchmove",pen._doOnMouseMoveStart,!1),document.removeEventListener("touchend",pen._doOnMouseMoveEnd,!1)):_isIE?(document.body.detachEvent("onmousemove",c.pen._doOnMouseMoveStart),document.body.detachEvent("onmouseup",c.pen._doOnMouseMoveEnd)):(window.removeEventListener("mousemove",c.pen._doOnMouseMoveStart,!1),window.removeEventListener("mouseup",c.pen._doOnMouseMoveEnd,!1));c.pen.allowMove=null;c.pen.initXY=null;
+c.pen.maxX=null;c.pen.minX=null;c.pen.nowX=null;c.pen.newNowX=null;c.pen.valueMax=null;c.pen.valueMin=null;c.pen.valueNow=null;c.pen._definePos=null;c.pen._detectLimits=null;c.pen._doOnMouseMoveStart=null;c.pen._doOnMouseMoveEnd=null;c.pen.onmousedown=null;c.obj.removeChild(c.pen);c.pen=null;c.label.tip=null;document.body.removeChild(c.label);c.label=null;c.obj.onselectstart=null;for(c.obj.idd=null;c.obj.childNodes.length>0;)c.obj.removeChild(c.obj.childNodes[0]);c.obj.parentNode.removeChild(c.obj);
+c.obj=null;c.id=null;c.type=null;c.state=null;c.enableItem=null;c.disableItem=null;c.isEnabled=null;c.setItemToolTipTemplate=null;c.getItemToolTipTemplate=null;c.setMaxValue=null;c.setMinValue=null;c.getMaxValue=null;c.getMinValue=null;c.setValue=null;c.getValue=null;c.showItem=null;c.hideItem=null;c.isVisible=null}if(b=="separator")c.obj.onselectstart=null,c.obj.idd=null,c.obj.parentNode.removeChild(c.obj),c.obj=null,c.id=null,c.type=null,c.showItem=null,c.hideItem=null,c.isVisible=null;if(b=="text")c.obj.onselectstart=
+null,c.obj.idd=null,c.obj.parentNode.removeChild(c.obj),c.obj=null,c.id=null,c.type=null,c.showItem=null,c.hideItem=null,c.isVisible=null,c.setWidth=null,c.setItemText=null,c.getItemText=null;c=b=null;this.objPull[this.idPrefix+a]=null;delete this.objPull[this.idPrefix+a]};
+(function(){for(var a="addListOption,removeListOption,showListOption,hideListOption,isListOptionVisible,enableListOption,disableListOption,isListOptionEnabled,setListOptionPosition,getListOptionPosition,setListOptionText,getListOptionText,setListOptionToolTip,getListOptionToolTip,setListOptionImage,getListOptionImage,clearListOptionImage,forEachListOption,getAllListOptions,setListOptionSelected,getListOptionSelected".split(","),b=function(a){return function(b,c,d,i,j,k){b=this.idPrefix+b;if(this.objPull[b]!=
+null)return this.objPull[b].type!="buttonSelect"?void 0:this.objPull[b][a].call(this.objPull[b],c,d,i,j,k)}},c=0;c<a.length;c++){var d=a[c];dhtmlXToolbarObject.prototype[d]=b(d)}})();dhtmlXToolbarObject.prototype._rtlParseBtn=function(a,b){return a+b};
+dhtmlXToolbarObject.prototype._separatorObject=function(a,b,c){this.id=a.idPrefix+b;this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_sep";this.obj.style.display=c.hidden!=null?"none":"";this.obj.idd=String(b);this.obj.title=c.title||"";this.obj.onselectstart=function(a){a=a||event;a.returnValue=!1};if(a._isIPad)this.obj.ontouchstart=function(a){a=a||event;a.returnValue=!1;a.cancelBubble=!0;return!1};a.base.appendChild(this.obj);this.showItem=function(){this.obj.style.display=
+""};this.hideItem=function(){this.obj.style.display="none"};this.isVisible=function(){return this.obj.style.display==""};return this};
+dhtmlXToolbarObject.prototype._textObject=function(a,b,c){this.id=a.idPrefix+b;this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_text";this.obj.style.display=c.hidden!=null?"none":"";this.obj.idd=String(b);this.obj.title=c.title||"";this.obj.onselectstart=function(a){a=a||event;a.returnValue=!1};if(a._isIPad)this.obj.ontouchstart=function(a){a=a||event;a.returnValue=!1;a.cancelBubble=!0;return!1};this.obj.innerHTML=c.text||"";a.base.appendChild(this.obj);this.showItem=function(){this.obj.style.display=
+""};this.hideItem=function(){this.obj.style.display="none"};this.isVisible=function(){return this.obj.style.display==""};this.setItemText=function(a){this.obj.innerHTML=a};this.getItemText=function(){return this.obj.innerHTML};this.setWidth=function(a){this.obj.style.width=a+"px"};this.setItemToolTip=function(a){this.obj.title=a};this.getItemToolTip=function(){return this.obj.title};return this};
+dhtmlXToolbarObject.prototype._buttonObject=function(a,b,c){this.id=a.idPrefix+b;this.state=c.enabled!=null?!1:!0;this.imgEn=c.img||"";this.imgDis=c.imgdis||"";this.img=this.state?this.imgEn!=""?this.imgEn:"":this.imgDis!=""?this.imgDis:"";this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_btn "+(this.state?"def":"dis");this.obj.style.display=c.hidden!=null?"none":"";this.obj.allowClick=!1;this.obj.extAction=c.action||null;this.obj.renderAs=this.obj.className;this.obj.idd=String(b);
+this.obj.title=c.title||"";this.obj.pressed=!1;this.obj.innerHTML=a._rtlParseBtn(this.img!=""?"<img src='"+a.imagePath+this.img+"'>":"",c.text!=null?"<div>"+c.text+"</div>":"");var d=this;this.obj.onselectstart=function(a){a=a||event;a.returnValue=!1};this.obj.onmouseover=function(){this._doOnMouseOver()};this.obj.onmouseout=function(){this._doOnMouseOut()};this.obj._doOnMouseOver=function(){this.allowClick=!0;if(d.state!=!1&&a.anyUsed=="none")this.renderAs=this.className="dhx_toolbar_btn over"};
+this.obj._doOnMouseOut=function(){this.allowClick=!1;if(d.state!=!1&&a.anyUsed=="none")this.className="dhx_toolbar_btn def",this.renderAs=this.renderAs};this.obj.onclick=function(b){if(d.state!=!1&&this.allowClick!=!1){var b=b||event,c=this.idd.replace(a.idPrefix,"");if(this.extAction)try{window[this.extAction](c)}catch(g){}a&&a.callEvent&&a.callEvent("onClick",[c])}};this.obj[a._isIPad?"ontouchstart":"onmousedown"]=function(b){if(d.state==!1)return b=b||event,b.returnValue=!1,b.cancelBubble=!0,!1;
+if(a.anyUsed=="none")return a.anyUsed=this.idd,this.className="dhx_toolbar_btn pres",this.pressed=!0,this.onmouseover=function(){this._doOnMouseOver()},this.onmouseout=function(){a.anyUsed="none";this._doOnMouseOut()},!1};this.obj[a._isIPad?"ontouchend":"onmouseup"]=function(){if(d.state!=!1&&!(a.anyUsed!="none"&&a.anyUsed!=this.idd)){var b=a.anyUsed;this._doOnMouseUp();a._isIPad&&b!="none"&&a.callEvent("onClick",[this.idd.replace(a.idPrefix,"")])}};if(a._isIPad)this.obj.ontouchmove=function(){this._doOnMouseUp()};
+this.obj._doOnMouseUp=function(){a.anyUsed="none";this.className=this.renderAs;this.pressed=!1};this.obj._doOnMouseUpOnceAnywhere=function(){this._doOnMouseUp();this.onmouseover=function(){this._doOnMouseOver()};this.onmouseout=function(){this._doOnMouseOut()}};a.base.appendChild(this.obj);this.enableItem=function(){a._enableItem(this)};this.disableItem=function(){a._disableItem(this)};this.isEnabled=function(){return this.state};this.showItem=function(){this.obj.style.display=""};this.hideItem=function(){this.obj.style.display=
+"none"};this.isVisible=function(){return this.obj.style.display==""};this.setItemText=function(b){a._setItemText(this,b)};this.getItemText=function(){return a._getItemText(this)};this.setItemImage=function(b){a._setItemImage(this,b,!0)};this.clearItemImage=function(){a._clearItemImage(this,!0)};this.setItemImageDis=function(b){a._setItemImage(this,b,!1)};this.clearItemImageDis=function(){a._clearItemImage(this,!1)};this.setItemToolTip=function(a){this.obj.title=a};this.getItemToolTip=function(){return this.obj.title};
+return this};
+dhtmlXToolbarObject.prototype._buttonSelectObject=function(a,b,c){this.id=a.idPrefix+b;this.state=c.enabled!=null?c.enabled=="true"?!0:!1:!0;this.imgEn=c.img||"";this.imgDis=c.imgdis||"";this.img=this.state?this.imgEn!=""?this.imgEn:"":this.imgDis!=""?this.imgDis:"";this.openAll=c.openAll!=null;this.maxOpen=!isNaN(c.maxOpen?c.maxOpen:"")?c.maxOpen:null;this._maxOpenTest=function(){if(!isNaN(this.maxOpen)&&!a._sbw){var b=document.createElement("DIV");b.className="dhxtoolbar_maxopen_test";document.body.appendChild(b);
+var c=document.createElement("DIV");c.className="dhxtoolbar_maxopen_test2";b.appendChild(c);a._sbw=b.offsetWidth-c.offsetWidth;b.removeChild(c);c=null;document.body.removeChild(b);b=null}};this._maxOpenTest();this.obj=document.createElement("DIV");this.obj.allowClick=!1;this.obj.extAction=c.action||null;this.obj.className="dhx_toolbar_btn def";this.obj.style.display=c.hidden!=null?"none":"";this.obj.renderAs=this.obj.className;this.obj.onselectstart=function(a){a=a||event;a.returnValue=!1};this.obj.idd=
+String(b);this.obj.title=c.title||"";this.callEvent=this.obj.pressed=!1;this.renderSelect=c.renderSelect!=null?c.renderSelect=="false"||c.renderSelect=="disabled"?!1:!0:!0;this.obj.innerHTML=a._rtlParseBtn(this.img!=""?"<img src='"+a.imagePath+this.img+"'>":"",c.text!=null?"<div>"+c.text+"</div>":"");a.base.appendChild(this.obj);this.arw=document.createElement("DIV");this.arw.className="dhx_toolbar_arw def";this.arw.style.display=this.obj.style.display;this.arw.innerHTML="<div class='arwimg'>&nbsp;</div>";
+this.arw.title=this.obj.title;this.arw.onselectstart=function(a){a=a||event;a.returnValue=!1};a.base.appendChild(this.arw);var d=this;this.obj.onmouseover=function(b){b=b||event;if(a.anyUsed=="none"&&d.state)d.obj.renderAs="dhx_toolbar_btn over",d.obj.className=d.obj.renderAs,d.arw.className=String(d.obj.renderAs).replace("btn","arw")};this.obj.onmouseout=function(){d.obj.allowClick=!1;if(a.anyUsed=="none"&&d.state)d.obj.renderAs="dhx_toolbar_btn def",d.obj.className=d.obj.renderAs,d.arw.className=
+String(d.obj.renderAs).replace("btn","arw"),d.callEvent=!1};this.arw.onmouseover=this.obj.onmouseover;this.arw.onmouseout=this.obj.onmouseout;if(this.openAll!=!0)this.obj.onclick=function(b){b=b||event;if(d.obj.allowClick&&d.state&&a.anyUsed=="none"){var c=d.obj.idd.replace(a.idPrefix,"");if(d.obj.extAction)try{window[d.obj.extAction](c)}catch(e){}a.callEvent("onClick",[c])}},this.obj[a._isIPad?"ontouchstart":"onmousedown"]=function(b){b=b||event;if(a.anyUsed=="none"&&d.state)d.obj.allowClick=!0,
+d.obj.className="dhx_toolbar_btn pres",d.arw.className="dhx_toolbar_arw pres",d.callEvent=!0},this.obj[a._isIPad?"ontouchend":"onmouseup"]=function(b){b=b||event;b.cancelBubble=!0;if(a.anyUsed=="none"&&d.state&&(d.obj.className=d.obj.renderAs,d.arw.className=String(d.obj.renderAs).replace("btn","arw"),a._isIPad&&d.callEvent)){var c=d.obj.idd.replace(a.idPrefix,"");a.callEvent("onClick",[c])}};if(a._isIPad)this.obj.ontouchmove=this.obj.onmouseout;this.arw[a._isIPad?"ontouchstart":"onmousedown"]=function(b){b=
+b||event;if(d.state){if(a.anyUsed==d.obj.idd){if(d.obj.className=d.obj.renderAs,d.arw.className=String(d.obj.renderAs).replace("btn","arw"),a.anyUsed="none",d.polygon.style.display="none",d.polygon._ie6cover)d.polygon._ie6cover.style.display="none"}else{if(a.anyUsed!="none"&&a.objPull[a.idPrefix+a.anyUsed].type=="buttonSelect"){var c=a.objPull[a.idPrefix+a.anyUsed];if(c.polygon.style.display!="none"&&(c.obj.renderAs="dhx_toolbar_btn def",c.obj.className=c.obj.renderAs,c.arw.className=String(d.obj.renderAs).replace("btn",
+"arw"),c.polygon.style.display="none",c.polygon._ie6cover))c.polygon._ie6cover.style.display="none"}d.obj.className="dhx_toolbar_btn over";d.arw.className="dhx_toolbar_arw pres";a.anyUsed=d.obj.idd;d.polygon.style.top="0px";d.polygon.style.visibility="hidden";d.polygon.style.display="";d._fixMaxOpenHeight(d.maxOpen||null);a._autoDetectVisibleArea();var e=getAbsoluteTop(d.obj)+d.obj.offsetHeight+a.selectPolygonOffsetTop,f=d.polygon.offsetHeight;e+f>a.tY2&&d._fixMaxOpenHeight(Math.floor((a.tY2-e)/22));
+d.polygon.style.top=e+"px";d.polygon.style.left=a.rtl?getAbsoluteLeft(d.obj)+d.obj.offsetWidth-d.polygon.offsetWidth+a.selectPolygonOffsetLeft+"px":getAbsoluteLeft(d.obj)+a.selectPolygonOffsetLeft+"px";d.polygon.style.visibility="visible";if(d.polygon._ie6cover)d.polygon._ie6cover.style.left=d.polygon.style.left,d.polygon._ie6cover.style.top=d.polygon.style.top,d.polygon._ie6cover.style.width=d.polygon.offsetWidth+"px",d.polygon._ie6cover.style.height=d.polygon.offsetHeight+"px",d.polygon._ie6cover.style.display=
+""}return!1}};this.arw.onclick=function(a){a=a||event;a.cancelBubble=!0};this.arw[a._isIPad?"ontouchend":"onmouseup"]=function(a){a=a||event;a.cancelBubble=!0};if(this.openAll===!0&&(this.obj.onclick=this.arw.onclick,this.obj.onmousedown=this.arw.onmousedown,this.obj.onmouseup=this.arw.onmouseup,a._isIPad))this.obj.ontouchstart=this.arw.ontouchstart,this.obj.ontouchend=this.arw.ontouchend;this.obj.iddPrefix=a.idPrefix;this._listOptions={};this._fixMaxOpenHeight=function(b){var c="auto",e=!1;if(b!==
+null){var f=0,k;for(k in this._listOptions)f++;f>b?(this._ph=22*b,c=this._ph+"px"):e=!0}this.polygon.style.width="auto";this.polygon.style.height="auto";if(!e&&d.maxOpen!=null)this.polygon.style.width=this.p_tbl.offsetWidth+a._sbw+"px",this.polygon.style.height=c};this._separatorButtonSelectObject=function(a,b,c){this.obj={};this.obj.tr=document.createElement("TR");this.obj.tr.className="tr_sep";this.obj.tr.onselectstart=function(a){a=a||event;return a.returnValue=!1};this.obj.td=document.createElement("TD");
+this.obj.td.colSpan="2";this.obj.td.className="td_btn_sep";this.obj.td.onselectstart=function(a){a=a||event;return a.returnValue=!1};isNaN(c)?c=d.p_tbody.childNodes.length+1:c<1&&(c=1);c>d.p_tbody.childNodes.length?d.p_tbody.appendChild(this.obj.tr):d.p_tbody.insertBefore(this.obj.tr,d.p_tbody.childNodes[c-1]);this.obj.tr.appendChild(this.obj.td);this.obj.sep=document.createElement("DIV");this.obj.sep.className="btn_sep";this.obj.sep.onselectstart=function(a){a=a||event;return a.returnValue=!1};this.obj.td.appendChild(this.obj.sep);
+d._listOptions[a]=this.obj;return this};this._buttonButtonSelectObject=function(b,c,e){this.obj={};this.obj.tr=document.createElement("TR");this.obj.tr.en=c.enabled=="false"?!1:c.disabled=="true"?!1:!0;this.obj.tr.extAction=c.action||null;this.obj.tr._selected=c.selected!=null;this.obj.tr.className="tr_btn"+(this.obj.tr.en?this.obj.tr._selected&&d.renderSelect?" tr_btn_selected":"":" tr_btn_disabled");this.obj.tr.onselectstart=function(a){a=a||event;return a.returnValue=!1};this.obj.tr.idd=String(b);
+if(c.userdata)this.obj.userData=c.userdata;isNaN(e)?e=d.p_tbody.childNodes.length+1:e<1&&(e=1);e>d.p_tbody.childNodes.length?d.p_tbody.appendChild(this.obj.tr):d.p_tbody.insertBefore(this.obj.tr,d.p_tbody.childNodes[e-1]);this.obj.td_a=document.createElement("TD");this.obj.td_a.className="td_btn_img";this.obj.td_a.onselectstart=function(a){a=a||event;return a.returnValue=!1};this.obj.td_b=document.createElement("TD");this.obj.td_b.className="td_btn_txt";this.obj.td_b.onselectstart=function(a){a=a||
+event;return a.returnValue=!1};a.rtl?(this.obj.tr.appendChild(this.obj.td_b),this.obj.tr.appendChild(this.obj.td_a)):(this.obj.tr.appendChild(this.obj.td_a),this.obj.tr.appendChild(this.obj.td_b));if(c.img!=null)this.obj.td_a.innerHTML="<img class='btn_sel_img' src='"+a.imagePath+c.img+"' border='0'>";var f=c.text!=null?c.text:c.itemText||"";this.obj.td_b.innerHTML="<div class='btn_sel_text'>"+f+"</div>";this.obj.tr[a._isIPad?"ontouchstart":"onmouseover"]=function(){if(this.en&&(!this._selected||
+!d.renderSelect))this.className="tr_btn tr_btn_over"};this.obj.tr.onmouseout=function(){if(this.en)if(this._selected&&d.renderSelect){if(String(this.className).search("tr_btn_selected")==-1)this.className="tr_btn tr_btn_selected"}else this.className="tr_btn"};this.obj.tr[a._isIPad?"ontouchend":"onclick"]=function(b){b=b||event;b.cancelBubble=!0;if(this.en){d.setListOptionSelected(this.idd.replace(a.idPrefix,""));d.obj.renderAs="dhx_toolbar_btn def";d.obj.className=d.obj.renderAs;d.arw.className=String(d.obj.renderAs).replace("btn",
+"arw");d.polygon.style.display="none";if(d.polygon._ie6cover)d.polygon._ie6cover.style.display="none";a.anyUsed="none";var c=this.idd.replace(a.idPrefix,"");if(this.extAction)try{window[this.extAction](c)}catch(e){}a.callEvent("onClick",[c])}};d._listOptions[b]=this.obj;return this};this.polygon=document.createElement("DIV");this.polygon.dir="ltr";this.polygon.style.display="none";this.polygon.style.zIndex=101;this.polygon.className="dhx_toolbar_poly_"+a.skin+(a.rtl?" rtl":"");this.polygon.onselectstart=
+function(a){a=a||event;a.returnValue=!1};this.polygon.style.overflowY="auto";if(a._isIPad)this.polygon.ontouchstart=function(a){a=a||event;a.returnValue=!1;a.cancelBubble=!0;return!1};this.p_tbl=document.createElement("TABLE");this.p_tbl.className="buttons_cont";this.p_tbl.cellSpacing="0";this.p_tbl.cellPadding="0";this.p_tbl.border="0";this.polygon.appendChild(this.p_tbl);this.p_tbody=document.createElement("TBODY");this.p_tbl.appendChild(this.p_tbody);if(c.items)for(var e=0;e<c.items.length;e++){var f=
+"_"+(c.items[e].type||"")+"ButtonSelectObject";typeof this[f]=="function"&&new this[f](c.items[e].id||a._genStr(24),c.items[e])}document.body.appendChild(this.polygon);if(a._isIE6)this.polygon._ie6cover=document.createElement("IFRAME"),this.polygon._ie6cover.frameBorder=0,this.polygon._ie6cover.style.position="absolute",this.polygon._ie6cover.style.border="none",this.polygon._ie6cover.style.backgroundColor="#000000",this.polygon._ie6cover.style.filter="alpha(opacity=100)",this.polygon._ie6cover.style.display=
+"none",this.polygon._ie6cover.setAttribute("src","javascript:false;"),document.body.appendChild(this.polygon._ie6cover);this.setWidth=function(a){this.obj.style.width=a-this.arw.offsetWidth+"px";this.polygon.style.width=this.obj.offsetWidth+this.arw.offsetWidth-2+"px";this.p_tbl.style.width=this.polygon.style.width};this.enableItem=function(){a._enableItem(this)};this.disableItem=function(){a._disableItem(this)};this.isEnabled=function(){return this.state};this.showItem=function(){this.obj.style.display=
+"";this.arw.style.display=""};this.hideItem=function(){this.obj.style.display="none";this.arw.style.display="none"};this.isVisible=function(){return this.obj.style.display==""};this.setItemText=function(b){a._setItemText(this,b)};this.getItemText=function(){return a._getItemText(this)};this.setItemImage=function(b){a._setItemImage(this,b,!0)};this.clearItemImage=function(){a._clearItemImage(this,!0)};this.setItemImageDis=function(b){a._setItemImage(this,b,!1)};this.clearItemImageDis=function(){a._clearItemImage(this,
+!1)};this.setItemToolTip=function(a){this.obj.title=a;this.arw.title=a};this.getItemToolTip=function(){return this.obj.title};this.addListOption=function(a,b,c,d,e){if(c=="button"||c=="separator"){var f={id:a,type:c,text:d,img:e};new this["_"+c+"ButtonSelectObject"](a,f,b)}};this.removeListOption=function(a){if(this._isListButton(a,!0)){var b=this._listOptions[a];if(b.td_a!=null&&b.td_b!=null){b.td_a.onselectstart=null;for(b.td_b.onselectstart=null;b.td_a.childNodes.length>0;)b.td_a.removeChild(b.td_a.childNodes[0]);
+for(;b.td_b.childNodes.length>0;)b.td_b.removeChild(b.td_b.childNodes[0]);b.tr.onselectstart=null;b.tr.onmouseover=null;b.tr.onmouseout=null;for(b.tr.onclick=null;b.tr.childNodes.length>0;)b.tr.removeChild(b.tr.childNodes[0]);b.tr.parentNode.removeChild(b.tr);b.td_a=null;b.td_b=null}else{b.sep.onselectstart=null;b.td.onselectstart=null;for(b.tr.onselectstart=null;b.td.childNodes.length>0;)b.td.removeChild(b.td.childNodes[0]);for(;b.tr.childNodes.length>0;)b.tr.removeChild(b.tr.childNodes[0]);b.tr.parentNode.removeChild(b.tr);
+b.sep=null;b.td=null}b=b.tr=null;this._listOptions[a]=null;try{delete this._listOptions[a]}catch(c){}}};this.showListOption=function(a){if(this._isListButton(a,!0))this._listOptions[a].tr.style.display=""};this.hideListOption=function(a){if(this._isListButton(a,!0))this._listOptions[a].tr.style.display="none"};this.isListOptionVisible=function(a){return!this._isListButton(a,!0)?void 0:this._listOptions[a].tr.style.display!="none"};this.enableListOption=function(b){if(this._isListButton(b))this._listOptions[b].tr.en=
+!0,this._listOptions[b].tr.className="tr_btn"+(this._listOptions[b].tr._selected&&a.renderSelect?" tr_btn_selected":"")};this.disableListOption=function(a){if(this._isListButton(a))this._listOptions[a].tr.en=!1,this._listOptions[a].tr.className="tr_btn tr_btn_disabled"};this.isListOptionEnabled=function(a){return!this._isListButton(a)?void 0:this._listOptions[a].tr.en};this.setListOptionPosition=function(a,b){if(this._listOptions[a]&&!(this.getListOptionPosition(a)==b||isNaN(b))){b<1&&(b=1);var c=
+this._listOptions[a].tr;this.p_tbody.removeChild(c);b>this.p_tbody.childNodes.length?this.p_tbody.appendChild(c):this.p_tbody.insertBefore(c,this.p_tbody.childNodes[b-1]);c=null}};this.getListOptionPosition=function(a){var b=-1;if(!this._listOptions[a])return b;for(var c=0;c<this.p_tbody.childNodes.length;c++)this.p_tbody.childNodes[c]==this._listOptions[a].tr&&(b=c+1);return b};this.setListOptionImage=function(b,c){if(this._isListButton(b)){var d=this._listOptions[b].tr.childNodes[a.rtl?1:0];if(d.childNodes.length>
+0)d.childNodes[0].src=a.imagePath+c;else{var e=document.createElement("IMG");e.className="btn_sel_img";e.src=a.imagePath+c;d.appendChild(e)}d=null}};this.getListOptionImage=function(b){if(this._isListButton(b)){var c=this._listOptions[b].tr.childNodes[a.rtl?1:0],d=null;if(c.childNodes.length>0)d=c.childNodes[0].src;c=null;return d}};this.clearListOptionImage=function(b){if(this._isListButton(b)){for(var c=this._listOptions[b].tr.childNodes[a.rtl?1:0];c.childNodes.length>0;)c.removeChild(c.childNodes[0]);
+c=null}};this.setListOptionText=function(b,c){if(this._isListButton(b))this._listOptions[b].tr.childNodes[a.rtl?0:1].childNodes[0].innerHTML=c};this.getListOptionText=function(b){return!this._isListButton(b)?void 0:this._listOptions[b].tr.childNodes[a.rtl?0:1].childNodes[0].innerHTML};this.setListOptionToolTip=function(a,b){if(this._isListButton(a))this._listOptions[a].tr.title=b};this.getListOptionToolTip=function(a){return!this._isListButton(a)?void 0:this._listOptions[a].tr.title};this.forEachListOption=
+function(a){for(var b in this._listOptions)a(b)};this.getAllListOptions=function(){var a=[],b;for(b in this._listOptions)a[a.length]=b;return a};this.setListOptionSelected=function(a){for(var b in this._listOptions){var c=this._listOptions[b];if(c.td_a!=null&&c.td_b!=null&&c.tr.en)b==a?(c.tr._selected=!0,c.tr.className="tr_btn"+(this.renderSelect?" tr_btn_selected":"")):(c.tr._selected=!1,c.tr.className="tr_btn");c=null}};this.getListOptionSelected=function(){var a=null,b;for(b in this._listOptions)this._listOptions[b].tr._selected==
+!0&&(a=b);return a};this._isListButton=function(a,b){return this._listOptions[a]==null?!1:!b&&this._listOptions[a].tr.className=="tr_sep"?!1:!0};this.setMaxOpen=function(a){this._ph=null;typeof a=="number"?(this.maxOpen=a,this._maxOpenTest()):this.maxOpen=null};return this};
+dhtmlXToolbarObject.prototype._buttonInputObject=function(a,b,c){this.id=a.idPrefix+b;this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_btn def";this.obj.style.display=c.hidden!=null?"none":"";this.obj.idd=String(b);this.obj.w=c.width!=null?c.width:100;this.obj.title=c.title!=null?c.title:"";this.obj.innerHTML="<input class='inp' type='text' style='-moz-user-select:text;width:"+this.obj.w+"px;'"+(c.value!=null?"' value='"+c.value+"'":"")+">";var d=a,e=this;this.obj.childNodes[0].onkeydown=
+function(a){a=a||event;a.keyCode==13&&d.callEvent("onEnter",[e.obj.idd,this.value])};a.base.appendChild(this.obj);this.enableItem=function(){this.obj.childNodes[0].disabled=!1};this.disableItem=function(){this.obj.childNodes[0].disabled=!0};this.isEnabled=function(){return!this.obj.childNodes[0].disabled};this.showItem=function(){this.obj.style.display=""};this.hideItem=function(){this.obj.style.display="none"};this.isVisible=function(){return this.obj.style.display!="none"};this.setValue=function(a){this.obj.childNodes[0].value=
+a};this.getValue=function(){return this.obj.childNodes[0].value};this.setWidth=function(a){this.obj.w=a;this.obj.childNodes[0].style.width=this.obj.w+"px"};this.getWidth=function(){return this.obj.w};this.setItemToolTip=function(a){this.obj.title=a};this.getItemToolTip=function(){return this.obj.title};return this};
+dhtmlXToolbarObject.prototype._buttonTwoStateObject=function(a,b,c){this.id=a.idPrefix+b;this.state=c.enabled!=null?!1:!0;this.imgEn=c.img!=null?c.img:"";this.imgDis=c.imgdis!=null?c.imgdis:"";this.img=this.state?this.imgEn!=""?this.imgEn:"":this.imgDis!=""?this.imgDis:"";this.obj=document.createElement("DIV");this.obj.pressed=c.selected!=null;this.obj.extAction=c.action||null;this.obj.className="dhx_toolbar_btn "+(this.obj.pressed?this.state?"pres":"dis":this.state?"def":"dis");this.obj.style.display=
+c.hidden!=null?"none":"";this.obj.renderAs=this.obj.className;this.obj.idd=String(b);this.obj.title=c.title||"";if(this.obj.pressed)this.obj.renderAs="dhx_toolbar_btn over";this.obj.innerHTML=a._rtlParseBtn(this.img!=""?"<img src='"+a.imagePath+this.img+"'>":"",c.text!=null?"<div>"+c.text+"</div>":"");a.base.appendChild(this.obj);var d=this;this.obj.onselectstart=function(a){a=a||event;a.returnValue=!1};this.obj.onmouseover=function(){this._doOnMouseOver()};this.obj.onmouseout=function(){this._doOnMouseOut()};
+this.obj._doOnMouseOver=function(){if(d.state!=!1&&a.anyUsed=="none"&&!this.pressed)this.renderAs=this.className="dhx_toolbar_btn over"};this.obj._doOnMouseOut=function(){if(d.state!=!1&&a.anyUsed=="none"&&!this.pressed)this.renderAs=this.className="dhx_toolbar_btn def"};this.obj[a._isIPad?"ontouchstart":"onmousedown"]=function(){if((!a.checkEvent("onBeforeStateChange")||a.callEvent("onBeforeStateChange",[this.idd.replace(a.idPrefix,""),this.pressed]))&&d.state!=!1&&a.anyUsed=="none"){this.className=
+(this.pressed=!this.pressed)?"dhx_toolbar_btn pres":this.renderAs;var b=this.idd.replace(a.idPrefix,"");if(this.extAction)try{window[this.extAction](b,this.pressed)}catch(c){}a.callEvent("onStateChange",[b,this.pressed]);this._doOnMouseOut();return!1}};this.setItemState=function(b,c){if(this.obj.pressed!=b&&(b==!0?(this.obj.pressed=!0,this.obj.className="dhx_toolbar_btn pres",this.obj.renderAs="dhx_toolbar_btn over"):(this.obj.pressed=!1,this.obj.className="dhx_toolbar_btn def",this.obj.renderAs=
+this.obj.className),c==!0)){var d=this.obj.idd.replace(a.idPrefix,"");if(this.obj.extAction)try{window[this.obj.extAction](d,this.obj.pressed)}catch(h){}a.callEvent("onStateChange",[d,this.obj.pressed])}};this.getItemState=function(){return this.obj.pressed};this.enableItem=function(){a._enableItem(this)};this.disableItem=function(){a._disableItem(this)};this.isEnabled=function(){return this.state};this.showItem=function(){this.obj.style.display=""};this.hideItem=function(){this.obj.style.display=
+"none"};this.isVisible=function(){return this.obj.style.display==""};this.setItemText=function(b){a._setItemText(this,b)};this.getItemText=function(){return a._getItemText(this)};this.setItemImage=function(b){a._setItemImage(this,b,!0)};this.clearItemImage=function(){a._clearItemImage(this,!0)};this.setItemImageDis=function(b){a._setItemImage(this,b,!1)};this.clearItemImageDis=function(){a._clearItemImage(this,!1)};this.setItemToolTip=function(a){this.obj.title=a};this.getItemToolTip=function(){return this.obj.title};
+return this};
+dhtmlXToolbarObject.prototype._sliderObject=function(a,b,c){this.id=a.idPrefix+b;this.state=c.enabled!=null?c.enabled=="true"?!0:!1:!0;this.obj=document.createElement("DIV");this.obj.className="dhx_toolbar_btn "+(this.state?"def":"dis");this.obj.style.display=c.hidden!=null?"none":"";this.obj.onselectstart=function(a){a=a||event;a.returnValue=!1};this.obj.idd=String(b);this.obj.len=c.length!=null?Number(c.length):50;this.obj.innerHTML="<div>"+(c.textMin||"")+"</div><div class='sl_bg_l'></div><div class='sl_bg_m' style='width:"+this.obj.len+
+"px;'></div><div class='sl_bg_r'></div><div>"+(c.textMax||"")+"</div>";a.base.appendChild(this.obj);var d=this;this.pen=document.createElement("DIV");this.pen.className="sl_pen";this.obj.appendChild(this.pen);var e=this.pen;this.label=document.createElement("DIV");this.label.dir="ltr";this.label.className="dhx_toolbar_slider_label_"+a.skin+(a.rtl?"_rtl":"");this.label.style.display="none";this.label.tip=c.toolTip||"%v";document.body.appendChild(this.label);var f=this.label;this.pen.valueMin=c.valueMin!=
+null?Number(c.valueMin):0;this.pen.valueMax=c.valueMax!=null?Number(c.valueMax):100;if(this.pen.valueMin>this.pen.valueMax)this.pen.valueMin=this.pen.valueMax;this.pen.valueNow=c.valueNow!=null?Number(c.valueNow):this.pen.valueMax;if(this.pen.valueNow>this.pen.valueMax)this.pen.valueNow=this.pen.valueMax;if(this.pen.valueNow<this.pen.valueMin)this.pen.valueNow=this.pen.valueMin;this.pen._detectLimits=function(){this.minX=d.obj.childNodes[1].offsetLeft-4;this.maxX=d.obj.childNodes[3].offsetLeft-this.offsetWidth+
+1};this.pen._detectLimits();this.pen._definePos=function(){this.nowX=Math.round((this.valueNow-this.valueMin)*(this.maxX-this.minX)/(this.valueMax-this.valueMin)+this.minX);this.style.left=this.nowX+"px";this.newNowX=this.nowX};this.pen._definePos();this.pen.initXY=0;this.pen.allowMove=!1;this.pen[a._isIPad?"ontouchstart":"onmousedown"]=function(b){if(d.state!=!1&&(b=b||event,this.initXY=a._isIPad?b.touches[0].clientX:b.clientX,this.newValueNow=this.valueNow,this.allowMove=!0,this.className="sl_pen over",
+f.tip!=""))f.style.visibility="hidden",f.style.display="",f.innerHTML=f.tip.replace("%v",this.valueNow),f.style.left=Math.round(getAbsoluteLeft(this)+this.offsetWidth/2-f.offsetWidth/2)+"px",f.style.top=getAbsoluteTop(this)-f.offsetHeight-3+"px",f.style.visibility=""};this.pen._doOnMouseMoveStart=function(b){b=b||event;if(e.allowMove){var c=a._isIPad?b.touches[0].clientX:b.clientX,d=c-e.initXY;if(!(c<getAbsoluteLeft(e)+Math.round(e.offsetWidth/2)&&e.nowX==e.minX)&&!(c>getAbsoluteLeft(e)+Math.round(e.offsetWidth/
+2)&&e.nowX==e.maxX)){e.newNowX=e.nowX+d;if(e.newNowX<e.minX)e.newNowX=e.minX;if(e.newNowX>e.maxX)e.newNowX=e.maxX;e.nowX=e.newNowX;e.style.left=e.nowX+"px";e.initXY=c;e.newValueNow=Math.round((e.valueMax-e.valueMin)*(e.newNowX-e.minX)/(e.maxX-e.minX)+e.valueMin);if(f.tip!="")f.innerHTML=f.tip.replace(/%v/gi,e.newValueNow),f.style.left=Math.round(getAbsoluteLeft(e)+e.offsetWidth/2-f.offsetWidth/2)+"px",f.style.top=getAbsoluteTop(e)-f.offsetHeight-3+"px";b.cancelBubble=!0;return b.returnValue=!1}}};
+this.pen._doOnMouseMoveEnd=function(){if(e.allowMove){e.className="sl_pen";e.allowMove=!1;e.nowX=e.newNowX;e.valueNow=e.newValueNow;if(f.tip!="")f.style.display="none";a.callEvent("onValueChange",[d.obj.idd.replace(a.idPrefix,""),e.valueNow])}};a._isIPad?(document.addEventListener("touchmove",e._doOnMouseMoveStart,!1),document.addEventListener("touchend",e._doOnMouseMoveEnd,!1)):_isIE?(document.body.attachEvent("onmousemove",e._doOnMouseMoveStart),document.body.attachEvent("onmouseup",e._doOnMouseMoveEnd)):
+(window.addEventListener("mousemove",e._doOnMouseMoveStart,!1),window.addEventListener("mouseup",e._doOnMouseMoveEnd,!1));this.enableItem=function(){if(!this.state)this.state=!0,this.obj.className="dhx_toolbar_btn def"};this.disableItem=function(){if(this.state)this.state=!1,this.obj.className="dhx_toolbar_btn dis"};this.isEnabled=function(){return this.state};this.showItem=function(){this.obj.style.display=""};this.hideItem=function(){this.obj.style.display="none"};this.isVisible=function(){return this.obj.style.display==
+""};this.setValue=function(b,c){b=Number(b);if(b<this.pen.valueMin)b=this.pen.valueMin;if(b>this.pen.valueMax)b=this.pen.valueMax;this.pen.valueNow=b;this.pen._definePos();c==!0&&a.callEvent("onValueChange",[this.obj.idd.replace(a.idPrefix,""),this.pen.valueNow])};this.getValue=function(){return this.pen.valueNow};this.setMinValue=function(a,b){a=Number(a);if(!(a>this.pen.valueMax)){this.obj.childNodes[0].innerHTML=b;this.obj.childNodes[0].style.display=b.length>0?"":"none";this.pen.valueMin=a;if(this.pen.valueNow<
+this.pen.valueMin)this.pen.valueNow=this.pen.valueMin;this.pen._detectLimits();this.pen._definePos()}};this.setMaxValue=function(a,b){a=Number(a);if(!(a<this.pen.valueMin)){this.obj.childNodes[4].innerHTML=b;this.obj.childNodes[4].style.display=b.length>0?"":"none";this.pen.valueMax=a;if(this.pen.valueNow>this.pen.valueMax)this.pen.valueNow=this.pen.valueMax;this.pen._detectLimits();this.pen._definePos()}};this.getMinValue=function(){var a=this.obj.childNodes[0].innerHTML,b=this.pen.valueMin;return[b,
+a]};this.getMaxValue=function(){var a=this.obj.childNodes[4].innerHTML,b=this.pen.valueMax;return[b,a]};this.setItemToolTipTemplate=function(a){this.label.tip=a};this.getItemToolTipTemplate=function(){return this.label.tip};return this};
+dhtmlXToolbarObject.prototype.unload=function(){this._isIPad?document.removeEventListener("touchstart",this._doOnClick,!1):_isIE?document.body.detachEvent("onclick",this._doOnClick):window.removeEventListener("click",this._doOnClick,!1);this._doOnClick=null;this.clearAll();this.objPull=null;if(this._xmlLoader)this._xmlLoader.destructor(),this._xmlLoader=null;for(;this.base.childNodes.length>0;)this.base.removeChild(this.base.childNodes[0]);this.cont.removeChild(this.base);for(this.base=null;this.cont.childNodes.length>
+0;)this.cont.removeChild(this.cont.childNodes[0]);this.cont.className="";this.cont=null;this.detachAllEvents();this.items=this.setMaxOpen=this.getUserData=this.setUserData=this.unload=this.getListOptionSelected=this.setListOptionSelected=this.getAllListOptions=this.forEachListOption=this.clearListOptionImage=this.getListOptionImage=this.setListOptionImage=this.getListOptionToolTip=this.setListOptionToolTip=this.getListOptionText=this.setListOptionText=this.getListOptionPosition=this.setListOptionPosition=
+this.isListOptionEnabled=this.disableListOption=this.enableListOption=this.isListOptionVisible=this.hideListOption=this.showListOption=this.removeListOption=this.addListOption=this.removeItem=this.setPosition=this.getPosition=this.getWidth=this.setWidth=this.getMaxValue=this.setMaxValue=this.getMinValue=this.setMinValue=this.getValue=this.setValue=this.getItemToolTipTemplate=this.setItemToolTipTemplate=this.getItemState=this.setItemState=this.clearItemImageDis=this.clearItemImage=this.setItemImageDis=
+this.setItemImage=this.getItemToolTip=this.setItemToolTip=this.getItemText=this.setItemText=this.isEnabled=this.disableItem=this.enableItem=this.isVisible=this.hideItem=this.showItem=this.forEachItem=this.addInput=this.addSlider=this.addSeparator=this.addButtonTwoState=this.addButtonSelect=this.addText=this.addButton=this.getParentId=this.inArray=this.getTypeExt=this.getType=this.removeSpacer=this.addSpacer=this.clearAll=this.detachAllEvents=this.detachEvent=this.eventCatcher=this.checkEvent=this.callEvent=
+this.attachEvent=this.loadXMLString=this.loadXML=this.setIconPath=this.setIconsPath=this.setSkin=this.setAlign=this._removeItem=this._autoDetectVisibleArea=this._sliderObject=this._buttonTwoStateObject=this._buttonInputObject=this._buttonSelectObject=this._buttonObject=this._textObject=this._separatorObject=this._getIdByPosition=this._setPosition=this._getPosition=this._addItem=this._genStr=this._addItemToStorage=this._doOnLoad=this._xmlParser=this._disableItem=this._enableItem=this._getItemText=
+this._setItemText=this._clearItemImage=this._setItemImage=this._addImgObj=this._getObj=this._sbw=this.setRTL=this._rtlParseBtn=this._rtl=this.skin=this.selectPolygonOffsetTop=this.selectPolygonOffsetLeft=this.rootTypes=this.imagePath=this.idPrefix=this.anyUsed=this.align=this._isWebToolbar=this._isIE6=this.tY2=this.tY1=this.tX2=this.tX1=null};
+dhtmlXToolbarObject.prototype._autoDetectVisibleArea=function(){this.tX1=document.body.scrollLeft;this.tX2=this.tX1+(window.innerWidth||document.body.clientWidth);this.tY1=Math.max((_isIE?document.documentElement:document.getElementsByTagName("html")[0]).scrollTop,document.body.scrollTop);this.tY2=this.tY1+(_isIE?Math.max(document.documentElement.clientHeight||0,document.documentElement.offsetHeight||0,document.body.clientHeight||0):window.innerHeight)};
+dhtmlXToolbarObject.prototype.setUserData=function(a,b,c){if(this.objPull[this.idPrefix+a]!=null){var d=this.objPull[this.idPrefix+a];if(d.userData==null)d.userData={};d.userData[b]=c}};dhtmlXToolbarObject.prototype.getUserData=function(a,b){return this.objPull[this.idPrefix+a]==null?null:this.objPull[this.idPrefix+a].userData==null?null:this.objPull[this.idPrefix+a].userData[b]==null?null:this.objPull[this.idPrefix+a].userData[b]};
+dhtmlXToolbarObject.prototype._isListOptionExists=function(a,b){if(this.objPull[this.idPrefix+a]==null)return!1;var c=this.objPull[this.idPrefix+a];return c.type!="buttonSelect"?!1:c._listOptions[b]==null?!1:!0};dhtmlXToolbarObject.prototype.setListOptionUserData=function(a,b,c,d){if(this._isListOptionExists(a,b)){var e=this.objPull[this.idPrefix+a]._listOptions[b];if(e.userData==null)e.userData={};e.userData[c]=d}};
+dhtmlXToolbarObject.prototype.getListOptionUserData=function(a,b,c){if(!this._isListOptionExists(a,b))return null;var d=this.objPull[this.idPrefix+a]._listOptions[b];return!d.userData?null:d.userData[c]?d.userData[c]:null};
+(function(){dhtmlx.extend_api("dhtmlXToolbarObject",{_init:function(a){return[a.parent,a.skin]},icon_path:"setIconsPath",xml:"loadXML",items:"items",align:"setAlign",rtl:"setRTL",skin:"setSkin"},{items:function(a){for(var b=0;b<a.length;b++){var c=a[b];c.type=="button"&&this.addButton(c.id,null,c.text,c.img,c.img_disabled);c.type=="separator"&&this.addSeparator(c.id,null);c.type=="text"&&this.addText(c.id,null,c.text);c.type=="buttonSelect"&&this.addButtonSelect(c.id,null,c.text,c.options,c.img,c.img_disabled);
+c.type=="buttonTwoState"&&this.addButtonTwoState(c.id,null,c.text,c.img,c.img_disabled);c.type=="buttonInput"&&this.addInput(c.id,null,c.text);c.type=="slider"&&this.addSlider(c.id,null,c.length,c.value_min,c.value_max,c.value_now,c.text_min,c.text_max,c.tip_template);c.width&&this.setWidth(c.id,c.width);c.disabled&&this.disableItem(c.id);c.tooltip&&this.setItemToolTip(c.id,c.tooltip);c.pressed===!0&&this.setItemState(c.id,!0)}}})})();function xmlPointer(a){this.d=a}
+xmlPointer.prototype={text:function(){if(!_isFF)return this.d.xml;var a=new XMLSerializer;return a.serializeToString(this.d)},get:function(a){return this.d.getAttribute(a)},exists:function(){return!!this.d},content:function(){return this.d.firstChild?this.d.firstChild.data:""},each:function(a,b,c,d){var e=this.d.childNodes,f=new xmlPointer;if(e.length)for(d=d||0;d<e.length;d++)if(e[d].tagName==a&&(f.d=e[d],b.apply(c,[f,d])==-1))break},get_all:function(){for(var a={},b=this.d.attributes,c=0;c<b.length;c++)a[b[c].name]=
+b[c].value;return a},sub:function(a){var b=this.d.childNodes,c=new xmlPointer;if(b.length)for(var d=0;d<b.length;d++)if(b[d].tagName==a)return c.d=b[d],c},up:function(){return new xmlPointer(this.d.parentNode)},set:function(a,b){this.d.setAttribute(a,b)},clone:function(){return new xmlPointer(this.d)},sub_exists:function(a){var b=this.d.childNodes;if(b.length)for(var c=0;c<b.length;c++)if(b[c].tagName==a)return!0;return!1},through:function(a,b,c,d,e){var f=this.d.childNodes;if(f.length)for(var g=
+0;g<f.length;g++){if(f[g].tagName==a&&f[g].getAttribute(b)!=null&&f[g].getAttribute(b)!=""&&(!c||f[g].getAttribute(b)==c)){var h=new xmlPointer(f[g]);d.apply(e,[h,g])}var i=this.d;this.d=f[g];this.through(a,b,c,d,e);this.d=i}}};
+function dhtmlXTreeObject(a,b,c,d){if(_isIE)try{document.execCommand("BackgroundImageCache",!1,!0)}catch(e){}this.parentObject=typeof a!="object"?document.getElementById(a):a;this.parentObject.style.overflow="hidden";this._itim_dg=!0;this.dlmtr=",";this.dropLower=!1;this.enableIEImageFix();this.xmlstate=0;this.mytype="tree";this.smcheck=!0;this.width=b;this.height=c;this.rootId=d;this.childCalc=null;this.def_line_img_y=this.def_line_img_x=this.def_img_y=this.def_img_x="18px";this._dragged=[];this._selected=
+[];this.style_pointer="pointer";this._aimgs=!0;this.htmlcA=" [";this.htmlcB="]";this.lWin=window;this.mlitems=this.cMenu=0;this.iconURL="";this.dadmode=0;this.slowParse=!1;this.autoScroll=!0;this.hfMode=0;this.nodeCut=[];this.XMLloadingWarning=this.XMLsource=0;this._idpull={};this._pullSize=0;this.treeLinesOn=!0;this.tscheck=!1;this.timgen=!0;this.dpcpy=!1;this._ld_id=null;this._oie_onXLE=[];this.imPath=window.dhx_globalImgPath||"";this.checkArray="iconUncheckAll.gif,iconCheckAll.gif,iconCheckGray.gif,iconUncheckDis.gif,iconCheckDis.gif,iconCheckDis.gif".split(",");
+this.radioArray="radio_off.gif,radio_on.gif,radio_on.gif,radio_off.gif,radio_on.gif,radio_on.gif".split(",");this.lineArray="line2.gif,line3.gif,line4.gif,blank.gif,blank.gif,line1.gif".split(",");this.minusArray=["minus2.gif","minus3.gif","minus4.gif","minus.gif","minus5.gif"];this.plusArray=["plus2.gif","plus3.gif","plus4.gif","plus.gif","plus5.gif"];this.imageArray=["leaf.gif","folderOpen.gif","folderClosed.gif"];this.cutImg=[0,0,0];this.cutImage="but_cut.gif";dhtmlxEventable(this);this.dragger=
+new dhtmlDragAndDropObject;this.htmlNode=new dhtmlXTreeItemObject(this.rootId,"",0,this);this.htmlNode.htmlNode.childNodes[0].childNodes[0].style.display="none";this.htmlNode.htmlNode.childNodes[0].childNodes[0].childNodes[0].className="hiddenRow";this.allTree=this._createSelf();this.allTree.appendChild(this.htmlNode.htmlNode);if(_isFF)this.allTree.childNodes[0].width="100%",this.allTree.childNodes[0].style.overflow="hidden";var f=this;this.allTree.onselectstart=new Function("return false;");if(_isMacOS)this.allTree.oncontextmenu=
+function(a){return f._doContClick(a||window.event,!0)};this.allTree.onmousedown=function(a){return f._doContClick(a||window.event)};this.XMLLoader=new dtmlXMLLoaderObject(this._parseXMLTree,this,!0,this.no_cashe);_isIE&&this.preventIECashing(!0);window.addEventListener&&window.addEventListener("unload",function(){try{f.destructor()}catch(a){}},!1);window.attachEvent&&window.attachEvent("onunload",function(){try{f.destructor()}catch(a){}});this.setImagesPath=this.setImagePath;this.setIconsPath=this.setIconPath;
+dhtmlx.image_path&&this.setImagePath(dhtmlx.image_path);dhtmlx.skin&&this.setSkin(dhtmlx.skin);return this}dhtmlXTreeObject.prototype.setDataMode=function(a){this._datamode=a};
+dhtmlXTreeObject.prototype._doContClick=function(a,b){if(!b&&a.button!=2)return this._acMenu&&(this._acMenu.hideContextMenu?this._acMenu.hideContextMenu():this.cMenu._contextEnd()),!0;for(var c=_isIE?a.srcElement:a.target;c&&c.tagName!="BODY";){if(c.parentObject)break;c=c.parentNode}if(!c||!c.parentObject)return!0;var d=c.parentObject;if(!this.callEvent("onRightClick",[d.id,a]))(a.srcElement||a.target).oncontextmenu=function(a){(a||event).cancelBubble=!0;return!1};if(this._acMenu=d.cMenu||this.cMenu){if(!this.callEvent("onBeforeContextMenu",
+[d.id]))return!0;(a.srcElement||a.target).oncontextmenu=function(a){(a||event).cancelBubble=!0;return!1};if(this._acMenu.showContextMenu){var e=window.document.documentElement,f=window.document.body,g=[e.scrollLeft||f.scrollLeft,e.scrollTop||f.scrollTop];if(_isIE)var h=a.clientX+g[0],i=a.clientY+g[1];else h=a.pageX,i=a.pageY;this._acMenu.showContextMenu(h-1,i-1);this.contextID=d.id;a.cancelBubble=!0;this._acMenu._skip_hide=!0}else c.contextMenuId=d.id,c.contextMenu=this._acMenu,c.a=this._acMenu._contextStart,
+c.a(c,a),c.a=null;return!1}return!0};
+dhtmlXTreeObject.prototype.enableIEImageFix=function(a){a?(this._getImg=function(){var a=document.createElement("DIV");a.innerHTML="&nbsp;";a.className="dhx_bg_img_fix";return a},this._setSrc=function(a,c){a.style.backgroundImage="url("+c+")"},this._getSrc=function(a){var c=a.style.backgroundImage;return c.substr(4,c.length-5).replace(/(^")|("$)/g,"")}):(this._getImg=function(a){return document.createElement(a==this.rootId?"div":"img")},this._setSrc=function(a,c){a.src=c},this._getSrc=function(a){return a.src})};
+dhtmlXTreeObject.prototype.destructor=function(){for(var a in this._idpull){var b=this._idpull[a];if(b)b.parentObject=null,b.treeNod=null,b.childNodes=null,b.span=null,b.tr.nodem=null,b.tr=null,b.htmlNode.objBelong=null,b.htmlNode=null,this._idpull[a]=null}this.parentObject.innerHTML="";this.XMLLoader&&this.XMLLoader.destructor();this.allTree.onselectstart=null;this.allTree.oncontextmenu=null;this.allTree.onmousedown=null;for(a in this)this[a]=null};function cObject(){return this}
+cObject.prototype={};cObject.prototype.clone=function(){function a(){}a.prototype=this;return new a};
+function dhtmlXTreeItemObject(a,b,c,d,e,f){this.scolor=this.acolor=this.htmlNode="";this.span=this.dragMove=this.dragSpan=this.tempDOMU=this.tempDOMM=this.childsCount=this.tr=0;this.closeble=1;this.childNodes=[];this.userData=new cObject;this.checkstate=0;this.treeNod=d;this.label=b;this.parentObject=c;this.actionHandler=e;this.images=[d.imageArray[0],d.imageArray[1],d.imageArray[2]];this.id=d._globalIdStorageAdd(a,this);this.htmlNode=this.treeNod.checkBoxOff?this.treeNod._createItem(1,this,f):this.treeNod._createItem(0,
+this,f);this.htmlNode.objBelong=this;return this}dhtmlXTreeObject.prototype._globalIdStorageAdd=function(a,b){if(this._globalIdStorageFind(a,1,1))return a=a+"_"+(new Date).valueOf(),this._globalIdStorageAdd(a,b);this._idpull[a]=b;this._pullSize++;return a};dhtmlXTreeObject.prototype._globalIdStorageSub=function(a){this._idpull[a]&&(this._unselectItem(this._idpull[a]),this._idpull[a]=null,this._pullSize--);this._locker&&this._locker[a]&&(this._locker[a]=!1)};
+dhtmlXTreeObject.prototype._globalIdStorageFind=function(a){var b=this._idpull[a];return b?b:null};dhtmlXTreeObject.prototype._escape=function(a){switch(this.utfesc){case "none":return a;case "utf8":return encodeURIComponent(a);default:return escape(a)}};
+dhtmlXTreeObject.prototype._drawNewTr=function(a){var b=document.createElement("tr"),c=document.createElement("td"),d=document.createElement("td");c.appendChild(document.createTextNode(" "));d.colSpan=3;d.appendChild(a);b.appendChild(c);b.appendChild(d);return b};dhtmlXTreeObject.prototype.loadXMLString=function(a,b){var c=this;this.parsCount||this.callEvent("onXLS",[c,null]);this.xmlstate=1;if(b)this.XMLLoader.waitCall=b;this.XMLLoader.loadXMLString(a)};
+dhtmlXTreeObject.prototype.loadXML=function(a,b){if(this._datamode&&this._datamode!="xml")return this["load"+this._datamode.toUpperCase()](a,b);var c=this;this.parsCount||this.callEvent("onXLS",[c,this._ld_id]);this._ld_id=null;this.xmlstate=1;this.XMLLoader=new dtmlXMLLoaderObject(this._parseXMLTree,this,!0,this.no_cashe);if(b)this.XMLLoader.waitCall=b;this.XMLLoader.loadXML(a)};
+dhtmlXTreeObject.prototype._attachChildNode=function(a,b,c,d,e,f,g,h,i,j,k){if(j&&j.parentObject)a=j.parentObject;if(a.XMLload==0&&this.XMLsource&&!this.XMLloadingWarning)a.XMLload=1,this._loadDynXML(a.id);var m=a.childsCount,l=a.childNodes;if(k&&k.tr.previousSibling)k.tr.previousSibling.previousSibling?j=k.tr.previousSibling.nodem:h=h.replace("TOP","")+",TOP";if(j){var n,o;for(n=0;n<m;n++)if(l[n]==j){for(o=m;o!=n;o--)l[1+o]=l[o];break}n++;m=n}if(h)for(var p=h.split(","),r=0;r<p.length;r++)switch(p[r]){case "TOP":if(a.childsCount>
+0)j={},j.tr=a.childNodes[0].tr.previousSibling;a._has_top=!0;for(n=m;n>0;n--)l[n]=l[n-1];m=0}var q;if(!(q=this._idpull[b])||q.span!=-1)q=l[m]=new dhtmlXTreeItemObject(b,c,a,this,d,1),b=l[m].id,a.childsCount++;if(!q.htmlNode)q.label=c,q.htmlNode=this._createItem(this.checkBoxOff?1:0,q),q.htmlNode.objBelong=q;e&&(q.images[0]=e);f&&(q.images[1]=f);g&&(q.images[2]=g);var s=this._drawNewTr(q.htmlNode);if(this.XMLloadingWarning||this._hAdI)q.htmlNode.parentNode.parentNode.style.display="none";j&&j.tr.nextSibling?
+a.htmlNode.childNodes[0].insertBefore(s,j.tr.nextSibling):this.parsingOn==a.id?this.parsedArray[this.parsedArray.length]=s:a.htmlNode.childNodes[0].appendChild(s);j&&!j.span&&(j=null);if(this.XMLsource)q.XMLload=i&&i!=0?0:1;q.tr=s;s.nodem=q;if(a.itemId==0)s.childNodes[0].className="hiddenRow";(a._r_logic||this._frbtr)&&this._setSrc(q.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0],this.imPath+this.radioArray[0]);if(h){p=h.split(",");for(r=0;r<p.length;r++)switch(p[r]){case "SELECT":this.selectItem(b,
+!1);break;case "CALL":this.selectItem(b,!0);break;case "CHILD":q.XMLload=0;break;case "CHECKED":this.XMLloadingWarning?this.setCheckList+=this.dlmtr+b:this.setCheck(b,1);break;case "HCHECKED":this._setCheck(q,"unsure");break;case "OPEN":q.openMe=1}}if(!this.XMLloadingWarning&&(this._getOpenState(a)<0&&!this._hAdI&&this.openItem(a.id),j&&(this._correctPlus(j),this._correctLine(j)),this._correctPlus(a),this._correctLine(a),this._correctPlus(q),a.childsCount>=2&&(this._correctPlus(l[a.childsCount-2]),
+this._correctLine(l[a.childsCount-2])),a.childsCount!=2&&this._correctPlus(l[0]),this.tscheck&&this._correctCheckStates(a),this._onradh))if(this.xmlstate==1){var y=this.onXLE;this.onXLE=function(a){this._onradh(b);y&&y(a)}}else this._onradh(b);return q};dhtmlXTreeObject.prototype.insertNewItem=function(a,b,c,d,e,f,g,h,i){var j=this._globalIdStorageFind(a);if(!j)return-1;var k=this._attachChildNode(j,b,c,d,e,f,g,h,i);return k};
+dhtmlXTreeObject.prototype.insertNewChild=function(a,b,c,d,e,f,g,h,i){return this.insertNewItem(a,b,c,d,e,f,g,h,i)};dhtmlXTreeObject.prototype._parseXMLTree=function(a,b,c,d,e){var f=new xmlPointer(e.getXMLTopNode("tree"));a._parse(f);a._p=f};
+dhtmlXTreeObject.prototype._parseItem=function(a,b,c,d){var e;if(this._srnd&&(!this._idpull[e=a.get("id")]||!this._idpull[e].span))this._addItemSRND(b.id,e,a);else{var f=a.get_all();if(typeof this.waitUpdateXML=="object"&&!this.waitUpdateXML[f.id])this._parse(a,f.id,1);else{var g=[];f.select&&g.push("SELECT");f.top&&g.push("TOP");if(f.call)this.nodeAskingCall=f.id;f.checked==-1?g.push("HCHECKED"):f.checked&&g.push("CHECKED");f.open&&g.push("OPEN");if(this.waitUpdateXML)if(this._globalIdStorageFind(f.id))var h=
+this.updateItem(f.id,f.text,f.im0,f.im1,f.im2,f.checked,f.child);else this.npl==0?g.push("TOP"):c=b.childNodes[this.npl],h=this._attachChildNode(b,f.id,f.text,0,f.im0,f.im1,f.im2,g.join(","),f.child,0,c),c=null;else h=this._attachChildNode(b,f.id,f.text,0,f.im0,f.im1,f.im2,g.join(","),f.child,d||0,c);if(f.tooltip)h.span.parentNode.parentNode.title=f.tooltip;f.style&&(h.span.style.cssText?h.span.style.cssText+=";"+f.style:h.span.setAttribute("style",h.span.getAttribute("style")+"; "+f.style));if(f.radio)h._r_logic=
+!0;if(f.nocheckbox){var i=h.span.parentNode.previousSibling.previousSibling;i.childNodes[0].style.display="none";if(window._KHTMLrv)i.style.display="none";h.nocheckbox=!0}f.disabled&&(f.checked!=null&&this._setCheck(h,f.checked),this.disableCheckbox(h,1));h._acc=f.child||0;this.parserExtension&&this.parserExtension._parseExtension.call(this,a,f,b?b.id:0);this.setItemColor(h,f.aCol,f.sCol);f.locked=="1"&&this.lockItem(h.id,!0,!0);(f.imwidth||f.imheight)&&this.setIconSize(f.imwidth,f.imheight,h);(f.closeable==
+"0"||f.closeable=="1")&&this.setItemCloseable(h,f.closeable);var j="";f.topoffset&&this.setItemTopOffset(h,f.topoffset);if(!this.slowParse||typeof this.waitUpdateXML=="object")a.sub_exists("item")&&(j=this._parse(a,f.id,1));if(j!="")this.nodeAskingCall=j;a.each("userdata",function(b){this.setUserData(a.get("id"),b.get("name"),b.content())},this)}}};
+dhtmlXTreeObject.prototype._parse=function(a,b,c,d){if(this._srnd&&!this.parentObject.offsetHeight){var e=this;return window.setTimeout(function(){e._parse(a,b,c,d)},100)}if(a.exists()){this.skipLock=!0;if(!b){b=a.get("id");if(a.get("radio"))this.htmlNode._r_logic=!0;this.parsingOn=b;this.parsedArray=[];this.nodeAskingCall=this.setCheckList=""}var f=this._globalIdStorageFind(b);if(!f)return dhtmlxError.throwError("DataStructure","XML refers to not existing parent");this.parsCount=this.parsCount?this.parsCount+
+1:1;this.XMLloadingWarning=1;var g=f.childsCount&&!d&&!this._edsbps&&!f._has_top?0:0;this.npl=0;a.each("item",function(a){f.XMLload=1;this._parseItem(a,f,0,g);this.npl++},this,d);if(!c){a.each("userdata",function(b){this.setUserData(a.get("id"),b.get("name"),b.content())},this);f.XMLload=1;if(this.waitUpdateXML){this.waitUpdateXML=!1;for(var h=f.childsCount-1;h>=0;h--)f.childNodes[h]._dmark&&this.deleteItem(f.childNodes[h].id)}for(var i=this._globalIdStorageFind(this.parsingOn),h=0;h<this.parsedArray.length;h++)f.htmlNode.childNodes[0].appendChild(this.parsedArray[h]);
+this.parsedArray=[];this.lastLoadedXMLId=b;this.XMLloadingWarning=0;for(var j=this.setCheckList.split(this.dlmtr),k=0;k<j.length;k++)j[k]&&this.setCheck(j[k],1);this.XMLsource&&this.tscheck&&this.smcheck&&f.id!=this.rootId&&(f.checkstate===0?this._setSubChecked(0,f):f.checkstate===1&&this._setSubChecked(1,f));this._redrawFrom(this,null,d);a.get("order")&&a.get("order")!="none"&&this._reorderBranch(f,a.get("order"),!0);this.nodeAskingCall!=""&&this.callEvent("onClick",[this.nodeAskingCall,this.getSelectedItemId()]);
+this._branchUpdate&&this._branchUpdateNext(a)}if(this.parsCount==1){this.parsingOn=null;if(!this._edsbps||!this._edsbpsA.length){var m=this;window.setTimeout(function(){m.callEvent("onXLE",[m,b])},1);this.xmlstate=0}this.skipLock=!1}this.parsCount--;if(!c&&this.onXLE)this.onXLE(this,b);return this.nodeAskingCall}};
+dhtmlXTreeObject.prototype._branchUpdateNext=function(a){a.each("item",function(a){var c=a.get("id");if(!this._idpull[c]||this._idpull[c].XMLload)this._branchUpdate++,this.smartRefreshItem(a.get("id"),a)},this);this._branchUpdate--};dhtmlXTreeObject.prototype.checkUserData=function(a,b){if(a.nodeType==1&&a.tagName=="userdata"){var c=a.getAttribute("name");c&&a.childNodes[0]&&this.setUserData(b,c,a.childNodes[0].data)}};
+dhtmlXTreeObject.prototype._redrawFrom=function(a,b,c,d){if(b)e=b;else{var e=a._globalIdStorageFind(a.lastLoadedXMLId);a.lastLoadedXMLId=-1;if(!e)return 0}for(var f=0,g=c?c-1:0;g<e.childsCount;g++){if(!this._branchUpdate||this._getOpenState(e)==1)if(!b||d==1)e.childNodes[g].htmlNode.parentNode.parentNode.style.display="";if(e.childNodes[g].openMe==1)this._openItem(e.childNodes[g]),e.childNodes[g].openMe=0;a._redrawFrom(a,e.childNodes[g])}if(!e.unParsed&&(e.XMLload||!this.XMLsource))e._acc=f;a._correctLine(e);
+a._correctPlus(e)};dhtmlXTreeObject.prototype._createSelf=function(){var a=document.createElement("div");a.className="containerTableStyle";a.style.width=this.width;a.style.height=this.height;this.parentObject.appendChild(a);return a};
+dhtmlXTreeObject.prototype._xcloseAll=function(a){if(!a.unParsed){if(this.rootId!=a.id){if(!a.htmlNode)return;for(var b=a.htmlNode.childNodes[0].childNodes,c=b.length,d=1;d<c;d++)b[d].style.display="none";this._correctPlus(a)}for(d=0;d<a.childsCount;d++)a.childNodes[d].childsCount&&this._xcloseAll(a.childNodes[d])}};dhtmlXTreeObject.prototype._xopenAll=function(a){this._HideShow(a,2);for(var b=0;b<a.childsCount;b++)this._xopenAll(a.childNodes[b])};
+dhtmlXTreeObject.prototype._correctPlus=function(a){if(a.htmlNode){var b=a.htmlNode.childNodes[0].childNodes[0].childNodes[0].lastChild,c=a.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0],d=this.lineArray;if(this.XMLsource&&!a.XMLload){if(d=this.plusArray,this._setSrc(c,this.iconURL+a.images[2]),this._txtimg)return b.innerHTML="[+]"}else if(a.childsCount||a.unParsed)if(a.htmlNode.childNodes[0].childNodes[1]&&a.htmlNode.childNodes[0].childNodes[1].style.display!="none"){if(!a.wsign)d=
+this.minusArray;this._setSrc(c,this.iconURL+a.images[1]);if(this._txtimg)return b.innerHTML="[-]"}else{if(!a.wsign)d=this.plusArray;this._setSrc(c,this.iconURL+a.images[2]);if(this._txtimg)return b.innerHTML="[+]"}else this._setSrc(c,this.iconURL+a.images[0]);var e=2;a.treeNod.treeLinesOn?(a.parentObject&&(e=this._getCountStatus(a.id,a.parentObject)),this._setSrc(b,this.imPath+d[e])):this._setSrc(b,this.imPath+d[3])}};
+dhtmlXTreeObject.prototype._correctLine=function(a){if(a.htmlNode){var b=a.parentObject;if(b)if(this._getLineStatus(a.id,b)==0||!this.treeLinesOn)for(var c=1;c<=a.childsCount;c++){if(!a.htmlNode.childNodes[0].childNodes[c])break;a.htmlNode.childNodes[0].childNodes[c].childNodes[0].style.backgroundImage="";a.htmlNode.childNodes[0].childNodes[c].childNodes[0].style.backgroundRepeat=""}else for(c=1;c<=a.childsCount;c++){if(!a.htmlNode.childNodes[0].childNodes[c])break;a.htmlNode.childNodes[0].childNodes[c].childNodes[0].style.backgroundImage=
+"url("+this.imPath+this.lineArray[5]+")";a.htmlNode.childNodes[0].childNodes[c].childNodes[0].style.backgroundRepeat="repeat-y"}}};dhtmlXTreeObject.prototype._getCountStatus=function(a,b){return b.childsCount<=1?b.id==this.rootId?4:0:b.childNodes[0].id==a?b.id==this.rootId?2:1:b.childNodes[b.childsCount-1].id==a?0:1};dhtmlXTreeObject.prototype._getLineStatus=function(a,b){return b.childNodes[b.childsCount-1].id==a?0:1};
+dhtmlXTreeObject.prototype._HideShow=function(a,b){if(this.XMLsource&&!a.XMLload){if(b!=1)a.XMLload=1,this._loadDynXML(a.id)}else{var c=a.htmlNode.childNodes[0].childNodes,d=c.length;if(d>1){(c[1].style.display!="none"||b==1)&&b!=2?(this.allTree.childNodes[0].border="1",this.allTree.childNodes[0].border="0",nodestyle="none"):nodestyle="";for(var e=1;e<d;e++)c[e].style.display=nodestyle}this._correctPlus(a)}};
+dhtmlXTreeObject.prototype._getOpenState=function(a){if(!a.htmlNode)return 0;var b=a.htmlNode.childNodes[0].childNodes;return b.length<=1?0:b[1].style.display!="none"?1:-1};
+dhtmlXTreeObject.prototype.onRowClick2=function(){var a=this.parentObject.treeNod;if(!a.callEvent("onDblClick",[this.parentObject.id,a]))return!1;this.parentObject.closeble&&this.parentObject.closeble!="0"?a._HideShow(this.parentObject):a._HideShow(this.parentObject,2);if(a.checkEvent("onOpenEnd"))a.xmlstate?(a._oie_onXLE.push(a.onXLE),a.onXLE=a._epnFHe):a.callEvent("onOpenEnd",[this.parentObject.id,a._getOpenState(this.parentObject)]);return!1};
+dhtmlXTreeObject.prototype.onRowClick=function(){var a=this.parentObject.treeNod;if(!a.callEvent("onOpenStart",[this.parentObject.id,a._getOpenState(this.parentObject)]))return 0;this.parentObject.closeble&&this.parentObject.closeble!="0"?a._HideShow(this.parentObject):a._HideShow(this.parentObject,2);if(a.checkEvent("onOpenEnd"))a.xmlstate?(a._oie_onXLE.push(a.onXLE),a.onXLE=a._epnFHe):a.callEvent("onOpenEnd",[this.parentObject.id,a._getOpenState(this.parentObject)])};
+dhtmlXTreeObject.prototype._epnFHe=function(a,b,c){b!=this.rootId&&this.callEvent("onOpenEnd",[b,a.getOpenState(b)]);a.onXLE=a._oie_onXLE.pop();if(!c&&!a._oie_onXLE.length&&a.onXLE)a.onXLE(a,b)};dhtmlXTreeObject.prototype.onRowClickDown=function(a){var a=a||window.event,b=this.parentObject.treeNod;b._selectItem(this.parentObject,a)};dhtmlXTreeObject.prototype.getSelectedItemId=function(){for(var a=[],b=0;b<this._selected.length;b++)a[b]=this._selected[b].id;return a.join(this.dlmtr)};
+dhtmlXTreeObject.prototype._selectItem=function(a){if(this.checkEvent("onSelect"))this._onSSCFold=this.getSelectedItemId();this._unselectItems();this._markItem(a);if(this.checkEvent("onSelect")){var b=this.getSelectedItemId();b!=this._onSSCFold&&this.callEvent("onSelect",[b])}};dhtmlXTreeObject.prototype._markItem=function(a){if(a.scolor)a.span.style.color=a.scolor;a.span.className="selectedTreeRow";a.i_sel=!0;this._selected[this._selected.length]=a};
+dhtmlXTreeObject.prototype.getIndexById=function(a){var b=this._globalIdStorageFind(a);return!b?null:this._getIndex(b)};dhtmlXTreeObject.prototype._getIndex=function(a){for(var b=a.parentObject,c=0;c<b.childsCount;c++)if(b.childNodes[c]==a)return c};dhtmlXTreeObject.prototype._unselectItem=function(a){if(a&&a.i_sel){a.span.className="standartTreeRow";if(a.acolor)a.span.style.color=a.acolor;a.i_sel=!1;for(var b=0;b<this._selected.length;b++)if(!this._selected[b].i_sel){this._selected.splice(b,1);break}}};
+dhtmlXTreeObject.prototype._unselectItems=function(){for(var a=0;a<this._selected.length;a++){var b=this._selected[a];b.span.className="standartTreeRow";if(b.acolor)b.span.style.color=b.acolor;b.i_sel=!1}this._selected=[]};dhtmlXTreeObject.prototype.onRowSelect=function(a,b,c){var a=a||window.event,d=this.parentObject;if(b)d=b.parentObject;var e=d.treeNod,f=e.getSelectedItemId();(!a||!a.skipUnSel)&&e._selectItem(d,a);c||(d.actionHandler?d.actionHandler(d.id,f):e.callEvent("onClick",[d.id,f]))};
+dhtmlXTreeObject.prototype._correctCheckStates=function(a){if(this.tscheck&&a&&a.id!=this.rootId){var b=a.childNodes,c=0,d=0;if(a.childsCount!=0){for(var e=0;e<a.childsCount;e++)if(!b[e].dscheck)if(b[e].checkstate==0)c=1;else if(b[e].checkstate==1)d=1;else{d=c=1;break}c&&d?this._setCheck(a,"unsure"):c?this._setCheck(a,!1):this._setCheck(a,!0);this._correctCheckStates(a.parentObject)}}};
+dhtmlXTreeObject.prototype.onCheckBoxClick=function(){if(this.treeNod.callEvent("onBeforeCheck",[this.parentObject.id,this.parentObject.checkstate])){if(this.parentObject.dscheck)return!0;this.treeNod.tscheck?this.parentObject.checkstate==1?this.treeNod._setSubChecked(!1,this.parentObject):this.treeNod._setSubChecked(!0,this.parentObject):this.parentObject.checkstate==1?this.treeNod._setCheck(this.parentObject,!1):this.treeNod._setCheck(this.parentObject,!0);this.treeNod._correctCheckStates(this.parentObject.parentObject);
+return this.treeNod.callEvent("onCheck",[this.parentObject.id,this.parentObject.checkstate])}};
+dhtmlXTreeObject.prototype._createItem=function(a,b,c){var d=document.createElement("table");d.cellSpacing=0;d.cellPadding=0;d.border=0;if(this.hfMode)d.style.tableLayout="fixed";d.style.margin=0;d.style.padding=0;var e=document.createElement("tbody"),f=document.createElement("tr"),g=document.createElement("td");g.className="standartTreeImage";if(this._txtimg){var h=document.createElement("div");g.appendChild(h);h.className="dhx_tree_textSign"}else{h=this._getImg(b.id);h.border="0";if(h.tagName==
+"IMG")h.align="absmiddle";g.appendChild(h);h.style.padding=0;h.style.margin=0;h.style.width=this.def_line_img_x;h.style.height=this.def_line_img_y}var i=document.createElement("td"),j=this._getImg(this.cBROf?this.rootId:b.id);j.checked=0;this._setSrc(j,this.imPath+this.checkArray[0]);j.style.width="16px";j.style.height="16px";if(!a)(!_isIE?i:j).style.display="none";i.appendChild(j);if(!this.cBROf&&j.tagName=="IMG")j.align="absmiddle";j.onclick=this.onCheckBoxClick;j.treeNod=this;j.parentObject=b;
+i.width=window._KHTMLrv?"16px":"20px";var k=document.createElement("td");k.className="standartTreeImage";var m=this._getImg(this.timgen?b.id:this.rootId);m.onmousedown=this._preventNsDrag;m.ondragstart=this._preventNsDrag;m.border="0";if(this._aimgs){m.parentObject=b;if(m.tagName=="IMG")m.align="absmiddle";m.onclick=this.onRowSelect}c||this._setSrc(m,this.iconURL+this.imageArray[0]);k.appendChild(m);m.style.padding=0;m.style.margin=0;if(this.timgen)k.style.width=m.style.width=this.def_img_x,m.style.height=
+this.def_img_y;else if(m.style.width="0px",m.style.height="0px",_isOpera||window._KHTMLrv)k.style.display="none";var l=document.createElement("td");l.className="standartTreeRow";b.span=document.createElement("span");b.span.className="standartTreeRow";this.mlitems?(b.span.style.width=this.mlitems,b.span.style.display="block"):l.noWrap=!0;if(_isIE&&_isIE>7)l.style.width="999999px";else if(!window._KHTMLrv)l.style.width="100%";b.span.innerHTML=b.label;l.appendChild(b.span);l.parentObject=b;g.parentObject=
+b;l.onclick=this.onRowSelect;g.onclick=this.onRowClick;l.ondblclick=this.onRowClick2;if(this.ettip)f.title=b.label;if(this.dragAndDropOff){if(this._aimgs)this.dragger.addDraggableItem(k,this),k.parentObject=b;this.dragger.addDraggableItem(l,this)}b.span.style.paddingLeft="5px";b.span.style.paddingRight="5px";l.style.verticalAlign="";l.style.fontSize="10pt";l.style.cursor=this.style_pointer;f.appendChild(g);f.appendChild(i);f.appendChild(k);f.appendChild(l);e.appendChild(f);d.appendChild(e);if(this.ehlt||
+this.checkEvent("onMouseIn")||this.checkEvent("onMouseOut"))f.onmousemove=this._itemMouseIn,f[_isIE?"onmouseleave":"onmouseout"]=this._itemMouseOut;return d};dhtmlXTreeObject.prototype.setImagePath=function(a){this.iconURL=this.imPath=a};dhtmlXTreeObject.prototype.setIconPath=function(a){this.iconURL=a};dhtmlXTreeObject.prototype.setOnRightClickHandler=function(a){this.attachEvent("onRightClick",a)};dhtmlXTreeObject.prototype.setOnClickHandler=function(a){this.attachEvent("onClick",a)};
+dhtmlXTreeObject.prototype.setOnSelectStateChange=function(a){this.attachEvent("onSelect",a)};dhtmlXTreeObject.prototype.setXMLAutoLoading=function(a){this.XMLsource=a};dhtmlXTreeObject.prototype.setOnCheckHandler=function(a){this.attachEvent("onCheck",a)};dhtmlXTreeObject.prototype.setOnOpenHandler=function(a){this.attachEvent("onOpenStart",a)};dhtmlXTreeObject.prototype.setOnOpenStartHandler=function(a){this.attachEvent("onOpenStart",a)};
+dhtmlXTreeObject.prototype.setOnOpenEndHandler=function(a){this.attachEvent("onOpenEnd",a)};dhtmlXTreeObject.prototype.setOnDblClickHandler=function(a){this.attachEvent("onDblClick",a)};dhtmlXTreeObject.prototype.openAllItems=function(a){var b=this._globalIdStorageFind(a);if(!b)return 0;this._xopenAll(b)};dhtmlXTreeObject.prototype.getOpenState=function(a){var b=this._globalIdStorageFind(a);return!b?"":this._getOpenState(b)};
+dhtmlXTreeObject.prototype.closeAllItems=function(a){if(a===window.undefined)a=this.rootId;var b=this._globalIdStorageFind(a);if(!b)return 0;this._xcloseAll(b);this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0"};
+dhtmlXTreeObject.prototype.setUserData=function(a,b,c){var d=this._globalIdStorageFind(a,0,!0);if(d){if(b=="hint")d.htmlNode.childNodes[0].childNodes[0].title=c;if(typeof d.userData["t_"+b]=="undefined")d._userdatalist?d._userdatalist+=","+b:d._userdatalist=b;d.userData["t_"+b]=c}};dhtmlXTreeObject.prototype.getUserData=function(a,b){var c=this._globalIdStorageFind(a,0,!0);return!c?void 0:c.userData["t_"+b]};
+dhtmlXTreeObject.prototype.getItemColor=function(a){var b=this._globalIdStorageFind(a);if(!b)return 0;var c={};if(b.acolor)c.acolor=b.acolor;if(b.scolor)c.scolor=b.scolor;return c};dhtmlXTreeObject.prototype.setItemColor=function(a,b,c){var d=a&&a.span?a:this._globalIdStorageFind(a);if(d){if(d.i_sel){if(c)d.span.style.color=c}else if(b)d.span.style.color=b;if(c)d.scolor=c;if(b)d.acolor=b}else return 0};
+dhtmlXTreeObject.prototype.getItemText=function(a){var b=this._globalIdStorageFind(a);return!b?0:b.htmlNode.childNodes[0].childNodes[0].childNodes[3].childNodes[0].innerHTML};dhtmlXTreeObject.prototype.getParentId=function(a){var b=this._globalIdStorageFind(a);return!b||!b.parentObject?"":b.parentObject.id};dhtmlXTreeObject.prototype.changeItemId=function(a,b){if(a!=b){var c=this._globalIdStorageFind(a);if(!c)return 0;c.id=b;c.span.contextMenuId=b;this._idpull[b]=this._idpull[a];delete this._idpull[a]}};
+dhtmlXTreeObject.prototype.doCut=function(){this.nodeCut&&this.clearCut();this.nodeCut=[].concat(this._selected);for(var a=0;a<this.nodeCut.length;a++){var b=this.nodeCut[a];b._cimgs=[];b._cimgs[0]=b.images[0];b._cimgs[1]=b.images[1];b._cimgs[2]=b.images[2];b.images[0]=b.images[1]=b.images[2]=this.cutImage;this._correctPlus(b)}};
+dhtmlXTreeObject.prototype.doPaste=function(a){var b=this._globalIdStorageFind(a);if(!b)return 0;for(var c=0;c<this.nodeCut.length;c++)this._checkPNodes(b,this.nodeCut[c])||this._moveNode(this.nodeCut[c],b);this.clearCut()};dhtmlXTreeObject.prototype.clearCut=function(){for(var a=0;a<this.nodeCut.length;a++){var b=this.nodeCut[a];b.images[0]=b._cimgs[0];b.images[1]=b._cimgs[1];b.images[2]=b._cimgs[2];this._correctPlus(b)}this.nodeCut=[]};
+dhtmlXTreeObject.prototype._moveNode=function(a,b){return this._moveNodeTo(a,b)};dhtmlXTreeObject.prototype._fixNodesCollection=function(a,b){var c=0,d=0,e=a.childNodes,f=a.childsCount-1;if(b!=e[f]){for(var g=0;g<f;g++)e[g]==e[f]&&(e[g]=e[g+1],e[g+1]=e[f]);for(g=0;g<f+1;g++)if(c){var h=e[g];e[g]=c;c=h}else e[g]==b&&(c=e[g],e[g]=e[f])}};
+dhtmlXTreeObject.prototype._recreateBranch=function(a,b,c){var d,e="";if(c){for(d=0;d<b.childsCount;d++)if(b.childNodes[d]==c)break;d!=0?c=b.childNodes[d-1]:(e="TOP",c="")}var f=this._onradh;this._onradh=null;var g=this._attachChildNode(b,a.id,a.label,0,a.images[0],a.images[1],a.images[2],e,0,c);g._userdatalist=a._userdatalist;g.userData=a.userData.clone();g.XMLload=a.XMLload;if(f)this._onradh=f,this._onradh(g.id);for(d=0;d<a.childsCount;d++)this._recreateBranch(a.childNodes[d],g,0,1);return g};
+dhtmlXTreeObject.prototype._moveNodeTo=function(a,b,c){if(a.treeNod._nonTrivialNode)return a.treeNod._nonTrivialNode(this,b,c,a);if(this._checkPNodes(b,a))return!1;var d=b.mytype?a.treeNod.lWin!=b.lWin:a.treeNod.lWin!=b.treeNod.lWin;if(!this.callEvent("onDrag",[a.id,b.id,c?c.id:null,a.treeNod,b.treeNod]))return!1;if(b.XMLload==0&&this.XMLsource)b.XMLload=1,this._loadDynXML(b.id);this.openItem(b.id);var e=a.treeNod,f=a.parentObject.childsCount,g=a.parentObject;if(d||e.dpcpy){var h=a.id,a=this._recreateBranch(a,
+b,c);e.dpcpy||e.deleteItem(h)}else{var i=b.childsCount,j=b.childNodes;if(i==0)b._open=!0;e._unselectItem(a);j[i]=a;a.treeNod=b.treeNod;b.childsCount++;var k=this._drawNewTr(j[i].htmlNode);c?(b.htmlNode.childNodes[0].insertBefore(k,c.tr),this._fixNodesCollection(b,c),j=b.childNodes):(b.htmlNode.childNodes[0].appendChild(k),this.dadmode==1&&this._fixNodesCollection(b,c))}if(!e.dpcpy&&!d){var m=a.tr;document.all&&navigator.appVersion.search(/MSIE\ 5\.0/gi)!=-1?window.setTimeout(function(){m.parentNode.removeChild(m)},
+250):a.parentObject.htmlNode.childNodes[0].removeChild(a.tr);if(!c||b!=a.parentObject)for(var l=0;l<g.childsCount;l++){if(g.childNodes[l].id==a.id){g.childNodes[l]=0;break}}else g.childNodes[g.childsCount-1]=0;e._compressChildList(g.childsCount,g.childNodes);g.childsCount--}if(!d&&!e.dpcpy){a.tr=k;k.nodem=a;a.parentObject=b;if(e!=b.treeNod){if(a.treeNod._registerBranch(a,e))return;this._clearStyles(a);this._redrawFrom(this,a.parentObject);this._onradh&&this._onradh(a.id)}this._correctPlus(b);this._correctLine(b);
+this._correctLine(a);this._correctPlus(a);c?this._correctPlus(c):b.childsCount>=2&&(this._correctPlus(j[b.childsCount-2]),this._correctLine(j[b.childsCount-2]));this._correctPlus(j[b.childsCount-1]);this.tscheck&&this._correctCheckStates(b);e.tscheck&&e._correctCheckStates(g)}f>1&&(e._correctPlus(g.childNodes[f-2]),e._correctLine(g.childNodes[f-2]));e._correctPlus(g);e._correctLine(g);this.callEvent("onDrop",[a.id,b.id,c?c.id:null,e,b.treeNod]);return a.id};
+dhtmlXTreeObject.prototype._clearStyles=function(a){if(a.htmlNode){var b=a.htmlNode.childNodes[0].childNodes[0].childNodes[1],c=b.nextSibling.nextSibling;a.span.innerHTML=a.label;a.i_sel=!1;a._aimgs&&this.dragger.removeDraggableItem(b.nextSibling);this.checkBoxOff?(b.childNodes[0].style.display="",b.childNodes[0].onclick=this.onCheckBoxClick,this._setSrc(b.childNodes[0],this.imPath+this.checkArray[a.checkstate])):b.childNodes[0].style.display="none";b.childNodes[0].treeNod=this;this.dragger.removeDraggableItem(c);
+this.dragAndDropOff&&this.dragger.addDraggableItem(c,this);this._aimgs&&this.dragger.addDraggableItem(b.nextSibling,this);c.childNodes[0].className="standartTreeRow";c.onclick=this.onRowSelect;c.ondblclick=this.onRowClick2;b.previousSibling.onclick=this.onRowClick;this._correctLine(a);this._correctPlus(a);for(var d=0;d<a.childsCount;d++)this._clearStyles(a.childNodes[d])}};
+dhtmlXTreeObject.prototype._registerBranch=function(a,b){b&&b._globalIdStorageSub(a.id);a.id=this._globalIdStorageAdd(a.id,a);a.treeNod=this;for(var c=0;c<a.childsCount;c++)this._registerBranch(a.childNodes[c],b);return 0};dhtmlXTreeObject.prototype.enableThreeStateCheckboxes=function(a){this.tscheck=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.setOnMouseInHandler=function(a){this.ehlt=!0;this.attachEvent("onMouseIn",a)};
+dhtmlXTreeObject.prototype.setOnMouseOutHandler=function(a){this.ehlt=!0;this.attachEvent("onMouseOut",a)};dhtmlXTreeObject.prototype.enableTreeImages=function(a){this.timgen=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.enableFixedMode=function(a){this.hfMode=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.enableCheckBoxes=function(a,b){this.checkBoxOff=convertStringToBoolean(a);this.cBROf=!(this.checkBoxOff||convertStringToBoolean(b))};
+dhtmlXTreeObject.prototype.setStdImages=function(a,b,c){this.imageArray[0]=a;this.imageArray[1]=b;this.imageArray[2]=c};dhtmlXTreeObject.prototype.enableTreeLines=function(a){this.treeLinesOn=convertStringToBoolean(a)};
+dhtmlXTreeObject.prototype.setImageArrays=function(a,b,c,d,e,f){switch(a){case "plus":this.plusArray[0]=b;this.plusArray[1]=c;this.plusArray[2]=d;this.plusArray[3]=e;this.plusArray[4]=f;break;case "minus":this.minusArray[0]=b,this.minusArray[1]=c,this.minusArray[2]=d,this.minusArray[3]=e,this.minusArray[4]=f}};dhtmlXTreeObject.prototype.openItem=function(a){var b=this._globalIdStorageFind(a);return b?this._openItem(b):0};
+dhtmlXTreeObject.prototype._openItem=function(a){var b=this._getOpenState(a);if(b<0||this.XMLsource&&!a.XMLload){if(!this.callEvent("onOpenStart",[a.id,b]))return 0;this._HideShow(a,2);if(this.checkEvent("onOpenEnd"))this.onXLE==this._epnFHe&&this._epnFHe(this,a.id,!0),!this.xmlstate||!this.XMLsource?this.callEvent("onOpenEnd",[a.id,this._getOpenState(a)]):(this._oie_onXLE.push(this.onXLE),this.onXLE=this._epnFHe)}else this._srnd&&this._HideShow(a,2);a.parentObject&&!this._skip_open_parent&&this._openItem(a.parentObject)};
+dhtmlXTreeObject.prototype.closeItem=function(a){if(this.rootId==a)return 0;var b=this._globalIdStorageFind(a);if(!b)return 0;b.closeble&&this._HideShow(b,1)};dhtmlXTreeObject.prototype.getLevel=function(a){var b=this._globalIdStorageFind(a);return!b?0:this._getNodeLevel(b,0)};dhtmlXTreeObject.prototype.setItemCloseable=function(a,b){var b=convertStringToBoolean(b),c=a&&a.span?a:this._globalIdStorageFind(a);if(!c)return 0;c.closeble=b};
+dhtmlXTreeObject.prototype._getNodeLevel=function(a,b){return a.parentObject?this._getNodeLevel(a.parentObject,b+1):b};dhtmlXTreeObject.prototype.hasChildren=function(a){var b=this._globalIdStorageFind(a);return b?this.XMLsource&&!b.XMLload?!0:b.childsCount:0};dhtmlXTreeObject.prototype._getLeafCount=function(a){for(var b=0,c=0;c<a.childsCount;c++)a.childNodes[c].childsCount==0&&b++;return b};
+dhtmlXTreeObject.prototype.setItemText=function(a,b,c){var d=this._globalIdStorageFind(a);if(!d)return 0;d.label=b;d.span.innerHTML=b;d.span.parentNode.parentNode.title=c||""};dhtmlXTreeObject.prototype.getItemTooltip=function(a){var b=this._globalIdStorageFind(a);return!b?"":b.span.parentNode.parentNode._dhx_title||b.span.parentNode.parentNode.title||""};dhtmlXTreeObject.prototype.refreshItem=function(a){if(!a)a=this.rootId;var b=this._globalIdStorageFind(a);this.deleteChildItems(a);this._loadDynXML(a)};
+dhtmlXTreeObject.prototype.setItemImage2=function(a,b,c,d){var e=this._globalIdStorageFind(a);if(!e)return 0;e.images[1]=c;e.images[2]=d;e.images[0]=b;this._correctPlus(e)};dhtmlXTreeObject.prototype.setItemImage=function(a,b,c){var d=this._globalIdStorageFind(a);if(!d)return 0;c?(d.images[1]=b,d.images[2]=c):d.images[0]=b;this._correctPlus(d)};
+dhtmlXTreeObject.prototype.getSubItems=function(a){var b=this._globalIdStorageFind(a,0,1);if(!b)return 0;var c="";for(i=0;i<b.childsCount;i++)c?c+=this.dlmtr+b.childNodes[i].id:c=b.childNodes[i].id;return c};
+dhtmlXTreeObject.prototype._getAllScraggyItems=function(a){for(var b="",c=0;c<a.childsCount;c++)if(a.childNodes[c].unParsed||a.childNodes[c].childsCount>0){var d=a.childNodes[c].unParsed?this._getAllScraggyItemsXML(a.childNodes[c].unParsed,1):this._getAllScraggyItems(a.childNodes[c]);d&&(b?b+=this.dlmtr+d:b=d)}else b?b+=this.dlmtr+a.childNodes[c].id:b=a.childNodes[c].id;return b};
+dhtmlXTreeObject.prototype._getAllFatItems=function(a){for(var b="",c=0;c<a.childsCount;c++)if(a.childNodes[c].unParsed||a.childNodes[c].childsCount>0){b?b+=this.dlmtr+a.childNodes[c].id:b=a.childNodes[c].id;var d=a.childNodes[c].unParsed?this._getAllFatItemsXML(a.childNodes[c].unParsed,1):this._getAllFatItems(a.childNodes[c]);d&&(b+=this.dlmtr+d)}return b};
+dhtmlXTreeObject.prototype._getAllSubItems=function(a,b,c){var d=c?c:this._globalIdStorageFind(a);if(!d)return 0;for(var b="",e=0;e<d.childsCount;e++){b?b+=this.dlmtr+d.childNodes[e].id:b=d.childNodes[e].id;var f=this._getAllSubItems(0,b,d.childNodes[e]);f&&(b+=this.dlmtr+f)}return b};
+dhtmlXTreeObject.prototype.selectItem=function(a,b,c){var b=convertStringToBoolean(b),d=this._globalIdStorageFind(a);if(!d||!d.parentObject)return 0;this.XMLloadingWarning?d.parentObject.openMe=1:this._openItem(d.parentObject);var e=null;if(c&&(e={ctrlKey:!0},d.i_sel))e.skipUnSel=!0;if(b)this.onRowSelect(e,d.htmlNode.childNodes[0].childNodes[0].childNodes[3],!1);else this.onRowSelect(e,d.htmlNode.childNodes[0].childNodes[0].childNodes[3],!0)};
+dhtmlXTreeObject.prototype.getSelectedItemText=function(){for(var a=[],b=0;b<this._selected.length;b++)a[b]=this._selected[b].span.innerHTML;return a.join(this.dlmtr)};dhtmlXTreeObject.prototype._compressChildList=function(a,b){a--;for(var c=0;c<a;c++)b[c]==0&&(b[c]=b[c+1],b[c+1]=0)};
+dhtmlXTreeObject.prototype._deleteNode=function(a,b,c){if(!b||!b.parentObject)return 0;var d=0,e=0;if(b.tr.nextSibling)d=b.tr.nextSibling.nodem;if(b.tr.previousSibling)e=b.tr.previousSibling.nodem;for(var f=b.parentObject,g=f.childsCount,h=f.childNodes,i=0;i<g;i++)if(h[i].id==a){c||f.htmlNode.childNodes[0].removeChild(h[i].tr);h[i]=0;break}this._compressChildList(g,h);c||f.childsCount--;d&&(this._correctPlus(d),this._correctLine(d));e&&(this._correctPlus(e),this._correctLine(e));this.tscheck&&this._correctCheckStates(f);
+c||this._globalIdStorageRecSub(b)};dhtmlXTreeObject.prototype.setCheck=function(a,b){var c=this._globalIdStorageFind(a,0,1);c&&(b==="unsure"?this._setCheck(c,b):(b=convertStringToBoolean(b),this.tscheck&&this.smcheck?this._setSubChecked(b,c):this._setCheck(c,b)),this.smcheck&&this._correctCheckStates(c.parentObject))};
+dhtmlXTreeObject.prototype._setCheck=function(a,b){if(a){if((a.parentObject._r_logic||this._frbtr)&&b)if(this._frbtrs)this._frbtrL&&this.setCheck(this._frbtrL.id,0),this._frbtrL=a;else for(var c=0;c<a.parentObject.childsCount;c++)this._setCheck(a.parentObject.childNodes[c],0);var d=a.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];a.checkstate=b=="unsure"?2:b?1:0;if(a.dscheck)a.checkstate=a.dscheck;this._setSrc(d,this.imPath+(a.parentObject._r_logic||this._frbtr?this.radioArray:this.checkArray)[a.checkstate])}};
+dhtmlXTreeObject.prototype.setSubChecked=function(a,b){var c=this._globalIdStorageFind(a);this._setSubChecked(b,c);this._correctCheckStates(c.parentObject)};
+dhtmlXTreeObject.prototype._setSubChecked=function(a,b){a=convertStringToBoolean(a);if(b){if((b.parentObject._r_logic||this._frbtr)&&a)for(var c=0;c<b.parentObject.childsCount;c++)this._setSubChecked(0,b.parentObject.childNodes[c]);if(b._r_logic||this._frbtr)this._setSubChecked(a,b.childNodes[0]);else for(c=0;c<b.childsCount;c++)this._setSubChecked(a,b.childNodes[c]);var d=b.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];b.checkstate=a?1:0;if(b.dscheck)b.checkstate=b.dscheck;this._setSrc(d,
+this.imPath+(b.parentObject._r_logic||this._frbtr?this.radioArray:this.checkArray)[b.checkstate])}};dhtmlXTreeObject.prototype.isItemChecked=function(a){var b=this._globalIdStorageFind(a);return!b?void 0:b.checkstate};dhtmlXTreeObject.prototype.deleteChildItems=function(a){var b=this._globalIdStorageFind(a);if(b)for(var c=b.childsCount,d=0;d<c;d++)this._deleteNode(b.childNodes[0].id,b.childNodes[0])};
+dhtmlXTreeObject.prototype.deleteItem=function(a,b){if(!this._onrdlh||this._onrdlh(a))var c=this._deleteItem(a,b);this.allTree.childNodes[0].border="1";this.allTree.childNodes[0].border="0"};dhtmlXTreeObject.prototype._deleteItem=function(a,b,c){var b=convertStringToBoolean(b),d=this._globalIdStorageFind(a);if(d){var e=this.getParentId(a),f=d.parentObject;this._deleteNode(a,d,c);this._correctPlus(f);this._correctLine(f);b&&e!=this.rootId&&this.selectItem(e,1);return f}};
+dhtmlXTreeObject.prototype._globalIdStorageRecSub=function(a){for(var b=0;b<a.childsCount;b++)this._globalIdStorageRecSub(a.childNodes[b]),this._globalIdStorageSub(a.childNodes[b].id);this._globalIdStorageSub(a.id);var c=a;c.span=null;c.tr.nodem=null;c.tr=null;c.htmlNode=null};dhtmlXTreeObject.prototype.insertNewNext=function(a,b,c,d,e,f,g,h,i){var j=this._globalIdStorageFind(a);if(!j||!j.parentObject)return 0;var k=this._attachChildNode(0,b,c,d,e,f,g,h,i,j);return k};
+dhtmlXTreeObject.prototype.getItemIdByIndex=function(a,b){var c=this._globalIdStorageFind(a);return!c||b>=c.childsCount?null:c.childNodes[b].id};dhtmlXTreeObject.prototype.getChildItemIdByIndex=function(a,b){var c=this._globalIdStorageFind(a);return!c||b>=c.childsCount?null:c.childNodes[b].id};dhtmlXTreeObject.prototype.setDragHandler=function(a){this.attachEvent("onDrag",a)};
+dhtmlXTreeObject.prototype._clearMove=function(){if(this._lastMark)this._lastMark.className=this._lastMark.className.replace(/dragAndDropRow/g,""),this._lastMark=null;this.allTree.className=this.allTree.className.replace(" selectionBox","")};
+dhtmlXTreeObject.prototype.enableDragAndDrop=function(a,b){a=="temporary_disabled"?(this.dADTempOff=!1,a=!0):this.dADTempOff=!0;(this.dragAndDropOff=convertStringToBoolean(a))&&this.dragger.addDragLanding(this.allTree,this);if(arguments.length>1)this._ddronr=!convertStringToBoolean(b)};
+dhtmlXTreeObject.prototype._setMove=function(a){if(a.parentObject.span){var b=getAbsoluteTop(a),c=getAbsoluteTop(this.allTree)-this.allTree.scrollTop;this.dadmodec=this.dadmode;this.dadmodefix=0;var d=a.parentObject.span;d.className+=" dragAndDropRow";this._lastMark=d;this._autoScroll(null,b,c)}};
+dhtmlXTreeObject.prototype._autoScroll=function(a,b,c){if(this.autoScroll){a&&(b=getAbsoluteTop(a),c=getAbsoluteTop(this.allTree));if(b-c-parseInt(this.allTree.scrollTop)>parseInt(this.allTree.offsetHeight)-50)this.allTree.scrollTop=parseInt(this.allTree.scrollTop)+20;if(b-c<parseInt(this.allTree.scrollTop)+30)this.allTree.scrollTop=parseInt(this.allTree.scrollTop)-20}};
+dhtmlXTreeObject.prototype._createDragNode=function(a,b){if(!this.dADTempOff)return null;var c=a.parentObject;if(!this.callEvent("onBeforeDrag",[c.id,b]))return null;c.i_sel||this._selectItem(c,b);var d=document.createElement("div"),e=[];if(this._itim_dg)for(var f=0;f<this._selected.length;f++)e[f]="<table cellspacing='0' cellpadding='0'><tr><td><img width='18px' height='18px' src='"+this._getSrc(this._selected[f].span.parentNode.previousSibling.childNodes[0])+"'></td><td>"+this._selected[f].span.innerHTML+
+"</td></tr></table>";else e=this.getSelectedItemText().split(this.dlmtr);d.innerHTML=e.join("");d.style.position="absolute";d.className="dragSpanDiv";this._dragged=[].concat(this._selected);return d};dhtmlXTreeObject.prototype._focusNode=function(a){var b=getAbsoluteTop(a.htmlNode)-getAbsoluteTop(this.allTree);if(b>this.allTree.offsetHeight-30||b<0)this.allTree.scrollTop=b+this.allTree.scrollTop};dhtmlXTreeObject.prototype._preventNsDrag=function(a){a&&a.preventDefault&&a.preventDefault();return!1};
+dhtmlXTreeObject.prototype._drag=function(a,b,c){this._autoOpenTimer&&clearTimeout(this._autoOpenTimer);if(!c.parentObject)c=this.htmlNode.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0],this.dadmodec=0;this._clearMove();var d=a.parentObject.treeNod;d&&d._clearMove&&d._clearMove("");if(!this.dragMove||this.dragMove())for(var e=!d||!d._clearMove||!d._dragged?Array(a.parentObject):d._dragged,f=c.parentObject,g=0;g<e.length;g++){var h=this._moveNode(e[g],f);this.dadmodec&&h!==!1&&(f=
+this._globalIdStorageFind(h,!0,!0));h&&!this._sADnD&&this.selectItem(h,0,1)}if(d)d._dragged=[]};
+dhtmlXTreeObject.prototype._dragIn=function(a,b,c,d){if(!this.dADTempOff)return 0;var e=b.parentObject,f=a.parentObject;if(f||!this._ddronr){if(!this.callEvent("onDragIn",[e.id,f?f.id:null,e.treeNod,this]))return f&&this._autoScroll(a),0;if(f){if(e.childNodes==null)return this._setMove(a,c,d),a;for(var g=e.treeNod,h=0;h<g._dragged.length;h++)if(this._checkPNodes(f,g._dragged[h]))return this._autoScroll(a),0;this._setMove(a,c,d);if(this._getOpenState(f)<=0)this._autoOpenId=f.id,this._autoOpenTimer=
+window.setTimeout(new callerFunction(this._autoOpenItem,this),1E3)}else this.allTree.className+=" selectionBox";return a}};dhtmlXTreeObject.prototype._autoOpenItem=function(a,b){b.openItem(b._autoOpenId)};dhtmlXTreeObject.prototype._dragOut=function(){this._clearMove();this._autoOpenTimer&&clearTimeout(this._autoOpenTimer)};
+dhtmlXTreeObject.prototype.moveItem=function(a,b,c,d){var e=this._globalIdStorageFind(a);if(!e)return 0;switch(b){case "right":alert("Not supported yet");break;case "item_child":var f=(d||this)._globalIdStorageFind(c);if(!f)return 0;(d||this)._moveNodeTo(e,f,0);break;case "item_sibling":f=(d||this)._globalIdStorageFind(c);if(!f)return 0;(d||this)._moveNodeTo(e,f.parentObject,f);break;case "item_sibling_next":f=(d||this)._globalIdStorageFind(c);if(!f)return 0;f.tr&&f.tr.nextSibling&&f.tr.nextSibling.nodem?
+(d||this)._moveNodeTo(e,f.parentObject,f.tr.nextSibling.nodem):(d||this)._moveNodeTo(e,f.parentObject);break;case "left":e.parentObject.parentObject&&this._moveNodeTo(e,e.parentObject.parentObject,e.parentObject);break;case "up":var g=this._getPrevNode(e);if(g==-1||!g.parentObject)return;this._moveNodeTo(e,g.parentObject,g);break;case "up_strict":g=this._getIndex(e);g!=0&&this._moveNodeTo(e,e.parentObject,e.parentObject.childNodes[g-1]);break;case "down_strict":var g=this._getIndex(e),h=e.parentObject.childsCount-
+2;g==h?this._moveNodeTo(e,e.parentObject):g<h&&this._moveNodeTo(e,e.parentObject,e.parentObject.childNodes[g+2]);break;case "down":g=this._getNextNode(this._lastChild(e));if(g==-1||!g.parentObject)return;g.parentObject==e.parentObject&&(g=this._getNextNode(g));if(g==-1)this._moveNodeTo(e,e.parentObject);else{if(g==-1||!g.parentObject)return;this._moveNodeTo(e,g.parentObject,g)}}if(_isIE&&_isIE<8)this.allTree.childNodes[0].border="1",this.allTree.childNodes[0].border="0"};
+dhtmlXTreeObject.prototype._loadDynXML=function(a,b){var b=b||this.XMLsource,c=(new Date).valueOf();this._ld_id=a;this.loadXML(b+getUrlSymbol(b)+"uid="+c+"&id="+this._escape(a))};dhtmlXTreeObject.prototype._checkPNodes=function(a,b){return this._dcheckf?!1:b==a?1:a.parentObject?this._checkPNodes(a.parentObject,b):0};dhtmlXTreeObject.prototype.disableDropCheck=function(a){this._dcheckf=convertStringToBoolean(a)};
+dhtmlXTreeObject.prototype.preventIECaching=function(a){this.no_cashe=convertStringToBoolean(a);this.XMLLoader.rSeed=this.no_cashe};dhtmlXTreeObject.prototype.preventIECashing=dhtmlXTreeObject.prototype.preventIECaching;dhtmlXTreeObject.prototype.disableCheckbox=function(a,b){var c=typeof a!="object"?this._globalIdStorageFind(a,0,1):a;if(c&&(c.dscheck=convertStringToBoolean(b)?(c.checkstate||0)%3+3:c.checkstate>2?c.checkstate-3:c.checkstate,this._setCheck(c),c.dscheck<3))c.dscheck=!1};
+dhtmlXTreeObject.prototype.setEscapingMode=function(a){this.utfesc=a};dhtmlXTreeObject.prototype.enableHighlighting=function(a){this.ehlt=!0;this.ehlta=convertStringToBoolean(a)};dhtmlXTreeObject.prototype._itemMouseOut=function(){var a=this.childNodes[3].parentObject,b=a.treeNod;b.callEvent("onMouseOut",[a.id]);if(a.id==b._l_onMSI)b._l_onMSI=null;if(b.ehlta)a.span.className=a.span.className.replace("_lor","")};
+dhtmlXTreeObject.prototype._itemMouseIn=function(){var a=this.childNodes[3].parentObject,b=a.treeNod;b._l_onMSI!=a.id&&b.callEvent("onMouseIn",[a.id]);b._l_onMSI=a.id;if(b.ehlta)a.span.className=a.span.className.replace("_lor",""),a.span.className=a.span.className.replace(/((standart|selected)TreeRow)/,"$1_lor")};dhtmlXTreeObject.prototype.enableActiveImages=function(a){this._aimgs=convertStringToBoolean(a)};
+dhtmlXTreeObject.prototype.focusItem=function(a){var b=this._globalIdStorageFind(a);if(!b)return 0;this._focusNode(b)};dhtmlXTreeObject.prototype.getAllSubItems=function(a){return this._getAllSubItems(a)};dhtmlXTreeObject.prototype.getAllChildless=function(){return this._getAllScraggyItems(this.htmlNode)};dhtmlXTreeObject.prototype.getAllLeafs=dhtmlXTreeObject.prototype.getAllChildless;
+dhtmlXTreeObject.prototype._getAllScraggyItems=function(a){for(var b="",c=0;c<a.childsCount;c++)if(a.childNodes[c].unParsed||a.childNodes[c].childsCount>0){var d=a.childNodes[c].unParsed?this._getAllScraggyItemsXML(a.childNodes[c].unParsed,1):this._getAllScraggyItems(a.childNodes[c]);d&&(b?b+=this.dlmtr+d:b=d)}else b?b+=this.dlmtr+a.childNodes[c].id:b=a.childNodes[c].id;return b};
+dhtmlXTreeObject.prototype._getAllFatItems=function(a){for(var b="",c=0;c<a.childsCount;c++)if(a.childNodes[c].unParsed||a.childNodes[c].childsCount>0){b?b+=this.dlmtr+a.childNodes[c].id:b=a.childNodes[c].id;var d=a.childNodes[c].unParsed?this._getAllFatItemsXML(a.childNodes[c].unParsed,1):this._getAllFatItems(a.childNodes[c]);d&&(b+=this.dlmtr+d)}return b};dhtmlXTreeObject.prototype.getAllItemsWithKids=function(){return this._getAllFatItems(this.htmlNode)};
+dhtmlXTreeObject.prototype.getAllFatItems=dhtmlXTreeObject.prototype.getAllItemsWithKids;dhtmlXTreeObject.prototype.getAllChecked=function(){return this._getAllChecked("","",1)};dhtmlXTreeObject.prototype.getAllUnchecked=function(a){a&&(a=this._globalIdStorageFind(a));return this._getAllChecked(a,"",0)};dhtmlXTreeObject.prototype.getAllPartiallyChecked=function(){return this._getAllChecked("","",2)};
+dhtmlXTreeObject.prototype.getAllCheckedBranches=function(){var a=[this._getAllChecked("","",1)],b=this._getAllChecked("","",2);b&&a.push(b);return a.join(this.dlmtr)};dhtmlXTreeObject.prototype._getAllChecked=function(a,b,c){if(!a)a=this.htmlNode;if(a.checkstate==c&&!a.nocheckbox)b?b+=this.dlmtr+a.id:b=a.id;for(var d=a.childsCount,e=0;e<d;e++)b=this._getAllChecked(a.childNodes[e],b,c);return b?b:""};
+dhtmlXTreeObject.prototype.setItemStyle=function(a,b,c){var c=c||!1,d=this._globalIdStorageFind(a);if(!d)return 0;d.span.style.cssText?d.span.style.cssText=c?b:d.span.style.cssText+";"+b:d.span.setAttribute("style",d.span.getAttribute("style")+"; "+b)};dhtmlXTreeObject.prototype.enableImageDrag=function(a){this._itim_dg=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.setOnDragIn=function(a){this.attachEvent("onDragIn",a)};
+dhtmlXTreeObject.prototype.enableDragAndDropScrolling=function(a){this.autoScroll=convertStringToBoolean(a)};dhtmlXTreeObject.prototype.setSkin=function(a){var b=this.parentObject.className.replace(/dhxtree_[^ ]*/gi,"");this.parentObject.className=b+" dhxtree_"+a};
+(function(){dhtmlx.extend_api("dhtmlXTreeObject",{_init:function(a){return[a.parent,a.width||"100%",a.height||"100%",a.root_id||0]},auto_save_selection:"enableAutoSavingSelected",auto_tooltip:"enableAutoTooltips",checkbox:"enableCheckBoxes",checkbox_3_state:"enableThreeStateCheckboxes",checkbox_smart:"enableSmartCheckboxes",context_menu:"enableContextMenu",distributed_parsing:"enableDistributedParsing",drag:"enableDragAndDrop",drag_copy:"enableMercyDrag",drag_image:"enableImageDrag",drag_scroll:"enableDragAndDropScrolling",
+editor:"enableItemEditor",hover:"enableHighlighting",images:"enableTreeImages",image_fix:"enableIEImageFix",image_path:"setImagePath",lines:"enableTreeLines",loading_item:"enableLoadingItem",multiline:"enableMultiLineItems",multiselect:"enableMultiselection",navigation:"enableKeyboardNavigation",radio:"enableRadioButtons",radio_single:"enableSingleRadioMode",rtl:"enableRTL",search:"enableKeySearch",smart_parsing:"enableSmartXMLParsing",smart_rendering:"enableSmartRendering",text_icons:"enableTextSigns",
+xml:"loadXML",skin:"setSkin"},{})})();
+dhtmlXTreeObject.prototype._dp_init=function(a){a.attachEvent("insertCallback",function(a,c,d){var e=this._loader.doXPath(".//item",a),f=e[0].getAttribute("text");this.obj.insertNewItem(d,c,f,0,0,0,0,"CHILD")});a.attachEvent("updateCallback",function(a,c,d){var e=this._loader.doXPath(".//item",a),f=e[0].getAttribute("text");this.obj.setItemText(c,f);this.obj.getParentId(c)!=d&&this.obj.moveItem(c,"item_child",d);this.setUpdated(c,!0,"updated")});a.attachEvent("deleteCallback",function(a,c){this.obj.setUserData(c,
+this.action_param,"true_deleted");this.obj.deleteItem(c,!1)});a._methods=["setItemStyle","","changeItemId","deleteItem"];this.attachEvent("onEdit",function(b,c){b==3&&a.setUpdated(c,!0);return!0});this.attachEvent("onDrop",function(b,c,d,e,f){e==f&&a.setUpdated(b,!0)});this._onrdlh=function(b){var c=a.getState(b);if(c=="inserted")return a.set_invalid(b,!1),a.setUpdated(b,!1),!0;if(c=="true_deleted")return a.setUpdated(b,!1),!0;a.setUpdated(b,!0,"deleted");return!1};this._onradh=function(b){a.setUpdated(b,
+!0,"inserted")};a._getRowData=function(a){for(var c={},d=this.obj._globalIdStorageFind(a),e=d.parentObject,f=0,f=0;f<e.childsCount;f++)if(e.childNodes[f]==d)break;c.tr_id=d.id;c.tr_pid=e.id;c.tr_order=f;c.tr_text=d.span.innerHTML;e=(d._userdatalist||"").split(",");for(f=0;f<e.length;f++)c[e[f]]=d.userData["t_"+e[f]];return c}};
+dhtmlXTreeObject.prototype.makeDraggable=function(a,b){typeof a!="object"&&(a=document.getElementById(a));dragger=new dhtmlDragAndDropObject;dropper=new dhx_dragSomethingInTree;dragger.addDraggableItem(a,dropper);a.dragLanding=null;a.ondragstart=dropper._preventNsDrag;a.onselectstart=new Function("return false;");a.parentObject={};a.parentObject.img=a;a.parentObject.treeNod=dropper;dropper._customDrop=b};dhtmlXTreeObject.prototype.makeDragable=dhtmlXTreeObject.prototype.makeDraggable;
+dhtmlXTreeObject.prototype.makeAllDraggable=function(a){for(var b=document.getElementsByTagName("div"),c=0;c<b.length;c++)b[c].getAttribute("dragInDhtmlXTree")&&this.makeDragable(b[c],a)};
+function dhx_dragSomethingInTree(){this.lWin=window;this._createDragNode=function(a){var b=document.createElement("div");b.style.position="absolute";b.innerHTML=a.innerHTML||a.value;b.className="dragSpanDiv";return b};this._preventNsDrag=function(a){(a||window.event).cancelBubble=!0;a&&a.preventDefault&&a.preventDefault();return!1};this._nonTrivialNode=function(a,b,c,d){if(this._customDrop)return this._customDrop(a,d.img.id,b.id,c?c.id:null);var e=d.img.getAttribute("image")||"",f=d.img.id||"new",
+g=d.img.getAttribute("text")||(_isIE?d.img.innerText:d.img.textContent);a[c?"insertNewNext":"insertNewItem"](c?c.id:b.id,f,g,"",e,e,e)}}
+dhtmlXTreeObject.prototype.enableItemEditor=function(a){this._eItEd=convertStringToBoolean(a);if(!this._eItEdFlag)this._edn_dblclick=this._edn_click_IE=!0,this._ie_aFunc=this.aFunc,this._ie_dblclickFuncHandler=this.dblclickFuncHandler,this.setOnDblClickHandler(function(a,c){this._edn_dblclick&&this._editItem(a,c);return!0}),this.setOnClickHandler(function(a,c){this._stopEditItem(a,c);this.ed_hist_clcik==a&&this._edn_click_IE&&this._editItem(a,c);this.ed_hist_clcik=a;return!0}),this._eItEdFlag=!0};
+dhtmlXTreeObject.prototype.setOnEditHandler=function(a){this.attachEvent("onEdit",a)};dhtmlXTreeObject.prototype.setEditStartAction=function(a,b){this._edn_click_IE=convertStringToBoolean(a);this._edn_dblclick=convertStringToBoolean(b)};
+dhtmlXTreeObject.prototype._stopEdit=function(a){if(this._editCell&&(this.dADTempOff=this.dADTempOffEd,this._editCell.id!=a)){var b=!0,b=this.callEvent("onEdit",[2,this._editCell.id,this,this._editCell.span.childNodes[0].value]);if(b===!0)b=this._editCell.span.childNodes[0].value;else if(b===!1)b=this._editCell._oldValue;var c=b!=this._editCell._oldValue;this._editCell.span.innerHTML=b;this._editCell.label=this._editCell.span.innerHTML;var d=this._editCell.i_sel?"selectedTreeRow":"standartTreeRow";
+this._editCell.span.className=d;this._editCell.span.parentNode.className="standartTreeRow";this._editCell.span.style.paddingRight=this._editCell.span.style.paddingLeft="5px";this._editCell.span.onclick=this._editCell.span.ondblclick=function(){};var e=this._editCell.id;this.childCalc&&this._fixChildCountLabel(this._editCell);this._editCell=null;this.callEvent("onEdit",[3,e,this,c]);this._enblkbrd&&(this.parentObject.lastChild.focus(),this.parentObject.lastChild.focus())}};
+dhtmlXTreeObject.prototype._stopEditItem=function(a){this._stopEdit(a)};dhtmlXTreeObject.prototype.stopEdit=function(){this._editCell&&this._stopEdit(this._editCell.id+"_non")};dhtmlXTreeObject.prototype.editItem=function(a){this._editItem(a,this)};
+dhtmlXTreeObject.prototype._editItem=function(a){if(this._eItEd){this._stopEdit();var b=this._globalIdStorageFind(a);if(b){editText=this.callEvent("onEdit",[0,a,this,b.span.innerHTML]);if(editText===!0)editText=b.span.innerText||b.span.textContent;else if(editText===!1)return;this.dADTempOffEd=this.dADTempOff;this.dADTempOff=!1;this._editCell=b;b._oldValue=editText;b.span.innerHTML="<input type='text' class='intreeeditRow' />";b.span.style.paddingRight=b.span.style.paddingLeft="0px";b.span.onclick=
+b.span.ondblclick=function(a){(a||event).cancelBubble=!0};b.span.childNodes[0].value=editText;b.span.childNodes[0].onselectstart=function(a){return(a||event).cancelBubble=!0};b.span.childNodes[0].onmousedown=function(a){return(a||event).cancelBubble=!0};b.span.childNodes[0].focus();b.span.childNodes[0].focus();b.span.onclick=function(a){(a||event).cancelBubble=!0;return!1};b.span.className="";b.span.parentNode.className="";var c=this;b.span.childNodes[0].onkeydown=function(a){if(!a)a=window.event;
+if(a.keyCode==13)a.cancelBubble=!0,c._stopEdit(window.undefined);else if(a.keyCode==27)c._editCell.span.childNodes[0].value=c._editCell._oldValue,c._stopEdit(window.undefined);(a||event).cancelBubble=!0};this.callEvent("onEdit",[1,a,this])}}};function jsonPointer(a,b){this.d=a;this.dp=b}
+jsonPointer.prototype={text:function(){var a=function(a){for(var d=[],e=0;e<a.length;e++)d.push("{"+b(a[e])+"}");return d.join(",")},b=function(c){var d=[],e;for(e in c)typeof c[e]=="object"?e.length?d.push('"'+e+'":['+a(c[e])+"]"):d.push('"'+e+'":{'+b(c[e])+"}"):d.push('"'+e+'":"'+c[e]+'"');return d.join(",")};return"{"+b(this.d)+"}"},get:function(a){return this.d[a]},exists:function(){return!!this.d},content:function(){return this.d.content},each:function(a,b,c){var d=this.d[a],e=new jsonPointer;
+if(d)for(var f=0;f<d.length;f++)e.d=d[f],b.apply(c,[e,f])},get_all:function(){return this.d},sub:function(a){return new jsonPointer(this.d[a],this.d)},sub_exists:function(a){return!!this.d[a]},each_x:function(a,b,c,d,e){var f=this.d[a],g=new jsonPointer(0,this.d);if(f)for(e=e||0;e<f.length;e++)if(f[e][b]&&(g.d=f[e],c.apply(d,[g,e])==-1))break},up:function(){return new jsonPointer(this.dp,this.d)},set:function(a,b){this.d[a]=b},clone:function(){return new jsonPointer(this.d,this.dp)},through:function(a,
+b,c,d,e){var f=this.d[a];if(f.length)for(var g=0;g<f.length;g++){if(f[g][b]!=null&&f[g][b]!=""&&(!c||f[g][b]==c)){var h=new jsonPointer(f[g],this.d);d.apply(e,[h,g])}var i=this.d;this.d=f[g];this.sub_exists(a)&&this.through(a,b,c,d,e);this.d=i}}};
+dhtmlXTreeObject.prototype.loadJSArrayFile=function(a,b){this.parsCount||this.callEvent("onXLS",[this,this._ld_id]);this._ld_id=null;this.xmlstate=1;var c=this;this.XMLLoader=new dtmlXMLLoaderObject(function(a,b,f,g,h){eval("var z="+h.xmlDoc.responseText);c.loadJSArray(z)},this,!0,this.no_cashe);if(b)this.XMLLoader.waitCall=b;this.XMLLoader.loadXML(a)};
+dhtmlXTreeObject.prototype.loadCSV=function(a,b){this.parsCount||this.callEvent("onXLS",[this,this._ld_id]);this._ld_id=null;this.xmlstate=1;var c=this;this.XMLLoader=new dtmlXMLLoaderObject(function(a,b,f,g,h){c.loadCSVString(h.xmlDoc.responseText)},this,!0,this.no_cashe);if(b)this.XMLLoader.waitCall=b;this.XMLLoader.loadXML(a)};
+dhtmlXTreeObject.prototype.loadJSArray=function(a,b){for(var c=[],d=0;d<a.length;d++)c[a[d][1]]||(c[a[d][1]]=[]),c[a[d][1]].push({id:a[d][0],text:a[d][2]});var e={id:this.rootId},f=function(a,b){if(c[a.id]){a.item=c[a.id];for(var d=0;d<a.item.length;d++)b(a.item[d],b)}};f(e,f);this.loadJSONObject(e,b)};
+dhtmlXTreeObject.prototype.loadCSVString=function(a,b){for(var c=[],d=a.split("\n"),e=0;e<d.length;e++){var f=d[e].split(",");c[f[1]]||(c[f[1]]=[]);c[f[1]].push({id:f[0],text:f[2]})}var g={id:this.rootId},h=function(a,b){if(c[a.id]){a.item=c[a.id];for(var d=0;d<a.item.length;d++)b(a.item[d],b)}};h(g,h);this.loadJSONObject(g,b)};
+dhtmlXTreeObject.prototype.loadJSONObject=function(a,b){this.parsCount||this.callEvent("onXLS",[this,null]);this.xmlstate=1;var c=new jsonPointer(a);this._parse(c);this._p=c;b&&b()};
+dhtmlXTreeObject.prototype.loadJSON=function(a,b){this.parsCount||this.callEvent("onXLS",[this,this._ld_id]);this._ld_id=null;this.xmlstate=1;var c=this;this.XMLLoader=new dtmlXMLLoaderObject(function(a,b,f,g,h){try{eval("var t="+h.xmlDoc.responseText)}catch(i){dhtmlxError.throwError("LoadXML","Incorrect JSON",[h.xmlDoc,this]);return}var j=new jsonPointer(t);c._parse(j);c._p=j},this,!0,this.no_cashe);if(b)this.XMLLoader.waitCall=b;this.XMLLoader.loadXML(a)};
+dhtmlXTreeObject.prototype.serializeTreeToJSON=function(){for(var a=['{"id":"'+this.rootId+'", "item":['],b=[],c=0;c<this.htmlNode.childsCount;c++)b.push(this._serializeItemJSON(this.htmlNode.childNodes[c]));a.push(b.join(","));a.push("]}");return a.join("")};
+dhtmlXTreeObject.prototype._serializeItemJSON=function(a){var b=[];if(a.unParsed)return a.unParsed.text();var c=this._selected.length?this._selected[0].id:"",d=a.span.innerHTML;if(this._xescapeEntities)for(var e=0;e<this._serEnts.length;e++)d=d.replace(this._serEnts[e][2],this._serEnts[e][1]);this._xfullXML?b.push('{ "id":"'+a.id+'", '+(this._getOpenState(a)==1?' "open":"1", ':"")+(c==a.id?' "select":"1",':"")+' "text":"'+d+'", "im0":"'+a.images[0]+'", "im1":"'+a.images[1]+'", "im2":"'+a.images[2]+
+'" '+(a.acolor?', "aCol":"'+a.acolor+'" ':"")+(a.scolor?', "sCol":"'+a.scolor+'" ':"")+(a.checkstate==1?', "checked":"1" ':a.checkstate==2?', "checked":"-1"':"")+(a.closeable?', "closeable":"1" ':"")+(this.XMLsource&&a.XMLload==0?', "child":"1" ':"")):b.push('{ "id":"'+a.id+'", '+(this._getOpenState(a)==1?' "open":"1", ':"")+(c==a.id?' "select":"1",':"")+' "text":"'+d+'"'+(this.XMLsource&&a.XMLload==0?', "child":"1" ':""));if(this._xuserData&&a._userdatalist){b.push(', "userdata":[');for(var f=a._userdatalist.split(","),
+g=[],e=0;e<f.length;e++)g.push('{ "name":"'+f[e]+'" , "content":"'+a.userData["t_"+f[e]]+'" }');b.push(g.join(","));b.push("]")}if(a.childsCount){b.push(', "item":[');g=[];for(e=0;e<a.childsCount;e++)g.push(this._serializeItemJSON(a.childNodes[e]));b.push(g.join(","));b.push("]\n")}b.push("}\n");return b.join("")};
+function dhtmlXTreeFromHTML(a){typeof a!="object"&&(a=document.getElementById(a));for(var b=a,c=b.id,d="",e=0;e<a.childNodes.length;e++)if(a.childNodes[e].nodeType=="1"){if(a.childNodes[e].tagName=="XMP")for(var f=a.childNodes[e],g=0;g<f.childNodes.length;g++)d+=f.childNodes[g].data;else a.childNodes[e].tagName.toLowerCase()=="ul"&&(d=dhx_li2trees(a.childNodes[e],[],0));break}a.innerHTML="";var h=new dhtmlXTreeObject(a,"100%","100%",0),i=[];for(b in h)i[b.toLowerCase()]=b;for(var j=a.attributes,k=
+0;k<j.length;k++)if(j[k].name.indexOf("set")==0||j[k].name.indexOf("enable")==0){var m=j[k].name;h[m]||(m=i[j[k].name]);h[m].apply(h,j[k].value.split(","))}if(typeof d=="object"){h.XMLloadingWarning=1;for(var l=0;l<d.length;l++)b=h.insertNewItem(d[l][0],d[l][3],d[l][1]),d[l][2]&&h._setCheck(b,d[l][2]);h.XMLloadingWarning=0;h.lastLoadedXMLId=0;h._redrawFrom(h)}else h.loadXMLString("<tree id='0'>"+d+"</tree>");window[c]=h;var n=a.getAttribute("oninit");n&&eval(n);return h}
+function dhx_init_trees(){for(var a=document.getElementsByTagName("div"),b=0;b<a.length;b++)a[b].className=="dhtmlxTree"&&dhtmlXTreeFromHTML(a[b])}
+function dhx_li2trees(a,b,c){for(var d=0;d<a.childNodes.length;d++){var e=a.childNodes[d];if(e.nodeType==1&&e.tagName.toLowerCase()=="li"){for(var f="",g=null,h=e.getAttribute("checked"),i=0;i<e.childNodes.length;i++){var j=e.childNodes[i];j.nodeType==3?f+=j.data:j.tagName.toLowerCase()!="ul"?f+=dhx_outer_html(j):g=j}b[b.length]=[c,f,h,e.id||b.length+1];g&&(b=dhx_li2trees(g,b,e.id||b.length))}}return b}
+function dhx_outer_html(a){if(a.outerHTML)return a.outerHTML;var b=document.createElement("DIV");b.appendChild(a.cloneNode(!0));return b=b.innerHTML}window.addEventListener?window.addEventListener("load",dhx_init_trees,!1):window.attachEvent&&window.attachEvent("onload",dhx_init_trees);function dhtmlXWindowsSngl(){}function dhtmlXWindowsBtn(){}
+function dhtmlXWindows(){if(window.dhtmlXContainer){this.engine="dhx";var a="_"+this.engine+"_Engine";if(this[a]){this[a]();this._isIPad=navigator.userAgent.search(/iPad/gi)>=0;var b=this;this.pathPrefix="dhxwins_";this.imagePath=dhtmlx.image_path||"codebase/imgs/";this.setImagePath=function(a){this.imagePath=a};this.skin="dhx_skyblue";this.skinParams={dhx_black:{header_height:21,border_left_width:2,border_right_width:2,border_bottom_height:2},dhx_blue:{header_height:21,border_left_width:2,border_right_width:2,
+border_bottom_height:2},dhx_skyblue:{header_height:21,border_left_width:2,border_right_width:2,border_bottom_height:2}};this.setSkin=function(a){this.skin=a;this._engineRedrawSkin()};this.isWindow=function(a){var b=this.wins[a]!=null;return b};this.findByText=function(a){var b=[],c;for(c in this.wins)this.wins[c].getText().search(a,"gi")>=0&&(b[b.length]=this.wins[c]);return b};this.window=function(a){var b=null;this.wins[a]!=null&&(b=this.wins[a]);return b};this.forEachWindow=function(a){for(var b in this.wins)a(this.wins[b])};
+this.getBottommostWindow=function(){var a=this.getTopmostWindow(),b;for(b in this.wins)this.wins[b].zi<a.zi&&(a=this.wins[b]);return a.zi!=0?a:null};this.getTopmostWindow=function(a){var b={zi:0},c;for(c in this.wins)this.wins[c].zi>b.zi&&(a==!0&&!this._isWindowHidden(this.wins[c])&&(b=this.wins[c]),a!=!0&&(b=this.wins[c]));return b.zi!=0?b:null};this.wins={};for(var c in this.wins)delete this.wins[c];this.autoViewport=!0;this._createViewport=function(){this.vp=document.body;this.vp._css=String(this.vp.className).length>
+0?this.vp.className:"";this.vp.className+=" dhtmlx_skin_"+this.skin+(this._r?" dhx_wins_rtl":"");this.modalCoverI=document.createElement("IFRAME");this.modalCoverI.frameBorder="0";this.modalCoverI.className="dhx_modal_cover_ifr";this.modalCoverI.setAttribute("src","javascript:false;");this.modalCoverI.style.display="none";this.modalCoverI.style.zIndex=0;this.vp.appendChild(this.modalCoverI);this.modalCoverD=document.createElement("DIV");this.modalCoverD.className="dhx_modal_cover_dv";this.modalCoverD.style.display=
+"none";this.modalCoverD.style.zIndex=0;this.vp.appendChild(this.modalCoverD);this._vpcover=document.createElement("DIV");this._vpcover.className="dhx_content_vp_cover";this._vpcover.style.display="none";this.vp.appendChild(this._vpcover);this._carcass=document.createElement("DIV");this._carcass.className="dhx_carcass_resmove";this._carcass.style.display="none";if(_isIE)this._carcass.innerHTML="<iframe border=0 frameborder=0 style='filter: alpha(opacity=0); width: 100%; height:100%; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;'></iframe><div style='position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;'></div>",
+this._carcass.childNodes[0].setAttribute("src","javascript:false;");this._carcass.onselectstart=function(a){a=a||event;a.returnValue=!1};this.vp.appendChild(this._carcass)};this._autoResizeViewport=function(){for(var a in this.wins){if(this.wins[a]._isFullScreened)this.wins[a]._content.style.width=document.body.offsetWidth-(_isIE?4:0)+"px",this.wins[a]._content.style.height=document.body.offsetHeight==0?window.innerHeight?window.innerHeight+"px":document.body.scrollHeight+"px":document.body.offsetHeight-
+(_isIE?4:0)+"px",this.wins[a].layout!=null&&_isOpera&&this.wins[a].layout._fixCellsContentOpera950(),this.wins[a].updateNestedObjects();this.wins[a]._isMaximized&&this.wins[a].style.display!="none"&&(this._restoreWindow(this.wins[a]),this._maximizeWindow(this.wins[a]))}if(this.vp!=document.body&&this.autoViewport!=!1)for(a in this.vp.style.width=(_isIE?document.body.offsetWidth-4:window.innerWidth)+"px",this.vp.style.height=(_isIE?document.body.offsetHeight-4:window.innerHeight)+"px",this.wins){var b=
+this.wins[a],c=!1,g=!1;if(b.x>this.vp.offsetWidth-10)b.x=this.vp.offsetWidth-10,c=!0;var h=b._skinParams!=null?b._skinParams:this.skinParams[this.skin];if(b.y+h.header_height>this.vp.offsetHeight)b.y=this.vp.offsetHeight-h.header_height,g=!0;(c||g)&&this._engineRedrawWindowPos(b)}};this.enableAutoViewport=function(a){if(this.vp==document.body&&(this.autoViewport=a,a==!1))document.body.className=this.vp._css,this.vp=document.createElement("DIV"),this.vp.autocreated=!0,this.vp.className="dhtmlx_winviewport dhtmlx_skin_"+
+this.skin+(this._r?" dhx_wins_rtl":""),this.vp.style.left="0px",this.vp.style.top="0px",document.body.appendChild(this.vp),this.vp.ax=0,this.vp.ay=0,this._autoResizeViewport(),this.vp.appendChild(this.modalCoverI),this.vp.appendChild(this.modalCoverD),this.vp.appendChild(this._carcass)};this.attachViewportTo=function(a){if(this.autoViewport==!1)this.vp!=document.body&&this.vp.parentNode.removeChild(this.vp),this.vp=typeof a=="string"?document.getElementById(a):a,this.vp.autocreated=!1,this.vp.className+=
+" dhtmlx_skin_"+this.skin+(this._r?" dhx_wins_rtl":""),this.vp.style.position="relative",this.vp.style.overflow="hidden",this.vp.ax=0,this.vp.ay=0,this.vp.appendChild(this.modalCoverI),this.vp.appendChild(this.modalCoverD),this.vp.appendChild(this._carcass)};this.setViewport=function(a,b,c,g,h){if(this.autoViewport==!1)this.vp.style.left=a+"px",this.vp.style.top=b+"px",this.vp.style.width=c+"px",this.vp.style.height=g+"px",h!=null&&h.appendChild(this.vp),this.vp.ax=getAbsoluteLeft(this.vp),this.vp.ay=
+getAbsoluteTop(this.vp)};this._effects={move:!1,resize:!1};this.setEffect=function(a,b){this._effects[a]!=null&&typeof b=="boolean"&&(this._effects[a]=b)};this.getEffect=function(a){return this._effects[a]};this.createWindow=function(a,c,f,g,h){var i=document.createElement("DIV");i.className="dhtmlx_window_inactive";i.dir="ltr";for(var j in this.wins)this.wins[j].zi+=this.zIndexStep,this.wins[j].style.zIndex=this.wins[j].zi;i.zi=this.zIndexStep;i.style.zIndex=i.zi;i.active=!1;i._isWindow=!0;i.isWindow=
+!0;i.w=Number(g);i.h=Number(h);i.x=c;i.y=f;this._engineFixWindowPosInViewport(i);i._isModal=!1;i._allowResize=!0;i.maxW="auto";i.maxH="auto";i.minW=200;i.minH=140;i.iconsPresent=!0;i.icons=[this.imagePath+this.pathPrefix+this.skin+"/active/icon_normal.gif",this.imagePath+this.pathPrefix+this.skin+"/inactive/icon_normal.gif"];i._allowMove=!0;i._allowMoveGlobal=!0;i._allowResizeGlobal=!0;i._keepInViewport=!1;var k=this.skinParams[this.skin];i.idd=a;this.vp.appendChild(i);this._engineSetWindowBody(i);
+this._engineRedrawWindowPos(i);this._engineRedrawWindowSize(i);this._engineUpdateWindowIcon(i,i.icons[0]);this._engineDiableOnSelectInWindow(i,!0);this.wins[a]=i;dhtmlxEventable(i);this._engineGetWindowHeader(i)[this._isIPad?"ontouchstart":"onmousedown"]=function(a){var a=a||event,c=b.wins[this.idd];c.isOnTop()||c.bringToTop();if(!b._engineGetWindowHeaderState(c)&&b._engineCheckHeaderMouseDown(c,a)&&c._allowMove&&c._allowMoveGlobal){this._wasMoved=!1;c.moveOffsetX=c.x-(b._isIPad?a.touches[0].clientX:
+a.clientX);c.moveOffsetY=c.y-(b._isIPad?a.touches[0].clientY:a.clientY);b.movingWin=c;if(b._effects.move==!1)b._carcass.x=b.movingWin.x,b._carcass.y=b.movingWin.y,b._carcass.w=parseInt(b.movingWin.style.width)+(_isIE?0:-2),b._carcass.h=parseInt(b.movingWin.style.height)+(_isIE?0:-2),b._carcass.style.left=b._carcass.x+"px",b._carcass.style.top=b._carcass.y+"px",b._carcass.style.width=b._carcass.w+"px",b._carcass.style.height=b._carcass.h+"px",b._carcass.style.zIndex=b._getTopZIndex(!0)+1,b._carcass._keepInViewport=
+i._keepInViewport;b._blockSwitcher(!0);b._vpcover.style.zIndex=b.movingWin.style.zIndex-1;b._vpcover.style.display="";a.returnValue=!1;a.cancelBubble=!0;return!1}};this._engineGetWindowHeader(i).ondblclick=function(a){var c=b.wins[this.idd];if(b._engineCheckHeaderMouseDown(c,a||event))c._allowResizeGlobal&&!c._isParked&&(c._isMaximized==!0?b._restoreWindow(c):b._maximizeWindow(c))};i.setText=function(a){b._engineGetWindowLabel(this).innerHTML=a};i.getText=function(){return b._engineGetWindowLabel(this).innerHTML};
+i.getId=function(){return this.idd};i.show=function(){b._showWindow(this)};i.hide=function(){b._hideWindow(this)};i.minimize=function(){b._restoreWindow(this)};i.maximize=function(){b._maximizeWindow(this)};i.close=function(){b._closeWindow(this)};i.park=function(){this._isParkedAllowed&&b._parkWindow(this)};i.stick=function(){b._stickWindow(this)};i.unstick=function(){b._unstickWindow(this)};i.isSticked=function(){return this._isSticked};i.setIcon=function(a,c){b._setWindowIcon(i,a,c)};i.getIcon=
+function(){return b._getWindowIcon(this)};i.clearIcon=function(){b._clearWindowIcons(this)};i.restoreIcon=function(){b._restoreWindowIcons(this)};i.keepInViewport=function(a){this._keepInViewport=a};i.setModal=function(a){a==!0?b.modalWin!=null||b.modalWin==this||b._setWindowModal(this,!0):b.modalWin==this&&b._setWindowModal(this,!1)};i.isModal=function(){return this._isModal};i.isHidden=function(){return b._isWindowHidden(this)};i.isMaximized=function(){return this._isMaximized};i.isParked=function(){return this._isParked};
+i.allowPark=function(){b._allowParking(this)};i.denyPark=function(){b._denyParking(this)};i.isParkable=function(){return this._isParkedAllowed};i.allowResize=function(){b._allowReszieGlob(this)};i.denyResize=function(){b._denyResize(this)};i.isResizable=function(){return this._allowResizeGlobal};i.allowMove=function(){if(!this._isMaximized)this._allowMove=!0;this._allowMoveGlobal=!0};i.denyMove=function(){this._allowMoveGlobal=!1};i.isMovable=function(){return this._allowMoveGlobal};i.bringToTop=
+function(){b._bringOnTop(this);b._makeActive(this)};i.bringToBottom=function(){b._bringOnBottom(this)};i.isOnTop=function(){return b._isWindowOnTop(this)};i.isOnBottom=function(){return b._isWindowOnBottom(this)};i.setPosition=function(a,c){this.x=a;this.y=c;b._engineFixWindowPosInViewport(this);b._engineRedrawWindowPos(this)};i.getPosition=function(){return[this.x,this.y]};i.setDimension=function(a,c){if(a!=null){if(this.maxW!="auto"&&a>this.maxW)a=this.maxW;if(a<this.minW)a=this.minW;this.w=a}if(c!=
+null){if(this.maxH!="auto"&&c>this.maxH)c=this.maxH;if(c<this.minH)c=this.minH;this.h=c}b._fixWindowDimensionInViewport(this);b._engineFixWindowPosInViewport(this);b._engineRedrawWindowSize(this);this.updateNestedObjects()};i.getDimension=function(){return[this.w,this.h]};i.setMaxDimension=function(a,c){this.maxW=isNaN(a)?"auto":a;this.maxH=isNaN(c)?"auto":c;b._engineRedrawWindowSize(this)};i.getMaxDimension=function(){return[this.maxW,this.maxH]};i.setMinDimension=function(a,c){if(a!=null)this.minW=
+a;if(c!=null)this.minH=c;b._fixWindowDimensionInViewport(this);b._engineRedrawWindowPos(this)};i.getMinDimension=function(){return[this.minW,this.minH]};i._adjustToContent=function(a,c){b._engineAdjustWindowToContent(this,a,c)};i._doOnAttachMenu=function(){b._engineRedrawWindowSize(this);this.updateNestedObjects()};i._doOnAttachToolbar=function(){b._engineRedrawWindowSize(this);this.updateNestedObjects()};i._doOnAttachStatusBar=function(){b._engineRedrawWindowSize(this);this.updateNestedObjects()};
+i._doOnFrameMouseDown=function(){this.bringToTop()};i._doOnFrameContentLoaded=function(){b.callEvent("onContentLoaded",[this])};i.addUserButton=function(a,c,d,e){var f=b._addUserButton(this,a,c,d,e);return f};i.removeUserButton=function(a){a=="minmax1"||a=="minmax2"||a=="park"||a=="close"||a=="stick"||a=="unstick"||a=="help"||btn!=null&&b._removeUserButton(this,a)};i.progressOn=function(){b._engineSwitchWindowProgress(this,!0)};i.progressOff=function(){b._engineSwitchWindowProgress(this,!1)};i.setToFullScreen=
+function(a){b._setWindowToFullScreen(this,a)};i.showHeader=function(){b._engineSwitchWindowHeader(this,!0)};i.hideHeader=function(){b._engineSwitchWindowHeader(this,!1)};i.progressOff();i.canStartResize=!1;i.onmousemove=function(a){if(_isIE&&this._isMaximized)return!0;var a=a||event,c=a.target||a.srcElement;String(c.className).search("dhtmlx_wins_resizer")<0&&(c=null);if(!this._allowResize||this._allowResizeGlobal==!1||!c){if(c&&c.style.cursor!="default")c.style.cursor="default";if(this.style.cursor!=
+"default")this.style.cursor="default";this.canStartResize=!1;return!0}if(b.resizingWin==null&&b.movingWin==null&&!this._isParked){if(b._isIPad)var d=a.touches[0].clientX,e=a.touches[0].clientY;else d=_isIE||_isOpera?a.offsetX:a.layerX,e=_isIE||_isOpera?a.offsetY:a.layerY;var f=b._engineAllowWindowResize(i,c,d,e);if(f==null){this.canStartResize=!1;if(c.style.cursor!="default")c.style.cursor="default";if(this.style.cursor!="default")this.style.cursor="default"}else{b.resizingDirs=f;var g={x:a.clientX,
+y:a.clientY};switch(b.resizingDirs){case "border_left":c.style.cursor="w-resize";this.resizeOffsetX=this.x-g.x;break;case "border_right":c.style.cursor="e-resize";this.resizeOffsetXW=this.x+this.w-g.x;break;case "border_top":c.style.cursor="n-resize";this.resizeOffsetY=this.y-g.y;break;case "border_bottom":c.style.cursor="n-resize";this.resizeOffsetYH=this.y+this.h-g.y;break;case "corner_left":c.style.cursor="sw-resize";this.resizeOffsetX=this.x-a.clientX;this.resizeOffsetYH=this.y+this.h-g.y;break;
+case "corner_up_left":c.style.cursor="nw-resize";this.resizeOffsetY=this.y-g.y;this.resizeOffsetX=this.x-g.x;break;case "corner_right":c.style.cursor="nw-resize";this.resizeOffsetXW=this.x+this.w-g.x;this.resizeOffsetYH=this.y+this.h-g.y;break;case "corner_up_right":c.style.cursor="sw-resize",this.resizeOffsetY=this.y-g.y,this.resizeOffsetXW=this.x+this.w-g.x}this.canStartResize=!0;this.style.cursor=c.style.cursor;a.cancelBubble=!0;return a.returnValue=!1}}};i.onmousedown=function(a){b._getActive()!=
+this&&b._makeActive(this);b._bringOnTop(this);if(this.canStartResize){b._blockSwitcher(!0);b.resizingWin=this;if(!b._effects.resize)b._carcass.x=b.resizingWin.x,b._carcass.y=b.resizingWin.y,b._carcass.w=Number(b.resizingWin.w)+(_isIE?0:-2),b._carcass.h=Number(b.resizingWin.h)+(_isIE?0:-2),b._carcass.style.left=b._carcass.x+"px",b._carcass.style.top=b._carcass.y+"px",b._carcass.style.width=b._carcass.w+"px",b._carcass.style.height=b._carcass.h+"px",b._carcass.style.zIndex=b._getTopZIndex(!0)+1,b._carcass.style.cursor=
+this.style.cursor,b._carcass._keepInViewport=this._keepInViewport,b._carcass.style.display="";b._vpcover.style.zIndex=b.resizingWin.style.zIndex-1;b._vpcover.style.display="";this.layout&&this.callEvent("_onBeforeTryResize",[this]);a=a||event}};this._addDefaultButtons(i);i.button=function(a){var b=null;this.btns[a]!=null&&(b=this.btns[a]);return b};i.center=function(){b._centerWindow(this,!1)};i.centerOnScreen=function(){b._centerWindow(this,!0)};i._attachContent("empty",null);i._redraw=function(){b._engineRedrawWindowSize(this)};
+i.bringToTop();this._engineRedrawWindowSize(i);return this.wins[a]};this.zIndexStep=50;this._getTopZIndex=function(a){var b=0,c;for(c in this.wins)if(a==!0){if(this.wins[c].zi>b)b=this.wins[c].zi}else if(this.wins[c].zi>b&&!this.wins[c]._isSticked)b=this.wins[c].zi;return b};this.movingWin=null;this._moveWindow=function(a){if(this.movingWin!=null){if(!this.movingWin._allowMove||!this.movingWin._allowMoveGlobal)return;if(this._effects.move==!0){if(this._engineGetWindowHeader(this.movingWin).style.cursor!=
+"move")this._engineGetWindowHeader(this.movingWin).style.cursor="move";this._wasMoved=!0;this.movingWin.x=(this._isIPad?a.touches[0].clientX:a.clientX)+this.movingWin.moveOffsetX;this.movingWin.y=(this._isIPad?a.touches[0].clientY:a.clientY)+this.movingWin.moveOffsetY;this._engineFixWindowPosInViewport(this.movingWin);this._engineRedrawWindowPos(this.movingWin)}else{if(this._carcass.style.display!="")this._carcass.style.display="";if(this._carcass.style.cursor!="move")this._carcass.style.cursor="move";
+if(this._engineGetWindowHeader(this.movingWin).style.cursor!="move")this._engineGetWindowHeader(this.movingWin).style.cursor="move";this._carcass.x=(this._isIPad?a.touches[0].clientX:a.clientX)+this.movingWin.moveOffsetX;this._carcass.y=(this._isIPad?a.touches[0].clientY:a.clientY)+this.movingWin.moveOffsetY;this._engineFixWindowPosInViewport(this._carcass);this._carcass.style.left=this._carcass.x+"px";this._carcass.style.top=this._carcass.y+"px"}}if(this.resizingWin!=null&&this.resizingWin._allowResize){var b=
+{x:a.clientX,y:a.clientY};if(this.resizingDirs=="border_left"||this.resizingDirs=="corner_left"||this.resizingDirs=="corner_up_left")if(this._effects.resize){var c=b.x+this.resizingWin.resizeOffsetX,g=c>this.resizingWin.x?-1:1;newW=this.resizingWin.w+Math.abs(c-this.resizingWin.x)*g;newW<this.resizingWin.minW&&g<0?(this.resizingWin.x=this.resizingWin.x+this.resizingWin.w-this.resizingWin.minW,this.resizingWin.w=this.resizingWin.minW):(this.resizingWin.w=newW,this.resizingWin.x=c);this._engineRedrawWindowPos(this.resizingWin);
+this._engineRedrawWindowSize(this.resizingWin)}else{c=b.x+this.resizingWin.resizeOffsetX;g=c>this._carcass.x?-1:1;newW=this._carcass.w+Math.abs(c-this._carcass.x)*g;if(newW>this.resizingWin.maxW)newW=this.resizingWin.maxW,c=this._carcass.x+this._carcass.w-this.resizingWin.maxW;newW<this.resizingWin.minW&&g<0?(this._carcass.x=this._carcass.x+this._carcass.w-this.resizingWin.minW,this._carcass.w=this.resizingWin.minW):(this._carcass.w=newW,this._carcass.x=c);this._carcass.style.left=this._carcass.x+
+"px";this._carcass.style.width=this._carcass.w+"px"}if(this.resizingDirs=="border_right"||this.resizingDirs=="corner_right"||this.resizingDirs=="corner_up_right")if(this._effects.resize){c=b.x-(this.resizingWin.x+this.resizingWin.w)+this.resizingWin.resizeOffsetXW;newW=this.resizingWin.w+c;if(newW<this.resizingWin.minW)newW=this.resizingWin.minW;this.resizingWin.w=newW;this._engineRedrawWindowPos(this.resizingWin);this._engineRedrawWindowSize(this.resizingWin)}else{c=b.x-(this._carcass.x+this._carcass.w)+
+this.resizingWin.resizeOffsetXW;newW=this._carcass.w+c;if(newW<this.resizingWin.minW)newW=this.resizingWin.minW;if(this.resizingWin.maxW!="auto"&&newW>this.resizingWin.maxW)newW=this.resizingWin.maxW;this._carcass.w=newW;this._carcass.style.width=this._carcass.w+"px"}if(this.resizingDirs=="border_bottom"||this.resizingDirs=="corner_left"||this.resizingDirs=="corner_right")if(this._effects.resize){c=b.y-(this.resizingWin.y+this.resizingWin.h)+this.resizingWin.resizeOffsetYH;newH=this.resizingWin.h+
+c;if(newH<this.resizingWin.minH)newH=this.resizingWin.minH;this.resizingWin.h=newH;this._engineRedrawWindowPos(this.resizingWin);this._engineRedrawWindowSize(this.resizingWin)}else{c=b.y-(this._carcass.y+this._carcass.h)+this.resizingWin.resizeOffsetYH;newH=this._carcass.h+c;if(newH<this.resizingWin.minH)newH=this.resizingWin.minH;if(newH>this.resizingWin.maxH)newH=this.resizingWin.maxH;this._carcass.h=newH;this._carcass.style.height=this._carcass.h+"px"}if((this.resizingDirs=="border_top"||this.resizingDirs==
+"corner_up_right"||this.resizingDirs=="corner_up_left")&&!this._effects.resize){c=b.y+this.resizingWin.resizeOffsetY;g=c>this.resizingWin.y?-1:1;newH=this.resizingWin.h+Math.abs(c-this.resizingWin.y)*g;if(newH>this.resizingWin.maxH)newH=this.resizingWin.maxH,c=this.resizingWin.y+this.resizingWin.h-this.resizingWin.maxH;newH<this.resizingWin.minH&&g<0?(this._carcass.y=this._carcass.y+this._carcass.h-this.resizingWin.minH,this._carcass.h=this.resizingWin.minH):(this._carcass.h=newH+(_isIE?0:-2),this._carcass.y=
+c);this._carcass.style.top=this._carcass.y+"px";this._carcass.style.height=this._carcass.h+"px"}}};this._stopMove=function(){if(this.movingWin!=null){if(this._effects.move){var a=this.movingWin;this.movingWin=null;this._blockSwitcher(!1);this._engineGetWindowHeader(a).style.cursor="";_isFF&&(a.h++,b._engineRedrawWindowPos(a),a.h--,b._engineRedrawWindowPos(a))}else this._carcass.style.cursor="",this._carcass.style.display="none",a=this.movingWin,this._engineGetWindowHeader(a).style.cursor="",this.movingWin=
+null,this._blockSwitcher(!1),a.setPosition(parseInt(this._carcass.style.left),parseInt(this._carcass.style.top));this._vpcover.style.display="none";this._wasMoved&&(a.checkEvent("onMoveFinish")?a.callEvent("onMoveFinish",[a]):this.callEvent("onMoveFinish",[a]));this._wasMoved=!1}if(this.resizingWin!=null)a=this.resizingWin,this.resizingWin=null,this._blockSwitcher(!1),this._effects.resize?a.updateNestedObjects():(this._carcass.style.display="none",a.setDimension(this._carcass.w+(_isIE?0:2),this._carcass.h+
+(_isIE?0:2)),a.setPosition(this._carcass.x,this._carcass.y)),a.vs[a.av].layout&&a.vs[a.av].layout.callEvent("onResize",[]),this._vpcover.style.display="none",a.checkEvent("onResizeFinish")?a.callEvent("onResizeFinish",[a]):this.callEvent("onResizeFinish",[a])};this._fixWindowDimensionInViewport=function(a){if(a.w<a.minW)a.w=a.minW;if(!a._isParked&&a.h<a.minH)a.h=a.minH};this._bringOnTop=function(a){var b=a.zi,c=this._getTopZIndex(a._isSticked),g;for(g in this.wins)if(this.wins[g]!=a&&(a._isSticked||
+!a._isSticked&&!this.wins[g]._isSticked)&&this.wins[g].zi>b)this.wins[g].zi-=this.zIndexStep,this.wins[g].style.zIndex=this.wins[g].zi;a.zi=c;a.style.zIndex=a.zi};this._makeActive=function(a,b){for(var c in this.wins)if(this.wins[c]==a){var g=!1;this.wins[c].className!="dhtmlx_window_active"&&!b&&(g=!0);this.wins[c].className="dhtmlx_window_active";this._engineUpdateWindowIcon(this.wins[c],this.wins[c].icons[0]);g==!0&&(a.checkEvent("onFocus")?a.callEvent("onFocus",[a]):this.callEvent("onFocus",[a]))}else this.wins[c].className=
+"dhtmlx_window_inactive",this._engineUpdateWindowIcon(this.wins[c],this.wins[c].icons[1])};this._getActive=function(){var a=null,b;for(b in this.wins)this.wins[b].className=="dhtmlx_window_active"&&(a=this.wins[b]);return a};this._centerWindow=function(a,b){if(a._isMaximized!=!0){if(b==!0)var c=_isIE?document.body.offsetWidth:window.innerWidth,g=_isIE?document.body.offsetHeight:window.innerHeight;else c=this.vp==document.body?document.body.offsetWidth:Number(parseInt(this.vp.style.width))&&String(this.vp.style.width).search("%")==
+-1?parseInt(this.vp.style.width):this.vp.offsetWidth,g=this.vp==document.body?document.body.offsetHeight:Number(parseInt(this.vp.style.height))&&String(this.vp.style.height).search("%")==-1?parseInt(this.vp.style.height):this.vp.offsetHeight;var h=Math.round(c/2-a.w/2),i=Math.round(g/2-a.h/2);a.x=h;a.y=i;this._engineFixWindowPosInViewport(a);this._engineRedrawWindowPos(a)}};this._addDefaultButtons=function(a){var c=this._engineGetWindowButton(a,"stick");c.title=this.i18n.stick;c.isVisible=!1;c.style.display=
+"none";c._isEnabled=!0;c.isPressed=!1;c.label="stick";c._doOnClick=function(){this.isPressed=!0;b._stickWindow(a)};var f=this._engineGetWindowButton(a,"sticked");f.title=this.i18n.unstick;f.isVisible=!1;f.style.display="none";f._isEnabled=!0;f.isPressed=!1;f.label="sticked";f._doOnClick=function(){this.isPressed=!1;b._unstickWindow(a)};var g=this._engineGetWindowButton(a,"help");g.title=this.i18n.help;g.isVisible=!1;g.style.display="none";g._isEnabled=!0;g.isPressed=!1;g.label="help";g._doOnClick=
+function(){b._needHelp(a)};var h=this._engineGetWindowButton(a,"park");h.titleIfParked=this.i18n.parkdown;h.titleIfNotParked=this.i18n.parkup;h.title=h.titleIfNotParked;h.isVisible=!0;h._isEnabled=!0;h.isPressed=!1;h.label="park";h._doOnClick=function(){b._parkWindow(a)};var i=this._engineGetWindowButton(a,"minmax1");i.title=this.i18n.maximize;i.isVisible=!0;i._isEnabled=!0;i.isPressed=!1;i.label="minmax1";i._doOnClick=function(){b._maximizeWindow(a)};var j=this._engineGetWindowButton(a,"minmax2");
+j.title=this.i18n.restore;j.isVisible=!1;j.style.display="none";j._isEnabled=!0;j.isPressed=!1;j.label="minmax2";j._doOnClick=function(){b._restoreWindow(a)};var k=this._engineGetWindowButton(a,"close");k.title=this.i18n.close;k.isVisible=!0;k._isEnabled=!0;k.isPressed=!1;k.label="close";k._doOnClick=function(){b._closeWindow(a)};var m=this._engineGetWindowButton(a,"dock");m.title=this.i18n.dock;m.style.display="none";m.isVisible=!1;m._isEnabled=!0;m.isPressed=!1;m.label="dock";m._doOnClick=function(){};
+a._isSticked=!1;a._isParked=!1;a._isParkedAllowed=!0;a._isMaximized=!1;a._isDocked=!1;a.btns={};a.btns.stick=c;a.btns.sticked=f;a.btns.help=g;a.btns.park=h;a.btns.minmax1=i;a.btns.minmax2=j;a.btns.close=k;a.btns.dock=m;for(var l in a.btns)this._attachEventsOnButton(a,a.btns[l])};this._attachEventsOnButton=function(a,c){this._isIPad?(c.ontouchstart=function(a){a.cancelBubble=!0;return a.returnValue=!1},c.ontouchend=function(b){b.cancelBubble=!0;b.returnValue=!1;if(!this._isEnabled)return!1;this.checkEvent("onClick")?
+this.callEvent("onClick",[a,this]):this._doOnClick();return!1}):(c.onmouseover=function(){this.className=this._isEnabled?"dhtmlx_wins_btns_button dhtmlx_button_"+this.label+"_over_"+(this.isPressed?"pressed":"default"):"dhtmlx_wins_btns_button dhtmlx_button_"+this.label+"_disabled"},c.onmouseout=function(){this._isEnabled?(this.isPressed=!1,this.className="dhtmlx_wins_btns_button dhtmlx_button_"+this.label+"_default"):this.className="dhtmlx_wins_btns_button dhtmlx_button_"+this.label+"_disabled"},
+c.onmousedown=function(){this._isEnabled?(this.isPressed=!0,this.className="dhtmlx_wins_btns_button dhtmlx_button_"+this.label+"_over_pressed"):this.className="dhtmlx_wins_btns_button dhtmlx_button_"+this.label+"_disabled"},c.onmouseup=function(){if(this._isEnabled){var b=this.isPressed;this.isPressed=!1;this.className="dhtmlx_wins_btns_button dhtmlx_button_"+this.label+"_over_default";b&&(this.checkEvent("onClick")?this.callEvent("onClick",[a,this]):this._doOnClick())}else this.className="dhtmlx_wins_btns_button dhtmlx_button_"+
+this.label+"_disabled"});c.show=function(){b._showButton(a,this.label)};c.hide=function(){b._hideButton(a,this.label)};c.enable=function(){b._enableButton(a,this.label)};c.disable=function(){b._disableButton(a,this.label)};c.isEnabled=function(){return this._isEnabled};c.isHidden=function(){return!this.isVisible};dhtmlxEventable(c)};this._parkWindow=function(a,b){if(a._isParkedAllowed||b)if(!this.enableParkEffect||!a.parkBusy)if(a._isParked)this.enableParkEffect&&!b?(a.parkBusy=!0,this._doParkDown(a)):
+(a.h=a.lastParkH,this._engineRedrawWindowSize(a),this._engineDoOnWindowParkDown(a),a.updateNestedObjects(),a.btns.park.title=a.btns.park.titleIfNotParked,a._allowResizeGlobal==!0&&(this._enableButton(a,"minmax1"),this._enableButton(a,"minmax2")),a._isParked=!1,b||(a.checkEvent("onParkDown")?a.callEvent("onParkDown",[a]):this.callEvent("onParkDown",[a])));else if(this.enableParkEffect&&!b)if(a.lastParkH=String(a.h).search(/\%$/)==-1?a.h:a.offsetHeight,a._allowResizeGlobal==!0&&(this._disableButton(a,
+"minmax1"),this._disableButton(a,"minmax2")),this.enableParkEffect)a.parkBusy=!0,this._doParkUp(a);else{var c=a._skinParams!=null?a._skinParams:this.skinParams[this.skin];a.h=c.header_height+c.border_bottom_height;a.btns.park.title=a.btns.park.titleIfParked}else a.lastParkH=String(a.h).search(/\%$/)==-1?a.h:a.offsetHeight,a.h=this._engineGetWindowParkedHeight(a),this._engineRedrawWindowSize(a),this._engineDoOnWindowParkUp(a),a.btns.park.title=a.btns.park.titleIfParked,a._isParked=!0,b||(a.checkEvent("onParkUp")?
+a.callEvent("onParkUp",[a]):this.callEvent("onParkUp",[a]))};this._allowParking=function(a){a._isParkedAllowed=!0;this._enableButton(a,"park")};this._denyParking=function(a){a._isParkedAllowed=!1;this._disableButton(a,"park")};this.enableParkEffect=!1;this.parkSpeed=this.parkStartSpeed=80;this.parkTM=null;this.parkTMTime=5;this._doParkUp=function(a){if(String(a.h).search(/\%$/)!=-1)a.h=a.offsetHeight;a.h-=this.parkSpeed;var c=this._engineGetWindowParkedHeight(a);a.h<=c?(a.h=c,this._engineGetWindowButton(a,
+"park").title=this._engineGetWindowButton(a,"park").titleIfParked,a._isParked=!0,a.parkBusy=!1,this._engineRedrawWindowSize(a),this._engineDoOnWindowParkUp(a),a.checkEvent("onParkUp")?a.callEvent("onParkUp",[a]):this.callEvent("onParkUp",[a])):(this._engineRedrawWindowSize(a),this.parkTM=window.setTimeout(function(){b._doParkUp(a)},this.parkTMTime))};this._doParkDown=function(a){a.h+=this.parkSpeed;a.h>=a.lastParkH?(a.h=a.lastParkH,this._engineGetWindowButton(a,"park").title=this._engineGetWindowButton(a,
+"park").titleIfNotParked,a._allowResizeGlobal==!0&&(this._enableButton(a,"minmax1"),this._enableButton(a,"minmax2")),a._isParked=!1,a.parkBusy=!1,this._engineRedrawWindowSize(a),a.updateNestedObjects(),this._engineDoOnWindowParkDown(a),a.checkEvent("onParkDown")?a.callEvent("onParkDown",[a]):this.callEvent("onParkDown",[a])):(this._engineRedrawWindowSize(a),this.parkTM=window.setTimeout(function(){b._doParkDown(a)},this.parkTMTime))};this._enableButton=function(a,b){var c=this._engineGetWindowButton(a,
+b);if(c)c._isEnabled=!0,c.className="dhtmlx_wins_btns_button dhtmlx_button_"+c.label+"_default"};this._disableButton=function(a,b){var c=this._engineGetWindowButton(a,b);if(c)c._isEnabled=!1,c.className="dhtmlx_wins_btns_button dhtmlx_button_"+a.btns[b].label+"_disabled"};this._allowReszieGlob=function(a){a._allowResizeGlobal=!0;this._enableButton(a,"minmax1");this._enableButton(a,"minmax2")};this._denyResize=function(a){a._allowResizeGlobal=!1;this._disableButton(a,"minmax1");this._disableButton(a,
+"minmax2")};this._maximizeWindow=function(a){if(a._allowResizeGlobal!=!1){var b=a._isParked;b&&this._parkWindow(a,!0);a.lastMaximizeX=a.x;a.lastMaximizeY=a.y;a.lastMaximizeW=a.w;a.lastMaximizeH=a.h;a.maxW!="auto"&&a.maxW!="auto"?(a.x=Math.round(a.x+(a.w-a.maxW)/2),a.y=Math.round(a.y+(a.h-a.maxH)/2),a._allowMove=!0):(a.x=0,a.y=0,a._allowMove=!1);a._isMaximized=!0;a._allowResize=!1;a.w=a.maxW=="auto"?this.vp==document.body?"100%":this.vp.style.width!=""&&String(this.vp.style.width).search("%")==-1?
+parseInt(this.vp.style.width):this.vp.offsetWidth:a.maxW;a.h=a.maxH=="auto"?this.vp==document.body?"100%":this.vp.style.height!=""&&String(this.vp.style.width).search("%")==-1?parseInt(this.vp.style.height):this.vp.offsetHeight:a.maxH;this._hideButton(a,"minmax1");this._showButton(a,"minmax2");this._engineRedrawWindowPos(a);b?this._parkWindow(a,!0):(this._engineRedrawWindowSize(a),a.updateNestedObjects());a.checkEvent("onMaximize")?a.callEvent("onMaximize",[a]):this.callEvent("onMaximize",[a])}};
+this._restoreWindow=function(a){if(a._allowResizeGlobal!=!1){a.layout&&a.layout._defineWindowMinDimension(a);var b=a._isParked;b&&this._parkWindow(a,!0);a.maxW!="auto"&&a.maxW!="auto"?(a.x=Math.round(a.x+(a.w-a.lastMaximizeW)/2),a.y=Math.round(a.y+(a.h-a.lastMaximizeH)/2)):(a.x=a.lastMaximizeX,a.y=a.lastMaximizeY);a.w=a.lastMaximizeW;a.h=a.lastMaximizeH;a._isMaximized=!1;a._allowMove=a._allowMoveGlobal;a._allowResize=!0;this._fixWindowDimensionInViewport(a);this._hideButton(a,"minmax2");this._showButton(a,
+"minmax1");this._engineRedrawWindowPos(a);b?this._parkWindow(a,!0):(this._engineRedrawWindowSize(a),a.updateNestedObjects());a.checkEvent("onMinimize")?a.callEvent("onMinimize",[a]):this.callEvent("onMinimize",[a])}};this._showButton=function(a,b){var c=this._engineGetWindowButton(a,b);if(c)c.isVisible=!0,c.style.display="",c.style.visibility="visible",this._engineRedrawWindowTitle(a)};this._hideButton=function(a,b){var c=this._engineGetWindowButton(a,b);if(c)c.isVisible=!1,c.style.display="none",
+c.style.visibility="hidden",this._engineRedrawWindowTitle(a)};this._showWindow=function(a){a.style.display="";a.checkEvent("onShow")?a.callEvent("onShow",[a]):this.callEvent("onShow",[a]);var b=this._getActive();b==null?(this._bringOnTop(a),this._makeActive(a)):this._isWindowHidden(b)&&(this._bringOnTop(a),this._makeActive(a))};this._hideWindow=function(a){a.style.display="none";a.checkEvent("onHide")?a.callEvent("onHide",[a]):this.callEvent("onHide",[a]);var b=this.getTopmostWindow(!0);b!=null&&
+(this._bringOnTop(b),this._makeActive(b))};this._isWindowHidden=function(a){var b=a.style.display=="none";return b};this._closeWindow=function(a){if(this._focusFixIE)this._focusFixIE.style.top=(this.vp==document.body?0:getAbsoluteTop(this.vp))+a.y+"px",this._focusFixIE.focus();if(a.checkEvent("onClose")){if(!a.callEvent("onClose",[a]))return}else if(!this.callEvent("onClose",[a]))return;this._removeWindowGlobal(a);var b={zi:0},c;for(c in this.wins)this.wins[c].zi>b.zi&&(b=this.wins[c]);b!=null&&this._makeActive(b)};
+this._needHelp=function(a){a.checkEvent("onHelp")?a.callEvent("onHelp",[a]):this.callEvent("onHelp",[a])};this._setWindowIcon=function(a,b,c){a.iconsPresent=!0;a.icons[0]=this.imagePath+b;a.icons[1]=this.imagePath+c;this._engineUpdateWindowIcon(a,a.icons[a.isOnTop()?0:1])};this._getWindowIcon=function(a){return a.iconsPresent?[a.icons[0],a.icons[1]]:[null,null]};this._clearWindowIcons=function(a){a.iconsPresent=!1;a.icons[0]=this.imagePath+this.pathPrefix+this.skin+"/active/icon_blank.gif";a.icons[1]=
+this.imagePath+this.pathPrefix+this.skin+"/inactive/icon_blank.gif";this._engineUpdateWindowIcon(a,a.icons[a.isOnTop()?0:1])};this._restoreWindowIcons=function(a){a.iconsPresent=!0;a.icons[0]=this.imagePath+this.pathPrefix+this.skin+"/active/icon_normal.gif";a.icons[1]=this.imagePath+this.pathPrefix+this.skin+"/inactive/icon_normal.gif";this._engineUpdateWindowIcon(a,a.icons[a.className=="dhtmlx_window_active"?0:1])};this._attachWindowContentTo=function(a,b,c,g){var h=this._engineGetWindowContent(a).parentNode;
+h.parentNode.removeChild(h);a.hide();h.style.left="0px";h.style.top="0px";h.style.width=(c!=null?c:b.offsetWidth)+"px";h.style.height=(g!=null?g:b.offsetHeight)+"px";h.style.position="relative";b.appendChild(h);this._engineGetWindowContent(a).style.width=h.style.width;this._engineGetWindowContent(a).style.height=h.style.height};this._setWindowToFullScreen=function(a,b){if(b==!0){var c=a._content;c.parentNode.removeChild(c);a.hide();a._isFullScreened=!0;c.style.left="0px";c.style.top="0px";c.style.width=
+document.body.offsetWidth-(_isIE?4:0)+"px";c.style.height=document.body.offsetHeight==0?window.innerHeight?window.innerHeight+"px":document.body.scrollHeight+"px":document.body.offsetHeight-(_isIE?4:0)+"px";c.style.position="absolute";document.body.appendChild(c)}else if(b==!1){var c=a.childNodes[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1],g=a._content;document.body.removeChild(g);c.appendChild(g);a._isFullScreened=!1;a.setDimension(a.w,a.h);
+a.show();a.bringToTop();a.center()}a.updateNestedObjects()};this._isWindowOnTop=function(a){var b=this.getTopmostWindow()==a;return b};this._bringOnBottom=function(a){for(var b in this.wins)if(this.wins[b].zi<a.zi)this.wins[b].zi+=this.zIndexStep,this.wins[b].style.zIndex=this.wins[b].zi;a.zi=50;a.style.zIndex=a.zi;this._makeActive(this.getTopmostWindow())};this._isWindowOnBottom=function(a){var b=!0,c;for(c in this.wins)this.wins[c]!=a&&(b=b&&this.wins[c].zi>a.zi);return b};this._stickWindow=function(a){a._isSticked=
+!0;this._hideButton(a,"stick");this._showButton(a,"sticked");this._bringOnTop(a)};this._unstickWindow=function(a){a._isSticked=!1;this._hideButton(a,"sticked");this._showButton(a,"stick");this._bringOnTopAnyStickedWindows()};this._addUserButton=function(a,b,c,g){var h=this._engineAddUserButton(a,b,c);h.title=g;h.isVisible=!0;h._isEnabled=!0;h.isPressed=!1;h.label=b;a.btns[b]=h;h._doOnClick=function(){};this._attachEventsOnButton(a,h)};this._removeUserButton=function(a,b){this._removeButtonGlobal(a,
+b)};this._blockSwitcher=function(a){for(var b in this.wins)a==!0?this.wins[b].showCoverBlocker():this.wins[b].hideCoverBlocker()};this.modalWin=this.resizingWin=null;this.resizingDirs="none";if(_isIE)this._focusFixIE=document.createElement("INPUT"),this._focusFixIE.className="dhx_windows_ieonclosefocusfix",this._focusFixIE.style.position="absolute",this._focusFixIE.style.width="1px",this._focusFixIE.style.height="1px",this._focusFixIE.style.border="none",this._focusFixIE.style.background="none",this._focusFixIE.style.left=
+"-10px",this._focusFixIE.style.fontSize="1px",document.body.appendChild(this._focusFixIE);this._createViewport();this._doOnMouseUp=function(){b!=null&&b._stopMove()};this._doOnMoseMove=function(a){a=a||event;b!=null&&b._moveWindow(a)};this._resizeTM=null;this._resizeTMTime=200;this._lw=null;this._doOnResize=function(){if(b._lw!=document.documentElement.clientHeight)window.clearTimeout(b._resizeTM),b._resizeTM=window.setTimeout(function(){b._autoResizeViewport()},b._resizeTMTime);b._lw=document.documentElement.clientHeight};
+this._doOnUnload=function(){b.unload()};this._doOnSelectStart=function(a){a=a||event;if(b.movingWin!=null||b.resizingWin!=null)a.returnValue=!1};_isIE&&document.body.attachEvent("onselectstart",this._doOnSelectStart);dhtmlxEvent(window,"resize",this._doOnResize);dhtmlxEvent(document.body,"unload",this._doOnUnload);this._isIPad?(document.addEventListener("touchmove",this._doOnMoseMove,!1),document.addEventListener("touchend",this._doOnMouseUp,!1)):(dhtmlxEvent(document.body,"mouseup",this._doOnMouseUp),
+dhtmlxEvent(this.vp,"mousemove",this._doOnMoseMove),dhtmlxEvent(this.vp,"mouseup",this._doOnMouseUp));this._setWindowModal=function(a,b){b==!0?(this._makeActive(a),this._bringOnTop(a),this.modalWin=a,a._isModal=!0,this.modalCoverI.style.zIndex=a.zi-2,this.modalCoverI.style.display="",this.modalCoverD.style.zIndex=a.zi-2,this.modalCoverD.style.display=""):(this.modalWin=null,a._isModal=!1,this.modalCoverI.style.zIndex=0,this.modalCoverI.style.display="none",this.modalCoverD.style.zIndex=0,this.modalCoverD.style.display=
+"none")};this._bringOnTopAnyStickedWindows=function(){var a=[],b;for(b in this.wins)this.wins[b]._isSticked&&(a[a.length]=this.wins[b]);for(var c=0;c<a.length;c++)this._bringOnTop(a[c]);if(a.length==0)for(b in this.wins)this.wins[b].className=="dhtmlx_window_active"&&this._bringOnTop(this.wins[b])};this.unload=function(){this._clearAll()};this._removeButtonGlobal=function(a,b){if(a.btns[b]){var c=a.btns[b];c.title=null;c.isVisible=null;c._isEnabled=null;c.isPressed=null;c.label=null;c._doOnClick=
+null;c.attachEvent=null;c.callEvent=null;c.checkEvent=null;c.detachEvent=null;c.disable=null;c.enable=null;c.eventCatcher=null;c.hide=null;c.isEnabled=null;c.isHidden=null;c.show=null;c.onmousedown=null;c.onmouseout=null;c.onmouseover=null;c.onmouseup=null;c.parentNode&&c.parentNode.removeChild(c);c=null;a.btns[b]=null}};this._removeWindowGlobal=function(a){this.modalWin==a&&this._setWindowModal(a,!1);var b=a.idd;a.coverBlocker().onselectstart=null;a._dhxContDestruct();this._engineDiableOnSelectInWindow(a,
+!1);this._engineGetWindowHeader(a).onmousedown=null;this.resizingWin=this.movingWin=this._engineGetWindowHeader(a).ondblclick=null;for(var c in a.btns)this._removeButtonGlobal(a,c);a.btns=null;a._adjustToContent=null;a._doOnAttachMenu=null;a._doOnAttachStatusBar=null;a._doOnAttachToolbar=null;a._redraw=null;a.addUserButton=null;a.allowMove=null;a.allowPark=null;a.allowResize=null;a.attachEvent=null;a.bringToBottom=null;a.bringToTop=null;a.callEvent=null;a.center=null;a.centerOnScreen=null;a.checkEvent=
+null;a.clearIcon=null;a.close=null;a.denyMove=null;a.denyPark=null;a.denyResize=null;a.detachEvent=null;a.eventCatcher=null;a.getDimension=null;a.getIcon=null;a.getId=null;a.getMaxDimension=null;a.getMinDimension=null;a.getPosition=null;a.getText=null;a.hide=null;a.hideHeader=null;a.isHidden=null;a.isMaximized=null;a.isModal=null;a.isMovable=null;a.isOnBottom=null;a.isOnTop=null;a.isParkable=null;a.isParked=null;a.isResizable=null;a.isSticked=null;a.keepInViewport=null;a.maximize=null;a.minimize=
+null;a.park=null;a.progressOff=null;a.progressOn=null;a.removeUserButton=null;a.restoreIcon=null;a.setDimension=null;a.setIcon=null;a.setMaxDimension=null;a.setMinDimension=null;a.setModal=null;a.setPosition=null;a.setText=null;a.setToFullScreen=null;a.show=null;a.showHeader=null;a.stick=null;a.unstick=null;a.onmousemove=null;a.onmousedown=null;a.icons=null;a.button=null;a._dhxContDestruct=null;a.dhxContGlobal.obj=null;a.dhxContGlobal.setContent=null;a.dhxContGlobal.dhxcont=null;a.dhxContGlobal=null;
+if(a._frame){for(;a._frame.childNodes.length>0;)a._frame.removeChild(a._frame.childNodes[0]);a._frame=null}this._parseNestedForEvents(a);a._content=null;a.innerHTML="";a.parentNode.removeChild(a);a=null;this.wins[b]=null;delete this.wins[b];b=null};this._removeEvents=function(a){a.onmouseover=null;a.onmouseout=null;a.onmousemove=null;a.onclick=null;a.ondblclick=null;a.onmouseenter=null;a.onmouseleave=null;a.onmouseup=null;a.onmousewheel=null;a.onmousedown=null;a.onselectstart=null;a.onfocus=null;
+a.style.display=""};this._parseNestedForEvents=function(a){this._removeEvents(a);for(var b=0;b<a.childNodes.length;b++)a.childNodes[b].tagName!=null&&this._parseNestedForEvents(a.childNodes[b])};this._clearAll=function(){this._clearDocumentEvents();for(var a in this.wins)this._removeWindowGlobal(this.wins[a]);this.wins=null;for(this._parseNestedForEvents(this._carcass);this._carcass.childNodes.length>0;)this._carcass.removeChild(this._carcass.childNodes[0]);this._carcass.onselectstart=null;this._carcass.parentNode.removeChild(this._carcass);
+this._carcass=null;this._parseNestedForEvents(this._vpcover);this._vpcover.parentNode.removeChild(this._vpcover);this._vpcover=null;this._parseNestedForEvents(this.modalCoverD);this.modalCoverD.parentNode.removeChild(this.modalCoverD);this.modalCoverD=null;this._parseNestedForEvents(this.modalCoverI);this.modalCoverI.parentNode.removeChild(this.modalCoverI);this.modalCoverI=null;this.vp.className=String(this.vp.className).replace(/[a-z_]{1,}/gi,function(a){return{dhtmlx_skin_dhx_skyblue:1,dhtmlx_skin_dhx_blue:1,
+dhtmlx_skin_dhx_black:1,dhtmlx_skin_dhx_web:1}[a]==1?"":a});this.vp.autocreated==!0&&this.vp.parentNode.removeChild(this.vp);this.vp=null;for(a in this.skinParams)delete this.skinParams[a];b=this.window=this.unload=this.setViewport=this.setSkin=this.setImagePath=this.setEffect=this.isWindow=this.getTopmostWindow=this.getEffect=this.getBottommostWindow=this.forEachWindow=this.findByText=this.eventCatcher=this.enableAutoViewport=this.detachEvent=this.createWindow=this.checkEvent=this.callEvent=this.attachViewportTo=
+this.attachEvent=this._unstickWindow=this._stopMove=this._stickWindow=this._showWindow=this._showButton=this._setWindowToFullScreen=this._setWindowModal=this._setWindowIcon=this._restoreWindowIcons=this._restoreWindow=this._removeWindowGlobal=this._removeUserButton=this._removeEvents=this._removeButtonGlobal=this._parseNestedForEvents=this._parkWindow=this._needHelp=this._moveWindow=this._maximizeWindow=this._makeActive=this._isWindowOnTop=this._isWindowOnBottom=this._isWindowHidden=this._hideWindow=
+this._hideButton=this._getWindowIcon=this._getTopZIndex=this._getActive=this._genStr=this._fixWindowDimensionInViewport=this._engineUpdateWindowIcon=this._engineSwitchWindowProgress=this._engineSwitchWindowHeader=this._engineSetWindowBody=this._engineRedrawWindowTitle=this._engineRedrawWindowSize=this._engineRedrawWindowPos=this._engineRedrawSkin=this._engineGetWindowParkedHeight=this._engineGetWindowLabel=this._engineGetWindowHeaderState=this._engineGetWindowHeader=this._engineGetWindowContent=this._engineGetWindowButton=
+this._engineFixWindowPosInViewport=this._engineDoOnWindowParkUp=this._engineDoOnWindowParkDown=this._engineDiableOnSelectInWindow=this._engineCheckHeaderMouseDown=this._engineAllowWindowResize=this._engineAdjustWindowToContent=this._engineAddUserButton=this._enableButton=this._doParkUp=this._doParkDown=this._doOnUnload=this._doOnSelectStart=this._doOnResize=this._doOnMouseUp=this._doOnMoseMove=this._disableButton=this._dhx_Engine=this._denyResize=this._denyParking=this._createViewport=this._closeWindow=
+this._clearWindowIcons=this._clearDocumentEvents=this._clearAll=this._centerWindow=this._bringOnTopAnyStickedWindows=this._bringOnTop=this._bringOnBottom=this._blockSwitcher=this._autoResizeViewport=this._attachWindowContentTo=this._attachEventsOnButton=this._allowReszieGlob=this._allowParking=this._addUserButton=this._addDefaultButtons=wins=this._engineSkinParams=this._effects=this.skinParams=null};this._clearDocumentEvents=function(){_isIE?(window.detachEvent("onresize",this._doOnResize),document.body.detachEvent("onselectstart",
+this._doOnSelectStart),document.body.detachEvent("onmouseup",this._doOnMouseUp),document.body.detachEvent("onunload",this._doOnUnload),this.vp.detachEvent("onmousemove",this._doOnMoseMove),this.vp.detachEvent("onmouseup",this._doOnMouseUp)):(window.removeEventListener("resize",this._doOnResize,!1),document.body.removeEventListener("mouseup",this._doOnMouseUp,!1),document.body.removeEventListener("unload",this._doOnUnload,!1),this.vp.removeEventListener("mousemove",this._doOnMoseMove,!1),this.vp.removeEventListener("mouseup",
+this._doOnMouseUp,!1))};this._genStr=function(a){for(var b="",c="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",g=0;g<a;g++)b+=c.charAt(Math.round(Math.random()*(c.length-1)));return b};dhtmlxEventable(this);return this}else alert(this.i18n.noenginealert)}else alert(this.i18n.dhx)}
+dhtmlXWindows.prototype._dhx_Engine=function(){this._engineEnabled=!0;this._engineName="dhx";this._engineSkinParams={dhx_blue:{hh:21,lbw:2,rbw:2,lch:2,lcw:14,rch:14,rcw:14,bbh:2,mnh:23,tbh:25,sbh:20,noh_t:null,noh_h:null},dhx_black:{hh:21,lbw:2,rbw:2,lch:2,lcw:14,rch:14,rcw:14,bbh:2,mnh:23,tbh:25,sbh:20,noh_t:null,noh_h:null},dhx_skyblue:{hh:29,lbw:2,rbw:2,lch:2,lcw:14,rch:14,rcw:14,bbh:2,mnh:23,tbh:25,sbh:20,noh_t:5,noh_h:-10},dhx_web:{hh:27,lbw:5,rbw:5,lch:5,lcw:14,rch:14,rcw:14,bbh:5,mnh:23,tbh:25,
+sbh:20,noh_t:5,noh_h:-10}};this._isIE6=!1;if(_isIE)this._isIE6=window.XMLHttpRequest==null?!0:!1;this._engineSetWindowBody=function(a){a.innerHTML="<div iswin='1' class='dhtmlx_wins_body_outer' style='position: relative;'>"+(this._isIE6?"<iframe frameborder='0' class='dhtmlx_wins_ie6_cover_fix' onload='this.contentWindow.document.body.style.overflow=\"hidden\";'></iframe>":"")+"<div class='dhtmlx_wins_icon'></div><div class='dhtmlx_wins_progress'></div><div class='dhtmlx_wins_title'>dhtmlxWindow</div><div class='dhtmlx_wins_btns'><div class='dhtmlx_wins_btns_button dhtmlx_button_sticked_default'></div><div class='dhtmlx_wins_btns_button dhtmlx_button_stick_default'></div><div class='dhtmlx_wins_btns_button dhtmlx_button_help_default'></div><div class='dhtmlx_wins_btns_button dhtmlx_button_park_default'></div><div class='dhtmlx_wins_btns_button dhtmlx_button_minmax2_default'></div><div class='dhtmlx_wins_btns_button dhtmlx_button_minmax1_default'></div><div class='dhtmlx_wins_btns_button dhtmlx_button_close_default'></div><div class='dhtmlx_wins_btns_button dhtmlx_button_dock_default'></div></div><div class='dhtmlx_wins_body_inner'></div><div winResT='yes' class='dhtmlx_wins_resizer_t' style='display:none;'></div><div winResL='yes' class='dhtmlx_wins_resizer_l'></div><div winResR='yes' class='dhtmlx_wins_resizer_r'></div><div winResB='yes' class='dhtmlx_wins_resizer_b'></div><div class='white_line'></div><div class='white_line2'></div></div>";
+a.dhxContGlobal=new dhtmlXContainer(a);if(this.skin=="dhx_skyblue")a.dhxContGlobal.obj._offsetWidth=-10,a.dhxContGlobal.obj._offsetHeight=-5,a.dhxContGlobal.obj._offsetLeft=5,a.dhxContGlobal.obj._offsetHeightSaved=a.dhxContGlobal.obj._offsetHeight;if(this.skin=="dhx_web")a.dhxContGlobal.obj._offsetWidth=-10,a.dhxContGlobal.obj._offsetHeight=-5,a.dhxContGlobal.obj._offsetLeft=5,a.dhxContGlobal.obj._offsetHeightSaved=a.dhxContGlobal.obj._offsetHeight;a.skin=this.skin;a.dhxContGlobal.setContent(a.childNodes[0].childNodes[this._isIE6?
+5:4]);a.coverBlocker().onselectstart=function(a){a=a||event;a.returnValue=!1;a.cancelBubble=!0}};this._engineDiableOnSelectInWindow=function(a,b){var c=[];c[0]=a.childNodes[0].childNodes[this._isIE6?1:0];c[1]=a.childNodes[0].childNodes[this._isIE6?2:1];c[2]=a.childNodes[0].childNodes[this._isIE6?3:2];c[3]=a.childNodes[0].childNodes[this._isIE6?4:3];c[4]=a.childNodes[0].childNodes[this._isIE6?6:5];c[5]=a.childNodes[0].childNodes[this._isIE6?7:6];c[6]=a.childNodes[0].childNodes[this._isIE6?8:7];c[7]=
+a.childNodes[0].childNodes[this._isIE6?9:8];for(var d=0;d<c.length;d++)c[d].onselectstart=b?function(a){a=a||event;return a.returnValue=!1}:null};this._engineGetWindowHeader=function(a){a.childNodes[0].idd=a.idd;return a.childNodes[0]};this._engineRedrawWindowSize=function(a){a.style.width=String(a.w).search("%")==-1?a.w+"px":a.w;a.style.height=String(a.h).search("%")==-1?a.h+"px":a.h;var b=a.childNodes[0];b.style.width=a.clientWidth+"px";b.style.height=a.clientHeight+"px";if(b.offsetWidth>a.clientWidth)b.style.width=
+a.clientWidth*2-b.offsetWidth+"px";if(b.offsetHeight>a.clientHeight){var c=a.clientHeight*2-b.offsetHeight;c<0&&(c=0);b.style.height=c+"px"}var d=a._noHeader==!0?a._hdrSize:this._engineSkinParams[this.skin].hh;this._engineRedrawWindowTitle(a);a.adjustContent(b,d)};this._engineRedrawWindowPos=function(a){if(!a._isFullScreened)a.style.left=a.x+"px",a.style.top=a.y+"px"};this._engineFixWindowPosInViewport=function(a){var b=a._noHeader==!0?a._hdrSize:this._engineSkinParams[this.skin].hh;if(a._keepInViewport){if(a.x<
+0)a.x=0;if(a.x+a.w>this.vp.offsetWidth)a.x=this.vp.offsetWidth-a.w;if(a.y+a.h>this.vp.offsetHeight)a.y=this.vp.offsetHeight-a.h;if(a.y<0)a.y=0}else{if(a.y+b>this.vp.offsetHeight)a.y=this.vp.offsetHeight-b;if(a.y<0)a.y=0;if(a.x+a.w-10<0)a.x=10-a.w;if(a.x>this.vp.offsetWidth-10)a.x=this.vp.offsetWidth-10}};this._engineCheckHeaderMouseDown=function(a,b){if(this._isIPad){var c=b.touches[0].clientX,d=b.touches[0].clientY,e=b.target||b.srcElement;return e==a.childNodes[0]||e==a.childNodes[0].childNodes[0]||
+e==a.childNodes[0].childNodes[2]||e==a.childNodes[0].childNodes[3]?!0:!1}else c=_isIE||_isOpera?b.offsetX:b.layerX,d=_isIE||_isOpera?b.offsetY:b.layerY,e=b.target||b.srcElement;var f=a._noHeader==!0?a._hdrSize:this._engineSkinParams[this.skin].hh;return d<=f&&(e==a.childNodes[0]||e==a.childNodes[0].childNodes[this._isIE6?1:0]||e==a.childNodes[0].childNodes[this._isIE6?3:2]||e==a.childNodes[0].childNodes[this._isIE6?4:3])?!0:!1};this._engineGetWindowContent=function(){alert("_engineGetWindowContent")};
+this._engineGetWindowButton=function(a,b){for(var c=null,d="dhtmlx_button_"+String(b).toLowerCase()+"_",e=0;e<a.childNodes[0].childNodes[this._isIE6?4:3].childNodes.length;e++){var f=a.childNodes[0].childNodes[this._isIE6?4:3].childNodes[e];String(f.className).search(d)!=-1&&(c=f)}return c};this._engineAddUserButton=function(a,b,c){isNaN(c)&&(c=0);var d=document.createElement("DIV");d.className="dhtmlx_wins_btns_button dhtmlx_button_"+b+"_default";var e=a.childNodes[0].childNodes[this._isIE6?4:3],
+c=e.childNodes.length-c;c<0&&(c=0);c>=e.childNodes.length?e.appendChild(d):e.insertBefore(d,e.childNodes[c]);this._engineRedrawWindowTitle(a);return d};this._engineGetWindowParkedHeight=function(){return this._engineSkinParams[this.skin].hh+1};this._engineDoOnWindowParkDown=function(a){a.childNodes[0].childNodes[this._isIE6?6:5].style.display=a._noHeader==!0?"":"none";a.childNodes[0].childNodes[this._isIE6?7:6].style.display="";a.childNodes[0].childNodes[this._isIE6?8:7].style.display="";a.childNodes[0].childNodes[this._isIE6?
+9:8].style.display=""};this._engineDoOnWindowParkUp=function(a){a.childNodes[0].childNodes[this._isIE6?6:5].style.display="none";a.childNodes[0].childNodes[this._isIE6?7:6].style.display="none";a.childNodes[0].childNodes[this._isIE6?8:7].style.display="none";a.childNodes[0].childNodes[this._isIE6?9:8].style.display="none"};this._engineUpdateWindowIcon=function(a,b){a.childNodes[0].childNodes[this._isIE6?1:0].style.backgroundImage="url('"+b+"')"};this._engineAllowWindowResize=function(a,b,c,d){if(b.getAttribute){var e=
+this._engineSkinParams[this.skin],f=a._noHeader==!0?a._hdrSize:this._engineSkinParams[this.skin].hh;return b.getAttribute("winResL")!=null&&b.getAttribute("winResL")=="yes"&&d>=f?d>=a.h-e.lch?"corner_left":d<=e.lch&&a._noHeader==!0?"corner_up_left":"border_left":b.getAttribute("winResR")!=null&&b.getAttribute("winResR")=="yes"&&d>=f?d>=a.h-e.rch?"corner_right":d<=e.rch&&a._noHeader==!0?"corner_up_right":"border_right":b.getAttribute("winResT")!=null&&b.getAttribute("winResT")=="yes"&&a._noHeader==
+!0?c<=e.lcw?"corner_up_left":c>=a.w-e.rcw?"corner_up_right":"border_top":b.getAttribute("winResB")!=null&&b.getAttribute("winResB")=="yes"?c<=e.lcw?"corner_left":c>=a.w-e.rcw?"corner_right":"border_bottom":null}};this._engineAdjustWindowToContent=function(a,b,c){var d=b+a.w-a.vs[a.av].dhxcont.clientWidth,e=c+a.h-a.vs[a.av].dhxcont.clientHeight;a.setDimension(d,e)};this._engineRedrawSkin=function(){this.vp.className="dhtmlx_winviewport dhtmlx_skin_"+this.skin+(this._r?" dhx_wins_rtl":"");var a=this._engineSkinParams[this.skin],
+b;for(b in this.wins)this.skin=="dhx_skyblue"?(this.wins[b].dhxContGlobal.obj._offsetTop=this.wins[b]._noHeader?a.noh_t:null,this.wins[b].dhxContGlobal.obj._offsetWidth=-10,this.wins[b].dhxContGlobal.obj._offsetHeight=this.wins[b]._noHeader?a.noh_h:-5,this.wins[b].dhxContGlobal.obj._offsetLeft=5,this.wins[b].dhxContGlobal.obj._offsetHeightSaved=-5):(this.wins[b].dhxContGlobal.obj._offsetWidth=null,this.wins[b].dhxContGlobal.obj._offsetHeight=null,this.wins[b].dhxContGlobal.obj._offsetLeft=null,this.wins[b].dhxContGlobal.obj._offsetTop=
+null,this.wins[b].dhxContGlobal.obj._offsetHeightSaved=null),this.wins[b].skin=this.skin,this._restoreWindowIcons(this.wins[b]),this._engineRedrawWindowSize(this.wins[b])};this._engineSwitchWindowProgress=function(a,b){b==!0?(a.childNodes[0].childNodes[this._isIE6?1:0].style.display="none",a.childNodes[0].childNodes[this._isIE6?2:1].style.display=""):(a.childNodes[0].childNodes[this._isIE6?2:1].style.display="none",a.childNodes[0].childNodes[this._isIE6?1:0].style.display="")};this._engineSwitchWindowHeader=
+function(a,b){if(!a._noHeader)a._noHeader=!1;if(b==a._noHeader){a._noHeader=b==!0?!1:!0;a._hdrSize=0;a.childNodes[0].childNodes[this._isIE6?5:4].className="dhtmlx_wins_body_inner"+(a._noHeader?" dhtmlx_wins_no_header":"");a.childNodes[0].childNodes[this._isIE6?6:5].style.display=a._noHeader?"":"none";a.childNodes[0].childNodes[this._isIE6?1:0].style.display=a._noHeader?"none":"";a.childNodes[0].childNodes[this._isIE6?3:2].style.display=a._noHeader?"none":"";a.childNodes[0].childNodes[this._isIE6?
+4:3].style.display=a._noHeader?"none":"";var c=this._engineSkinParams[this.skin];a._noHeader?(a.dhxContGlobal.obj._offsetHeightSaved=a.dhxContGlobal.obj._offsetHeight,a.dhxContGlobal.obj._offsetHeight=c.noh_h,a.dhxContGlobal.obj._offsetTop=c.noh_t):(a.dhxContGlobal.obj._offsetHeight=a.dhxContGlobal.obj._offsetHeightSaved,a.dhxContGlobal.obj._offsetTop=null);this._engineRedrawWindowSize(a)}};this._engineGetWindowHeaderState=function(a){return a._noHeader?!0:!1};this._engineGetWindowLabel=function(a){return a.childNodes[0].childNodes[this._isIE6?
+3:2]};this._engineRedrawWindowTitle=function(a){if(a._noHeader!==!0){var b=a.childNodes[0].childNodes[this._isIE6?1:0].offsetWidth,c=a.childNodes[0].childNodes[this._isIE6?4:3].offsetWidth,d=a.offsetWidth-b-c-24;d<0?d="100%":d+="px";a.childNodes[0].childNodes[this._isIE6?3:2].style.width=d}}};
+dhtmlXWindows.prototype.i18n={dhxcontaler:"dhtmlxcontainer.js is missed on the page",noenginealert:"No dhtmlxWindows engine was found.",stick:"Stick",unstick:"Unstick",help:"Help",parkdown:"Park Down",parkup:"Park Up",maximize:"Maximize",restore:"Restore",close:"Close",dock:"Dock"};
+(function(){dhtmlx.extend_api("dhtmlXWindows",{_init:function(){return[]},_patch:function(b){b.old_createWindow=b.createWindow;b.createWindow=function(b){if(arguments.length>1)return this.old_createWindow.apply(this,arguments);var d=this.old_createWindow(b.id,b.x||b.left,b.y||b.top,b.width,b.height);d.allowMoveA=function(a){a?this.allowMove():this.denyMove()};d.allowParkA=function(a){a?this.allowPark():this.denyPark()};d.allowResizeA=function(a){a?this.allowResize():this.denyResize()};for(var e in b)if(a[e])d[a[e]](b[e]);
+else e.indexOf("on")==0&&d.attachEvent(e,b[e]);return d}},animation:"setEffect",image_path:"setImagePath",skin:"setSkin",viewport:"_viewport",wins:"_wins"},{_viewport:function(a){a.object?(this.enableAutoViewport(!1),this.attachViewportTo(a.object)):(this.enableAutoViewport(!1),this.setViewport(a.left,a.top,a.width,a.height,a.parent))},_wins:function(a){for(var c=0;c<a.length;c++){var d=a[c];this.createWindow(d.id,d.left,d.top,d.width,d.height);d.text&&this.window(d.id).setText(d.text);d.keep_in_viewport&&
+this.window(d.id).keepInViewport(!0);d.deny_resize&&this.window(d.id).denyResize();d.deny_park&&this.window(d.id).denyPark();d.deny_move&&this.window(d.id).denyMove()}}});var a={move:"allowMoveA",park:"allowParkA",resize:"allowResizeA",center:"center",modal:"setModal",caption:"setText",header:"showHeader"}})();dhtmlx.skin="dhx_skyblue";
diff --git a/samples/dhtmlx/dhtmlxdataprocessor.js b/samples/dhtmlx/dhtmlxdataprocessor.js
new file mode 100644
index 0000000..71fdff6
--- /dev/null
+++ b/samples/dhtmlx/dhtmlxdataprocessor.js
@@ -0,0 +1,32 @@
+//v.3.0 build 110704
+
+/*
+Copyright DHTMLX LTD. http://www.dhtmlx.com
+You allowed to use this component or parts of it under GPL terms
+To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com
+*/
+function dataProcessor(a){this.serverProcessor=a;this.action_param="!nativeeditor_status";this.object=null;this.updatedRows=[];this.autoUpdate=!0;this.updateMode="cell";this._tMode="GET";this.post_delim="_";this._waitMode=0;this._in_progress={};this._invalid={};this.mandatoryFields=[];this.messages=[];this.styles={updated:"font-weight:bold;",inserted:"font-weight:bold;",deleted:"text-decoration : line-through;",invalid:"background-color:FFE0E0;",invalid_cell:"border-bottom:2px solid red;",clear:"font-weight:normal;text-decoration:none;"};
+this.enableUTFencoding(!0);dhtmlxEventable(this);return this}
+dataProcessor.prototype={setTransactionMode:function(a,b){this._tMode=a;this._tSend=b},escape:function(a){return this._utf?encodeURIComponent(a):escape(a)},enableUTFencoding:function(a){this._utf=convertStringToBoolean(a)},setDataColumns:function(a){this._columns=typeof a=="string"?a.split(","):a},getSyncState:function(){return!this.updatedRows.length},enableDataNames:function(a){this._endnm=convertStringToBoolean(a)},enablePartialDataSend:function(a){this._changed=convertStringToBoolean(a)},setUpdateMode:function(a,
+b){this.autoUpdate=a=="cell";this.updateMode=a;this.dnd=b},ignore:function(a,b){this._silent_mode=!0;a.call(b||window);this._silent_mode=!1},setUpdated:function(a,b,c){if(!this._silent_mode){var d=this.findRow(a),c=c||"updated",e=this.obj.getUserData(a,this.action_param);e&&c=="updated"&&(c=e);b?(this.set_invalid(a,!1),this.updatedRows[d]=a,this.obj.setUserData(a,this.action_param,c),this._in_progress[a]&&(this._in_progress[a]="wait")):this.is_invalid(a)||(this.updatedRows.splice(d,1),this.obj.setUserData(a,
+this.action_param,""));b||this._clearUpdateFlag(a);this.markRow(a,b,c);b&&this.autoUpdate&&this.sendData(a)}},_clearUpdateFlag:function(){},markRow:function(a,b,c){var d="",e=this.is_invalid(a);e&&(d=this.styles[e],b=!0);if(this.callEvent("onRowMark",[a,b,c,e])&&(d=this.styles[b?c:"clear"]+d,this.obj[this._methods[0]](a,d),e&&e.details)){d+=this.styles[e+"_cell"];for(var f=0;f<e.details.length;f++)if(e.details[f])this.obj[this._methods[1]](a,f,d)}},getState:function(a){return this.obj.getUserData(a,
+this.action_param)},is_invalid:function(a){return this._invalid[a]},set_invalid:function(a,b,c){c&&(b={value:b,details:c,toString:function(){return this.value.toString()}});this._invalid[a]=b},checkBeforeUpdate:function(){return!0},sendData:function(a){if(!this._waitMode||!(this.obj.mytype=="tree"||this.obj._h2)){this.obj.editStop&&this.obj.editStop();if(typeof a=="undefined"||this._tSend)return this.sendAllData();if(this._in_progress[a])return!1;this.messages=[];if(!this.checkBeforeUpdate(a)&&this.callEvent("onValidationError",
+[a,this.messages]))return!1;this._beforeSendData(this._getRowData(a),a)}},_beforeSendData:function(a,b){if(!this.callEvent("onBeforeUpdate",[b,this.getState(b),a]))return!1;this._sendData(a,b)},serialize:function(a,b){if(typeof a=="string")return a;if(typeof b!="undefined")return this.serialize_one(a,"");else{var c=[],d=[],e;for(e in a)a.hasOwnProperty(e)&&(c.push(this.serialize_one(a[e],e+this.post_delim)),d.push(e));c.push("ids="+this.escape(d.join(",")));return c.join("&")}},serialize_one:function(a,
+b){if(typeof a=="string")return a;var c=[],d;for(d in a)a.hasOwnProperty(d)&&c.push(this.escape((b||"")+d)+"="+this.escape(a[d]));return c.join("&")},_sendData:function(a,b){if(a){if(!this.callEvent("onBeforeDataSending",b?[b,this.getState(b),a]:[null,null,a]))return!1;b&&(this._in_progress[b]=(new Date).valueOf());var c=new dtmlXMLLoaderObject(this.afterUpdate,this,!0),d=this.serverProcessor+(this._user?getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+this.obj.getUserData(0,
+"version")].join("&"):"");this._tMode!="POST"?c.loadXML(d+(d.indexOf("?")!=-1?"&":"?")+this.serialize(a,b)):c.loadXML(d,!0,this.serialize(a,b));this._waitMode++}},sendAllData:function(){if(this.updatedRows.length){this.messages=[];for(var a=!0,b=0;b<this.updatedRows.length;b++)a&=this.checkBeforeUpdate(this.updatedRows[b]);if(!a&&!this.callEvent("onValidationError",["",this.messages]))return!1;if(this._tSend)this._sendData(this._getAllData());else for(b=0;b<this.updatedRows.length;b++)if(!this._in_progress[this.updatedRows[b]]&&
+!this.is_invalid(this.updatedRows[b])&&(this._beforeSendData(this._getRowData(this.updatedRows[b]),this.updatedRows[b]),this._waitMode&&(this.obj.mytype=="tree"||this.obj._h2)))break}},_getAllData:function(){for(var a={},b=!1,c=0;c<this.updatedRows.length;c++){var d=this.updatedRows[c];!this._in_progress[d]&&!this.is_invalid(d)&&this.callEvent("onBeforeUpdate",[d,this.getState(d)])&&(a[d]=this._getRowData(d,d+this.post_delim),b=!0,this._in_progress[d]=(new Date).valueOf())}return b?a:null},setVerificator:function(a,
+b){this.mandatoryFields[a]=b||function(a){return a!=""}},clearVerificator:function(a){this.mandatoryFields[a]=!1},findRow:function(a){for(var b=0,b=0;b<this.updatedRows.length;b++)if(a==this.updatedRows[b])break;return b},defineAction:function(a,b){if(!this._uActions)this._uActions=[];this._uActions[a]=b},afterUpdateCallback:function(a,b,c,d){var e=a,f=c!="error"&&c!="invalid";f||this.set_invalid(a,c);if(this._uActions&&this._uActions[c]&&!this._uActions[c](d))return delete this._in_progress[e];this._in_progress[e]!=
+"wait"&&this.setUpdated(a,!1);var g=a;switch(c){case "inserted":case "insert":b!=a&&(this.obj[this._methods[2]](a,b),a=b);break;case "delete":case "deleted":return this.obj.setUserData(a,this.action_param,"true_deleted"),this.obj[this._methods[3]](a),delete this._in_progress[e],this.callEvent("onAfterUpdate",[a,c,b,d])}this._in_progress[e]!="wait"?(f&&this.obj.setUserData(a,this.action_param,""),delete this._in_progress[e]):(delete this._in_progress[e],this.setUpdated(b,!0,this.obj.getUserData(a,
+this.action_param)));this.callEvent("onAfterUpdate",[a,c,b,d])},afterUpdate:function(a,b,c,d,e){e.getXMLTopNode("data");if(e.xmlDoc.responseXML){for(var f=e.doXPath("//data/action"),g=0;g<f.length;g++){var h=f[g],i=h.getAttribute("type"),j=h.getAttribute("sid"),k=h.getAttribute("tid");a.afterUpdateCallback(j,k,i,h)}a.finalizeUpdate()}},finalizeUpdate:function(){this._waitMode&&this._waitMode--;(this.obj.mytype=="tree"||this.obj._h2)&&this.updatedRows.length&&this.sendData();this.callEvent("onAfterUpdateFinish",
+[]);this.updatedRows.length||this.callEvent("onFullSync",[])},init:function(a){this.obj=a;this.obj._dp_init&&this.obj._dp_init(this)},setOnAfterUpdate:function(a){this.attachEvent("onAfterUpdate",a)},enableDebug:function(){},setOnBeforeUpdateHandler:function(a){this.attachEvent("onBeforeDataSending",a)},setAutoUpdate:function(a,b){a=a||2E3;this._user=b||(new Date).valueOf();this._need_update=!1;this._loader=null;this._update_busy=!1;this.attachEvent("onAfterUpdate",function(a,b,c,g){this.afterAutoUpdate(a,
+b,c,g)});this.attachEvent("onFullSync",function(){this.fullSync()});var c=this;window.setInterval(function(){c.loadUpdate()},a)},afterAutoUpdate:function(a,b){return b=="collision"?(this._need_update=!0,!1):!0},fullSync:function(){if(this._need_update==!0)this._need_update=!1,this.loadUpdate();return!0},getUpdates:function(a,b){if(this._update_busy)return!1;else this._update_busy=!0;this._loader=this._loader||new dtmlXMLLoaderObject(!0);this._loader.async=!0;this._loader.waitCall=b;this._loader.loadXML(a)},
+_v:function(a){return a.firstChild?a.firstChild.nodeValue:""},_a:function(a){for(var b=[],c=0;c<a.length;c++)b[c]=this._v(a[c]);return b},loadUpdate:function(){var a=this,b=this.obj.getUserData(0,"version"),c=this.serverProcessor+getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+b].join("&"),c=c.replace("editing=true&","");this.getUpdates(c,function(){var b=a._loader.doXPath("//userdata");a.obj.setUserData(0,"version",a._v(b[0]));var c=a._loader.doXPath("//update");if(c.length){a._silent_mode=
+!0;for(var f=0;f<c.length;f++){var g=c[f].getAttribute("status"),h=c[f].getAttribute("id"),i=c[f].getAttribute("parent");switch(g){case "inserted":a.callEvent("insertCallback",[c[f],h,i]);break;case "updated":a.callEvent("updateCallback",[c[f],h,i]);break;case "deleted":a.callEvent("deleteCallback",[c[f],h,i])}}a._silent_mode=!1}a._update_busy=!1;a=null})}};
+
+//v.3.0 build 110704
+
+/*
+Copyright DHTMLX LTD. http://www.dhtmlx.com
+You allowed to use this component or parts of it under GPL terms
+To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com
+*/ \ No newline at end of file
diff --git a/samples/dhtmlx/dhtmlxscheduler.css b/samples/dhtmlx/dhtmlxscheduler.css
new file mode 100644
index 0000000..fb919db
--- /dev/null
+++ b/samples/dhtmlx/dhtmlxscheduler.css
@@ -0,0 +1 @@
+.dhx_cal_container{background-color:#C2D5FC;font-family:Tahoma;font-size:8pt;position:relative;overflow:hidden;}.dhx_cal_container div{-moz-user-select:none;-moz-user-select:-moz-none;}.dhx_cal_navline{height:20px;position:absolute;z-index:3;width:750px;color:#2F3A48;}.dhx_cal_navline div{position:absolute;top:2px;white-space:nowrap;}.dhx_cal_navline .dhx_cal_date{font-weight:600;left:210px;}.dhx_cal_button .dhx_left_bg{width:1px;overflow:hidden;height:17px;z-index:20;top:0;}.dhx_cal_prev_button{background-image:url(imgs/buttons.png);background-position:0 0;width:29px;height:17px;left:50px;cursor:pointer;}.dhx_cal_next_button{background-image:url(imgs/buttons.png);background-position:-30px 0;width:29px;height:17px;left:80px;cursor:pointer;}.dhx_cal_today_button{background-image:url(imgs/buttons.png);background-position:-60px 0;width:75px;height:17px;left:112px;cursor:pointer;text-align:center;text-decoration:underline;}.dhx_cal_tab{width:59px;height:19px;text-align:center;text-decoration:underline;padding-top:2px;cursor:pointer;background-color:#D8E1EA;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius-topleft:4px;-moz-border-radius-topright:4px;border-top-left-radius:4px;border-top-right-radius:4px;}.dhx_cal_tab.active{text-decoration:none;cursor:default;font-weight:bold;border:1px dotted #586A7E;border-bottom:0;background-color:#C2D5FC;}.dhx_cal_header{position:absolute;left:10px;top:23px;width:750px;border-top:1px dotted #8894A3;border-right:1px dotted #8894A3;z-index:2;overflow:hidden;color:#2F3A48;}.dhx_cal_data{border-top:1px dotted #8894A3;position:absolute;top:44px;width:600px;overflow-y:auto;overflow-x:hidden;}.dhx_scale_bar{position:absolute;text-align:center;background-color:#C2D5FC;padding-top:3px;border-left:1px dotted #586A7E;}.dhx_scale_holder{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg.png);}.dhx_scale_holder_now{position:absolute;border-right:1px dotted #586A7E;background-image:url(imgs/databg_now.png);}.dhx_scale_hour{height:41px;width:50px;border-bottom:1px dotted #8894A3;background-color:#C2D5FC;text-align:center;line-height:40px;color:#586A7E;overflow:hidden;}.dhx_month_head{background-color:#EBEFF4;color:#2F3A48;border-right:1px dotted #586A7E;height:18px;padding-right:5px;padding-top:3px;text-align:right;}.dhx_month_body{border-right:1px dotted #586A7E;border-bottom:1px dotted #586A7E;background-color:#FFF;}.dhx_now .dhx_month_body{background-color:#E2EDFF;}.dhx_after .dhx_month_body,.dhx_before .dhx_month_body{background-color:#ECECEC;}.dhx_after .dhx_month_head,.dhx_before .dhx_month_head{background-color:#E2E3E6;color:#94A6BB;}.dhx_now .dhx_month_head{background-color:#D1DEF4;font-weight:bold;}.dhx_cal_drag{position:absolute;z-index:9999;background-color:#FFE763;border:1px solid #B7A543;opacity:.5;filter:alpha(opacity=50);}.dhx_loading{position:absolute;width:128px;height:15px;background-image:url(imgs/loading.gif);z-index:9999;}.dhx_multi_day_icon,.dhx_multi_day{background-color:#E1E6FF;background-repeat:no-repeat;border-right:1px dotted #8894A3;}.dhx_multi_day{position:absolute;border-top:1px dotted #8894A3;}.dhx_multi_day_icon{background-image:url(imgs/clock_big.gif);}.dhx_multi_day_icon_small{background-image:url(imgs/clock_small.gif);}.dhx_multi_day_icon,.dhx_multi_day_icon_small{background-position:center center;background-color:#E1E6FF;background-repeat:no-repeat;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhtmlxLayoutPolyContainer_dhx_skyblue .dhx_cal_container{background-color:#d0e5ff;}.dhx_cal_event div{background-color:#FFE763;border:1px solid #B7A543;color:#887A2E;overflow:hidden;width:100%;font-family:Tahoma;font-size:8pt;}.dhx_move_denied .dhx_cal_event .dhx_header,.dhx_move_denied .dhx_cal_event .dhx_title{cursor:default;}.dhx_cal_event .dhx_header{height:1px;margin-left:1px;border-width:1px 1px 0 1px;cursor:pointer;}.dhx_cal_event .dhx_title{height:12px;border-width:0 1px 1px 1px;border-bottom-style:dotted;font-size:7pt;font-weight:bold;text-align:center;background-position:right;background-repeat:no-repeat;cursor:pointer;}.dhx_cal_event .dhx_body{border-width:0 1px 1px 1px;padding:5px;}.dhx_resize_denied .dhx_cal_event .dhx_footer{cursor:default;}.dhx_cal_event .dhx_footer{height:1px;margin-left:2px;border-width:0 1px 1px 1px;cursor:s-resize;}.dhx_cal_event_line{background-color:#FFE763;border:1px solid #B7A543;border-radius:3px;font-family:Tahoma;font-size:8pt;height:13px;padding-left:10px;color:#887A2E;cursor:pointer;overflow:hidden;}.dhx_cal_event_clear{font-family:Tahoma;font-size:8pt;height:13px;padding-left:2px;color:#887A2E;white-space:nowrap;overflow:hidden;cursor:pointer;}.dhx_in_move{background-color:#FFFF80;}div.dhx_cal_editor{background-color:#FFE763;border:1px solid #B7A543;border-top-style:dotted;z-index:999;position:absolute;overflow:hidden;}textarea.dhx_cal_editor{width:100%;height:100%;border:0 solid black;margin:none;padding:none;overflow:auto;}div.dhx_menu_head{background-image:url(imgs/controls.gif);background-position:0 -43px;width:10px;height:10px;margin-left:5px;margin-top:1px;border:none;cursor:default;}div.dhx_menu_icon{background-image:url(imgs/controls.gif);width:20px;height:20px;margin-left:-5px;margin-top:0;border:none;cursor:pointer;}div.icon_details{background-position:0 0;}div.icon_edit{background-position:-22px 0;}div.icon_save{background-position:-84px -1px;}div.icon_cancel{background-position:-62px 0;}div.icon_delete{background-position:-42px 0;}div.dhx_now_time{position:absolute;width:100%;border-bottom:2px dotted red;z-index:1;}div.dhx_time_block{position:absolute;width:100%;background:silver;opacity:.4;filter:alpha(opacity=40);z-index:1;}.dhx_unselectable,.dhx_unselectable div{-webkit-user-select:none;-moz-user-select:none;-moz-user-select:-moz-none;}.dhx_cal_light{background-color:#FFE763;border-radius:5px;font-family:Tahoma;font-size:8pt;border:1px solid #B7A64B;color:#887A2E;position:absolute;z-index:10001;width:580px;height:300px;box-shadow:5px 5px 5px #888;}.dhx_cal_light_wide{width:650px;}.dhx_mark{position:relative;top:3px;background-image:url('./imgs/controls.gif');background-position:0 -43px;padding-left:10px;}.dhx_ie6 .dhx_mark{background-position:6px -41px;}.dhx_cal_light select{font-family:Tahoma;font-size:8pt;color:#887A2E;padding:2px;margin:0;}.dhx_cal_ltitle{padding:2px 0 2px 5px;overflow:hidden;white-space:nowrap;}.dhx_cal_ltitle span{white-space:nowrap;}.dhx_cal_lsection{background-color:#DBCF8C;color:#FFF4B5;font-weight:bold;padding:5px 0 3px 10px;}.dhx_section_time{background-color:#DBCF8C;}.dhx_cal_lsection .dhx_fullday{float:right;margin-right:5px;color:#887A2E;font-size:12px;font-weight:normal;line-height:20px;vertical-align:top;cursor:pointer;}.dhx_cal_lsection{font-size:18px;font-family:Arial;}.dhx_cal_ltext{padding:2px 0 2px 10px;overflow:hidden;}.dhx_cal_ltext textarea{background-color:#FFF4B5;overflow:auto;border:none;color:#887A2E;height:100%;width:100%;outline:none!important;}.dhx_time{font-weight:bold;}.dhx_cal_light .dhx_title{padding-left:10px;}.dhx_cal_larea{border:1px solid #DCC43E;background-color:#FFF4B5;overflow:hidden;margin-left:3px;width:572px;height:1px;}.dhx_btn_set{padding:5px 10px 0 10px;float:left;}.dhx_btn_set div{float:left;height:21px;line-height:21px;vertical-align:middle;cursor:pointer;}.dhx_save_btn{background-image:url('./imgs/controls.gif');background-position:-84px 0;width:21px;}.dhx_cancel_btn{background-image:url('./imgs/controls.gif');background-position:-63px 0;width:20px;}.dhx_delete_btn{background-image:url('./imgs/controls.gif');background-position:-42px 0;width:20px;}.dhx_cal_cover{width:100%;height:100%;position:absolute;z-index:10000;top:0;left:0;background-color:black;opacity:.1;filter:alpha(opacity=10);}.dhx_custom_button{padding:0 3px 0 3px;color:#887A2E;font-family:Tahoma;font-size:8pt;background-color:#FFE763;font-weight:normal;margin-right:5px;margin-top:0;cursor:pointer;}.dhx_custom_button div{cursor:pointer;float:left;height:21px;line-height:21px;vertical-align:middle;}.dhx_cal_light_wide .dhx_cal_larea{border-top-width:0;}.dhx_cal_light_wide .dhx_cal_lsection{border:0;float:left;text-align:right;width:100px;height:20px;font-size:16px;padding:5px 0 0 10px;}.dhx_cal_light_wide .dhx_wrap_section{border-top:1px solid #DBCF8C;position:relative;background-color:#DBCF8C;overflow:hidden;}.dhx_cal_light_wide .dhx_section_time{padding-top:2px!important;height:20px!important;}.dhx_section_time{text-align:center;}.dhx_cal_light_wide .dhx_cal_larea{width:730px;}.dhx_cal_light_wide{width:738px;}.dhx_cal_light_wide .dhx_section_time{background:transparent;}.dhx_cal_light_wide .dhx_cal_checkbox label{padding-left:0;}.dhx_cal_wide_checkbox input{margin-top:8px;margin-left:14px;}.dhx_cal_light input{font-family:Tahoma;font-size:8pt;color:#887A2E;}.dhx_cal_light_wide .dhx_custom_button{margin-top:-4px;padding-top:2px;}.dhx_cal_light_wide .dhx_cal_lsection .dhx_fullday{float:none;margin-right:0;color:#FFF4B5;font-weight:bold;font-size:16px;font-family:Arial;cursor:pointer;}.dhx_scale_bar_header{position:absolute;border-bottom:1px dotted #8894A3;width:100%;}.dhx_expand_icon{position:absolute;top:0;right:0;background-image:url(./imgs/colapce-expand-icon.gif);width:18px;height:18px;cursor:pointer;background-position:0 18px;z-index:16;}.dhx_agenda_area{width:100%;height:100%;overflow-y:auto;background-image:url(./imgs/databg.png);}.dhx_agenda_line{height:21px;clear:both;overflow:hidden;}.dhx_agenda_line div{float:left;width:188px;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_agenda_area .dhx_agenda_line div{border-right:0 dotted #8894A3;}.dhx_v_border{position:absolute;left:186px;top:0;border-right:1px dotted #8894A3;width:1px;height:100%;}.dhx_agenda_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_agenda_line span{padding-left:5px;line-height:21px;}.dhx_year_body{border-left:1px dotted #586A7E;}.dhx_year_week{position:relative;}.dhx_scale_bar_last{border-right:1px dotted #586A7E;}.dhx_year_month{height:18px;padding-top:3px;border:1px dotted #586A7E;text-align:center;vertical-align:middle;}.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head,.dhx_year_body .dhx_before .dhx_month_head a,.dhx_year_body .dhx_after .dhx_month_head a{color:#E2E3E6!important;}.dhx_year_body .dhx_month_body{height:0;overflow:hidden;}.dhx_month_head.dhx_year_event{background-color:#FFE763;}.dhx_year_body .dhx_before .dhx_month_head,.dhx_year_body .dhx_after .dhx_month_head{cursor:default;}.dhx_tooltip{border:1px solid #BBB;background-image:url(./imgs/databg.png);position:absolute;z-index:9998;width:300px;height:auto;font-family:Tahoma;font-size:8pt;overflow:hidden;}.dhx_tooltip_line{line-height:20px;height:20px;overflow:hidden;}.dhx_tooltip_line .dhx_event_icon{width:20px;height:20px;padding-right:10px;float:left;border-width:0;position:relative;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_tooltip_date{float:left;width:auto;padding-left:5px;text-align:center;}.dhx_text_disabled{color:#887A2E;font-family:Tahoma;font-size:8pt;}.dhx_mini_calendar{-moz-box-shadow:5px 5px 5px #888;-khtml-box-shadow:5px 5px 5px #888;}.dhx_mini_calendar .dhx_month_head{cursor:pointer;}.dhx_mini_calendar .dhx_calendar_click{background-color:#C2D5FC;}.dhx_cal_navline div.dhx_minical_icon{width:18px;height:18px;left:190px;top:1px;cursor:pointer;background-image:url(./imgs/calendar.gif);}.dhx_matrix_scell{height:100%;}.dhx_matrix_cell,.dhx_matrix_scell{overflow:hidden;text-align:center;vertical-align:middle;border-bottom:1px dotted #8894A3;border-right:1px dotted #8894A3;}.dhx_matrix_cell{background-color:white;}.dhx_matrix_line{overflow:hidden;}.dhx_matrix_cell div,.dhx_matrix_scell div{overflow:hidden;text-align:center;height:auto;}.dhx_cal_lsection .dhx_readonly{font-size:9pt;font-size:8pt;padding:2px;color:#887A2E;}.dhx_matrix_scell.folder,.dhx_data_table.folder .dhx_matrix_cell{background-color:#969394;cursor:pointer;}.dhx_matrix_scell .dhx_scell_level0{padding-left:5px;}.dhx_matrix_scell .dhx_scell_level1{padding-left:20px;}.dhx_matrix_scell .dhx_scell_level2{padding-left:35px;}.dhx_matrix_scell .dhx_scell_level3{padding-left:50px;}.dhx_matrix_scell .dhx_scell_level4{padding-left:65px;}.dhx_matrix_scell.folder{font-weight:bold;text-align:left;}.dhx_matrix_scell.folder .dhx_scell_expand{float:left;width:10px;padding-right:3px;}.dhx_matrix_scell.folder .dhx_scell_name{float:left;width:auto;}.dhx_matrix_scell.item .dhx_scell_name{padding-left:15px;text-align:left;}.dhx_data_table.folder .dhx_matrix_cell{border-right:0;}.dhx_section_timeline{overflow:hidden;padding:4px 0 2px 10px;}.dhx_section_timeline select{width:552px;}.dhx_map_area{width:100%;height:100%;overflow-y:auto;overflow-x:hidden;background-image:url(./imgs/databg.png);}.dhx_map_line .dhx_event_icon{width:20px;border-width:0;background:url(./imgs/icon.png) no-repeat;background-position:5px 4px;cursor:pointer;}.dhx_map_line{height:21px;clear:both;overflow:hidden;}.dhx_map{position:absolute;}.dhx_map_line div{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .headline_description{float:left;border-right:1px dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .dhx_map_description{float:left;border-right:0 dotted #8894A3;text-align:center;line-height:21px;overflow:hidden;}.dhx_map_line .line_description{float:left;border-right:1px dotted #8894A3;text-align:left;padding-left:5px;line-height:21px;overflow:hidden;}.dhx_map_line.highlight{background-color:#C4C5CC;}.dhx_map_area .dhx_map_line div{border-right:0 dotted #8894A3;}.dhtmlXTooltip.tooltip{-moz-box-shadow:3px 3px 3px #888;-webkit-box-shadow:3px 3px 3px #888;-o-box-shadow:3px 3px 3px #888;box-shadow:3px 3px 3px #888;filter:progid:DXImageTransform.Microsoft.Shadow(color='#888888',Direction=135,Strength=5);background-color:white;border-left:1px dotted #887A2E;border-top:1px dotted #887A2E;color:#887A2E;cursor:default;padding:10px;position:absolute;z-index:500;}.dhx_cal_checkbox label{padding-left:5px;}.dhx_cal_light .radio{padding:2px 0 2px 10px;}.dhx_cal_light .radio input,.dhx_cal_light .radio label{line-height:15px;}.dhx_cal_light .radio input{vertical-align:middle;margin:0;padding:0;}.dhx_cal_light .radio label{vertical-align:middle;padding-right:10px;}.dhx_cal_light .combo{padding:4px;}.dhx_wa_column{float:left;}.dhx_wa_column_last .dhx_wa_day_cont{border-left:1px dotted #8894A3;}.dhx_wa_scale_bar{font-family:Tahoma;padding-left:10px;font-size:11px;border-top:1px dotted #8894A3;border-bottom:1px dotted #8894A3;}.dhx_wa_day_data{background-color:#FCFEFC;overflow-y:auto;}.dhx_wa_ev_body{border-bottom:1px dotted #789;font-size:12px;padding:5px 0 5px 7px;}.dhx_wa_dnd{font-family:Tahoma;position:absolute;padding-right:7px;color:#887AE2!important;background-color:#FFE763!important;border:1px solid #B7A543;}.dhx_cal_event_selected{background-color:#9cc1db;color:white;}.dhx_second_scale_bar{border-bottom:1px dotted #586A7E;padding-top:2px;}div.dhx_form_repeat input.radio{margin:-4px 0 0 -4px!ie;}div.dhx_form_repeat input.checkbox{margin:0 0 0 -4px!ie;}.dhx_form_repeat,.dhx_form_repeat input{padding:0;margin:0;padding-left:5px;font-family:Tahoma,Verdana;font-size:11px;line-height:24px;}.dhx_form_repeat{overflow:hidden;height:0;background-color:#FFF4B5;}.dhx_cal_light_wide .dhx_form_repeat{background-color:transparent;}.dhx_repeat_center,.dhx_repeat_left{height:115px;padding:10px 0 10px 10px;float:left;}.dhx_repeat_left{width:95px;}.dhx_repeat_center{width:335px;margin-top:12px;}.dhx_repeat_divider{float:left;height:115px;border-left:1px dotted #DCC43E;width:1px;}.dhx_repeat_right{float:right;height:115px;width:160px;padding:10px 3px 10px 10px;margin-top:7px;}input.dhx_repeat_text{height:16px;width:27px;margin:0 4px 0 4px;line-height:18px;padding:0 0 0 2px;}.dhx_form_repeat select{height:20px;width:87px;padding:0 0 0 2px;margin:0 4px 0 4px;}input.dhx_repeat_date{height:18px;width:80px;padding:0 0 0 2px;margin:0 4px 0 4px;background-repeat:no-repeat;background-position:64px 0;border:1px #7f9db9 solid;line-height:18px;}input.dhx_repeat_radio{margin-right:4px;}input.dhx_repeat_checkbox{margin:4px 4px 0 0;}.dhx_repeat_days td{padding-right:5px;}.dhx_repeat_days label{font-size:10px;}.dhx_custom_button_recurring{background-image:url(./imgs/but_repeat.gif);background-position:-5px 20px;width:20px;margin-right:10px;}.dhx_cal_light_rec{width:640px;}.dhx_cal_light_rec .dhx_cal_larea{width:632px;}.dhx_cal_light_rec.dhx_cal_light_wide{width:816px;}.dhx_cal_light_rec.dhx_cal_light_wide .dhx_cal_larea{width:808px;} \ No newline at end of file
diff --git a/samples/dhtmlx/dhtmlxscheduler.js b/samples/dhtmlx/dhtmlxscheduler.js
new file mode 100644
index 0000000..677f902
--- /dev/null
+++ b/samples/dhtmlx/dhtmlxscheduler.js
@@ -0,0 +1,191 @@
+dhtmlx=function(a){for(var b in a)dhtmlx[b]=a[b];return dhtmlx};
+dhtmlx.extend_api=function(a,b,c){var d=window[a];if(d)window[a]=function(a){if(a&&typeof a=="object"&&!a.tagName&&!(a instanceof Array)){var c=d.apply(this,b._init?b._init(a):arguments),g;for(g in dhtmlx)if(b[g])this[b[g]](dhtmlx[g]);for(g in a)if(b[g])this[b[g]](a[g]);else g.indexOf("on")==0&&this.attachEvent(g,a[g])}else c=d.apply(this,arguments);b._patch&&b._patch(this);return c||this},window[a].prototype=d.prototype,c&&dhtmlXHeir(window[a].prototype,c)};
+dhtmlxAjax={get:function(a,b){var c=new dtmlXMLLoaderObject(!0);c.async=arguments.length<3;c.waitCall=b;c.loadXML(a);return c},post:function(a,b,c){var d=new dtmlXMLLoaderObject(!0);d.async=arguments.length<4;d.waitCall=c;d.loadXML(a,!0,b);return d},getSync:function(a){return this.get(a,null,!0)},postSync:function(a,b){return this.post(a,b,null,!0)}};
+function dtmlXMLLoaderObject(a,b,c,d){this.xmlDoc="";this.async=typeof c!="undefined"?c:!0;this.onloadAction=a||null;this.mainObject=b||null;this.waitCall=null;this.rSeed=d||!1;return this}
+dtmlXMLLoaderObject.prototype.waitLoadFunction=function(a){var b=!0;return this.check=function(){if(a&&a.onloadAction!=null&&(!a.xmlDoc.readyState||a.xmlDoc.readyState==4)&&b){b=!1;if(typeof a.onloadAction=="function")a.onloadAction(a.mainObject,null,null,null,a);if(a.waitCall)a.waitCall.call(this,a),a.waitCall=null}}};
+dtmlXMLLoaderObject.prototype.getXMLTopNode=function(a,b){if(this.xmlDoc.responseXML){var c=this.xmlDoc.responseXML.getElementsByTagName(a);c.length==0&&a.indexOf(":")!=-1&&(c=this.xmlDoc.responseXML.getElementsByTagName(a.split(":")[1]));var d=c[0]}else d=this.xmlDoc.documentElement;if(d)return this._retry=!1,d;if(_isIE&&!this._retry){var e=this.xmlDoc.responseText,b=this.xmlDoc;this._retry=!0;this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");this.xmlDoc.async=!1;this.xmlDoc.loadXML(e);return this.getXMLTopNode(a,
+b)}dhtmlxError.throwError("LoadXML","Incorrect XML",[b||this.xmlDoc,this.mainObject]);return document.createElement("DIV")};dtmlXMLLoaderObject.prototype.loadXMLString=function(a){try{var b=new DOMParser;this.xmlDoc=b.parseFromString(a,"text/xml")}catch(c){this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM"),this.xmlDoc.async=this.async,this.xmlDoc.loadXML(a)}this.onloadAction(this.mainObject,null,null,null,this);if(this.waitCall)this.waitCall(),this.waitCall=null};
+dtmlXMLLoaderObject.prototype.loadXML=function(a,b,c,d){this.rSeed&&(a+=(a.indexOf("?")!=-1?"&":"?")+"a_dhx_rSeed="+(new Date).valueOf());this.filePath=a;this.xmlDoc=!_isIE&&window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");if(this.async)this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this);this.xmlDoc.open(b?"POST":"GET",a,this.async);d?(this.xmlDoc.setRequestHeader("User-Agent","dhtmlxRPC v0.1 ("+navigator.userAgent+")"),this.xmlDoc.setRequestHeader("Content-type",
+"text/xml")):b&&this.xmlDoc.setRequestHeader("Content-type","application/x-www-form-urlencoded");this.xmlDoc.setRequestHeader("X-Requested-With","XMLHttpRequest");this.xmlDoc.send(c);this.async||(new this.waitLoadFunction(this))()};dtmlXMLLoaderObject.prototype.destructor=function(){return this.xmlDoc=this.mainObject=this.onloadAction=null};
+dtmlXMLLoaderObject.prototype.xmlNodeToJSON=function(a){for(var b={},c=0;c<a.attributes.length;c++)b[a.attributes[c].name]=a.attributes[c].value;b._tagvalue=a.firstChild?a.firstChild.nodeValue:"";for(c=0;c<a.childNodes.length;c++){var d=a.childNodes[c].tagName;d&&(b[d]||(b[d]=[]),b[d].push(this.xmlNodeToJSON(a.childNodes[c])))}return b};function callerFunction(a,b){return this.handler=function(c){if(!c)c=window.event;a(c,b);return!0}}function getAbsoluteLeft(a){return getOffset(a).left}
+function getAbsoluteTop(a){return getOffset(a).top}function getOffsetSum(a){for(var b=0,c=0;a;)b+=parseInt(a.offsetTop),c+=parseInt(a.offsetLeft),a=a.offsetParent;return{top:b,left:c}}
+function getOffsetRect(a){var b=a.getBoundingClientRect(),c=document.body,d=document.documentElement,e=window.pageYOffset||d.scrollTop||c.scrollTop,f=window.pageXOffset||d.scrollLeft||c.scrollLeft,g=d.clientTop||c.clientTop||0,i=d.clientLeft||c.clientLeft||0,h=b.top+e-g,k=b.left+f-i;return{top:Math.round(h),left:Math.round(k)}}function getOffset(a){return a.getBoundingClientRect&&!_isChrome?getOffsetRect(a):getOffsetSum(a)}
+function convertStringToBoolean(a){typeof a=="string"&&(a=a.toLowerCase());switch(a){case "1":case "true":case "yes":case "y":case 1:case !0:return!0;default:return!1}}function getUrlSymbol(a){return a.indexOf("?")!=-1?"&":"?"}function dhtmlDragAndDropObject(){if(window.dhtmlDragAndDrop)return window.dhtmlDragAndDrop;this.dragStartObject=this.dragStartNode=this.dragNode=this.lastLanding=0;this.tempDOMM=this.tempDOMU=null;this.waitDrag=0;window.dhtmlDragAndDrop=this;return this}
+dhtmlDragAndDropObject.prototype.removeDraggableItem=function(a){a.onmousedown=null;a.dragStarter=null;a.dragLanding=null};dhtmlDragAndDropObject.prototype.addDraggableItem=function(a,b){a.onmousedown=this.preCreateDragCopy;a.dragStarter=b;this.addDragLanding(a,b)};dhtmlDragAndDropObject.prototype.addDragLanding=function(a,b){a.dragLanding=b};
+dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(a){if(!((a||event)&&(a||event).button==2)){if(window.dhtmlDragAndDrop.waitDrag)return window.dhtmlDragAndDrop.waitDrag=0,document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU,document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM,!1;window.dhtmlDragAndDrop.waitDrag=1;window.dhtmlDragAndDrop.tempDOMU=document.body.onmouseup;window.dhtmlDragAndDrop.tempDOMM=document.body.onmousemove;window.dhtmlDragAndDrop.dragStartNode=this;window.dhtmlDragAndDrop.dragStartObject=
+this.dragStarter;document.body.onmouseup=window.dhtmlDragAndDrop.preCreateDragCopy;document.body.onmousemove=window.dhtmlDragAndDrop.callDrag;window.dhtmlDragAndDrop.downtime=(new Date).valueOf();a&&a.preventDefault&&a.preventDefault();return!1}};
+dhtmlDragAndDropObject.prototype.callDrag=function(a){if(!a)a=window.event;dragger=window.dhtmlDragAndDrop;if(!((new Date).valueOf()-dragger.downtime<100)){if(a.button==0&&_isIE)return dragger.stopDrag();if(!dragger.dragNode&&dragger.waitDrag){dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode,a);if(!dragger.dragNode)return dragger.stopDrag();dragger.dragNode.onselectstart=function(){return!1};dragger.gldragNode=dragger.dragNode;document.body.appendChild(dragger.dragNode);
+document.body.onmouseup=dragger.stopDrag;dragger.waitDrag=0;dragger.dragNode.pWindow=window;dragger.initFrameRoute()}if(dragger.dragNode.parentNode!=window.document.body){var b=dragger.gldragNode;if(dragger.gldragNode.old)b=dragger.gldragNode.old;b.parentNode.removeChild(b);var c=dragger.dragNode.pWindow;if(_isIE){var d=document.createElement("Div");d.innerHTML=dragger.dragNode.outerHTML;dragger.dragNode=d.childNodes[0]}else dragger.dragNode=dragger.dragNode.cloneNode(!0);dragger.dragNode.pWindow=
+window;dragger.gldragNode.old=dragger.dragNode;document.body.appendChild(dragger.dragNode);c.dhtmlDragAndDrop.dragNode=dragger.dragNode}dragger.dragNode.style.left=a.clientX+15+(dragger.fx?dragger.fx*-1:0)+(document.body.scrollLeft||document.documentElement.scrollLeft)+"px";dragger.dragNode.style.top=a.clientY+3+(dragger.fy?dragger.fy*-1:0)+(document.body.scrollTop||document.documentElement.scrollTop)+"px";var e=a.srcElement?a.srcElement:a.target;dragger.checkLanding(e,a)}};
+dhtmlDragAndDropObject.prototype.calculateFramePosition=function(a){if(window.name){for(var b=parent.frames[window.name].frameElement.offsetParent,c=0,d=0;b;)c+=b.offsetLeft,d+=b.offsetTop,b=b.offsetParent;if(parent.dhtmlDragAndDrop){var e=parent.dhtmlDragAndDrop.calculateFramePosition(1);c+=e.split("_")[0]*1;d+=e.split("_")[1]*1}if(a)return c+"_"+d;else this.fx=c;this.fy=d}return"0_0"};
+dhtmlDragAndDropObject.prototype.checkLanding=function(a,b){a&&a.dragLanding?(this.lastLanding&&this.lastLanding.dragLanding._dragOut(this.lastLanding),this.lastLanding=a,this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding,this.dragStartNode,b.clientX,b.clientY,b),this.lastLanding_scr=_isIE?b.srcElement:b.target):a&&a.tagName!="BODY"?this.checkLanding(a.parentNode,b):(this.lastLanding&&this.lastLanding.dragLanding._dragOut(this.lastLanding,b.clientX,b.clientY,b),this.lastLanding=
+0,this._onNotFound&&this._onNotFound())};
+dhtmlDragAndDropObject.prototype.stopDrag=function(a,b){dragger=window.dhtmlDragAndDrop;if(!b){dragger.stopFrameRoute();var c=dragger.lastLanding;dragger.lastLanding=null;c&&c.dragLanding._drag(dragger.dragStartNode,dragger.dragStartObject,c,_isIE?event.srcElement:a.target)}dragger.lastLanding=null;dragger.dragNode&&dragger.dragNode.parentNode==document.body&&dragger.dragNode.parentNode.removeChild(dragger.dragNode);dragger.dragNode=0;dragger.gldragNode=0;dragger.fx=0;dragger.fy=0;dragger.dragStartNode=
+0;dragger.dragStartObject=0;document.body.onmouseup=dragger.tempDOMU;document.body.onmousemove=dragger.tempDOMM;dragger.tempDOMU=null;dragger.tempDOMM=null;dragger.waitDrag=0};dhtmlDragAndDropObject.prototype.stopFrameRoute=function(a){a&&window.dhtmlDragAndDrop.stopDrag(1,1);for(var b=0;b<window.frames.length;b++)try{window.frames[b]!=a&&window.frames[b].dhtmlDragAndDrop&&window.frames[b].dhtmlDragAndDrop.stopFrameRoute(window)}catch(c){}try{parent.dhtmlDragAndDrop&&parent!=window&&parent!=a&&parent.dhtmlDragAndDrop.stopFrameRoute(window)}catch(d){}};
+dhtmlDragAndDropObject.prototype.initFrameRoute=function(a,b){if(a)window.dhtmlDragAndDrop.preCreateDragCopy({}),window.dhtmlDragAndDrop.dragStartNode=a.dhtmlDragAndDrop.dragStartNode,window.dhtmlDragAndDrop.dragStartObject=a.dhtmlDragAndDrop.dragStartObject,window.dhtmlDragAndDrop.dragNode=a.dhtmlDragAndDrop.dragNode,window.dhtmlDragAndDrop.gldragNode=a.dhtmlDragAndDrop.dragNode,window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag,window.waitDrag=0,!_isIE&&b&&(!_isFF||w<1.8)&&window.dhtmlDragAndDrop.calculateFramePosition();
+try{parent.dhtmlDragAndDrop&&parent!=window&&parent!=a&&parent.dhtmlDragAndDrop.initFrameRoute(window)}catch(c){}for(var d=0;d<window.frames.length;d++)try{window.frames[d]!=a&&window.frames[d].dhtmlDragAndDrop&&window.frames[d].dhtmlDragAndDrop.initFrameRoute(window,!a||b?1:0)}catch(e){}};w=_OperaRv=x=_isChrome=_isMacOS=_isKHTML=_isOpera=_isIE=_isFF=!1;navigator.userAgent.indexOf("Macintosh")!=-1&&(_isMacOS=!0);navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(_isChrome=!0);
+if(navigator.userAgent.indexOf("Safari")!=-1||navigator.userAgent.indexOf("Konqueror")!=-1){var x=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Safari")+7,5));if(x>525){_isFF=!0;var w=1.9}else _isKHTML=!0}else navigator.userAgent.indexOf("Opera")!=-1?(_isOpera=!0,_OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf("Opera")+6,3))):navigator.appName.indexOf("Microsoft")!=-1?(_isIE=!0,navigator.appVersion.indexOf("MSIE 8.0")!=-1&&document.compatMode!="BackCompat"&&
+(_isIE=8)):(_isFF=!0,w=parseFloat(navigator.userAgent.split("rv:")[1]));
+dtmlXMLLoaderObject.prototype.doXPath=function(a,b,c,d){if(_isKHTML||!_isIE&&!window.XPathResult)return this.doXPathOpera(a,b);if(_isIE)return b||(b=this.xmlDoc.nodeName?this.xmlDoc:this.xmlDoc.responseXML),b||dhtmlxError.throwError("LoadXML","Incorrect XML",[b||this.xmlDoc,this.mainObject]),c!=null&&b.setProperty("SelectionNamespaces","xmlns:xsl='"+c+"'"),d=="single"?b.selectSingleNode(a):b.selectNodes(a)||[];else{var e=b;b||(b=this.xmlDoc.nodeName?this.xmlDoc:this.xmlDoc.responseXML);b||dhtmlxError.throwError("LoadXML",
+"Incorrect XML",[b||this.xmlDoc,this.mainObject]);b.nodeName.indexOf("document")!=-1?e=b:(e=b,b=b.ownerDocument);var f=XPathResult.ANY_TYPE;if(d=="single")f=XPathResult.FIRST_ORDERED_NODE_TYPE;var g=[],i=b.evaluate(a,e,function(){return c},f,null);if(f==XPathResult.FIRST_ORDERED_NODE_TYPE)return i.singleNodeValue;for(var h=i.iterateNext();h;)g[g.length]=h,h=i.iterateNext();return g}};function z(){if(!this.catches)this.catches=[];return this}z.prototype.catchError=function(a,b){this.catches[a]=b};
+z.prototype.throwError=function(a,b,c){if(this.catches[a])return this.catches[a](a,b,c);if(this.catches.ALL)return this.catches.ALL(a,b,c);alert("Error type: "+a+"\nDescription: "+b);return null};window.dhtmlxError=new z;
+dtmlXMLLoaderObject.prototype.doXPathOpera=function(a,b){var c=a.replace(/[\/]+/gi,"/").split("/"),d=null,e=1;if(!c.length)return[];if(c[0]==".")d=[b];else if(c[0]=="")d=(this.xmlDoc.responseXML||this.xmlDoc).getElementsByTagName(c[e].replace(/\[[^\]]*\]/g,"")),e++;else return[];for(;e<c.length;e++)d=this._getAllNamedChilds(d,c[e]);c[e-1].indexOf("[")!=-1&&(d=this._filterXPath(d,c[e-1]));return d};
+dtmlXMLLoaderObject.prototype._filterXPath=function(a,b){for(var c=[],b=b.replace(/[^\[]*\[\@/g,"").replace(/[\[\]\@]*/g,""),d=0;d<a.length;d++)a[d].getAttribute(b)&&(c[c.length]=a[d]);return c};
+dtmlXMLLoaderObject.prototype._getAllNamedChilds=function(a,b){var c=[];_isKHTML&&(b=b.toUpperCase());for(var d=0;d<a.length;d++)for(var e=0;e<a[d].childNodes.length;e++)_isKHTML?a[d].childNodes[e].tagName&&a[d].childNodes[e].tagName.toUpperCase()==b&&(c[c.length]=a[d].childNodes[e]):a[d].childNodes[e].tagName==b&&(c[c.length]=a[d].childNodes[e]);return c};function dhtmlXHeir(a,b){for(var c in b)typeof b[c]=="function"&&(a[c]=b[c]);return a}
+function dhtmlxEvent(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)}dtmlXMLLoaderObject.prototype.xslDoc=null;dtmlXMLLoaderObject.prototype.setXSLParamValue=function(a,b,c){if(!c)c=this.xslDoc;if(c.responseXML)c=c.responseXML;var d=this.doXPath("/xsl:stylesheet/xsl:variable[@name='"+a+"']",c,"http://www.w3.org/1999/XSL/Transform","single");if(d!=null)d.firstChild.nodeValue=b};
+dtmlXMLLoaderObject.prototype.doXSLTransToObject=function(a,b){if(!a)a=this.xslDoc;if(a.responseXML)a=a.responseXML;if(!b)b=this.xmlDoc;if(b.responseXML)b=b.responseXML;if(_isIE){d=new ActiveXObject("Msxml2.DOMDocument.3.0");try{b.transformNodeToObject(a,d)}catch(c){d=b.transformNode(a)}}else{if(!this.XSLProcessor)this.XSLProcessor=new XSLTProcessor,this.XSLProcessor.importStylesheet(a);var d=this.XSLProcessor.transformToDocument(b)}return d};
+dtmlXMLLoaderObject.prototype.doXSLTransToString=function(a,b){var c=this.doXSLTransToObject(a,b);return typeof c=="string"?c:this.doSerialization(c)};dtmlXMLLoaderObject.prototype.doSerialization=function(a){if(!a)a=this.xmlDoc;if(a.responseXML)a=a.responseXML;if(_isIE)return a.xml;else{var b=new XMLSerializer;return b.serializeToString(a)}};
+dhtmlxEventable=function(a){a.dhx_SeverCatcherPath="";a.attachEvent=function(a,c,d){a="ev_"+a.toLowerCase();this[a]||(this[a]=new this.eventCatcher(d||this));return a+":"+this[a].addEvent(c)};a.callEvent=function(a,c){a="ev_"+a.toLowerCase();return this[a]?this[a].apply(this,c):!0};a.checkEvent=function(a){return!!this["ev_"+a.toLowerCase()]};a.eventCatcher=function(a){var c=[],d=function(){for(var d=!0,f=0;f<c.length;f++)if(c[f]!=null)var g=c[f].apply(a,arguments),d=d&&g;return d};d.addEvent=function(a){typeof a!=
+"function"&&(a=eval(a));return a?c.push(a)-1:!1};d.removeEvent=function(a){c[a]=null};return d};a.detachEvent=function(a){if(a!=!1){var c=a.split(":");this[c[0]].removeEvent(c[1])}};a.detachAllEvents=function(){for(var a in this)a.indexOf("ev_")==0&&delete this[a]}};
+function dataProcessor(a){this.serverProcessor=a;this.action_param="!nativeeditor_status";this.object=null;this.updatedRows=[];this.autoUpdate=!0;this.updateMode="cell";this._tMode="GET";this.post_delim="_";this._waitMode=0;this._in_progress={};this._invalid={};this.mandatoryFields=[];this.messages=[];this.styles={updated:"font-weight:bold;",inserted:"font-weight:bold;",deleted:"text-decoration : line-through;",invalid:"background-color:FFE0E0;",invalid_cell:"border-bottom:2px solid red;",clear:"font-weight:normal;text-decoration:none;"};
+this.enableUTFencoding(!0);dhtmlxEventable(this);return this}
+dataProcessor.prototype={setTransactionMode:function(a,b){this._tMode=a;this._tSend=b},escape:function(a){return this._utf?encodeURIComponent(a):escape(a)},enableUTFencoding:function(a){this._utf=convertStringToBoolean(a)},setDataColumns:function(a){this._columns=typeof a=="string"?a.split(","):a},getSyncState:function(){return!this.updatedRows.length},enableDataNames:function(a){this._endnm=convertStringToBoolean(a)},enablePartialDataSend:function(a){this._changed=convertStringToBoolean(a)},setUpdateMode:function(a,
+b){this.autoUpdate=a=="cell";this.updateMode=a;this.dnd=b},ignore:function(a,b){this._silent_mode=!0;a.call(b||window);this._silent_mode=!1},setUpdated:function(a,b,c){if(!this._silent_mode){var d=this.findRow(a),c=c||"updated",e=this.obj.getUserData(a,this.action_param);e&&c=="updated"&&(c=e);b?(this.set_invalid(a,!1),this.updatedRows[d]=a,this.obj.setUserData(a,this.action_param,c),this._in_progress[a]&&(this._in_progress[a]="wait")):this.is_invalid(a)||(this.updatedRows.splice(d,1),this.obj.setUserData(a,
+this.action_param,""));b||this._clearUpdateFlag(a);this.markRow(a,b,c);b&&this.autoUpdate&&this.sendData(a)}},_clearUpdateFlag:function(){},markRow:function(a,b,c){var d="",e=this.is_invalid(a);e&&(d=this.styles[e],b=!0);if(this.callEvent("onRowMark",[a,b,c,e])&&(d=this.styles[b?c:"clear"]+d,this.obj[this._methods[0]](a,d),e&&e.details)){d+=this.styles[e+"_cell"];for(var f=0;f<e.details.length;f++)if(e.details[f])this.obj[this._methods[1]](a,f,d)}},getState:function(a){return this.obj.getUserData(a,
+this.action_param)},is_invalid:function(a){return this._invalid[a]},set_invalid:function(a,b,c){c&&(b={value:b,details:c,toString:function(){return this.value.toString()}});this._invalid[a]=b},checkBeforeUpdate:function(){return!0},sendData:function(a){if(!this._waitMode||!(this.obj.mytype=="tree"||this.obj._h2)){this.obj.editStop&&this.obj.editStop();if(typeof a=="undefined"||this._tSend)return this.sendAllData();if(this._in_progress[a])return!1;this.messages=[];if(!this.checkBeforeUpdate(a)&&this.callEvent("onValidatationError",
+[a,this.messages]))return!1;this._beforeSendData(this._getRowData(a),a)}},_beforeSendData:function(a,b){if(!this.callEvent("onBeforeUpdate",[b,this.getState(b),a]))return!1;this._sendData(a,b)},serialize:function(a,b){if(typeof a=="string")return a;if(typeof b!="undefined")return this.serialize_one(a,"");else{var c=[],d=[],e;for(e in a)a.hasOwnProperty(e)&&(c.push(this.serialize_one(a[e],e+this.post_delim)),d.push(e));c.push("ids="+this.escape(d.join(",")));return c.join("&")}},serialize_one:function(a,
+b){if(typeof a=="string")return a;var c=[],d;for(d in a)a.hasOwnProperty(d)&&c.push(this.escape((b||"")+d)+"="+this.escape(a[d]));return c.join("&")},_sendData:function(a,b){if(a){if(!this.callEvent("onBeforeDataSending",b?[b,this.getState(b),a]:[null,null,a]))return!1;b&&(this._in_progress[b]=(new Date).valueOf());var c=new dtmlXMLLoaderObject(this.afterUpdate,this,!0),d=this.serverProcessor+(this._user?getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+this.obj.getUserData(0,
+"version")].join("&"):"");this._tMode!="POST"?c.loadXML(d+(d.indexOf("?")!=-1?"&":"?")+this.serialize(a,b)):c.loadXML(d,!0,this.serialize(a,b));this._waitMode++}},sendAllData:function(){if(this.updatedRows.length){this.messages=[];for(var a=!0,b=0;b<this.updatedRows.length;b++)a&=this.checkBeforeUpdate(this.updatedRows[b]);if(!a&&!this.callEvent("onValidatationError",["",this.messages]))return!1;if(this._tSend)this._sendData(this._getAllData());else for(b=0;b<this.updatedRows.length;b++)if(!this._in_progress[this.updatedRows[b]]&&
+!this.is_invalid(this.updatedRows[b])&&(this._beforeSendData(this._getRowData(this.updatedRows[b]),this.updatedRows[b]),this._waitMode&&(this.obj.mytype=="tree"||this.obj._h2)))break}},_getAllData:function(){for(var a={},b=!1,c=0;c<this.updatedRows.length;c++){var d=this.updatedRows[c];!this._in_progress[d]&&!this.is_invalid(d)&&this.callEvent("onBeforeUpdate",[d,this.getState(d)])&&(a[d]=this._getRowData(d,d+this.post_delim),b=!0,this._in_progress[d]=(new Date).valueOf())}return b?a:null},setVerificator:function(a,
+b){this.mandatoryFields[a]=b||function(a){return a!=""}},clearVerificator:function(a){this.mandatoryFields[a]=!1},findRow:function(a){for(var b=0,b=0;b<this.updatedRows.length;b++)if(a==this.updatedRows[b])break;return b},defineAction:function(a,b){if(!this._uActions)this._uActions=[];this._uActions[a]=b},afterUpdateCallback:function(a,b,c,d){var e=a,f=c!="error"&&c!="invalid";f||this.set_invalid(a,c);if(this._uActions&&this._uActions[c]&&!this._uActions[c](d))return delete this._in_progress[e];this._in_progress[e]!=
+"wait"&&this.setUpdated(a,!1);var g=a;switch(c){case "update":case "updated":case "inserted":case "insert":b!=a&&(this.obj[this._methods[2]](a,b),a=b);break;case "delete":case "deleted":return this.obj.setUserData(a,this.action_param,"true_deleted"),this.obj[this._methods[3]](a),delete this._in_progress[e],this.callEvent("onAfterUpdate",[a,c,b,d])}this._in_progress[e]!="wait"?(f&&this.obj.setUserData(a,this.action_param,""),delete this._in_progress[e]):(delete this._in_progress[e],this.setUpdated(b,
+!0,this.obj.getUserData(a,this.action_param)));this.callEvent("onAfterUpdate",[a,c,b,d])},afterUpdate:function(a,b,c,d,e){e.getXMLTopNode("data");if(e.xmlDoc.responseXML){for(var f=e.doXPath("//data/action"),g=0;g<f.length;g++){var i=f[g],h=i.getAttribute("type"),k=i.getAttribute("sid"),j=i.getAttribute("tid");a.afterUpdateCallback(k,j,h,i)}a.finalizeUpdate()}},finalizeUpdate:function(){this._waitMode&&this._waitMode--;(this.obj.mytype=="tree"||this.obj._h2)&&this.updatedRows.length&&this.sendData();
+this.callEvent("onAfterUpdateFinish",[]);this.updatedRows.length||this.callEvent("onFullSync",[])},init:function(a){this.obj=a;this.obj._dp_init&&this.obj._dp_init(this)},setOnAfterUpdate:function(a){this.attachEvent("onAfterUpdate",a)},enableDebug:function(){},setOnBeforeUpdateHandler:function(a){this.attachEvent("onBeforeDataSending",a)},setAutoUpdate:function(a,b){a=a||2E3;this._user=b||(new Date).valueOf();this._need_update=!1;this._loader=null;this._update_busy=!1;this.attachEvent("onAfterUpdate",
+function(a,b,c,g){this.afterAutoUpdate(a,b,c,g)});this.attachEvent("onFullSync",function(){this.fullSync()});var c=this;window.setInterval(function(){c.loadUpdate()},a)},afterAutoUpdate:function(a,b){return b=="collision"?(this._need_update=!0,!1):!0},fullSync:function(){if(this._need_update==!0)this._need_update=!1,this.loadUpdate();return!0},getUpdates:function(a,b){if(this._update_busy)return!1;else this._update_busy=!0;this._loader=this._loader||new dtmlXMLLoaderObject(!0);this._loader.async=
+!0;this._loader.waitCall=b;this._loader.loadXML(a)},_v:function(a){return a.firstChild?a.firstChild.nodeValue:""},_a:function(a){for(var b=[],c=0;c<a.length;c++)b[c]=this._v(a[c]);return b},loadUpdate:function(){var a=this,b=this.obj.getUserData(0,"version"),c=this.serverProcessor+getUrlSymbol(this.serverProcessor)+["dhx_user="+this._user,"dhx_version="+b].join("&"),c=c.replace("editing=true&","");this.getUpdates(c,function(){var b=a._loader.doXPath("//userdata");a.obj.setUserData(0,"version",a._v(b[0]));
+var c=a._loader.doXPath("//update");if(c.length){a._silent_mode=!0;for(var f=0;f<c.length;f++){var g=c[f].getAttribute("status"),i=c[f].getAttribute("id"),h=c[f].getAttribute("parent");switch(g){case "inserted":a.callEvent("insertCallback",[c[f],i,h]);break;case "updated":a.callEvent("updateCallback",[c[f],i,h]);break;case "deleted":a.callEvent("deleteCallback",[c[f],i,h])}}a._silent_mode=!1}a._update_busy=!1;a=null})}};
+if(window.dhtmlXGridObject)dhtmlXGridObject.prototype._init_point_connector=dhtmlXGridObject.prototype._init_point,dhtmlXGridObject.prototype._init_point=function(){var a=function(a){a=a.replace(/(\?|\&)connector[^\f]*/g,"");return a+(a.indexOf("?")!=-1?"&":"?")+"connector=true"+(this.hdr.rows.length>0?"&dhx_no_header=1":"")},b=function(b){return a.call(this,b)+(this._connector_sorting||"")+(this._connector_filter||"")},c=function(a,c,d){this._connector_sorting="&dhx_sort["+c+"]="+d;return b.call(this,
+a)},d=function(a,c,d){for(var i=0;i<c.length;i++)c[i]="dhx_filter["+c[i]+"]="+encodeURIComponent(d[i]);this._connector_filter="&"+c.join("&");return b.call(this,a)};this.attachEvent("onCollectValues",function(a){return this._con_f_used[a]?typeof this._con_f_used[a]=="object"?this._con_f_used[a]:!1:!0});this.attachEvent("onDynXLS",function(){this.xmlFileUrl=b.call(this,this.xmlFileUrl);return!0});this.attachEvent("onBeforeSorting",function(a,b,d){if(b=="connector"){var i=this;this.clearAndLoad(c.call(this,
+this.xmlFileUrl,a,d),function(){i.setSortImgState(!0,a,d)});return!1}return!0});this.attachEvent("onFilterStart",function(a,b){return this._con_f_used.length?(this.clearAndLoad(d.call(this,this.xmlFileUrl,a,b)),!1):!0});this.attachEvent("onXLE",function(){});this._init_point_connector&&this._init_point_connector()},dhtmlXGridObject.prototype._con_f_used=[],dhtmlXGridObject.prototype._in_header_connector_text_filter=function(a,b){this._con_f_used[b]||(this._con_f_used[b]=1);return this._in_header_text_filter(a,
+b)},dhtmlXGridObject.prototype._in_header_connector_select_filter=function(a,b){this._con_f_used[b]||(this._con_f_used[b]=2);return this._in_header_select_filter(a,b)},dhtmlXGridObject.prototype.load_connector=dhtmlXGridObject.prototype.load,dhtmlXGridObject.prototype.load=function(a,b,c){if(!this._colls_loaded&&this.cellType){for(var d=[],e=0;e<this.cellType.length;e++)(this.cellType[e].indexOf("co")==0||this._con_f_used[e]==2)&&d.push(e);d.length&&(arguments[0]+=(arguments[0].indexOf("?")!=-1?"&":
+"?")+"connector=true&dhx_colls="+d.join(","))}return this.load_connector.apply(this,arguments)},dhtmlXGridObject.prototype._parseHead_connector=dhtmlXGridObject.prototype._parseHead,dhtmlXGridObject.prototype._parseHead=function(a,b,c){this._parseHead_connector.apply(this,arguments);if(!this._colls_loaded){for(var d=this.xmlLoader.doXPath("./coll_options",arguments[0]),e=0;e<d.length;e++){var f=d[e].getAttribute("for"),g=[],i=null;this.cellType[f]=="combo"&&(i=this.getColumnCombo(f));this.cellType[f].indexOf("co")==
+0&&(i=this.getCombo(f));for(var h=this.xmlLoader.doXPath("./item",d[e]),k=0;k<h.length;k++){var j=h[k].getAttribute("value");if(i){var l=h[k].getAttribute("label")||j;i.addOption?i.addOption([[j,l]]):i.put(j,l);g[g.length]=l}else g[g.length]=j}this._con_f_used[f*1]&&(this._con_f_used[f*1]=g)}this._colls_loaded=!0}};
+if(window.dataProcessor)dataProcessor.prototype.init_original=dataProcessor.prototype.init,dataProcessor.prototype.init=function(a){this.init_original(a);a._dataprocessor=this;this.setTransactionMode("POST",!0);this.serverProcessor+=(this.serverProcessor.indexOf("?")!=-1?"&":"?")+"editing=true"};dhtmlxError.catchError("LoadXML",function(a,b,c){alert(c[0].responseText)});window.dhtmlXScheduler=window.scheduler={version:3};dhtmlxEventable(scheduler);
+scheduler.init=function(a,b,c){b=b||new Date;c=c||"week";scheduler.date.init();this._obj=typeof a=="string"?document.getElementById(a):a;this._els=[];this._scroll=!0;this._quirks=_isIE&&document.compatMode=="BackCompat";this._quirks7=_isIE&&navigator.appVersion.indexOf("MSIE 8")==-1;this.get_elements();this.init_templates();this.set_actions();dhtmlxEvent(window,"resize",function(){window.clearTimeout(scheduler._resize_timer);scheduler._resize_timer=window.setTimeout(function(){scheduler.callEvent("onSchedulerResize",
+[])&&scheduler.update_view()},100)});this.set_sizes();scheduler.callEvent("onSchedulerReady",[]);this.setCurrentView(b,c)};scheduler.xy={nav_height:22,min_event_height:40,scale_width:50,bar_height:20,scroll_width:18,scale_height:20,month_scale_height:20,menu_width:25,margin_top:0,margin_left:0,editor_width:140};scheduler.keys={edit_save:13,edit_cancel:27};
+scheduler.set_sizes=function(){var a=this._x=this._obj.clientWidth-this.xy.margin_left,b=this._y=this._obj.clientHeight-this.xy.margin_top,c=this._table_view?0:this.xy.scale_width+this.xy.scroll_width,d=this._table_view?-1:this.xy.scale_width;this.set_xy(this._els.dhx_cal_navline[0],a,this.xy.nav_height,0,0);this.set_xy(this._els.dhx_cal_header[0],a-c,this.xy.scale_height,d,this.xy.nav_height+(this._quirks?-1:1));var e=this._els.dhx_cal_navline[0].offsetHeight;if(e>0)this.xy.nav_height=e;var f=this.xy.scale_height+
+this.xy.nav_height+(this._quirks?-2:0);this.set_xy(this._els.dhx_cal_data[0],a,b-(f+2),0,f+2)};scheduler.set_xy=function(a,b,c,d,e){a.style.width=Math.max(0,b)+"px";a.style.height=Math.max(0,c)+"px";if(arguments.length>3)a.style.left=d+"px",a.style.top=e+"px"};
+scheduler.get_elements=function(){for(var a=this._obj.getElementsByTagName("DIV"),b=0;b<a.length;b++){var c=a[b].className;this._els[c]||(this._els[c]=[]);this._els[c].push(a[b]);var d=scheduler.locale.labels[a[b].getAttribute("name")||c];if(d)a[b].innerHTML=d}};
+scheduler.set_actions=function(){for(var a in this._els)if(this._click[a])for(var b=0;b<this._els[a].length;b++)this._els[a][b].onclick=scheduler._click[a];this._obj.onselectstart=function(){return!1};this._obj.onmousemove=function(a){scheduler._on_mouse_move(a||event)};this._obj.onmousedown=function(a){scheduler._on_mouse_down(a||event)};this._obj.onmouseup=function(a){scheduler._on_mouse_up(a||event)};this._obj.ondblclick=function(a){scheduler._on_dbl_click(a||event)}};
+scheduler.select=function(a){if(!this._table_view&&this.getEvent(a)._timed&&this._select_id!=a)this.editStop(!1),this.unselect(),this._select_id=a,this.updateEvent(a)};scheduler.unselect=function(a){if(!(a&&a!=this._select_id)){var b=this._select_id;this._select_id=null;b&&this.updateEvent(b)}};scheduler.getState=function(){return{mode:this._mode,date:this._date,min_date:this._min_date,max_date:this._max_date,editor_id:this._edit_id,lightbox_id:this._lightbox_id,new_event:this._new_event}};
+scheduler._click={dhx_cal_data:function(a){var b=a?a.target:event.srcElement,c=scheduler._locate_event(b),a=a||event;if(!(c&&!scheduler.callEvent("onClick",[c,a])||scheduler.config.readonly))if(c){scheduler.select(c);var d=b.className;if(d.indexOf("_icon")!=-1)scheduler._click.buttons[d.split(" ")[1].replace("icon_","")](c)}else scheduler._close_not_saved()},dhx_cal_prev_button:function(){scheduler._click.dhx_cal_next_button(0,-1)},dhx_cal_next_button:function(a,b){scheduler.setCurrentView(scheduler.date.add(scheduler.date[scheduler._mode+
+"_start"](scheduler._date),b||1,scheduler._mode))},dhx_cal_today_button:function(){scheduler.setCurrentView(new Date)},dhx_cal_tab:function(){var a=this.getAttribute("name"),b=a.substring(0,a.search("_tab"));scheduler.setCurrentView(scheduler._date,b)},buttons:{"delete":function(a){var b=scheduler.locale.labels.confirm_deleting;(!b||confirm(b))&&scheduler.deleteEvent(a)},edit:function(a){scheduler.edit(a)},save:function(){scheduler.editStop(!0)},details:function(a){scheduler.showLightbox(a)},cancel:function(){scheduler.editStop(!1)}}};
+scheduler.addEventNow=function(a,b,c){var d={};a&&a.constructor.toString().match(/object/i)!==null&&(d=a,a=null);var e=(this.config.event_duration||this.config.time_step)*6E4;a||(a=Math.round((new Date).valueOf()/e)*e);var f=new Date(a);if(!b){var g=this.config.first_hour;g>f.getHours()&&(f.setHours(g),a=f.valueOf());b=a+e}var i=new Date(b);f.valueOf()==i.valueOf()&&i.setTime(i.valueOf()+e);d.start_date=d.start_date||f;d.end_date=d.end_date||i;d.text=d.text||this.locale.labels.new_event;d.id=this._drag_id=
+this.uid();this._drag_mode="new-size";this._loading=!0;this.addEvent(d);this.callEvent("onEventCreated",[this._drag_id,c]);this._loading=!1;this._drag_event={};this._on_mouse_up(c)};
+scheduler._on_dbl_click=function(a,b){b=b||a.target||a.srcElement;if(!this.config.readonly){var c=b.className.split(" ")[0];switch(c){case "dhx_scale_holder":case "dhx_scale_holder_now":case "dhx_month_body":case "dhx_wa_day_data":if(!scheduler.config.dblclick_create)break;var d=this._mouse_coords(a),e=this._min_date.valueOf()+(d.y*this.config.time_step+(this._table_view?0:d.x)*1440)*6E4,e=this._correct_shift(e);this.addEventNow(e,null,a);break;case "dhx_body":case "dhx_wa_ev_body":case "dhx_cal_event_line":case "dhx_cal_event_clear":var f=
+this._locate_event(b);if(!this.callEvent("onDblClick",[f,a]))break;this.config.details_on_dblclick||this._table_view||!this.getEvent(f)._timed?this.showLightbox(f):this.edit(f);break;case "":if(b.parentNode)return scheduler._on_dbl_click(a,b.parentNode);default:var g=this["dblclick_"+c];g&&g.call(this,a)}}};
+scheduler._mouse_coords=function(a){var b,c=document.body,d=document.documentElement;b=a.pageX||a.pageY?{x:a.pageX,y:a.pageY}:{x:a.clientX+(c.scrollLeft||d.scrollLeft||0)-c.clientLeft,y:a.clientY+(c.scrollTop||d.scrollTop||0)-c.clientTop};b.x-=getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);b.y-=getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els.dhx_cal_data[0].scrollTop;b.ev=a;var e=this["mouse_"+this._mode];if(e)return e.call(this,
+b);if(this._table_view){for(var f=0,f=1;f<this._colsS.heights.length;f++)if(this._colsS.heights[f]>b.y)break;b.y=(Math.max(0,Math.ceil(b.x/this._cols[0])-1)+Math.max(0,f-1)*7)*1440/this.config.time_step;b.x=0}else b.x=Math.max(0,Math.ceil(b.x/this._cols[0])-1),b.y=Math.max(0,Math.ceil(b.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);return b};
+scheduler._close_not_saved=function(){if((new Date).valueOf()-(scheduler._new_event||0)>500&&scheduler._edit_id){var a=scheduler.locale.labels.confirm_closing;(!a||confirm(a))&&scheduler.editStop(scheduler.config.positive_closing)}};scheduler._correct_shift=function(a,b){return a-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(a)).getTimezoneOffset())*6E4*(b?-1:1)};
+scheduler._on_mouse_move=function(a){if(this._drag_mode){var b=this._mouse_coords(a);if(!this._drag_pos||b.custom||this._drag_pos.x!=b.x||this._drag_pos.y!=b.y){this._edit_id!=this._drag_id&&this._close_not_saved();this._drag_pos=b;if(this._drag_mode=="create"){this._close_not_saved();this._loading=!0;var c=this._min_date.valueOf()+(b.y*this.config.time_step+(this._table_view?0:b.x)*1440)*6E4,c=this._correct_shift(c);if(!this._drag_start){this._drag_start=c;return}var d=c;if(d==this._drag_start)return;
+this._drag_id=this.uid();this.addEvent(new Date(this._drag_start),new Date(d),this.locale.labels.new_event,this._drag_id,b.fields);this.callEvent("onEventCreated",[this._drag_id,a]);this._loading=!1;this._drag_mode="new-size"}var e=this.getEvent(this._drag_id);if(this._drag_mode=="move")c=this._min_date.valueOf()+(b.y*this.config.time_step+b.x*1440)*6E4,!b.custom&&this._table_view&&(c+=this.date.time_part(e.start_date)*1E3),c=this._correct_shift(c),d=e.end_date.valueOf()-(e.start_date.valueOf()-c);
+else{c=e.start_date.valueOf();if(this._table_view)d=this._min_date.valueOf()+b.y*this.config.time_step*6E4+(b.custom?0:864E5),this._mode=="month"&&(d=this._correct_shift(d,!1));else if(d=this.date.date_part(new Date(e.end_date)).valueOf()+b.y*this.config.time_step*6E4,this._els.dhx_cal_data[0].style.cursor="s-resize",this._mode=="week"||this._mode=="day")d=this._correct_shift(d);if(this._drag_mode=="new-size")if(d<=this._drag_start)var f=b.shift||(this._table_view&&!b.custom?864E5:0),c=d-(b.shift?
+0:f),d=this._drag_start+(f||this.config.time_step*6E4);else c=this._drag_start;else d<=c&&(d=c+this.config.time_step*6E4)}var g=new Date(d-1),i=new Date(c);if(this._table_view||g.getDate()==i.getDate()&&g.getHours()<this.config.last_hour||scheduler._wa&&scheduler._wa._dnd)e.start_date=i,e.end_date=new Date(d),this.config.update_render?this.update_view():this.updateEvent(this._drag_id);this._table_view&&this.for_rendered(this._drag_id,function(a){a.className+=" dhx_in_move"})}}else if(scheduler.checkEvent("onMouseMove")){var h=
+this._locate_event(a.target||a.srcElement);this.callEvent("onMouseMove",[h,a])}};scheduler._on_mouse_context=function(a,b){return this.callEvent("onContextMenu",[this._locate_event(b),a])};
+scheduler._on_mouse_down=function(a,b){if(!this.config.readonly&&!this._drag_mode){b=b||a.target||a.srcElement;if(a.button==2||a.ctrlKey)return this._on_mouse_context(a,b);switch(b.className.split(" ")[0]){case "dhx_cal_event_line":case "dhx_cal_event_clear":if(this._table_view)this._drag_mode="move";break;case "dhx_header":case "dhx_title":case "dhx_wa_ev_body":this._drag_mode="move";break;case "dhx_footer":this._drag_mode="resize";break;case "dhx_scale_holder":case "dhx_scale_holder_now":case "dhx_month_body":case "dhx_matrix_cell":this._drag_mode=
+"create";break;case "":if(b.parentNode)return scheduler._on_mouse_down(a,b.parentNode);default:this._drag_id=this._drag_mode=null}if(this._drag_mode){var c=this._locate_event(b);!this.config["drag_"+this._drag_mode]||!this.callEvent("onBeforeDrag",[c,this._drag_mode,a])?this._drag_mode=this._drag_id=0:(this._drag_id=c,this._drag_event=scheduler._lame_copy({},this._copy_event(this.getEvent(this._drag_id)||{})))}this._drag_start=null}};
+scheduler._on_mouse_up=function(a){if(this._drag_mode&&this._drag_id){this._els.dhx_cal_data[0].style.cursor="default";var b=this.getEvent(this._drag_id);if(this._drag_event._dhx_changed||!this._drag_event.start_date||b.start_date.valueOf()!=this._drag_event.start_date.valueOf()||b.end_date.valueOf()!=this._drag_event.end_date.valueOf()){var c=this._drag_mode=="new-size";if(this.callEvent("onBeforeEventChanged",[b,a,c]))if(c&&this.config.edit_on_create){this.unselect();this._new_event=new Date;if(this._table_view||
+this.config.details_on_create)return this._drag_mode=null,this.showLightbox(this._drag_id);this._drag_pos=!0;this._select_id=this._edit_id=this._drag_id}else this._new_event||this.callEvent(c?"onEventAdded":"onEventChanged",[this._drag_id,this.getEvent(this._drag_id)]);else c?this.deleteEvent(b.id,!0):(this._drag_event._dhx_changed=!1,scheduler._lame_copy(b,this._drag_event),this.updateEvent(b.id))}this._drag_pos&&this.render_view_data()}this._drag_pos=this._drag_mode=null};
+scheduler.update_view=function(){this._reset_scale();if(this._load_mode&&this._load())return this._render_wait=!0;this.render_view_data()};
+scheduler.setCurrentView=function(a,b){b=b||this._mode;if(this.callEvent("onBeforeViewChange",[this._mode,this._date,b,a])){if(this[this._mode+"_view"]&&b&&this._mode!=b)this[this._mode+"_view"](!1);this._close_not_saved();var c="dhx_multi_day";this._els[c]&&(this._els[c][0].parentNode.removeChild(this._els[c][0]),this._els[c]=null);this._mode=b;this._date=a;this._table_view=this._mode=="month";for(var d=this._els.dhx_cal_tab,e=0;e<d.length;e++)d[e].className="dhx_cal_tab"+(d[e].getAttribute("name")==
+this._mode+"_tab"?" active":"");var f=this[this._mode+"_view"];f?f(!0):this.update_view();this.callEvent("onViewChange",[this._mode,this._date])}};scheduler._render_x_header=function(a,b,c,d){var e=document.createElement("DIV");e.className="dhx_scale_bar";this.set_xy(e,this._cols[a]-1,this.xy.scale_height-2,b,0);e.innerHTML=this.templates[this._mode+"_scale_date"](c,this._mode);d.appendChild(e)};
+scheduler._reset_scale=function(){if(this.templates[this._mode+"_date"]){var a=this._els.dhx_cal_header[0],b=this._els.dhx_cal_data[0],c=this.config;a.innerHTML="";b.scrollTop=0;b.innerHTML="";var d=(c.readonly||!c.drag_resize?" dhx_resize_denied":"")+(c.readonly||!c.drag_move?" dhx_move_denied":"");if(d)b.className="dhx_cal_data"+d;this._cols=[];this._colsS={height:0};this._dy_shift=0;this.set_sizes();var e=parseInt(a.style.width),f=0,g,i,h,k;i=this.date[this._mode+"_start"](new Date(this._date.valueOf()));
+g=h=this._table_view?scheduler.date.week_start(i):i;k=this.date.date_part(new Date);var j=scheduler.date.add(i,1,this._mode),l=7;if(!this._table_view){var o=this.date["get_"+this._mode+"_end"];o&&(j=o(i));l=Math.round((j.valueOf()-i.valueOf())/864E5)}this._min_date=g;this._els.dhx_cal_date[0].innerHTML=this.templates[this._mode+"_date"](i,j,this._mode);for(var m=0;m<l;m++){this._cols[m]=Math.floor(e/(l-m));this._render_x_header(m,f,g,a);if(!this._table_view){var n=document.createElement("DIV"),p=
+"dhx_scale_holder";g.valueOf()==k.valueOf()&&(p="dhx_scale_holder_now");n.className=p+" "+this.templates.week_date_class(g,k);this.set_xy(n,this._cols[m]-1,c.hour_size_px*(c.last_hour-c.first_hour),f+this.xy.scale_width+1,0);b.appendChild(n);this.callEvent("onScaleAdd",[n,g])}g=this.date.add(g,1,"day");e-=this._cols[m];f+=this._cols[m];this._colsS[m]=(this._cols[m-1]||0)+(this._colsS[m-1]||(this._table_view?0:this.xy.scale_width+2));this._colsS.col_length=l+1}this._max_date=g;this._colsS[l]=this._cols[l-
+1]+this._colsS[l-1];if(this._table_view)this._reset_month_scale(b,i,h);else{this._reset_hours_scale(b,i,h);if(c.multi_day){var q="dhx_multi_day";this._els[q]&&(this._els[q][0].parentNode.removeChild(this._els[q][0]),this._els[q]=null);var v=this._els.dhx_cal_navline[0],s=v.offsetHeight+this._els.dhx_cal_header[0].offsetHeight+1,r=document.createElement("DIV");r.className=q;r.style.visibility="hidden";this.set_xy(r,this._colsS[this._colsS.col_length-1]+this.xy.scroll_width,0,0,s);b.parentNode.insertBefore(r,
+b);var u=r.cloneNode(!0);u.className=q+"_icon";u.style.visibility="hidden";this.set_xy(u,this.xy.scale_width,0,0,s);r.appendChild(u);this._els[q]=[r,u];this._els[q][0].onclick=this._click.dhx_cal_data}if(this.config.mark_now){var t=new Date;if(t<this._max_date&&t>this._min_date&&t.getHours()>=this.config.first_hour&&t.getHours()<this.config.last_hour){var A=this.locate_holder_day(t),B=t.getHours()*60+t.getMinutes(),y=document.createElement("DIV");y.className="dhx_now_time";y.style.top=Math.round((B*
+6E4-this.config.first_hour*36E5)*this.config.hour_size_px/36E5)%(this.config.hour_size_px*24)+1+"px";b.childNodes[A].appendChild(y)}}}}};
+scheduler._reset_hours_scale=function(a){var b=document.createElement("DIV");b.className="dhx_scale_holder";for(var c=new Date(1980,1,1,this.config.first_hour,0,0),d=this.config.first_hour*1;d<this.config.last_hour;d++){var e=document.createElement("DIV");e.className="dhx_scale_hour";e.style.height=this.config.hour_size_px-(this._quirks?0:1)+"px";e.style.width=this.xy.scale_width+"px";e.innerHTML=scheduler.templates.hour_scale(c);b.appendChild(e);c=this.date.add(c,1,"hour")}a.appendChild(b);if(this.config.scroll_hour)a.scrollTop=
+this.config.hour_size_px*(this.config.scroll_hour-this.config.first_hour)};
+scheduler._reset_month_scale=function(a,b,c){var d=scheduler.date.add(b,1,"month"),e=new Date;this.date.date_part(e);this.date.date_part(c);var f=Math.ceil(Math.round((d.valueOf()-c.valueOf())/864E5)/7),g=[],i=Math.floor(a.clientHeight/f)-22;this._colsS.height=i+22;for(var h=this._colsS.heights=[],k=0;k<=7;k++)g[k]=" style='height:"+i+"px; width:"+((this._cols[k]||0)-1)+"px;' ";var j=0;this._min_date=c;for(var l="<table cellpadding='0' cellspacing='0'>",k=0;k<f;k++){l+="<tr>";for(var o=0;o<7;o++){l+=
+"<td";var m="";c<b?m="dhx_before":c>=d?m="dhx_after":c.valueOf()==e.valueOf()&&(m="dhx_now");l+=" class='"+m+" "+this.templates.month_date_class(c,e)+"' ";l+="><div class='dhx_month_head'>"+this.templates.month_day(c)+"</div><div class='dhx_month_body' "+g[o]+"></div></td>";c=this.date.add(c,1,"day")}l+="</tr>";h[k]=j;j+=this._colsS.height}l+="</table>";this._max_date=c;a.innerHTML=l;return c};
+scheduler.getLabel=function(a,b){for(var c=this.config.lightbox.sections,d=0;d<c.length;d++)if(c[d].map_to==a)for(var e=c[d].options,f=0;f<e.length;f++)if(e[f].key==b)return e[f].label;return""};scheduler.updateCollection=function(a,b){var c=scheduler.serverList(a);if(!c)return!1;c.splice(0,c.length);c.push.apply(c,b||[]);scheduler.callEvent("onOptionsLoad",[]);scheduler.resetLightbox();return!0};scheduler._lame_copy=function(a,b){for(var c in b)a[c]=b[c];return a};
+scheduler.date={init:function(){for(var a=scheduler.locale.date.month_short,b=scheduler.locale.date.month_short_hash={},c=0;c<a.length;c++)b[a[c]]=c;a=scheduler.locale.date.month_full;b=scheduler.locale.date.month_full_hash={};for(c=0;c<a.length;c++)b[a[c]]=c},date_part:function(a){a.setHours(0);a.setMinutes(0);a.setSeconds(0);a.setMilliseconds(0);return a},time_part:function(a){return(a.valueOf()/1E3-a.getTimezoneOffset()*60)%86400},week_start:function(a){var b=a.getDay();scheduler.config.start_on_monday&&
+(b===0?b=6:b--);return this.date_part(this.add(a,-1*b,"day"))},month_start:function(a){a.setDate(1);return this.date_part(a)},year_start:function(a){a.setMonth(0);return this.month_start(a)},day_start:function(a){return this.date_part(a)},add:function(a,b,c){var d=new Date(a.valueOf());switch(c){case "day":d.setDate(d.getDate()+b);if(a.getDate()==d.getDate()&&b){do d.setTime(d.getTime()+36E5);while(a.getDate()==d.getDate())}break;case "week":d.setDate(d.getDate()+7*b);break;case "month":d.setMonth(d.getMonth()+
+b);break;case "year":d.setYear(d.getFullYear()+b);break;case "hour":d.setHours(d.getHours()+b);break;case "minute":d.setMinutes(d.getMinutes()+b);break;default:return scheduler.date["add_"+c](a,b,c)}return d},to_fixed:function(a){return a<10?"0"+a:a},copy:function(a){return new Date(a.valueOf())},date_to_str:function(a,b){a=a.replace(/%[a-zA-Z]/g,function(a){switch(a){case "%d":return'"+scheduler.date.to_fixed(date.getDate())+"';case "%m":return'"+scheduler.date.to_fixed((date.getMonth()+1))+"';case "%j":return'"+date.getDate()+"';
+case "%n":return'"+(date.getMonth()+1)+"';case "%y":return'"+scheduler.date.to_fixed(date.getFullYear()%100)+"';case "%Y":return'"+date.getFullYear()+"';case "%D":return'"+scheduler.locale.date.day_short[date.getDay()]+"';case "%l":return'"+scheduler.locale.date.day_full[date.getDay()]+"';case "%M":return'"+scheduler.locale.date.month_short[date.getMonth()]+"';case "%F":return'"+scheduler.locale.date.month_full[date.getMonth()]+"';case "%h":return'"+scheduler.date.to_fixed((date.getHours()+11)%12+1)+"';
+case "%g":return'"+((date.getHours()+11)%12+1)+"';case "%G":return'"+date.getHours()+"';case "%H":return'"+scheduler.date.to_fixed(date.getHours())+"';case "%i":return'"+scheduler.date.to_fixed(date.getMinutes())+"';case "%a":return'"+(date.getHours()>11?"pm":"am")+"';case "%A":return'"+(date.getHours()>11?"PM":"AM")+"';case "%s":return'"+scheduler.date.to_fixed(date.getSeconds())+"';case "%W":return'"+scheduler.date.to_fixed(scheduler.date.getISOWeek(date))+"';default:return a}});b&&(a=a.replace(/date\.get/g,
+"date.getUTC"));return new Function("date",'return "'+a+'";')},str_to_date:function(a,b){for(var c="var temp=date.split(/[^0-9a-zA-Z]+/g);",d=a.match(/%[a-zA-Z]/g),e=0;e<d.length;e++)switch(d[e]){case "%j":case "%d":c+="set[2]=temp["+e+"]||1;";break;case "%n":case "%m":c+="set[1]=(temp["+e+"]||1)-1;";break;case "%y":c+="set[0]=temp["+e+"]*1+(temp["+e+"]>50?1900:2000);";break;case "%g":case "%G":case "%h":case "%H":c+="set[3]=temp["+e+"]||0;";break;case "%i":c+="set[4]=temp["+e+"]||0;";break;case "%Y":c+=
+"set[0]=temp["+e+"]||0;";break;case "%a":case "%A":c+="set[3]=set[3]%12+((temp["+e+"]||'').toLowerCase()=='am'?0:12);";break;case "%s":c+="set[5]=temp["+e+"]||0;";break;case "%M":c+="set[1]=scheduler.locale.date.month_short_hash[temp["+e+"]]||0;";break;case "%F":c+="set[1]=scheduler.locale.date.month_full_hash[temp["+e+"]]||0;"}var f="set[0],set[1],set[2],set[3],set[4],set[5]";b&&(f=" Date.UTC("+f+")");return new Function("date","var set=[0,0,1,0,0,0]; "+c+" return new Date("+f+");")},getISOWeek:function(a){if(!a)return!1;
+var b=a.getDay();b===0&&(b=7);var c=new Date(a.valueOf());c.setDate(a.getDate()+(4-b));var d=c.getFullYear(),e=Math.round((c.getTime()-(new Date(d,0,1)).getTime())/864E5),f=1+Math.floor(e/7);return f},getUTCISOWeek:function(a){return this.getISOWeek(a)}};
+scheduler.locale={date:{month_full:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),month_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),day_full:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(",")},labels:{dhx_cal_today_button:"Today",day_tab:"Day",week_tab:"Week",month_tab:"Month",new_event:"New event",icon_save:"Save",icon_cancel:"Cancel",icon_details:"Details",
+icon_edit:"Edit",icon_delete:"Delete",confirm_closing:"",confirm_deleting:"Event will be deleted permanently, are you sure?",section_description:"Description",section_time:"Time period",full_day:"Full day",confirm_recurring:"Do you want to edit the whole set of repeated events?",section_recurring:"Repeat event",button_recurring:"Disabled",button_recurring_open:"Enabled",agenda_tab:"Agenda",date:"Date",description:"Description",year_tab:"Year"}};
+scheduler.config={default_date:"%j %M %Y",month_date:"%F %Y",load_date:"%Y-%m-%d",week_date:"%l",day_date:"%D, %F %j",hour_date:"%H:%i",month_day:"%d",xml_date:"%m/%d/%Y %H:%i",api_date:"%d-%m-%Y %H:%i",hour_size_px:42,time_step:5,start_on_monday:1,first_hour:0,last_hour:24,readonly:!1,drag_resize:1,drag_move:1,drag_create:1,dblclick_create:1,edit_on_create:1,details_on_create:0,click_form_details:0,cascade_event_display:!1,cascade_event_count:4,cascade_event_margin:30,drag_lightbox:!0,server_utc:!1,
+positive_closing:!1,icons_edit:["icon_save","icon_cancel"],icons_select:["icon_details","icon_edit","icon_delete"],buttons_left:["dhx_save_btn","dhx_cancel_btn"],buttons_right:["dhx_delete_btn"],lightbox:{sections:[{name:"description",height:200,map_to:"text",type:"textarea",focus:!0},{name:"time",height:72,type:"time",map_to:"auto"}]},repeat_date_of_end:"01.01.2010"};scheduler.templates={};
+scheduler.init_templates=function(){var a=scheduler.date.date_to_str,b=scheduler.config,c=function(a,b){for(var c in b)a[c]||(a[c]=b[c])};c(scheduler.templates,{day_date:a(b.default_date),month_date:a(b.month_date),week_date:function(a,b){return scheduler.templates.day_date(a)+" &ndash; "+scheduler.templates.day_date(scheduler.date.add(b,-1,"day"))},day_scale_date:a(b.default_date),month_scale_date:a(b.week_date),week_scale_date:a(b.day_date),hour_scale:a(b.hour_date),time_picker:a(b.hour_date),event_date:a(b.hour_date),
+month_day:a(b.month_day),xml_date:scheduler.date.str_to_date(b.xml_date,b.server_utc),load_format:a(b.load_date,b.server_utc),xml_format:a(b.xml_date,b.server_utc),api_date:scheduler.date.str_to_date(b.api_date),event_header:function(a,b){return scheduler.templates.event_date(a)+" - "+scheduler.templates.event_date(b)},event_text:function(a,b,c){return c.text},event_class:function(){return""},month_date_class:function(){return""},week_date_class:function(){return""},event_bar_date:function(a){return scheduler.templates.event_date(a)+
+" "},event_bar_text:function(a,b,c){return c.text}});this.callEvent("onTemplatesReady",[])};scheduler.uid=function(){if(!this._seed)this._seed=(new Date).valueOf();return this._seed++};scheduler._events={};scheduler.clearAll=function(){this._events={};this._loaded={};this.clear_view()};
+scheduler.addEvent=function(a,b,c,d,e){if(!arguments.length)return this.addEventNow();var f=a;if(arguments.length!=1)f=e||{},f.start_date=a,f.end_date=b,f.text=c,f.id=d;f.id=f.id||scheduler.uid();f.text=f.text||"";if(typeof f.start_date=="string")f.start_date=this.templates.api_date(f.start_date);if(typeof f.end_date=="string")f.end_date=this.templates.api_date(f.end_date);var g=(this.config.event_duration||this.config.time_step)*6E4;f.start_date.valueOf()==f.end_date.valueOf()&&f.end_date.setTime(f.end_date.valueOf()+
+g);f._timed=this.is_one_day_event(f);var i=!this._events[f.id];this._events[f.id]=f;this.event_updated(f);this._loading||this.callEvent(i?"onEventAdded":"onEventChanged",[f.id,f])};scheduler.deleteEvent=function(a,b){var c=this._events[a];if(b||this.callEvent("onBeforeEventDelete",[a,c]))this.callEvent("onConfirmedBeforeEventDelete",[a,c]),c&&(delete this._events[a],this.unselect(a),this.event_updated(c)),this.callEvent("onEventDeleted",[a])};scheduler.getEvent=function(a){return this._events[a]};
+scheduler.setEvent=function(a,b){this._events[a]=b};scheduler.for_rendered=function(a,b){for(var c=this._rendered.length-1;c>=0;c--)this._rendered[c].getAttribute("event_id")==a&&b(this._rendered[c],c)};scheduler.changeEventId=function(a,b){if(a!=b){var c=this._events[a];if(c)c.id=b,this._events[b]=c,delete this._events[a];this.for_rendered(a,function(a){a.setAttribute("event_id",b)});if(this._select_id==a)this._select_id=b;if(this._edit_id==a)this._edit_id=b;this.callEvent("onEventIdChange",[a,b])}};
+(function(){for(var a="text,Text,start_date,StartDate,end_date,EndDate".split(","),b=function(a){return function(b){return scheduler.getEvent(b)[a]}},c=function(a){return function(b,c){var d=scheduler.getEvent(b);d[a]=c;d._changed=!0;d._timed=this.is_one_day_event(d);scheduler.event_updated(d,!0)}},d=0;d<a.length;d+=2)scheduler["getEvent"+a[d+1]]=b(a[d]),scheduler["setEvent"+a[d+1]]=c(a[d])})();scheduler.event_updated=function(a){this.is_visible_events(a)?this.render_view_data():this.clear_event(a.id)};
+scheduler.is_visible_events=function(a){return a.start_date<this._max_date&&this._min_date<a.end_date};scheduler.is_one_day_event=function(a){var b=a.end_date.getDate()-a.start_date.getDate();return b?(b<0&&(b=Math.ceil((a.end_date.valueOf()-a.start_date.valueOf())/864E5)),b==1&&!a.end_date.getHours()&&!a.end_date.getMinutes()&&(a.start_date.getHours()||a.start_date.getMinutes())):a.start_date.getMonth()==a.end_date.getMonth()&&a.start_date.getFullYear()==a.end_date.getFullYear()};
+scheduler.get_visible_events=function(){var a=[],b=this["filter_"+this._mode],c;for(c in this._events)if(this.is_visible_events(this._events[c])&&(this._table_view||this.config.multi_day||this._events[c]._timed))(!b||b(c,this._events[c]))&&a.push(this._events[c]);return a};
+scheduler.render_view_data=function(a,b){if(!a){if(this._not_render){this._render_wait=!0;return}this._render_wait=!1;this.clear_view();a=this.get_visible_events()}if(this.config.multi_day&&!this._table_view){for(var c=[],d=[],e=0;e<a.length;e++)a[e]._timed?c.push(a[e]):d.push(a[e]);this._rendered_location=this._els.dhx_multi_day[0];this._table_view=!0;this.render_data(d,b);this._table_view=!1;this._rendered_location=this._els.dhx_cal_data[0];this._table_view=!1;this.render_data(c,b)}else this._rendered_location=
+this._els.dhx_cal_data[0],this.render_data(a,b)};scheduler.render_data=function(a,b){for(var a=this._pre_render_events(a,b),c=0;c<a.length;c++)this._table_view?this.render_event_bar(a[c]):this.render_event(a[c])};
+scheduler._pre_render_events=function(a,b){var c=this.xy.bar_height,d=this._colsS.heights,e=this._colsS.heights=[0,0,0,0,0,0,0],f=this._els.dhx_cal_data[0],a=this._table_view?this._pre_render_events_table(a,b):this._pre_render_events_line(a,b);if(this._table_view)if(b)this._colsS.heights=d;else{var g=f.firstChild;if(g.rows){for(var i=0;i<g.rows.length;i++){e[i]++;if(e[i]*c>this._colsS.height-22){for(var h=g.rows[i].cells,k=0;k<h.length;k++)h[k].childNodes[1].style.height=e[i]*c+"px";e[i]=(e[i-1]||
+0)+h[0].offsetHeight}e[i]=(e[i-1]||0)+g.rows[i].cells[0].offsetHeight}e.unshift(0);if(g.parentNode.offsetHeight<g.parentNode.scrollHeight&&!g._h_fix){for(i=0;i<g.rows.length;i++){var j=g.rows[i].cells[6].childNodes[0],l=j.offsetWidth-scheduler.xy.scroll_width+"px";j.style.width=l;j.nextSibling.style.width=l}g._h_fix=!0}}else if(!a.length&&this._els.dhx_multi_day[0].style.visibility=="visible"&&(e[0]=-1),a.length||e[0]==-1){var o=g.parentNode.childNodes,m=(e[0]+1)*c+1+"px";f.style.top=this._els.dhx_cal_navline[0].offsetHeight+
+this._els.dhx_cal_header[0].offsetHeight+parseInt(m)+"px";f.style.height=this._obj.offsetHeight-parseInt(f.style.top)-(this.xy.margin_top||0)+"px";var n=this._els.dhx_multi_day[0];n.style.height=m;n.style.visibility=e[0]==-1?"hidden":"visible";n=this._els.dhx_multi_day[1];n.style.height=m;n.style.visibility=e[0]==-1?"hidden":"visible";n.className=e[0]?"dhx_multi_day_icon":"dhx_multi_day_icon_small";this._dy_shift=(e[0]+1)*c;e[0]=0}}return a};
+scheduler._get_event_sday=function(a){return Math.floor((a.start_date.valueOf()-this._min_date.valueOf())/864E5)};
+scheduler._pre_render_events_line=function(a,b){a.sort(function(a,b){return a.start_date.valueOf()==b.start_date.valueOf()?a.id>b.id?1:-1:a.start_date>b.start_date?1:-1});for(var c=[],d=[],e=0;e<a.length;e++){var f=a[e],g=f.start_date.getHours(),i=f.end_date.getHours();f._sday=this._get_event_sday(f);c[f._sday]||(c[f._sday]=[]);if(!b){f._inner=!1;for(var h=c[f._sday];h.length&&h[h.length-1].end_date<=f.start_date;)h.splice(h.length-1,1);for(var k=!1,j=0;j<h.length;j++)if(h[j].end_date.valueOf()<f.start_date.valueOf()){k=
+!0;f._sorder=h[j]._sorder;h.splice(j,1);f._inner=!0;break}if(h.length)h[h.length-1]._inner=!0;if(!k)if(h.length)if(h.length<=h[h.length-1]._sorder){if(h[h.length-1]._sorder)for(j=0;j<h.length;j++){var l=!1;for(k=0;k<h.length;k++)if(h[k]._sorder==j){l=!0;break}if(!l){f._sorder=j;break}}else f._sorder=0;f._inner=!0}else{l=h[0]._sorder;for(j=1;j<h.length;j++)if(h[j]._sorder>l)l=h[j]._sorder;f._sorder=l+1;f._inner=!1}else f._sorder=0;h.push(f);h.length>(h.max_count||0)?(h.max_count=h.length,f._count=
+h.length):f._count=f._count?f._count:1}if(g<this.config.first_hour||i>=this.config.last_hour)if(d.push(f),a[e]=f=this._copy_event(f),g<this.config.first_hour&&(f.start_date.setHours(this.config.first_hour),f.start_date.setMinutes(0)),i>=this.config.last_hour&&(f.end_date.setMinutes(0),f.end_date.setHours(this.config.last_hour)),f.start_date>f.end_date||g==this.config.last_hour)a.splice(e,1),e--}if(!b){for(e=0;e<a.length;e++)a[e]._count=c[a[e]._sday].max_count;for(e=0;e<d.length;e++)d[e]._count=c[d[e]._sday].max_count}return a};
+scheduler._time_order=function(a){a.sort(function(a,c){return a.start_date.valueOf()==c.start_date.valueOf()?a._timed&&!c._timed?1:!a._timed&&c._timed?-1:a.id>c.id?1:-1:a.start_date>c.start_date?1:-1})};
+scheduler._pre_render_events_table=function(a,b){this._time_order(a);for(var c=[],d=[[],[],[],[],[],[],[]],e=this._colsS.heights,f,g=this._cols.length,i=0;i<a.length;i++){var h=a[i],k=f||h.start_date,j=h.end_date;if(k<this._min_date)k=this._min_date;if(j>this._max_date)j=this._max_date;var l=this.locate_holder_day(k,!1,h);h._sday=l%g;var o=this.locate_holder_day(j,!0,h)||g;h._eday=o%g||g;h._length=o-l;h._sweek=Math.floor((this._correct_shift(k.valueOf(),1)-this._min_date.valueOf())/(864E5*g));var m=
+d[h._sweek],n;for(n=0;n<m.length;n++)if(m[n]._eday<=h._sday)break;if(!h._sorder||!b)h._sorder=n;if(h._sday+h._length<=g)f=null,c.push(h),m[n]=h,e[h._sweek]=m.length-1;else{var p=this._copy_event(h);p._length=g-h._sday;p._eday=g;p._sday=h._sday;p._sweek=h._sweek;p._sorder=h._sorder;p.end_date=this.date.add(k,p._length,"day");c.push(p);m[n]=p;f=p.end_date;e[h._sweek]=m.length-1;i--}}return c};scheduler._copy_dummy=function(){this.start_date=new Date(this.start_date);this.end_date=new Date(this.end_date)};
+scheduler._copy_event=function(a){this._copy_dummy.prototype=a;return new this._copy_dummy};scheduler._rendered=[];scheduler.clear_view=function(){for(var a=0;a<this._rendered.length;a++){var b=this._rendered[a];b.parentNode&&b.parentNode.removeChild(b)}this._rendered=[]};scheduler.updateEvent=function(a){var b=this.getEvent(a);this.clear_event(a);b&&this.is_visible_events(b)&&this.render_view_data([b],!0)};
+scheduler.clear_event=function(a){this.for_rendered(a,function(a,c){a.parentNode&&a.parentNode.removeChild(a);scheduler._rendered.splice(c,1)})};
+scheduler.render_event=function(a){var b=scheduler.xy.menu_width;if(!(a._sday<0)){var c=scheduler.locate_holder(a._sday);if(c){var d=a.start_date.getHours()*60+a.start_date.getMinutes(),e=a.end_date.getHours()*60+a.end_date.getMinutes()||scheduler.config.last_hour*60,f=Math.round((d*6E4-this.config.first_hour*36E5)*this.config.hour_size_px/36E5)%(this.config.hour_size_px*24)+1,g=Math.max(scheduler.xy.min_event_height,(e-d)*this.config.hour_size_px/60)+1,i=Math.floor((c.clientWidth-b)/a._count),h=
+a._sorder*i+1;a._inner||(i*=a._count-a._sorder);if(this.config.cascade_event_display)var k=this.config.cascade_event_count,j=this.config.cascade_event_margin,h=a._sorder%k*j,l=a._inner?(a._count-a._sorder-1)%k*j/2:0,i=Math.floor(c.clientWidth-b-h-l);var o=this._render_v_bar(a.id,b+h,f,i,g,a._text_style,scheduler.templates.event_header(a.start_date,a.end_date,a),scheduler.templates.event_text(a.start_date,a.end_date,a));this._rendered.push(o);c.appendChild(o);h=h+parseInt(c.style.left,10)+b;if(this._edit_id==
+a.id){o.style.zIndex=1;i=Math.max(i-4,scheduler.xy.editor_width);o=document.createElement("DIV");o.setAttribute("event_id",a.id);this.set_xy(o,i,g-20,h,f+14);o.className="dhx_cal_editor";var m=document.createElement("DIV");this.set_xy(m,i-6,g-26);m.style.cssText+=";margin:2px 2px 2px 2px;overflow:hidden;";o.appendChild(m);this._els.dhx_cal_data[0].appendChild(o);this._rendered.push(o);m.innerHTML="<textarea class='dhx_cal_editor'>"+a.text+"</textarea>";if(this._quirks7)m.firstChild.style.height=g-
+12+"px";this._editor=m.firstChild;this._editor.onkeypress=function(a){if((a||event).shiftKey)return!0;var b=(a||event).keyCode;b==scheduler.keys.edit_save&&scheduler.editStop(!0);b==scheduler.keys.edit_cancel&&scheduler.editStop(!1)};this._editor.onselectstart=function(a){return(a||event).cancelBubble=!0};m.firstChild.focus();this._els.dhx_cal_data[0].scrollLeft=0;m.firstChild.select()}if(this._select_id==a.id){if(this.config.cascade_event_display&&this._drag_mode)o.style.zIndex=1;for(var n=this.config["icons_"+
+(this._edit_id==a.id?"edit":"select")],p="",q=a.color?"background-color:"+a.color+";":"",v=a.textColor?"color:"+a.textColor+";":"",s=0;s<n.length;s++)p+="<div class='dhx_menu_icon "+n[s]+"' style='"+q+""+v+"' title='"+this.locale.labels[n[s]]+"'></div>";var r=this._render_v_bar(a.id,h-b+1,f,b,n.length*20+26,"","<div style='"+q+""+v+"' class='dhx_menu_head'></div>",p,!0);r.style.left=h-b+1;this._els.dhx_cal_data[0].appendChild(r);this._rendered.push(r)}}}};
+scheduler._render_v_bar=function(a,b,c,d,e,f,g,i,h){var k=document.createElement("DIV"),j=this.getEvent(a),l="dhx_cal_event",o=scheduler.templates.event_class(j.start_date,j.end_date,j);o&&(l=l+" "+o);var m=j.color?"background-color:"+j.color+";":"",n=j.textColor?"color:"+j.textColor+";":"",p='<div event_id="'+a+'" class="'+l+'" style="position:absolute; top:'+c+"px; left:"+b+"px; width:"+(d-4)+"px; height:"+e+"px;"+(f||"")+'">';p+='<div class="dhx_header" style=" width:'+(d-6)+"px;"+m+'" >&nbsp;</div>';
+p+='<div class="dhx_title" style="'+m+""+n+'">'+g+"</div>";p+='<div class="dhx_body" style=" width:'+(d-(this._quirks?4:14))+"px; height:"+(e-(this._quirks?20:30))+"px;"+m+""+n+'">'+i+"</div>";p+='<div class="dhx_footer" style=" width:'+(d-8)+"px;"+(h?" margin-top:-1px;":"")+""+m+""+n+'" ></div></div>';k.innerHTML=p;return k.firstChild};scheduler.locate_holder=function(a){return this._mode=="day"?this._els.dhx_cal_data[0].firstChild:this._els.dhx_cal_data[0].childNodes[a]};
+scheduler.locate_holder_day=function(a,b){var c=Math.floor((this._correct_shift(a,1)-this._min_date)/864E5);b&&this.date.time_part(a)&&c++;return c};
+scheduler.render_event_bar=function(a){var b=this._rendered_location,c=this._colsS[a._sday],d=this._colsS[a._eday];d==c&&(d=this._colsS[a._eday+1]);var e=this.xy.bar_height,f=this._colsS.heights[a._sweek]+(this._colsS.height?this.xy.month_scale_height+2:2)+a._sorder*e,g=document.createElement("DIV"),i=a._timed?"dhx_cal_event_clear":"dhx_cal_event_line",h=scheduler.templates.event_class(a.start_date,a.end_date,a);h&&(i=i+" "+h);var k=a.color?"background-color:"+a.color+";":"",j=a.textColor?"color:"+
+a.textColor+";":"",l='<div event_id="'+a.id+'" class="'+i+'" style="position:absolute; top:'+f+"px; left:"+c+"px; width:"+(d-c-15)+"px;"+j+""+k+""+(a._text_style||"")+'">';a._timed&&(l+=scheduler.templates.event_bar_date(a.start_date,a.end_date,a));l+=scheduler.templates.event_bar_text(a.start_date,a.end_date,a)+"</div>";l+="</div>";g.innerHTML=l;this._rendered.push(g.firstChild);b.appendChild(g.firstChild)};
+scheduler._locate_event=function(a){for(var b=null;a&&!b&&a.getAttribute;)b=a.getAttribute("event_id"),a=a.parentNode;return b};scheduler.edit=function(a){if(this._edit_id!=a)this.editStop(!1,a),this._edit_id=a,this.updateEvent(a)};scheduler.editStop=function(a,b){if(!(b&&this._edit_id==b)){var c=this.getEvent(this._edit_id);if(c){if(a)c.text=this._editor.value;this._editor=this._edit_id=null;this.updateEvent(c.id);this._edit_stop_event(c,a)}}};
+scheduler._edit_stop_event=function(a,b){this._new_event?(b?this.callEvent("onEventAdded",[a.id,a]):this.deleteEvent(a.id,!0),this._new_event=null):b&&this.callEvent("onEventChanged",[a.id,a])};scheduler.getEvents=function(a,b){var c=[],d;for(d in this._events){var e=this._events[d];e&&e.start_date<b&&e.end_date>a&&c.push(e)}return c};scheduler._loaded={};
+scheduler._load=function(a,b){a=a||this._load_url;a+=(a.indexOf("?")==-1?"?":"&")+"timeshift="+(new Date).getTimezoneOffset();this.config.prevent_cache&&(a+="&uid="+this.uid());var c,b=b||this._date;if(this._load_mode){for(var d=this.templates.load_format,b=this.date[this._load_mode+"_start"](new Date(b.valueOf()));b>this._min_date;)b=this.date.add(b,-1,this._load_mode);c=b;for(var e=!0;c<this._max_date;)c=this.date.add(c,1,this._load_mode),this._loaded[d(b)]&&e?b=this.date.add(b,1,this._load_mode):
+e=!1;var f=c;do c=f,f=this.date.add(c,-1,this._load_mode);while(f>b&&this._loaded[d(f)]);if(c<=b)return!1;for(dhtmlxAjax.get(a+"&from="+d(b)+"&to="+d(c),function(a){scheduler.on_load(a)});b<c;)this._loaded[d(b)]=!0,b=this.date.add(b,1,this._load_mode)}else dhtmlxAjax.get(a,function(a){scheduler.on_load(a)});this.callEvent("onXLS",[]);return!0};
+scheduler.on_load=function(a){this._loading=!0;var b=this._process?this[this._process].parse(a.xmlDoc.responseText):this._magic_parser(a);this._not_render=!0;for(var c=0;c<b.length;c++)this.callEvent("onEventLoading",[b[c]])&&this.addEvent(b[c]);this._not_render=!1;this._render_wait&&this.render_view_data();this._after_call&&this._after_call();this._after_call=null;this._loading=!1;this.callEvent("onXLE",[])};scheduler.json={};
+scheduler.json.parse=function(a){if(typeof a=="string")eval("scheduler._temp = "+a+";"),a=scheduler._temp;for(var b=[],c=0;c<a.length;c++)a[c].start_date=scheduler.templates.xml_date(a[c].start_date),a[c].end_date=scheduler.templates.xml_date(a[c].end_date),b.push(a[c]);return b};scheduler.parse=function(a,b){this._process=b;this.on_load({xmlDoc:{responseText:a}})};scheduler.load=function(a,b,c){if(typeof b=="string")this._process=b,b=c;this._load_url=a;this._after_call=b;this._load(a,this._date)};
+scheduler.setLoadMode=function(a){a=="all"&&(a="");this._load_mode=a};scheduler.refresh=function(){alert("not implemented")};scheduler.serverList=function(a,b){return b?this.serverList[a]=b.slice(0):this.serverList[a]=this.serverList[a]||[]};scheduler._userdata={};
+scheduler._magic_parser=function(a){if(!a.getXMLTopNode){var b=a.xmlDoc.responseText,a=new dtmlXMLLoaderObject(function(){});a.loadXMLString(b)}var c=a.getXMLTopNode("data");if(c.tagName!="data")return[];for(var d=a.doXPath("//coll_options"),e=0;e<d.length;e++){var f=d[e].getAttribute("for"),g=this.serverList[f];if(g){g.splice(0,g.length);for(var i=a.doXPath(".//item",d[e]),h=0;h<i.length;h++){for(var k=i[h],j=k.attributes,l={key:i[h].getAttribute("value"),label:i[h].getAttribute("label")},o=0;o<
+j.length;o++){var m=j[o];if(!(m.nodeName=="value"||m.nodeName=="label"))l[m.nodeName]=m.nodeValue}g.push(l)}}}d.length&&scheduler.callEvent("onOptionsLoad",[]);for(var n=a.doXPath("//userdata"),e=0;e<n.length;e++){var p=this.xmlNodeToJSON(n[e]);this._userdata[p.name]=p.text}for(var q=[],c=a.doXPath("//event"),e=0;e<c.length;e++)q[e]=this.xmlNodeToJSON(c[e]),q[e].text=q[e].text||q[e]._tagvalue,q[e].start_date=this.templates.xml_date(q[e].start_date),q[e].end_date=this.templates.xml_date(q[e].end_date);
+return q};scheduler.xmlNodeToJSON=function(a){for(var b={},c=0;c<a.attributes.length;c++)b[a.attributes[c].name]=a.attributes[c].value;for(c=0;c<a.childNodes.length;c++){var d=a.childNodes[c];d.nodeType==1&&(b[d.tagName]=d.firstChild?d.firstChild.nodeValue:"")}if(!b.text)b.text=a.firstChild?a.firstChild.nodeValue:"";return b};
+scheduler.attachEvent("onXLS",function(){if(this.config.show_loading===!0){var a;a=this.config.show_loading=document.createElement("DIV");a.className="dhx_loading";a.style.left=Math.round((this._x-128)/2)+"px";a.style.top=Math.round((this._y-15)/2)+"px";this._obj.appendChild(a)}});scheduler.attachEvent("onXLE",function(){var a;if((a=this.config.show_loading)&&typeof a=="object")this._obj.removeChild(a),this.config.show_loading=!0});
+scheduler.ical={parse:function(a){var b=a.match(RegExp(this.c_start+"[^\u000c]*"+this.c_end,""));if(b.length){b[0]=b[0].replace(/[\r\n]+(?=[a-z \t])/g," ");b[0]=b[0].replace(/\;[^:\r\n]*/g,"");for(var c=[],d,e=RegExp("(?:"+this.e_start+")([^\u000c]*?)(?:"+this.e_end+")","g");d=e.exec(b);){for(var f={},g,i=/[^\r\n]+[\r\n]+/g;g=i.exec(d[1]);)this.parse_param(g.toString(),f);if(f.uid&&!f.id)f.id=f.uid;c.push(f)}return c}},parse_param:function(a,b){var c=a.indexOf(":");if(c!=-1){var d=a.substr(0,c).toLowerCase(),
+e=a.substr(c+1).replace(/\\\,/g,",").replace(/[\r\n]+$/,"");d=="summary"?d="text":d=="dtstart"?(d="start_date",e=this.parse_date(e,0,0)):d=="dtend"&&(d="end_date",e=b.start_date&&b.start_date.getHours()==0?this.parse_date(e,24,0):this.parse_date(e,23,59));b[d]=e}},parse_date:function(a,b,c){var d=a.split("T");d[1]&&(b=d[1].substr(0,2),c=d[1].substr(2,2));var e=d[0].substr(0,4),f=parseInt(d[0].substr(4,2),10)-1,g=d[0].substr(6,2);return scheduler.config.server_utc&&!d[1]?new Date(Date.UTC(e,f,g,b,
+c)):new Date(e,f,g,b,c)},c_start:"BEGIN:VCALENDAR",e_start:"BEGIN:VEVENT",e_end:"END:VEVENT",c_end:"END:VCALENDAR"};scheduler.formSection=function(a){for(var b=this.config.lightbox.sections,c=0;c<b.length;c++)if(b[c].name==a)break;var d=b[c],e=document.getElementById(d.id).nextSibling;return{getValue:function(a){return scheduler.form_blocks[d.type].get_value(e,a||{},d)},setValue:function(a,b){return scheduler.form_blocks[d.type].set_value(e,a,b||{},d)}}};
+scheduler.form_blocks={template:{render:function(a){var b=(a.height||"30")+"px";return"<div class='dhx_cal_ltext dhx_cal_template' style='height:"+b+";'></div>"},set_value:function(a,b){a.innerHTML=b||""},get_value:function(a){return a.innerHTML||""},focus:function(){}},textarea:{render:function(a){var b=(a.height||"130")+"px";return"<div class='dhx_cal_ltext' style='height:"+b+";'><textarea></textarea></div>"},set_value:function(a,b){a.firstChild.value=b||""},get_value:function(a){return a.firstChild.value},
+focus:function(a){var b=a.firstChild;b.select();b.focus()}},select:{render:function(a){for(var b=(a.height||"23")+"px",c="<div class='dhx_cal_ltext' style='height:"+b+";'><select style='width:100%;'>",d=0;d<a.options.length;d++)c+="<option value='"+a.options[d].key+"'>"+a.options[d].label+"</option>";c+="</select></div>";return c},set_value:function(a,b){if(typeof b=="undefined")b=(a.firstChild.options[0]||{}).value;a.firstChild.value=b||""},get_value:function(a){return a.firstChild.value},focus:function(a){var b=
+a.firstChild;b.select&&b.select();b.focus()}},time:{render:function(){var a=scheduler.config,b=this.date.date_part(new Date),c=1440,d=0;scheduler.config.limit_time_select&&(c=60*a.last_hour+1,d=60*a.first_hour,b.setHours(a.first_hour));for(var e="<select>",f=d,g=b.getDate();f<c;){var i=this.templates.time_picker(b);e+="<option value='"+f+"'>"+i+"</option>";b.setTime(b.valueOf()+this.config.time_step*6E4);var h=b.getDate()!=g?1:0,f=h*1440+b.getHours()*60+b.getMinutes()}e+="</select> <select>";for(f=
+1;f<32;f++)e+="<option value='"+f+"'>"+f+"</option>";e+="</select> <select>";for(f=0;f<12;f++)e+="<option value='"+f+"'>"+this.locale.date.month_full[f]+"</option>";e+="</select> <select>";b=b.getFullYear()-5;for(f=0;f<10;f++)e+="<option value='"+(b+f)+"'>"+(b+f)+"</option>";e+="</select> ";return"<div style='height:30px;padding-top:0px;font-size:inherit;' class='dhx_section_time'>"+e+"<span style='font-weight:normal; font-size:10pt;'> &nbsp;&ndash;&nbsp; </span>"+e+"</div>"},set_value:function(a,
+b,c){function d(a,b,c){a[b+0].value=Math.round((c.getHours()*60+c.getMinutes())/scheduler.config.time_step)*scheduler.config.time_step;a[b+1].value=c.getDate();a[b+2].value=c.getMonth();a[b+3].value=c.getFullYear()}var e=a.getElementsByTagName("select");if(scheduler.config.full_day){if(!a._full_day){var f="<label class='dhx_fullday'><input type='checkbox' name='full_day' value='true'> "+scheduler.locale.labels.full_day+"&nbsp;</label></input>";scheduler.config.wide_form||(f=a.previousSibling.innerHTML+
+f);a.previousSibling.innerHTML=f;a._full_day=!0}var g=a.previousSibling.getElementsByTagName("input")[0],i=scheduler.date.time_part(c.start_date)===0&&scheduler.date.time_part(c.end_date)===0&&c.end_date.valueOf()-c.start_date.valueOf()<1728E5;g.checked=i;for(var h in e)e[h].disabled=g.checked;g.onclick=function(){if(g.checked){var a=new Date(c.start_date),b=new Date(c.end_date);scheduler.date.date_part(a);b=scheduler.date.add(a,1,"day")}for(var f in e)e[f].disabled=g.checked;d(e,0,a||c.start_date);
+d(e,4,b||c.end_date)}}if(scheduler.config.auto_end_date&&scheduler.config.event_duration)for(var k=function(){c.start_date=new Date(e[3].value,e[2].value,e[1].value,0,e[0].value);c.end_date.setTime(c.start_date.getTime()+scheduler.config.event_duration*6E4);d(e,4,c.end_date)},j=0;j<4;j++)e[j].onchange=k;d(e,0,c.start_date);d(e,4,c.end_date)},get_value:function(a,b){s=a.getElementsByTagName("select");b.start_date=new Date(s[3].value,s[2].value,s[1].value,0,s[0].value);b.end_date=new Date(s[7].value,
+s[6].value,s[5].value,0,s[4].value);if(b.end_date<=b.start_date)b.end_date=scheduler.date.add(b.start_date,scheduler.config.time_step,"minute")},focus:function(a){a.getElementsByTagName("select")[0].focus()}}};
+scheduler.showCover=function(a){if(a){a.style.display="block";var b=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop,c=window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft,d=window.innerHeight||document.documentElement.clientHeight;a.style.top=b?Math.round(b+Math.max((d-a.offsetHeight)/2,0))+"px":Math.round(Math.max((d-a.offsetHeight)/2,0)+9)+"px";a.style.left=document.documentElement.scrollWidth>document.body.offsetWidth?Math.round(c+(document.body.offsetWidth-
+a.offsetWidth)/2)+"px":Math.round((document.body.offsetWidth-a.offsetWidth)/2)+"px"}this.show_cover()};scheduler.showLightbox=function(a){if(a&&this.callEvent("onBeforeLightbox",[a])){var b=this._get_lightbox();this.showCover(b);this._fill_lightbox(a,b);this.callEvent("onLightbox",[a])}};
+scheduler._fill_lightbox=function(a,b){var c=this.getEvent(a),d=b.getElementsByTagName("span");scheduler.templates.lightbox_header?(d[1].innerHTML="",d[2].innerHTML=scheduler.templates.lightbox_header(c.start_date,c.end_date,c)):(d[1].innerHTML=this.templates.event_header(c.start_date,c.end_date,c),d[2].innerHTML=(this.templates.event_bar_text(c.start_date,c.end_date,c)||"").substr(0,70));for(var e=this.config.lightbox.sections,f=0;f<e.length;f++){var g=document.getElementById(e[f].id).nextSibling,
+i=this.form_blocks[e[f].type];i.set_value.call(this,g,c[e[f].map_to],c,e[f]);e[f].focus&&i.focus.call(this,g)}scheduler._lightbox_id=a};scheduler._lightbox_out=function(a){for(var b=this.config.lightbox.sections,c=0;c<b.length;c++){var d=document.getElementById(b[c].id),d=d?d.nextSibling:d,e=this.form_blocks[b[c].type],f=e.get_value.call(this,d,a,b[c]);b[c].map_to!="auto"&&(a[b[c].map_to]=f)}return a};
+scheduler._empty_lightbox=function(){var a=scheduler._lightbox_id,b=this.getEvent(a),c=this._get_lightbox();this._lightbox_out(b);b._timed=this.is_one_day_event(b);this.setEvent(b.id,b);this._edit_stop_event(b,!0);this.render_view_data()};scheduler.hide_lightbox=function(){this.hideCover(this._get_lightbox());this._lightbox_id=null;this.callEvent("onAfterLightbox",[])};scheduler.hideCover=function(a){if(a)a.style.display="none";this.hide_cover()};
+scheduler.hide_cover=function(){this._cover&&this._cover.parentNode.removeChild(this._cover);this._cover=null};scheduler.show_cover=function(){this._cover=document.createElement("DIV");this._cover.className="dhx_cal_cover";var a=document.height!==void 0?document.height:document.body.offsetHeight,b=document.documentElement?document.documentElement.scrollHeight:0;this._cover.style.height=Math.max(a,b)+"px";document.body.appendChild(this._cover)};
+scheduler.save_lightbox=function(){if(!this.checkEvent("onEventSave")||this.callEvent("onEventSave",[this._lightbox_id,this._lightbox_out({id:this._lightbox_id}),this._new_event]))this._empty_lightbox(),this.hide_lightbox()};scheduler.startLightbox=function(a,b){this._lightbox_id=a;this.showCover(b)};scheduler.endLightbox=function(a,b){this._edit_stop_event(scheduler.getEvent(this._lightbox_id),a);a&&scheduler.render_view_data();this.hideCover(b)};
+scheduler.resetLightbox=function(){scheduler._lightbox&&scheduler._lightbox.parentNode.removeChild(scheduler._lightbox);scheduler._lightbox=null};scheduler.cancel_lightbox=function(){this.callEvent("onEventCancel",[this._lightbox_id,this._new_event]);this.endLightbox(!1);this.hide_lightbox()};
+scheduler._init_lightbox_events=function(){this._get_lightbox().onclick=function(a){var b=a?a.target:event.srcElement;if(!b.className)b=b.previousSibling;if(b&&b.className)switch(b.className){case "dhx_save_btn":scheduler.save_lightbox();break;case "dhx_delete_btn":var c=scheduler.locale.labels.confirm_deleting;if(!c||confirm(c))scheduler.deleteEvent(scheduler._lightbox_id),scheduler._new_event=null,scheduler.hide_lightbox();break;case "dhx_cancel_btn":scheduler.cancel_lightbox();break;default:if(b.getAttribute("dhx_button"))scheduler.callEvent("onLightboxButton",
+[b.className,b,a]);else if(b.className.indexOf("dhx_custom_button_")!=-1){var d=b.parentNode.getAttribute("index"),e=scheduler.form_blocks[scheduler.config.lightbox.sections[d].type],f=b.parentNode.parentNode;e.button_click(d,b,f,f.nextSibling)}}};this._get_lightbox().onkeydown=function(a){switch((a||event).keyCode){case scheduler.keys.edit_save:if((a||event).shiftKey)break;scheduler.save_lightbox();break;case scheduler.keys.edit_cancel:scheduler.cancel_lightbox()}}};
+scheduler.setLightboxSize=function(){var a=this._lightbox;if(a){var b=a.childNodes[1];b.style.height="0px";b.style.height=b.scrollHeight+"px";a.style.height=b.scrollHeight+50+"px";b.style.height=b.scrollHeight+"px"}};scheduler._init_dnd_events=function(){dhtmlxEvent(document.body,"mousemove",scheduler._move_while_dnd);dhtmlxEvent(document.body,"mouseup",scheduler._finish_dnd);scheduler._init_dnd_events=function(){}};
+scheduler._move_while_dnd=function(a){if(scheduler._dnd_start_lb){if(!document.dhx_unselectable)document.body.className+=" dhx_unselectable",document.dhx_unselectable=!0;var b=scheduler._get_lightbox(),c=a&&a.target?[a.pageX,a.pageY]:[event.clientX,event.clientY];b.style.top=scheduler._lb_start[1]+c[1]-scheduler._dnd_start_lb[1]+"px";b.style.left=scheduler._lb_start[0]+c[0]-scheduler._dnd_start_lb[0]+"px"}};
+scheduler._ready_to_dnd=function(a){var b=scheduler._get_lightbox();scheduler._lb_start=[parseInt(b.style.left,10),parseInt(b.style.top,10)];scheduler._dnd_start_lb=a&&a.target?[a.pageX,a.pageY]:[event.clientX,event.clientY]};scheduler._finish_dnd=function(){if(scheduler._lb_start)scheduler._lb_start=scheduler._dnd_start_lb=!1,document.body.className=document.body.className.replace(" dhx_unselectable",""),document.dhx_unselectable=!1};
+scheduler._get_lightbox=function(){if(!this._lightbox){var a=document.createElement("DIV");a.className="dhx_cal_light";scheduler.config.wide_form&&(a.className+=" dhx_cal_light_wide");scheduler.form_blocks.recurring&&(a.className+=" dhx_cal_light_rec");/msie|MSIE 6/.test(navigator.userAgent)&&(a.className+=" dhx_ie6");a.style.visibility="hidden";var b=this._lightbox_template,c=this.config.buttons_left;scheduler.locale.labels.dhx_save_btn=scheduler.locale.labels.icon_save;scheduler.locale.labels.dhx_cancel_btn=
+scheduler.locale.labels.icon_cancel;scheduler.locale.labels.dhx_delete_btn=scheduler.locale.labels.icon_delete;for(var d=0;d<c.length;d++)b+="<div class='dhx_btn_set'><div dhx_button='1' class='"+c[d]+"'></div><div>"+scheduler.locale.labels[c[d]]+"</div></div>";c=this.config.buttons_right;for(d=0;d<c.length;d++)b+="<div class='dhx_btn_set' style='float:right;'><div dhx_button='1' class='"+c[d]+"'></div><div>"+scheduler.locale.labels[c[d]]+"</div></div>";b+="</div>";a.innerHTML=b;if(scheduler.config.drag_lightbox)a.firstChild.onmousedown=
+scheduler._ready_to_dnd,a.firstChild.onselectstart=function(){return!1},a.firstChild.style.cursor="pointer",scheduler._init_dnd_events();document.body.insertBefore(a,document.body.firstChild);this._lightbox=a;for(var e=this.config.lightbox.sections,b="",d=0;d<e.length;d++){var f=this.form_blocks[e[d].type];if(f){e[d].id="area_"+this.uid();var g="";if(e[d].button)var i=scheduler.config.wide_form?"position:absolute; top:0px; right:0px; height:25px; margin-top:2px;":"float:right",g="<div style='"+i+
+"' class='dhx_custom_button' index='"+d+"'><div class='dhx_custom_button_"+e[d].button+"'></div><div>"+this.locale.labels["button_"+e[d].button]+"</div></div>";this.config.wide_form&&(b+="<div class='dhx_wrap_section'>");b+="<div id='"+e[d].id+"' class='dhx_cal_lsection'>"+g+this.locale.labels["section_"+e[d].name]+"</div>"+f.render.call(this,e[d]);b+="</div>"}}var h=a.getElementsByTagName("div");h[1].innerHTML=b;this.setLightboxSize();this._init_lightbox_events(this);a.style.display="none";a.style.visibility=
+"visible"}return this._lightbox};scheduler._lightbox_template="<div class='dhx_cal_ltitle'><span class='dhx_mark'>&nbsp;</span><span class='dhx_time'></span><span class='dhx_title'></span></div><div class='dhx_cal_larea'></div>";
+scheduler._dp_init=function(a){a._methods=["setEventTextStyle","","changeEventId","deleteEvent"];this.attachEvent("onEventAdded",function(b){!this._loading&&this.validId(b)&&a.setUpdated(b,!0,"inserted")});this.attachEvent("onConfirmedBeforeEventDelete",function(b){if(this.validId(b)){var c=a.getState(b);if(c=="inserted"||this._new_event)return a.setUpdated(b,!1),!0;if(c=="deleted")return!1;if(c=="true_deleted")return!0;a.setUpdated(b,!0,"deleted");return!1}});this.attachEvent("onEventChanged",function(b){!this._loading&&
+this.validId(b)&&a.setUpdated(b,!0,"updated")});a._getRowData=function(a){var c=this.obj.getEvent(a),d={},e;for(e in c)e.indexOf("_")!=0&&(d[e]=c[e]&&c[e].getUTCFullYear?this.obj.templates.xml_format(c[e]):c[e]);return d};a._clearUpdateFlag=function(){};a.attachEvent("insertCallback",scheduler._update_callback);a.attachEvent("updateCallback",scheduler._update_callback);a.attachEvent("deleteCallback",function(a,c){this.obj.setUserData(c,this.action_param,"true_deleted");this.obj.deleteEvent(c)})};
+scheduler.setUserData=function(a,b,c){a?this.getEvent(a)[b]=c:this._userdata[b]=c};scheduler.getUserData=function(a,b){return a?this.getEvent(a)[b]:this._userdata[b]};scheduler.setEventTextStyle=function(a,b){this.for_rendered(a,function(a){a.style.cssText+=";"+b});var c=this.getEvent(a);c._text_style=b;this.event_updated(c)};scheduler.validId=function(){return!0};
+scheduler._update_callback=function(a){var b=scheduler.xmlNodeToJSON(a.firstChild);b.text=b.text||b._tagvalue;b.start_date=scheduler.templates.xml_date(b.start_date);b.end_date=scheduler.templates.xml_date(b.end_date);scheduler.addEvent(b)};
diff --git a/samples/dhtmlx/dhtmlxscheduler_recurring.js b/samples/dhtmlx/dhtmlxscheduler_recurring.js
new file mode 100644
index 0000000..375fedf
--- /dev/null
+++ b/samples/dhtmlx/dhtmlxscheduler_recurring.js
@@ -0,0 +1,31 @@
+scheduler.form_blocks.recurring={render:function(){return scheduler.__recurring_template},_ds:{},_init_set_value:function(a,b,c){function d(a){for(var b=0;b<a.length;b++){var c=a[b];c.type=="checkbox"||c.type=="radio"?(g[c.name]||(g[c.name]=[]),g[c.name].push(c)):g[c.name]=c}}function f(a){for(var b=g[a],c=0;c<b.length;c++)if(b[c].checked)return b[c].value}function e(){m("dhx_repeat_day").style.display="none";m("dhx_repeat_week").style.display="none";m("dhx_repeat_month").style.display="none";m("dhx_repeat_year").style.display=
+"none";m("dhx_repeat_"+this.value).style.display="block"}function h(a){var b=[f("repeat")];for(p[b[0]](b,a);b.length<5;)b.push("");var c="";if(g.end[0].checked)a.end=new Date(9999,1,1),c="no";else if(g.end[2].checked)a.end=i(g.date_of_end.value);else{scheduler.transpose_type(b.join("_"));var c=Math.max(1,g.occurences_count.value),e=b[0]=="week"&&b[4]&&b[4].toString().indexOf(scheduler.config.start_on_monday?1:0)==-1?1:0;a.end=scheduler.date.add(new Date(a.start),c+e,b.join("_"))}return b.join("_")+
+"#"+c}function j(a,b){var c=a.split("#"),a=c[0].split("_");q[a[0]](a,b);var e=g.repeat[{day:0,week:1,month:2,year:3}[a[0]]];switch(c[1]){case "no":g.end[0].checked=!0;break;case "":g.end[2].checked=!0;g.date_of_end.value=k(b.end);break;default:g.end[1].checked=!0,g.occurences_count.value=c[1]}e.checked=!0;e.onclick()}scheduler.form_blocks.recurring._ds={start:c.start_date,end:c._end_date};var i=scheduler.date.str_to_date(scheduler.config.repeat_date),k=scheduler.date.date_to_str(scheduler.config.repeat_date),
+l=a.getElementsByTagName("FORM")[0],g=[];d(l.getElementsByTagName("INPUT"));d(l.getElementsByTagName("SELECT"));var m=function(a){return document.getElementById(a)};scheduler.form_blocks.recurring._get_repeat_code=h;var p={month:function(a,b){f("month_type")=="d"?(a.push(Math.max(1,g.month_count.value)),b.start.setDate(g.month_day.value)):(a.push(Math.max(1,g.month_count2.value)),a.push(g.month_day2.value),a.push(Math.max(1,g.month_week2.value)),b.start.setDate(1));b._start=!0},week:function(a,b){a.push(Math.max(1,
+g.week_count.value));a.push("");a.push("");for(var c=[],e=g.week_day,d=0;d<e.length;d++)e[d].checked&&c.push(e[d].value);c.length||c.push(b.start.getDay());b.start=scheduler.date.week_start(b.start);b._start=!0;a.push(c.sort().join(","))},day:function(a){f("day_type")=="d"?a.push(Math.max(1,g.day_count.value)):(a.push("week"),a.push(1),a.push(""),a.push(""),a.push("1,2,3,4,5"),a.splice(0,1))},year:function(a,b){f("year_type")=="d"?(a.push("1"),b.start.setMonth(0),b.start.setDate(g.year_day.value),
+b.start.setMonth(g.year_month.value)):(a.push("1"),a.push(g.year_day2.value),a.push(g.year_week2.value),b.start.setDate(1),b.start.setMonth(g.year_month2.value));b._start=!0}},q={week:function(a){g.week_count.value=a[1];for(var b=g.week_day,c=a[4].split(","),e={},d=0;d<c.length;d++)e[c[d]]=!0;for(d=0;d<b.length;d++)b[d].checked=!!e[b[d].value]},month:function(a,b){a[2]==""?(g.month_type[0].checked=!0,g.month_count.value=a[1],g.month_day.value=b.start.getDate()):(g.month_type[1].checked=!0,g.month_count2.value=
+a[1],g.month_week2.value=a[3],g.month_day2.value=a[2])},day:function(a){g.day_type[0].checked=!0;g.day_count.value=a[1]},year:function(a,b){a[2]==""?(g.year_type[0].checked=!0,g.year_day.value=b.start.getDate(),g.year_month.value=b.start.getMonth()):(g.year_type[1].checked=!0,g.year_week2.value=a[3],g.year_day2.value=a[2],g.year_month2.value=b.start.getMonth())}};scheduler.form_blocks.recurring._set_repeat_code=j;for(var n=0;n<l.elements.length;n++){var o=l.elements[n];switch(o.name){case "repeat":o.onclick=
+e}}scheduler._lightbox._rec_init_done=!0},set_value:function(a,b,c){var d=scheduler.form_blocks.recurring;scheduler._lightbox._rec_init_done||d._init_set_value(a,b,c);a.open=!c.rec_type;a.blocked=c.event_pid&&c.event_pid!="0"?!0:!1;var f=d._ds;f.start=c.start_date;f.end=c._end_date;d.button_click(0,a.previousSibling.firstChild.firstChild,a,a);b&&d._set_repeat_code(b,f)},get_value:function(a,b){if(a.open){var c=scheduler.form_blocks.recurring._ds;b.rec_type=scheduler.form_blocks.recurring._get_repeat_code(c);
+c._start?(b.start_date=new Date(c.start),b._start_date=new Date(c.start),c._start=!1):b._start_date=null;b._end_date=b.end_date=c.end;b.rec_pattern=b.rec_type.split("#")[0]}else b.rec_type=b.rec_pattern="",b._end_date=b.end_date;return b.rec_type},focus:function(){},button_click:function(a,b,c,d){!d.open&&!d.blocked?(d.style.height="115px",b.style.backgroundPosition="-5px 0px",b.nextSibling.innerHTML=scheduler.locale.labels.button_recurring_open):(d.style.height="0px",b.style.backgroundPosition="-5px 20px",
+b.nextSibling.innerHTML=scheduler.locale.labels.button_recurring);d.open=!d.open;scheduler.setLightboxSize()}};scheduler._rec_markers={};scheduler._rec_markers_pull={};scheduler._add_rec_marker=function(a,b){a._pid_time=b;this._rec_markers[a.id]=a;this._rec_markers_pull[a.event_pid]||(this._rec_markers_pull[a.event_pid]={});this._rec_markers_pull[a.event_pid][b]=a};scheduler._get_rec_marker=function(a,b){var c=this._rec_markers_pull[b];return c?c[a]:null};
+scheduler._get_rec_markers=function(a){return this._rec_markers_pull[a]||[]};scheduler._rec_temp=[];scheduler.attachEvent("onEventLoading",function(a){a.event_pid!=0&&scheduler._add_rec_marker(a,a.event_length*1E3);if(a.rec_type)a.rec_pattern=a.rec_type.split("#")[0];return!0});
+scheduler.attachEvent("onEventIdChange",function(a,b){if(!this._ignore_call){this._ignore_call=!0;for(var c=0;c<this._rec_temp.length;c++){var d=this._rec_temp[c];if(d.event_pid==a)d.event_pid=b,this.changeEventId(d.id,b+"#"+d.id.split("#")[1])}delete this._ignore_call}});
+scheduler.attachEvent("onBeforeEventDelete",function(a){var b=this.getEvent(a);if(a.toString().indexOf("#")!=-1||b.event_pid&&b.event_pid!="0"&&b.rec_type!="none"){var a=a.split("#"),c=this.uid(),d=a[1]?a[1]:b._pid_time/1E3,f=this._copy_event(b);f.id=c;f.event_pid=b.event_pid||a[0];f.event_length=d;f.rec_type=f.rec_pattern="none";this.addEvent(f);this._add_rec_marker(f,d*1E3)}else{b.rec_type&&this._roll_back_dates(b);var e=this._get_rec_markers(a),h;for(h in e)e.hasOwnProperty(h)&&this.deleteEvent(e[h].id,
+!0)}return!0});
+scheduler.attachEvent("onEventChanged",function(a){if(this._loading)return!0;var b=this.getEvent(a);if(a.toString().indexOf("#")!=-1){var a=a.split("#"),c=this.uid();this._not_render=!0;var d=this._copy_event(b);d.id=c;d.event_pid=a[0];d.event_length=a[1];d.rec_type=d.rec_pattern="";this.addEvent(d);this._not_render=!1;this._add_rec_marker(d,a[1]*1E3)}else{b.rec_type&&this._roll_back_dates(b);var f=this._get_rec_markers(a),e;for(e in f)f.hasOwnProperty(e)&&(delete this._rec_markers[f[e].id],this.deleteEvent(f[e].id,
+!0));delete this._rec_markers_pull[a];for(var h=!1,j=0;j<this._rendered.length;j++)this._rendered[j].getAttribute("event_id")==a&&(h=!0);if(!h)this._select_id=null}return!0});scheduler.attachEvent("onEventAdded",function(a){if(!this._loading){var b=this.getEvent(a);b.rec_type&&!b.event_length&&this._roll_back_dates(b)}return!0});scheduler.attachEvent("onEventSave",function(a,b){var c=this.getEvent(a);if(!c.rec_type&&b.rec_type&&(a+"").indexOf("#")==-1)this._select_id=null;return!0});
+scheduler.attachEvent("onEventCreated",function(a){var b=this.getEvent(a);if(!b.rec_type)b.rec_type=b.rec_pattern=b.event_length=b.event_pid="";return!0});scheduler.attachEvent("onEventCancel",function(a){var b=this.getEvent(a);b.rec_type&&(this._roll_back_dates(b),this.render_view_data())});
+scheduler._roll_back_dates=function(a){a.event_length=(a.end_date.valueOf()-a.start_date.valueOf())/1E3;a.end_date=a._end_date;a._start_date&&(a.start_date.setMonth(0),a.start_date.setDate(a._start_date.getDate()),a.start_date.setMonth(a._start_date.getMonth()),a.start_date.setFullYear(a._start_date.getFullYear()))};scheduler.validId=function(a){return a.toString().indexOf("#")==-1};scheduler.showLightbox_rec=scheduler.showLightbox;
+scheduler.showLightbox=function(a){var b=this.getEvent(a).event_pid;a.toString().indexOf("#")!=-1&&(b=a.split("#")[0]);if(!b||b==0||!this.locale.labels.confirm_recurring||!confirm(this.locale.labels.confirm_recurring))return this.showLightbox_rec(a);b=this.getEvent(b);b._end_date=b.end_date;b.end_date=new Date(b.start_date.valueOf()+b.event_length*1E3);return this.showLightbox_rec(b.id)};scheduler.get_visible_events_rec=scheduler.get_visible_events;
+scheduler.get_visible_events=function(){for(var a=0;a<this._rec_temp.length;a++)delete this._events[this._rec_temp[a].id];this._rec_temp=[];for(var b=this.get_visible_events_rec(),c=[],a=0;a<b.length;a++)b[a].rec_type?b[a].rec_pattern!="none"&&this.repeat_date(b[a],c):c.push(b[a]);return c};(function(){var a=scheduler.is_one_day_event;scheduler.is_one_day_event=function(b){return b.rec_type?!0:a.call(this,b)}})();scheduler.transponse_size={day:1,week:7,month:1,year:12};
+scheduler.date.day_week=function(a,b,c){a.setDate(1);var c=(c-1)*7,d=a.getDay(),f=b*1+c-d+1;a.setDate(f<=c?f+7:f)};scheduler.transpose_day_week=function(a,b,c,d,f){for(var e=(a.getDay()||(scheduler.config.start_on_monday?7:0))-c,h=0;h<b.length;h++)if(b[h]>e)return a.setDate(a.getDate()+b[h]*1-e-(d?c:f));this.transpose_day_week(a,b,c+d,null,c)};
+scheduler.transpose_type=function(a){var b="transpose_"+a;if(!this.date[b]){var c=a.split("_"),d=864E5,f="add_"+a,e=this.transponse_size[c[0]]*c[1];if(c[0]=="day"||c[0]=="week"){var h=null;if(c[4]&&(h=c[4].split(","),scheduler.config.start_on_monday)){for(var j=0;j<h.length;j++)h[j]=h[j]*1||7;h.sort()}this.date[b]=function(a,b){var c=Math.floor((b.valueOf()-a.valueOf())/(d*e));c>0&&a.setDate(a.getDate()+c*e);h&&scheduler.transpose_day_week(a,h,1,e)};this.date[f]=function(a,b){var c=new Date(a.valueOf());
+if(h)for(var d=0;d<b;d++)scheduler.transpose_day_week(c,h,0,e);else c.setDate(c.getDate()+b*e);return c}}else if(c[0]=="month"||c[0]=="year")this.date[b]=function(a,b){var d=Math.ceil((b.getFullYear()*12+b.getMonth()*1-(a.getFullYear()*12+a.getMonth()*1))/e);d>=0&&a.setMonth(a.getMonth()+d*e);c[3]&&scheduler.date.day_week(a,c[2],c[3])},this.date[f]=function(a,b){var d=new Date(a.valueOf());d.setMonth(d.getMonth()+b*e);c[3]&&scheduler.date.day_week(d,c[2],c[3]);return d}}};
+scheduler.repeat_date=function(a,b,c,d,f){var d=d||this._min_date,f=f||this._max_date,e=new Date(a.start_date.valueOf());if(!a.rec_pattern&&a.rec_type)a.rec_pattern=a.rec_type.split("#")[0];this.transpose_type(a.rec_pattern);for(scheduler.date["transpose_"+a.rec_pattern](e,d);e<a.start_date||e.valueOf()+a.event_length*1E3<=d.valueOf();)e=this.date.add(e,1,a.rec_pattern);for(;e<f&&e<a.end_date;){var h=this._get_rec_marker(e.valueOf(),a.id);if(h)c&&b.push(h);else{var j=new Date(e.valueOf()+a.event_length*
+1E3),i=this._copy_event(a);i.text=a.text;i.start_date=e;i.event_pid=a.id;i.id=a.id+"#"+Math.ceil(e.valueOf()/1E3);i.end_date=j;var k=i.start_date.getTimezoneOffset()-i.end_date.getTimezoneOffset();if(k)i.end_date=k>0?new Date(e.valueOf()+a.event_length*1E3-k*6E4):new Date(i.end_date.valueOf()+k*6E4);i._timed=this.is_one_day_event(i);if(!i._timed&&!this._table_view&&!this.config.multi_day)break;b.push(i);c||(this._events[i.id]=i,this._rec_temp.push(i))}e=this.date.add(e,1,a.rec_pattern)}};
+scheduler.getRecDates=function(a,b){var c=typeof a=="object"?a:scheduler.getEvent(a),d=0,f=[],b=b||1E3,e=new Date(c.start_date.valueOf()),h=new Date(e.valueOf());if(!c.rec_type)return[{start_date:c.start_date,end_date:c.end_date}];this.transpose_type(c.rec_pattern);for(scheduler.date["transpose_"+c.rec_pattern](e,h);e<c.start_date||e.valueOf()+c.event_length*1E3<=h.valueOf();)e=this.date.add(e,1,c.rec_pattern);for(;e<c.end_date;){var j=this._get_rec_marker(e.valueOf(),c.id),i=!0;if(j)j.rec_type==
+"none"?i=!1:f.push({start_date:j.start_date,end_date:j.end_date});else{var k=new Date(e.valueOf()+c.event_length*1E3),l=new Date(e);f.push({start_date:l,end_date:k})}e=this.date.add(e,1,c.rec_pattern);if(i&&(d++,d==b))break}return f};
+scheduler.getEvents=function(a,b){var c=[],d;for(d in this._events){var f=this._events[d];if(f&&f.start_date<b&&f.end_date>a)if(f.rec_pattern){if(f.rec_pattern!="none"){var e=[];this.repeat_date(f,e,!0,a,b);for(var h=0;h<e.length;h++)!e[h].rec_pattern&&e[h].start_date<b&&e[h].end_date>a&&!this._rec_markers[e[h].id]&&c.push(e[h])}}else f.id.toString().indexOf("#")==-1&&c.push(f)}return c};scheduler.config.repeat_date="%m.%d.%Y";
+scheduler.config.lightbox.sections=[{name:"description",height:130,map_to:"text",type:"textarea",focus:!0},{name:"recurring",type:"recurring",map_to:"rec_type",button:"recurring"},{name:"time",height:72,type:"time",map_to:"auto"}];scheduler._copy_dummy=function(){this.start_date=new Date(this.start_date);this.end_date=new Date(this.end_date);this.event_length=this.event_pid=this.rec_pattern=this.rec_type=this._timed=null};
+scheduler.__recurring_template='<div class="dhx_form_repeat"> <form> <div class="dhx_repeat_left"> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="day" />Daily</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="week"/>Weekly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="month" checked />Monthly</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="repeat" value="year" />Yearly</label> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_center"> <div style="display:none;" id="dhx_repeat_day"> <label><input class="dhx_repeat_radio" type="radio" name="day_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="day_count" value="1" />day<br /> <label><input class="dhx_repeat_radio" type="radio" name="day_type" checked value="w"/>Every workday</label> </div> <div style="display:none;" id="dhx_repeat_week"> Repeat every<input class="dhx_repeat_text" type="text" name="week_count" value="1" />week next days:<br /> <table class="dhx_repeat_days"> <tr> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="1" />Monday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="4" />Thursday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="2" />Tuesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="5" />Friday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="3" />Wednesday</label><br /> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="6" />Saturday</label> </td> <td> <label><input class="dhx_repeat_checkbox" type="checkbox" name="week_day" value="0" />Sunday</label><br /><br /> </td> </tr> </table> </div> <div id="dhx_repeat_month"> <label><input class="dhx_repeat_radio" type="radio" name="month_type" value="d"/>Repeat</label><input class="dhx_repeat_text" type="text" name="month_day" value="1" />day every<input class="dhx_repeat_text" type="text" name="month_count" value="1" />month<br /> <label><input class="dhx_repeat_radio" type="radio" name="month_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="month_week2" value="1" /><select name="month_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="0">Sunday</select>every<input class="dhx_repeat_text" type="text" name="month_count2" value="1" />month<br /> </div> <div style="display:none;" id="dhx_repeat_year"> <label><input class="dhx_repeat_radio" type="radio" name="year_type" value="d"/>Every</label><input class="dhx_repeat_text" type="text" name="year_day" value="1" />day<select name="year_month"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select>month<br /> <label><input class="dhx_repeat_radio" type="radio" name="year_type" checked value="w"/>On</label><input class="dhx_repeat_text" type="text" name="year_week2" value="1" /><select name="year_day2"><option value="1" selected >Monday<option value="2">Tuesday<option value="3">Wednesday<option value="4">Thursday<option value="5">Friday<option value="6">Saturday<option value="7">Sunday</select>of<select name="year_month2"><option value="0" selected >January<option value="1">February<option value="2">March<option value="3">April<option value="4">May<option value="5">June<option value="6">July<option value="7">August<option value="8">September<option value="9">October<option value="10">November<option value="11">December</select><br /> </div> </div> <div class="dhx_repeat_divider"></div> <div class="dhx_repeat_right"> <label><input class="dhx_repeat_radio" type="radio" name="end" checked/>No end date</label><br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />After</label><input class="dhx_repeat_text" type="text" name="occurences_count" value="1" />occurrences<br /> <label><input class="dhx_repeat_radio" type="radio" name="end" />End by</label><input class="dhx_repeat_date" type="text" name="date_of_end" value="'+scheduler.config.repeat_date_of_end+
+'" /><br /> </div> </form> </div> <div style="clear:both"> </div>';
diff --git a/samples/dhtmlx/imgs/.svn/entries b/samples/dhtmlx/imgs/.svn/entries
new file mode 100644
index 0000000..5828bea
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/entries
@@ -0,0 +1,402 @@
+10
+
+dir
+7317
+svn://192.168.1.251/dhtmlxRepos/main/dhtmlxScheduler/codebase/imgs
+svn://192.168.1.251/dhtmlxRepos
+
+
+
+2011-06-28T16:53:08.206767Z
+7236
+max
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+250b41f1-4a41-be48-a408-802e3b30a19c
+
+clock_big.gif
+file
+
+
+
+
+2011-07-11T13:24:50.619219Z
+eafa363f47ca1db7c6a619cf49529c82
+2009-07-09T17:57:12.879375Z
+3922
+max
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1321
+
+buttons.png
+file
+
+
+
+
+2011-07-11T13:24:50.622219Z
+13e7dcc36dceae67e7640710691fca9f
+2009-07-17T11:54:37.859375Z
+4002
+max
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+281
+
+loading.gif
+file
+
+
+
+
+2011-07-11T13:24:50.626219Z
+bb3e07337c49b0d4abb1f1b4e5d3f37d
+2009-07-09T17:57:12.879375Z
+3922
+max
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3951
+
+databg.png
+file
+
+
+
+
+2011-07-11T13:24:50.631220Z
+8ef542bac721a7f8a142c3900625837b
+2009-05-15T17:05:07.925463Z
+3617
+max
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+152
+
+clock_small.gif
+file
+
+
+
+
+2011-07-11T13:24:50.634220Z
+3b30906182b1b828f94a0538ef2a597a
+2009-07-09T17:57:12.879375Z
+3922
+max
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+388
+
+controls.gif
+file
+
+
+
+
+2011-07-11T13:24:50.638220Z
+244e8600e6ae5d4e6e7744b258289032
+2009-07-09T17:57:12.879375Z
+3922
+max
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2496
+
+databg_now.png
+file
+
+
+
+
+2011-07-11T13:24:50.641220Z
+a543417d8ae1ecadd4298a962ada54f8
+2009-05-15T17:05:07.925463Z
+3617
+max
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+152
+
+icon.png
+file
+
+
+
+
+2011-07-11T13:24:50.644220Z
+5cc53a437bee628a56eeeded3827ff2d
+2010-06-04T18:15:34.883216Z
+5695
+max
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+230
+
+calendar.gif
+file
+
+
+
+
+2011-07-11T13:24:50.648220Z
+b6b23b3c6928b7bfd5b8bc619d30903b
+2010-06-04T18:15:34.883216Z
+5695
+max
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+622
+
+colapce-expand-icon.gif
+file
+
+
+
+
+2011-07-11T13:24:50.652220Z
+e30c26066e89dc3db72d452cfe19d86b
+2010-06-04T18:15:34.883216Z
+5695
+max
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+452
+
+but_repeat.gif
+file
+
+
+
+
+2011-07-11T13:24:50.655220Z
+bf37214a5eac4d110959bbc0e1a6c55e
+2009-06-24T10:17:18.548452Z
+3781
+max
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1149
+
diff --git a/samples/dhtmlx/imgs/.svn/prop-base/but_repeat.gif.svn-base b/samples/dhtmlx/imgs/.svn/prop-base/but_repeat.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/prop-base/but_repeat.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/samples/dhtmlx/imgs/.svn/prop-base/buttons.png.svn-base b/samples/dhtmlx/imgs/.svn/prop-base/buttons.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/prop-base/buttons.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/samples/dhtmlx/imgs/.svn/prop-base/calendar.gif.svn-base b/samples/dhtmlx/imgs/.svn/prop-base/calendar.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/prop-base/calendar.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/samples/dhtmlx/imgs/.svn/prop-base/clock_big.gif.svn-base b/samples/dhtmlx/imgs/.svn/prop-base/clock_big.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/prop-base/clock_big.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/samples/dhtmlx/imgs/.svn/prop-base/clock_small.gif.svn-base b/samples/dhtmlx/imgs/.svn/prop-base/clock_small.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/prop-base/clock_small.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/samples/dhtmlx/imgs/.svn/prop-base/colapce-expand-icon.gif.svn-base b/samples/dhtmlx/imgs/.svn/prop-base/colapce-expand-icon.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/prop-base/colapce-expand-icon.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/samples/dhtmlx/imgs/.svn/prop-base/controls.gif.svn-base b/samples/dhtmlx/imgs/.svn/prop-base/controls.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/prop-base/controls.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/samples/dhtmlx/imgs/.svn/prop-base/databg.png.svn-base b/samples/dhtmlx/imgs/.svn/prop-base/databg.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/prop-base/databg.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/samples/dhtmlx/imgs/.svn/prop-base/databg_now.png.svn-base b/samples/dhtmlx/imgs/.svn/prop-base/databg_now.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/prop-base/databg_now.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/samples/dhtmlx/imgs/.svn/prop-base/icon.png.svn-base b/samples/dhtmlx/imgs/.svn/prop-base/icon.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/prop-base/icon.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/samples/dhtmlx/imgs/.svn/prop-base/loading.gif.svn-base b/samples/dhtmlx/imgs/.svn/prop-base/loading.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/prop-base/loading.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/samples/dhtmlx/imgs/.svn/text-base/but_repeat.gif.svn-base b/samples/dhtmlx/imgs/.svn/text-base/but_repeat.gif.svn-base
new file mode 100644
index 0000000..dd6595e
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/text-base/but_repeat.gif.svn-base
Binary files differ
diff --git a/samples/dhtmlx/imgs/.svn/text-base/buttons.png.svn-base b/samples/dhtmlx/imgs/.svn/text-base/buttons.png.svn-base
new file mode 100644
index 0000000..5036c9c
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/text-base/buttons.png.svn-base
Binary files differ
diff --git a/samples/dhtmlx/imgs/.svn/text-base/calendar.gif.svn-base b/samples/dhtmlx/imgs/.svn/text-base/calendar.gif.svn-base
new file mode 100644
index 0000000..6725708
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/text-base/calendar.gif.svn-base
Binary files differ
diff --git a/samples/dhtmlx/imgs/.svn/text-base/clock_big.gif.svn-base b/samples/dhtmlx/imgs/.svn/text-base/clock_big.gif.svn-base
new file mode 100644
index 0000000..61f7dc2
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/text-base/clock_big.gif.svn-base
Binary files differ
diff --git a/samples/dhtmlx/imgs/.svn/text-base/clock_small.gif.svn-base b/samples/dhtmlx/imgs/.svn/text-base/clock_small.gif.svn-base
new file mode 100644
index 0000000..3e4b179
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/text-base/clock_small.gif.svn-base
Binary files differ
diff --git a/samples/dhtmlx/imgs/.svn/text-base/colapce-expand-icon.gif.svn-base b/samples/dhtmlx/imgs/.svn/text-base/colapce-expand-icon.gif.svn-base
new file mode 100644
index 0000000..64da948
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/text-base/colapce-expand-icon.gif.svn-base
Binary files differ
diff --git a/samples/dhtmlx/imgs/.svn/text-base/controls.gif.svn-base b/samples/dhtmlx/imgs/.svn/text-base/controls.gif.svn-base
new file mode 100644
index 0000000..9732e2d
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/text-base/controls.gif.svn-base
Binary files differ
diff --git a/samples/dhtmlx/imgs/.svn/text-base/databg.png.svn-base b/samples/dhtmlx/imgs/.svn/text-base/databg.png.svn-base
new file mode 100644
index 0000000..3bba608
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/text-base/databg.png.svn-base
Binary files differ
diff --git a/samples/dhtmlx/imgs/.svn/text-base/databg_now.png.svn-base b/samples/dhtmlx/imgs/.svn/text-base/databg_now.png.svn-base
new file mode 100644
index 0000000..510dfd0
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/text-base/databg_now.png.svn-base
Binary files differ
diff --git a/samples/dhtmlx/imgs/.svn/text-base/icon.png.svn-base b/samples/dhtmlx/imgs/.svn/text-base/icon.png.svn-base
new file mode 100644
index 0000000..31d6626
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/text-base/icon.png.svn-base
Binary files differ
diff --git a/samples/dhtmlx/imgs/.svn/text-base/loading.gif.svn-base b/samples/dhtmlx/imgs/.svn/text-base/loading.gif.svn-base
new file mode 100644
index 0000000..f5e71df
--- /dev/null
+++ b/samples/dhtmlx/imgs/.svn/text-base/loading.gif.svn-base
Binary files differ
diff --git a/samples/dhtmlx/imgs/arrow.gif b/samples/dhtmlx/imgs/arrow.gif
new file mode 100644
index 0000000..8db98c0
--- /dev/null
+++ b/samples/dhtmlx/imgs/arrow.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/bg_selection.gif b/samples/dhtmlx/imgs/bg_selection.gif
new file mode 100644
index 0000000..9bec728
--- /dev/null
+++ b/samples/dhtmlx/imgs/bg_selection.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/blanc.gif b/samples/dhtmlx/imgs/blanc.gif
new file mode 100644
index 0000000..d7ae406
--- /dev/null
+++ b/samples/dhtmlx/imgs/blanc.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/blank.gif b/samples/dhtmlx/imgs/blank.gif
new file mode 100644
index 0000000..d7ae406
--- /dev/null
+++ b/samples/dhtmlx/imgs/blank.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/blank.html b/samples/dhtmlx/imgs/blank.html
new file mode 100644
index 0000000..0519ecb
--- /dev/null
+++ b/samples/dhtmlx/imgs/blank.html
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/samples/dhtmlx/imgs/but_repeat.gif b/samples/dhtmlx/imgs/but_repeat.gif
new file mode 100644
index 0000000..dd6595e
--- /dev/null
+++ b/samples/dhtmlx/imgs/but_repeat.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/buttons.png b/samples/dhtmlx/imgs/buttons.png
new file mode 100644
index 0000000..5036c9c
--- /dev/null
+++ b/samples/dhtmlx/imgs/buttons.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/calendar.gif b/samples/dhtmlx/imgs/calendar.gif
new file mode 100644
index 0000000..6725708
--- /dev/null
+++ b/samples/dhtmlx/imgs/calendar.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/clock_big.gif b/samples/dhtmlx/imgs/clock_big.gif
new file mode 100644
index 0000000..61f7dc2
--- /dev/null
+++ b/samples/dhtmlx/imgs/clock_big.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/clock_small.gif b/samples/dhtmlx/imgs/clock_small.gif
new file mode 100644
index 0000000..3e4b179
--- /dev/null
+++ b/samples/dhtmlx/imgs/clock_small.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/colapce-expand-icon.gif b/samples/dhtmlx/imgs/colapce-expand-icon.gif
new file mode 100644
index 0000000..64da948
--- /dev/null
+++ b/samples/dhtmlx/imgs/colapce-expand-icon.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/combo_select_dhx_skyblue.gif b/samples/dhtmlx/imgs/combo_select_dhx_skyblue.gif
new file mode 100644
index 0000000..7a666a2
--- /dev/null
+++ b/samples/dhtmlx/imgs/combo_select_dhx_skyblue.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/controls.gif b/samples/dhtmlx/imgs/controls.gif
new file mode 100644
index 0000000..9732e2d
--- /dev/null
+++ b/samples/dhtmlx/imgs/controls.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/databg.png b/samples/dhtmlx/imgs/databg.png
new file mode 100644
index 0000000..3bba608
--- /dev/null
+++ b/samples/dhtmlx/imgs/databg.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/databg_now.png b/samples/dhtmlx/imgs/databg_now.png
new file mode 100644
index 0000000..510dfd0
--- /dev/null
+++ b/samples/dhtmlx/imgs/databg_now.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/dataview/bottom.png b/samples/dhtmlx/imgs/dataview/bottom.png
new file mode 100644
index 0000000..b04f2a7
--- /dev/null
+++ b/samples/dhtmlx/imgs/dataview/bottom.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/dataview/dnd_selector.png b/samples/dhtmlx/imgs/dataview/dnd_selector.png
new file mode 100644
index 0000000..5d8e9b4
--- /dev/null
+++ b/samples/dhtmlx/imgs/dataview/dnd_selector.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/dataview/dnd_selector_cells.png b/samples/dhtmlx/imgs/dataview/dnd_selector_cells.png
new file mode 100644
index 0000000..63da638
--- /dev/null
+++ b/samples/dhtmlx/imgs/dataview/dnd_selector_cells.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/dataview/dnd_selector_lines.png b/samples/dhtmlx/imgs/dataview/dnd_selector_lines.png
new file mode 100644
index 0000000..576ecfd
--- /dev/null
+++ b/samples/dhtmlx/imgs/dataview/dnd_selector_lines.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/dataview/marker.png b/samples/dhtmlx/imgs/dataview/marker.png
new file mode 100644
index 0000000..ceec125
--- /dev/null
+++ b/samples/dhtmlx/imgs/dataview/marker.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/dataview/selection_bg.png b/samples/dhtmlx/imgs/dataview/selection_bg.png
new file mode 100644
index 0000000..db34e7e
--- /dev/null
+++ b/samples/dhtmlx/imgs/dataview/selection_bg.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/dataview/sky_blue_grid.gif b/samples/dhtmlx/imgs/dataview/sky_blue_grid.gif
new file mode 100644
index 0000000..430aa24
--- /dev/null
+++ b/samples/dhtmlx/imgs/dataview/sky_blue_grid.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/dyn_down.gif b/samples/dhtmlx/imgs/dyn_down.gif
new file mode 100644
index 0000000..b73c84e
--- /dev/null
+++ b/samples/dhtmlx/imgs/dyn_down.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/dyn_up.gif b/samples/dhtmlx/imgs/dyn_up.gif
new file mode 100644
index 0000000..556a9fb
--- /dev/null
+++ b/samples/dhtmlx/imgs/dyn_up.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/folder.gif b/samples/dhtmlx/imgs/folder.gif
new file mode 100644
index 0000000..23d4a3e
--- /dev/null
+++ b/samples/dhtmlx/imgs/folder.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/folderClosed.gif b/samples/dhtmlx/imgs/folderClosed.gif
new file mode 100644
index 0000000..1ebe3c9
--- /dev/null
+++ b/samples/dhtmlx/imgs/folderClosed.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/folderOpen.gif b/samples/dhtmlx/imgs/folderOpen.gif
new file mode 100644
index 0000000..c193e86
--- /dev/null
+++ b/samples/dhtmlx/imgs/folderOpen.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/icon.png b/samples/dhtmlx/imgs/icon.png
new file mode 100644
index 0000000..31d6626
--- /dev/null
+++ b/samples/dhtmlx/imgs/icon.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/iconCheckAll.gif b/samples/dhtmlx/imgs/iconCheckAll.gif
new file mode 100644
index 0000000..d908992
--- /dev/null
+++ b/samples/dhtmlx/imgs/iconCheckAll.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/iconCheckDis.gif b/samples/dhtmlx/imgs/iconCheckDis.gif
new file mode 100644
index 0000000..6f0b1c7
--- /dev/null
+++ b/samples/dhtmlx/imgs/iconCheckDis.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/iconCheckGray.gif b/samples/dhtmlx/imgs/iconCheckGray.gif
new file mode 100644
index 0000000..cb54c0a
--- /dev/null
+++ b/samples/dhtmlx/imgs/iconCheckGray.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/iconUncheckAll.gif b/samples/dhtmlx/imgs/iconUncheckAll.gif
new file mode 100644
index 0000000..5e54ec5
--- /dev/null
+++ b/samples/dhtmlx/imgs/iconUncheckAll.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/iconUncheckDis.gif b/samples/dhtmlx/imgs/iconUncheckDis.gif
new file mode 100644
index 0000000..eec88a7
--- /dev/null
+++ b/samples/dhtmlx/imgs/iconUncheckDis.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/item_chk0.gif b/samples/dhtmlx/imgs/item_chk0.gif
new file mode 100644
index 0000000..26cdf57
--- /dev/null
+++ b/samples/dhtmlx/imgs/item_chk0.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/item_chk0_dis.gif b/samples/dhtmlx/imgs/item_chk0_dis.gif
new file mode 100644
index 0000000..6be4117
--- /dev/null
+++ b/samples/dhtmlx/imgs/item_chk0_dis.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/item_chk1.gif b/samples/dhtmlx/imgs/item_chk1.gif
new file mode 100644
index 0000000..54e5517
--- /dev/null
+++ b/samples/dhtmlx/imgs/item_chk1.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/item_chk1_dis.gif b/samples/dhtmlx/imgs/item_chk1_dis.gif
new file mode 100644
index 0000000..2a2c014
--- /dev/null
+++ b/samples/dhtmlx/imgs/item_chk1_dis.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/leaf.gif b/samples/dhtmlx/imgs/leaf.gif
new file mode 100644
index 0000000..1cf40f1
--- /dev/null
+++ b/samples/dhtmlx/imgs/leaf.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/loading.gif b/samples/dhtmlx/imgs/loading.gif
new file mode 100644
index 0000000..f5e71df
--- /dev/null
+++ b/samples/dhtmlx/imgs/loading.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/radio_chk0.gif b/samples/dhtmlx/imgs/radio_chk0.gif
new file mode 100644
index 0000000..6c0dd89
--- /dev/null
+++ b/samples/dhtmlx/imgs/radio_chk0.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/radio_chk0_dis.gif b/samples/dhtmlx/imgs/radio_chk0_dis.gif
new file mode 100644
index 0000000..dad9cd5
--- /dev/null
+++ b/samples/dhtmlx/imgs/radio_chk0_dis.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/radio_chk1.gif b/samples/dhtmlx/imgs/radio_chk1.gif
new file mode 100644
index 0000000..aa0b05c
--- /dev/null
+++ b/samples/dhtmlx/imgs/radio_chk1.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/radio_chk1_dis.gif b/samples/dhtmlx/imgs/radio_chk1_dis.gif
new file mode 100644
index 0000000..4df229f
--- /dev/null
+++ b/samples/dhtmlx/imgs/radio_chk1_dis.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/radio_off.gif b/samples/dhtmlx/imgs/radio_off.gif
new file mode 100644
index 0000000..27dc5f9
--- /dev/null
+++ b/samples/dhtmlx/imgs/radio_off.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/radio_on.gif b/samples/dhtmlx/imgs/radio_on.gif
new file mode 100644
index 0000000..efd74ee
--- /dev/null
+++ b/samples/dhtmlx/imgs/radio_on.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/sky_blue_grid.gif b/samples/dhtmlx/imgs/sky_blue_grid.gif
new file mode 100644
index 0000000..430aa24
--- /dev/null
+++ b/samples/dhtmlx/imgs/sky_blue_grid.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/sky_blue_sel.png b/samples/dhtmlx/imgs/sky_blue_sel.png
new file mode 100644
index 0000000..11f1998
--- /dev/null
+++ b/samples/dhtmlx/imgs/sky_blue_sel.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/sky_blue_sel2.png b/samples/dhtmlx/imgs/sky_blue_sel2.png
new file mode 100644
index 0000000..4d17d58
--- /dev/null
+++ b/samples/dhtmlx/imgs/sky_blue_sel2.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/sky_blue_sel_tree.png b/samples/dhtmlx/imgs/sky_blue_sel_tree.png
new file mode 100644
index 0000000..f090efc
--- /dev/null
+++ b/samples/dhtmlx/imgs/sky_blue_sel_tree.png
Binary files differ
diff --git a/samples/dhtmlx/imgs/sort_asc.gif b/samples/dhtmlx/imgs/sort_asc.gif
new file mode 100644
index 0000000..eb5ec10
--- /dev/null
+++ b/samples/dhtmlx/imgs/sort_asc.gif
Binary files differ
diff --git a/samples/dhtmlx/imgs/sort_desc.gif b/samples/dhtmlx/imgs/sort_desc.gif
new file mode 100644
index 0000000..74d16d5
--- /dev/null
+++ b/samples/dhtmlx/imgs/sort_desc.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/blank.gif b/samples/dhtmlx/tree/blank.gif
new file mode 100644
index 0000000..d7ae406
--- /dev/null
+++ b/samples/dhtmlx/tree/blank.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/folderClosed.gif b/samples/dhtmlx/tree/folderClosed.gif
new file mode 100644
index 0000000..e4bd9d6
--- /dev/null
+++ b/samples/dhtmlx/tree/folderClosed.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/folderOpen.gif b/samples/dhtmlx/tree/folderOpen.gif
new file mode 100644
index 0000000..020ce72
--- /dev/null
+++ b/samples/dhtmlx/tree/folderOpen.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/iconCheckAll.gif b/samples/dhtmlx/tree/iconCheckAll.gif
new file mode 100644
index 0000000..2671733
--- /dev/null
+++ b/samples/dhtmlx/tree/iconCheckAll.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/iconCheckDis.gif b/samples/dhtmlx/tree/iconCheckDis.gif
new file mode 100644
index 0000000..53349a1
--- /dev/null
+++ b/samples/dhtmlx/tree/iconCheckDis.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/iconCheckGray.gif b/samples/dhtmlx/tree/iconCheckGray.gif
new file mode 100644
index 0000000..88137a3
--- /dev/null
+++ b/samples/dhtmlx/tree/iconCheckGray.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/iconUncheckAll.gif b/samples/dhtmlx/tree/iconUncheckAll.gif
new file mode 100644
index 0000000..c4388e5
--- /dev/null
+++ b/samples/dhtmlx/tree/iconUncheckAll.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/iconUncheckDis.gif b/samples/dhtmlx/tree/iconUncheckDis.gif
new file mode 100644
index 0000000..174eff4
--- /dev/null
+++ b/samples/dhtmlx/tree/iconUncheckDis.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/leaf.gif b/samples/dhtmlx/tree/leaf.gif
new file mode 100644
index 0000000..b0ce63a
--- /dev/null
+++ b/samples/dhtmlx/tree/leaf.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/line.gif b/samples/dhtmlx/tree/line.gif
new file mode 100644
index 0000000..60f2ccb
--- /dev/null
+++ b/samples/dhtmlx/tree/line.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/line1.gif b/samples/dhtmlx/tree/line1.gif
new file mode 100644
index 0000000..60f2ccb
--- /dev/null
+++ b/samples/dhtmlx/tree/line1.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/line2.gif b/samples/dhtmlx/tree/line2.gif
new file mode 100644
index 0000000..f2d7bdd
--- /dev/null
+++ b/samples/dhtmlx/tree/line2.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/line3.gif b/samples/dhtmlx/tree/line3.gif
new file mode 100644
index 0000000..d718be2
--- /dev/null
+++ b/samples/dhtmlx/tree/line3.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/line4.gif b/samples/dhtmlx/tree/line4.gif
new file mode 100644
index 0000000..29285e5
--- /dev/null
+++ b/samples/dhtmlx/tree/line4.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/lock.gif b/samples/dhtmlx/tree/lock.gif
new file mode 100644
index 0000000..1d06b0d
--- /dev/null
+++ b/samples/dhtmlx/tree/lock.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/minus.gif b/samples/dhtmlx/tree/minus.gif
new file mode 100644
index 0000000..ef04a54
--- /dev/null
+++ b/samples/dhtmlx/tree/minus.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/minus1.gif b/samples/dhtmlx/tree/minus1.gif
new file mode 100644
index 0000000..ef04a54
--- /dev/null
+++ b/samples/dhtmlx/tree/minus1.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/minus2.gif b/samples/dhtmlx/tree/minus2.gif
new file mode 100644
index 0000000..0372294
--- /dev/null
+++ b/samples/dhtmlx/tree/minus2.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/minus3.gif b/samples/dhtmlx/tree/minus3.gif
new file mode 100644
index 0000000..d928af6
--- /dev/null
+++ b/samples/dhtmlx/tree/minus3.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/minus4.gif b/samples/dhtmlx/tree/minus4.gif
new file mode 100644
index 0000000..30bc7de
--- /dev/null
+++ b/samples/dhtmlx/tree/minus4.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/minus5.gif b/samples/dhtmlx/tree/minus5.gif
new file mode 100644
index 0000000..e2e30fc
--- /dev/null
+++ b/samples/dhtmlx/tree/minus5.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/plus.gif b/samples/dhtmlx/tree/plus.gif
new file mode 100644
index 0000000..abb84bd
--- /dev/null
+++ b/samples/dhtmlx/tree/plus.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/plus1.gif b/samples/dhtmlx/tree/plus1.gif
new file mode 100644
index 0000000..abb84bd
--- /dev/null
+++ b/samples/dhtmlx/tree/plus1.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/plus2.gif b/samples/dhtmlx/tree/plus2.gif
new file mode 100644
index 0000000..ea2816e
--- /dev/null
+++ b/samples/dhtmlx/tree/plus2.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/plus3.gif b/samples/dhtmlx/tree/plus3.gif
new file mode 100644
index 0000000..cd6967e
--- /dev/null
+++ b/samples/dhtmlx/tree/plus3.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/plus4.gif b/samples/dhtmlx/tree/plus4.gif
new file mode 100644
index 0000000..185bd9b
--- /dev/null
+++ b/samples/dhtmlx/tree/plus4.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/plus5.gif b/samples/dhtmlx/tree/plus5.gif
new file mode 100644
index 0000000..72fe4e5
--- /dev/null
+++ b/samples/dhtmlx/tree/plus5.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/radio_off.gif b/samples/dhtmlx/tree/radio_off.gif
new file mode 100644
index 0000000..b3baf66
--- /dev/null
+++ b/samples/dhtmlx/tree/radio_off.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/radio_on.gif b/samples/dhtmlx/tree/radio_on.gif
new file mode 100644
index 0000000..476fbb3
--- /dev/null
+++ b/samples/dhtmlx/tree/radio_on.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/tombs.gif b/samples/dhtmlx/tree/tombs.gif
new file mode 100644
index 0000000..25131ee
--- /dev/null
+++ b/samples/dhtmlx/tree/tombs.gif
Binary files differ
diff --git a/samples/dhtmlx/tree/tombs_open.gif b/samples/dhtmlx/tree/tombs_open.gif
new file mode 100644
index 0000000..25131ee
--- /dev/null
+++ b/samples/dhtmlx/tree/tombs_open.gif
Binary files differ
diff --git a/samples/dump.sql b/samples/dump.sql
new file mode 100644
index 0000000..4c91e59
--- /dev/null
+++ b/samples/dump.sql
@@ -0,0 +1,500 @@
+-- MySQL dump 10.13 Distrib 5.1.41, for Win32 (ia32)
+--
+-- Host: localhost Database: sampledb1
+-- ------------------------------------------------------
+-- Server version 5.1.41
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `actions_table`
+--
+
+DROP TABLE IF EXISTS `actions_table`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `actions_table` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `dataId` int(11) NOT NULL,
+ `type` varchar(255) NOT NULL,
+ `user` varchar(255) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `actions_table`
+--
+
+LOCK TABLES `actions_table` WRITE;
+/*!40000 ALTER TABLE `actions_table` DISABLE KEYS */;
+/*!40000 ALTER TABLE `actions_table` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `countries`
+--
+
+DROP TABLE IF EXISTS `countries`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `countries` (
+ `item_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `item_nm` varchar(200) DEFAULT NULL,
+ `item_cd` varchar(15) DEFAULT NULL,
+ PRIMARY KEY (`item_id`)
+) ENGINE=MyISAM AUTO_INCREMENT=196 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `countries`
+--
+
+LOCK TABLES `countries` WRITE;
+/*!40000 ALTER TABLE `countries` DISABLE KEYS */;
+INSERT INTO `countries` VALUES (1,'Afghanistan ','293141'),(2,'Albania ','553524'),(3,'Algeria ','727298'),(4,'Andorra ','804756'),(5,'Angola ','376164'),(6,'Antigua and Barbuda ','366907'),(7,'Argentina ','316613'),(8,'Armenia ','816466'),(9,'Australia ','410238'),(10,'Austria ','894267'),(11,'Azerbaijan ','815701'),(12,'Bahamas ','610438'),(13,'Bahrain ','908482'),(14,'Bangladesh ','164149'),(15,'Barbados ','793231'),(16,'Belarus ','591765'),(17,'Belgium ','223516'),(18,'Belize ','958196'),(19,'Benin ','978371'),(20,'Bhutan ','733443'),(21,'Bolivia ','596856'),(22,'Bosnia and Herzegovina ','440752'),(23,'Botswana ','803991'),(24,'Brazil ','576364'),(25,'Brunei ','381122'),(26,'Bulgaria ','529261'),(27,'Burkina Faso ','135060'),(28,'Burundi ','957721'),(29,'Cambodia ','953633'),(30,'Cameroon ','980666'),(31,'Canada ','132844'),(32,'Cape Verde ','554210'),(33,'Central African Republic ','667008'),(34,'Chad ','255612'),(35,'Chile ','662314'),(36,'China ','203024'),(37,'Colombia ','898566'),(38,'Comoros ','703641'),(39,'Congo (Brazzaville) ','292139'),(40,'Congo, Democratic Republic of the ','309255'),(41,'Costa Rica ','865124'),(42,'Croatia ','615686'),(43,'Cuba ','845898'),(44,'Cyprus ','215604'),(45,'Czech Republic ','257827'),(46,'Denmark ','201626'),(47,'Djibouti ','489648'),(48,'Dominica ','759420'),(49,'Dominican Republic ','174171'),(50,'East Timor (Timor Timur) ','643325'),(51,'Ecuador ','941897'),(52,'Egypt ','417095'),(53,'El Salvador ','291374'),(54,'Equatorial Guinea ','509455'),(55,'Eritrea ','879340'),(56,'Estonia ','133847'),(57,'Ethiopia ','798479'),(58,'Fiji ','529182'),(59,'Finland ','274970'),(60,'France ','422792'),(61,'Gabon ','588231'),(62,'Gambia, The ','135376'),(63,'Georgia ','398080'),(64,'Germany ','500751'),(65,'Ghana ','713874'),(66,'Greece ','921405'),(67,'Grenada ','357465'),(68,'Guatemala ','880843'),(69,'Guinea ','932350'),(70,'Guinea-Bissau ','591739'),(71,'Guyana ','558219'),(72,'Haiti ','779886'),(73,'Honduras ','568504'),(74,'Hungary ','739746'),(75,'Iceland ','973334'),(76,'India ','710999'),(77,'Indonesia ','243480'),(78,'Iran ','798294'),(79,'Iraq ','279506'),(80,'Ireland ','755201'),(81,'Israel ','146321'),(82,'Italy ','632354'),(83,'Jamaica ','178127'),(84,'Japan ','561410'),(85,'Jordan ','898170'),(86,'Kazakhstan ','538993'),(87,'Kenya ','210092'),(88,'Kiribati ','210645'),(89,'Korea, North ','959672'),(90,'Korea, South ','383179'),(91,'Kuwait ','348393'),(92,'Kyrgyzstan ','216026'),(93,'Laos ','951971'),(94,'Latvia ','461983'),(95,'Lebanon ','133926'),(96,'Lesotho ','658569'),(97,'Liberia ','199912'),(98,'Libya ','640371'),(99,'Liechtenstein ','403882'),(100,'Lithuania ','322996'),(101,'Luxembourg ','188835'),(102,'Macedonia','351215'),(103,'Madagascar ','699157'),(104,'Malawi ','154523'),(105,'Malaysia ','243586'),(106,'Maldives ','323681'),(107,'Mali ','128546'),(108,'Malta ','666270'),(109,'Marshall Islands ','985307'),(110,'Mauritania ','854839'),(111,'Mauritius ','825538'),(112,'Mexico ','210856'),(113,'Micronesia, Federated States of ','874645'),(114,'Moldova ','945457'),(115,'Monaco ','170532'),(116,'Mongolia ','165600'),(117,'Montenegro ','532742'),(118,'Morocco ','892605'),(119,'Mozambique ','297018'),(120,'Myanmar (Burma) ','611519'),(121,'Namibia ','148642'),(122,'Nauru ','561252'),(123,'Nepal ','313791'),(124,'Netherlands ','333334'),(125,'New Zealand ','343488'),(126,'Nicaragua ','248465'),(127,'Niger ','625945'),(128,'Nigeria ','276262'),(129,'Norway ','442124'),(130,'Oman ','683413'),(131,'Pakistan ','342274'),(132,'Palau ','953422'),(133,'Panama ','201494'),(134,'Papua New Guinea ','434765'),(135,'Paraguay ','732071'),(136,'Peru ','717434'),(137,'Philippines ','674841'),(138,'Poland ','231691'),(139,'Portugal ','904130'),(140,'Qatar ','945616'),(141,'Romania ','754910'),(142,'Russia ','371259'),(143,'Rwanda ','399346'),(144,'Saint Kitts and Nevis ','854786'),(145,'Saint Lucia ','630745'),(146,'Saint Vincent and The Grenadines ','718436'),(147,'Samoa ','919110'),(148,'San Marino ','958064'),(149,'Sao Tome and Principe ','923488'),(150,'Saudi Arabia ','706094'),(151,'Senegal ','275919'),(152,'Serbia ','472268'),(153,'Seychelles ','957985'),(154,'Sierra Leone ','199200'),(155,'Singapore ','171165'),(156,'Slovakia ','774717'),(157,'Slovenia ','491178'),(158,'Solomon Islands ','359021'),(159,'Somalia ','145741'),(160,'South Africa ','218030'),(161,'Spain ','576311'),(162,'Sri Lanka ','186329'),(163,'Sudan ','172642'),(164,'Suriname ','179525'),(165,'Swaziland ','970327'),(166,'Sweden ','842391'),(167,'Switzerland ','656960'),(168,'Syria ','740221'),(169,'Taiwan ','133873'),(170,'Tajikistan ','463776'),(171,'Tanzania ','707491'),(172,'Thailand ','684837'),(173,'Togo ','416489'),(174,'Tonga ','211753'),(175,'Trinidad and Tobago ','729328'),(176,'Tunisia ','958591'),(177,'Turkey ','278820'),(178,'Turkmenistan ','815490'),(179,'Tuvalu ','695465'),(180,'Uganda ','346204'),(181,'Ukraine ','342011'),(182,'United Arab Emirates ','843656'),(183,'United Kingdom ','146796'),(184,'United States ','657092'),(185,'Uruguay ','795103'),(186,'Uzbekistan ','161222'),(187,'Vanuatu ','784712'),(188,'Vatican City ','675975'),(189,'Venezuela ','530843'),(190,'Vietnam ','793653'),(191,'Western Sahara ','421711'),(192,'Yemen ','483872'),(193,'Zambia ','602473'),(194,'Zimbabwe ','877520'),(195,'','759183');
+/*!40000 ALTER TABLE `countries` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `country_data`
+--
+
+DROP TABLE IF EXISTS `country_data`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `country_data` (
+ `country_id` int(11) NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL,
+ `full_name` varchar(255) NOT NULL,
+ `type` varchar(255) NOT NULL,
+ `subtype` varchar(255) NOT NULL,
+ `sovereignty` varchar(255) NOT NULL,
+ `capital` varchar(255) NOT NULL,
+ `currency_code` char(3) NOT NULL,
+ `currency_name` varchar(20) NOT NULL,
+ `phone_code` char(8) NOT NULL,
+ `letter_code` char(3) NOT NULL,
+ `letter_code_alt` char(3) NOT NULL,
+ `iso_number` char(3) NOT NULL,
+ `code` varchar(4) NOT NULL,
+ PRIMARY KEY (`country_id`)
+) ENGINE=MyISAM AUTO_INCREMENT=273 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `country_data`
+--
+
+LOCK TABLES `country_data` WRITE;
+/*!40000 ALTER TABLE `country_data` DISABLE KEYS */;
+INSERT INTO `country_data` VALUES (1,'Afghanistan','Islamic State of Afghanistan','Independent State','','','Kabul','AFN','Afghani','+93','AF','AFG','004','.af'),(2,'Albania','Republic of Albania','Independent State','','','Tirana','ALL','Lek','+355','AL','ALB','008','.al'),(3,'Algeria','People\'s Democratic Republic of Algeria','Independent State','','','Algiers','DZD','Dinar','+213','DZ','DZA','012','.dz'),(4,'Andorra','Principality of Andorra','Independent State','','','Andorra la Vella','EUR','Euro','+376','AD','AND','020','.ad'),(5,'Angola','Republic of Angola','Independent State','','','Luanda','AOA','Kwanza','+244','AO','AGO','024','.ao'),(6,'Antigua and Barbuda','','Independent State','','','Saint John\'s','XCD','Dollar','+1-268','AG','ATG','028','.ag'),(7,'Argentina','Argentine Republic','Independent State','','','Buenos Aires','ARS','Peso','+54','AR','ARG','032','.ar'),(8,'Armenia','Republic of Armenia','Independent State','','','Yerevan','AMD','Dram','+374','AM','ARM','051','.am'),(9,'Australia','Commonwealth of Australia','Independent State','','','Canberra','AUD','Dollar','+61','AU','AUS','036','.au'),(10,'Austria','Republic of Austria','Independent State','','','Vienna','EUR','Euro','+43','AT','AUT','040','.at'),(11,'Azerbaijan','Republic of Azerbaijan','Independent State','','','Baku','AZN','Manat','+994','AZ','AZE','031','.az'),(12,'Bahamas, The','Commonwealth of The Bahamas','Independent State','','','Nassau','BSD','Dollar','+1-242','BS','BHS','044','.bs'),(13,'Bahrain','Kingdom of Bahrain','Independent State','','','Manama','BHD','Dinar','+973','BH','BHR','048','.bh'),(14,'Bangladesh','People\'s Republic of Bangladesh','Independent State','','','Dhaka','BDT','Taka','+880','BD','BGD','050','.bd'),(15,'Barbados','','Independent State','','','Bridgetown','BBD','Dollar','+1-246','BB','BRB','052','.bb'),(16,'Belarus','Republic of Belarus','Independent State','','','Minsk','BYR','Ruble','+375','BY','BLR','112','.by'),(17,'Belgium','Kingdom of Belgium','Independent State','','','Brussels','EUR','Euro','+32','BE','BEL','056','.be'),(18,'Belize','','Independent State','','','Belmopan','BZD','Dollar','+501','BZ','BLZ','084','.bz'),(19,'Benin','Republic of Benin','Independent State','','','Porto-Novo','XOF','Franc','+229','BJ','BEN','204','.bj'),(20,'Bhutan','Kingdom of Bhutan','Independent State','','','Thimphu','BTN','Ngultrum','+975','BT','BTN','064','.bt'),(21,'Bolivia','Republic of Bolivia','Independent State','','','La Paz (administrative/legislative) and Sucre (judical)','BOB','Boliviano','+591','BO','BOL','068','.bo'),(22,'Bosnia and Herzegovina','','Independent State','','','Sarajevo','BAM','Marka','+387','BA','BIH','070','.ba'),(23,'Botswana','Republic of Botswana','Independent State','','','Gaborone','BWP','Pula','+267','BW','BWA','072','.bw'),(24,'Brazil','Federative Republic of Brazil','Independent State','','','Brasilia','BRL','Real','+55','BR','BRA','076','.br'),(25,'Brunei','Negara Brunei Darussalam','Independent State','','','Bandar Seri Begawan','BND','Dollar','+673','BN','BRN','096','.bn'),(26,'Bulgaria','Republic of Bulgaria','Independent State','','','Sofia','BGN','Lev','+359','BG','BGR','100','.bg'),(27,'Burkina Faso','','Independent State','','','Ouagadougou','XOF','Franc','+226','BF','BFA','854','.bf'),(28,'Burundi','Republic of Burundi','Independent State','','','Bujumbura','BIF','Franc','+257','BI','BDI','108','.bi'),(29,'Cambodia','Kingdom of Cambodia','Independent State','','','Phnom Penh','KHR','Riels','+855','KH','KHM','116','.kh'),(30,'Cameroon','Republic of Cameroon','Independent State','','','Yaounde','XAF','Franc','+237','CM','CMR','120','.cm'),(31,'Canada','','Independent State','','','Ottawa','CAD','Dollar','+1','CA','CAN','124','.ca'),(32,'Cape Verde','Republic of Cape Verde','Independent State','','','Praia','CVE','Escudo','+238','CV','CPV','132','.cv'),(33,'Central African Republic','','Independent State','','','Bangui','XAF','Franc','+236','CF','CAF','140','.cf'),(34,'Chad','Republic of Chad','Independent State','','','N\'Djamena','XAF','Franc','+235','TD','TCD','148','.td'),(35,'Chile','Republic of Chile','Independent State','','','Santiago (administrative/judical) and Valparaiso (legislative)','CLP','Peso','+56','CL','CHL','152','.cl'),(36,'China, People\'s Republic of','People\'s Republic of China','Independent State','','','Beijing','CNY','Yuan Renminbi','+86','CN','CHN','156','.cn'),(37,'Colombia','Republic of Colombia','Independent State','','','Bogota','COP','Peso','+57','CO','COL','170','.co'),(38,'Comoros','Union of Comoros','Independent State','','','Moroni','KMF','Franc','+269','KM','COM','174','.km'),(39,'Congo, Democratic Republic of the (Congo ? Kinshasa)','Democratic Republic of the Congo','Independent State','','','Kinshasa','CDF','Franc','+243','CD','COD','180','.cd'),(40,'Congo, Republic of the (Congo ? Brazzaville)','Republic of the Congo','Independent State','','','Brazzaville','XAF','Franc','+242','CG','COG','178','.cg'),(41,'Costa Rica','Republic of Costa Rica','Independent State','','','San Jose','CRC','Colon','+506','CR','CRI','188','.cr'),(42,'Cote d\'Ivoire (Ivory Coast)','Republic of Cote d\'Ivoire','Independent State','','','Yamoussoukro','XOF','Franc','+225','CI','CIV','384','.ci'),(43,'Croatia','Republic of Croatia','Independent State','','','Zagreb','HRK','Kuna','+385','HR','HRV','191','.hr'),(44,'Cuba','Republic of Cuba','Independent State','','','Havana','CUP','Peso','+53','CU','CUB','192','.cu'),(45,'Cyprus','Republic of Cyprus','Independent State','','','Nicosia','CYP','Pound','+357','CY','CYP','196','.cy'),(46,'Czech Republic','','Independent State','','','Prague','CZK','Koruna','+420','CZ','CZE','203','.cz'),(47,'Denmark','Kingdom of Denmark','Independent State','','','Copenhagen','DKK','Krone','+45','DK','DNK','208','.dk'),(48,'Djibouti','Republic of Djibouti','Independent State','','','Djibouti','DJF','Franc','+253','DJ','DJI','262','.dj'),(49,'Dominica','Commonwealth of Dominica','Independent State','','','Roseau','XCD','Dollar','+1-767','DM','DMA','212','.dm'),(50,'Dominican Republic','','Independent State','','','Santo Domingo','DOP','Peso','+1-809 a','DO','DOM','214','.do'),(51,'Ecuador','Republic of Ecuador','Independent State','','','Quito','USD','Dollar','+593','EC','ECU','218','.ec'),(52,'Egypt','Arab Republic of Egypt','Independent State','','','Cairo','EGP','Pound','+20','EG','EGY','818','.eg'),(53,'El Salvador','Republic of El Salvador','Independent State','','','San Salvador','USD','Dollar','+503','SV','SLV','222','.sv'),(54,'Equatorial Guinea','Republic of Equatorial Guinea','Independent State','','','Malabo','XAF','Franc','+240','GQ','GNQ','226','.gq'),(55,'Eritrea','State of Eritrea','Independent State','','','Asmara','ERN','Nakfa','+291','ER','ERI','232','.er'),(56,'Estonia','Republic of Estonia','Independent State','','','Tallinn','EEK','Kroon','+372','EE','EST','233','.ee'),(57,'Ethiopia','Federal Democratic Republic of Ethiopia','Independent State','','','Addis Ababa','ETB','Birr','+251','ET','ETH','231','.et'),(58,'Fiji','Republic of the Fiji Islands','Independent State','','','Suva','FJD','Dollar','+679','FJ','FJI','242','.fj'),(59,'Finland','Republic of Finland','Independent State','','','Helsinki','EUR','Euro','+358','FI','FIN','246','.fi'),(60,'France','French Republic','Independent State','','','Paris','EUR','Euro','+33','FR','FRA','250','.fr'),(61,'Gabon','Gabonese Republic','Independent State','','','Libreville','XAF','Franc','+241','GA','GAB','266','.ga'),(62,'Gambia, The','Republic of The Gambia','Independent State','','','Banjul','GMD','Dalasi','+220','GM','GMB','270','.gm'),(63,'Georgia','Republic of Georgia','Independent State','','','Tbilisi','GEL','Lari','+995','GE','GEO','268','.ge'),(64,'Germany','Federal Republic of Germany','Independent State','','','Berlin','EUR','Euro','+49','DE','DEU','276','.de'),(65,'Ghana','Republic of Ghana','Independent State','','','Accra','GHS','Cedi','+233','GH','GHA','288','.gh'),(66,'Greece','Hellenic Republic','Independent State','','','Athens','EUR','Euro','+30','GR','GRC','300','.gr'),(67,'Grenada','','Independent State','','','Saint George\'s','XCD','Dollar','+1-473','GD','GRD','308','.gd'),(68,'Guatemala','Republic of Guatemala','Independent State','','','Guatemala','GTQ','Quetzal','+502','GT','GTM','320','.gt'),(69,'Guinea','Republic of Guinea','Independent State','','','Conakry','GNF','Franc','+224','GN','GIN','324','.gn'),(70,'Guinea-Bissau','Republic of Guinea-Bissau','Independent State','','','Bissau','XOF','Franc','+245','GW','GNB','624','.gw'),(71,'Guyana','Co-operative Republic of Guyana','Independent State','','','Georgetown','GYD','Dollar','+592','GY','GUY','328','.gy'),(72,'Haiti','Republic of Haiti','Independent State','','','Port-au-Prince','HTG','Gourde','+509','HT','HTI','332','.ht'),(73,'Honduras','Republic of Honduras','Independent State','','','Tegucigalpa','HNL','Lempira','+504','HN','HND','340','.hn'),(74,'Hungary','Republic of Hungary','Independent State','','','Budapest','HUF','Forint','+36','HU','HUN','348','.hu'),(75,'Iceland','Republic of Iceland','Independent State','','','Reykjavik','ISK','Krona','+354','IS','ISL','352','.is'),(76,'India','Republic of India','Independent State','','','New Delhi','INR','Rupee','+91','IN','IND','356','.in'),(77,'Indonesia','Republic of Indonesia','Independent State','','','Jakarta','IDR','Rupiah','+62','ID','IDN','360','.id'),(78,'Iran','Islamic Republic of Iran','Independent State','','','Tehran','IRR','Rial','+98','IR','IRN','364','.ir'),(79,'Iraq','Republic of Iraq','Independent State','','','Baghdad','IQD','Dinar','+964','IQ','IRQ','368','.iq'),(80,'Ireland','','Independent State','','','Dublin','EUR','Euro','+353','IE','IRL','372','.ie'),(81,'Israel','State of Israel','Independent State','','','Jerusalem','ILS','Shekel','+972','IL','ISR','376','.il'),(82,'Italy','Italian Republic','Independent State','','','Rome','EUR','Euro','+39','IT','ITA','380','.it'),(83,'Jamaica','','Independent State','','','Kingston','JMD','Dollar','+1-876','JM','JAM','388','.jm'),(84,'Japan','','Independent State','','','Tokyo','JPY','Yen','+81','JP','JPN','392','.jp'),(85,'Jordan','Hashemite Kingdom of Jordan','Independent State','','','Amman','JOD','Dinar','+962','JO','JOR','400','.jo'),(86,'Kazakhstan','Republic of Kazakhstan','Independent State','','','Astana','KZT','Tenge','+7','KZ','KAZ','398','.kz'),(87,'Kenya','Republic of Kenya','Independent State','','','Nairobi','KES','Shilling','+254','KE','KEN','404','.ke'),(88,'Kiribati','Republic of Kiribati','Independent State','','','Tarawa','AUD','Dollar','+686','KI','KIR','296','.ki'),(89,'Korea, Democratic People\'s Republic of (North Korea)','Democratic People\'s Republic of Korea','Independent State','','','Pyongyang','KPW','Won','+850','KP','PRK','408','.kp'),(90,'Korea, Republic of (South Korea)','Republic of Korea','Independent State','','','Seoul','KRW','Won','+82','KR','KOR','410','.kr'),(91,'Kuwait','State of Kuwait','Independent State','','','Kuwait','KWD','Dinar','+965','KW','KWT','414','.kw'),(92,'Kyrgyzstan','Kyrgyz Republic','Independent State','','','Bishkek','KGS','Som','+996','KG','KGZ','417','.kg'),(93,'Laos','Lao People\'s Democratic Republic','Independent State','','','Vientiane','LAK','Kip','+856','LA','LAO','418','.la'),(94,'Latvia','Republic of Latvia','Independent State','','','Riga','LVL','Lat','+371','LV','LVA','428','.lv'),(95,'Lebanon','Lebanese Republic','Independent State','','','Beirut','LBP','Pound','+961','LB','LBN','422','.lb'),(96,'Lesotho','Kingdom of Lesotho','Independent State','','','Maseru','LSL','Loti','+266','LS','LSO','426','.ls'),(97,'Liberia','Republic of Liberia','Independent State','','','Monrovia','LRD','Dollar','+231','LR','LBR','430','.lr'),(98,'Libya','Great Socialist People\'s Libyan Arab Jamahiriya','Independent State','','','Tripoli','LYD','Dinar','+218','LY','LBY','434','.ly'),(99,'Liechtenstein','Principality of Liechtenstein','Independent State','','','Vaduz','CHF','Franc','+423','LI','LIE','438','.li'),(100,'Lithuania','Republic of Lithuania','Independent State','','','Vilnius','LTL','Litas','+370','LT','LTU','440','.lt'),(101,'Luxembourg','Grand Duchy of Luxembourg','Independent State','','','Luxembourg','EUR','Euro','+352','LU','LUX','442','.lu'),(102,'Macedonia','Republic of Macedonia','Independent State','','','Skopje','MKD','Denar','+389','MK','MKD','807','.mk'),(103,'Madagascar','Republic of Madagascar','Independent State','','','Antananarivo','MGA','Ariary','+261','MG','MDG','450','.mg'),(104,'Malawi','Republic of Malawi','Independent State','','','Lilongwe','MWK','Kwacha','+265','MW','MWI','454','.mw'),(105,'Malaysia','','Independent State','','','Kuala Lumpur (legislative/judical) and Putrajaya (administrative)','MYR','Ringgit','+60','MY','MYS','458','.my'),(106,'Maldives','Republic of Maldives','Independent State','','','Male','MVR','Rufiyaa','+960','MV','MDV','462','.mv'),(107,'Mali','Republic of Mali','Independent State','','','Bamako','XOF','Franc','+223','ML','MLI','466','.ml'),(108,'Malta','Republic of Malta','Independent State','','','Valletta','MTL','Lira','+356','MT','MLT','470','.mt'),(109,'Marshall Islands','Republic of the Marshall Islands','Independent State','','','Majuro','USD','Dollar','+692','MH','MHL','584','.mh'),(110,'Mauritania','Islamic Republic of Mauritania','Independent State','','','Nouakchott','MRO','Ouguiya','+222','MR','MRT','478','.mr'),(111,'Mauritius','Republic of Mauritius','Independent State','','','Port Louis','MUR','Rupee','+230','MU','MUS','480','.mu'),(112,'Mexico','United Mexican States','Independent State','','','Mexico','MXN','Peso','+52','MX','MEX','484','.mx'),(113,'Micronesia','Federated States of Micronesia','Independent State','','','Palikir','USD','Dollar','+691','FM','FSM','583','.fm'),(114,'Moldova','Republic of Moldova','Independent State','','','Chisinau','MDL','Leu','+373','MD','MDA','498','.md'),(115,'Monaco','Principality of Monaco','Independent State','','','Monaco','EUR','Euro','+377','MC','MCO','492','.mc'),(116,'Mongolia','','Independent State','','','Ulaanbaatar','MNT','Tugrik','+976','MN','MNG','496','.mn'),(117,'Montenegro','Republic of Montenegro','Independent State','','','Podgorica','EUR','Euro','+382','ME','MNE','499','.me '),(118,'Morocco','Kingdom of Morocco','Independent State','','','Rabat','MAD','Dirham','+212','MA','MAR','504','.ma'),(119,'Mozambique','Republic of Mozambique','Independent State','','','Maputo','MZM','Meticail','+258','MZ','MOZ','508','.mz'),(120,'Myanmar (Burma)','Union of Myanmar','Independent State','','','Naypyidaw','MMK','Kyat','+95','MM','MMR','104','.mm'),(121,'Namibia','Republic of Namibia','Independent State','','','Windhoek','NAD','Dollar','+264','NA','NAM','516','.na'),(122,'Nauru','Republic of Nauru','Independent State','','','Yaren','AUD','Dollar','+674','NR','NRU','520','.nr'),(123,'Nepal','','Independent State','','','Kathmandu','NPR','Rupee','+977','NP','NPL','524','.np'),(124,'Netherlands','Kingdom of the Netherlands','Independent State','','','Amsterdam (administrative) and The Hague (legislative/judical)','EUR','Euro','+31','NL','NLD','528','.nl'),(125,'New Zealand','','Independent State','','','Wellington','NZD','Dollar','+64','NZ','NZL','554','.nz'),(126,'Nicaragua','Republic of Nicaragua','Independent State','','','Managua','NIO','Cordoba','+505','NI','NIC','558','.ni'),(127,'Niger','Republic of Niger','Independent State','','','Niamey','XOF','Franc','+227','NE','NER','562','.ne'),(128,'Nigeria','Federal Republic of Nigeria','Independent State','','','Abuja','NGN','Naira','+234','NG','NGA','566','.ng'),(129,'Norway','Kingdom of Norway','Independent State','','','Oslo','NOK','Krone','+47','NO','NOR','578','.no'),(130,'Oman','Sultanate of Oman','Independent State','','','Muscat','OMR','Rial','+968','OM','OMN','512','.om'),(131,'Pakistan','Islamic Republic of Pakistan','Independent State','','','Islamabad','PKR','Rupee','+92','PK','PAK','586','.pk'),(132,'Palau','Republic of Palau','Independent State','','','Melekeok','USD','Dollar','+680','PW','PLW','585','.pw'),(133,'Panama','Republic of Panama','Independent State','','','Panama','PAB','Balboa','+507','PA','PAN','591','.pa'),(134,'Papua New Guinea','Independent State of Papua New Guinea','Independent State','','','Port Moresby','PGK','Kina','+675','PG','PNG','598','.pg'),(135,'Paraguay','Republic of Paraguay','Independent State','','','Asuncion','PYG','Guarani','+595','PY','PRY','600','.py'),(136,'Peru','Republic of Peru','Independent State','','','Lima','PEN','Sol','+51','PE','PER','604','.pe'),(137,'Philippines','Republic of the Philippines','Independent State','','','Manila','PHP','Peso','+63','PH','PHL','608','.ph'),(138,'Poland','Republic of Poland','Independent State','','','Warsaw','PLN','Zloty','+48','PL','POL','616','.pl'),(139,'Portugal','Portuguese Republic','Independent State','','','Lisbon','EUR','Euro','+351','PT','PRT','620','.pt'),(140,'Qatar','State of Qatar','Independent State','','','Doha','QAR','Rial','+974','QA','QAT','634','.qa'),(141,'Romania','','Independent State','','','Bucharest','RON','Leu','+40','RO','ROU','642','.ro'),(142,'Russia','Russian Federation','Independent State','','','Moscow','RUB','Ruble','+7','RU','RUS','643','.ru '),(143,'Rwanda','Republic of Rwanda','Independent State','','','Kigali','RWF','Franc','+250','RW','RWA','646','.rw'),(144,'Saint Kitts and Nevis','Federation of Saint Kitts and Nevis','Independent State','','','Basseterre','XCD','Dollar','+1-869','KN','KNA','659','.kn'),(145,'Saint Lucia','','Independent State','','','Castries','XCD','Dollar','+1-758','LC','LCA','662','.lc'),(146,'Saint Vincent and the Grenadines','','Independent State','','','Kingstown','XCD','Dollar','+1-784','VC','VCT','670','.vc'),(147,'Samoa','Independent State of Samoa','Independent State','','','Apia','WST','Tala','+685','WS','WSM','882','.ws'),(148,'San Marino','Republic of San Marino','Independent State','','','San Marino','EUR','Euro','+378','SM','SMR','674','.sm'),(149,'Sao Tome and Principe','Democratic Republic of Sao Tome and Principe','Independent State','','','Sao Tome','STD','Dobra','+239','ST','STP','678','.st'),(150,'Saudi Arabia','Kingdom of Saudi Arabia','Independent State','','','Riyadh','SAR','Rial','+966','SA','SAU','682','.sa'),(151,'Senegal','Republic of Senegal','Independent State','','','Dakar','XOF','Franc','+221','SN','SEN','686','.sn'),(152,'Serbia','Republic of Serbia','Independent State','','','Belgrade','RSD','Dinar','+381','RS','SRB','688','.rs '),(153,'Seychelles','Republic of Seychelles','Independent State','','','Victoria','SCR','Rupee','+248','SC','SYC','690','.sc'),(154,'Sierra Leone','Republic of Sierra Leone','Independent State','','','Freetown','SLL','Leone','+232','SL','SLE','694','.sl'),(155,'Singapore','Republic of Singapore','Independent State','','','Singapore','SGD','Dollar','+65','SG','SGP','702','.sg'),(156,'Slovakia','Slovak Republic','Independent State','','','Bratislava','SKK','Koruna','+421','SK','SVK','703','.sk'),(157,'Slovenia','Republic of Slovenia','Independent State','','','Ljubljana','EUR','Euro','+386','SI','SVN','705','.si'),(158,'Solomon Islands','','Independent State','','','Honiara','SBD','Dollar','+677','SB','SLB','090','.sb'),(159,'Somalia','','Independent State','','','Mogadishu','SOS','Shilling','+252','SO','SOM','706','.so'),(160,'South Africa','Republic of South Africa','Independent State','','','Pretoria (administrative), Cape Town (legislative), and Bloemfontein (judical)','ZAR','Rand','+27','ZA','ZAF','710','.za'),(161,'Spain','Kingdom of Spain','Independent State','','','Madrid','EUR','Euro','+34','ES','ESP','724','.es'),(162,'Sri Lanka','Democratic Socialist Republic of Sri Lanka','Independent State','','','Colombo (administrative/judical) and Sri Jayewardenepura Kotte (legislative)','LKR','Rupee','+94','LK','LKA','144','.lk'),(163,'Sudan','Republic of the Sudan','Independent State','','','Khartoum','SDG','Pound','+249','SD','SDN','736','.sd'),(164,'Suriname','Republic of Suriname','Independent State','','','Paramaribo','SRD','Dollar','+597','SR','SUR','740','.sr'),(165,'Swaziland','Kingdom of Swaziland','Independent State','','','Mbabane (administrative) and Lobamba (legislative)','SZL','Lilangeni','+268','SZ','SWZ','748','.sz'),(166,'Sweden','Kingdom of Sweden','Independent State','','','Stockholm','SEK','Kronoa','+46','SE','SWE','752','.se'),(167,'Switzerland','Swiss Confederation','Independent State','','','Bern','CHF','Franc','+41','CH','CHE','756','.ch'),(168,'Syria','Syrian Arab Republic','Independent State','','','Damascus','SYP','Pound','+963','SY','SYR','760','.sy'),(169,'Tajikistan','Republic of Tajikistan','Independent State','','','Dushanbe','TJS','Somoni','+992','TJ','TJK','762','.tj'),(170,'Tanzania','United Republic of Tanzania','Independent State','','','Dar es Salaam (administrative/judical) and Dodoma (legislative)','TZS','Shilling','+255','TZ','TZA','834','.tz'),(171,'Thailand','Kingdom of Thailand','Independent State','','','Bangkok','THB','Baht','+66','TH','THA','764','.th'),(172,'Timor-Leste (East Timor)','Democratic Republic of Timor-Leste','Independent State','','','Dili','USD','Dollar','+670','TL','TLS','626','.tp '),(173,'Togo','Togolese Republic','Independent State','','','Lome','XOF','Franc','+228','TG','TGO','768','.tg'),(174,'Tonga','Kingdom of Tonga','Independent State','','','Nuku\'alofa','TOP','Pa\'anga','+676','TO','TON','776','.to'),(175,'Trinidad and Tobago','Republic of Trinidad and Tobago','Independent State','','','Port-of-Spain','TTD','Dollar','+1-868','TT','TTO','780','.tt'),(176,'Tunisia','Tunisian Republic','Independent State','','','Tunis','TND','Dinar','+216','TN','TUN','788','.tn'),(177,'Turkey','Republic of Turkey','Independent State','','','Ankara','TRY','Lira','+90','TR','TUR','792','.tr'),(178,'Turkmenistan','','Independent State','','','Ashgabat','TMM','Manat','+993','TM','TKM','795','.tm'),(179,'Tuvalu','','Independent State','','','Funafuti','AUD','Dollar','+688','TV','TUV','798','.tv'),(180,'Uganda','Republic of Uganda','Independent State','','','Kampala','UGX','Shilling','+256','UG','UGA','800','.ug'),(181,'Ukraine','','Independent State','','','Kiev','UAH','Hryvnia','+380','UA','UKR','804','.ua'),(182,'United Arab Emirates','United Arab Emirates','Independent State','','','Abu Dhabi','AED','Dirham','+971','AE','ARE','784','.ae'),(183,'United Kingdom','United Kingdom of Great Britain and Northern Ireland','Independent State','','','London','GBP','Pound','+44','GB','GBR','826','.uk'),(184,'United States','United States of America','Independent State','','','Washington','USD','Dollar','+1','US','USA','840','.us'),(185,'Uruguay','Oriental Republic of Uruguay','Independent State','','','Montevideo','UYU','Peso','+598','UY','URY','858','.uy'),(186,'Uzbekistan','Republic of Uzbekistan','Independent State','','','Tashkent','UZS','Som','+998','UZ','UZB','860','.uz'),(187,'Vanuatu','Republic of Vanuatu','Independent State','','','Port-Vila','VUV','Vatu','+678','VU','VUT','548','.vu'),(188,'Vatican City','State of the Vatican City','Independent State','','','Vatican City','EUR','Euro','+379','VA','VAT','336','.va'),(189,'Venezuela','Bolivarian Republic of Venezuela','Independent State','','','Caracas','VEB','Bolivar','+58','VE','VEN','862','.ve'),(190,'Vietnam','Socialist Republic of Vietnam','Independent State','','','Hanoi','VND','Dong','+84','VN','VNM','704','.vn'),(191,'Yemen','Republic of Yemen','Independent State','','','Sanaa','YER','Rial','+967','YE','YEM','887','.ye'),(192,'Zambia','Republic of Zambia','Independent State','','','Lusaka','ZMK','Kwacha','+260','ZM','ZMB','894','.zm'),(193,'Zimbabwe','Republic of Zimbabwe','Independent State','','','Harare','ZWD','Dollar','+263','ZW','ZWE','716','.zw'),(194,'Abkhazia','Republic of Abkhazia','Proto Independent State','','','Sokhumi','RUB','Ruble','+995','GE','GEO','268','.ge'),(195,'China, Republic of (Taiwan)','Republic of China','Proto Independent State','','','Taipei','TWD','Dollar','+886','TW','TWN','158','.tw'),(196,'Nagorno-Karabakh','Nagorno-Karabakh Republic','Proto Independent State','','','Stepanakert','AMD','Dram','+374-97','AZ','AZE','031','.az'),(197,'Northern Cyprus','Turkish Republic of Northern Cyprus','Proto Independent State','','','Nicosia','TRY','Lira','+90-392','CY','CYP','196','.nc.'),(198,'Pridnestrovie (Transnistria)','Pridnestrovian Moldavian Republic','Proto Independent State','','','Tiraspol','','Ruple','+373-533','MD','MDA','498','.md'),(199,'Somaliland','Republic of Somaliland','Proto Independent State','','','Hargeisa','','Shilling','+252','SO','SOM','706','.so'),(200,'South Ossetia','Republic of South Ossetia','Proto Independent State','','','Tskhinvali','RUB','Ruble and Lari','+995','GE','GEO','268','.ge'),(201,'Ashmore and Cartier Islands','Territory of Ashmore and Cartier Islands','Dependency','External Territory','Australia','','','','','AU','AUS','036','.au'),(202,'Christmas Island','Territory of Christmas Island','Dependency','External Territory','Australia','The Settlement (Flying Fish Cove)','AUD','Dollar','+61','CX','CXR','162','.cx'),(203,'Cocos (Keeling) Islands','Territory of Cocos (Keeling) Islands','Dependency','External Territory','Australia','West Island','AUD','Dollar','+61','CC','CCK','166','.cc'),(204,'Coral Sea Islands','Coral Sea Islands Territory','Dependency','External Territory','Australia','','','','','AU','AUS','036','.au'),(205,'Heard Island and McDonald Islands','Territory of Heard Island and McDonald Islands','Dependency','External Territory','Australia','','','','','HM','HMD','334','.hm'),(206,'Norfolk Island','Territory of Norfolk Island','Dependency','External Territory','Australia','Kingston','AUD','Dollar','+672','NF','NFK','574','.nf'),(207,'New Caledonia','','Dependency','Sui generis Collectivity','France','Noumea','XPF','Franc','+687','NC','NCL','540','.nc'),(208,'French Polynesia','Overseas Country of French Polynesia','Dependency','Overseas Collectivity','France','Papeete','XPF','Franc','+689','PF','PYF','258','.pf'),(209,'Mayotte','Departmental Collectivity of Mayotte','Dependency','Overseas Collectivity','France','Mamoudzou','EUR','Euro','+262','YT','MYT','175','.yt'),(210,'Saint Barthelemy','Collectivity of Saint Barthelemy','Dependency','Overseas Collectivity','France','Gustavia','EUR','Euro','+590','GP','GLP','312','.gp'),(211,'Saint Martin','Collectivity of Saint Martin','Dependency','Overseas Collectivity','France','Marigot','EUR','Euro','+590','GP','GLP','312','.gp'),(212,'Saint Pierre and Miquelon','Territorial Collectivity of Saint Pierre and Miquelon','Dependency','Overseas Collectivity','France','Saint-Pierre','EUR','Euro','+508','PM','SPM','666','.pm'),(213,'Wallis and Futuna','Collectivity of the Wallis and Futuna Islands','Dependency','Overseas Collectivity','France','Mata\'utu','XPF','Franc','+681','WF','WLF','876','.wf'),(214,'French Southern and Antarctic Lands','Territory of the French Southern and Antarctic Lands','Dependency','Overseas Territory','France','Martin-de-Vivi','','','','TF','ATF','260','.tf'),(215,'Clipperton Island','','Dependency','Possession','France','','','','','PF','PYF','258','.pf'),(216,'Bouvet Island','','Dependency','Territory','Norway','','','','','BV','BVT','074','.bv'),(217,'Cook Islands','','Dependency','Self-Governing in Free Association','New Zealand','Avarua','NZD','Dollar','+682','CK','COK','184','.ck'),(218,'Niue','','Dependency','Self-Governing in Free Association','New Zealand','Alofi','NZD','Dollar','+683','NU','NIU','570','.nu'),(219,'Tokelau','','Dependency','Territory','New Zealand','','NZD','Dollar','+690','TK','TKL','772','.tk'),(220,'Guernsey','Bailiwick of Guernsey','Dependency','Crown Dependency','United Kingdom','Saint Peter Port','GGP','Pound','+44','GG','GGY','831','.gg'),(221,'Isle of Man','','Dependency','Crown Dependency','United Kingdom','Douglas','IMP','Pound','+44','IM','IMN','833','.im'),(222,'Jersey','Bailiwick of Jersey','Dependency','Crown Dependency','United Kingdom','Saint Helier','JEP','Pound','+44','JE','JEY','832','.je'),(223,'Anguilla','','Dependency','Overseas Territory','United Kingdom','The Valley','XCD','Dollar','+1-264','AI','AIA','660','.ai'),(224,'Bermuda','','Dependency','Overseas Territory','United Kingdom','Hamilton','BMD','Dollar','+1-441','BM','BMU','060','.bm'),(225,'British Indian Ocean Territory','','Dependency','Overseas Territory','United Kingdom','','','','+246','IO','IOT','086','.io'),(226,'British Sovereign Base Areas','','Dependency','Overseas Territory','United Kingdom','Episkopi','CYP','Pound','+357','','','',''),(227,'British Virgin Islands','','Dependency','Overseas Territory','United Kingdom','Road Town','USD','Dollar','+1-284','VG','VGB','092','.vg'),(228,'Cayman Islands','','Dependency','Overseas Territory','United Kingdom','George Town','KYD','Dollar','+1-345','KY','CYM','136','.ky'),(229,'Falkland Islands (Islas Malvinas)','','Dependency','Overseas Territory','United Kingdom','Stanley','FKP','Pound','+500','FK','FLK','238','.fk'),(230,'Gibraltar','','Dependency','Overseas Territory','United Kingdom','Gibraltar','GIP','Pound','+350','GI','GIB','292','.gi'),(231,'Montserrat','','Dependency','Overseas Territory','United Kingdom','Plymouth','XCD','Dollar','+1-664','MS','MSR','500','.ms'),(232,'Pitcairn Islands','','Dependency','Overseas Territory','United Kingdom','Adamstown','NZD','Dollar','','PN','PCN','612','.pn'),(233,'Saint Helena','','Dependency','Overseas Territory','United Kingdom','Jamestown','SHP','Pound','+290','SH','SHN','654','.sh'),(234,'South Georgia and the South Sandwich Islands','','Dependency','Overseas Territory','United Kingdom','','','','','GS','SGS','239','.gs'),(235,'Turks and Caicos Islands','','Dependency','Overseas Territory','United Kingdom','Grand Turk','USD','Dollar','+1-649','TC','TCA','796','.tc'),(236,'Northern Mariana Islands','Commonwealth of The Northern Mariana Islands','Dependency','Commonwealth','United States','Saipan','USD','Dollar','+1-670','MP','MNP','580','.mp'),(237,'Puerto Rico','Commonwealth of Puerto Rico','Dependency','Commonwealth','United States','San Juan','USD','Dollar','+1-787 a','PR','PRI','630','.pr'),(238,'American Samoa','Territory of American Samoa','Dependency','Territory','United States','Pago Pago','USD','Dollar','+1-684','AS','ASM','016','.as'),(239,'Baker Island','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(240,'Guam','Territory of Guam','Dependency','Territory','United States','Hagatna','USD','Dollar','+1-671','GU','GUM','316','.gu'),(241,'Howland Island','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(242,'Jarvis Island','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(243,'Johnston Atoll','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(244,'Kingman Reef','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(245,'Midway Islands','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(246,'Navassa Island','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(247,'Palmyra Atoll','','Dependency','Territory','United States','','','','','UM','UMI','581',''),(248,'U.S. Virgin Islands','United States Virgin Islands','Dependency','Territory','United States','Charlotte Amalie','USD','Dollar','+1-340','VI','VIR','850','.vi'),(249,'Wake Island','','Dependency','Territory','United States','','','','','UM','UMI','850',''),(250,'Hong Kong','Hong Kong Special Administrative Region','Proto Dependency','Special Administrative Region','China','','HKD','Dollar','+852','HK','HKG','344','.hk'),(251,'Macau','Macau Special Administrative Region','Proto Dependency','Special Administrative Region','China','Macau','MOP','Pataca','+853','MO','MAC','446','.mo'),(252,'Faroe Islands','','Proto Dependency','','Denmark','Torshavn','DKK','Krone','+298','FO','FRO','234','.fo'),(253,'Greenland','','Proto Dependency','','Denmark','Nuuk (Godthab)','DKK','Krone','+299','GL','GRL','304','.gl'),(254,'French Guiana','Overseas Region of Guiana','Proto Dependency','Overseas Region','France','Cayenne','EUR','Euro','+594','GF','GUF','254','.gf'),(255,'Guadeloupe','Overseas Region of Guadeloupe','Proto Dependency','Overseas Region','France','Basse-Terre','EUR','Euro','+590','GP','GLP','312','.gp'),(256,'Martinique','Overseas Region of Martinique','Proto Dependency','Overseas Region','France','Fort-de-France','EUR','Euro','+596','MQ','MTQ','474','.mq'),(257,'Reunion','Overseas Region of Reunion','Proto Dependency','Overseas Region','France','Saint-Denis','EUR','Euro','+262','RE','REU','638','.re'),(258,'Aland','','Proto Dependency','','Finland','Mariehamn','EUR','Euro','+358-18','AX','ALA','248','.ax'),(259,'Aruba','','Proto Dependency','','Netherlands','Oranjestad','AWG','Guilder','+297','AW','ABW','533','.aw'),(260,'Netherlands Antilles','','Proto Dependency','','Netherlands','Willemstad','ANG','Guilder','+599','AN','ANT','530','.an'),(261,'Svalbard','','Proto Dependency','','Norway','Longyearbyen','NOK','Krone','+47','SJ','SJM','744','.sj'),(262,'Ascension','','Proto Dependency','Dependency of Saint Helena','United Kingdom','Georgetown','SHP','Pound','+247','AC','ASC','','.ac'),(263,'Tristan da Cunha','','Proto Dependency','Dependency of Saint Helena','United Kingdom','Edinburgh','SHP','Pound','+290','TA','TAA','',''),(264,'Antarctica','','Disputed Territory','','Undetermined','','','','','AQ','ATA','010','.aq'),(265,'Kosovo','','Disputed Territory','','Administrated by the UN','Pristina','CSD','Dinar and Euro','+381','CS','SCG','891','.cs '),(266,'Palestinian Territories (Gaza Strip and West Bank)','','Disputed Territory','','Administrated by Israel','Gaza City (Gaza Strip) and Ramallah (West Bank)','ILS','Shekel','+970','PS','PSE','275','.ps'),(267,'Western Sahara','','Disputed Territory','','Administrated by Morocco','El-Aaiun','MAD','Dirham','+212','EH','ESH','732','.eh'),(268,'Australian Antarctic Territory','','Antarctic Territory','External Territory','Australia','','','','','AQ','ATA','010','.aq'),(269,'Ross Dependency','','Antarctic Territory','Territory','New Zealand','','','','','AQ','ATA','010','.aq'),(270,'Peter I Island','','Antarctic Territory','Territory','Norway','','','','','AQ','ATA','010','.aq'),(271,'Queen Maud Land','','Antarctic Territory','Territory','Norway','','','','','AQ','ATA','010','.aq'),(272,'British Antarctic Territory','','Antarctic Territory','Overseas Territory','United Kingdom','','','','','AQ','ATA','010','.aq');
+/*!40000 ALTER TABLE `country_data` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `developers`
+--
+
+DROP TABLE IF EXISTS `developers`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `developers` (
+ `developer_id` int(11) NOT NULL AUTO_INCREMENT,
+ `developer_name` varchar(255) NOT NULL,
+ `developer_team` int(11) NOT NULL,
+ `developer_email` varchar(255) NOT NULL,
+ PRIMARY KEY (`developer_id`)
+) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `developers`
+--
+
+LOCK TABLES `developers` WRITE;
+/*!40000 ALTER TABLE `developers` DISABLE KEYS */;
+INSERT INTO `developers` VALUES (1,'Developer 1',1,'developer1@mail.com'),(2,'Developer 2',1,'developer2@mail.com'),(3,'Developer 3',1,'developer3@mail.com'),(4,'Developer 4',2,'developer4@mail.com'),(5,'Developer 5',2,'developer5@mail.com'),(6,'Developer 6',2,'developer6@mail.com'),(7,'Developer 7',3,'developer7@mail.com'),(8,'Developer 8',3,'developer8@mail.com'),(9,'Developer 9',3,'developer9@mail.com'),(10,'Developer 10',4,'developer10@mail.com'),(11,'Developer 11232',4,'developer11@mail.com'),(12,'Developer 12',4,'developer12@mail.com'),(13,'Developer 13',5,'developer13@mail.com'),(14,'Developer 14',5,'developer14@mail.com'),(15,'Developer 15',5,'developer15@mail.com'),(16,'Developer 16',6,'developer16@mail.com'),(17,'Developer 17',6,'developer17@mail.com'),(18,'Developer 18',6,'developer18@mail.com'),(19,'Developer 19',7,'developer19@mail.com'),(20,'Developer 20',7,'developer20@mail.com'),(21,'Developer 21',7,'developer21@mail.com'),(22,'Developer 22',8,'developer22@mail.com'),(23,'Developer 23',8,'developer23@mail.com'),(24,'Developer 24',8,'developer24@mail.com'),(25,'Developer 25',9,'developer25@mail.com'),(26,'Developer 26',9,'developer26@mail.com'),(27,'Developer 27',9,'developer27@mail.com'),(28,'Developer 28',10,'developer28@mail.com'),(29,'Developer 29',10,'developer29@mail.com'),(30,'Developer 30',10,'developer30@mail.com');
+/*!40000 ALTER TABLE `developers` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `events`
+--
+
+DROP TABLE IF EXISTS `events`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `events` (
+ `event_id` int(11) NOT NULL AUTO_INCREMENT,
+ `event_name` varchar(127) NOT NULL,
+ `start_date` datetime NOT NULL,
+ `end_date` datetime NOT NULL,
+ `details` text NOT NULL,
+ PRIMARY KEY (`event_id`)
+) ENGINE=MyISAM AUTO_INCREMENT=85 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `events`
+--
+
+LOCK TABLES `events` WRITE;
+/*!40000 ALTER TABLE `events` DISABLE KEYS */;
+INSERT INTO `events` VALUES (2,'French Open','2009-05-24 00:00:00','2009-06-08 00:00:00','Philippe-Chatrier Court \nParis, FRA'),(3,'Aegon Championship','2009-06-10 00:00:00','2009-06-13 00:00:00','The Queens Club \nLondon, ENG'),(4,'Wimbledon','2009-06-21 00:00:00','2009-07-05 00:00:00','Wimbledon\nJune 21, 2009 - July 5, 2009'),(5,'Indianapolis Tennis Championships','2009-07-18 00:00:00','2009-07-27 00:00:00','Indianapolis Tennis Center \nIndianapolis, IN'),(8,'Countrywide Classic Tennis','2009-07-27 00:00:00','2009-08-02 00:00:00','Los Angeles Tennis Center. Los Angeles, CA '),(7,'ATP Master Tennis','2009-05-11 00:00:00','2009-05-18 00:00:00','La Caja Magica.\nMadrid, Spain'),(9,'Legg Mason Tennis Classic','2009-08-01 00:00:00','2009-08-11 00:00:00','Fitzgerald Tennis Center\nWashington D.C.'),(10,'Western & Southern Financial Group Women\\\'s Open','2009-08-07 00:00:00','2009-08-17 00:00:00','Lindner Family Tennis Center\nMason, OH'),(11,'Rogers Cup Women\\\'s Tennis','2009-08-15 00:00:00','2009-08-24 00:00:00','Rexall Centre\nToronto, ON'),(12,'US Open Tennis Championship','2009-08-29 00:00:00','2009-09-14 00:00:00','Arthur Ashe Stadium\nFlushing, NY'),(13,'Barclays ATP World Tour Finals','2009-11-22 00:00:00','2009-11-28 00:00:00','O2 Dome\nLondon, ENG\n'),(14,'Western & Southern Financial Group Masters Tennis','2009-08-17 00:00:00','2009-08-24 00:00:00','Lindner Family Tennis Center\nMason, OH'),(15,' Parc Izvor ','2009-05-16 15:00:00','2009-05-16 18:00:00',' Bucharest, Romania '),(16,' Arena Zagreb ','2009-05-21 14:00:00','2009-05-21 17:00:00',' Zagreb, Croatia '),(17,' Gwardia Stadium ','2009-05-23 11:00:00','2009-05-23 14:00:00',' Warsaw, Poland '),(18,' Skonto Stadium - Riga ','2009-05-25 19:00:00','2009-05-25 22:00:00',' Riga, Latvia '),(19,' Zalgirio Stadionas ','2009-05-27 15:00:00','2009-05-27 18:00:00',' Vilnius, Lithuania '),(20,' O2 Dome ','2009-05-30 17:00:00','2009-05-30 20:00:00',' London, ENG '),(21,' Evenemententerrein Megaland ','2009-05-31 16:00:00','2009-05-31 19:00:00',' Landgraaf, NL '),(22,' HSH Nordbank Arena (formerly AOL Arena) ','2009-06-02 10:00:00','2009-06-02 13:00:00',' Hamburg, GER '),(23,' LTU Arena ','2009-06-04 11:00:00','2009-06-04 14:00:00',' Dusseldorf, GER '),(24,' LTU Arena ','2009-06-05 12:00:00','2009-06-05 15:00:00',' Dusseldorf, GER '),(25,' Zentralstadion - Leipzig ','2009-06-07 20:00:00','2009-06-07 23:00:00',' Leipzig, GER '),(26,' Zentralstadion - Leipzig ','2009-06-08 17:00:00','2009-06-08 20:00:00',' Leipzig, GER '),(27,' Olympiastadion - Berlin ','2009-06-10 14:00:00','2009-06-10 17:00:00',' Berlin, GER '),(28,' Commerz Bank Arena ','2009-06-12 14:00:00','2009-06-12 17:00:00',' Frankfurt, GER '),(29,' Olympic Stadium - Munich ','2009-06-13 11:00:00','2009-06-13 14:00:00',' Munich, GER '),(30,' Stadio Olimpico ','2009-06-16 19:00:00','2009-06-16 22:00:00',' Rome, Italy '),(31,' Comunale Giuseppe Meazza - San Siro ','2009-06-18 20:00:00','2009-06-18 23:00:00',' Milan, Italy '),(32,' Inter Stadion Slovakia ','2009-06-22 19:00:00','2009-06-22 22:00:00',' Bratislava, Slovakia '),(33,' Puskas Ferenc Stadium ','2009-06-23 14:00:00','2009-06-23 17:00:00',' Budapest, Hungary '),(34,' Slavia Stadion ','2009-06-25 10:00:00','2009-06-25 13:00:00',' Prague, Czech Republic '),(35,' Stade de France - Paris ','2009-06-27 19:00:00','2009-06-27 22:00:00',' Paris, FRA '),(36,' Parken Stadium ','2009-06-30 18:00:00','2009-06-30 21:00:00',' Copenhagen, DK '),(37,' Koengen ','2009-07-02 18:00:00','2009-07-02 21:00:00',' Bergen, Norway '),(38,' Folkets Park ','2009-07-03 11:00:00','2009-07-03 14:00:00',' Malmo, SE '),(39,' Estadio Jose Zorila ','2009-07-08 18:00:00','2009-07-08 21:00:00',' Valladolid, Spain '),(40,' Bessa Stadium ','2009-07-11 10:00:00','2009-07-11 13:00:00',' Porto, Portugal '),(41,' Estadio Olimpico - Seville ','2009-07-12 14:00:00','2009-07-12 17:00:00',' Seville, Spain '),(42,' Molson Amphitheatre ','2009-07-24 16:00:00','2009-07-24 19:00:00',' Toronto, ON '),(43,' Bell Centre ','2009-07-25 18:00:00','2009-07-25 21:00:00',' Montreal, QC '),(44,' Nissan Pavilion ','2009-07-28 17:00:00','2009-07-28 20:00:00',' Bristow, VA '),(45,' Comcast Center - MA (formerly Tweeter Center) ','2009-07-31 12:00:00','2009-07-31 15:00:00',' Mansfield, MA '),(46,' Borgata Hotel Casino & Spa ','2009-08-01 15:00:00','2009-08-01 18:00:00',' Atlantic City, NJ '),(47,' Madison Square Garden ','2009-08-03 14:00:00','2009-08-03 17:00:00',' New York, NY '),(48,' Madison Square Garden ','2009-08-04 15:00:00','2009-08-04 18:00:00',' New York, NY '),(49,' Key Arena ','2009-08-10 16:00:00','2009-08-10 19:00:00',' Seattle, WA '),(50,' Shoreline Amphitheatre ','2009-08-12 11:00:00','2009-08-12 14:00:00',' Mountain View, CA '),(51,' Cricket Wireless Amphitheatre ','2009-08-14 19:00:00','2009-08-14 22:00:00',' Chula Vista, CA '),(52,' Hollywood Bowl ','2009-08-16 17:00:00','2009-08-16 20:00:00',' Los Angeles, CA '),(53,' Hollywood Bowl ','2009-08-17 13:00:00','2009-08-17 16:00:00',' Los Angeles, CA '),(54,' Honda Center ','2009-08-19 17:00:00','2009-08-19 20:00:00',' Anaheim, CA '),(55,' Santa Barbara Bowl ','2009-08-20 16:00:00','2009-08-20 19:00:00',' Santa Barbara, CA '),(56,' Palms Casino-the Pearl ','2009-08-22 10:00:00','2009-08-22 13:00:00',' Las Vegas, NV '),(57,' US Airways Center ','2009-08-23 18:00:00','2009-08-23 21:00:00',' Phoenix, AZ '),(58,' E Center ','2009-08-25 15:00:00','2009-08-25 18:00:00',' West Valley City, UT '),(59,' Red Rocks Amphitheatre ','2009-08-27 18:00:00','2009-08-27 21:00:00',' Morrison, CO '),(60,' Superpages.com Center ','2009-08-29 17:00:00','2009-08-29 20:00:00',' Dallas, TX '),(61,' Cynthia Woods Mitchell Pavilion ','2009-08-30 18:00:00','2009-08-30 21:00:00',' Houston, TX '),(62,' Lakewood Amphitheatre ','2009-09-01 15:00:00','2009-09-01 18:00:00',' Atlanta, GA '),(63,' Ford Amphitheatre at the Florida State Fairgrounds ','2009-09-04 10:00:00','2009-09-04 13:00:00',' Tampa Bay, FL '),(64,' BankAtlantic Center ','2009-09-05 13:00:00','2009-09-05 16:00:00',' Sunrise, FL '),(65,' Konig Pilsener Arena ','2009-10-31 17:00:00','2009-10-31 20:00:00',' Oberhausen, GER '),(66,' Awd Dome ','2009-11-01 13:00:00','2009-11-01 16:00:00',' Bremen, GER '),(67,' TUI Arena (formerly Preussag Arena) ','2009-11-03 14:00:00','2009-11-03 17:00:00',' Hanover, GER '),(68,' SAP Arena ','2009-11-07 13:00:00','2009-11-07 16:00:00',' Mannheim, GER '),(69,' Schleyerhalle ','2009-11-08 12:00:00','2009-11-08 15:00:00',' Stuttgart, GER '),(70,' Stade De Geneve ','2009-11-10 17:00:00','2009-11-10 20:00:00',' Geneva, CH '),(71,' Recinto Ferial - Valencia ','2009-11-12 15:00:00','2009-11-12 18:00:00',' Valencia, Spain '),(72,' Palau Sant Jordi ','2009-11-20 12:00:00','2009-11-20 15:00:00',' Barcelona, Spain '),(73,' Halle Tony Garnier ','2009-11-23 20:00:00','2009-11-23 23:00:00',' Lyon, FRA '),(74,' Arena Nurnberg ','2009-12-01 13:00:00','2009-12-01 16:00:00',' Nuremberg, GER '),(75,' Stadthalle ','2009-12-03 14:00:00','2009-12-03 17:00:00',' Vienna, Austria '),(76,' Stadthalle Graz ','2009-12-04 13:00:00','2009-12-04 16:00:00',' Graz, AT '),(77,' Hallenstadion ','2009-12-06 16:00:00','2009-12-06 19:00:00',' Zurich, CH '),(78,' Hallenstadion ','2009-12-07 10:00:00','2009-12-07 13:00:00',' Zurich, CH '),(79,' The O2 - Dublin ','2009-12-10 17:00:00','2009-12-10 20:00:00',' Dublin, IE '),(80,' Scottish Exhibition & Conference Center ','2009-12-12 14:00:00','2009-12-12 17:00:00',' Glasgow, Scotland '),(81,' LG Arena ','2009-12-13 15:00:00','2009-12-13 18:00:00',' Birmingham, ENG '),(82,' O2 Dome ','2009-12-15 13:00:00','2009-12-15 16:00:00',' London, ENG '),(83,' O2 Dome ','2009-12-16 15:00:00','2009-12-16 18:00:00',' London, ENG '),(84,' MEN Arena Manchester ','2009-12-18 16:00:00','2009-12-18 19:00:00',' Manchester, ENG ');
+/*!40000 ALTER TABLE `events` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `events_rec`
+--
+
+DROP TABLE IF EXISTS `events_rec`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `events_rec` (
+ `event_id` int(11) NOT NULL AUTO_INCREMENT,
+ `start_date` datetime NOT NULL,
+ `end_date` datetime NOT NULL,
+ `text` varchar(255) NOT NULL,
+ `rec_type` varchar(64) NOT NULL,
+ `event_pid` int(11) NOT NULL,
+ `event_length` int(11) NOT NULL,
+ PRIMARY KEY (`event_id`)
+) ENGINE=MyISAM AUTO_INCREMENT=22 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `events_rec`
+--
+
+LOCK TABLES `events_rec` WRITE;
+/*!40000 ALTER TABLE `events_rec` DISABLE KEYS */;
+INSERT INTO `events_rec` VALUES (1,'2009-07-01 00:00:00','9999-02-01 00:00:00','Second Friday','month_1_5_2_#no',0,86400),(2,'2009-06-29 10:00:00','9999-02-01 00:00:00','Test build','week_1___1,3,5#no',0,3600),(3,'2009-07-22 10:00:00','2009-07-22 11:00:00','','none',2,1248246000),(4,'2009-07-21 00:00:00','2009-08-30 00:00:00','Each 8 days, 5 times','day_8___#5',0,172800),(5,'2009-07-16 10:00:00','2009-07-16 11:00:00','Test build','',2,1247814000),(6,'2009-06-29 10:00:00','2009-06-29 11:00:00','','none',2,1246258800),(15,'2009-07-06 00:00:00','2009-07-19 23:59:00','2 Wed','week_1___0#2',0,300),(17,'2009-07-01 00:00:00','2009-08-04 23:59:00','New event','month_1_2_2_#2',0,300),(19,'2009-07-01 00:00:00','9999-02-01 00:00:00','2nd monday','month_1_2_1_#no',0,300),(20,'2009-01-01 00:00:00','9999-02-01 00:00:00','New event','year_1_1_2_#no',0,300),(21,'2010-01-31 00:00:00','9999-02-01 00:00:00','New event','month_1___#no',0,86400);
+/*!40000 ALTER TABLE `events_rec` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `grid50000`
+--
+
+DROP TABLE IF EXISTS `grid50000`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `grid50000` (
+ `item_id` int(11) NOT NULL AUTO_INCREMENT,
+ `item_nm` varchar(255) NOT NULL,
+ `item_cd` varchar(255) NOT NULL,
+ PRIMARY KEY (`item_id`)
+) ENGINE=MyISAM AUTO_INCREMENT=10073 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `grid50000`
+--
+
+LOCK TABLES `grid50000` WRITE;
+/*!40000 ALTER TABLE `grid50000` DISABLE KEYS */;
+INSERT INTO `grid50000` VALUES (781,'man34','s123221df8381183у33333'),(782,'and34','383811843d343sdÑ‹'),(783,'34','12s1sdfыòыòы'),(784,'seemed','183811843òò'),(785,'surprised','1283811843фыòыы1'),(786,'at','83811843343'),(787,'all','83811843'),(788,'at','83811843ч'),(789,'this','83811843'),(790,'','83811843'),(791,'neither','83811843'),(792,'the','83811843'),(793,'humans','83811843s'),(794,'nor','83811843'),(795,'the','83811843'),(796,'horse','83811843'),(797,'nor','83811843'),(798,'even','83811843'),(799,'the','83811843'),(800,'man','83811843'),(801,'himself','83811843'),(802,'and','83811843'),(803,'Przemysl','83811843'),(804,'Ploughman','83811843'),(805,'Premysl','83811843'),(806,'Orac','83811843'),(807,'in','83811843'),(808,'Czech','83811843'),(809,'came','83811843'),(810,'to','83811843'),(811,'Vysehrad','83811843'),(812,'and','83811843'),(813,'married','83811843'),(814,'Libuse','83811843'),(815,'and','83811843'),(816,'took','83811843'),(817,'over','83811843'),(818,'the','83811843'),(819,'job','83811843'),(820,'of','83811843'),(821,'ruling','83811843'),(822,'the','83811843'),(823,'unruly','83811843'),(824,'Czechs','83811843'),(825,'and','83811843'),(826,'he','83811843'),(827,'and','83811843'),(828,'Libuse','83811843'),(829,'together','83811843'),(830,'started','83811843'),(831,'the','83811843'),(832,'Przemyslid','83811843'),(833,'Dynasty','83811843'),(834,'which','83811843'),(835,'ruled','83811843'),(836,'over','83811843'),(837,'the','83811843'),(838,'Czech','83811843'),(839,'lands','83811843'),(840,'till','83811843'),(841,'the','83811843'),(842,'th','83811843'),(843,'century','83811843'),(844,'','83811843'),(845,'\r\nOne','83811843'),(846,'day','83811843'),(847,'not','83811843'),(848,'long','83811843'),(849,'after','83811843'),(850,'the','83811843'),(851,'wedding','83811843'),(852,'Libuse','83811843'),(853,'had','83811843'),(854,'a','83811843'),(855,'vision','83811843'),(856,'in','83811843'),(857,'which','83811843'),(858,'she','83811843'),(859,'foretold','83811843'),(860,'of','83811843'),(861,'the','83811843'),(862,'glory','83811843'),(863,'of','83811843'),(864,'the','83811843'),(865,'Czech','83811843'),(866,'capital','83811843'),(867,'Standing','83811843'),(868,'atop','83811843'),(869,'Vysehrad','83811843'),(870,'hill','83811843'),(871,'she','83811843'),(872,'went','83811843'),(873,'into','83811843'),(874,'a','83811843'),(875,'trance','83811843'),(876,'and','83811843'),(877,'told','83811843'),(878,'her','83811843'),(879,'vision','83811843'),(880,'to','83811843'),(881,'the','83811843'),(882,'people','83811843'),(883,'even','83811843'),(884,'as','83811843'),(885,'the','83811843'),(886,'gods','83811843'),(887,'sent','83811843'),(888,'it','83811843'),(889,'to','83811843'),(890,'her','83811843'),(891,'She','83811843'),(892,'said','83811843'),(893,'that','83811843'),(894,'on','83811843'),(895,'the','83811843'),(896,'seven','83811843'),(897,'hills','83811843'),(898,'of','83811843'),(899,'Prague','83811843'),(900,'a','83811843'),(901,'fair','83811843'),(902,'city','83811843'),(903,'would','83811843'),(904,'grow','83811843'),(905,'the','83811843'),(906,'fame','83811843'),(907,'of','83811843'),(921,'all','83811843'),(922,'of','83811843'),(923,'which','83811843'),(924,'she','83811843'),(925,'foretold','83811843'),(926,'really','83811843'),(927,'came','83811843'),(928,'true','83811843'),(929,'Of','83811843'),(930,'course!','83811843'),(931,'\r\nNo','83811843'),(932,'while','83811843'),(933,'Cech','83811843'),(934,'and','83811843'),(935,'Libuse','83811843'),(936,'are','83811843'),(937,'the','83811843'),(938,'stuff','83811843'),(939,'of','83811843'),(940,'imaginative','83811843'),(941,'Czech','83811843'),(942,'legend','83811843'),(943,'it','83811843'),(944,'is','83811843'),(945,'believed','83811843'),(946,'that','83811843'),(947,'Samo','83811843'),(948,'','83811843'),(949,'who','83811843'),(950,'may','83811843'),(951,'or','83811843'),(952,'may','83811843'),(953,'not','83811843'),(954,'have','83811843'),(955,'ruled','83811843'),(956,'this','83811843'),(957,'part','83811843'),(958,'of','83811843'),(959,'the','83811843'),(960,'world','83811843'),(961,'in','83811843'),(962,'the','83811843'),(963,'first','83811843'),(964,'half','83811843'),(965,'of','83811843'),(1761,'inhabitants','83811843'),(1762,'Adalbert','83811843'),(1763,'or','83811843'),(1764,'Vojtech','83811843'),(1765,'as','83811843'),(1766,'he','83811843'),(1767,'is','83811843'),(1768,'known','83811843'),(1769,'in','83811843'),(1770,'Czech','83811843'),(1771,'is','83811843'),(1772,'another','83811843'),(1773,'of','83811843'),(1774,'the','83811843'),(1775,'Czech','83811843'),(1776,'nations','83811843'),(1777,'patron','83811843'),(1778,'saints','83811843'),(1779,'today','83811843'),(1780,'\r\n','83811843'),(1781,'\r\n\r\nBut','83811843'),(1782,'Vojtech','83811843'),(1783,'was','83811843'),(1784,'not','83811843'),(1785,'the','83811843'),(1786,'only','83811843'),(1787,'early','83811843'),(1788,'Czech','83811843'),(1789,'guy','83811843'),(1790,'to','83811843'),(1791,'be','83811843'),(1792,'made','83811843'),(1793,'a','83811843'),(1794,'saint','83811843'),(1795,'thanks','83811843'),(1796,'to','83811843'),(1797,'the','83811843'),(1798,'Przemyslids','83811843'),(1799,'bloodthirstiness','83811843'),(1800,'On','83811843'),(1801,'the','83811843'),(1802,'contrary','83811843'),(1803,'','83811843'),(1804,'the','83811843'),(1805,'Przemyslid','83811843'),(1806,'rulers','83811843'),(1807,'were','83811843'),(1808,'rather','83811843'),(1809,'a','83811843'),(1810,'mixed','83811843'),(1811,'bag','83811843'),(1812,'and','83811843'),(1813,'when','83811843'),(1814,'they','83811843'),(1815,'ran','83811843'),(1816,'out','83811843'),(1817,'of','83811843'),(1818,'rival','83811843'),(1819,'clans','83811843'),(1820,'to','83811843'),(1821,'murder','83811843'),(1822,'they','83811843'),(1823,'started','83811843'),(1824,'murdering','83811843'),(1825,'each','83811843'),(1826,'other','83811843'),(1827,'','83811843'),(1828,'resulting','83811843'),(1829,'in','83811843'),(1830,'some','83811843'),(1831,'more','83811843'),(1832,'early','83811843'),(1833,'saints','83811843'),(1834,'for','83811843'),(1835,'the','83811843'),(1836,'Czechs','83811843'),(1837,'\r\n\r\nWenceslas','83811843'),(1838,'I','83811843'),(1839,'the','83811843'),(1840,'fourth','83811843'),(1841,'Przemyslid','83811843'),(1842,'Czech','83811843'),(1843,'ruler','83811843'),(1844,'was','83811843'),(1845,'made','83811843'),(1846,'a','83811843'),(1847,'saint','83811843'),(1848,'soon','83811843'),(1849,'after','83811843'),(1850,'his','83811843'),(1851,'murder','83811843'),(1852,'in','83811843'),(1853,'929','83811843'),(1854,'or','83811843'),(1855,'935','83811843'),(1856,'This','83811843'),(1857,'Wenceslas','83811843'),(1858,'in','83811843'),(1859,'Czech','83811843'),(1860,'Vaclav','83811843'),(1861,'is','83811843'),(1862,'the','83811843'),(1863,'Good','83811843'),(1864,'King','83811843'),(1865,'Wenceslas','83811843'),(1866,'of','83811843'),(1867,'the','83811843'),(1868,'Christmas','83811843'),(1869,'carol','83811843'),(1870,'and','83811843'),(1872,'was','83811843'),(1873,'during','83811843'),(1874,'his','83811843'),(1875,'reign','83811843'),(1876,'that','83811843'),(1877,'the','83811843'),(1878,'Czech','83811843'),(1879,'lands','83811843'),(1880,'entered','83811843'),(1881,'into','83811843'),(1882,'an','83811843'),(1883,'alliance','83811843'),(1884,'with','83811843'),(1885,'Saxony','83811843'),(1886,'thereby','83811843'),(1887,'laying','83811843'),(1888,'the','83811843'),(1889,'foundations','83811843'),(1890,'for','83811843'),(1891,'closer','83811843'),(1892,'relations','83811843'),(1893,'with','83811843'),(1894,'the','83811843'),(1895,'restored','83811843'),(1896,'Roman','83811843'),(1897,'Empire','83811843'),(1898,'\r\n\r\nThis','83811843'),(1899,'mischievous','83811843'),(1900,'affability','83811843'),(1901,'on','83811843'),(1902,'Wenceslas','83811843'),(1903,'part','83811843'),(1904,'towards','83811843'),(1905,'the','83811843'),(1906,'Czechs','83811843'),(1907,'western','83811843'),(1908,'neighbors','83811843'),(1909,'is','83811843'),(1910,'a','83811843'),(1911,'main','83811843'),(1912,'reason','83811843'),(1913,'that','83811843'),(1914,'he','83811843'),(1915,'was','83811843'),(1916,'killed','83811843'),(1917,'by','83811843'),(1918,'his','83811843'),(1919,'brother','83811843'),(1920,'who','83811843'),(1921,'wasnt','83811843'),(1922,'very','83811843'),(1923,'good','83811843'),(1924,'in','83811843'),(1925,'fact','83811843'),(1926,'he','83811843'),(1927,'is','83811843'),(1928,'known','83811843'),(1929,'as','83811843'),(1930,'Boleslav','83811843'),(1931,'the','83811843'),(1932,'Cruel','83811843'),(1933,'Another','83811843'),(1934,'reason','83811843'),(1935,'might','83811843'),(1936,'be','83811843'),(1937,'that','83811843'),(1938,'Boleslav','83811843'),(1939,'was','83811843'),(1940,'a','83811843'),(1941,'pagan','83811843'),(1942,'and','83811843'),(1943,'he','83811843'),(1944,'felt','83811843'),(1945,'that','83811843'),(1946,'Wenceslas','83811843'),(1947,'was','83811843'),(1948,'frittering','83811843'),(1949,'away','83811843'),(1950,'too','83811843'),(1951,'much','83811843'),(1952,'time','83811843'),(1953,'with','83811843'),(1954,'this','83811843'),(1955,'new','83811843'),(1956,'Christian','83811843'),(1957,'fashion','83811843'),(1958,'hed','83811843'),(1959,'picked','83811843'),(1960,'up','83811843'),(1961,'','83811843'),(1962,'though','83811843'),(1963,'lust','83811843'),(1964,'for','83811843'),(1965,'power','83811843'),(1966,'probably','83811843'),(1967,'also','83811843'),(1968,'played','83811843'),(1969,'a','83811843'),(1970,'role','83811843'),(1971,'in','83811843'),(1972,'Boleslavs','83811843'),(1973,'motive','83811843'),(1974,'for','83811843'),(1975,'the','83811843'),(1976,'murder','83811843'),(1977,'which','83811843'),(1978,'took','83811843'),(1979,'place','83811843'),(1980,'at','83811843'),(1981,'the','83811843'),(1982,'very','83811843'),(1983,'door','83811843'),(1984,'of','83811843'),(1985,'the','83811843'),(1986,'church','83811843'),(1987,'in','83811843'),(1988,'Stara','83811843'),(1989,'Boleslav','83811843'),(1990,'where','83811843'),(1991,'Wenceslas','83811843'),(1992,'was','83811843'),(1993,'trying','83811843'),(1994,'to','83811843'),(1995,'seek','83811843'),(1996,'refuge','83811843'),(1997,'\r\n\r\nIncidentally','83811843'),(1998,'Boleslav','83811843'),(1999,'and','83811843'),(2000,'Wenceslas','83811843'),(2001,'Grandmother','83811843'),(2002,'on','83811843'),(2003,'their','83811843'),(2004,'fathers','83811843'),(2005,'side','83811843'),(2006,'was','83811843'),(2007,'also','83811843'),(2008,'murdered','83811843'),(2009,'and','83811843'),(2010,'also','83811843'),(2011,'made','83811843'),(2012,'a','83811843'),(2013,'saint','83811843'),(2014,'It','83811843'),(2015,'is','83811843'),(2016,'said','83811843'),(2017,'that','83811843'),(2018,'she','83811843'),(2019,'was','83811843'),(2020,'either','83811843'),(2021,'smothered','83811843'),(2022,'to','83811843'),(2023,'death','83811843'),(2024,'with','83811843'),(2025,'a','83811843'),(2026,'pillow','83811843'),(2027,'or','83811843'),(2028,'choked','83811843'),(2029,'to','83811843'),(2030,'death','83811843'),(2031,'','83811843'),(2032,'this','83811843'),(2033,'time','83811843'),(2034,'the','83811843'),(2035,'killer','83811843'),(2036,'was','83811843'),(2037,'her','83811843'),(2038,'daughterinlaw','83811843'),(2039,'Boleslav','83811843'),(2040,'and','83811843'),(2041,'Wenceslas','83811843'),(2042,'mother','83811843'),(2043,'and','83811843'),(2044,'the','83811843'),(2045,'motive','83811843'),(2046,'was','83811843'),(2047,'again','83811843'),(2048,'power','83811843'),(2049,'Drahomira','83811843'),(2050,'wanted','83811843'),(2051,'to','83811843'),(2052,'place','83811843'),(2053,'Wenceslas','83811843'),(2054,'on','83811843'),(2055,'the','83811843'),(2056,'throne','83811843'),(2057,'\r\n\r\nThings','83811843'),(2058,'didnt','83811843'),(2059,'get','83811843'),(2060,'much','83811843'),(2061,'better','83811843'),(2062,'within','83811843'),(2063,'the','83811843'),(2064,'Przemyslid','83811843'),(2065,'family','83811843'),(2066,'it','83811843'),(2067,'is','83811843'),(2068,'suspected','83811843'),(2069,'that','83811843'),(2070,'','83811843'),(2071,'Interestingly','83811843'),(2072,'enough','83811843'),(2073,'the','83811843'),(2074,'Przemyslids','83811843'),(2075,'are','83811843'),(2076,'remembered','83811843'),(2077,'rather','83811843'),(2078,'fondly','83811843'),(2079,'in','83811843'),(2080,'the','83811843'),(2081,'Czech','83811843'),(2082,'Republic','83811843'),(2083,'today','83811843'),(2084,'as','83811843'),(2085,'it','83811843'),(2086,'seems','83811843'),(2087,'that','83811843'),(2088,'most','83811843'),(2089,'people','83811843'),(2090,'are','83811843'),(2091,'blissfully','83811843'),(2092,'unaware','83811843'),(2093,'of','83811843'),(2094,'the','83811843'),(2095,'familys','83811843'),(2096,'murderous','83811843'),(2097,'streak','83811843'),(2098,'\r\n\r\nMaybe','83811843'),(2099,'that','83811843'),(2100,'is','83811843'),(2101,'because','83811843'),(2102,'the','83811843'),(2103,'Przemyslids','83811843'),(2104,'occasionally','83811843'),(2105,'took','83811843'),(2106,'time','83811843'),(2107,'off','83811843'),(2108,'from','83811843'),(2109,'their','83811843'),(2110,'favorite','83811843'),(2111,'sport','83811843'),(2112,'to','83811843'),(2113,'increase','83811843'),(2114,'Bohemias','83811843'),(2115,'power','83811843'),(2116,'and','83811843'),(2117,'prestige','83811843'),(2118,'In','83811843'),(2119,'typical','83811843'),(2120,'early','83811843'),(2121,'feudal','83811843'),(2122,'fashion','83811843'),(2123,'this','83811843'),(2124,'meant','83811843'),(2125,'that','83811843'),(2126,'they','83811843'),(2127,'went','83811843'),(2128,'out','83811843'),(2129,'killing','83811843'),(2130,'people','83811843'),(2131,'in','83811843'),(2132,'other','83811843'),(2133,'countries','83811843'),(2134,'instead','83811843'),(2135,'expanding','83811843'),(2136,'their','83811843'),(2137,'empire','83811843'),(2138,'to','83811843'),(2139,'Moravia','83811843'),(2140,'and','83811843'),(2141,'Silesia','83811843'),(2142,'as','83811843'),(2143,'well','83811843'),(2144,'as','83811843'),(2145,'the','83811843'),(2146,'upper','83811843'),(2147,'reaches','83811843'),(2148,'of','83811843'),(2149,'the','83811843'),(2150,'river','83811843'),(2151,'Vistula','83811843'),(2152,'and','83811843'),(2153,'parts','83811843'),(2154,'of','83811843'),(2155,'western','83811843'),(2156,'Slovakia','83811843'),(2157,'In','83811843'),(2158,'Moravia','83811843'),(2159,'they','83811843'),(2160,'set','83811843'),(2161,'up','83811843'),(2162,'a','83811843'),(2163,'system','83811843'),(2164,'of','83811843'),(2165,'dukedoms','83811843'),(2166,'with','83811843'),(2167,'the','83811843'),(2168,'office','83811843'),(2169,'of','83811843'),(2170,'Margrave','83811843'),(2171,'ruler','83811843'),(2172,'of','83811843'),(2173,'Moravia','83811843'),(2174,'sometimes','83811843'),(2175,'being','83811843'),(2176,'held','83811843'),(2177,'by','83811843'),(2178,'the','83811843'),(2179,'Bohemian','83811843'),(2180,'Dauphin','83811843'),(2181,'sometimes','83811843'),(2182,'by','83811843'),(2183,'a','83811843'),(2184,'rival','83811843'),(2185,'for','83811843'),(2186,'the','83811843'),(2187,'Bohemian','83811843'),(2188,'throne','83811843'),(2189,'In','83811843'),(2190,'this','83811843'),(2191,'way','83811843'),(2192,'the','83811843'),(2193,'Przemyslide','83811843'),(2194,'dynastic','83811843'),(2195,'killings','83811843'),(2196,'were','83811843'),(2197,'stayed','83811843'),(2198,'and','83811843'),(2199,'both','83811843'),(2200,'Bohemia','83811843'),(2201,'and','83811843'),(2202,'Moravia','83811843'),(2203,'came','83811843'),(2204,'to','83811843'),(2205,'be','83811843'),(2206,'regarded','83811843'),(2207,'as','83811843'),(2208,'hereditary','83811843'),(2209,'lands','83811843'),(2210,'of','83811843'),(2211,'the','83811843'),(2212,'Przemyslid','83811843'),(2213,'dynasty','83811843'),(2214,'All','83811843'),(2215,'the','83811843'),(2216,'while','83811843'),(2217,'the','83811843'),(2218,'expansion','83811843'),(2219,'of','83811843'),(2220,'the','83811843'),(2221,'Przemyslid','83811843'),(2222,'Dynastys','83811843'),(2223,'power','83811843'),(2224,'went','83811843'),(2225,'hand','83811843'),(2226,'in','83811843'),(2227,'hand','83811843'),(2228,'with','83811843'),(2229,'the','83811843'),(2230,'spread','83811843'),(2231,'of','83811843'),(2232,'Christianity','83811843'),(2233,'in','83811843'),(2234,'the','83811843'),(2235,'region','83811843'),(2236,'\r\n\r\n','83811843'),(2237,'This','83811843'),(2238,'growing','83811843'),(2239,'Przemyslide','83811843'),(2240,'state','83811843'),(2241,'maintained','83811843'),(2242,'its','83811843'),(2243,'sovereignty','83811843'),(2244,'though','83811843'),(2245,'it','83811843'),(2246,'formally','83811843'),(2247,'recognized','83811843'),(2248,'the','83811843'),(2249,'feudal','83811843'),(2250,'supremacy','83811843'),(2251,'of','83811843'),(2252,'the','83811843'),(2253,'RomanGerman','83811843'),(2254,'Empire','83811843'),(2255,'The','83811843'),(2256,'Czech','83811843'),(2257,'lands','83811843'),(2258,'ranked','83811843'),(2259,'among','83811843'),(2260,'the','83811843'),(2261,'most','83811843'),(2262,'advanced','83811843'),(2263,'of','83811843'),(2264,'the','83811843'),(2265,'European','83811843'),(2266,'feudal','83811843'),(2267,'states','83811843'),(2268,'being','83811843'),(2269,'at','83811843'),(2270,'the','83811843'),(2271,'forefront','83811843'),(2272,'of','83811843'),(2273,'economic','83811843'),(2274,'power','83811843'),(2275,'and','83811843'),(2276,'cultural','83811843'),(2277,'achievement','83811843'),(2278,'at','83811843'),(2279,'the','83811843'),(2280,'time','83811843'),(2281,'In','83811843'),(2282,'keeping','83811843'),(2283,'with','83811843'),(2284,'this','83811843'),(2285,'growing','83811843'),(2286,'importance','83811843'),(2287,'the','83811843'),(2288,'territory','83811843'),(2289,'was','83811843'),(2290,'officially','83811843'),(2291,'recognized','83811843'),(2292,'through','83811843'),(2293,'the','83811843'),(2294,'granting','83811843'),(2295,'of','83811843'),(2296,'a','83811843'),(2297,'royal','83811843'),(2298,'crown','83811843'),(2299,'to','83811843'),(2300,'the','83811843'),(2301,'Przemyslid','83811843'),(2302,'Dynasty','83811843'),(2303,'in','83811843'),(2304,'the','83811843'),(2305,'eleventh','83811843'),(2306,'century','83811843'),(2307,'it','83811843'),(2308,'was','83811843'),(2309,'made','83811843'),(2310,'hereditary','83811843'),(2311,'in','83811843'),(2312,'1212','83811843'),(2313,'by','83811843'),(2314,'the','83811843'),(2315,'Golden','83811843'),(2316,'Sicilian','83811843'),(2317,'Bull','83811843'),(2318,'and','83811843'),(2319,'the','83811843'),(2320,'granting','83811843'),(2321,'of','83811843'),(2322,'the','83811843'),(2323,'title','83811843'),(2324,'of','83811843'),(2325,'emperor','83811843'),(2326,'for','83811843'),(2327,'Czech','83811843'),(2328,'rulers','83811843'),(2329,'\r\n\r\nThe','83811843'),(2330,'1100s','83811843'),(2331,'and','83811843'),(2332,'1200s','83811843'),(2333,'were','83811843'),(2334,'a','83811843'),(2335,'very','83811843'),(2336,'busy','83811843'),(2337,'time','83811843'),(2338,'in','83811843'),(2339,'this','83811843'),(2340,'part','83811843'),(2341,'of','83811843'),(2342,'Europe','83811843'),(2343,'and','83811843'),(2344,'colonization','83811843'),(2345,'trade','83811843'),(2346,'and','83811843'),(2347,'cultural','83811843'),(2348,'activity','83811843'),(2349,'were','83811843'),(2350,'steadily','83811843'),(2351,'on','83811843'),(2352,'the','83811843'),(2353,'increase','83811843'),(2354,'Prague','83811843'),(2355,'which','83811843'),(2356,'lay','83811843'),(2357,'smack','83811843'),(2358,'dab','83811843'),(2359,'in','83811843'),(2360,'the','83811843'),(2361,'middle','83811843'),(2362,'of','83811843'),(2363,'several','83811843'),(2364,'continental','83811843'),(2365,'trade','83811843'),(2366,'routes','83811843'),(2367,'flourished','83811843'),(2368,'Pragues','83811843'),(2369,'Old','83811843'),(2370,'Town','83811843'),(2371,'was','83811843'),(2372,'founded','83811843'),(2373,'in','83811843'),(2374,'1234','83811843'),(2375,'as','83811843'),(2376,'the','83811843'),(2377,'first','83811843'),(2378,'of','83811843'),(2379,'Pragues','83811843'),(2380,'five','83811843'),(2381,'towns','83811843'),(2382,'and','83811843'),(2383,'the','83811843'),(2384,'Lesser','83811843'),(2385,'Quarter','83811843'),(2386,'was','83811843'),(2387,'founded','83811843'),(2388,'in','83811843'),(2389,'1257','83811843'),(2390,'Border','83811843'),(2391,'forests','83811843'),(2392,'were','83811843'),(2393,'settled','83811843'),(2394,'and','83811843'),(2395,'towns','83811843'),(2396,'and','83811843'),(2397,'fortresses','83811843'),(2398,'were','83811843'),(2399,'founded','83811843'),(2400,'and','83811843'),(2401,'fortified','83811843'),(2402,'These','83811843'),(2403,'sweeping','83811843'),(2404,'changes','83811843'),(2405,'literally','83811843'),(2406,'transformed','83811843'),(2407,'the','83811843'),(2408,'country','83811843'),(2409,'and','83811843'),(2410,'in','83811843'),(2411,'keeping','83811843'),(2412,'with','83811843'),(2413,'these','83811843'),(2414,'physical','83811843'),(2415,'changes','83811843'),(2416,'the','83811843'),(2417,'social','83811843'),(2418,'structure','83811843'),(2419,'of','83811843'),(2420,'the','83811843'),(2421,'territory','83811843'),(2422,'also','83811843'),(2423,'evolved','83811843'),(2424,'From','83811843'),(2426,'this','83811843'),(2427,'time','83811843'),(2428,'aristocrats','83811843'),(2429,'burghers','83811843'),(2430,'and','83811843'),(2431,'serfs','83811843'),(2432,'were','83811843'),(2433,'to','83811843'),(2434,'be','83811843'),(2435,'spotted','83811843'),(2436,'in','83811843'),(2437,'the','83811843'),(2438,'Czech','83811843'),(2439,'lands','83811843'),(2440,'','83811843'),(2441,'as','83811843'),(2442,'were','83811843'),(2443,'German','83811843'),(2444,'settlers','83811843'),(2445,'who','83811843'),(2446,'were','83811843'),(2447,'invited','83811843'),(2448,'to','83811843'),(2449,'colonize','83811843'),(2450,'previously','83811843'),(2451,'uninhabited','83811843'),(2452,'mostly','83811843'),(2453,'border','83811843'),(2454,'regions','83811843'),(2455,'of','83811843'),(2456,'Bohemia','83811843'),(2457,'and','83811843'),(2458,'Moravia','83811843'),(2459,'The','83811843'),(2460,'German','83811843'),(2461,'settlers','83811843'),(2462,'whether','83811843'),(2463,'burghers','83811843'),(2464,'or','83811843'),(2465,'peasants','83811843'),(2466,'did','83811843'),(2467,'not','83811843'),(2468,'form','83811843'),(2469,'a','83811843'),(2470,'homogeneous','83811843'),(2471,'or','83811843'),(2472,'politically','83811843'),(2473,'separate','83811843'),(2474,'group','83811843'),(2475,'and','83811843'),(2476,'they','83811843'),(2477,'soon','83811843'),(2478,'became','83811843'),(2479,'part','83811843'),(2480,'of','83811843'),(2481,'the','83811843'),(2482,'local','83811843'),(2483,'community','83811843'),(2484,'identifying','83811843'),(2485,'with','83811843'),(2486,'Czech','83811843'),(2487,'statehood','83811843'),(2488,'and','83811843'),(2489,'sharing','83811843'),(2490,'in','83811843'),(2491,'the','83811843'),(2492,'development','83811843'),(2493,'of','83811843'),(2494,'the','83811843'),(2495,'Czech','83811843'),(2496,'and','83811843'),(2497,'Moravian','83811843'),(2498,'lands','83811843'),(2499,'as','83811843'),(2500,'fully','83811843'),(2501,'enfranchised','83811843'),(2502,'members','83811843'),(2503,'of','83811843'),(2504,'the','83811843'),(2505,'population','83811843'),(2506,'but','83811843'),(2507,'mostly','83811843'),(2508,'but','83811843'),(2509,'keeping','83811843'),(2510,'their','83811843'),(2511,'native','83811843'),(2512,'language','83811843'),(2513,'in','83811843'),(2514,'addition','83811843'),(2515,'to','83811843'),(2516,'learning','83811843'),(2517,'Czech','83811843'),(2518,'Many','83811843'),(2519,'many','83811843'),(2520,'many','83811843'),(2521,'many','83811843'),(2522,'centuries','83811843'),(2523,'later','83811843'),(2524,'the','83811843'),(2525,'places','83811843'),(2526,'that','83811843'),(2527,'they','83811843'),(2528,'settled','83811843'),(2529,'would','83811843'),(2530,'come','83811843'),(2531,'to','83811843'),(2532,'be','83811843'),(2533,'known','83811843'),(2534,'as','83811843'),(2535,'the','83811843'),(2536,'Sudetenland','83811843'),(2537,'\r\n\r\nFrom','83811843'),(2538,'the','83811843'),(2539,'thirteenth','83811843'),(2540,'century','83811843'),(2541,'the','83811843'),(2542,'Czech','83811843'),(2543,'kingdom','83811843'),(2544,'was','83811843'),(2545,'one','83811843'),(2546,'of','83811843'),(2547,'the','83811843'),(2548,'most','83811843'),(2549,'robust','83811843'),(2550,'states','83811843'),(2551,'in','83811843'),(2552,'all','83811843'),(2553,'of','83811843'),(2554,'Europe','83811843'),(2555,'with','83811843'),(2556,'a','83811843'),(2557,'growing','83811843'),(2558,'population','83811843'),(2559,'and','83811843'),(2560,'a','83811843'),(2561,'vigorous','83811843'),(2562,'economy','83811843'),(2563,'This','83811843'),(2564,'in','83811843'),(2565,'turn','83811843'),(2566,'made','83811843'),(2567,'the','83811843'),(2568,'Czech','83811843'),(2569,'nobility','83811843'),(2570,'and','83811843'),(2571,'rulers','83811843'),(2572,'all','83811843'),(2573,'the','83811843'),(2574,'more','83811843'),(2575,'rich','83811843'),(2576,'and','83811843'),(2577,'powerful','83811843'),(2578,'and','83811843'),(2579,'enabled','83811843'),(2580,'king','83811843'),(2581,'Przemysl','83811843'),(2582,'Otakar','83811843'),(2583,'II','83811843'),(2584,'to','83811843'),(2585,'expand','83811843'),(2586,'his','83811843'),(2587,'territory','83811843'),(2588,'rather','83811843'),(2589,'extensively','83811843'),(2590,'if','83811843'),(2591,'briefly','83811843'),(2592,'Otakar','83811843'),(2593,'II','83811843'),(2594,'was','83811843'),(2595,'quite','83811843'),(2596,'wellknown','83811843'),(2597,'in','83811843'),(2598,'his','83811843'),(2599,'time','83811843'),(2600,'and','83811843'),(2601,'he','83811843'),(2602,'even','83811843'),(2603,'makes','83811843'),(2604,'an','83811843'),(2605,'appearance','83811843'),(2606,'in','83811843'),(2607,'Dantes','83811843'),(2608,'Divine','83811843'),(2609,'Comedy','83811843'),(2610,'Otokar','83811843'),(2611,'II','83811843'),(2612,'also','83811843'),(2613,'known','83811843'),(2614,'as','83811843'),(2615,'the','83811843'),(2616,'King','83811843'),(2617,'of','83811843'),(2618,'Gold','83811843'),(2619,'and','83811843'),(2620,'Iron','83811843'),(2621,'because','83811843'),(2622,'of','83811843'),(2623,'his','83811843'),(2624,'considerable','83811843'),(2625,'wealth','83811843'),(2626,'and','83811843'),(2627,'his','83811843'),(2628,'considerable','83811843'),(2629,'military','83811843'),(2630,'might','83811843'),(2631,'defeated','83811843'),(2632,'the','83811843'),(2633,'armies','83811843'),(2634,'of','83811843'),(2635,'the','83811843'),(2636,'Hungarian','83811843'),(2637,'king','83811843'),(2638,'in','83811843'),(2639,'1256','83811843'),(2640,'and','83811843'),(2641,'again','83811843'),(2642,'in','83811843'),(2643,'1260','83811843'),(2644,'This','83811843'),(2645,'military','83811843'),(2646,'victory','83811843'),(2647,'allowed','83811843'),(2648,'him','83811843'),(2649,'to','83811843'),(2650,'annex','83811843'),(2651,'the','83811843'),(2652,'Alpine','83811843'),(2653,'countries','83811843'),(2654,'todays','83811843'),(2655,'Austria','83811843'),(2656,'and','83811843'),(2657,'beyond','83811843'),(2658,'','83811843'),(2659,'extending','83811843'),(2660,'his','83811843'),(2661,'territories','83811843'),(2662,'all','83811843'),(2663,'the','83811843'),(2664,'way','83811843'),(2665,'to','83811843'),(2666,'the','83811843'),(2667,'Adriatic','83811843'),(2668,'Sea','83811843'),(2669,'Some','83811843'),(2670,'people','83811843'),(2671,'claim','83811843'),(2672,'that','83811843'),(2673,'this','83811843'),(2674,'brief','83811843'),(2675,'period','83811843'),(2676,'','83811843'),(2677,'in','83811843'),(2678,'which','83811843'),(2679,'Bohemia','83811843'),(2680,'controlled','83811843'),(2681,'territory','83811843'),(2682,'bordering','83811843'),(2683,'on','83811843'),(2684,'the','83811843'),(2685,'sea','83811843'),(2686,'','83811843'),(2687,'is','83811843'),(2688,'the','83811843'),(2689,'basis','83811843'),(2690,'for','83811843'),(2691,'Shakespeares','83811843'),(2692,'infamous','83811843'),(2693,'Bohemian','83811843'),(2694,'seacoast','83811843'),(2695,'from','83811843'),(2696,'his','83811843'),(2697,'play','83811843'),(2698,'The','83811843'),(2699,'Tempest','83811843'),(2700,'\r\n\r\nWell','83811843'),(2701,'while','83811843'),(2702,'the','83811843'),(2703,'Czech','83811843'),(2704,'lands','83811843'),(2705,'were','83811843'),(2706,'gaining','83811843'),(2707,'power','83811843'),(2708,'prestige','83811843'),(2709,'oceanfront','83811843'),(2710,'property','83811843'),(2711,'and','83811843'),(2712,'other','83811843'),(2713,'things','83811843'),(2714,'a','83811843'),(2715,'powerful','83811843'),(2716,'rival','83811843'),(2717,'appeared','83811843'),(2718,'in','83811843'),(2719,'Germany','83811843'),(2720,'in','83811843'),(2721,'the','83811843'),(2722,'person','83811843'),(2723,'of','83811843'),(2724,'the','83811843'),(2725,'newlyelected','83811843'),(2726,'ruler','83811843'),(2727,'of','83811843'),(2728,'the','83811843'),(2729,'Holy','83811843'),(2730,'Roman','83811843'),(2731,'Empire','83811843'),(2732,'Rudolf','83811843'),(2733,'Habsburg','83811843'),(2734,'','83811843'),(2735,'a','83811843'),(2736,'member','83811843'),(2737,'of','83811843'),(2738,'a','83811843'),(2739,'previously','83811843'),(2740,'unimportant','83811843'),(2741,'family','83811843'),(2742,'from','83811843'),(2743,'the','83811843'),(2744,'Rhineland','83811843'),(2745,'This','83811843'),(2746,'Rudolf','83811843'),(2747,'formed','83811843'),(2748,'an','83811843'),(2749,'alliance','83811843'),(2750,'of','83811843'),(2751,'German','83811843'),(2752,'princes','83811843'),(2753,'and','83811843'),(2754,'','83811843'),(2755,'after','83811843'),(2756,'the','83811843'),(2757,'Czech','83811843'),(2758,'King','83811843'),(2759,'Przemysl','83811843'),(2760,'Otakar','83811843'),(2761,'II','83811843'),(2762,'was','83811843'),(2763,'killed','83811843'),(2764,'in','83811843'),(2765,'battle','83811843'),(2766,'in','83811843'),(2767,'Moravia','83811843'),(2768,'against','83811843'),(2769,'the','83811843'),(2770,'combined','83811843'),(2771,'Roman','83811843'),(2772,'and','83811843'),(2773,'Hungarian','83811843'),(2774,'forces','83811843'),(2775,'on','83811843'),(2776,'August','83811843'),(2777,'26','83811843'),(2778,'1278','83811843'),(2779,'','83811843'),(2780,'Rudolf','83811843'),(2781,'took','83811843'),(2782,'possession','83811843'),(2783,'of','83811843'),(2784,'the','83811843'),(2785,'abovementioned','83811843'),(2786,'Alpine','83811843'),(2787,'lands','83811843'),(2788,'which','83811843'),(2789,'later','83811843'),(2790,'became','83811843'),(2791,'the','83811843'),(2792,'basis','83811843'),(2793,'of','83811843'),(2794,'the','83811843'),(2795,'Habsburgs','83811843'),(2796,'power','83811843'),(2797,'','83811843'),(2798,'ie','83811843'),(2799,'Austria','83811843'),(2800,'\r\n\r\nThe','83811843'),(2801,'late','83811843'),(2802,'Czech','83811843'),(2803,'King','83811843'),(2804,'Przemysl','83811843'),(2805,'Otakar','83811843'),(2806,'II','83811843'),(2807,'was','83811843'),(2808,'succeeded','83811843'),(2809,'by','83811843'),(2810,'his','83811843'),(2811,'son','83811843'),(2812,'Wenceslas','83811843'),(2813,'II','83811843'),(2814,'12781305','83811843'),(2815,'Under','83811843'),(2816,'his','83811843'),(2817,'reign','83811843'),(2818,'the','83811843'),(2819,'mining','83811843'),(2820,'of','83811843'),(2821,'Czech','83811843'),(2822,'silver','83811843'),(2823,'at','83811843'),(2824,'Kutna','83811843'),(2825,'Hora','83811843'),(2826,'and','83811843'),(2827,'the','83811843'),(2828,'minting','83811843'),(2829,'of','83811843'),(2830,'the','83811843'),(2831,'Czech','83811843'),(2832,'silver','83811843'),(2833,'groschen','83811843'),(2834,'','83811843'),(2835,'one','83811843'),(2836,'of','83811843'),(2837,'the','83811843'),(2838,'hardest','83811843'),(2839,'European','83811843'),(2840,'currencies','83811843'),(2841,'of','83811843'),(2842,'the','83811843'),(2843,'time','83811843'),(2844,'','83811843'),(2845,'flourished','83811843'),(2846,'Wenceslas','83811843'),(2847,'II','83811843'),(2848,'also','83811843'),(2849,'created','83811843'),(2850,'a','83811843'),(2851,'confederation','83811843'),(2852,'between','83811843'),(2853,'Bohemia','83811843'),(2854,'and','83811843'),(2855,'Poland','83811843'),(2856,'For','83811843'),(2857,'a','83811843'),(2858,'short','83811843'),(2859,'time','83811843'),(2860,'Hungary','83811843'),(2861,'','83811843'),(2862,'under','83811843'),(2863,'the','83811843'),(2864,'rule','83811843'),(2865,'of','83811843'),(2866,'Matthias','83811843'),(2867,'Czak','83811843'),(2868,'Trenciansky','83811843'),(2869,'who','83811843'),(2870,'held','83811843'),(2871,'absolute','83811843'),(2872,'rule','83811843'),(2873,'over','83811843'),(2874,'most','83811843'),(2875,'of','83811843'),(2876,'Slovakia','83811843'),(2877,'as','83811843'),(2878,'well','83811843'),(2879,'','83811843'),(2880,'also','83811843'),(2881,'joined','83811843'),(2882,'this','83811843'),(2883,'confederation','83811843'),(2884,'\r\n\r\nThe','83811843'),(2885,'PolishCzech','83811843'),(2886,'union','83811843'),(2887,'was','83811843'),(2888,'strengthened','83811843'),(2889,'under','83811843'),(2890,'the','83811843'),(2891,'brief','83811843'),(2892,'rule','83811843'),(2893,'of','83811843'),(2894,'Wenceslas','83811843'),(2895,'III','83811843'),(2896,'Had','83811843'),(2897,'it','83811843'),(2898,'survived','83811843'),(2899,'it','83811843'),(2900,'might','83811843'),(2901,'have','83811843'),(2902,'contributed','83811843'),(2903,'to','83811843'),(2904,'the','83811843'),(2905,'creation','83811843'),(2906,'of','83811843'),(2907,'a','83811843'),(2908,'more','83811843'),(2909,'advanced','83811843'),(2910,'region','83811843'),(2911,'in','83811843'),(2912,'Europe','83811843'),(2913,'as','83811843'),(2914,'the','83811843'),(2915,'earlier','83811843'),(2916,'Czech','83811843'),(2917,'Austrian','83811843'),(2918,'union','83811843'),(2919,'had','83811843'),(2920,'However','83811843'),(2921,'this','83811843'),(2922,'was','83811843'),(2923,'precluded','83811843'),(2924,'by','83811843'),(2925,'the','83811843'),(2926,'death','83811843'),(2927,'of','83811843'),(2928,'young','83811843'),(2929,'Wenceslas','83811843'),(2930,'III','83811843'),(2931,'in','83811843'),(2932,'1306','83811843'),(2933,'when','83811843'),(2934,'he','83811843'),(2935,'was','83811843'),(2936,'just','83811843'),(2937,'17','83811843'),(2938,'years','83811843'),(2939,'old','83811843'),(2940,'Wenceslas','83811843'),(2941,'III','83811843'),(2942,'was','83811843'),(2943,'the','83811843'),(2944,'last','83811843'),(2945,'male','83811843'),(2946,'member','83811843'),(2947,'of','83811843'),(2948,'the','83811843'),(2949,'Przemyslids','83811843'),(2950,'line','83811843'),(2951,'and','83811843'),(2952,'after','83811843'),(2953,'his','83811843'),(2954,'death','83811843'),(2955,'the','83811843'),(2956,'CzechPolish','83811843'),(2957,'union','83811843'),(2958,'fell','83811843'),(2959,'apart\r\n\r\n\r\nWith','83811843'),(2960,'the','83811843'),(2961,'demise','83811843'),(2962,'of','83811843'),(2963,'Wenceslas','83811843'),(2964,'III','83811843'),(2965,'the','83811843'),(2966,'last','83811843'),(2967,'of','83811843'),(2968,'the','83811843'),(2969,'Przemyslid','83811843'),(2970,'rulers','83811843'),(2971,'of','83811843'),(2972,'the','83811843'),(2973,'Czech','83811843'),(2974,'lands','83811843'),(2975,'the','83811843'),(2976,'difficult','83811843'),(2977,'question','83811843'),(2978,'of','83811843'),(2979,'who','83811843'),(2980,'should','83811843'),(2981,'rule','83811843'),(2982,'next','83811843'),(2983,'had','83811843'),(2984,'to','83811843'),(2985,'be','83811843'),(2986,'answered','83811843'),(2987,'And','83811843'),(2988,'answered','83811843'),(2989,'it','83811843'),(2990,'was','83811843'),(2991,'','83811843'),(2992,'by','83811843'),(2993,'14yearold','83811843'),(2994,'John','83811843'),(2995,'of','83811843'),(2996,'Luxembourg','83811843'),(2997,'the','83811843'),(2998,'first','83811843'),(2999,'of','83811843'),(3000,'the','83811843'),(3001,'Luxembourgs','83811843'),(3002,'to','83811843'),(3003,'occupy','83811843'),(3004,'the','83811843'),(3005,'Czech','83811843'),(3006,'throne','83811843'),(3007,'13101437','83811843'),(3008,'John','83811843'),(3009,'of','83811843'),(3010,'Luxembourg','83811843'),(3011,'gained','83811843'),(3012,'this','83811843'),(3013,'position','83811843'),(3014,'with','83811843'),(3015,'the','83811843'),(3016,'support','83811843'),(3017,'of','83811843'),(3018,'the','83811843'),(3019,'Czech','83811843'),(3020,'nobility','83811843'),(3021,'by','83811843'),(3022,'marrying','83811843'),(3023,'18yearold','83811843'),(3024,'Eliska','83811843'),(3025,'Przemyslova','83811843'),(3026,'the','83811843'),(3027,'sister','83811843'),(3028,'of','83811843'),(3029,'the','83811843'),(3030,'late','83811843'),(3031,'Wenceslas','83811843'),(3032,'III','83811843'),(3033,'\r\n\r\nUnder','83811843'),(3034,'John','83811843'),(3035,'of','83811843'),(3036,'Luxembourgs','83811843'),(3037,'rule','83811843'),(3038,'more','83811843'),(3039,'territories','83811843'),(3040,'','83811843'),(3041,'including','83811843'),(3042,'the','83811843'),(3043,'regions','83811843'),(3044,'of','83811843'),(3045,'Cheb','83811843'),(3046,'Lusatia','83811843'),(3047,'and','83811843'),(3048,'Silesia','83811843'),(3049,'','83811843'),(3050,'were','83811843'),(3051,'joined','83811843'),(3052,'to','83811843'),(3053,'Bohemia','83811843'),(3054,'All','83811843'),(3055,'of','83811843'),(3056,'these','83811843'),(3057,'regions','83811843'),(3058,'together','83811843'),(3059,'under','83811843'),(3060,'the','83811843'),(3061,'rule','83811843'),(3062,'of','83811843'),(3063,'John','83811843'),(3064,'of','83811843'),(3065,'Luxembourg','83811843'),(3066,'came','83811843'),(3067,'to','83811843'),(3068,'be','83811843'),(3069,'known','83811843'),(3070,'as','83811843'),(3071,'the','83811843'),(3072,'Lands','83811843'),(3073,'of','83811843'),(3074,'the','83811843'),(3075,'Czech','83811843'),(3076,'Crown','83811843'),(3077,'So','83811843'),(3078,'you','83811843'),(3079,'see','83811843'),(3080,'there','83811843'),(3081,'never','83811843'),(3082,'was','83811843'),(3083,'an','83811843'),(3084,'easy','83811843'),(3085,'oneword','83811843'),(3086,'way','83811843'),(3087,'like','83811843'),(3088,'Czechia','83811843'),(3089,'to','83811843'),(3090,'describe','83811843'),(3091,'this','83811843'),(3092,'part','83811843'),(3093,'of','83811843'),(3094,'the','83811843'),(3095,'world','83811843'),(3096,'not','83811843'),(3097,'even','83811843'),(3098,'in','83811843'),(3099,'way','83811843'),(3100,'back','83811843'),(3101,'in','83811843'),(3102,'the','83811843'),(3103,'14th','83811843'),(3104,'century','83811843'),(3105,'\r\n\r\nJohn','83811843'),(3106,'of','83811843'),(3107,'Luxembourg','83811843'),(3108,'was','83811843'),(3109,'a','83811843'),(3110,'good','83811843'),(3111,'king','83811843'),(3112,'but','83811843'),(3113,'he','83811843'),(3114,'had','83811843'),(3115,'a','83811843'),(3116,'fatal','83811843'),(3117,'weakness','83811843'),(3119,'chivalry','83811843'),(3120,'knighthood','83811843'),(3121,'honour','83811843'),(3122,'','83811843'),(3123,'and','83811843'),(3124,'especially','83811843'),(3125,'for','83811843'),(3126,'battles','83811843'),(3127,'He','83811843'),(3128,'loved','83811843'),(3129,'to','83811843'),(3130,'fight','83811843'),(3131,'When','83811843'),(3132,'there','83811843'),(3133,'werent','83811843'),(3134,'any','83811843'),(3135,'battles','83811843'),(3136,'in','83811843'),(3137,'his','83811843'),(3138,'immediate','83811843'),(3139,'neighborhood','83811843'),(3140,'he','83811843'),(3141,'went','83811843'),(3142,'abroad','83811843'),(3143,'to','83811843'),(3144,'help','83811843'),(3145,'his','83811843'),(3146,'friends','83811843'),(3147,'fight','83811843'),(3148,'their','83811843'),(3149,'battles','83811843'),(3150,'And','83811843'),(3151,'so','83811843'),(3152,'it','83811843'),(3153,'happened','83811843'),(3154,'that','83811843'),(3155,'he','83811843'),(3156,'fell','83811843'),(3157,'at','83811843'),(3158,'the','83811843'),(3159,'battle','83811843'),(3160,'of','83811843'),(3161,'Crecy','83811843'),(3162,'in','83811843'),(3163,'1346','83811843'),(3164,'fighting','83811843'),(3165,'on','83811843'),(3166,'the','83811843'),(3167,'side','83811843'),(3168,'of','83811843'),(3169,'his','83811843'),(3170,'French','83811843'),(3171,'friend','83811843'),(3172,'and','83811843'),(3173,'distant','83811843'),(3174,'relative','83811843'),(3175,'Charles','83811843'),(3176,'against','83811843'),(3177,'the','83811843'),(3178,'Black','83811843'),(3179,'Prince','83811843'),(3180,'And','83811843'),(3181,'so','83811843'),(3182,'he','83811843'),(3183,'was','83811843'),(3184,'succeeded','83811843'),(3185,'by','83811843'),(3186,'his','83811843'),(3187,'young','83811843'),(3188,'son','83811843'),(3189,'Charles','83811843'),(3190,'IV','83811843'),(3191,'\r\n\r\n','83811843'),(3192,'Charles','83811843'),(3193,'IV','83811843'),(3194,'was','83811843'),(3195,'just','83811843'),(3196,'as','83811843'),(3197,'noble','83811843'),(3198,'','83811843'),(3199,'but','83811843'),(3200,'much','83811843'),(3201,'more','83811843'),(3202,'practical','83811843'),(3203,'than','83811843'),(3204,'his','83811843'),(3205,'caravanting','83811843'),(3206,'father','83811843'),(3207,'had','83811843'),(3208,'been','83811843'),(3209,'and','83811843'),(3210,'he','83811843'),(3211,'took','83811843'),(3212,'a','83811843'),(3213,'keen','83811843'),(3214,'interest','83811843'),(3215,'in','83811843'),(3216,'all','83811843'),(3217,'aspects','83811843'),(3218,'of','83811843'),(3219,'rule','83811843'),(3220,'over','83811843'),(3221,'the','83811843'),(3222,'Czech','83811843'),(3223,'lands','83811843'),(3224,'Charles','83811843'),(3225,'IV','83811843'),(3226,'was','83811843'),(3227,'not','83811843'),(3228,'really','83811843'),(3229,'named','83811843'),(3230,'Charles','83811843'),(3231,'He','83811843'),(3232,'was','83811843'),(3233,'named','83811843'),(3234,'Wenceslas','83811843'),(3235,'IV','83811843'),(3236,'','83811843'),(3237,'but','83811843'),(3238,'he','83811843'),(3239,'had','83811843'),(3240,'been','83811843'),(3241,'reared','83811843'),(3242,'at','83811843'),(3243,'the','83811843'),(3244,'French','83811843'),(3245,'court','83811843'),(3246,'and','83811843'),(3247,'everyone','83811843'),(3248,'there','83811843'),(3249,'called','83811843'),(3250,'him','83811843'),(3251,'Charles','83811843'),(3252,'and','83811843'),(3253,'so','83811843'),(3254,'the','83811843'),(3255,'name','83811843'),(3256,'stuck','83811843'),(3257,'His','83811843'),(3258,'son','83811843'),(3259,'who','83811843'),(3260,'succeeded','83811843'),(3261,'him','83811843'),(3262,'on','83811843'),(3263,'the','83811843'),(3264,'Czech','83811843'),(3265,'throne','83811843'),(3266,'was','83811843'),(3267,'also','83811843'),(3268,'named','83811843'),(3269,'Wenceslas','83811843'),(3270,'IV','83811843'),(3271,'and','83811843'),(3272,'this','83811843'),(3273,'sometimes','83811843'),(3274,'leads','83811843'),(3275,'to','83811843'),(3276,'some','83811843'),(3277,'confusion','83811843'),(3278,'When','83811843'),(3279,'Charles','83811843'),(3280,'IV','83811843'),(3281,'came','83811843'),(3282,'to','83811843'),(3283,'power','83811843'),(3284,'he','83811843'),(3285,'was','83811843'),(3286,'still','83811843'),(3287,'very','83811843'),(3288,'young','83811843'),(3289,'Since','83811843'),(3290,'hed','83811843'),(3291,'been','83811843'),(3292,'raised','83811843'),(3293,'in','83811843'),(3294,'France','83811843'),(3295,'he','83811843'),(3296,'didnt','83811843'),(3297,'speak','83811843'),(3298,'Czech','83811843'),(3299,'Wicked','83811843'),(3300,'advisors','83811843'),(3301,'surrounded','83811843'),(3302,'the','83811843'),(3303,'young','83811843'),(3304,'king','83811843'),(3305,'and','83811843'),(3306,'attempted','83811843'),(3307,'to','83811843'),(3308,'usurp','83811843'),(3309,'the','83811843'),(3310,'real','83811843'),(3311,'rule','83811843'),(3312,'of','83811843'),(3313,'Bohemia','83811843'),(3314,'while','83811843'),(3315,'leaving','83811843'),(3316,'young','83811843'),(3317,'Charles','83811843'),(3318,'IV','83811843'),(3319,'in','83811843'),(3320,'place','83811843'),(3321,'as','83811843'),(3322,'a','83811843'),(3323,'figurehead','83811843'),(3324,'\r\n\r\nCharles','83811843'),(3325,'IV','83811843'),(3326,'','83811843'),(3327,'may','83811843'),(3328,'have','83811843'),(3329,'been','83811843'),(3330,'young','83811843'),(3331,'but','83811843'),(3332,'he','83811843'),(3333,'was','83811843'),(3334,'no','83811843'),(3335,'dummy','83811843'),(3336,'He','83811843'),(3337,'spoke','83811843'),(3338,'5','83811843'),(3339,'languages','83811843'),(3340,'fluently','83811843'),(3341,'at','83811843'),(3342,'a','83811843'),(3343,'time','83811843'),(3344,'when','83811843'),(3345,'many','83811843'),(3346,'crowned','83811843'),(3347,'heads','83811843'),(3348,'could','83811843'),(3349,'not','83811843'),(3350,'even','83811843'),(3351,'read','83811843'),(3352,'and','83811843'),(3353,'write','83811843'),(3354,'and','83811843'),(3355,'he','83811843'),(3356,'was','83811843'),(3357,'a','83811843'),(3358,'masterful','83811843'),(3359,'diplomat','83811843'),(3360,'He','83811843'),(3361,'also','83811843'),(3362,'had','83811843'),(3363,'friends','83811843'),(3364,'in','83811843'),(3365,'high','83811843'),(3366,'places','83811843'),(3367,'','83811843'),(3368,'Pope','83811843'),(3369,'Klement','83811843'),(3370,'who','83811843'),(3371,'was','83811843'),(3372,'elected','83811843'),(3373,'during','83811843'),(3374,'Charles','83811843'),(3375,'IVs','83811843'),(3376,'reign','83811843'),(3377,'had','83811843'),(3378,'been','83811843'),(3379,'the','83811843'),(3380,'Czech','83811843'),(3381,'sovereigns','83811843'),(3382,'tutor','83811843'),(3383,'at','83811843'),(3384,'the','83811843'),(3385,'court','83811843'),(3386,'in','83811843'),(3387,'Paris','83811843'),(3388,'\r\n\r\nYoung','83811843'),(3389,'Charles','83811843'),(3390,'IV','83811843'),(3391,'saw','83811843'),(3392,'through','83811843'),(3393,'the','83811843'),(3394,'transparent','83811843'),(3395,'plans','83811843'),(3396,'of','83811843'),(3397,'the','83811843'),(3398,'wicked','83811843'),(3399,'advisors','83811843'),(3400,'who','83811843'),(3401,'surrounded','83811843'),(3402,'him','83811843'),(3403,'He','83811843'),(3404,'quickly','83811843'),(3405,'learned','83811843'),(3406,'Czech','83811843'),(3407,'and','83811843'),(3408,'took','83811843'),(3409,'over','83811843'),(3410,'rule','83811843'),(3411,'of','83811843'),(3412,'his','83811843'),(3413,'own','83811843'),(3414,'land','83811843'),(3415,'himself','83811843'),(3416,'\r\n\r\nCharles','83811843'),(3417,'IV','83811843'),(3418,'was','83811843'),(3419,'very','83811843'),(3420,'clever','83811843'),(3421,'very','83811843'),(3422,'devout','83811843'),(3423,'and','83811843'),(3424,'very','83811843'),(3425,'savvy','83811843'),(3426,'He','83811843'),(3427,'was','83811843'),(3428,'also','83811843'),(3429,'a','83811843'),(3430,'lover','83811843'),(3431,'of','83811843'),(3432,'art','83811843'),(3433,'and','83811843'),(3434,'a','83811843'),(3435,'collector','83811843'),(3436,'of','83811843'),(3437,'holy','83811843'),(3438,'relics','83811843'),(3439,'which','83811843'),(3440,'he','83811843'),(3441,'kept','83811843'),(3442,'under','83811843'),(3443,'lock','83811843'),(3444,'and','83811843'),(3445,'key','83811843'),(3446,'all','83811843'),(3447,'year','83811843'),(3448,'long','83811843'),(3449,'except','83811843'),(3450,'for','83811843'),(3451,'Easter','83811843'),(3452,'when','83811843'),(3453,'he','83811843'),(3454,'paraded','83811843'),(3455,'them','83811843'),(3456,'through','83811843'),(3457,'the','83811843'),(3458,'country','83811843'),(3459,'like','83811843'),(3460,'a','83811843'),(3461,'travelling','83811843'),(3462,'circus','83811843'),(3463,'\r\n\r\nThe','83811843'),(3464,'medieval','83811843'),(3465,'Czech','83811843'),(3466,'state','83811843'),(3467,'reached','83811843'),(3468,'the','83811843'),(3469,'zenith','83811843'),(3470,'of','83811843'),(3471,'its','83811843'),(3472,'power','83811843'),(3473,'and','83811843'),(3474,'importance','83811843'),(3475,'Charles','83811843'),(3476,'IV','83811843'),(3477,'He','83811843'),(3478,'was','83811843'),(3479,'the','83811843'),(3480,'King','83811843'),(3481,'of','83811843'),(3482,'Bohemia','83811843'),(3483,'later','83811843'),(3484,'also','83811843'),(3485,'Holy','83811843'),(3486,'Roman','83811843'),(3487,'Emperor','83811843'),(3488,'and','83811843'),(3489,'today','83811843'),(3490,'he','83811843'),(3491,'is','83811843'),(3492,'known','83811843'),(3493,'as','83811843'),(3494,'the','83811843'),(3495,'Father','83811843'),(3496,'of','83811843'),(3497,'the','83811843'),(3498,'Czech','83811843'),(3499,'Nation','83811843'),(3500,'\r\n\r\n','83811843'),(3501,'Charles','83811843'),(3502,'was','83811843'),(3503,'a','83811843'),(3504,'very','83811843'),(3505,'good','83811843'),(3506,'king','83811843'),(3507,'and','83811843'),(3508,'he','83811843'),(3509,'paid','83811843'),(3510,'attention','83811843'),(3511,'to','83811843'),(3512,'detail','83811843'),(3513,'It','83811843'),(3514,'was','83811843'),(3515,'he','83811843'),(3516,'who','83811843'),(3517,'made','83811843'),(3518,'sure','83811843'),(3519,'that','83811843'),(3520,'the','83811843'),(3521,'status','83811843'),(3522,'of','83811843'),(3523,'the','83811843'),(3524,'Lands','83811843'),(3525,'of','83811843'),(3526,'the','83811843'),(3527,'Czech','83811843'),(3528,'Crown','83811843'),(3529,'','83811843'),(3530,'the','83811843'),(3531,'territories','83811843'),(3532,'his','83811843'),(3533,'father','83811843'),(3534,'had','83811843'),(3535,'gathered','83811843'),(3536,'together','83811843'),(3537,'under','83811843'),(3538,'his','83811843'),(3539,'rule','83811843'),(3540,'','83811843'),(3541,'was','83811843'),(3542,'legally','83811843'),(3543,'fixed','83811843'),(3544,'this','83811843'),(3545,'task','83811843'),(3546,'was','83811843'),(3547,'made','83811843'),(3548,'all','83811843'),(3549,'the','83811843'),(3550,'easier','83811843'),(3551,'since','83811843'),(3552,'he','83811843'),(3553,'was','83811843'),(3554,'Holy','83811843'),(3555,'Roman','83811843'),(3556,'Emperor','83811843'),(3557,'He','83811843'),(3558,'initiated','83811843'),(3559,'a','83811843'),(3560,'number','83811843'),(3561,'of','83811843'),(3562,'building','83811843'),(3563,'projects','83811843'),(3564,'in','83811843'),(3565,'his','83811843'),(3566,'reign','83811843'),(3567,'especially','83811843'),(3568,'in','83811843'),(3569,'Prague','83811843'),(3570,'It','83811843'),(3571,'was','83811843'),(3572,'at','83811843'),(3573,'his','83811843'),(3574,'behest','83811843'),(3575,'that','83811843'),(3576,'Charles','83811843'),(3577,'Bridge','83811843'),(3578,'and','83811843'),(3579,'St','83811843'),(3580,'Vitus','83811843'),(3581,'Cathedral','83811843'),(3582,'were','83811843'),(3583,'built','83811843'),(3584,'and','83811843'),(3585,'the','83811843'),(3586,'Hunger','83811843'),(3587,'Wall','83811843'),(3588,'that','83811843'),(3589,'he','83811843'),(3590,'commissioned','83811843'),(3591,'remnants','83811843'),(3592,'of','83811843'),(3593,'which','83811843'),(3594,'still','83811843'),(3595,'stand','83811843'),(3596,'today','83811843'),(3597,'on','83811843'),(3598,'Petrin','83811843'),(3599,'Hill','83811843'),(3600,'in','83811843'),(3601,'Prague','83811843'),(3602,'is','83811843'),(3603,'thought','83811843'),(3604,'to','83811843'),(3605,'be','83811843'),(3606,'the','83811843'),(3607,'first','83811843'),(3608,'worksproject','83811843'),(3609,'in','83811843'),(3610,'the','83811843'),(3611,'world','83811843'),(3612,'as','83811843'),(3613,'he','83811843'),(3614,'had','83811843'),(3615,'it','83811843'),(3616,'built','83811843'),(3617,'to','83811843'),(3618,'create','83811843'),(3619,'employment','83811843'),(3620,'for','83811843'),(3621,'the','83811843'),(3622,'poor','83811843'),(3623,'and','83811843'),(3624,'hungry','83811843'),(3625,'masses','83811843'),(3626,'hence','83811843'),(3627,'the','83811843'),(3628,'name','83811843'),(3629,'','83811843'),(3630,'Charles','83811843'),(3631,'IV','83811843'),(3632,'personally','83811843'),(3633,'planned','83811843'),(3634,'Pragues','83811843'),(3635,'New','83811843'),(3636,'Town','83811843'),(3637,'district','83811843'),(3638,'where','83811843'),(3639,'Charles','83811843'),(3640,'Square','83811843'),(3641,'','83811843'),(3642,'which','83811843'),(3643,'is','83811843'),(3644,'also','83811843'),(3645,'named','83811843'),(3646,'for','83811843'),(3647,'him','83811843'),(3648,'','83811843'),(3649,'lies','83811843'),(3650,'Karlstejn','83811843'),(3651,'Castle','83811843'),(3652,'and','83811843'),(3653,'Karlovy','83811843'),(3654,'Vary','83811843'),(3655,'Carlsbad','83811843'),(3656,'are','83811843'),(3657,'also','83811843'),(3658,'named','83811843'),(3659,'for','83811843'),(3660,'Charles','83811843'),(3661,'IV','83811843'),(3662,'\r\n\r\nMany','83811843'),(3663,'of','83811843'),(3664,'the','83811843'),(3665,'building','83811843'),(3666,'projects','83811843'),(3667,'initiated','83811843'),(3668,'by','83811843'),(3669,'Charles','83811843'),(3670,'IV','83811843'),(3671,'still','83811843'),(3672,'stand','83811843'),(3673,'and','83811843'),(3674,'most','83811843'),(3675,'are','83811843'),(3676,'perfect','83811843'),(3677,'examples','83811843'),(3678,'of','83811843'),(3679,'the','83811843'),(3680,'Gothic','83811843'),(3681,'style','83811843'),(3682,'of','83811843'),(3683,'architecture','83811843'),(3684,'which','83811843'),(3685,'is','83811843'),(3686,'characterized','83811843'),(3687,'by','83811843'),(3688,'clean','83811843'),(3689,'simple','83811843'),(3690,'lines','83811843'),(3691,'and','83811843'),(3692,'solid','83811843'),(3693,'structure','83811843'),(3694,'','83811843'),(3695,'like','83811843'),(3696,'the','83811843'),(3697,'Charles','83811843'),(3698,'Bridge','83811843'),(3699,'and','83811843'),(3700,'its','83811843'),(3701,'towers','83811843'),(3702,'the','83811843'),(3703,'Carolinum','83811843'),(3704,'or','83811843'),(3705,'the','83811843'),(3706,'OldNew','83811843'),(3707,'Synagogue','83811843'),(3708,'\r\n\r\n','83811843'),(3709,'Charles','83811843'),(3710,'IV','83811843'),(3711,'also','83811843'),(3712,'founded','83811843'),(3713,'Charles','83811843'),(3714,'University','83811843'),(3715,'the','83811843'),(3716,'first','83811843'),(3717,'center','83811843'),(3718,'of','83811843'),(3719,'higher','83811843'),(3720,'education','83811843'),(3721,'in','83811843'),(3722,'all','83811843'),(3723,'of','83811843'),(3724,'Central','83811843'),(3725,'Europe','83811843'),(3726,'During','83811843'),(3727,'his','83811843'),(3728,'reign','83811843'),(3729,'Prague','83811843'),(3730,'was','83811843'),(3731,'the','83811843'),(3732,'capital','83811843'),(3733,'of','83811843'),(3734,'the','83811843'),(3735,'Holy','83811843'),(3736,'Roman','83811843'),(3737,'Empire','83811843'),(3738,'a','83811843'),(3739,'gilded','83811843'),(3740,'sign','83811843'),(3741,'on','83811843'),(3742,'the','83811843'),(3743,'Old','83811843'),(3744,'Town','83811843'),(3745,'Hall','83811843'),(3746,'still','83811843'),(3747,'proclaims','83811843'),(3748,'Praga','83811843'),(3749,'Caput','83811843'),(3750,'Regni','83811843'),(3751,'today','83811843'),(3752,'and','83811843'),(3753,'he','83811843'),(3754,'successfully','83811843'),(3755,'lobbied','83811843'),(3756,'to','83811843'),(3757,'have','83811843'),(3758,'the','83811843'),(3759,'Prague','83811843'),(3760,'bishopric','83811843'),(3761,'made','83811843'),(3762,'an','83811843'),(3763,'archbishopric','83811843'),(3764,'this','83811843'),(3765,'task','83811843'),(3766,'was','83811843'),(3767,'actually','83811843'),(3768,'quite','83811843'),(3769,'easy','83811843'),(3770,'as','83811843'),(3771,'the','83811843'),(3772,'privelege','83811843'),(3773,'was','83811843'),(3774,'granted','83811843'),(3775,'him','83811843'),(3776,'by','83811843'),(3777,'his','83811843'),(3778,'former','83811843'),(3779,'tutor','83811843'),(3780,'now','83811843'),(3781,'the','83811843'),(3782,'Pope','83811843'),(3783,'\r\n\r\nIt','83811843'),(3784,'was','83811843'),(3785,'Charles','83811843'),(3786,'IV','83811843'),(3787,'too','83811843'),(3788,'who','83811843'),(3789,'brought','83811843'),(3790,'the','83811843'),(3791,'cultivation','83811843'),(3792,'of','83811843'),(3793,'the','83811843'),(3794,'grape','83811843'),(3795,'and','83811843'),(3796,'the','83811843'),(3797,'wine','83811843'),(3798,'industry','83811843'),(3799,'to','83811843'),(3800,'the','83811843'),(3801,'beerdrinking','83811843'),(3802,'Czech','83811843'),(3803,'lands','83811843'),(3804,'That','83811843'),(3805,'isnt','83811843'),(3806,'to','83811843'),(3807,'say','83811843'),(3808,'that','83811843'),(3809,'he','83811843'),(3810,'neglected','83811843'),(3811,'the','83811843'),(3812,'beer','83811843'),(3813,'industry','83811843'),(3814,'','83811843'),(3815,'under','83811843'),(3816,'his','83811843'),(3817,'reign','83811843'),(3818,'stiff','83811843'),(3819,'prison','83811843'),(3820,'sentences','83811843'),(3821,'were','83811843'),(3822,'meted','83811843'),(3823,'out','83811843'),(3824,'to','83811843'),(3825,'those','83811843'),(3826,'caught','83811843'),(3827,'exporting','83811843'),(3828,'cuttings','83811843'),(3829,'of','83811843'),(3830,'prize','83811843'),(3831,'Czech','83811843'),(3832,'hops','83811843'),(3833,'','83811843'),(3834,'essential','83811843'),(3835,'to','83811843'),(3836,'the','83811843'),(3837,'brewing','83811843'),(3838,'of','83811843'),(3839,'great','83811843'),(3840,'Czech','83811843'),(3841,'beer','83811843'),(3842,'','83811843'),(3843,'abroad','83811843'),(3844,'\r\n\r\nCharles','83811843'),(3845,'IV','83811843'),(3846,'had','83811843'),(3847,'no','83811843'),(3848,'fewer','83811843'),(3849,'than','83811843'),(3850,'four','83811843'),(3851,'wives','83811843'),(3852,'and','83811843'),(3853,'any','83811843'),(3854,'number','83811843'),(3855,'of','83811843'),(3856,'progeny','83811843'),(3857,'both','83811843'),(3858,'legitimate','83811843'),(3859,'and','83811843'),(3860,'il','83811843'),(3861,'Of','83811843'),(3862,'these','83811843'),(3863,'his','83811843'),(3864,'oldest','83811843'),(3865,'legitimate','83811843'),(3866,'son','83811843'),(3867,'Vaclav','83811843'),(3868,'IV','83811843'),(3869,'was','83811843'),(3870,'naturally','83811843'),(3871,'chosen','83811843'),(3872,'as','83811843'),(3873,'his','83811843'),(3874,'successor','83811843'),(3875,'\r\n\r\nWenceslas','83811843'),(3876,'IV','83811843'),(3877,'13781419','83811843'),(3878,'son','83811843'),(3879,'of','83811843'),(3880,'Charles','83811843'),(3881,'IV','83811843'),(3882,'and','83811843'),(3883,'heir','83811843'),(3884,'to','83811843'),(3885,'the','83811843'),(3886,'Czech','83811843'),(3887,'and','83811843'),(3888,'Roman','83811843'),(3889,'crowns','83811843'),(3890,'was','83811843'),(3891,'a','83811843'),(3892,'weak','83811843'),(3893,'and','83811843'),(3894,'ineffective','83811843'),(3895,'ruler','83811843'),(3896,'He','83811843'),(3897,'was','83811843'),(3898,'also','83811843'),(3899,'mean','83811843'),(3900,'a','83811843'),(3901,'drunk','83811843'),(3902,'and','83811843'),(3903,'wildly','83811843'),(3904,'unpopular','83811843'),(3905,'He','83811843'),(3906,'was','83811843'),(3907,'imprisoned','83811843'),(3908,'twice','83811843'),(3909,'during','83811843'),(3910,'his','83811843'),(3911,'reign','83811843'),(3912,'Had','83811843'),(3913,'times','83811843'),(3914,'been','83811843'),(3915,'different','83811843'),(3916,'this','83811843'),(3917,'may','83811843'),(3918,'not','83811843'),(3919,'have','83811843'),(3920,'mattered','83811843'),(3921,'much','83811843'),(3922,'As','83811843'),(3923,'luck','83811843'),(3924,'would','83811843'),(3925,'have','83811843'),(3926,'it','83811843'),(3927,'however','83811843'),(3928,'he','83811843'),(3929,'became','83811843'),(3930,'king','83811843'),(3931,'during','83811843'),(3932,'a','83811843'),(3933,'particularly','83811843'),(3934,'turbulent','83811843'),(3935,'time','83811843'),(3936,'in','83811843'),(3937,'Czech','83811843'),(3938,'history','83811843'),(3939,'\r\n\r\n','83811843'),(3940,'Unfortunately','83811843'),(3941,'Wenceslas','83811843'),(3942,'IV','83811843'),(3943,'was','83811843'),(3944,'much','83811843'),(3945,'more','83811843'),(3946,'interested','83811843'),(3947,'in','83811843'),(3948,'drinking','83811843'),(3949,'than','83811843'),(3950,'in','83811843'),(3951,'ruling','83811843'),(3952,'He','83811843'),(3953,'was','83811843'),(3954,'terribly','83811843'),(3955,'spoiled','83811843'),(3956,'and','83811843'),(3957,'even','83811843'),(3958,'as','83811843'),(3959,'an','83811843'),(3960,'adult','83811843'),(3961,'he','83811843'),(3962,'would','83811843'),(3963,'throw','83811843'),(3964,'fits','83811843'),(3965,'when','83811843'),(3966,'people','83811843'),(3967,'didnt','83811843'),(3968,'do','83811843'),(3969,'exactly','83811843'),(3970,'as','83811843'),(3971,'he','83811843'),(3972,'wished','83811843'),(3973,'them','83811843'),(3974,'to','83811843'),(3975,'He','83811843'),(3976,'is','83811843'),(3977,'remembered','83811843'),(3978,'by','83811843'),(3979,'history','83811843'),(3980,'today','83811843'),(3981,'in','83811843'),(3982,'two','83811843'),(3983,'ways:','83811843'),(3984,'sometimes','83811843'),(3985,'as','83811843'),(3986,'a','83811843'),(3987,'wishy','83811843'),(3988,'washy','83811843'),(3989,'goodfornothing','83811843'),(3990,'drunkard','83811843'),(3991,'and','83811843'),(3992,'sometimes','83811843'),(3993,'as','83811843'),(3994,'a','83811843'),(3995,'benefactor','83811843'),(3996,'of','83811843'),(3997,'the','83811843'),(3998,'common','83811843'),(3999,'man','83811843'),(4000,'The','83811843'),(4001,'way','83811843'),(4002,'in','83811843'),(4003,'which','83811843'),(4004,'this','83811843'),(4005,'latter','83811843'),(4006,'reputation','83811843'),(4007,'was','83811843'),(4008,'earned','83811843'),(4009,'is','83811843'),(4010,'usually','83811843'),(4011,'explained','83811843'),(4012,'in','83811843'),(4013,'this','83811843'),(4014,'way:','83811843'),(4015,'Wenceslas','83811843'),(4016,'IV','83811843'),(4017,'used','83811843'),(4018,'to','83811843'),(4019,'go','83811843'),(4020,'around','83811843'),(4021,'Prague','83811843'),(4022,'dressed','83811843'),(4023,'as','83811843'),(4024,'a','83811843'),(4025,'commoner','83811843'),(4026,'He','83811843'),(4027,'would','83811843'),(4028,'go','83811843'),(4029,'to','83811843'),(4030,'pubs','83811843'),(4031,'and','83811843'),(4032,'shops','83811843'),(4033,'this','83811843'),(4034,'way','83811843'),(4035,'and','83811843'),(4036,'whenever','83811843'),(4037,'he','83811843'),(4038,'found','83811843'),(4039,'a','83811843'),(4040,'merchant','83811843'),(4041,'giving','83811843'),(4042,'the','83811843'),(4043,'public','83811843'),(4044,'short','83811843'),(4045,'measures','83811843'),(4046,'he','83811843'),(4047,'would','83811843'),(4048,'punish','83811843'),(4049,'them','83811843'),(4050,'by','83811843'),(4051,'having','83811843'),(4052,'them','83811843'),(4053,'thrown','83811843'),(4054,'off','83811843'),(4055,'Charles','83811843'),(4056,'Bridge','83811843'),(4057,'into','83811843'),(4058,'the','83811843'),(4059,'river','83811843'),(4060,'to','83811843'),(4061,'drown','83811843'),(4062,'If','83811843'),(4063,'this','83811843'),(4064,'legend','83811843'),(4065,'is','83811843'),(4066,'based','83811843'),(4067,'on','83811843'),(4068,'fact','83811843'),(4069,'then','83811843'),(4070,'it','83811843'),(4071,'is','83811843'),(4072,'probably','83811843'),(4073,'likely','83811843'),(4074,'that','83811843'),(4075,'Wenceslas','83811843'),(4076,'IV','83811843'),(4077,'pursued','83811843'),(4078,'this','83811843'),(4079,'hobby','83811843'),(4080,'not','83811843'),(4081,'so','83811843'),(4082,'much','83811843'),(4083,'to','83811843'),(4084,'help','83811843'),(4085,'the','83811843'),(4086,'common','83811843'),(4087,'man','83811843'),(4088,'but','83811843'),(4089,'rather','83811843'),(4090,'from','83811843'),(4091,'the','83811843'),(4092,'pleasure','83811843'),(4093,'he','83811843'),(4094,'derived','83811843'),(4095,'from','83811843'),(4096,'having','83811843'),(4097,'people','83811843'),(4098,'thrown','83811843'),(4099,'into','83811843'),(4100,'the','83811843'),(4101,'river','83811843'),(4102,'\r\n\r\n','83811843'),(4103,'\r\n\r\nProbably','83811843'),(4104,'the','83811843'),(4105,'most','83811843'),(4106,'famous','83811843'),(4107,'person','83811843'),(4108,'Wenceslas','83811843'),(4109,'IV','83811843'),(4110,'had','83811843'),(4111,'thrown','83811843'),(4112,'into','83811843'),(4113,'the','83811843'),(4114,'river','83811843'),(4115,'was','83811843'),(4116,'an','83811843'),(4117,'insignificant','83811843'),(4118,'court','83811843'),(4119,'clerk','83811843'),(4120,'by','83811843'),(4121,'name','83811843'),(4122,'of','83811843'),(4123,'John','83811843'),(4124,'of','83811843'),(4125,'Pomuk','83811843'),(4126,'During','83811843'),(4127,'the','83811843'),(4128,'CounterReformation','83811843'),(4129,'the','83811843'),(4130,'Catholic','83811843'),(4131,'Church','83811843'),(4132,'recovered','83811843'),(4133,'the','83811843'),(4134,'story','83811843'),(4135,'of','83811843'),(4136,'John','83811843'),(4137,'of','83811843'),(4138,'Pomuks','83811843'),(4139,'death','83811843'),(4140,'and','83811843'),(4141,'entirely','83811843'),(4142,'overhauled','83811843'),(4143,'it','83811843'),(4144,'','83811843'),(4145,'making','83811843'),(4146,'Johns','83811843'),(4147,'name','83811843'),(4148,'John','83811843'),(4149,'of','83811843'),(4150,'Nepomuk','83811843'),(4151,'making','83811843'),(4152,'his','83811843'),(4153,'job','83811843'),(4154,'the','83811843'),(4155,'confessor','83811843'),(4156,'to','83811843'),(4157,'the','83811843'),(4158,'Queen','83811843'),(4159,'instead','83811843'),(4160,'of','83811843'),(4161,'an','83811843'),(4162,'office','83811843'),(4163,'clerk','83811843'),(4164,'and','83811843'),(4165,'making','83811843'),(4166,'the','83811843'),(4167,'reason','83811843'),(4168,'for','83811843'),(4169,'his','83811843'),(4170,'execution','83811843'),(4171,'the','83811843'),(4172,'fact','83811843'),(4173,'that','83811843'),(4174,'John','83811843'),(4175,'refused','83811843'),(4176,'to','83811843'),(4177,'divulge','83811843'),(4178,'the','83811843'),(4179,'Queens','83811843'),(4180,'secrets','83811843'),(4181,'','83811843'),(4182,'told','83811843'),(4183,'in','83811843'),(4184,'Confession','83811843'),(4185,'','83811843'),(4186,'to','83811843'),(4187,'the','83811843'),(4188,'king','83811843'),(4189,'John','83811843'),(4190,'of','83811843'),(4191,'Nepumuk','83811843'),(4192,'was','83811843'),(4193,'eventually','83811843'),(4194,'made','83811843'),(4195,'a','83811843'),(4196,'saint','83811843'),(4197,'on','83811843'),(4198,'the','83811843'),(4199,'basis','83811843'),(4200,'of','83811843'),(4201,'this','83811843'),(4202,'story','83811843'),(4203,'but','83811843'),(4204,'the','83811843'),(4205,'Vatican','83811843'),(4206,'rescinded','83811843'),(4207,'the','83811843'),(4208,'decision','83811843'),(4209,'in','83811843'),(4210,'1961','83811843'),(4211,'explaining','83811843'),(4212,'that','83811843'),(4213,'testimony','83811843'),(4214,'of','83811843'),(4215,'his','83811843'),(4216,'miracles','83811843'),(4217,'and','83811843'),(4218,'other','83811843'),(4219,'evidence','83811843'),(4220,'of','83811843'),(4221,'his','83811843'),(4222,'deeds','83811843'),(4223,'was','83811843'),(4224,'fishy','83811843'),(4225,'','83811843'),(4226,'\r\n\r\nIts','83811843'),(4227,'hard','83811843'),(4228,'to','83811843'),(4229,'say','83811843'),(4230,'what','83811843'),(4231,'the','83811843'),(4232,'common','83811843'),(4233,'people','83811843'),(4234,'of','83811843'),(4235,'the','83811843'),(4236,'time','83811843'),(4237,'really','83811843'),(4238,'thought','83811843'),(4239,'of','83811843'),(4240,'Wenceslas','83811843'),(4241,'IV','83811843'),(4242,'as','83811843'),(4243,'common','83811843'),(4244,'people','83811843'),(4245,'dont','83811843'),(4246,'usually','83811843'),(4247,'have','83811843'),(4248,'much','83811843'),(4249,'of','83811843'),(4250,'a','83811843'),(4251,'say','83811843'),(4252,'in','83811843'),(4253,'the','83811843'),(4254,'writing','83811843'),(4255,'of','83811843'),(4256,'history','83811843'),(4257,'It','83811843'),(4258,'is','83811843'),(4259,'known','83811843'),(4260,'that','83811843'),(4261,'he','83811843'),(4262,'was','83811843'),(4263,'wildly','83811843'),(4264,'unpopular','83811843'),(4265,'with','83811843'),(4266,'the','83811843'),(4267,'nobility','83811843'),(4268,'who','83811843'),(4269,'had','83811843'),(4270,'him','83811843'),(4271,'imprisoned','83811843'),(4272,'not','83811843'),(4273,'once','83811843'),(4274,'but','83811843'),(4275,'several','83811843'),(4276,'times','83811843'),(4277,'during','83811843'),(4278,'his','83811843'),(4279,'reign','83811843'),(4280,'\r\n\r\nHe','83811843'),(4281,'wasnt','83811843'),(4282,'exactly','83811843'),(4283,'revered','83811843'),(4284,'by','83811843'),(4285,'his','83811843'),(4286,'brother','83811843'),(4287,'Sigismund','83811843'),(4288,'either','83811843'),(4289,'Even','83811843'),(4290,'as','83811843'),(4291,'the','83811843'),(4292,'careless','83811843'),(4293,'blood','83811843'),(4294,'of','83811843'),(4295,'his','83811843'),(4296,'grandfather','83811843'),(4297,'John','83811843'),(4298,'of','83811843'),(4299,'Luxembourg','83811843'),(4300,'coursed','83811843'),(4301,'through','83811843'),(4302,'Vaclav','83811843'),(4303,'IVs','83811843'),(4304,'veins','83811843'),(4305,'','83811843'),(4306,'so','83811843'),(4307,'did','83811843'),(4308,'the','83811843'),(4309,'powerhungry','83811843'),(4310,'blood','83811843'),(4311,'of','83811843'),(4312,'the','83811843'),(4313,'early','83811843'),(4314,'Przemyslide','83811843'),(4315,'rulers','83811843'),(4316,'flow','83811843'),(4317,'freely','83811843'),(4318,'through','83811843'),(4319,'the','83811843'),(4320,'arteries','83811843'),(4321,'of','83811843'),(4322,'Sigismund','83811843'),(4323,'In','83811843'),(4324,'short','83811843'),(4325,'he','83811843'),(4326,'wanted','83811843'),(4327,'to','83811843'),(4328,'be','83811843'),(4329,'king','83811843'),(4330,'and','83811843'),(4331,'it','83811843'),(4332,'was','83811843'),(4333,'he','83811843'),(4334,'who','83811843'),(4335,'was','83811843'),(4336,'behind','83811843'),(4337,'at','83811843'),(4338,'least','83811843'),(4339,'one','83811843'),(4340,'of','83811843'),(4341,'the','83811843'),(4342,'conspiracies','83811843'),(4343,'to','83811843'),(4344,'imprison','83811843'),(4345,'King','83811843'),(4346,'Vaclav','83811843'),(4347,'IV','83811843'),(4348,'','83811843'),(4349,'\r\n\r\nWhile','83811843'),(4350,'this','83811843'),(4351,'court','83811843'),(4352,'intrigue','83811843'),(4353,'was','83811843'),(4354,'going','83811843'),(4355,'on','83811843'),(4356,'things','83811843'),(4357,'couldnt','83811843'),(4358,'really','83811843'),(4359,'have','83811843'),(4360,'been','83811843'),(4361,'all','83811843'),(4362,'that','83811843'),(4363,'good','83811843'),(4364,'for','83811843'),(4365,'the','83811843'),(4366,'common','83811843'),(4367,'man','83811843'),(4368,'else','83811843'),(4369,'hed','83811843'),(4370,'not','83811843'),(4371,'have','83811843'),(4372,'been','83811843'),(4373,'spending','83811843'),(4374,'much','83811843'),(4375,'of','83811843'),(4376,'his','83811843'),(4377,'leisure','83811843'),(4378,'time','83811843'),(4379,'listening','83811843'),(4380,'to','83811843'),(4381,'the','83811843'),(4382,'rabblerousing','83811843'),(4383,'preachers','83811843'),(4384,'who','83811843'),(4385,'started','83811843'),(4386,'travelling','83811843'),(4387,'around','83811843'),(4388,'the','83811843'),(4389,'country','83811843'),(4390,'at','83811843'),(4391,'this','83811843'),(4392,'time','83811843'),(4393,'full','83811843'),(4394,'of','83811843'),(4395,'criticism','83811843'),(4396,'for','83811843'),(4397,'the','83811843'),(4398,'excesses','83811843'),(4399,'of','83811843'),(4400,'the','83811843'),(4401,'Catholic','83811843'),(4402,'Church','83811843'),(4403,'\r\n\r\nOne','83811843'),(4404,'such','83811843'),(4405,'religious','83811843'),(4406,'reformer','83811843'),(4407,'was','83811843'),(4408,'to','83811843'),(4409,'play','83811843'),(4410,'a','83811843'),(4411,'pivotal','83811843'),(4412,'though','83811843'),(4413,'posthumous','83811843'),(4414,'role','83811843'),(4415,'in','83811843'),(4416,'deciding','83811843'),(4417,'the','83811843'),(4418,'countrys','83811843'),(4419,'fate','83811843'),(4420,'for','83811843'),(4421,'the','83811843'),(4422,'next','83811843'),(4423,'several','83811843'),(4424,'hundred','83811843'),(4425,'years','83811843'),(4426,'\r\n\r\nJan','83811843'),(4427,'Hus','83811843'),(4428,'had','83811843'),(4429,'been','83811843'),(4430,'greatly','83811843'),(4431,'influenced','83811843'),(4432,'by','83811843'),(4433,'the','83811843'),(4434,'writings','83811843'),(4435,'of','83811843'),(4436,'John','83811843'),(4437,'Wycliffe','83811843'),(4438,'and','83811843'),(4439,'he','83811843'),(4440,'began','83811843'),(4441,'conducting','83811843'),(4442,'his','83811843'),(4443,'sermons','83811843'),(4444,'at','83811843'),(4445,'Bethlehem','83811843'),(4446,'Chapel','83811843'),(4447,'in','83811843'),(4448,'Prague','83811843'),(4449,'in','83811843'),(4450,'Czech','83811843'),(4451,'rather','83811843'),(4452,'than','83811843'),(4453,'in','83811843'),(4454,'Latin','83811843'),(4455,'so','83811843'),(4456,'that','83811843'),(4457,'the','83811843'),(4458,'common','83811843'),(4459,'man','83811843'),(4460,'could','83811843'),(4461,'understand','83811843'),(4462,'them','83811843'),(4463,'He','83811843'),(4464,'also','83811843'),(4465,'advocated','83811843'),(4466,'the','83811843'),(4467,'giving','83811843'),(4468,'of','83811843'),(4469,'communion','83811843'),(4470,'in','83811843'),(4471,'both','83811843'),(4472,'species','83811843'),(4473,'and','83811843'),(4474,'was','83811843'),(4475,'critical','83811843'),(4476,'of','83811843'),(4477,'the','83811843'),(4478,'church','83811843'),(4479,'for','83811843'),(4480,'its','83811843'),(4481,'excessive','83811843'),(4482,'policies','83811843'),(4483,'','83811843'),(4484,'of','83811843'),(4485,'amassing','83811843'),(4486,'wealth','83811843'),(4487,'selling','83811843'),(4488,'indulgences','83811843'),(4489,'and','83811843'),(4490,'allowing','83811843'),(4491,'the','83811843'),(4492,'rich','83811843'),(4493,'to','83811843'),(4494,'tithe','83811843'),(4495,'their','83811843'),(4496,'way','83811843'),(4497,'out','83811843'),(4498,'of','83811843'),(4499,'even','83811843'),(4500,'mortal','83811843'),(4501,'sins','83811843'),(4502,'\r\n\r\nEven','83811843'),(4503,'as','83811843'),(4504,'these','83811843'),(4505,'ideas','83811843'),(4506,'were','83811843'),(4507,'gaining','83811843'),(4508,'popularity','83811843'),(4509,'in','83811843'),(4510,'the','83811843'),(4511,'Czech','83811843'),(4512,'lands','83811843'),(4513,'they','83811843'),(4514,'were','83811843'),(4515,'becoming','83811843'),(4516,'most','83811843'),(4517,'wildly','83811843'),(4518,'unpopular','83811843'),(4519,'in','83811843'),(4520,'other','83811843'),(4521,'areas','83811843'),(4522,'of','83811843'),(4523,'the','83811843'),(4524,'Holy','83811843'),(4525,'Roman','83811843'),(4526,'Empire','83811843'),(4527,'especially','83811843'),(4528,'the','83811843'),(4529,'Vatican','83811843'),(4530,'This','83811843'),(4531,'led','83811843'),(4532,'to','83811843'),(4533,'the','83811843'),(4534,'burning','83811843'),(4535,'of','83811843'),(4536,'Master','83811843'),(4537,'Jan','83811843'),(4538,'Hus','83811843'),(4539,'at','83811843'),(4540,'the','83811843'),(4541,'stake','83811843'),(4542,'at','83811843'),(4543,'the','83811843'),(4544,'Council','83811843'),(4545,'at','83811843'),(4546,'Constance','83811843'),(4547,'on','83811843'),(4548,'July','83811843'),(4549,'6','83811843'),(4550,'1415','83811843'),(4551,'when','83811843'),(4552,'he','83811843'),(4553,'refused','83811843'),(4554,'to','83811843'),(4555,'recant','83811843'),(4556,'his','83811843'),(4557,'words','83811843'),(4558,'and','83811843'),(4559,'despite','83811843'),(4560,'that','83811843'),(4561,'he','83811843'),(4562,'had','83811843'),(4563,'letter','83811843'),(4564,'of','83811843'),(4565,'safe','83811843'),(4566,'conduct','83811843'),(4567,'from','83811843'),(4568,'Wenceslas','83811843'),(4569,'IVs','83811843'),(4570,'brother','83811843'),(4571,'Sigismund','83811843'),(4572,'\r\n\r\nThe','83811843'),(4573,'brutal','83811843'),(4574,'killing','83811843'),(4575,'of','83811843'),(4576,'Jan','83811843'),(4577,'Hus','83811843'),(4578,'only','83811843'),(4579,'served','83811843'),(4580,'to','83811843'),(4581,'incense','83811843'),(4582,'and','83811843'),(4583,'unite','83811843'),(4584,'his','83811843'),(4585,'followers','83811843'),(4586,'who','83811843'),(4587,'came','83811843'),(4588,'to','83811843'),(4589,'be','83811843'),(4590,'known','83811843'),(4591,'as','83811843'),(4592,'the','83811843'),(4593,'Hussites','83811843'),(4594,'\r\n\r\n','83811843'),(4595,'The','83811843'),(4596,'Hussites','83811843'),(4597,'were','83811843'),(4598,'highly','83811843'),(4599,'critical','83811843'),(4600,'of','83811843'),(4601,'the','83811843'),(4602,'abuses','83811843'),(4603,'of','83811843'),(4604,'the','83811843'),(4605,'Roman','83811843'),(4606,'Catholic','83811843'),(4607,'Church','83811843'),(4608,'and','83811843'),(4609,'in','83811843'),(4610,'the','83811843'),(4611,'Four','83811843'),(4612,'Articles','83811843'),(4613,'of','83811843'),(4614,'Prague','83811843'),(4615,'they','83811843'),(4616,'demanded','83811843'),(4617,'that','83811843'),(4618,'1','83811843'),(4619,'all','83811843'),(4620,'believers','83811843'),(4621,'be','83811843'),(4622,'permitted','83811843'),(4623,'to','83811843'),(4624,'receive','83811843'),(4625,'Communion','83811843'),(4626,'in','83811843'),(4627,'both','83811843'),(4628,'species;','83811843'),(4629,'2','83811843'),(4630,'all','83811843'),(4631,'mortal','83811843'),(4632,'and','83811843'),(4633,'public','83811843'),(4634,'sins','83811843'),(4635,'be','83811843'),(4636,'punished','83811843'),(4637,'equally','83811843'),(4638,'regardless','83811843'),(4639,'of','83811843'),(4640,'the','83811843'),(4641,'sinners','83811843'),(4642,'status','83811843'),(4643,'3','83811843'),(4644,'the','83811843'),(4645,'Word','83811843'),(4646,'of','83811843'),(4647,'God','83811843'),(4648,'be','83811843'),(4649,'freely','83811843'),(4650,'preached;','83811843'),(4651,'and','83811843'),(4652,'4','83811843'),(4653,'the','83811843'),(4654,'clergy','83811843'),(4655,'give','83811843'),(4656,'up','83811843'),(4657,'their','83811843'),(4658,'worldly','83811843'),(4659,'wealth','83811843'),(4660,'\r\n\r\nThis','83811843'),(4661,'situation','83811843'),(4662,'culminated','83811843'),(4663,'in','83811843'),(4664,'1419','83811843'),(4665,'with','83811843'),(4666,'the','83811843'),(4667,'First','83811843'),(4668,'Defenestration','83811843'),(4669,'of','83811843'),(4670,'Prague','83811843'),(4671,'in','83811843'),(4672,'which','83811843'),(4673,'Hussites','83811843'),(4674,'threw','83811843'),(4675,'7','83811843'),(4676,'members','83811843'),(4677,'of','83811843'),(4678,'the','83811843'),(4679,'Czech','83811843'),(4680,'Town','83811843'),(4681,'Council','83811843'),(4682,'out','83811843'),(4683,'of','83811843'),(4684,'Pragues','83811843'),(4685,'New','83811843'),(4686,'Town','83811843'),(4687,'Hall','83811843'),(4688,'window','83811843'),(4689,'','83811843'),(4690,'and','83811843'),(4691,'to','83811843'),(4692,'their','83811843'),(4693,'deaths','83811843'),(4694,'on','83811843'),(4695,'the','83811843'),(4696,'points','83811843'),(4697,'of','83811843'),(4698,'Hussiteweilded','83811843'),(4699,'pikes','83811843'),(4700,'below','83811843'),(4701,'','83811843'),(4702,'To','83811843'),(4703,'make','83811843'),(4704,'the','83811843'),(4705,'situation','83811843'),(4706,'more','83811843'),(4707,'interesting','83811843'),(4708,'King','83811843'),(4709,'Wenceslas','83811843'),(4710,'IV','83811843'),(4711,'had','83811843'),(4713,'apopleptic','83811843'),(4714,'fit','83811843'),(4715,'and','83811843'),(4716,'died','83811843'),(4717,'of','83811843'),(4718,'a','83811843'),(4719,'heart','83811843'),(4720,'attack','83811843'),(4721,'upon','83811843'),(4722,'learning','83811843'),(4723,'of','83811843'),(4724,'the','83811843'),(4725,'defenestration','83811843'),(4726,'\r\n\r\nBut','83811843'),(4727,'even','83811843'),(4728,'after','83811843'),(4729,'the','83811843'),(4730,'death','83811843'),(4731,'of','83811843'),(4732,'his','83811843'),(4733,'brother','83811843'),(4734,'Wenceslas','83811843'),(4735,'IV','83811843'),(4736,'King','83811843'),(4737,'Sigismund','83811843'),(4738,'of','83811843'),(4739,'Luxembourg','83811843'),(4740,'who','83811843'),(4741,'also','83811843'),(4742,'inherited','83811843'),(4743,'the','83811843'),(4744,'title','83811843'),(4745,'of','83811843'),(4746,'Holy','83811843'),(4747,'Roman','83811843'),(4748,'Emperor','83811843'),(4749,'never','83811843'),(4750,'really','83811843'),(4751,'got','83811843'),(4752,'to','83811843'),(4753,'be','83811843'),(4754,'king','83811843'),(4755,'of','83811843'),(4756,'Bohemia','83811843'),(4757,'The','83811843'),(4758,'situation','83811843'),(4759,'with','83811843'),(4760,'the','83811843'),(4761,'Hussites','83811843'),(4762,'had','83811843'),(4763,'gone','83811843'),(4764,'too','83811843'),(4765,'far','83811843'),(4766,'and','83811843'),(4767,'he','83811843'),(4768,'spent','83811843'),(4769,'the','83811843'),(4770,'rest','83811843'),(4771,'of','83811843'),(4772,'his','83811843'),(4773,'life','83811843'),(4774,'fighting','83811843'),(4775,'them','83811843'),(4776,'in','83811843'),(4777,'the','83811843'),(4778,'hopes','83811843'),(4779,'of','83811843'),(4780,'taking','83811843'),(4781,'control','83811843'),(4782,'of','83811843'),(4783,'the','83811843'),(4784,'throne','83811843'),(4785,'hed','83811843'),(4786,'inherited','83811843'),(4787,'from','83811843'),(4788,'his','83811843'),(4789,'brother','83811843'),(4790,'When','83811843'),(4791,'his','83811843'),(4792,'initial','83811843'),(4793,'attempts','83811843'),(4794,'to','83811843'),(4795,'do','83811843'),(4796,'this','83811843'),(4797,'met','83811843'),(4798,'with','83811843'),(4799,'failure','83811843'),(4800,'he','83811843'),(4801,'beseeched','83811843'),(4802,'the','83811843'),(4803,'Pope','83811843'),(4804,'to','83811843'),(4805,'send','83811843'),(4806,'help','83811843'),(4807,'\r\n\r\nThe','83811843'),(4808,'mighty','83811843'),(4809,'Hussites','83811843'),(4810,'led','83811843'),(4811,'by','83811843'),(4812,'the','83811843'),(4813,'oneeyed','83811843'),(4814,'military','83811843'),(4815,'genius','83811843'),(4816,'Jan','83811843'),(4817,'Zizka','83811843'),(4818,'defeated','83811843'),(4819,'five','83811843'),(4820,'waves','83811843'),(4821,'of','83811843'),(4822,'crusaders','83811843'),(4823,'in','83811843'),(4824,'a','83811843'),(4825,'row:','83811843'),(4826,'in','83811843'),(4827,'1420','83811843'),(4828,'1421','83811843'),(4829,'1422','83811843'),(4830,'1427','83811843'),(4831,'and','83811843'),(4832,'in','83811843'),(4833,'1437','83811843'),(4834,'','83811843'),(4835,'\r\n\r\nActually','83811843'),(4836,'the','83811843'),(4837,'fifth','83811843'),(4838,'army','83811843'),(4839,'of','83811843'),(4840,'crusaders','83811843'),(4841,'sent','83811843'),(4842,'to','83811843'),(4843,'battle','83811843'),(4844,'the','83811843'),(4845,'Hussites','83811843'),(4846,'turned','83811843'),(4847,'tail','83811843'),(4848,'and','83811843'),(4849,'fled','83811843'),(4850,'before','83811843'),(4851,'even','83811843'),(4852,'catching','83811843'),(4853,'sight','83811843'),(4854,'of','83811843'),(4855,'the','83811843'),(4856,'famed','83811843'),(4857,'warriors','83811843'),(4858,'','83811843'),(4859,'because','83811843'),(4860,'they','83811843'),(4861,'were','83811843'),(4862,'so','83811843'),(4863,'terrified','83811843'),(4864,'at','83811843'),(4865,'hearing','83811843'),(4866,'the','83811843'),(4867,'refrain','83811843'),(4868,'of','83811843'),(4869,'the','83811843'),(4870,'terrible','83811843'),(4871,'Hussite','83811843'),(4872,'battle','83811843'),(4873,'song','83811843'),(4874,'Ye','83811843'),(4875,'Warriors','83811843'),(4876,'of','83811843'),(4877,'God','83811843'),(4878,'It','83811843'),(4879,'was','83811843'),(4880,'either','83811843'),(4881,'that','83811843'),(4882,'or','83811843'),(4883,'maybe','83811843'),(4884,'just','83811843'),(4885,'that','83811843'),(4886,'the','83811843'),(4887,'warriors','83811843'),(4888,'didnt','83811843'),(4889,'sing','83811843'),(4890,'very','83811843'),(4891,'well','83811843'),(4892,'\r\n\r\nWell','83811843'),(4893,'in','83811843'),(4894,'addition','83811843'),(4895,'to','83811843'),(4896,'fearinspiring','83811843'),(4897,'songs','83811843'),(4898,'and','83811843'),(4899,'the','83811843'),(4900,'other','83811843'),(4901,'tricks','83811843'),(4902,'the','83811843'),(4903,'Hussites','83811843'),(4904,'had','83811843'),(4905,'up','83811843'),(4906,'their','83811843'),(4907,'sleeves','83811843'),(4908,'they','83811843'),(4909,'also','83811843'),(4910,'had','83811843'),(4911,'the','83811843'),(4912,'thing','83811843'),(4913,'that','83811843'),(4914,'matters','83811843'),(4915,'most','83811843'),(4916,'','83811843'),(4917,'conviction','83811843'),(4918,'that','83811843'),(4919,'their','83811843'),(4920,'cause','83811843'),(4921,'was','83811843'),(4922,'the','83811843'),(4923,'Just','83811843'),(4924,'one','83811843'),(4925,'Their','83811843'),(4926,'symbol','83811843'),(4927,'was','83811843'),(4928,'the','83811843'),(4929,'chalice','83811843'),(4930,'and','83811843'),(4931,'their','83811843'),(4932,'motto','83811843'),(4933,'Truth','83811843'),(4934,'Prevails','83811843'),(4935,'this','83811843'),(4936,'motto','83811843'),(4937,'was','83811843'),(4938,'later','83811843'),(4939,'used','83811843'),(4940,'by','83811843'),(4941,'the','83811843'),(4942,'first','83811843'),(4943,'President','83811843'),(4944,'of','83811843'),(4945,'Czechoslovakia','83811843'),(4946,'Tomas','83811843'),(4947,'Garrigue','83811843'),(4948,'Masaryk','83811843'),(4949,'as','83811843'),(4950,'well','83811843'),(4951,'as','83811843'),(4952,'by','83811843'),(4953,'a','83811843'),(4954,'later','83811843'),(4955,'President','83811843'),(4956,'of','83811843'),(4957,'Czechoslovakia','83811843'),(4958,'Vaclav','83811843'),(4959,'Havel','83811843'),(4960,'','83811843'),(4961,'during','83811843'),(4962,'the','83811843'),(4963,'Velvet','83811843'),(4964,'Revolution','83811843'),(4965,'\r\n\r\nWell','83811843'),(4966,'despite','83811843'),(4967,'this','83811843'),(4968,'and','83811843'),(4969,'despite','83811843'),(4970,'their','83811843'),(4971,'brilliant','83811843'),(4972,'military','83811843'),(4973,'successes','83811843'),(4974,'all','83811843'),(4975,'was','83811843'),(4976,'not','83811843'),(4977,'well','83811843'),(4978,'within','83811843'),(4979,'the','83811843'),(4980,'Hussite','83811843'),(4981,'movement','83811843'),(4982,'itself','83811843'),(4983,'From','83811843'),(4984,'the','83811843'),(4985,'very','83811843'),(4986,'start','83811843'),(4987,'the','83811843'),(4988,'Hussite','83811843'),(4989,'movement','83811843'),(4990,'had','83811843'),(4991,'been','83811843'),(4992,'divided','83811843'),(4993,'into','83811843'),(4994,'factions','83811843'),(4995,'','83811843'),(4996,'the','83811843'),(4997,'most','83811843'),(4998,'prominent','83811843'),(4999,'division','83811843'),(5000,'was','83811843'),(5001,'along','83811843'),(5002,'economic','83811843'),(5003,'lines','83811843'),(5004,'\r\n\r\nA','83811843'),(5005,'number','83811843'),(5006,'of','83811843'),(5007,'peasant','83811843'),(5008,'Hussites','83811843'),(5009,'were','83811843'),(5010,'nothing','83811843'),(5011,'more','83811843'),(5012,'than','83811843'),(5013,'hooligans','83811843'),(5014,'at','83811843'),(5015,'best','83811843'),(5016,'','83811843'),(5017,'terrorists','83811843'),(5018,'at','83811843'),(5019,'worst','83811843'),(5020,'','83811843'),(5021,'who','83811843'),(5022,'joined','83811843'),(5023,'the','83811843'),(5024,'cause','83811843'),(5025,'only','83811843'),(5026,'so','83811843'),(5027,'that','83811843'),(5028,'they','83811843'),(5029,'could','83811843'),(5030,'have','83811843'),(5031,'a','83811843'),(5032,'good','83811843'),(5033,'excuse','83811843'),(5034,'to','83811843'),(5035,'go','83811843'),(5036,'around','83811843'),(5037,'robbing','83811843'),(5038,'churches','83811843'),(5039,'and','83811843'),(5040,'setting','83811843'),(5041,'them','83811843'),(5042,'aflame','83811843'),(5043,'with','83811843'),(5044,'Catholics','83811843'),(5045,'inside','83811843'),(5046,'These','83811843'),(5047,'practices','83811843'),(5048,'were','83811843'),(5049,'considered','83811843'),(5050,'to','83811843'),(5051,'be','83811843'),(5052,'rather','83811843'),(5053,'in','83811843'),(5054,'poor','83811843'),(5055,'taste','83811843'),(5056,'by','83811843'),(5057,'the','83811843'),(5058,'aristocratic','83811843'),(5059,'Hussites','83811843'),(5060,'Over','83811843'),(5061,'time','83811843'),(5062,'the','83811843'),(5063,'movement','83811843'),(5064,'splintered','83811843'),(5065,'even','83811843'),(5066,'more','83811843'),(5067,'','83811843'),(5068,'even','83811843'),(5069,'spawning','83811843'),(5070,'an','83811843'),(5071,'early','83811843'),(5072,'nudist','83811843'),(5073,'sect','83811843'),(5074,'the','83811843'),(5075,'Adamites','83811843'),(5076,'The','83811843'),(5077,'history','83811843'),(5078,'books','83811843'),(5079,'usually','83811843'),(5080,'divide','83811843'),(5081,'the','83811843'),(5082,'Hussites','83811843'),(5083,'into','83811843'),(5084,'radical','83811843'),(5085,'Taborites','83811843'),(5086,'','83811843'),(5087,'named','83811843'),(5088,'for','83811843'),(5089,'the','83811843'),(5090,'town','83811843'),(5091,'of','83811843'),(5092,'Tabor','83811843'),(5093,'a','83811843'),(5094,'city','83811843'),(5095,'the','83811843'),(5096,'Hussites','83811843'),(5097,'founded','83811843'),(5098,'for','83811843'),(5099,'the','83811843'),(5100,'occasion','83811843'),(5101,'of','83811843'),(5102,'the','83811843'),(5103,'Second','83811843'),(5104,'Coming','83811843'),(5105,'which','83811843'),(5106,'many','83811843'),(5107,'considered','83811843'),(5108,'imminent','83811843'),(5109,'','83811843'),(5110,'and','83811843'),(5111,'the','83811843'),(5112,'moderate','83811843'),(5113,'Utraquists','83811843'),(5114,'','83811843'),(5115,'derived','83811843'),(5116,'from','83811843'),(5117,'the','83811843'),(5118,'Latin','83811843'),(5119,'sub','83811843'),(5120,'utraque','83811843'),(5121,'specie','83811843'),(5122,'for','83811843'),(5123,'their','83811843'),(5124,'belief','83811843'),(5125,'that','83811843'),(5126,'communion','83811843'),(5127,'should','83811843'),(5128,'be','83811843'),(5129,'given','83811843'),(5130,'in','83811843'),(5131,'both','83811843'),(5132,'kinds','83811843'),(5133,'','83811843'),(5134,'made','83811843'),(5135,'up','83811843'),(5136,'mostly','83811843'),(5137,'of','83811843'),(5138,'the','83811843'),(5139,'nobility','83811843'),(5140,'In','83811843'),(5141,'reality','83811843'),(5142,'though','83811843'),(5143,'the','83811843'),(5144,'situation','83811843'),(5145,'on','83811843'),(5146,'the','83811843'),(5147,'ground','83811843'),(5148,'just','83811843'),(5149,'was','83811843'),(5150,'not','83811843'),(5151,'that','83811843'),(5152,'simple','83811843'),(5153,'\r\n\r\nThis','83811843'),(5154,'infighting','83811843'),(5155,'came','83811843'),(5156,'to','83811843'),(5157,'a','83811843'),(5158,'head','83811843'),(5159,'at','83811843'),(5160,'the','83811843'),(5161,'Battle','83811843'),(5162,'of','83811843'),(5163,'Lipany','83811843'),(5164,'on','83811843'),(5165,'May','83811843'),(5166,'30','83811843'),(5167,'1434','83811843'),(5168,'at','83811843'),(5169,'which','83811843'),(5170,'the','83811843'),(5171,'Czech','83811843'),(5172,'Hussite','83811843'),(5173,'factions','83811843'),(5174,'fought','83811843'),(5175,'among','83811843'),(5176,'themselves','83811843'),(5177,'This','83811843'),(5178,'battle','83811843'),(5179,'is','83811843'),(5180,'considered','83811843'),(5181,'by','83811843'),(5182,'some','83811843'),(5183,'to','83811843'),(5184,'be','83811843'),(5185,'the','83811843'),(5186,'single','83811843'),(5187,'most','83811843'),(5188,'tragic','83811843'),(5189,'event','83811843'),(5190,'in','83811843'),(5191,'all','83811843'),(5192,'of','83811843'),(5193,'Czech','83811843'),(5194,'history','83811843'),(5195,'\r\n\r\nWell','83811843'),(5196,'the','83811843'),(5197,'victory','83811843'),(5198,'at','83811843'),(5199,'the','83811843'),(5200,'Battle','83811843'),(5201,'of','83811843'),(5202,'Lipany','83811843'),(5203,'went','83811843'),(5204,'to','83811843'),(5205,'the','83811843'),(5206,'moderates','83811843'),(5207,'and','83811843'),(5208,'this','83811843'),(5209,'paved','83811843'),(5210,'the','83811843'),(5211,'way','83811843'),(5212,'for','83811843'),(5213,'an','83811843'),(5214,'agreement','83811843'),(5215,'to','83811843'),(5216,'be','83811843'),(5217,'reached','83811843'),(5218,'between','83811843'),(5219,'the','83811843'),(5220,'Utraquist','83811843'),(5221,'Hussites','83811843'),(5222,'of','83811843'),(5223,'Bohemia','83811843'),(5224,'and','83811843'),(5225,'the','83811843'),(5226,'Roman','83811843'),(5227,'Catholic','83811843'),(5228,'Church','83811843'),(5229,'\r\n\r\nThe','83811843'),(5230,'Basel','83811843'),(5231,'Compact','83811843'),(5232,'ceremoniously','83811843'),(5233,'announced','83811843'),(5234,'in','83811843'),(5235,'1436','83811843'),(5236,'permitted','83811843'),(5237,'the','83811843'),(5238,'Utraquist','83811843'),(5239,'Hussites','83811843'),(5240,'to','83811843'),(5241,'take','83811843'),(5242,'Communion','83811843'),(5243,'in','83811843'),(5244,'both','83811843'),(5245,'kinds','83811843'),(5246,'to','83811843'),(5247,'have','83811843'),(5248,'their','83811843'),(5249,'church','83811843'),(5250,'services','83811843'),(5251,'conducted','83811843'),(5252,'in','83811843'),(5253,'the','83811843'),(5254,'Czech','83811843'),(5255,'language','83811843'),(5256,'and','83811843'),(5257,'absolved','83811843'),(5258,'them','83811843'),(5259,'of','83811843'),(5260,'having','83811843'),(5261,'to','83811843'),(5262,'pay','83811843'),(5263,'dues','83811843'),(5264,'to','83811843'),(5265,'Rome','83811843'),(5266,'The','83811843'),(5267,'Pope','83811843'),(5268,'later','83811843'),(5269,'refused','83811843'),(5270,'to','83811843'),(5271,'recognize','83811843'),(5272,'the','83811843'),(5273,'agreement','83811843'),(5274,'but','83811843'),(5275,'not','83811843'),(5276,'before','83811843'),(5277,'it','83811843'),(5278,'had','83811843'),(5279,'served','83811843'),(5280,'to','83811843'),(5281,'bring','83811843'),(5282,'an','83811843'),(5283,'end','83811843'),(5284,'to','83811843'),(5285,'the','83811843'),(5286,'costly','83811843'),(5287,'Hussite','83811843'),(5288,'wars','83811843'),(5289,'\r\n\r\nThe','83811843'),(5290,'extremist','83811843'),(5291,'Taborite','83811843'),(5292,'Hussites','83811843'),(5293,'were','83811843'),(5294,'not','83811843'),(5295,'a','83811843'),(5296,'party','83811843'),(5297,'to','83811843'),(5298,'this','83811843'),(5299,'agreement','83811843'),(5300,'and','83811843'),(5301,'refused','83811843'),(5302,'to','83811843'),(5303,'accept','83811843'),(5304,'it','83811843'),(5305,'While','83811843'),(5306,'the','83811843'),(5307,'moderates','83811843'),(5308,'stayed','83811843'),(5309,'in','83811843'),(5310,'the','83811843'),(5311,'Catholic','83811843'),(5312,'Church','83811843'),(5313,'the','83811843'),(5314,'extremists','83811843'),(5315,'went','83811843'),(5316,'underground','83811843'),(5317,'forming','83811843'),(5318,'their','83811843'),(5319,'own','83811843'),(5320,'church','83811843'),(5321,'ordaining','83811843'),(5322,'their','83811843'),(5323,'own','83811843'),(5324,'bishops','83811843'),(5325,'pioneering','83811843'),(5326,'public','83811843'),(5327,'education','83811843'),(5328,'sending','83811843'),(5329,'out','83811843'),(5330,'missionaries','83811843'),(5331,'even','83811843'),(5332,'to','83811843'),(5333,'the','83811843'),(5334,'13','83811843'),(5335,'original','83811843'),(5336,'American','83811843'),(5337,'colonies','83811843'),(5338,'and','83811843'),(5339,'secretly','83811843'),(5340,'printing','83811843'),(5341,'Czechlanguage','83811843'),(5342,'copies','83811843'),(5343,'of','83811843'),(5344,'the','83811843'),(5345,'Kralice','83811843'),(5346,'Bible','83811843'),(5347,'','83811843'),(5348,'named','83811843'),(5349,'for','83811843'),(5350,'the','83811843'),(5351,'town','83811843'),(5352,'of','83811843'),(5353,'Kralice','83811843'),(5354,'in','83811843'),(5355,'which','83811843'),(5356,'it','83811843'),(5357,'was','83811843'),(5358,'printed','83811843'),(5359,'This','83811843'),(5360,'translation','83811843'),(5361,'is','83811843'),(5362,'still','83811843'),(5363,'in','83811843'),(5364,'use','83811843'),(5365,'in','83811843'),(5366,'the','83811843'),(5367,'Czech','83811843'),(5368,'lands','83811843'),(5369,'today','83811843'),(5370,'despite','83811843'),(5371,'that','83811843'),(5372,'it','83811843'),(5373,'is','83811843'),(5374,'often','83811843'),(5375,'hard','83811843'),(5376,'for','83811843'),(5377,'modern','83811843'),(5378,'speakers','83811843'),(5379,'of','83811843'),(5380,'the','83811843'),(5381,'language','83811843'),(5382,'to','83811843'),(5383,'understand','83811843'),(5384,'\r\n\r\nSlovakia','83811843'),(5385,'all','83811843'),(5386,'this','83811843'),(5387,'while','83811843'),(5388,'was','83811843'),(5389,'known','83811843'),(5390,'simply','83811843'),(5391,'as','83811843'),(5392,'Upper','83811843'),(5393,'Hungary','83811843'),(5394,'Though','83811843'),(5395,'the','83811843'),(5396,'Czechs','83811843'),(5397,'and','83811843'),(5398,'the','83811843'),(5399,'Slovaks','83811843'),(5400,'had','83811843'),(5401,'been','83811843'),(5402,'nextdoor','83811843'),(5403,'neighbors','83811843'),(5404,'since','83811843'),(5405,'the','83811843'),(5406,'time','83811843'),(5407,'that','83811843'),(5408,'Ancestor','83811843'),(5409,'Cech','83811843'),(5410,'and','83811843'),(5411,'his','83811843'),(5412,'brothers','83811843'),(5413,'had','83811843'),(5414,'come','83811843'),(5415,'to','83811843'),(5416,'the','83811843'),(5417,'area','83811843'),(5418,'they','83811843'),(5419,'have','83811843'),(5420,'historically','83811843'),(5421,'had','83811843'),(5422,'very','83811843'),(5423,'little','83811843'),(5424,'in','83811843'),(5425,'common','83811843'),(5426,'until','83811843'),(5427,'1918','83811843'),(5428,'Similarly','83811843'),(5429,'neither','83811843'),(5430,'country','83811843'),(5431,'has','83811843'),(5432,'historically','83811843'),(5433,'ever','83811843'),(5434,'had','83811843'),(5435,'much','83811843'),(5436,'to','83811843'),(5437,'do','83811843'),(5438,'with','83811843'),(5439,'Poland','83811843'),(5440,'which','83811843'),(5441,'borders','83811843'),(5442,'both','83811843'),(5443,'to','83811843'),(5444,'the','83811843'),(5445,'north','83811843'),(5446,'It','83811843'),(5447,'is','83811843'),(5448,'at','83811843'),(5449,'this','83811843'),(5450,'point','83811843'),(5451,'in','83811843'),(5452,'history','83811843'),(5453,'','83811843'),(5454,'beginning','83811843'),(5455,'in','83811843'),(5456,'the','83811843'),(5457,'14th','83811843'),(5458,'century','83811843'),(5459,'however','83811843'),(5460,'closer','83811843'),(5461,'cultural','83811843'),(5462,'contacts','83811843'),(5463,'between','83811843'),(5464,'Slovakia','83811843'),(5465,'and','83811843'),(5466,'Bohemia','83811843'),(5467,'were','83811843'),(5468,'formed','83811843'),(5469,'Especially','83811843'),(5470,'during','83811843'),(5471,'the','83811843'),(5472,'turbulent','83811843'),(5473,'Hussite','83811843'),(5474,'period','83811843'),(5475,'of','83811843'),(5476,'the','83811843'),(5477,'15th','83811843'),(5478,'century','83811843'),(5479,'many','83811843'),(5480,'Hussite','83811843'),(5481,'followers','83811843'),(5482,'found','83811843'),(5483,'refuge','83811843'),(5484,'and','83811843'),(5485,'support','83811843'),(5486,'in','83811843'),(5487,'the','83811843'),(5488,'Slovak','83811843'),(5489,'lands','83811843'),(5490,'and','83811843'),(5491,'some','83811843'),(5492,'of','83811843'),(5493,'the','83811843'),(5494,'Slovak','83811843'),(5495,'nobility','83811843'),(5496,'fought','83811843'),(5497,'on','83811843'),(5498,'the','83811843'),(5500,'of','83811843'),(5501,'the','83811843'),(5502,'Hussites','83811843'),(5503,'\r\n','83811843'),(5504,'\r\n\r\nAfter','83811843'),(5505,'the','83811843'),(5506,'Compact','83811843'),(5507,'of','83811843'),(5508,'Basel','83811843'),(5509,'forced','83811843'),(5510,'King','83811843'),(5511,'Sigismund','83811843'),(5512,'of','83811843'),(5513,'Luxembourg','83811843'),(5514,'to','83811843'),(5515,'concede','83811843'),(5516,'to','83811843'),(5517,'the','83811843'),(5518,'Hussites','83811843'),(5519,'demands','83811843'),(5520,'the','83811843'),(5521,'position','83811843'),(5522,'of','83811843'),(5523,'the','83811843'),(5524,'regional','83811843'),(5525,'nobility','83811843'),(5526,'and','83811843'),(5527,'of','83811843'),(5528,'the','83811843'),(5529,'towns','83811843'),(5530,'a','83811843'),(5531,'grouping','83811843'),(5532,'known','83811843'),(5533,'as','83811843'),(5534,'the','83811843'),(5535,'Estates','83811843'),(5536,'was','83811843'),(5537,'strengthened','83811843'),(5538,'to','83811843'),(5539,'the','83811843'),(5540,'detriment','83811843'),(5541,'of','83811843'),(5542,'the','83811843'),(5543,'centralized','83811843'),(5544,'royal','83811843'),(5545,'authority','83811843'),(5546,'For','83811843'),(5547,'some','83811843'),(5548,'time','83811843'),(5549,'after','83811843'),(5550,'Sigismunds','83811843'),(5551,'death','83811843'),(5552,'in','83811843'),(5553,'1437','83811843'),(5554,'anarchy','83811843'),(5555,'reigned','83811843'),(5556,'in','83811843'),(5557,'Bohemia','83811843'),(5558,'\r\n\r\nThen','83811843'),(5559,'after','83811843'),(5560,'the','83811843'),(5561,'very','83811843'),(5562,'brief','83811843'),(5563,'rule','83811843'),(5564,'of','83811843'),(5565,'Ladislav','83811843'),(5566,'the','83811843'),(5567,'Posthumous','83811843'),(5568,'14537','83811843'),(5569,'','83811843'),(5570,'so','83811843'),(5571,'named','83811843'),(5572,'because','83811843'),(5573,'he','83811843'),(5574,'was','83811843'),(5575,'born','83811843'),(5576,'after','83811843'),(5577,'his','83811843'),(5578,'father','83811843'),(5579,'had','83811843'),(5580,'died','83811843'),(5581,'','83811843'),(5582,'','83811843'),(5583,'the','83811843'),(5584,'Bohemian','83811843'),(5585,'throne','83811843'),(5586,'was','83811843'),(5587,'occupied','83811843'),(5588,'by','83811843'),(5589,'the','83811843'),(5590,'heretic','83811843'),(5591,'King','83811843'),(5592,'George','83811843'),(5593,'of','83811843'),(5594,'Podebrady','83811843'),(5595,'145871','83811843'),(5596,'George','83811843'),(5597,'also','83811843'),(5598,'known','83811843'),(5599,'as','83811843'),(5600,'the','83811843'),(5601,'Hussite','83811843'),(5602,'King','83811843'),(5603,'was','83811843'),(5604,'the','83811843'),(5605,'first','83811843'),(5606,'freelyelected','83811843'),(5607,'Czech','83811843'),(5608,'ruler','83811843'),(5609,'He','83811843'),(5610,'was','83811843'),(5611,'chosen','83811843'),(5612,'as','83811843'),(5613,'Czech','83811843'),(5614,'King','83811843'),(5615,'from','83811843'),(5616,'among','83811843'),(5617,'the','83811843'),(5618,'countrys','83811843'),(5619,'nobility','83811843'),(5620,'without','83811843'),(5621,'regard','83811843'),(5622,'to','83811843'),(5623,'any','83811843'),(5624,'previous','83811843'),(5625,'agreements','83811843'),(5626,'hereditary','83811843'),(5627,'claim','83811843'),(5628,'to','83811843'),(5629,'the','83811843'),(5630,'throne','83811843'),(5631,'family','83811843'),(5632,'connections','83811843'),(5633,'or','83811843'),(5634,'dynastic','83811843'),(5635,'origin','83811843'),(5636,'George','83811843'),(5637,'of','83811843'),(5638,'Podebrady','83811843'),(5639,'won','83811843'),(5640,'recognition','83811843'),(5641,'throughout','83811843'),(5642,'the','83811843'),(5643,'Lands','83811843'),(5644,'of','83811843'),(5645,'the','83811843'),(5646,'Czech','83811843'),(5647,'Crown','83811843'),(5648,'through','83811843'),(5649,'his','83811843'),(5650,'skillful','83811843'),(5651,'diplomacy','83811843'),(5652,'and','83811843'),(5653,'gained','83811843'),(5654,'the','83811843'),(5655,'respect','83811843'),(5656,'of','83811843'),(5657,'all','83811843'),(5658,'of','83811843'),(5659,'Central','83811843'),(5660,'Europe','83811843'),(5661,'He','83811843'),(5662,'also','83811843'),(5663,'in','83811843'),(5664,'the','83811843'),(5665,'15th','83811843'),(5666,'century','83811843'),(5667,'authored','83811843'),(5668,'an','83811843'),(5669,'ambitious','83811843'),(5670,'Peace','83811843'),(5671,'Plan','83811843'),(5672,'for','83811843'),(5673,'all','83811843'),(5674,'of','83811843'),(5675,'Europe','83811843'),(5676,'sort','83811843'),(5677,'of','83811843'),(5678,'a','83811843'),(5679,'medeival','83811843'),(5680,'equivalent','83811843'),(5681,'to','83811843'),(5682,'a','83811843'),(5683,'NATOlike','83811843'),(5684,'organization','83811843'),(5685,'\r\n\r\nBut','83811843'),(5686,'few','83811843'),(5687,'people','83811843'),(5688,'then','83811843'),(5689,'as','83811843'),(5690,'now','83811843'),(5691,'were','83811843'),(5692,'interested','83811843'),(5693,'in','83811843'),(5694,'peace','83811843'),(5695,'and','83811843'),(5696,'nobody','83811843'),(5697,'subscribed','83811843'),(5698,'to','83811843'),(5699,'his','83811843'),(5700,'plan','83811843'),(5701,'On','83811843'),(5702,'the','83811843'),(5703,'contrary','83811843'),(5704,'','83811843'),(5705,'the','83811843'),(5706,'Hungarian','83811843'),(5707,'monarch','83811843'),(5708,'at','83811843'),(5709,'this','83811843'),(5710,'time','83811843'),(5711,'Matthias','83811843'),(5712,'Corvinus','83811843'),(5713,'','83811843'),(5714,'with','83811843'),(5715,'the','83811843'),(5716,'support','83811843'),(5717,'of','83811843'),(5718,'the','83811843'),(5719,'disgruntled','83811843'),(5720,'Czech','83811843'),(5721,'Catholic','83811843'),(5722,'opposition','83811843'),(5723,'who','83811843'),(5724,'didnt','83811843'),(5725,'like','83811843'),(5726,'the','83811843'),(5727,'idea','83811843'),(5728,'of','83811843'),(5729,'a','83811843'),(5730,'Protestant','83811843'),(5731,'on','83811843'),(5732,'the','83811843'),(5733,'throne','83811843'),(5734,'','83811843'),(5735,'declared','83811843'),(5736,'war','83811843'),(5737,'against','83811843'),(5738,'George','83811843'),(5739,'of','83811843'),(5740,'Podebrady','83811843'),(5741,'who','83811843'),(5742,'happened','83811843'),(5743,'to','83811843'),(5744,'be','83811843'),(5745,'Matthias','83811843'),(5746,'fatherinlaw','83811843'),(5747,'The','83811843'),(5748,'Hungarian','83811843'),(5749,'campaigns','83811843'),(5750,'against','83811843'),(5751,'Bohemia','83811843'),(5752,'ceased','83811843'),(5753,'only','83811843'),(5754,'after','83811843'),(5755,'the','83811843'),(5756,'death','83811843'),(5757,'of','83811843'),(5758,'the','83811843'),(5759,'beloved','83811843'),(5760,'Hussite','83811843'),(5761,'King','83811843'),(5762,'George','83811843'),(5763,'of','83811843'),(5764,'Podebrady','83811843'),(5765,'and','83811843'),(5766,'the','83811843'),(5767,'ascent','83811843'),(5768,'of','83811843'),(5769,'Vladislav','83811843'),(5770,'Jagellon','83811843'),(5771,'to','83811843'),(5772,'the','83811843'),(5773,'throne','83811843'),(5774,'\r\n\r\nCzechSlovak','83811843'),(5775,'relations','83811843'),(5776,'were','83811843'),(5777,'strengthened','83811843'),(5778,'at','83811843'),(5779,'this','83811843'),(5780,'time','83811843'),(5781,'with','83811843'),(5782,'the','83811843'),(5783,'forming','83811843'),(5784,'of','83811843'),(5785,'the','83811843'),(5786,'CzechHungarian','83811843'),(5787,'union','83811843'),(5788,'under','83811843'),(5789,'the','83811843'),(5790,'Jagellons','83811843'),(5791,'after','83811843'),(5792,'the','83811843'),(5793,'death','83811843'),(5794,'of','83811843'),(5795,'Matthias','83811843'),(5796,'Corvinus','83811843'),(5797,'in','83811843'),(5798,'1490;','83811843'),(5799,'and','83811843'),(5800,'after','83811843'),(5801,'the','83811843'),(5802,'Kralice','83811843'),(5803,'Bible','83811843'),(5804,'began','83811843'),(5805,'to','83811843'),(5806,'be','83811843'),(5807,'used','83811843'),(5808,'by','83811843'),(5809,'the','83811843'),(5810,'Slovak','83811843'),(5811,'Evangelical','83811843'),(5812,'Church','83811843'),(5813,'\r\n\r\nIn','83811843'),(5814,'spite','83811843'),(5815,'of','83811843'),(5816,'conflicts','83811843'),(5817,'both','83811843'),(5818,'foreign','83811843'),(5819,'and','83811843'),(5820,'domestic','83811843'),(5821,'and','83811843'),(5822,'even','83811843'),(5823,'under','83811843'),(5824,'the','83811843'),(5825,'rule','83811843'),(5826,'of','83811843'),(5827,'the','83811843'),(5828,'Jagellon','83811843'),(5829,'dynastys','83811843'),(5830,'two','83811843'),(5831,'Catholic','83811843'),(5832,'kings','83811843'),(5833,'Vladislav','83811843'),(5834,'and','83811843'),(5835,'Ludwig','83811843'),(5836,'religious','83811843'),(5837,'pluralism','83811843'),(5838,'and','83811843'),(5839,'freedom','83811843'),(5840,'of','83811843'),(5841,'religion','83811843'),(5842,'were','83811843'),(5843,'maintained','83811843'),(5844,'in','83811843'),(5845,'the','83811843'),(5846,'Czech','83811843'),(5847,'lands','83811843'),(5848,'with','83811843'),(5849,'Protestants','83811843'),(5850,'and','83811843'),(5851,'Catholics','83811843'),(5852,'living','83811843'),(5853,'together','83811843'),(5854,'in','83811843'),(5855,'harmony','83811843'),(5856,'All','83811843'),(5857,'during','83811843'),(5858,'this','83811843'),(5859,'time','83811843'),(5860,'of','83811843'),(5861,'weak','83811843'),(5862,'royal','83811843'),(5863,'leadership','83811843'),(5864,'the','83811843'),(5865,'power','83811843'),(5866,'of','83811843'),(5867,'the','83811843'),(5868,'nobility','83811843'),(5869,'and','83811843'),(5870,'towns','83811843'),(5871,'the','83811843'),(5872,'Estates','83811843'),(5873,'continued','83811843'),(5874,'to','83811843'),(5875,'increase','83811843'),(5876,'','83811843'),(5877,'even','83811843'),(5878,'as','83811843'),(5879,'central','83811843'),(5880,'authority','83811843'),(5881,'diminished','83811843'),(5882,'\r\n\r\nWith','83811843'),(5883,'the','83811843'),(5884,'death','83811843'),(5885,'of','83811843'),(5886,'Ludwig','83811843'),(5887,'Jagellon','83811843'),(5888,'he','83811843'),(5889,'drowned','83811843'),(5890,'in','83811843'),(5891,'a','83811843'),(5892,'swamp','83811843'),(5893,'running','83811843'),(5894,'away','83811843'),(5895,'from','83811843'),(5896,'the','83811843'),(5897,'Turks','83811843'),(5898,'at','83811843'),(5899,'the','83811843'),(5900,'Battle','83811843'),(5901,'of','83811843'),(5902,'Mohacs','83811843'),(5903,'in','83811843'),(5904,'1526','83811843'),(5905,'the','83811843'),(5906,'shortlived','83811843'),(5907,'CzechHungarian','83811843'),(5908,'Union','83811843'),(5909,'fell','83811843'),(5910,'to','83811843'),(5911,'pieces','83811843'),(5912,'leaving','83811843'),(5913,'both','83811843'),(5914,'the','83811843'),(5915,'Bohemian','83811843'),(5916,'and','83811843'),(5917,'the','83811843'),(5918,'Hungarian','83811843'),(5919,'thrones','83811843'),(5920,'unoccupied','83811843'),(5921,'\r\n\r\nWhat','83811843'),(5922,'a','83811843'),(5923,'window','83811843'),(5924,'of','83811843'),(5925,'opportunity','83811843'),(5926,'for','83811843'),(5927,'the','83811843'),(5928,'Austrian','83811843'),(5929,'Habsburgs!','83811843'),(5930,'That','83811843'),(5931,'Ferdinand','83811843'),(5932,'I','83811843'),(5933,'of','83811843'),(5934,'Habsburg','83811843'),(5935,'also','83811843'),(5936,'happened','83811843'),(5937,'to','83811843'),(5938,'be','83811843'),(5939,'the','83811843'),(5940,'late','83811843'),(5941,'Ludwig','83811843'),(5942,'Jagellons','83811843'),(5943,'brotherinlaw','83811843'),(5944,'helped','83811843'),(5945,'his','83811843'),(5946,'claim','83811843'),(5947,'to','83811843'),(5948,'the','83811843'),(5949,'Bohemain','83811843'),(5950,'and','83811843'),(5951,'Hungarian','83811843'),(5952,'thrones','83811843'),(5953,'In','83811843'),(5954,'Bohemia','83811843'),(5955,'the','83811843'),(5956,'weakened','83811843'),(5957,'central','83811843'),(5958,'authority','83811843'),(5959,'did','83811843'),(5960,'too','83811843'),(5961,'At','83811843'),(5962,'first','83811843'),(5963,'Ferdinand','83811843'),(5964,'made','83811843'),(5965,'concessions','83811843'),(5966,'to','83811843'),(5967,'the','83811843'),(5968,'everpowerful','83811843'),(5969,'Estates','83811843'),(5970,'Soon','83811843'),(5971,'however','83811843'),(5972,'he','83811843'),(5973,'began','83811843'),(5974,'systematically','83811843'),(5975,'to','83811843'),(5976,'weaken','83811843'),(5977,'the','83811843'),(5978,'authority','83811843'),(5979,'of','83811843'),(5980,'the','83811843'),(5981,'regional','83811843'),(5982,'nobility','83811843'),(5983,'and','83811843'),(5984,'towns','83811843'),(5985,'His','83811843'),(5986,'attempts','83811843'),(5987,'to','83811843'),(5988,'increase','83811843'),(5989,'the','83811843'),(5990,'central','83811843'),(5991,'power','83811843'),(5992,'of','83811843'),(5993,'the','83811843'),(5994,'Crown','83811843'),(5995,'naturally','83811843'),(5996,'met','83811843'),(5997,'with','83811843'),(5998,'the','83811843'),(5999,'opposition','83811843'),(6000,'of','83811843'),(6001,'the','83811843'),(6002,'Estates','83811843'),(6003,'and','83811843'),(6004,'the','83811843'),(6005,'whole','83811843'),(6006,'situation','83811843'),(6007,'culminated','83811843'),(6008,'in','83811843'),(6009,'an','83811843'),(6010,'unsuccesful','83811843'),(6011,'rebellion','83811843'),(6012,'of','83811843'),(6013,'the','83811843'),(6014,'Estates','83811843'),(6015,'in','83811843'),(6016,'1547','83811843'),(6017,'\r\n\r\nThe','83811843'),(6018,'Estates','83811843'),(6019,'failure','83811843'),(6020,'was','83811843'),(6021,'Ferdinands','83811843'),(6022,'gain','83811843'),(6023,'He','83811843'),(6024,'used','83811843'),(6025,'this','83811843'),(6026,'victory','83811843'),(6027,'to','83811843'),(6028,'increase','83811843'),(6029,'royal','83811843'),(6030,'authority','83811843'),(6031,'and','83811843'),(6032,'to','83811843'),(6033,'weaken','83811843'),(6034,'the','83811843'),(6035,'position','83811843'),(6036,'of','83811843'),(6037,'the','83811843'),(6038,'Estates','83811843'),(6039,'and','83811843'),(6040,'the','83811843'),(6041,'towns','83811843'),(6042,'even','83811843'),(6043,'more','83811843'),(6044,'He','83811843'),(6045,'also','83811843'),(6046,'invited','83811843'),(6047,'the','83811843'),(6048,'Jesuits','83811843'),(6049,'to','83811843'),(6050,'come','83811843'),(6051,'to','83811843'),(6052,'the','83811843'),(6053,'Czech','83811843'),(6054,'lands','83811843'),(6055,'though','83811843'),(6056,'they','83811843'),(6057,'never','83811843'),(6058,'held','83811843'),(6059,'any','83811843'),(6060,'inquisitions','83811843'),(6061,'here','83811843'),(6062,'and','83811843'),(6063,'generally','83811843'),(6064,'did','83811843'),(6065,'not','83811843'),(6066,'meddle','83811843'),(6067,'in','83811843'),(6068,'public','83811843'),(6069,'affairs','83811843'),(6070,'Ostensibly','83811843'),(6071,'fighting','83811843'),(6072,'to','83811843'),(6073,'maintain','83811843'),(6074,'freedom','83811843'),(6075,'of','83811843'),(6076,'religion','83811843'),(6077,'in','83811843'),(6078,'the','83811843'),(6079,'Czech','83811843'),(6080,'lands','83811843'),(6081,'against','83811843'),(6082,'the','83811843'),(6083,'resolutely','83811843'),(6084,'Catholic','83811843'),(6085,'policies','83811843'),(6086,'of','83811843'),(6087,'Ferdinand','83811843'),(6088,'the','83811843'),(6089,'Estates','83811843'),(6090,'struggled','83811843'),(6091,'to','83811843'),(6092,'regain','83811843'),(6093,'their','83811843'),(6094,'former','83811843'),(6095,'power','83811843'),(6096,'and','83811843'),(6097,'influence','83811843'),(6098,'\r\n\r\nThese','83811843'),(6099,'conflicts','83811843'),(6100,'simmered','83811843'),(6101,'under','83811843'),(6102,'the','83811843'),(6103,'surface','83811843'),(6104,'of','83811843'),(6105,'things','83811843'),(6106,'as','83811843'),(6107,'the','83811843'),(6108,'Renaissance','83811843'),(6109,'swept','83811843'),(6110,'through','83811843'),(6111,'the','83811843'),(6112,'Czech','83811843'),(6113,'lands','83811843'),(6114,'\r\n\r\n','83811843'),(6115,'Ferdinand','83811843'),(6116,'was','83811843'),(6117,'succeeded','83811843'),(6118,'by','83811843'),(6119,'Maxmilian','83811843'),(6120,'II','83811843'),(6121,'who','83811843'),(6122,'was','83811843'),(6123,'succeeded','83811843'),(6124,'by','83811843'),(6125,'Rudolf','83811843'),(6126,'II','83811843'),(6127,'After','83811843'),(6128,'assuming','83811843'),(6129,'the','83811843'),(6130,'Austrian','83811843'),(6131,'throne','83811843'),(6132,'the','83811843'),(6133,'Habsburg','83811843'),(6134,'ruler','83811843'),(6135,'and','83811843'),(6136,'patron','83811843'),(6137,'of','83811843'),(6138,'the','83811843'),(6139,'arts','83811843'),(6140,'and','83811843'),(6141,'sciences','83811843'),(6142,'Rudolf','83811843'),(6143,'II','83811843'),(6144,'15761611','83811843'),(6145,'','83811843'),(6146,'moved','83811843'),(6147,'his','83811843'),(6148,'court','83811843'),(6149,'from','83811843'),(6150,'Vienna','83811843'),(6151,'to','83811843'),(6152,'Prague','83811843'),(6153,'','83811843'),(6154,'making','83811843'),(6155,'him','83811843'),(6156,'the','83811843'),(6157,'last','83811843'),(6158,'crowned','83811843'),(6159,'King','83811843'),(6160,'of','83811843'),(6161,'Bohemia','83811843'),(6162,'to','83811843'),(6163,'live','83811843'),(6164,'at','83811843'),(6165,'Prague','83811843'),(6166,'Castle','83811843'),(6167,'Rudolf','83811843'),(6168,'II','83811843'),(6169,'was','83811843'),(6170,'a','83811843'),(6171,'real','83811843'),(6172,'character','83811843'),(6173,'He','83811843'),(6174,'had','83811843'),(6175,'a','83811843'),(6176,'pet','83811843'),(6177,'lion','83811843'),(6178,'he','83811843'),(6179,'collected','83811843'),(6180,'great','83811843'),(6181,'art','83811843'),(6182,'','83811843'),(6183,'including','83811843'),(6184,'works','83811843'),(6185,'by','83811843'),(6186,'Da','83811843'),(6187,'Vinci','83811843'),(6188,'Michaelangelo','83811843'),(6189,'and','83811843'),(6190,'Rafael','83811843'),(6191,'','83811843'),(6192,'he','83811843'),(6193,'supported','83811843'),(6194,'scientists','83811843'),(6195,'such','83811843'),(6196,'as','83811843'),(6197,'Tycho','83811843'),(6198,'de','83811843'),(6199,'Brahe','83811843'),(6200,'Johannes','83811843'),(6201,'Kepler','83811843'),(6202,'','83811843'),(6203,'as','83811843'),(6204,'well','83811843'),(6205,'as','83811843'),(6206,'artists','83811843'),(6207,'like','83811843'),(6208,'Spranger','83811843'),(6209,'and','83811843'),(6210,'Von','83811843'),(6211,'Aachen','83811843'),(6212,'and','83811843'),(6213,'he','83811843'),(6214,'was','83811843'),(6215,'a','83811843'),(6216,'personal','83811843'),(6217,'friend','83811843'),(6218,'of','83811843'),(6219,'the','83811843'),(6220,'legendary','83811843'),(6221,'Prague','83811843'),(6222,'Jewish','83811843'),(6223,'leader','83811843'),(6224,'Rabbi','83811843'),(6225,'Loew','83811843'),(6226,'It','83811843'),(6227,'is','83811843'),(6228,'said','83811843'),(6229,'that','83811843'),(6230,'he','83811843'),(6231,'also','83811843'),(6232,'financed','83811843'),(6233,'the','83811843'),(6234,'work','83811843'),(6235,'of','83811843'),(6236,'any','83811843'),(6237,'number','83811843'),(6238,'of','83811843'),(6239,'quack','83811843'),(6240,'alchemists','83811843'),(6241,'on','83811843'),(6242,'his','83811843'),(6243,'invitation','83811843'),(6244,'John','83811843'),(6245,'Dee','83811843'),(6246,'and','83811843'),(6247,'Edward','83811843'),(6248,'Kelley','83811843'),(6249,'spent','83811843'),(6250,'time','83811843'),(6251,'in','83811843'),(6252,'Prague','83811843'),(6253,'and','83811843'),(6254,'that','83811843'),(6255,'he','83811843'),(6256,'was','83811843'),(6257,'a','83811843'),(6258,'little','83811843'),(6259,'soft','83811843'),(6260,'in','83811843'),(6261,'the','83811843'),(6262,'head','83811843'),(6263,'Its','83811843'),(6264,'possible','83811843'),(6265,'that','83811843'),(6266,'the','83811843'),(6267,'Legend','83811843'),(6268,'of','83811843'),(6269,'Faust','83811843'),(6270,'who','83811843'),(6271,'lived','83811843'),(6272,'in','83811843'),(6273,'Prague','83811843'),(6274,'originated','83811843'),(6275,'at','83811843'),(6276,'this','83811843'),(6277,'time','83811843'),(6278,'of','83811843'),(6279,'scientific','83811843'),(6280,'exploration','83811843'),(6281,'\r\n\r\n','83811843'),(6282,'The','83811843'),(6283,'architectural','83811843'),(6284,'style','83811843'),(6285,'of','83811843'),(6286,'the','83811843'),(6287,'time','83811843'),(6288,'was','83811843'),(6289,'Baroque','83811843'),(6290,'which','83811843'),(6291,'','83811843'),(6292,'like','83811843'),(6293,'Rudolf','83811843'),(6294,'II','83811843'),(6295,'himself','83811843'),(6296,'','83811843'),(6297,'was','83811843'),(6298,'round','83811843'),(6299,'and','83811843'),(6300,'robust','83811843'),(6301,'flamboyant','83811843'),(6302,'and','83811843'),(6303,'a','83811843'),(6304,'little','83811843'),(6305,'gaudy','83811843'),(6306,'Baroque','83811843'),(6307,'buildings','83811843'),(6308,'like','83811843'),(6309,'the','83811843'),(6310,'Loreto','83811843'),(6311,'and','83811843'),(6312,'St','83811843'),(6313,'Nicholas','83811843'),(6314,'Church','83811843'),(6315,'in','83811843'),(6316,'Lesser','83811843'),(6317,'Town','83811843'),(6318,'Square','83811843'),(6319,'are','83811843'),(6320,'massive','83811843'),(6321,'and','83811843'),(6322,'grand','83811843'),(6323,'The','83811843'),(6324,'statues','83811843'),(6325,'that','83811843'),(6326,'top','83811843'),(6327,'them','83811843'),(6328,'appear','83811843'),(6329,'so','83811843'),(6330,'heavy','83811843'),(6331,'that','83811843'),(6332,'they','83811843'),(6333,'seem','83811843'),(6334,'likely','83811843'),(6335,'to','83811843'),(6336,'fall','83811843'),(6337,'and','83811843'),(6338,'crush','83811843'),(6339,'innocent','83811843'),(6340,'passersby','83811843'),(6341,'\r\n\r\n','83811843'),(6342,'Rudolf','83811843'),(6343,'II','83811843'),(6344,'who','83811843'),(6345,'suffered','83811843'),(6346,'periods','83811843'),(6347,'of','83811843'),(6348,'dementia','83811843'),(6349,'because','83811843'),(6350,'of','83811843'),(6351,'his','83811843'),(6352,'acute','83811843'),(6353,'case','83811843'),(6354,'of','83811843'),(6355,'syphilis','83811843'),(6356,'was','83811843'),(6357,'forced','83811843'),(6358,'by','83811843'),(6359,'his','83811843'),(6360,'family','83811843'),(6361,'to','83811843'),(6362,'resign','83811843'),(6363,'in','83811843'),(6364,'1611','83811843'),(6365,'He','83811843'),(6366,'had','83811843'),(6367,'been','83811843'),(6368,'forced','83811843'),(6369,'during','83811843'),(6370,'his','83811843'),(6371,'reign','83811843'),(6372,'to','83811843'),(6373,'concede','83811843'),(6374,'religious','83811843'),(6375,'freedom','83811843'),(6376,'to','83811843'),(6377,'the','83811843'),(6378,'Czech','83811843'),(6379,'Protestants','83811843'),(6380,'and','83811843'),(6381,'when','83811843'),(6382,'his','83811843'),(6383,'brother','83811843'),(6384,'and','83811843'),(6385,'successor','83811843'),(6386,'Matthias','83811843'),(6387,'tried','83811843'),(6388,'to','83811843'),(6389,'rescind','83811843'),(6390,'them','83811843'),(6391,'mounting','83811843'),(6392,'political','83811843'),(6393,'tensions','83811843'),(6394,'led','83811843'),(6395,'the','83811843'),(6396,'Czech','83811843'),(6397,'Estates','83811843'),(6398,'to','83811843'),(6399,'rebel','83811843'),(6400,'against','83811843'),(6401,'the','83811843'),(6402,'Habsburgs','83811843'),(6403,'once','83811843'),(6404,'again','83811843'),(6405,'\r\n\r\nThey','83811843'),(6406,'began','83811843'),(6407,'their','83811843'),(6408,'rebellion','83811843'),(6409,'in','83811843'),(6410,'grand','83811843'),(6411,'Czech','83811843'),(6412,'style','83811843'),(6413,'with','83811843'),(6414,'the','83811843'),(6415,'Second','83811843'),(6416,'Defenestration','83811843'),(6417,'of','83811843'),(6418,'Prague','83811843'),(6419,'in','83811843'),(6420,'1618','83811843'),(6421,'In','83811843'),(6422,'this','83811843'),(6423,'second','83811843'),(6424,'defenestration','83811843'),(6425,'two','83811843'),(6426,'vice','83811843'),(6427,'regents','83811843'),(6428,'of','83811843'),(6429,'the','83811843'),(6430,'Austrian','83811843'),(6431,'monarch','83811843'),(6432,'and','83811843'),(6433,'some','83811843'),(6434,'governors','83811843'),(6435,'of','83811843'),(6436,'the','83811843'),(6437,'Czech','83811843'),(6438,'lands','83811843'),(6439,'were','83811843'),(6440,'thrown','83811843'),(6441,'out','83811843'),(6442,'of','83811843'),(6443,'a','83811843'),(6444,'tower','83811843'),(6445,'window','83811843'),(6446,'at','83811843'),(6447,'Prague','83811843'),(6448,'Castle','83811843'),(6449,'They','83811843'),(6450,'were','83811843'),(6451,'not','83811843'),(6452,'killed','83811843'),(6453,'however','83811843'),(6454,'as','83811843'),(6455,'they','83811843'),(6456,'fell','83811843'),(6457,'onto','83811843'),(6458,'a','83811843'),(6459,'pile','83811843'),(6460,'of','83811843'),(6461,'garbage','83811843'),(6462,'mostly','83811843'),(6463,'straw','83811843'),(6464,'which','83811843'),(6465,'had','83811843'),(6466,'accumulated','83811843'),(6467,'in','83811843'),(6468,'the','83811843'),(6469,'castle','83811843'),(6470,'moat','83811843'),(6471,'So','83811843'),(6472,'it','83811843'),(6473,'can','83811843'),(6474,'be','83811843'),(6475,'said','83811843'),(6476,'that','83811843'),(6477,'they','83811843'),(6478,'at','83811843'),(6479,'least','83811843'),(6480,'the','83811843'),(6481,'nonAustrian','83811843'),(6482,'of','83811843'),(6483,'the','83811843'),(6484,'throwees','83811843'),(6485,'were','83811843'),(6486,'the','83811843'),(6487,'worlds','83811843'),(6488,'first','83811843'),(6489,'bouncing','83811843'),(6490,'Czechs','83811843'),(6491,'To','83811843'),(6492,'add','83811843'),(6493,'insult','83811843'),(6494,'to','83811843'),(6495,'injury','83811843'),(6496,'or','83811843'),(6497,'perhaps','83811843'),(6498,'insult','83811843'),(6499,'to','83811843'),(6500,'insult?','83811843'),(6501,'the','83811843'),(6502,'Bohemian','83811843'),(6503,'diet','83811843'),(6504,'of','83811843'),(6505,'the','83811843'),(6506,'Estates','83811843'),(6507,'then','83811843'),(6508,'elected','83811843'),(6509,'Frederick','83811843'),(6510,'V','83811843'),(6511,'of','83811843'),(6512,'the','83811843'),(6513,'Palatinate','83811843'),(6514,'also','83811843'),(6515,'known','83811843'),(6516,'as','83811843'),(6517,'Frederick','83811843'),(6518,'Faltz','83811843'),(6519,'or','83811843'),(6520,'as','83811843'),(6521,'the','83811843'),(6522,'Winter','83811843'),(6523,'King','83811843'),(6524,'as','83811843'),(6525,'their','83811843'),(6526,'ruler','83811843'),(6527,'thinking','83811843'),(6528,'that','83811843'),(6529,'his','83811843'),(6530,'fatherinlaw','83811843'),(6531,'','83811843'),(6532,'the','83811843'),(6533,'English','83811843'),(6534,'King','83811843'),(6535,'James','83811843'),(6536,'I','83811843'),(6537,'','83811843'),(6538,'would','83811843'),(6539,'come','83811843'),(6540,'to','83811843'),(6541,'their','83811843'),(6542,'aid','83811843'),(6543,'They','83811843'),(6544,'could','83811843'),(6545,'not','83811843'),(6546,'have','83811843'),(6547,'been','83811843'),(6548,'more','83811843'),(6549,'wrong','83811843'),(6550,'\r\n\r\n','83811843'),(6551,'This','83811843'),(6552,'rebellion','83811843'),(6553,'of','83811843'),(6554,'the','83811843'),(6555,'Czech','83811843'),(6556,'Estates','83811843'),(6557,'was','83811843'),(6558,'particularly','83811843'),(6559,'unsuccessful','83811843'),(6560,'It','83811843'),(6561,'culminated','83811843'),(6562,'in','83811843'),(6563,'the','83811843'),(6564,'Battle','83811843'),(6565,'of','83811843'),(6566,'the','83811843'),(6567,'White','83811843'),(6568,'Mountain','83811843'),(6569,'in','83811843'),(6570,'1620','83811843'),(6571,'in','83811843'),(6572,'which','83811843'),(6573,'the','83811843'),(6574,'Estates','83811843'),(6575,'were','83811843'),(6576,'incontrovertibly','83811843'),(6577,'defeated','83811843'),(6578,'by','83811843'),(6579,'the','83811843'),(6580,'Habsburgs','83811843'),(6581,'They','83811843'),(6582,'had','83811843'),(6583,'been','83811843'),(6584,'successful','83811843'),(6585,'only','83811843'),(6586,'in','83811843'),(6587,'sparking','83811843'),(6588,'the','83811843'),(6589,'Thirty','83811843'),(6590,'Years','83811843'),(6591,'War','83811843'),(6592,'which','83811843'),(6593,'was','83811843'),(6594,'to','83811843'),(6595,'devastate','83811843'),(6596,'much','83811843'),(6597,'of','83811843'),(6598,'Europe','83811843'),(6599,'Incidentally','83811843'),(6600,'the','83811843'),(6601,'thenmercenary','83811843'),(6602,'laterphilosopher','83811843'),(6603,'Rene','83811843'),(6604,'Descartes','83811843'),(6605,'fought','83811843'),(6606,'at','83811843'),(6607,'the','83811843'),(6608,'Battle','83811843'),(6609,'of','83811843'),(6610,'the','83811843'),(6611,'White','83811843'),(6612,'Mountain','83811843'),(6613,'on','83811843'),(6614,'the','83811843'),(6615,'side','83811843'),(6616,'of','83811843'),(6617,'the','83811843'),(6618,'Habsburgs','83811843'),(6619,'\r\n\r\nWell','83811843'),(6620,'the','83811843'),(6621,'Habsburgs','83811843'),(6622,'quite','83811843'),(6623,'understandably','83811843'),(6624,'did','83811843'),(6625,'not','83811843'),(6626,'appreciate','83811843'),(6627,'these','83811843'),(6628,'disturbances','83811843'),(6629,'which','83811843'),(6630,'were','83811843'),(6631,'emanating','83811843'),(6632,'from','83811843'),(6633,'the','83811843'),(6634,'northern','83811843'),(6635,'reaches','83811843'),(6636,'of','83811843'),(6637,'their','83811843'),(6638,'empire','83811843'),(6639,'But','83811843'),(6640,'the','83811843'),(6641,'methods','83811843'),(6642,'that','83811843'),(6643,'they','83811843'),(6644,'used','83811843'),(6645,'to','83811843'),(6646,'subdue','83811843'),(6647,'the','83811843'),(6648,'protestant','83811843'),(6649,'Estates','83811843'),(6650,'after','83811843'),(6651,'the','83811843'),(6652,'Battle','83811843'),(6653,'of','83811843'),(6654,'the','83811843'),(6655,'White','83811843'),(6656,'Mountain','83811843'),(6657,'were','83811843'),(6658,'extraordinarily','83811843'),(6659,'harsh','83811843'),(6660,'\r\n\r\nFirst','83811843'),(6661,'they','83811843'),(6662,'executed','83811843'),(6663,'27','83811843'),(6664,'nobles','83811843'),(6665,'','83811843'),(6666,'leaders','83811843'),(6667,'of','83811843'),(6668,'the','83811843'),(6669,'Estates','83811843'),(6670,'who','83811843'),(6671,'had','83811843'),(6672,'fought','83811843'),(6673,'on','83811843'),(6674,'the','83811843'),(6675,'losing','83811843'),(6676,'side','83811843'),(6677,'against','83811843'),(6678,'the','83811843'),(6679,'Habsburgs','83811843'),(6680,'at','83811843'),(6681,'the','83811843'),(6682,'Battle','83811843'),(6683,'of','83811843'),(6684,'the','83811843'),(6685,'White','83811843'),(6686,'Mountain','83811843'),(6687,'','83811843'),(6688,'in','83811843'),(6689,'Pragues','83811843'),(6690,'Old','83811843'),(6691,'Town','83811843'),(6692,'Square','83811843'),(6693,'in','83811843'),(6694,'May','83811843'),(6695,'1621','83811843'),(6696,'Some','83811843'),(6697,'of','83811843'),(6698,'the','83811843'),(6699,'heads','83811843'),(6700,'of','83811843'),(6701,'the','83811843'),(6702,'decapitated','83811843'),(6703,'leaders','83811843'),(6704,'of','83811843'),(6705,'the','83811843'),(6706,'rebellion','83811843'),(6707,'were','83811843'),(6708,'then','83811843'),(6709,'hung','83811843'),(6710,'strategically','83811843'),(6711,'around','83811843'),(6712,'Prague','83811843'),(6713,'','83811843'),(6714,'for','83811843'),(6715,'instance','83811843'),(6716,'on','83811843'),(6717,'the','83811843'),(6718,'Old','83811843'),(6719,'Town','83811843'),(6720,'bridge','83811843'),(6721,'tower','83811843'),(6722,'of','83811843'),(6723,'the','83811843'),(6724,'Charles','83811843'),(6725,'Bridge','83811843'),(6726,'','83811843'),(6727,'to','83811843'),(6728,'serve','83811843'),(6729,'as','83811843'),(6730,'an','83811843'),(6731,'ominous','83811843'),(6732,'reminder','83811843'),(6733,'to','83811843'),(6734,'the','83811843'),(6735,'people','83811843'),(6736,'of','83811843'),(6737,'Who','83811843'),(6738,'was','83811843'),(6739,'Boss','83811843'),(6740,'It','83811843'),(6741,'is','83811843'),(6742,'said','83811843'),(6743,'that','83811843'),(6744,'every','83811843'),(6745,'year','83811843'),(6746,'at','83811843'),(6747,'the','83811843'),(6748,'exact','83811843'),(6749,'hour','83811843'),(6750,'and','83811843'),(6751,'on','83811843'),(6752,'the','83811843'),(6753,'exact','83811843'),(6754,'day','83811843'),(6755,'that','83811843'),(6756,'they','83811843'),(6757,'were','83811843'),(6758,'killed','83811843'),(6759,'the','83811843'),(6760,'ghosts','83811843'),(6761,'of','83811843'),(6762,'the','83811843'),(6763,'27','83811843'),(6764,'wronglyexecuted','83811843'),(6765,'nobles','83811843'),(6766,'can','83811843'),(6767,'be','83811843'),(6768,'seen','83811843'),(6769,'haunting','83811843'),(6770,'the','83811843'),(6771,'spot','83811843'),(6772,'where','83811843'),(6773,'they','83811843'),(6774,'lost','83811843'),(6775,'their','83811843'),(6776,'heads','83811843'),(6777,'The','83811843'),(6778,'place','83811843'),(6779,'today','83811843'),(6780,'is','83811843'),(6781,'marked','83811843'),(6782,'by','83811843'),(6783,'27','83811843'),(6784,'crosses','83811843'),(6785,'in','83811843'),(6786,'the','83811843'),(6787,'cobblestones','83811843'),(6788,'of','83811843'),(6789,'Old','83811843'),(6790,'Town','83811843'),(6791,'Square','83811843'),(6792,'next','83811843'),(6793,'to','83811843'),(6794,'the','83811843'),(6795,'Astronomical','83811843'),(6796,'Clock','83811843'),(6797,'The','83811843'),(6798,'heads','83811843'),(6799,'hung','83811843'),(6800,'there','83811843'),(6801,'for','83811843'),(6802,'11','83811843'),(6803,'long','83811843'),(6804,'and','83811843'),(6805,'lonely','83811843'),(6806,'years','83811843'),(6807,'before','83811843'),(6808,'finally','83811843'),(6809,'being','83811843'),(6810,'taken','83811843'),(6811,'down','83811843'),(6812,'and','83811843'),(6813,'given','83811843'),(6814,'a','83811843'),(6815,'proper','83811843'),(6816,'burial','83811843'),(6817,'by','83811843'),(6818,'the','83811843'),(6819,'Saxons','83811843'),(6820,'who','83811843'),(6821,'occupied','83811843'),(6822,'Prague','83811843'),(6823,'in','83811843'),(6824,'1632','83811843'),(6825,'in','83811843'),(6826,'the','83811843'),(6827,'course','83811843'),(6828,'of','83811843'),(6829,'the','83811843'),(6830,'Thirty','83811843'),(6831,'Years','83811843'),(6832,'War','83811843'),(6833,'\r\n\r\nThe','83811843'),(6834,'Thirty','83811843'),(6835,'Years','83811843'),(6836,'War','83811843'),(6837,'which','83811843'),(6838,'had','83811843'),(6839,'begun','83811843'),(6840,'in','83811843'),(6841,'Prague','83811843'),(6842,'ended','83811843'),(6843,'there','83811843'),(6844,'too','83811843'),(6845,'In','83811843'),(6846,'1648','83811843'),(6847,'the','83811843'),(6848,'Swedes','83811843'),(6849,'had','83811843'),(6850,'succeeded','83811843'),(6851,'in','83811843'),(6852,'capturing','83811843'),(6853,'the','83811843'),(6854,'Lesser','83811843'),(6855,'Quarter','83811843'),(6856,'and','83811843'),(6857,'plundering','83811843'),(6858,'it','83811843'),(6859,'and','83811843'),(6860,'Prague','83811843'),(6861,'Castle','83811843'),(6862,'carrying','83811843'),(6863,'off','83811843'),(6864,'many','83811843'),(6865,'valuable','83811843'),(6866,'artworks','83811843'),(6867,'which','83811843'),(6868,'decorate','83811843'),(6869,'Swedish','83811843'),(6870,'castles','83811843'),(6871,'and','83811843'),(6872,'palaces','83811843'),(6873,'to','83811843'),(6874,'this','83811843'),(6875,'day','83811843'),(6876,'They','83811843'),(6877,'were','83811843'),(6878,'defeated','83811843'),(6879,'by','83811843'),(6880,'a','83811843'),(6881,'ragtag','83811843'),(6882,'force','83811843'),(6883,'of','83811843'),(6884,'Czech','83811843'),(6885,'university','83811843'),(6886,'students','83811843'),(6887,'and','83811843'),(6888,'residents','83811843'),(6889,'of','83811843'),(6890,'Pragues','83811843'),(6891,'Jewish','83811843'),(6892,'town','83811843'),(6893,'on','83811843'),(6894,'the','83811843'),(6895,'Charles','83811843'),(6896,'Bridge','83811843'),(6897,'in','83811843'),(6898,'the','83811843'),(6899,'last','83811843'),(6900,'battle','83811843'),(6901,'of','83811843'),(6902,'the','83811843'),(6903,'Thirty','83811843'),(6904,'Years','83811843'),(6905,'War','83811843'),(6906,'It','83811843'),(6907,'is','83811843'),(6908,'said','83811843'),(6909,'that','83811843'),(6910,'the','83811843'),(6911,'Swedes','83811843'),(6912,'were','83811843'),(6913,'beseeched','83811843'),(6914,'to','83811843'),(6915,'come','83811843'),(6916,'by','83811843'),(6917,'the','83811843'),(6918,'exiled','83811843'),(6919,'Protestant','83811843'),(6920,'leader','83811843'),(6921,'Comenius','83811843'),(6922,'Jan','83811843'),(6923,'Amos','83811843'),(6924,'Komensky','83811843'),(6925,'','83811843'),(6926,'he','83811843'),(6927,'had','83811843'),(6928,'wanted','83811843'),(6929,'them','83811843'),(6930,'to','83811843'),(6931,'come','83811843'),(6932,'to','83811843'),(6933,'the','83811843'),(6934,'aid','83811843'),(6935,'of','83811843'),(6936,'the','83811843'),(6937,'bynow','83811843'),(6938,'utterly','83811843'),(6939,'defeated','83811843'),(6940,'Protestant','83811843'),(6941,'forces','83811843'),(6942,'but','83811843'),(6943,'by','83811843'),(6944,'the','83811843'),(6945,'end','83811843'),(6946,'of','83811843'),(6947,'the','83811843'),(6948,'war','83811843'),(6949,'it','83811843'),(6950,'was','83811843'),(6951,'already','83811843'),(6952,'too','83811843'),(6953,'late','83811843'),(6954,'\r\n\r\nAs','83811843'),(6955,'a','83811843'),(6956,'result','83811843'),(6957,'of','83811843'),(6958,'all','83811843'),(6959,'this','83811843'),(6960,'tumult','83811843'),(6961,'the','83811843'),(6962,'Czech','83811843'),(6963,'lands','83811843'),(6964,'lost','83811843'),(6965,'the','83811843'),(6966,'power','83811843'),(6967,'to','83811843'),(6968,'elect','83811843'),(6969,'their','83811843'),(6970,'own','83811843'),(6971,'rulers','83811843'),(6972,'and','83811843'),(6973,'the','83811843'),(6974,'Czech','83811843'),(6975,'crown','83811843'),(6976,'was','83811843'),(6977,'made','83811843'),(6978,'hereditary','83811843'),(6979,'for','83811843'),(6980,'Habsburg','83811843'),(6981,'rulers','83811843'),(6982,'The','83811843'),(6983,'Habsburgs','83811843'),(6984,'banned','83811843'),(6985,'all','83811843'),(6986,'religions','83811843'),(6987,'other','83811843'),(6988,'than','83811843'),(6989,'Catholicism','83811843'),(6990,'The','83811843'),(6991,'property','83811843'),(6992,'of','83811843'),(6993,'Protestant','83811843'),(6994,'members','83811843'),(6995,'of','83811843'),(6996,'the','83811843'),(6997,'nobility','83811843'),(6998,'was','83811843'),(6999,'confiscated','83811843'),(7000,'and','83811843'),(7001,'handed','83811843'),(7002,'out','83811843'),(7003,'to','83811843'),(7004,'loyal','83811843'),(7005,'Catholics','83811843'),(7006,'\r\n\r\nThose','83811843'),(7007,'Czech','83811843'),(7008,'Protestants','83811843'),(7009,'who','83811843'),(7010,'werent','83811843'),(7011,'already','83811843'),(7012,'in','83811843'),(7013,'exile','83811843'),(7014,'were','83811843'),(7015,'forced','83811843'),(7016,'to','83811843'),(7017,'convert','83811843'),(7018,'to','83811843'),(7019,'Catholocism','83811843'),(7020,'Only','83811843'),(7021,'a','83811843'),(7022,'very','83811843'),(7023,'few','83811843'),(7024,'had','83811843'),(7025,'the','83811843'),(7026,'courage','83811843'),(7027,'to','83811843'),(7028,'continue','83811843'),(7029,'to','83811843'),(7030,'practice','83811843'),(7031,'their','83811843'),(7032,'religion','83811843'),(7033,'in','83811843'),(7034,'secret','83811843'),(7035,'\r\n\r\n\r\n\r\nThe','83811843'),(7036,'population','83811843'),(7037,'of','83811843'),(7038,'the','83811843'),(7039,'country','83811843'),(7040,'had','83811843'),(7041,'been','83811843'),(7042,'halved','83811843'),(7043,'by','83811843'),(7044,'the','83811843'),(7045,'sundry','83811843'),(7046,'aftermath','83811843'),(7047,'of','83811843'),(7048,'the','83811843'),(7049,'Battle','83811843'),(7050,'of','83811843'),(7051,'the','83811843'),(7052,'White','83811843'),(7053,'Mountain','83811843'),(7054,'and','83811843'),(7055,'as','83811843'),(7056,'fewer','83811843'),(7057,'people','83811843'),(7058,'also','83811843'),(7059,'means','83811843'),(7060,'fewer','83811843'),(7061,'people','83811843'),(7062,'paying','83811843'),(7063,'tax','83811843'),(7064,'taxes','83811843'),(7065,'were','83811843'),(7066,'raised','83811843'),(7067,'\r\n\r\n','83811843'),(7068,'Things','83811843'),(7069,'were','83811843'),(7070,'pretty','83811843'),(7071,'bad','83811843'),(7072,'all','83811843'),(7073,'around','83811843'),(7074,'The','83811843'),(7075,'rich','83811843'),(7076,'got','83811843'),(7077,'richer','83811843'),(7078,'the','83811843'),(7079,'poor','83811843'),(7080,'got','83811843'),(7081,'poorer','83811843'),(7082,'and','83811843'),(7083,'the','83811843'),(7084,'economy','83811843'),(7085,'went','83811843'),(7086,'into','83811843'),(7087,'a','83811843'),(7088,'deep','83811843'),(7089,'recession','83811843'),(7090,'Luckily','83811843'),(7091,'it','83811843'),(7092,'was','83811843'),(7093,'high','83811843'),(7094,'time','83811843'),(7095,'for','83811843'),(7096,'the','83811843'),(7097,'Enlightenment','83811843'),(7098,'to','83811843'),(7099,'make','83811843'),(7100,'an','83811843'),(7101,'entrance','83811843'),(7102,'The','83811843'),(7103,'administrative','83811843'),(7104,'reforms','83811843'),(7105,'of','83811843'),(7106,'Maria','83811843'),(7107,'Theresa','83811843'),(7108,'and','83811843'),(7109,'her','83811843'),(7110,'son','83811843'),(7111,'Joseph','83811843'),(7112,'II','83811843'),(7113,'did','83811843'),(7114,'much','83811843'),(7115,'to','83811843'),(7116,'alleviate','83811843'),(7117,'the','83811843'),(7118,'situation','83811843'),(7119,'\r\n\r\nThese','83811843'),(7120,'two','83811843'),(7121,'rulers','83811843'),(7122,'reduced','83811843'),(7123,'the','83811843'),(7124,'privileges','83811843'),(7125,'of','83811843'),(7126,'the','83811843'),(7127,'now','83811843'),(7128,'allCatholic','83811843'),(7129,'nobility','83811843'),(7130,'who','83811843'),(7131,'are','83811843'),(7132,'also','83811843'),(7133,'','83811843'),(7134,'perhaps','83811843'),(7135,'to','83811843'),(7136,'confuse','83811843'),(7137,'us','83811843'),(7138,'all','83811843'),(7139,'','83811843'),(7140,'known','83811843'),(7141,'as','83811843'),(7142,'the','83811843'),(7143,'Estates','83811843'),(7144,'as','83811843'),(7145,'the','83811843'),(7146,'formerly','83811843'),(7147,'Protestant','83811843'),(7148,'nobility','83811843'),(7149,'had','83811843'),(7150,'also','83811843'),(7151,'been','83811843'),(7152,'called','83811843'),(7153,'They','83811843'),(7154,'expelled','83811843'),(7155,'the','83811843'),(7156,'Jesuits','83811843'),(7157,'in','83811843'),(7158,'1773','83811843'),(7159,'and','83811843'),(7160,'they','83811843'),(7161,'attempted','83811843'),(7162,'to','83811843'),(7163,'end','83811843'),(7164,'social','83811843'),(7166,'by','83811843'),(7167,'abolishing','83811843'),(7168,'serfdom','83811843'),(7169,'in','83811843'),(7170,'1781','83811843'),(7171,'In','83811843'),(7172,'the','83811843'),(7173,'same','83811843'),(7174,'year','83811843'),(7175,'they','83811843'),(7176,'issued','83811843'),(7177,'the','83811843'),(7178,'Edict','83811843'),(7179,'of','83811843'),(7180,'Tolerance','83811843'),(7181,'which','83811843'),(7182,'permitted','83811843'),(7183,'the','83811843'),(7184,'free','83811843'),(7185,'exercise','83811843'),(7186,'of','83811843'),(7187,'religion','83811843'),(7188,'and','83811843'),(7189,'the','83811843'),(7190,'secularization','83811843'),(7191,'of','83811843'),(7192,'education','83811843'),(7193,'science','83811843'),(7194,'and','83811843'),(7195,'art','83811843'),(7196,'Pragues','83811843'),(7197,'Jewish','83811843'),(7198,'town','83811843'),(7199,'is','83811843'),(7200,'called','83811843'),(7201,'Josefov','83811843'),(7202,'to','83811843'),(7203,'this','83811843'),(7204,'day','83811843'),(7205,'in','83811843'),(7206,'honor','83811843'),(7207,'of','83811843'),(7208,'Josef','83811843'),(7209,'II','83811843'),(7210,'\r\n\r\nThe','83811843'),(7211,'Industrial','83811843'),(7212,'Revolution','83811843'),(7213,'as','83811843'),(7214,'most','83811843'),(7215,'revolutions','83811843'),(7216,'do','83811843'),(7217,'started','83811843'),(7218,'off','83811843'),(7219,'small','83811843'),(7220,'at','83811843'),(7221,'the','83811843'),(7222,'end','83811843'),(7223,'of','83811843'),(7224,'the','83811843'),(7225,'18th','83811843'),(7226,'century','83811843'),(7227,'and','83811843'),(7228,'then','83811843'),(7229,'really','83811843'),(7230,'picked','83811843'),(7231,'up','83811843'),(7232,'steam','83811843'),(7233,'','83811843'),(7234,'so','83811843'),(7235,'to','83811843'),(7236,'speak','83811843'),(7237,'','83811843'),(7238,'in','83811843'),(7239,'the','83811843'),(7240,'19th','83811843'),(7241,'century','83811843'),(7242,'It','83811843'),(7243,'was','83811843'),(7244,'to','83811843'),(7245,'have','83811843'),(7246,'a','83811843'),(7247,'monumental','83811843'),(7248,'impact','83811843'),(7249,'on','83811843'),(7250,'the','83811843'),(7251,'Czech','83811843'),(7252,'lands','83811843'),(7253,'\r\n\r\nThe','83811843'),(7254,'first','83811843'),(7255,'factories','83811843'),(7256,'in','83811843'),(7257,'the','83811843'),(7258,'Austrian','83811843'),(7259,'Empire','83811843'),(7260,'were','83811843'),(7261,'built','83811843'),(7262,'in','83811843'),(7263,'the','83811843'),(7264,'mountainous','83811843'),(7265,'border','83811843'),(7266,'regions','83811843'),(7267,'of','83811843'),(7268,'the','83811843'),(7269,'Czech','83811843'),(7270,'lands','83811843'),(7271,'where','83811843'),(7272,'there','83811843'),(7273,'was','83811843'),(7274,'no','83811843'),(7275,'shortage','83811843'),(7276,'of','83811843'),(7277,'water','83811843'),(7278,'power','83811843'),(7279,'from','83811843'),(7280,'rushing','83811843'),(7281,'streams','83811843'),(7282,'and','83811843'),(7283,'rivers','83811843'),(7284,'to','83811843'),(7285,'run','83811843'),(7286,'them','83811843'),(7287,'While','83811843'),(7288,'it','83811843'),(7289,'did','83811843'),(7290,'not','83811843'),(7291,'take','83811843'),(7292,'long','83811843'),(7293,'for','83811843'),(7294,'steam','83811843'),(7295,'power','83811843'),(7296,'to','83811843'),(7297,'be','83811843'),(7298,'harnessed','83811843'),(7299,'the','83811843'),(7300,'industrial','83811843'),(7301,'boundaries','83811843'),(7302,'had','83811843'),(7303,'been','83811843'),(7304,'drawn','83811843'),(7305,'and','83811843'),(7306,'these','83811843'),(7307,'regions','83811843'),(7308,'remain','83811843'),(7309,'predominantly','83811843'),(7310,'industrial','83811843'),(7311,'to','83811843'),(7312,'this','83811843'),(7313,'day','83811843'),(7314,'\r\n\r\nRailway','83811843'),(7315,'lines','83811843'),(7316,'were','83811843'),(7317,'laid','83811843'),(7318,'in','83811843'),(7319,'the','83811843'),(7320,'Czech','83811843'),(7321,'lands','83811843'),(7322,'by','83811843'),(7323,'Jan','83811843'),(7324,'Perner','83811843'),(7325,'','83811843'),(7326,'who','83811843'),(7327,'met','83811843'),(7328,'his','83811843'),(7329,'death','83811843'),(7330,'when','83811843'),(7331,'he','83811843'),(7332,'hit','83811843'),(7333,'his','83811843'),(7334,'head','83811843'),(7335,'against','83811843'),(7336,'a','83811843'),(7337,'pole','83811843'),(7338,'while','83811843'),(7339,'leaning','83811843'),(7340,'out','83811843'),(7341,'of','83811843'),(7342,'the','83811843'),(7343,'window','83811843'),(7344,'of','83811843'),(7345,'a','83811843'),(7346,'moving','83811843'),(7347,'train','83811843'),(7348,'','83811843'),(7349,'an','83811843'),(7350,'activity','83811843'),(7351,'which','83811843'),(7352,'has','83811843'),(7353,'been','83811843'),(7354,'forbidden','83811843'),(7355,'in','83811843'),(7356,'this','83811843'),(7357,'country','83811843'),(7358,'since','83811843'),(7359,'the','83811843'),(7360,'Czech','83811843'),(7361,'railway','83811843'),(7362,'pioneers','83811843'),(7363,'tragic','83811843'),(7364,'accident','83811843'),(7365,'','83811843'),(7366,'Trams','83811843'),(7367,'mostly','83811843'),(7368,'constructed','83811843'),(7369,'by','83811843'),(7370,'the','83811843'),(7371,'Czech','83811843'),(7372,'Thomas','83811843'),(7373,'Edison','83811843'),(7374,'Frantisek','83811843'),(7375,'Krizik','83811843'),(7376,'began','83811843'),(7377,'to','83811843'),(7378,'carry','83811843'),(7379,'people','83811843'),(7380,'around','83811843'),(7381,'on','83811843'),(7382,'their','83811843'),(7383,'errands','83811843'),(7384,'in','83811843'),(7385,'and','83811843'),(7386,'between','83811843'),(7387,'major','83811843'),(7388,'towns','83811843'),(7389,'in','83811843'),(7390,'those','83811843'),(7391,'days','83811843'),(7392,'tram','83811843'),(7393,'lines','83811843'),(7394,'connected','83811843'),(7395,'the','83811843'),(7396,'cities','83811843'),(7397,'of','83811843'),(7398,'Bratislava','83811843'),(7399,'Budapest','83811843'),(7400,'and','83811843'),(7401,'Vienna','83811843'),(7402,'to','83811843'),(7403,'each','83811843'),(7404,'other','83811843'),(7405,'','83811843'),(7406,'about','83811843'),(7407,'a','83811843'),(7408,'onehour','83811843'),(7409,'ride','83811843'),(7410,'It','83811843'),(7411,'was','83811843'),(7412,'at','83811843'),(7413,'this','83811843'),(7414,'time','83811843'),(7415,'too','83811843'),(7416,'that','83811843'),(7417,'Gregor','83811843'),(7418,'Mendel','83811843'),(7419,'','83811843'),(7420,'was','83811843'),(7421,'conducting','83811843'),(7422,'his','83811843'),(7423,'famous','83811843'),(7424,'experiments','83811843'),(7425,'on','83811843'),(7426,'hereditary','83811843'),(7427,'with','83811843'),(7428,'peas','83811843'),(7429,'in','83811843'),(7430,'a','83811843'),(7431,'monastery','83811843'),(7432,'in','83811843'),(7433,'Moravia','83811843'),(7434,'and','83811843'),(7435,'that','83811843'),(7436,'Jan','83811843'),(7437,'Evangelista','83811843'),(7438,'Purkyne','83811843'),(7439,'peered','83811843'),(7440,'into','83811843'),(7441,'his','83811843'),(7442,'microscope','83811843'),(7443,'one','83811843'),(7444,'day','83811843'),(7445,'to','83811843'),(7446,'discover','83811843'),(7447,'a','83811843'),(7448,'cell','83811843'),(7449,'looking','83811843'),(7450,'back','83811843'),(7451,'at','83811843'),(7452,'him','83811843'),(7453,'he','83811843'),(7454,'was','83811843'),(7455,'the','83811843'),(7456,'first','83811843'),(7457,'person','83811843'),(7458,'to','83811843'),(7459,'recognize','83811843'),(7460,'it','83811843'),(7461,'as','83811843'),(7462,'such','83811843'),(7463,'\r\n\r\n','83811843'),(7464,'The','83811843'),(7465,'major','83811843'),(7466,'architectural','83811843'),(7467,'styles','83811843'),(7468,'of','83811843'),(7469,'the','83811843'),(7470,'time','83811843'),(7471,'were','83811843'),(7472,'Classicist','83811843'),(7473,'and','83811843'),(7474,'Empire','83811843'),(7475,'both','83811843'),(7476,'of','83811843'),(7477,'which','83811843'),(7478,'used','83811843'),(7479,'classical','83811843'),(7480,'Greek','83811843'),(7481,'and','83811843'),(7482,'Roman','83811843'),(7483,'motifs','83811843'),(7484,'in','83811843'),(7485,'a','83811843'),(7486,'balanced','83811843'),(7487,'and','83811843'),(7488,'simple','83811843'),(7489,'design','83811843'),(7490,'Two','83811843'),(7491,'buildings','83811843'),(7492,'which','83811843'),(7493,'are','83811843'),(7494,'closely','83811843'),(7495,'associated','83811843'),(7496,'with','83811843'),(7497,'Mozarts','83811843'),(7498,'stay','83811843'),(7499,'in','83811843'),(7500,'Prague','83811843'),(7501,'in','83811843'),(7502,'the','83811843'),(7503,'late','83811843'),(7504,'18th','83811843'),(7505,'century','83811843'),(7506,'are','83811843'),(7507,'excellent','83811843'),(7508,'examples','83811843'),(7509,'of','83811843'),(7510,'these','83811843'),(7511,'styles:','83811843'),(7512,'the','83811843'),(7513,'Estates','83811843'),(7514,'Theatre','83811843'),(7515,'in','83811843'),(7516,'which','83811843'),(7517,'Mozart','83811843'),(7518,'conducted','83811843'),(7519,'the','83811843'),(7520,'premier','83811843'),(7521,'of','83811843'),(7522,'Don','83811843'),(7523,'Giovanni','83811843'),(7524,'is','83811843'),(7525,'Classicist','83811843'),(7526,'and','83811843'),(7527,'the','83811843'),(7528,'Bertramka','83811843'),(7529,'villa','83811843'),(7530,'where','83811843'),(7531,'he','83811843'),(7532,'stayed','83811843'),(7533,'with','83811843'),(7534,'the','83811843'),(7535,'Dusek','83811843'),(7536,'family','83811843'),(7537,'is','83811843'),(7538,'one','83811843'),(7539,'of','83811843'),(7540,'the','83811843'),(7541,'purest','83811843'),(7542,'examples','83811843'),(7543,'of','83811843'),(7544,'Empire','83811843'),(7545,'that','83811843'),(7546,'exists','83811843'),(7547,'in','83811843'),(7548,'the','83811843'),(7549,'Czech','83811843'),(7550,'Republic','83811843'),(7551,'But','83811843'),(7552,'we','83811843'),(7553,'digress','83811843'),(7554,'\r\n\r\n','83811843'),(7555,'Industrialization','83811843'),(7556,'was','83811843'),(7557,'not','83811843'),(7558,'the','83811843'),(7559,'only','83811843'),(7560,'big','83811843'),(7561,'change','83811843'),(7562,'taking','83811843'),(7563,'place','83811843'),(7564,'in','83811843'),(7565,'the','83811843'),(7566,'Austrian','83811843'),(7567,'Empire','83811843'),(7568,'at','83811843'),(7569,'this','83811843'),(7570,'time','83811843'),(7571,'The','83811843'),(7572,'Czech','83811843'),(7573,'nation','83811843'),(7574,'like','83811843'),(7575,'most','83811843'),(7576,'of','83811843'),(7577,'the','83811843'),(7578,'others','83811843'),(7579,'under','83811843'),(7580,'Austrian','83811843'),(7581,'rule','83811843'),(7582,'was','83811843'),(7583,'also','83811843'),(7584,'going','83811843'),(7585,'through','83811843'),(7586,'political','83811843'),(7587,'and','83811843'),(7588,'cultural','83811843'),(7589,'changes','83811843'),(7590,'leading','83811843'),(7591,'to','83811843'),(7592,'demands','83811843'),(7593,'for','83811843'),(7594,'greater','83811843'),(7595,'autonomy','83811843'),(7596,'and','83811843'),(7597,'self','83811843'),(7598,'determination','83811843'),(7599,'for','83811843'),(7600,'the','83811843'),(7601,'different','83811843'),(7602,'nations','83811843'),(7603,'under','83811843'),(7604,'Austrian','83811843'),(7605,'rule','83811843'),(7606,'\r\n\r\nIn','83811843'),(7607,'this','83811843'),(7608,'country','83811843'),(7609,'the','83811843'),(7610,'push','83811843'),(7611,'for','83811843'),(7612,'autonomy','83811843'),(7613,'was','83811843'),(7614,'known','83811843'),(7615,'as','83811843'),(7616,'the','83811843'),(7617,'Czech','83811843'),(7618,'National','83811843'),(7619,'Revival','83811843'),(7620,'movement','83811843'),(7621,'Narodni','83811843'),(7622,'obrozeni','83811843'),(7623,'The','83811843'),(7624,'dominant','83811843'),(7625,'political','83811843'),(7626,'leaders','83811843'),(7627,'of','83811843'),(7628,'the','83811843'),(7629,'movement','83811843'),(7630,'','83811843'),(7631,'Frantisek','83811843'),(7632,'Palacky','83811843'),(7633,'Frantisek','83811843'),(7634,'Ladislav','83811843'),(7635,'Rieger','83811843'),(7636,'and','83811843'),(7637,'Karel','83811843'),(7638,'Havlicek','83811843'),(7639,'Borovsky','83811843'),(7640,'','83811843'),(7641,'were','83811843'),(7642,'liberals','83811843'),(7643,'This','83811843'),(7644,'meant','83811843'),(7645,'that','83811843'),(7646,'they','83811843'),(7647,'wanted','83811843'),(7648,'reforms','83811843'),(7649,'within','83811843'),(7650,'the','83811843'),(7651,'Austrian','83811843'),(7652,'monarchy','83811843'),(7653,'but','83811843'),(7654,'did','83811843'),(7655,'not','83811843'),(7656,'want','83811843'),(7657,'independence','83811843'),(7658,'for','83811843'),(7659,'the','83811843'),(7660,'Czech','83811843'),(7661,'lands','83811843'),(7662,'This','83811843'),(7663,'brought','83811843'),(7664,'them','83811843'),(7665,'into','83811843'),(7666,'conflict','83811843'),(7667,'with','83811843'),(7668,'the','83811843'),(7669,'democrats','83811843'),(7670,'who','83811843'),(7671,'were','83811843'),(7672,'republican','83811843'),(7673,'and','83811843'),(7674,'fiercely','83811843'),(7675,'antiMonarchy','83811843'),(7676,'\r\n\r\nBut','83811843'),(7677,'the','83811843'),(7678,'Czech','83811843'),(7679,'National','83811843'),(7680,'Revival','83811843'),(7681,'movement','83811843'),(7682,'almost','83811843'),(7683,'had','83811843'),(7684,'more','83811843'),(7685,'to','83811843'),(7686,'do','83811843'),(7687,'with','83811843'),(7688,'culture','83811843'),(7689,'than','83811843'),(7690,'with','83811843'),(7691,'politics','83811843'),(7692,'Frantisek','83811843'),(7693,'Palacky','83811843'),(7694,'and','83811843'),(7695,'Karel','83811843'),(7696,'Havlicek','83811843'),(7697,'Borovsky','83811843'),(7698,'who','83811843'),(7699,'are','83811843'),(7700,'mentioned','83811843'),(7701,'above','83811843'),(7702,'for','83811843'),(7703,'their','83811843'),(7704,'political','83811843'),(7705,'efforts','83811843'),(7706,'were','83811843'),(7707,'both','83811843'),(7708,'writers','83811843'),(7709,'Czech','83811843'),(7710,'Literature','83811843'),(7711,'enjoyed','83811843'),(7712,'a','83811843'),(7713,'Golden','83811843'),(7714,'Age','83811843'),(7715,'during','83811843'),(7716,'the','83811843'),(7717,'Czech','83811843'),(7718,'National','83811843'),(7719,'Revival','83811843'),(7720,'as','83811843'),(7721,'the','83811843'),(7722,'Czech','83811843'),(7723,'language','83811843'),(7724,'','83811843'),(7725,'which','83811843'),(7726,'had','83811843'),(7727,'all','83811843'),(7728,'but','83811843'),(7729,'died','83811843'),(7730,'out','83811843'),(7731,'under','83811843'),(7732,'Habsburg','83811843'),(7733,'rule','83811843'),(7734,'','83811843'),(7735,'was','83811843'),(7736,'rediscovered','83811843'),(7737,'Other','83811843'),(7738,'notable','83811843'),(7739,'writers','83811843'),(7740,'of','83811843'),(7741,'the','83811843'),(7742,'time','83811843'),(7743,'include','83811843'),(7744,'Bozena','83811843'),(7745,'Nemcova','83811843'),(7746,'Karel','83811843'),(7747,'Hynek','83811843'),(7748,'Macha','83811843'),(7749,'who','83811843'),(7750,'published','83811843'),(7751,'the','83811843'),(7752,'epic','83811843'),(7753,'lyrical','83811843'),(7754,'poem','83811843'),(7755,'Maj','83811843'),(7756,'then','83811843'),(7757,'died','83811843'),(7758,'of','83811843'),(7759,'pneumonia','83811843'),(7760,'he','83811843'),(7761,'caught','83811843'),(7762,'while','83811843'),(7763,'fighting','83811843'),(7764,'a','83811843'),(7765,'fire','83811843'),(7766,'one','83811843'),(7767,'month','83811843'),(7768,'before','83811843'),(7769,'he','83811843'),(7770,'was','83811843'),(7771,'to','83811843'),(7772,'be','83811843'),(7773,'married','83811843'),(7774,'and','83811843'),(7775,'Josef','83811843'),(7776,'Jungmann','83811843'),(7777,'','83811843'),(7778,'who','83811843'),(7779,'put','83811843'),(7780,'together','83811843'),(7781,'the','83811843'),(7782,'first','83811843'),(7783,'modern','83811843'),(7784,'Czech','83811843'),(7785,'dictionary','83811843'),(7786,'\r\n\r\nMany','83811843'),(7787,'popular','83811843'),(7788,'books','83811843'),(7789,'retelling','83811843'),(7790,'the','83811843'),(7791,'old','83811843'),(7792,'Czech','83811843'),(7793,'legends','83811843'),(7794,'of','83811843'),(7795,'Libuse','83811843'),(7796,'and','83811843'),(7797,'Sarka','83811843'),(7798,'and','83811843'),(7799,'Bivoj','83811843'),(7800,'and','83811843'),(7801,'Bruncvik','83811843'),(7802,'were','83811843'),(7803,'published','83811843'),(7804,'at','83811843'),(7805,'this','83811843'),(7806,'time','83811843'),(7807,'and','83811843'),(7808,'some','83811843'),(7809,'of','83811843'),(7810,'the','83811843'),(7811,'leaders','83811843'),(7812,'of','83811843'),(7813,'the','83811843'),(7814,'Czech','83811843'),(7815,'National','83811843'),(7816,'Revival','83811843'),(7817,'even','83811843'),(7818,'falsified','83811843'),(7819,'ancient','83811843'),(7820,'13th','83811843'),(7821,'century','83811843'),(7822,'texts','83811843'),(7823,'of','83811843'),(7824,'these','83811843'),(7825,'legends','83811843'),(7826,'which','83811843'),(7827,'they','83811843'),(7828,'claimed','83811843'),(7829,'to','83811843'),(7830,'have','83811843'),(7831,'found','83811843'),(7832,'in','83811843'),(7833,'a','83811843'),(7834,'cave','83811843'),(7835,'somewhere','83811843'),(7836,'Perhaps','83811843'),(7837,'the','83811843'),(7838,'only','83811843'),(7839,'authority','83811843'),(7840,'in','83811843'),(7841,'the','83811843'),(7842,'movement','83811843'),(7843,'who','83811843'),(7844,'publicly','83811843'),(7845,'denied','83811843'),(7846,'the','83811843'),(7847,'authenticity','83811843'),(7848,'of','83811843'),(7849,'the','83811843'),(7850,'texts','83811843'),(7851,'was','83811843'),(7852,'a','83811843'),(7853,'young','83811843'),(7854,'university','83811843'),(7855,'professor','83811843'),(7856,'by','83811843'),(7857,'name','83811843'),(7858,'of','83811843'),(7859,'Tomas','83811843'),(7860,'Garrigue','83811843'),(7861,'Masaryk','83811843'),(7862,'and','83811843'),(7863,'he','83811843'),(7864,'was','83811843'),(7865,'passionately','83811843'),(7866,'detested','83811843'),(7867,'by','83811843'),(7868,'the','83811843'),(7869,'other','83811843'),(7870,'leaders','83811843'),(7871,'for','83811843'),(7872,'doing','83811843'),(7873,'so','83811843'),(7874,'','83811843'),(7875,'\r\n\r\nBut','83811843'),(7876,'we','83811843'),(7877,'digress','83811843'),(7878,'yet','83811843'),(7879,'again','83811843'),(7880,'France','83811843'),(7881,'had','83811843'),(7882,'its','83811843'),(7883,'infamous','83811843'),(7884,'revolution','83811843'),(7885,'in','83811843'),(7886,'1848','83811843'),(7887,'In','83811843'),(7888,'the','83811843'),(7889,'same','83811843'),(7890,'year','83811843'),(7891,'in','83811843'),(7892,'the','83811843'),(7893,'Czech','83811843'),(7894,'lands','83811843'),(7895,'the','83811843'),(7896,'feudal','83811843'),(7897,'system','83811843'),(7898,'was','83811843'),(7899,'abolished','83811843'),(7900,'leading','83811843'),(7901,'to','83811843'),(7902,'waves','83811843'),(7903,'of','83811843'),(7904,'emigration','83811843'),(7905,'much','83811843'),(7906,'of','83811843'),(7907,'it','83811843'),(7908,'to','83811843'),(7909,'the','83811843'),(7910,'New','83811843'),(7911,'World','83811843'),(7912,'','83811843'),(7913,'particularly','83811843'),(7914,'to','83811843'),(7915,'the','83811843'),(7916,'United','83811843'),(7917,'States','83811843'),(7918,'In','83811843'),(7919,'June','83811843'),(7920,'1848','83811843'),(7921,'a','83811843'),(7922,'PanSlavic','83811843'),(7923,'Congress','83811843'),(7924,'convened','83811843'),(7925,'in','83811843'),(7926,'Prague','83811843'),(7927,'to','83811843'),(7928,'consider','83811843'),(7929,'possible','83811843'),(7930,'ways','83811843'),(7931,'of','83811843'),(7932,'convincing','83811843'),(7933,'the','83811843'),(7934,'Habsburgs','83811843'),(7935,'to','83811843'),(7936,'transform','83811843'),(7937,'their','83811843'),(7938,'empire','83811843'),(7939,'into','83811843'),(7940,'a','83811843'),(7941,'federative','83811843'),(7942,'state','83811843'),(7943,'of','83811843'),(7944,'equal','83811843'),(7945,'nations','83811843'),(7946,'something','83811843'),(7947,'like','83811843'),(7948,'a','83811843'),(7949,'United','83811843'),(7950,'States','83811843'),(7951,'of','83811843'),(7952,'Austria','83811843'),(7953,'Suddenly','83811843'),(7954,'the','83811843'),(7955,'discussions','83811843'),(7956,'were','83811843'),(7957,'interrupted','83811843'),(7958,'by','83811843'),(7959,'an','83811843'),(7960,'aimless','83811843'),(7961,'rebellion','83811843'),(7962,'inspired','83811843'),(7963,'by','83811843'),(7964,'the','83811843'),(7965,'French','83811843'),(7966,'Revolution','83811843'),(7967,'and','83811843'),(7968,'including','83811843'),(7969,'dramatic','83811843'),(7970,'baracades','83811843'),(7971,'in','83811843'),(7972,'the','83811843'),(7973,'streets','83811843'),(7974,'which','83811843'),(7975,'was','83811843'),(7976,'led','83811843'),(7977,'by','83811843'),(7978,'bored','83811843'),(7979,'students','83811843'),(7980,'and','83811843'),(7981,'the','83811843'),(7982,'most','83811843'),(7983,'radical','83811843'),(7984,'of','83811843'),(7985,'the','83811843'),(7986,'radical','83811843'),(7987,'democrats','83811843'),(7988,'\r\n\r\nThe','83811843'),(7989,'rebellion','83811843'),(7990,'was','83811843'),(7991,'effortlessly','83811843'),(7992,'put','83811843'),(7993,'down','83811843'),(7994,'by','83811843'),(7995,'the','83811843'),(7996,'local','83811843'),(7997,'Austrian','83811843'),(7998,'leader','83811843'),(7999,'Prince','83811843'),(8000,'Windischgratz','83811843'),(8001,'','83811843'),(8002,'who','83811843'),(8003,'declared','83811843'),(8004,'martial','83811843'),(8005,'law','83811843'),(8006,'and','83811843'),(8007,'on','83811843'),(8008,'June','83811843'),(8009,'16','83811843'),(8010,'1848','83811843'),(8011,'even','83811843'),(8012,'bombarded','83811843'),(8013,'Prague','83811843'),(8014,'from','83811843'),(8015,'Petrin','83811843'),(8016,'Hill','83811843'),(8017,'In','83811843'),(8018,'this','83811843'),(8019,'way','83811843'),(8020,'both','83811843'),(8021,'the','83811843'),(8022,'revolt','83811843'),(8023,'and','83811843'),(8024,'the','83811843'),(8025,'PanSlavic','83811843'),(8026,'congress','83811843'),(8027,'both','83811843'),(8028,'came','83811843'),(8029,'to','83811843'),(8030,'a','83811843'),(8031,'premature','83811843'),(8032,'end','83811843'),(8033,'leaving','83811843'),(8034,'the','83811843'),(8035,'question','83811843'),(8036,'of','83811843'),(8037,'the','83811843'),(8038,'future','83811843'),(8039,'shape','83811843'),(8040,'of','83811843'),(8041,'the','83811843'),(8042,'Austrian','83811843'),(8043,'Empire','83811843'),(8044,'utterly','83811843'),(8045,'unresolved','83811843'),(8046,'In','83811843'),(8047,'a','83811843'),(8048,'strange','83811843'),(8049,'aside','83811843'),(8050,'to','83811843'),(8051,'this','83811843'),(8052,'episode','83811843'),(8053,'Prince','83811843'),(8054,'Windischgratzs','83811843'),(8055,'wife','83811843'),(8056,'lost','83811843'),(8057,'her','83811843'),(8058,'life','83811843'),(8059,'in','83811843'),(8060,'all','83811843'),(8061,'this','83811843'),(8062,'commotion','83811843'),(8063,'','83811843'),(8064,'shot','83811843'),(8065,'through','83811843'),(8066,'a','83811843'),(8067,'window','83811843'),(8068,'while','83811843'),(8069,'she','83811843'),(8070,'was','83811843'),(8071,'in','83811843'),(8072,'her','83811843'),(8073,'apartment','83811843'),(8074,'To','83811843'),(8075,'this','83811843'),(8076,'day','83811843'),(8077,'nobody','83811843'),(8078,'knows','83811843'),(8079,'who','83811843'),(8080,'did','83811843'),(8081,'the','83811843'),(8082,'shooting','83811843'),(8083,'or','83811843'),(8084,'why','83811843'),(8085,'\r\n\r\nScared','83811843'),(8086,'by','83811843'),(8087,'both','83811843'),(8088,'the','83811843'),(8089,'French','83811843'),(8090,'Revolution','83811843'),(8091,'and','83811843'),(8092,'the','83811843'),(8093,'summer','83811843'),(8094,'rebellion','83811843'),(8095,'in','83811843'),(8096,'Prague','83811843'),(8097,'Austria','83811843'),(8098,'introduced','83811843'),(8099,'something','83811843'),(8100,'akin','83811843'),(8101,'to','83811843'),(8102,'martial','83811843'),(8103,'law','83811843'),(8104,'in','83811843'),(8105,'the','83811843'),(8106,'whole','83811843'),(8107,'of','83811843'),(8108,'the','83811843'),(8109,'Empire','83811843'),(8110,'to','83811843'),(8111,'discourage','83811843'),(8112,'republican','83811843'),(8113,'efforts','83811843'),(8114,'at','83811843'),(8115,'independence','83811843'),(8116,'Autonomy','83811843'),(8117,'movements','83811843'),(8118,'throughout','83811843'),(8119,'the','83811843'),(8120,'Austrian','83811843'),(8121,'Empire','83811843'),(8122,'were','83811843'),(8123,'suppressed','83811843'),(8124,'But','83811843'),(8125,'as','83811843'),(8126,'revolutionary','83811843'),(8127,'movements','83811843'),(8128,'have','83811843'),(8129,'a','83811843'),(8130,'tendency','83811843'),(8131,'of','83811843'),(8132,'doing','83811843'),(8133,'this','83811843'),(8134,'one','83811843'),(8135,'did','83811843'),(8136,'not','83811843'),(8137,'die','83811843'),(8138,'down;','83811843'),(8139,'it','83811843'),(8140,'just','83811843'),(8141,'sat','83811843'),(8142,'around','83811843'),(8143,'simmering','83811843'),(8144,'below','83811843'),(8145,'the','83811843'),(8146,'ostensibly','83811843'),(8147,'calm','83811843'),(8148,'surface','83811843'),(8149,'of','83811843'),(8150,'things','83811843'),(8151,'Tensions','83811843'),(8152,'did','83811843'),(8153,'not','83811843'),(8154,'decrease','83811843'),(8155,'On','83811843'),(8156,'the','83811843'),(8157,'contrary','83811843'),(8158,'\r\n\r\nThe','83811843'),(8159,'Austrian','83811843'),(8160,'Empire','83811843'),(8161,'of','83811843'),(8162,'the','83811843'),(8163,'time','83811843'),(8164,'was','83811843'),(8165,'massive','83811843'),(8166,'and','83811843'),(8167,'contained','83811843'),(8168,'the','83811843'),(8169,'territories','83811843'),(8170,'of','83811843'),(8171,'many','83811843'),(8172,'modernday','83811843'),(8173,'countries','83811843'),(8174,'Most','83811843'),(8175,'of','83811843'),(8176,'these','83811843'),(8177,'nationalities','83811843'),(8178,'were','83811843'),(8179,'clamoring','83811843'),(8180,'for','83811843'),(8181,'autonomy','83811843'),(8182,'\r\n\r\nIn','83811843'),(8183,'the','83811843'),(8184,'1860s','83811843'),(8185,'this','83811843'),(8186,'pressure','83811843'),(8187,'led','83811843'),(8188,'the','83811843'),(8189,'Habsburgs','83811843'),(8190,'to','83811843'),(8191,'transform','83811843'),(8192,'the','83811843'),(8193,'Austrian','83811843'),(8194,'Empire','83811843'),(8195,'into','83811843'),(8196,'the','83811843'),(8197,'dualist','83811843'),(8198,'AustroHungarian','83811843'),(8199,'constitutional','83811843'),(8200,'monarchy','83811843'),(8201,'This','83811843'),(8202,'was','83811843'),(8203,'just','83811843'),(8204,'hunkeydorey','83811843'),(8205,'by','83811843'),(8206,'the','83811843'),(8207,'Hungarians','83811843'),(8208,'but','83811843'),(8209,'was','83811843'),(8210,'not','83811843'),(8211,'exactly','83811843'),(8212,'appreciated','83811843'),(8213,'by','83811843'),(8214,'most','83811843'),(8215,'of','83811843'),(8216,'the','83811843'),(8217,'other','83811843'),(8218,'ethnic','83811843'),(8219,'nations','83811843'),(8220,'within','83811843'),(8221,'what','83811843'),(8222,'was','83811843'),(8223,'now','83811843'),(8224,'the','83811843'),(8225,'AustroHungarian','83811843'),(8226,'Empire','83811843'),(8227,'\r\n\r\nThe','83811843'),(8228,'Czechs','83811843'),(8229,'were','83811843'),(8230,'united','83811843'),(8231,'in','83811843'),(8232,'their','83811843'),(8233,'opposition','83811843'),(8234,'to','83811843'),(8235,'the','83811843'),(8236,'new','83811843'),(8237,'dual','83811843'),(8238,'system','83811843'),(8239,'but','83811843'),(8240,'they','83811843'),(8241,'were','83811843'),(8242,'divided','83811843'),(8243,'among','83811843'),(8244,'themselves','83811843'),(8245,'as','83811843'),(8246,'to','83811843'),(8247,'what','83811843'),(8248,'they','83811843'),(8249,'wanted','83811843'),(8250,'to','83811843'),(8251,'do','83811843'),(8252,'about','83811843'),(8253,'it','83811843'),(8254,'These','83811843'),(8255,'divisions','83811843'),(8256,'grew','83811843'),(8257,'deeper','83811843'),(8258,'as','83811843'),(8259,'the','83811843'),(8260,'19th','83811843'),(8261,'century','83811843'),(8262,'progressed','83811843'),(8263,'\r\n\r\nThere','83811843'),(8264,'were','83811843'),(8265,'a','83811843'),(8266,'number','83811843'),(8267,'of','83811843'),(8268,'rival','83811843'),(8269,'political','83811843'),(8270,'factions:','83811843'),(8271,'the','83811843'),(8272,'Czech','83811843'),(8273,'National','83811843'),(8274,'Party','83811843'),(8275,'split','83811843'),(8276,'into','83811843'),(8277,'two','83811843'),(8278,'camps:','83811843'),(8279,'the','83811843'),(8280,'conservative','83811843'),(8281,'Old','83811843'),(8282,'Czechs','83811843'),(8283,'and','83811843'),(8284,'the','83811843'),(8285,'liberal','83811843'),(8286,'Young','83811843'),(8287,'Czechs;','83811843'),(8288,'the','83811843'),(8289,'Czech','83811843'),(8290,'Social','83811843'),(8291,'Democratic','83811843'),(8292,'Party','83811843'),(8293,'founded','83811843'),(8294,'in','83811843'),(8295,'1878;','83811843'),(8296,'the','83811843'),(8297,'progressives','83811843'),(8298,'who','83811843'),(8299,'favored','83811843'),(8300,'the','83811843'),(8301,'policies','83811843'),(8302,'of','83811843'),(8303,'Tomas','83811843'),(8304,'Masaryk;','83811843'),(8305,'the','83811843'),(8306,'Agrarian','83811843'),(8307,'party;','83811843'),(8308,'the','83811843'),(8309,'Christian','83811843'),(8310,'Socialists;','83811843'),(8311,'the','83811843'),(8312,'National','83811843'),(8313,'Socialists;','83811843'),(8314,'and','83811843'),(8315,'the','83811843'),(8316,'Radical','83811843'),(8317,'Progressives','83811843'),(8318,'\r\n\r\nThe','83811843'),(8319,'majority','83811843'),(8320,'of','83811843'),(8321,'the','83811843'),(8322,'Czech','83811843'),(8323,'political','83811843'),(8324,'parties','83811843'),(8325,'supported','83811843'),(8326,'a','83811843'),(8327,'program','83811843'),(8328,'calling','83811843'),(8329,'for','83811843'),(8330,'the','83811843'),(8331,'restoration','83811843'),(8332,'of','83811843'),(8333,'the','83811843'),(8334,'Czech','83811843'),(8335,'state','83811843'),(8336,'in','83811843'),(8337,'its','83811843'),(8338,'historical','83811843'),(8339,'borders','83811843'),(8340,'','83811843'),(8341,'but','83811843'),(8342,'within','83811843'),(8343,'the','83811843'),(8344,'framework','83811843'),(8345,'of','83811843'),(8346,'the','83811843'),(8347,'Austrian','83811843'),(8348,'Empire','83811843'),(8349,'Again','83811843'),(8350,'each','83811843'),(8351,'party','83811843'),(8352,'had','83811843'),(8353,'a','83811843'),(8354,'different','83811843'),(8355,'idea','83811843'),(8356,'of','83811843'),(8357,'exactly','83811843'),(8358,'how','83811843'),(8359,'this','83811843'),(8360,'goal','83811843'),(8361,'should','83811843'),(8362,'be','83811843'),(8363,'accomplished','83811843'),(8364,'\r\n\r\nThe','83811843'),(8365,'turn','83811843'),(8366,'of','83811843'),(8367,'the','83811843'),(8368,'19th','83811843'),(8369,'and','83811843'),(8370,'20th','83811843'),(8371,'centuries','83811843'),(8372,'was','83811843'),(8373,'characterized','83811843'),(8374,'by','83811843'),(8375,'growing','83811843'),(8376,'economic','83811843'),(8377,'and','83811843'),(8378,'political','83811843'),(8379,'freedom','83811843'),(8380,'for','83811843'),(8381,'the','83811843'),(8382,'Czechs','83811843'),(8383,'and','83811843'),(8384,'by','83811843'),(8385,'outstanding','83811843'),(8386,'acheivements','83811843'),(8387,'on','83811843'),(8388,'the','83811843'),(8389,'part','83811843'),(8390,'of','83811843'),(8391,'Czechs','83811843'),(8392,'in','83811843'),(8393,'culture','83811843'),(8394,'medicine','83811843'),(8395,'and','83811843'),(8396,'science','83811843'),(8397,'Architectural','83811843'),(8398,'trends','83811843'),(8399,'at','83811843'),(8400,'the','83811843'),(8401,'end','83811843'),(8402,'of','83811843'),(8403,'the','83811843'),(8404,'century','83811843'),(8405,'were','83811843'),(8406,'romantic','83811843'),(8407,'copies','83811843'),(8408,'of','83811843'),(8409,'past','83811843'),(8410,'styles','83811843'),(8411,'like','83811843'),(8412,'NeoGothic','83811843'),(8413,'These','83811843'),(8414,'romantic','83811843'),(8415,'enthusiasts','83811843'),(8416,'sometimes','83811843'),(8417,'did','83811843'),(8418,'more','83811843'),(8419,'harm','83811843'),(8420,'than','83811843'),(8421,'good','83811843'),(8422,'as','83811843'),(8423,'in','83811843'),(8424,'the','83811843'),(8425,'case','83811843'),(8426,'of','83811843'),(8427,'the','83811843'),(8428,'reconstruction','83811843'),(8429,'of','83811843'),(8430,'Karlstejn','83811843'),(8431,'Castle','83811843'),(8432,'It','83811843'),(8433,'is','83811843'),(8434,'because','83811843'),(8435,'of','83811843'),(8436,'this','83811843'),(8437,'illfated','83811843'),(8438,'reconstruction','83811843'),(8439,'that','83811843'),(8440,'Karlstejn','83811843'),(8441,'does','83811843'),(8442,'not','83811843'),(8443,'qualify','83811843'),(8444,'for','83811843'),(8445,'the','83811843'),(8446,'UNESCO','83811843'),(8447,'World','83811843'),(8448,'Heritage','83811843'),(8449,'list','83811843'),(8450,'today','83811843'),(8451,'In','83811843'),(8452,'other','83811843'),(8453,'cases','83811843'),(8454,'they','83811843'),(8455,'just','83811843'),(8456,'did','83811843'),(8457,'silly','83811843'),(8458,'things','83811843'),(8459,'like','83811843'),(8460,'build','83811843'),(8461,'fake','83811843'),(8462,'ancient','83811843'),(8463,'ruins','83811843'),(8464,'in','83811843'),(8465,'Prague','83811843'),(8466,'parks','83811843'),(8467,'perhaps','83811843'),(8468,'to','83811843'),(8469,'go','83811843'),(8470,'along','83811843'),(8471,'with','83811843'),(8472,'their','83811843'),(8473,'ancient','83811843'),(8474,'legend','83811843'),(8475,'texts','83811843'),(8476,'The','83811843'),(8477,'Czech','83811843'),(8478,'writers','83811843'),(8479,'and','83811843'),(8480,'artists','83811843'),(8481,'Jan','83811843'),(8482,'Neruda','83811843'),(8483,'Alois','83811843'),(8484,'Jirasek','83811843'),(8485,'Mikulas','83811843'),(8486,'Ales','83811843'),(8487,'Bedrich','83811843'),(8488,'Smetana','83811843'),(8489,'Antonin','83811843'),(8490,'Dvorak','83811843'),(8491,'','83811843'),(8492,'Alfons','83811843'),(8493,'Mucha','83811843'),(8494,'and','83811843'),(8495,'Frantisek','83811843'),(8496,'Bilek','83811843'),(8497,'all','83811843'),(8498,'lived','83811843'),(8499,'and','83811843'),(8500,'worked','83811843'),(8501,'at','83811843'),(8502,'this','83811843'),(8503,'time','83811843'),(8504,'The','83811843'),(8505,'National','83811843'),(8506,'Theater','83811843'),(8507,'National','83811843'),(8508,'Museum','83811843'),(8509,'and','83811843'),(8510,'Rudolfinum','83811843'),(8511,'were','83811843'),(8512,'built','83811843'),(8513,'at','83811843'),(8514,'the','83811843'),(8515,'turn','83811843'),(8516,'of','83811843'),(8517,'the','83811843'),(8518,'century','83811843'),(8519,'and','83811843'),(8520,'the','83811843'),(8521,'first','83811843'),(8522,'films','83811843'),(8523,'in','83811843'),(8524,'the','83811843'),(8525,'Czech','83811843'),(8526,'Republic','83811843'),(8527,'were','83811843'),(8528,'made','83811843'),(8529,'in','83811843'),(8530,'1898','83811843'),(8531,'\r\n\r\nThe','83811843'),(8532,'battle','83811843'),(8533,'for','83811843'),(8534,'universal','83811843'),(8535,'suffrage','83811843'),(8536,'within','83811843'),(8537,'the','83811843'),(8538,'AustroHungarian','83811843'),(8539,'state','83811843'),(8540,'was','83811843'),(8541,'won','83811843'),(8542,'in','83811843'),(8543,'1907','83811843'),(8544,'All','83811843'),(8545,'men','83811843'),(8546,'in','83811843'),(8547,'the','83811843'),(8548,'Czech','83811843'),(8549,'lands','83811843'),(8550,'regardless','83811843'),(8551,'of','83811843'),(8552,'economic','83811843'),(8553,'status','83811843'),(8554,'could','83811843'),(8555,'vote','83811843'),(8556,'','83811843'),(8557,'women','83811843'),(8558,'in','83811843'),(8559,'the','83811843'),(8560,'Czech','83811843'),(8561,'lands','83811843'),(8562,'did','83811843'),(8563,'not','83811843'),(8564,'get','83811843'),(8565,'the','83811843'),(8566,'vote','83811843'),(8567,'until','83811843'),(8568,'1919','83811843'),(8569,'But','83811843'),(8570,'most','83811843'),(8571,'of','83811843'),(8572,'the','83811843'),(8573,'rest','83811843'),(8574,'of','83811843'),(8575,'the','83811843'),(8576,'political','83811843'),(8577,'advances','83811843'),(8578,'made','83811843'),(8579,'by','83811843'),(8580,'the','83811843'),(8581,'Czechs','83811843'),(8582,'came','83811843'),(8583,'into','83811843'),(8584,'being','83811843'),(8585,'in','83811843'),(8586,'a','83811843'),(8587,'sort','83811843'),(8588,'of','83811843'),(8589,'fuzzy','83811843'),(8590,'grey','83811843'),(8591,'area','83811843'),(8592,'The','83811843'),(8593,'constitutional','83811843'),(8594,'status','83811843'),(8595,'of','83811843'),(8596,'the','83811843'),(8597,'Czech','83811843'),(8598,'lands','83811843'),(8599,'within','83811843'),(8600,'the','83811843'),(8601,'framework','83811843'),(8602,'of','83811843'),(8603,'the','83811843'),(8604,'Monarchy','83811843'),(8605,'remained','83811843'),(8606,'an','83811843'),(8607,'open','83811843'),(8608,'and','83811843'),(8609,'','83811843'),(8610,'in','83811843'),(8611,'Prague','83811843'),(8612,'at','83811843'),(8613,'least','83811843'),(8614,'','83811843'),(8615,'a','83811843'),(8616,'muchdebated','83811843'),(8617,'question','83811843'),(8618,'\r\n\r\nWell','83811843'),(8619,'while','83811843'),(8620,'Czech','83811843'),(8621,'nationalists','83811843'),(8622,'were','83811843'),(8623,'busy','83811843'),(8624,'sitting','83811843'),(8625,'in','83811843'),(8626,'pubs','83811843'),(8627,'drinking','83811843'),(8628,'beer','83811843'),(8629,'and','83811843'),(8630,'debating','83811843'),(8631,'how','83811843'),(8632,'best','83811843'),(8633,'to','83811843'),(8634,'effect','83811843'),(8635,'the','83811843'),(8636,'changes','83811843'),(8637,'they','83811843'),(8638,'wanted','83811843'),(8639,'to','83811843'),(8640,'see','83811843'),(8641,'implemented','83811843'),(8642,'in','83811843'),(8643,'the','83811843'),(8644,'AustroHungarian','83811843'),(8645,'government','83811843'),(8646,'members','83811843'),(8647,'of','83811843'),(8648,'other','83811843'),(8649,'nations','83811843'),(8650,'within','83811843'),(8651,'the','83811843'),(8652,'Empire','83811843'),(8653,'were','83811843'),(8654,'also','83811843'),(8655,'pressing','83811843'),(8656,'for','83811843'),(8657,'reforms','83811843'),(8658,'and','83811843'),(8659,'for','83811843'),(8660,'independence','83811843'),(8661,'It','83811843'),(8662,'was','83811843'),(8663,'these','83811843'),(8664,'pressures','83811843'),(8665,'that','83811843'),(8666,'led','83811843'),(8667,'Serbian','83811843'),(8668,'nationalist','83811843'),(8669,'Gavrillo','83811843'),(8670,'Princip','83811843'),(8671,'to','83811843'),(8672,'assassinate','83811843'),(8673,'the','83811843'),(8674,'Archduke','83811843'),(8675,'Francis','83811843'),(8676,'Ferdinand','83811843'),(8677,'the','83811843'),(8678,'heir','83811843'),(8679,'to','83811843'),(8680,'the','83811843'),(8681,'Austrian','83811843'),(8682,'throne','83811843'),(8683,'on','83811843'),(8684,'June','83811843'),(8685,'28','83811843'),(8686,'1914','83811843'),(8687,'precipitating','83811843'),(8688,'World','83811843'),(8689,'War','83811843'),(8690,'I','83811843'),(8691,'Princip','83811843'),(8692,'was','83811843'),(8693,'locked','83811843'),(8694,'up','83811843'),(8695,'for','83811843'),(8696,'this','83811843'),(8697,'deed','83811843'),(8698,'and','83811843'),(8699,'spent','83811843'),(8700,'the','83811843'),(8701,'rest','83811843'),(8702,'of','83811843'),(8703,'his','83811843'),(8704,'days','83811843'),(8705,'at','83811843'),(8706,'the','83811843'),(8707,'prison','83811843'),(8708,'in','83811843'),(8709,'Terezin','83811843'),(8710,'Fortress','83811843'),(8711,'in','83811843'),(8712,'the','83811843'),(8713,'Czech','83811843'),(8714,'lands','83811843'),(8715,'\r\n\r\nDuring','83811843'),(8716,'the','83811843'),(8717,'course','83811843'),(8718,'of','83811843'),(8719,'World','83811843'),(8720,'War','83811843'),(8721,'I','83811843'),(8722,'the','83811843'),(8723,'Czechs','83811843'),(8724,'became','83811843'),(8725,'unified','83811843'),(8726,'in','83811843'),(8727,'their','83811843'),(8728,'opposition','83811843'),(8729,'to','83811843'),(8730,'Austrian','83811843'),(8731,'rule','83811843'),(8732,'\r\n\r\nMost','83811843'),(8733,'especially','83811843'),(8734,'AustriaHungarys','83811843'),(8735,'alignment','83811843'),(8736,'with','83811843'),(8737,'Germany','83811843'),(8738,'and','83811843'),(8739,'the','83811843'),(8740,'restriction','83811843'),(8741,'of','83811843'),(8742,'democratic','83811843'),(8743,'rights','83811843'),(8744,'in','83811843'),(8745,'the','83811843'),(8746,'Czech','83811843'),(8747,'lands','83811843'),(8748,'led','83811843'),(8749,'to','83811843'),(8750,'growing','83811843'),(8751,'opposition','83811843'),(8752,'to','83811843'),(8753,'the','83811843'),(8754,'monarchy','83811843'),(8755,'here','83811843'),(8756,'An','83811843'),(8757,'organized','83811843'),(8758,'resistance','83811843'),(8759,'began','83811843'),(8760,'to','83811843'),(8761,'develop','83811843'),(8762,'both','83811843'),(8763,'at','83811843'),(8764,'home','83811843'),(8765,'and','83811843'),(8766,'abroad','83811843'),(8767,'\r\n\r\n','83811843'),(8768,'The','83811843'),(8769,'Czech','83811843'),(8770,'university','83811843'),(8771,'professor','83811843'),(8772,'philosopher','83811843'),(8773,'and','83811843'),(8774,'politician','83811843'),(8775,'Tomas','83811843'),(8776,'Garrigue','83811843'),(8777,'Masaryk','83811843'),(8778,'the','83811843'),(8779,'same','83811843'),(8780,'one','83811843'),(8781,'who','83811843'),(8782,'doubted','83811843'),(8783,'the','83811843'),(8784,'authenticity','83811843'),(8785,'of','83811843'),(8786,'the','83811843'),(8787,'faked','83811843'),(8788,'manuscripts','83811843'),(8789,'and','83811843'),(8790,'the','83811843'),(8791,'one','83811843'),(8792,'who','83811843'),(8793,'was','83811843'),(8794,'later','83811843'),(8795,'to','83811843'),(8796,'become','83811843'),(8797,'Czechoslovakias','83811843'),(8798,'first','83811843'),(8799,'president','83811843'),(8800,'had','83811843'),(8801,'been','83811843'),(8802,'an','83811843'),(8803,'advocate','83811843'),(8804,'of','83811843'),(8805,'more','83811843'),(8806,'independence','83811843'),(8807,'for','83811843'),(8808,'the','83811843'),(8809,'Czech','83811843'),(8810,'lands','83811843'),(8811,'long','83811843'),(8812,'before','83811843'),(8813,'the','83811843'),(8814,'war','83811843'),(8815,'had','83811843'),(8816,'even','83811843'),(8817,'started','83811843'),(8818,'In','83811843'),(8819,'December','83811843'),(8820,'of','83811843'),(8821,'1914','83811843'),(8822,'he','83811843'),(8823,'went','83811843'),(8824,'abroad','83811843'),(8825,'where','83811843'),(8826,'he','83811843'),(8827,'continued','83811843'),(8828,'to','83811843'),(8829,'fight','83811843'),(8830,'for','83811843'),(8831,'Czechoslovak','83811843'),(8832,'independence','83811843'),(8833,'throughout','83811843'),(8834,'the','83811843'),(8835,'war','83811843'),(8836,'He','83811843'),(8837,'worked','83811843'),(8838,'closely','83811843'),(8839,'with','83811843'),(8840,'Czech','83811843'),(8841,'lawyer','83811843'),(8842,'Edvard','83811843'),(8843,'Benes','83811843'),(8844,'and','83811843'),(8845,'Slovak','83811843'),(8846,'astronomer','83811843'),(8847,'Milan','83811843'),(8848,'Rastislav','83811843'),(8849,'Stefanik','83811843'),(8850,'who','83811843'),(8851,'were','83811843'),(8852,'also','83811843'),(8853,'in','83811843'),(8854,'exile','83811843'),(8855,'in','83811843'),(8856,'the','83811843'),(8857,'United','83811843'),(8858,'States','83811843'),(8859,'throughout','83811843'),(8860,'the','83811843'),(8861,'conflict','83811843'),(8862,'It','83811843'),(8863,'was','83811843'),(8864,'in','83811843'),(8865,'the','83811843'),(8866,'United','83811843'),(8867,'States','83811843'),(8868,'at','83811843'),(8869,'this','83811843'),(8870,'time','83811843'),(8871,'that','83811843'),(8872,'Masaryk','83811843'),(8873,'met','83811843'),(8874,'his','83811843'),(8875,'wife','83811843'),(8876,'American','83811843'),(8877,'Charlotte','83811843'),(8878,'Garrigue','83811843'),(8879,'\r\n\r\nIt','83811843'),(8880,'was','83811843'),(8881,'there','83811843'),(8882,'too','83811843'),(8883,'that','83811843'),(8884,'Masaryk','83811843'),(8885,'Benes','83811843'),(8886,'and','83811843'),(8887,'Stefanik','83811843'),(8888,'founded','83811843'),(8889,'the','83811843'),(8890,'Czech','83811843'),(8891,'National','83811843'),(8892,'Council','83811843'),(8893,'in','83811843'),(8894,'1916','83811843'),(8895,'Over','83811843'),(8896,'time','83811843'),(8897,'this','83811843'),(8898,'organization','83811843'),(8899,'was','83811843'),(8900,'renamed','83811843'),(8901,'the','83811843'),(8902,'Czechoslovak','83811843'),(8903,'National','83811843'),(8904,'Council','83811843'),(8905,'and','83811843'),(8906,'was','83811843'),(8907,'recognized','83811843'),(8908,'as','83811843'),(8909,'the','83811843'),(8910,'valid','83811843'),(8911,'voice','83811843'),(8912,'of','83811843'),(8913,'Czechoslovakia','83811843'),(8914,'by','83811843'),(8915,'Allied','83811843'),(8916,'leaders','83811843adsd'),(8917,'Their','83811843'),(8918,'position','83811843'),(8919,'as','83811843'),(8920,'the','83811843'),(8921,'leaders','83811843'),(8922,'of','83811843'),(8923,'free','83811843'),(8924,'Czechoslovakia','83811843'),(8925,'was','83811843'),(8926,'further','83811843'),(8927,'strengthened','83811843'),(8928,'with','83811843'),(8929,'the','83811843'),(8930,'formation','83811843'),(8931,'of','83811843'),(8932,'Czechoslovak','83811843'),(8933,'military','83811843'),(8934,'units','83811843'),(8935,'known','known'),(8936,'as','83811843'),(8937,'the','83811843d'),(8938,'Czechoslovak','83811843'),(9319,'Central','83811843d'),(9320,'Powers','83811843dd'),(9321,'were','83811843dd'),(9322,'defeated','83811843dd'),(10063,'2','23'),(10065,'','4'),(10068,'',''),(10066,'',''),(10067,'',''),(10069,'',''),(10071,'',''),(10072,'','asdf');
+/*!40000 ALTER TABLE `grid50000` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `packages_plain`
+--
+
+DROP TABLE IF EXISTS `packages_plain`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `packages_plain` (
+ `Id` int(11) NOT NULL AUTO_INCREMENT,
+ `Package` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Priority` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Section` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Installed-Size` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Maintainer` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Architecture` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Source` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Version` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Filename` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Size` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Description` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Homepage` varchar(250) COLLATE utf8_bin NOT NULL,
+ PRIMARY KEY (`Id`)
+) ENGINE=MyISAM AUTO_INCREMENT=26595 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `packages_plain`
+--
+
+LOCK TABLES `packages_plain` WRITE;
+/*!40000 ALTER TABLE `packages_plain` DISABLE KEYS */;
+INSERT INTO `packages_plain` VALUES (1,'acx100-source','extra','contrib/kernel','296','Stefano Canepa ','all','acx100','20080210-1.1','pool/contrib/a/acx100/acx100-source_20080210-1.1_all.deb','229468','ACX100/ACX111 wireless network drivers source','http://acx100.sourceforge.net/'),(2,'alien-arena-browser','extra','contrib/games','160','Debian Games Team ','all','alien-arena','7.0-1','pool/contrib/a/alien-arena/alien-arena-browser_7.0-1_all.deb','37128','stand alone server browser for Alien Arena','http://red.planetarena.org'),(3,'alien-arena-server','extra','contrib/games','260','Debian Games Team ','i386','alien-arena','7.0-1','pool/contrib/a/alien-arena/alien-arena-server_7.0-1_i386.deb','130272','Dedicated server for Alien Arena','http://red.planetarena.org'),(4,'alien-arena','extra','contrib/games','1204','Debian Games Team ','i386','','7.0-1','pool/contrib/a/alien-arena/alien-arena_7.0-1_i386.deb','579978','Standalone 3D first person online deathmatch shooter','http://red.planetarena.org'),(5,'alsa-firmware-loaders','extra','contrib/sound','228','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/contrib/a/alsa-tools/alsa-firmware-loaders_1.0.21-1_i386.deb','32758','ALSA software loaders for specific hardware','http://www.alsa-project.org/'),(6,'amoeba','optional','contrib/x11','276','Steinar H. Gunderson ','i386','','1.1-20','pool/contrib/a/amoeba/amoeba_1.1-20_i386.deb','94052','fast-paced, polished OpenGL demonstration by Excess',''),(7,'atari800','optional','contrib/otherosfs','1848','Antonin Kral ','i386','','2.1.0-1','pool/contrib/a/atari800/atari800_2.1.0-1_i386.deb','763238','Atari emulator for X/curses/SDL',''),(8,'avifile-divx-plugin','optional','contrib/video','28','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-divx-plugin_0.7.48~20090503.ds-1_i386.deb','950','Divx4Linux video de/encoding plugin for libavifile','http://avifile.sf.net'),(9,'avifile-win32-plugin','optional','contrib/video','268','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-win32-plugin_0.7.48~20090503.ds-1_i386.deb','97404','Win32 audio/video plugin for libavifile','http://avifile.sf.net'),(10,'avifile-xvid-plugin','optional','contrib/video','28','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-xvid-plugin_0.7.48~20090503.ds-1_i386.deb','928','XviD video encoding plugin for libavifile','http://avifile.sf.net'),(11,'b43-fwcutter','optional','contrib/utils','108','Rene Engelhard ','i386','','1:012-1','pool/contrib/b/b43-fwcutter/b43-fwcutter_012-1_i386.deb','17094','Utility for extracting Broadcom 43xx firmware','http://wireless.kernel.org/en/users/Drivers/b43'),(12,'bgoffice-dict-downloader','extra','contrib/text','68','Debian Add-ons Bulgaria Project ','all','','0.03','pool/contrib/b/bgoffice-dict-downloader/bgoffice-dict-downloader_0.03_all.deb','6374','download dictionaries for gbgoffice',''),(13,'cbedic','optional','contrib/text','92','Anton Zinoviev ','i386','cbedic (4.0-2)','4.0-2+b3','pool/contrib/c/cbedic/cbedic_4.0-2+b3_i386.deb','24864','Text-mode Bulgarian/English Dictionary',''),(14,'chocolate-doom','optional','contrib/games','668','Debian Games Team ','i386','','1.2.1-1','pool/contrib/c/chocolate-doom/chocolate-doom_1.2.1-1_i386.deb','304982','Doom engine closely-compatible with vanilla doom','http://chocolate-doom.org/'),(15,'cl-sql-oracle','extra','contrib/lisp','140','Kevin M. Rosenberg ','all','cl-sql','4.1.1-1','pool/contrib/c/cl-sql/cl-sql-oracle_4.1.1-1_all.deb','34340','CLSQL database backend, Oracle','http://clsql.b9.com/'),(16,'cl-umlisp-orf','optional','contrib/lisp','20','Kevin M. Rosenberg ','all','','3.3.2-2','pool/contrib/c/cl-umlisp-orf/cl-umlisp-orf_3.3.2-2_all.deb','4024','Common Lisp Unified Medical Language System Interface, ORF','http://files.b9.com/umlisp-orf/'),(17,'cl-umlisp','optional','contrib/lisp','220','Kevin M. Rosenberg ','all','','1:2007ac.2-5','pool/contrib/c/cl-umlisp/cl-umlisp_2007ac.2-5_all.deb','37870','Common Lisp interface for the Unified Medical Language System','http://files.b9.com/umlisp/'),(18,'cltl','optional','contrib/doc','92','Debian Common Lisp Team ','all','','1.0.26','pool/contrib/c/cltl/cltl_1.0.26_all.deb','8874','Common Lisp the Language, second edition, book (Pre-ANSI)',''),(19,'crafty-books-medium','optional','contrib/games','25600','Oliver Korff ','all','','1.0.debian1-1','pool/contrib/c/crafty-books-medium/crafty-books-medium_1.0.debian1-1_all.deb','12890724','Medium size opening books for the crafty chess engine',''),(20,'crafty-books-medtosmall','optional','contrib/games','3732','Oliver Korff ','all','','1.0.debian1-1','pool/contrib/c/crafty-books-medtosmall/crafty-books-medtosmall_1.0.debian1-1_all.deb','1899430','Medium-to-small size opening books for crafty chess engine',''),(21,'crafty-books-small','optional','contrib/games','1232','Oliver Korff ','all','','1.0.debian1-1','pool/contrib/c/crafty-books-small/crafty-books-small_1.0.debian1-1_all.deb','528438','Small-size opening books for crafty chess engine',''),(22,'dosemu','optional','contrib/otherosfs','5768','Bart Martens ','i386','','1.4.0+svn.1828-3','pool/contrib/d/dosemu/dosemu_1.4.0+svn.1828-3_i386.deb','2422360','The Linux DOS Emulator','http://www.dosemu.org/'),(23,'dynagen','optional','contrib/net','1688','Erik Wenzel ','all','','0.11.0-4','pool/contrib/d/dynagen/dynagen_0.11.0-4_all.deb','821012','Cisco 7200 Router Emulator Command Line Interface','http://dynagen.org/'),(24,'dynare-matlab','optional','contrib/math','588','Debian Octave Group ','all','dynare','4.0.4-3','pool/contrib/d/dynare/dynare-matlab_4.0.4-3_all.deb','78422','MEX files for MATLAB users of Dynare','http://www.dynare.org/'),(25,'e-uae-dbg','extra','contrib/debug','8924','Stephan Sürken ','i386','e-uae','0.8.29-WIP4-7','pool/contrib/e/e-uae/e-uae-dbg_0.8.29-WIP4-7_i386.deb','3179146','The Egalitarian Ubiquitous Amiga Emulator (debugging)','http://www.rcdrummond.net/uae'),(26,'e-uae','extra','contrib/otherosfs','3412','Stephan Sürken ','i386','','0.8.29-WIP4-7','pool/contrib/e/e-uae/e-uae_0.8.29-WIP4-7_i386.deb','946138','The Egalitarian Ubiquitous Amiga Emulator','http://www.rcdrummond.net/uae'),(27,'easyspice','optional','contrib/electronics','292','Gudjon I. Gudjonsson ','i386','','0.6.8-2','pool/contrib/e/easyspice/easyspice_0.6.8-2_i386.deb','67692','A graphical frontend to the Spice simulator','http://easy-spice.sourceforge.net'),(28,'esix','optional','contrib/otherosfs','137','Vince Mulhollon ','all','','1-2','pool/contrib/e/esix/esix_1-2_all.deb','47044','PDP-8 Engineering and Scientific Interpreter eXtended',''),(29,'exult-studio','extra','contrib/games','1868','Jordà Polo ','i386','exult','1.2-13','pool/contrib/e/exult/exult-studio_1.2-13_i386.deb','577280','tools for editing and viewing exult games','http://exult.sourceforge.net/'),(30,'exult','extra','contrib/games','2180','Jordà Polo ','i386','','1.2-13','pool/contrib/e/exult/exult_1.2-13_i386.deb','978562','engine for Ultima VII (BG, FOV, SI, SS)','http://exult.sourceforge.net/'),(31,'festvox-don','extra','contrib/sound','836','Matthias Urlichs ','all','','1.4.0-4','pool/contrib/f/festvox-don/festvox-don_1.4.0-4_all.deb','646986','minimal British English male speaker for festival',''),(32,'festvox-rablpc16k','extra','contrib/sound','7488','Matthias Urlichs ','all','','1.4.0-2','pool/contrib/f/festvox-rablpc16k/festvox-rablpc16k_1.4.0-2_all.deb','5359618','British English male speaker for festival, 16khz sample rate',''),(33,'festvox-rablpc8k','extra','contrib/sound','4380','Matthias Urlichs ','all','','1.4.0-2','pool/contrib/f/festvox-rablpc8k/festvox-rablpc8k_1.4.0-2_all.deb','3115688','British English male speaker for festival, 8khz sample rate',''),(34,'flashplugin-nonfree-extrasound','optional','contrib/sound','60','Petter Reinholdtsen ','i386','','0.0.svn2431-3','pool/contrib/f/flashplugin-nonfree-extrasound/flashplugin-nonfree-extrasound_0.0.svn2431-3_i386.deb','7952','Adobe Flash Player platform support library for Esound and OSS',''),(35,'flashplugin-nonfree','optional','contrib/web','132','Bart Martens ','i386','','1:2.8','pool/contrib/f/flashplugin-nonfree/flashplugin-nonfree_2.8_i386.deb','17848','Adobe Flash Player - browser plugin','http://wiki.debian.org/FlashPlayer'),(36,'freemind','optional','contrib/text','604','Eric Lavarde ','all','','0.7.1-6','pool/contrib/f/freemind/freemind_0.7.1-6_all.deb','402962','A Java Program for creating and viewing Mindmaps',''),(37,'funguloids','extra','contrib/games','20544','Debian Games Team ','i386','funguloids (1.06-8)','1.06-8+b1','pool/contrib/f/funguloids/funguloids_1.06-8+b1_i386.deb','14779856','space-flying-mushroom-picking-simulator game','http://funguloids.sourceforge.net'),(38,'game-data-packager','optional','contrib/games','168','Debian Games Team ','all','','22','pool/contrib/g/game-data-packager/game-data-packager_22_all.deb','48516','Installer for game data files',''),(39,'cpp-doc','optional','contrib/doc','16','Debian GCC Maintainers ','i386','gcc-doc-defaults','5:2','pool/contrib/g/gcc-doc-defaults/cpp-doc_2_i386.deb','2740','documentation for the GNU C preprocessor (cpp)',''),(40,'gcc-doc','optional','contrib/doc','16','Debian GCC Maintainers ','i386','gcc-doc-defaults','5:2','pool/contrib/g/gcc-doc-defaults/gcc-doc_2_i386.deb','2840','documentation for the GNU compilers (gcc, gobjc, g++)',''),(41,'gcj-doc','optional','contrib/doc','16','Debian GCC Maintainers ','i386','gcc-doc-defaults','5:2','pool/contrib/g/gcc-doc-defaults/gcj-doc_2_i386.deb','2862','documentation for the GNU Java tools (gcj, gij)',''),(42,'gfortran-doc','optional','contrib/doc','16','Debian GCC Maintainers ','i386','gcc-doc-defaults','5:2','pool/contrib/g/gcc-doc-defaults/gfortran-doc_2_i386.deb','2724','documentation for the GNU Fortran Compiler (gfortran)',''),(43,'gnat-doc','optional','contrib/doc','16','Debian GCC Maintainers ','i386','gcc-doc-defaults','5:2','pool/contrib/g/gcc-doc-defaults/gnat-doc_2_i386.deb','2686','documentation for the GNU Ada Compiler (gnat)',''),(44,'glest','optional','contrib/games','1156','Debian Games Team ','i386','','3.2.2-1','pool/contrib/g/glest/glest_3.2.2-1_i386.deb','439766','a free 3D real-time customizable strategy game','http://www.glest.org/'),(45,'gnome-speech-dectalk','optional','contrib/libs','136','Mario Lang ','i386','gnome-speech','1:0.4.25-1','pool/contrib/g/gnome-speech/gnome-speech-dectalk_0.4.25-1_i386.deb','39810','GNOME text-to-speech library (Fonix DECtalk engine support)',''),(46,'gnome-speech-ibmtts','optional','contrib/libs','144','Mario Lang ','i386','gnome-speech','1:0.4.25-1','pool/contrib/g/gnome-speech/gnome-speech-ibmtts_0.4.25-1_i386.deb','39588','GNOME text-to-speech library (IBMTTS engine support)',''),(47,'gnome-speech-swift','optional','contrib/libs','136','Mario Lang ','i386','gnome-speech','1:0.4.25-1','pool/contrib/g/gnome-speech/gnome-speech-swift_0.4.25-1_i386.deb','38410','GNOME text-to-speech library (Cepstral swift engine support)',''),(48,'gnuboy-sdl','optional','contrib/games','216','Davide Puricelli (evo) ','i386','gnuboy','1.0.3-5','pool/contrib/g/gnuboy/gnuboy-sdl_1.0.3-5_i386.deb','77692','SDL binaries for gnuboy - Game Boy Emulator',''),(49,'gnuboy-svga','optional','contrib/games','212','Davide Puricelli (evo) ','i386','gnuboy','1.0.3-5','pool/contrib/g/gnuboy/gnuboy-svga_1.0.3-5_i386.deb','77268','SVGALIB binaries for gnuboy - Game Boy Emulator',''),(50,'gnuboy-x','optional','contrib/games','216','Davide Puricelli (evo) ','i386','gnuboy','1.0.3-5','pool/contrib/g/gnuboy/gnuboy-x_1.0.3-5_i386.deb','79218','X binaries for gnuboy - Game Boy Emulator',''),(51,'gnuvd-gnome','optional','contrib/text','36','Guus Sliepen ','all','gnuvd','1.0.10-1','pool/contrib/g/gnuvd/gnuvd-gnome_1.0.10-1_all.deb','5678','Query the online Dutch Van Dale dictionary - GNOME frontend','http://www.djcbsoftware.nl/code/gnuvd/'),(52,'gnuvd','optional','contrib/text','32','Guus Sliepen ','i386','','1.0.10-1','pool/contrib/g/gnuvd/gnuvd_1.0.10-1_i386.deb','10926','Query the online Dutch Van Dale dictionary','http://www.djcbsoftware.nl/code/gnuvd/'),(53,'googleearth-package','optional','contrib/misc','68','Wesley J. Landaker ','all','','0.5.6','pool/contrib/g/googleearth-package/googleearth-package_0.5.6_all.deb','10346','utility to automatically build a Debian package of Google Earth',''),(54,'grinvin','optional','contrib/math','152','Debian Java Maintainers ','i386','','1.2-1','pool/contrib/g/grinvin/grinvin_1.2-1_i386.deb','28944','interactive software for studying graphs and their invariants','http://www.grinvin.org/'),(55,'gstreamer0.10-pitfdll','optional','contrib/libs','256','Sebastian Dröge ','i386','','0.9.1.1+cvs20080215-1','pool/contrib/g/gstreamer0.10-pitfdll/gstreamer0.10-pitfdll_0.9.1.1+cvs20080215-1_i386.deb','80416','GStreamer plugin for using MS Windows binary codecs','http://sourceforge.net/projects/pitfdll/'),(56,'gtktrain','optional','contrib/x11','156','Masayuki Hatta (mhatta) ','i386','','0.9b-13','pool/contrib/g/gtktrain/gtktrain_0.9b-13_i386.deb','38922','The train-routing calculator with GTK+ interface',''),(57,'gwp','optional','contrib/games','4572','Lucas Di Pentima ','i386','','0.4.0-1.2','pool/contrib/g/gwp/gwp_0.4.0-1.2_i386.deb','1855978','a VGA Planets strategy game client for GNOME',''),(58,'hannah-foo2zjs','optional','contrib/text','100','Michael Koch ','i386','','1:1','pool/contrib/h/hannah-foo2zjs/hannah-foo2zjs_1_i386.deb','17768','Graphical firmware downloader for the foo2zjs package',''),(59,'horae','optional','contrib/science','8748','Carlo Segre ','all','','070-1','pool/contrib/h/horae/horae_070-1_all.deb','5179726','interactive graphical processing and analysis of EXAFS data','http://cars9.uchicago.edu/~ravel/software/Welcome.html'),(60,'hyperspec','optional','contrib/doc','100','Debian Common Lisp Team ','all','','1.28','pool/contrib/h/hyperspec/hyperspec_1.28_all.deb','9760','The Common Lisp ANSI-standard Hyperspec',''),(61,'ifeffit-doc','optional','contrib/doc','5016','Carlo Segre ','all','ifeffit','2:1.2.10a-5','pool/contrib/i/ifeffit/ifeffit-doc_1.2.10a-5_all.deb','2271980','IFEFFIT examples and documentation','http://cars9.uchicago.edu/ifeffit/'),(62,'ifeffit','optional','contrib/science','4672','Carlo Segre ','i386','','2:1.2.10a-5','pool/contrib/i/ifeffit/ifeffit_1.2.10a-5_i386.deb','2005186','An interactive program for XAFS analysis','http://cars9.uchicago.edu/ifeffit/'),(63,'perl-ifeffit','optional','contrib/perl','668','Carlo Segre ','i386','ifeffit','2:1.2.10a-5','pool/contrib/i/ifeffit/perl-ifeffit_1.2.10a-5_i386.deb','277810','Perl extensions for IFEFFIT','http://cars9.uchicago.edu/ifeffit/'),(64,'python-ifeffit','optional','contrib/python','1396','Carlo Segre ','i386','ifeffit','2:1.2.10a-5','pool/contrib/i/ifeffit/python-ifeffit_1.2.10a-5_i386.deb','522928','Python GUI interface and extensions for IFEFFIT','http://cars9.uchicago.edu/ifeffit/'),(65,'imgtex','optional','contrib/utils','68','Atsuhito KOHDA ','all','','0.20050123-8','pool/contrib/i/imgtex/imgtex_0.20050123-8_all.deb','6140','provides yet another math-on-the-web solution',''),(66,'ion3-scripts','extra','contrib/x11','724','Debian QA Group ','all','','20070515.debian-1','pool/contrib/i/ion3-scripts/ion3-scripts_20070515.debian-1_all.deb','133230','user-contributed add-ons to the Ion 3 window manager','http://modeemi.fi/~tuomov/repos/ion-scripts-3/'),(67,'isight-firmware-tools','extra','contrib/graphics','216','Nobuhiro Iwamatsu ','i386','','1.4.2-3','pool/contrib/i/isight-firmware-tools/isight-firmware-tools_1.4.2-3_i386.deb','34210','tools for dealing with Apple iSight firmware',''),(68,'ivtv-utils','extra','contrib/x11','396','Debian MythTV Team ','i386','','1.4.0-1','pool/contrib/i/ivtv-utils/ivtv-utils_1.4.0-1_i386.deb','132072','utilities for use with the ivtv kernel driver','http://ivtvdriver.org'),(69,'jabref','optional','contrib/tex','2836','gregor herrmann ','all','','2.5-1','pool/contrib/j/jabref/jabref_2.5-1_all.deb','2582694','graphical frontend to manage BibTeX databases','http://jabref.sourceforge.net/'),(70,'java-package','optional','contrib/java','424','Debian Java Maintainers ','all','','0.42','pool/contrib/j/java-package/java-package_0.42_all.deb','26576','utility for building Java(TM) 2 related Debian packages',''),(71,'jde','optional','contrib/devel','3804','Michael W. Olson (GNU address) ','all','','2.3.5.1-5','pool/contrib/j/jde/jde_2.3.5.1-5_all.deb','1577706','JDEE, Java Development Environment for Emacs(en)',''),(72,'jspwiki','optional','contrib/web','5964','Kalle Kivimaa ','all','','2.8.0-3.1','pool/contrib/j/jspwiki/jspwiki_2.8.0-3.1_all.deb','4414836','WikiWikiWeb clone written in Java','http://www.jspwiki.org'),(73,'kbedic','optional','contrib/text','268','Anton Zinoviev ','i386','','4.0-11','pool/contrib/k/kbedic/kbedic_4.0-11_i386.deb','72912','K Bulgarian/English Dictionary',''),(74,'lgc-pg','optional','contrib/utils','448','Debian QA Group ','i386','','0.32-3','pool/contrib/l/lgc-pg/lgc-pg_0.32-3_i386.deb','173734','LGeneral Converter for Panzer General',''),(75,'lgeneral','optional','contrib/games','1764','Debian QA Group ','i386','','1.1.1-5','pool/contrib/l/lgeneral/lgeneral_1.1.1-5_i386.deb','483824','A \"Panzer General\" - like game','http://lgames.sourceforge.net'),(76,'linux-wlan-ng-firmware','extra','contrib/kernel','224','Victor Seva ','all','linux-wlan-ng','0.2.9+dfsg-2','pool/contrib/l/linux-wlan-ng/linux-wlan-ng-firmware_0.2.9+dfsg-2_all.deb','52980','firmware files used by the linux-wlan-ng driver',''),(77,'liveice','optional','contrib/sound','148','Jochen Friedrich ','i386','','1.0-3','pool/contrib/l/liveice/liveice_1.0-3_i386.deb','56726','Live audio streaming application',''),(78,'libdbd-informix-perl','extra','contrib/perl','588','Roderick Schertler ','i386','','2008.0513-1','pool/contrib/libd/libdbd-informix-perl/libdbd-informix-perl_2008.0513-1_i386.deb','238074','Perl DBI driver for Informix',''),(79,'libdbd-oracle-perl','extra','contrib/perl','972','Peter Eisentraut ','i386','','1.21-2','pool/contrib/libd/libdbd-oracle-perl/libdbd-oracle-perl_1.21-2_i386.deb','391780','Perl DBI driver for Oracle','http://search.cpan.org/dist/DBD-Oracle/'),(80,'libgooglecharts-ruby1.8','optional','contrib/ruby','72','Ryan Niebur ','all','libgooglecharts-ruby','1.3.6-1','pool/contrib/libg/libgooglecharts-ruby/libgooglecharts-ruby1.8_1.3.6-1_all.deb','6910','Ruby library to create sexy charts using the Google API','http://googlecharts.rubyforge.org/'),(81,'libgooglecharts-ruby','optional','contrib/ruby','32','Ryan Niebur ','all','','1.3.6-1','pool/contrib/libg/libgooglecharts-ruby/libgooglecharts-ruby_1.3.6-1_all.deb','2330','Ruby library to create sexy charts using the Google API (dummy package)','http://googlecharts.rubyforge.org/'),(82,'libgrinvin-core-java-doc','optional','contrib/doc','8920','Debian Java Maintainers ','all','libgrinvin-core-java','1.2-1','pool/contrib/libg/libgrinvin-core-java/libgrinvin-core-java-doc_1.2-1_all.deb','504898','interactive software package for studying graphs (API docs)','http://www.grinvin.org/'),(83,'libgrinvin-core-java','optional','contrib/java','840','Debian Java Maintainers ','all','','1.2-1','pool/contrib/libg/libgrinvin-core-java/libgrinvin-core-java_1.2-1_all.deb','710634','interactive software package for studying graphs (core libraries)','http://www.grinvin.org/'),(84,'libgrinvin-factories-java','optional','contrib/java','144','Debian Java Maintainers ','all','','1.2-1','pool/contrib/libg/libgrinvin-factories-java/libgrinvin-factories-java_1.2-1_all.deb','92436','interactive software package for studying graphs (graph factories)','http://www.grinvin.org/'),(85,'libgrinvin-generators-java','optional','contrib/java','72','Debian Java Maintainers ','all','','1.0.1-1','pool/contrib/libg/libgrinvin-generators-java/libgrinvin-generators-java_1.0.1-1_all.deb','29028','interactive software package for studying graphs (graph generators)','http://www.grinvin.org/'),(86,'libgrinvin-graphs-java','optional','contrib/java','276','Debian Java Maintainers ','all','','1.2-1','pool/contrib/libg/libgrinvin-graphs-java/libgrinvin-graphs-java_1.2-1_all.deb','169064','interactive software package for studying graphs (standard graphs)','http://www.grinvin.org/'),(87,'libgrinvin-help-java','optional','contrib/java','188','Debian Java Maintainers ','all','','1.2-1','pool/contrib/libg/libgrinvin-help-java/libgrinvin-help-java_1.2-1_all.deb','107826','interactive software package for studying graphs (help files)','http://www.grinvin.org/'),(88,'libgrinvin-invariants-java','optional','contrib/java','232','Debian Java Maintainers ','all','','1.2-1','pool/contrib/libg/libgrinvin-invariants-java/libgrinvin-invariants-java_1.2-1_all.deb','163526','interactive software package for studying graphs (graph invariants)','http://www.grinvin.org/'),(89,'libpdfbox-java-doc','extra','contrib/doc','13044','gregor herrmann ','all','libpdfbox-java','0.7.3.dfsg-3','pool/contrib/libp/libpdfbox-java/libpdfbox-java-doc_0.7.3.dfsg-3_all.deb','804148','PDF library for Java (documentation)','http://www.pdfbox.org/'),(90,'libpdfbox-java','extra','contrib/java','4568','gregor herrmann ','all','','0.7.3.dfsg-3','pool/contrib/libp/libpdfbox-java/libpdfbox-java_0.7.3.dfsg-3_all.deb','4499600','PDF library for Java','http://www.pdfbox.org/'),(91,'libpgplot-perl','optional','contrib/perl','256','Debian Perl Group ','i386','','1:2.20-1','pool/contrib/libp/libpgplot-perl/libpgplot-perl_2.20-1_i386.deb','69092','perl interface to the pgplot plotting library','http://search.cpan.org/~kgb/PGPLOT/'),(92,'libtrain-bin','optional','contrib/misc','48','Masayuki Hatta (mhatta) ','i386','libtrain','0.9b-11','pool/contrib/libt/libtrain/libtrain-bin_0.9b-11_i386.deb','6524','Command line interface for libtrain',''),(93,'libtrain-dev','optional','contrib/libdevel','136','Masayuki Hatta (mhatta) ','i386','libtrain','0.9b-11','pool/contrib/libt/libtrain/libtrain-dev_0.9b-11_i386.deb','34800','The train-routing calculator library - development',''),(94,'libtrain1','optional','contrib/libs','184','Masayuki Hatta (mhatta) ','i386','libtrain','0.9b-11','pool/contrib/libt/libtrain/libtrain1_0.9b-11_i386.deb','53966','The train-routing calculator library - runtime',''),(95,'libydpdict2-dev','optional','contrib/libdevel','72','Marcin Owsiany ','i386','libydpdict','1.0.2-1','pool/contrib/liby/libydpdict/libydpdict2-dev_1.0.2-1_i386.deb','9632','a library for reading Collins dictionaries - development files','http://toxygen.net/ydpdict/'),(96,'libydpdict2','optional','contrib/libs','60','Marcin Owsiany ','i386','libydpdict','1.0.2-1','pool/contrib/liby/libydpdict/libydpdict2_1.0.2-1_i386.deb','10352','a library for reading Collins dictionaries','http://toxygen.net/ydpdict/'),(97,'mathematica-fonts','extra','contrib/fonts','160','Atsuhito KOHDA ','all','','10','pool/contrib/m/mathematica-fonts/mathematica-fonts_10_all.deb','26302','Installer of Mathematica fonts',''),(98,'ttf-mathematica4.1','extra','contrib/fonts','32','Atsuhito KOHDA ','all','mathematica-fonts','10','pool/contrib/m/mathematica-fonts/ttf-mathematica4.1_10_all.deb','2648','transitional dummy package',''),(99,'microcode.ctl','optional','contrib/utils','128','Giacomo Catenazzi ','i386','','1.17-13','pool/contrib/m/microcode.ctl/microcode.ctl_1.17-13_i386.deb','23230','Intel IA32/IA64 CPU Microcode Utility','http://www.urbanmyth.org/microcode/'),(100,'ttf-mscorefonts-installer','optional','contrib/fonts','196','Thijs Kinkhorst ','all','msttcorefonts','3.0','pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.0_all.deb','35886','Installer for Microsoft TrueType core fonts',''),(101,'nestra','optional','contrib/otherosfs','3788','Debian QA Group ','i386','','0.66-10','pool/contrib/n/nestra/nestra_0.66-10_i386.deb','58562','Nintendo Entertainment System emulator',''),(102,'netbeans-ide','optional','contrib/devel','340996','Debian QA Group ','all','','6.0.1+dfsg-3','pool/contrib/n/netbeans-ide/netbeans-ide_6.0.1+dfsg-3_all.deb','143850124','IDE for Java Development and More, version 6 (IDE)','http://www.netbeans.org/'),(103,'netbeans-platform','optional','contrib/devel','17052','Debian QA Group ','all','netbeans-ide','6.0.1+dfsg-3','pool/contrib/n/netbeans-ide/netbeans-platform_6.0.1+dfsg-3_all.deb','6046748','IDE for Java Development and More, version 6 (platform foundation)','http://www.netbeans.org/'),(104,'netdisco-mibs-installer','extra','contrib/net','92','Oliver Gorwits ','all','','1.3','pool/contrib/n/netdisco-mibs-installer/netdisco-mibs-installer_1.3_all.deb','12124','Netdisco MIB bundle installer package',''),(105,'nvidia-cg-toolkit','extra','contrib/libs','168','Federico Di Gregorio ','i386','','2.1.0017.deb1','pool/contrib/n/nvidia-cg-toolkit/nvidia-cg-toolkit_2.1.0017.deb1_i386.deb','36420','NVIDIA Cg Toolkit Installer','http://developer.nvidia.com/object/cg_toolkit.html'),(106,'nvidia-kernel-common','optional','contrib/kernel','40','Debian NVIDIA Maintainers ','all','','20080825+1','pool/contrib/n/nvidia-kernel-common/nvidia-kernel-common_20080825+1_all.deb','4088','NVIDIA binary kernel module common files',''),(107,'nvidia-settings','optional','contrib/x11','1900','Debian NVIDIA Maintainers ','i386','','185.18.31-1','pool/contrib/n/nvidia-settings/nvidia-settings_185.18.31-1_i386.deb','779172','Tool for configuring the NVIDIA graphics driver',''),(108,'ogre-plugins-cgprogrammanager-dbg','extra','contrib/debug','656','Debian Games Team ','i386','ogre-contrib','1.6.4-1','pool/contrib/o/ogre-contrib/ogre-plugins-cgprogrammanager-dbg_1.6.4-1_i386.deb','205496','Ogre plugin: CgProgramManager debugging symbols','http://ogre3d.org/'),(109,'ogre-plugins-cgprogrammanager','optional','contrib/libs','148','Debian Games Team ','i386','ogre-contrib','1.6.4-1','pool/contrib/o/ogre-contrib/ogre-plugins-cgprogrammanager_1.6.4-1_i386.deb','37446','Ogre plugin: CgProgramManager','http://ogre3d.org/'),(110,'open-vm-source','extra','contrib/admin','948','Debian VMware Maintainers ','all','open-vm-tools','2009.10.15-201664-1','pool/contrib/o/open-vm-tools/open-vm-source_2009.10.15-201664-1_all.deb','911094','Source for VMware guest systems driver','http://open-vm-tools.sourceforge.net/'),(111,'open-vm-toolbox','extra','contrib/admin','1260','Debian VMware Maintainers ','i386','open-vm-tools','2009.10.15-201664-1','pool/contrib/o/open-vm-tools/open-vm-toolbox_2009.10.15-201664-1_i386.deb','507116','tools and components for VMware guest systems (GUI tools)','http://open-vm-tools.sourceforge.net/'),(112,'open-vm-tools-dbg','extra','contrib/debug','5628','Debian VMware Maintainers ','i386','open-vm-tools','2009.10.15-201664-1','pool/contrib/o/open-vm-tools/open-vm-tools-dbg_2009.10.15-201664-1_i386.deb','2231002','tools and components for VMware guest systems (debug)','http://open-vm-tools.sourceforge.net/'),(113,'open-vm-tools','extra','contrib/admin','1924','Debian VMware Maintainers ','i386','','2009.10.15-201664-1','pool/contrib/o/open-vm-tools/open-vm-tools_2009.10.15-201664-1_i386.deb','648448','tools and components for VMware guest systems (CLI tools)','http://open-vm-tools.sourceforge.net/'),(114,'opendict-plugins-lingvosoft','optional','contrib/text','580','Kęstutis Biliūnas ','all','opendict-lingvosoft','0.8-2','pool/contrib/o/opendict-lingvosoft/opendict-plugins-lingvosoft_0.8-2_all.deb','11060','plugins for OpenDict - LingvoSoft Online Dictionaries',''),(115,'openjump','optional','contrib/science','3024','Debian GIS Project ','all','','1.0-4','pool/contrib/o/openjump/openjump_1.0-4_all.deb','2681706','Open Java Unified Mapping Platform JUMP','http://jump-pilot.sourceforge.net/'),(116,'openttd','optional','contrib/games','8916','Matthijs Kooijman ','i386','','0.7.3-1','pool/contrib/o/openttd/openttd_0.7.3-1_i386.deb','3394394','reimplementation of Transport Tycoon Deluxe with enhancements','http://www.openttd.org/'),(117,'ora2pg','extra','contrib/misc','172','Julián Moreno Patiño ','all','','5.4-1','pool/contrib/o/ora2pg/ora2pg_5.4-1_all.deb','63722','Oracle to PostgreSQL database schema converter','http://ora2pg.projects.postgresql.org/'),(118,'playonlinux','optional','contrib/otherosfs','1964','Debian Games Team ','all','','3.7.1-1','pool/contrib/p/playonlinux/playonlinux_3.7.1-1_all.deb','760738','front-end for Wine','http://www.playonlinux.com/'),(119,'pose-skins','extra','contrib/otherosfs','7524','Lucas Wall ','all','','1.9-4','pool/contrib/p/pose-skins/pose-skins_1.9-4_all.deb','6743366','skins for the PalmOS Emulator',''),(120,'pose-doc','extra','contrib/doc','1344','Lucas Wall ','all','pose','3.5-9.1','pool/contrib/p/pose/pose-doc_3.5-9.1_all.deb','1232532','emulates the hardware for most Palm Computing Platform devices',''),(121,'pose-profile','extra','contrib/otherosfs','3624','Lucas Wall ','i386','pose','3.5-9.1','pool/contrib/p/pose/pose-profile_3.5-9.1_i386.deb','1106892','emulates the hardware for most Palm Computing Platform devices',''),(122,'pose','extra','contrib/otherosfs','3552','Lucas Wall ','i386','','3.5-9.1','pool/contrib/p/pose/pose_3.5-9.1_i386.deb','1094312','emulates the hardware for most Palm Computing Platform devices',''),(123,'premail','optional','contrib/mail','344','Steve Kostecke ','all','','0.46-9','pool/contrib/p/premail/premail_0.46-9_all.deb','108676','An e-mail privacy package.',''),(124,'python-psyco-doc','optional','contrib/doc','688','Alexandre Fayolle ','all','psyco-doc','1.6-1','pool/contrib/p/psyco-doc/python-psyco-doc_1.6-1_all.deb','283942','Python specializing compiler documentation','http://psyco.sourceforge.net'),(125,'pvpgn','optional','contrib/net','2268','Radu Spineanu ','i386','pvpgn (1.8.1-2)','1.8.1-2+b1','pool/contrib/p/pvpgn/pvpgn_1.8.1-2+b1_i386.deb','770554','Gaming server that emulates Battle.net(R)',''),(126,'python-cg','optional','contrib/python','440','Debian Python Modules Team ','i386','pycg','0.14.1-2','pool/contrib/p/pycg/python-cg_0.14.1-2_i386.deb','92318','nVidia Cg driver binding for Python','http://www.cs.lth.se/home/Calle_Lejdfors/pygpu/'),(127,'python-pygpu','optional','contrib/python','176','Debian Python Modules Team ','all','pygpu','0.2.0a-629-2','pool/contrib/p/pygpu/python-pygpu_0.2.0a-629-2_all.deb','20624','embedded language for programming GPU using Python','http://www.cs.lth.se/home/Calle_Lejdfors/pygpu/'),(128,'python-doc','optional','contrib/doc','52','Matthias Klose ','all','python-doc-defaults','2.5.2-1','pool/contrib/p/python-doc-defaults/python-doc_2.5.2-1_all.deb','7364','Documentation for the high-level object-oriented language Python',''),(129,'python-ldap-doc','optional','contrib/doc','508','Matej Vela ','all','','2.3-2','pool/contrib/p/python-ldap-doc/python-ldap-doc_2.3-2_all.deb','44280','Documentation for the Python LDAP interface module','http://python-ldap.sourceforge.net/'),(130,'python2.4-doc','optional','contrib/doc','18328','Matthias Klose ','all','','2.4.6-1','pool/contrib/p/python2.4-doc/python2.4-doc_2.4.6-1_all.deb','3470806','Documentation for the high-level object-oriented language Python (v2.4)','http://python.org/'),(131,'python2.5-doc','optional','contrib/doc','20272','Matthias Klose ','all','','2.5.4-1','pool/contrib/p/python2.5-doc/python2.5-doc_2.5.4-1_all.deb','3841314','Documentation for the high-level object-oriented language Python (v2.5)','http://python.org/'),(132,'qmail-qfilter','extra','contrib/mail','104','Adam D. McKenna ','i386','','1.5-3','pool/contrib/q/qmail-qfilter/qmail-qfilter_1.5-3_i386.deb','14058','qmail-queue filter front end',''),(133,'qmailanalog-installer','optional','contrib/mail','96','Klaus Reimer ','all','','0.70.3','pool/contrib/q/qmailanalog-installer/qmailanalog-installer_0.70.3_all.deb','8272','Installer package for building qmailanalog binary package',''),(134,'qmhandle','optional','contrib/mail','88','Marcela Tiznado ','all','','1.3.2-1','pool/contrib/q/qmhandle/qmhandle_1.3.2-1_all.deb','19454','tool to manage the qmail message queue',''),(135,'r-cran-surveillance','optional','contrib/gnu-r','4212','Debian Med Packaging Team ','i386','','1.1.2-1','pool/contrib/r/r-cran-surveillance/r-cran-surveillance_1.1.2-1_i386.deb','1390222','development and the evaluation of epidemiological outbreak detection algorithms','http://surveillance.r-forge.r-project.org'),(136,'rocksndiamonds','extra','contrib/games','1496','Dmitry E. Oboukhov ','i386','','3.2.6.1+dfsg1-5','pool/contrib/r/rocksndiamonds/rocksndiamonds_3.2.6.1+dfsg1-5_i386.deb','469152','arcade-style game','http://artsoft.org'),(137,'rott-dbg','extra','contrib/debug','1176','Debian Games Team ','i386','rott','1.1.1-2','pool/contrib/r/rott/rott-dbg_1.1.1-2_i386.deb','492636','Rise of the Triad -- The HUNT Begins (debug)','http://icculus.org/rott/'),(138,'rott','optional','contrib/games','740','Debian Games Team ','i386','','1.1.1-2','pool/contrib/r/rott/rott_1.1.1-2_i386.deb','301750','Rise of the Triad -- The HUNT Begins','http://icculus.org/rott/'),(139,'sabnzbdplus-theme-iphone','extra','contrib/net','324','JCF Ploemen (jcfp) ','all','sabnzbdplus','0.4.12-1','pool/contrib/s/sabnzbdplus/sabnzbdplus-theme-iphone_0.4.12-1_all.deb','52506','iphone interface templates for the SABnzbd+ binary newsgrabber','http://sabnzbd.org'),(140,'sabnzbdplus-theme-plush','extra','contrib/net','968','JCF Ploemen (jcfp) ','all','sabnzbdplus','0.4.12-1','pool/contrib/s/sabnzbdplus/sabnzbdplus-theme-plush_0.4.12-1_all.deb','208952','plush interface templates for the SABnzbd+ binary newsgrabber','http://sabnzbd.org'),(141,'sabnzbdplus-theme-smpl','extra','contrib/net','448','JCF Ploemen (jcfp) ','all','sabnzbdplus','0.4.12-1','pool/contrib/s/sabnzbdplus/sabnzbdplus-theme-smpl_0.4.12-1_all.deb','104524','smpl interface templates for the SABnzbd+ binary newsgrabber','http://sabnzbd.org'),(142,'sabnzbdplus','extra','contrib/net','1004','JCF Ploemen (jcfp) ','all','','0.4.12-1','pool/contrib/s/sabnzbdplus/sabnzbdplus_0.4.12-1_all.deb','205208','web-based binary newsgrabber with nzb support','http://sabnzbd.org'),(143,'sapgui-package','extra','contrib/misc','72','Guido Günther ','all','','0.0.5','pool/contrib/s/sapgui-package/sapgui-package_0.0.5_all.deb','5698','utility to build SAP GUI related Debian packages','https://honk.sigxcpu.org/piki/projects/sapgui-package/'),(144,'sauerbraten-wake6','optional','contrib/games','404','Gürkan Sengün ','all','','1.0-1','pool/contrib/s/sauerbraten-wake6/sauerbraten-wake6_1.0-1_all.deb','268560','Small but dodgy deathmatch/instagib map for the Sauerbraten game','http://wakeup.rundumbonn.de/wscm/mapping/wake6.html'),(145,'sauerbraten-dbg','extra','contrib/debug','5380','Debian Games Team ','i386','sauerbraten','0.0.20090504.dfsg-1','pool/contrib/s/sauerbraten/sauerbraten-dbg_0.0.20090504.dfsg-1_i386.deb','2172266','Debug symbols for the Sauerbraten game engine','http://sauerbraten.org/'),(146,'sauerbraten-server','extra','contrib/games','324','Debian Games Team ','i386','sauerbraten','0.0.20090504.dfsg-1','pool/contrib/s/sauerbraten/sauerbraten-server_0.0.20090504.dfsg-1_i386.deb','122296','Standalone server for the Sauerbraten game','http://sauerbraten.org/'),(147,'sauerbraten','extra','contrib/games','2180','Debian Games Team ','i386','','0.0.20090504.dfsg-1','pool/contrib/s/sauerbraten/sauerbraten_0.0.20090504.dfsg-1_i386.deb','932792','3D first-person game engine','http://sauerbraten.org/'),(148,'sdic-edict','optional','contrib/text','68','Taku YASUI ','all','sdic','2.1.3-18','pool/contrib/s/sdic/sdic-edict_2.1.3-18_all.deb','13780','installer for EDICT dictionaries for sdic',''),(149,'sdic-eijiro','optional','contrib/text','60','Taku YASUI ','all','sdic','2.1.3-18','pool/contrib/s/sdic/sdic-eijiro_2.1.3-18_all.deb','11692','installer for EIJIRO dictionaries for sdic',''),(150,'sdic-gene95','optional','contrib/text','80','Taku YASUI ','all','sdic','2.1.3-18','pool/contrib/s/sdic/sdic-gene95_2.1.3-18_all.deb','17550','installer for GENE95 dictionaries for sdic',''),(151,'sdic','optional','contrib/text','192','Taku YASUI ','all','','2.1.3-18','pool/contrib/s/sdic/sdic_2.1.3-18_all.deb','49102','Emacs interface for Japanese dictionaries',''),(152,'sivp','optional','contrib/math','2728','Shiqi Yu ','i386','','0.4.3-3','pool/contrib/s/sivp/sivp_0.4.3-3_i386.deb','2170376','Scilab Image and Video Processing toolbox','http://sivp.sourceforge.net'),(153,'sixpack','optional','contrib/science','784','Carlo Segre ','all','','1:0.66-3','pool/contrib/s/sixpack/sixpack_0.66-3_all.deb','162232','full-featured package for XAS analysis','http://www-ssrl.slac.stanford.edu/~swebb/sixpack.htm'),(154,'python-skype','extra','contrib/python','668','Debian Python Modules Team ','all','skype4py','1.0.31.0-1','pool/contrib/s/skype4py/python-skype_1.0.31.0-1_all.deb','102566','Skype API wrapper for Python','https://developer.skype.com/wiki/Skype4Py'),(155,'skysentials','extra','contrib/net','96','Rafael Laboissiere ','all','','1.0.1-4','pool/contrib/s/skysentials/skysentials_1.0.1-4_all.deb','12544','extra functionalities for Linux Skype client','http://www.kolmann.at/philipp/linux/skysentials/'),(156,'spectemu-common','optional','contrib/otherosfs','232','Colin Watson ','i386','spectemu','0.94a-9','pool/contrib/s/spectemu/spectemu-common_0.94a-9_i386.deb','64022','Fast 48k ZX Spectrum Emulator (common files)',''),(157,'spectemu-svga','optional','contrib/otherosfs','204','Colin Watson ','i386','spectemu','0.94a-9','pool/contrib/s/spectemu/spectemu-svga_0.94a-9_i386.deb','53952','Fast 48k ZX Spectrum Emulator for SVGAlib',''),(158,'spectemu-x11','optional','contrib/otherosfs','272','Colin Watson ','i386','spectemu','0.94a-9','pool/contrib/s/spectemu/spectemu-x11_0.94a-9_i386.deb','85856','Fast 48k ZX Spectrum Emulator for X11',''),(159,'sqldeveloper-package','optional','contrib/misc','88','Lazarus Long ','all','','0.2.3','pool/contrib/s/sqldeveloper-package/sqldeveloper-package_0.2.3_all.deb','17212','Oracle SQL Developer Debian package builder',''),(160,'stella','optional','contrib/otherosfs','3148','Mario Iseli ','i386','','2.2-1.1','pool/contrib/s/stella/stella_2.2-1.1_i386.deb','1145596','Atari 2600 Emulator for SDL & X windows',''),(161,'susv2','extra','contrib/doc','48','Jeff Bailey ','all','','1.1','pool/contrib/s/susv2/susv2_1.1_all.deb','2278','Fetch and install SUSv2 documentation',''),(162,'susv3','extra','contrib/doc','48','Jeff Bailey ','all','','6.1','pool/contrib/s/susv3/susv3_6.1_all.deb','2282','Fetch and install SUSv3 documentation',''),(163,'svtools','optional','contrib/misc','160','Klaus Reimer ','all','','0.5-4','pool/contrib/s/svtools/svtools_0.5-4_all.deb','14572','Utilities for daemontools and multilog',''),(164,'tightvnc-java','optional','contrib/java','204','Ola Lundqvist ','all','','1.2.7-8','pool/contrib/t/tightvnc-java/tightvnc-java_1.2.7-8_all.deb','104042','TightVNC java applet and command line program',''),(165,'tremulous-doc','optional','contrib/doc','720','Damien Laniel ','all','tremulous','1.1.0-4.1','pool/contrib/t/tremulous/tremulous-doc_1.1.0-4.1_all.deb','640890','Tremulous documentation',''),(166,'tremulous-server','optional','contrib/games','776','Damien Laniel ','i386','tremulous (1.1.0-4.1)','1.1.0-4.1+b1','pool/contrib/t/tremulous/tremulous-server_1.1.0-4.1+b1_i386.deb','353082','Tremulous server',''),(167,'tremulous','optional','contrib/games','1472','Damien Laniel ','i386','tremulous (1.1.0-4.1)','1.1.0-4.1+b1','pool/contrib/t/tremulous/tremulous_1.1.0-4.1+b1_i386.deb','672916','Aliens vs Humans, team based FPS game with elements of an RTS',''),(168,'uae-dbg','extra','contrib/debug','344','Stephan Sürken ','i386','uae','0.8.29-4','pool/contrib/u/uae/uae-dbg_0.8.29-4_i386.deb','153526','The Ubiquitous Amiga Emulator (debugging)','http://uae.coresystems.de/'),(169,'uae','optional','contrib/otherosfs','2184','Stephan Sürken ','i386','','0.8.29-4','pool/contrib/u/uae/uae_0.8.29-4_i386.deb','696094','The Ubiquitous Amiga Emulator','http://uae.coresystems.de/'),(170,'uqm-russian','extra','contrib/games','1496','Dmitry E. Oboukhov ','all','','1.0.2-5','pool/contrib/u/uqm-russian/uqm-russian_1.0.2-5_all.deb','1046348','Russian addon for \'The Ur-Quan Masters\' game','http://uqm-rus.uvw.ru'),(171,'uqm','optional','contrib/games','1420','Dmitry E. Oboukhov ','i386','','0.6.2.dfsg-9','pool/contrib/u/uqm/uqm_0.6.2.dfsg-9_i386.deb','590578','The Ur-Quan Masters - An inter-galatic adventure game','http://sc2.sourceforge.net/'),(172,'vice','optional','contrib/otherosfs','11988','Laszlo Boszormenyi (GCS) ','i386','','2.1.dfsg-3','pool/contrib/v/vice/vice_2.1.dfsg-3_i386.deb','3971358','The Versatile Commodore Emulator','http://www.viceteam.org/'),(173,'videolink','extra','contrib/video','312','Ben Hutchings ','i386','','1.2.8-1','pool/contrib/v/videolink/videolink_1.2.8-1_i386.deb','97616','assembles a DVD video filesystem from HTML pages and video files','http://womble.decadent.org.uk/software/videolink/'),(174,'vmware-view-open-client','optional','contrib/x11','1224','Debian VMware Maintainers ','i386','','4.0.0-207079+dfsg-1','pool/contrib/v/vmware-view-open-client/vmware-view-open-client_4.0.0-207079+dfsg-1_i386.deb','422592','VMware View Open Client','http://code.google.com/p/vmware-view-open-client'),(175,'vnc-java','optional','contrib/java','160','Ola Lundqvist ','all','','3.3.3r2-8','pool/contrib/v/vnc-java/vnc-java_3.3.3r2-8_all.deb','65800','VNC java applet and command line program',''),(176,'warsow-server','optional','contrib/games','636','Debian Games Team ','i386','warsow','0.42.dfsg1-1.1','pool/contrib/w/warsow/warsow-server_0.42.dfsg1-1.1_i386.deb','290596','Server and TV server for the Warsow 3D first person shooter','http://www.warsow.net/'),(177,'warsow','optional','contrib/games','3576','Debian Games Team ','i386','','0.42.dfsg1-1.1','pool/contrib/w/warsow/warsow_0.42.dfsg1-1.1_i386.deb','2127516','fast paced 3D first person shooter','http://www.warsow.net/'),(178,'wdq2wav','extra','contrib/utils','80','Kevin M. Rosenberg ','i386','','0.8.3-1','pool/contrib/w/wdq2wav/wdq2wav_0.8.3-1_i386.deb','16842','Converts a WinDAQ channel to sound .wav file','http://files.b9.com/wdq2wav/'),(179,'wnn7egg','extra','contrib/utils','680','ISHIKAWA Mutsumi ','all','','1.02-7','pool/contrib/w/wnn7egg/wnn7egg_1.02-7_all.deb','129806','Wnn-nana-tamago -- EGG Input Method with Wnn7 for Emacsen',''),(180,'x-pgp-sig-el','optional','contrib/lisp','236','Takuo KITAME ','all','','1.3.5.1-4.1','pool/contrib/x/x-pgp-sig-el/x-pgp-sig-el_1.3.5.1-4.1_all.deb','57472','X-PGP-Sig mail and news header utility for Emacs',''),(181,'xserver-xorg-video-ivtv-dbg','extra','contrib/debug','204','Debian X Strike Force ','i386','xserver-xorg-video-ivtvdev','1.1.0-1','pool/contrib/x/xserver-xorg-video-ivtvdev/xserver-xorg-video-ivtv-dbg_1.1.0-1_i386.deb','67740','X.Org X server -- IVTV display driver (debug symbols)',''),(182,'xserver-xorg-video-ivtv','extra','contrib/x11','92','Debian X Strike Force ','i386','xserver-xorg-video-ivtvdev','1.1.0-1','pool/contrib/x/xserver-xorg-video-ivtvdev/xserver-xorg-video-ivtv_1.1.0-1_i386.deb','23328','X.Org X server -- IVTV display driver',''),(183,'xtrs','extra','contrib/otherosfs','972','Branden Robinson ','i386','','4.9c-3','pool/contrib/x/xtrs/xtrs_4.9c-3_i386.deb','331780','emulator for TRS-80 Model I/III/4/4P computers',''),(184,'ydpdict','optional','contrib/text','148','Marcin Owsiany ','i386','','1.0.0-1','pool/contrib/y/ydpdict/ydpdict_1.0.0-1_i386.deb','25878','interface for Collins and Langenscheidt dictionaries','http://toxygen.net/ydpdict/'),(185,'2vcard','optional','utils','108','Martin Albisetti ','all','','0.5-3','pool/main/2/2vcard/2vcard_0.5-3_all.deb','14300','perl script to convert an addressbook to VCARD file format',''),(186,'3dchess','optional','games','144','Debian Games Team ','i386','','0.8.1-16','pool/main/3/3dchess/3dchess_0.8.1-16_i386.deb','34932','3D chess for X11',''),(187,'4g8','optional','net','72','LaMont Jones ','i386','','1.0-3','pool/main/4/4g8/4g8_1.0-3_i386.deb','12164','Packet Capture and Interception for Switched Networks',''),(188,'6tunnel','optional','net','68','Thomas Seyrat ','i386','','0.11rc2-2','pool/main/6/6tunnel/6tunnel_0.11rc2-2_i386.deb','12810','TCP proxy for non-IPv6 applications',''),(189,'9base','optional','utils','3428','Debian Suckless Maintainers ','i386','','1:4-1','pool/main/9/9base/9base_4-1_i386.deb','1148990','Plan 9 userland tools','http://tools.suckless.org/9base/'),(190,'9menu','optional','x11','76','Debian QA Group ','i386','','1.8-2','pool/main/9/9menu/9menu_1.8-2_i386.deb','14514','Creates X menus from the shell',''),(191,'9mount-dbg','extra','debug','76','Debian QA Group ','i386','9mount','1.3-7','pool/main/9/9mount/9mount-dbg_1.3-7_i386.deb','6954','plan9 filesystem (v9fs) user mount utilities (debug)','http://sqweek.dnsdojo.org/code/9mount/'),(192,'9mount','optional','admin','88','Debian QA Group ','i386','','1.3-7','pool/main/9/9mount/9mount_1.3-7_i386.deb','11604','plan9 filesystem (v9fs) user mount utilities','http://sqweek.dnsdojo.org/code/9mount/'),(193,'9wm','optional','x11','68','Decklin Foster ','i386','','1.2-9','pool/main/9/9wm/9wm_1.2-9_i386.deb','24932','emulation of the Plan 9 window manager 8-1/2',''),(194,'a2ps-perl-ja','optional','perl','76','Debian QA Group ','all','','1.45-5','pool/main/a/a2ps-perl-ja/a2ps-perl-ja_1.45-5_all.deb','14006','perl version of Miguel Santana\'s a2ps (supports KANJI)',''),(195,'a2ps','optional','text','4244','Masayuki Hatta (mhatta) ','i386','','1:4.14-1','pool/main/a/a2ps/a2ps_4.14-1_i386.deb','926602','GNU a2ps - \'Anything to PostScript\' converter and pretty-printer',''),(196,'liba52-0.7.4-dev','optional','libdevel','188','Debian multimedia packages maintainers ','i386','a52dec','0.7.4-12','pool/main/a/a52dec/liba52-0.7.4-dev_0.7.4-12_i386.deb','46194','library for decoding ATSC A/52 streams (development)','http://liba52.sourceforge.net/'),(197,'liba52-0.7.4','optional','libs','112','Debian multimedia packages maintainers ','i386','a52dec','0.7.4-12','pool/main/a/a52dec/liba52-0.7.4_0.7.4-12_i386.deb','28048','library for decoding ATSC A/52 streams','http://liba52.sourceforge.net/'),(198,'a56','extra','devel','160','Robert Millan ','i386','','1.3-5','pool/main/a/a56/a56_1.3-5_i386.deb','35270','Motorola DSP56001 assembler','http://www.zdomain.com/a56.html'),(199,'a7xpg-data','extra','games','3648','Debian Games Team ','all','a7xpg','0.11.dfsg1-4','pool/main/a/a7xpg/a7xpg-data_0.11.dfsg1-4_all.deb','3527724','chase action game - game data','http://www.asahi-net.or.jp/~cs8k-cyu/windows/a7xpg_e.html'),(200,'a7xpg','extra','games','1468','Debian Games Team ','i386','','0.11.dfsg1-4','pool/main/a/a7xpg/a7xpg_0.11.dfsg1-4_i386.deb','154902','chase action game','http://www.asahi-net.or.jp/~cs8k-cyu/windows/a7xpg_e.html'),(201,'aa3d','optional','graphics','76','Uwe Hermann ','i386','','1.0-8','pool/main/a/aa3d/aa3d_1.0-8_i386.deb','8832','ASCII art stereogram generator','http://aa-project.sourceforge.net/aa3d/'),(202,'python-aafigure','optional','python','236','Jakub Wilk ','all','aafigure','0.4-2','pool/main/a/aafigure/python-aafigure_0.4-2_all.deb','38134','ASCII art to image converter','https://launchpad.net/aafigure'),(203,'libaa-bin','optional','text','88','Bart Martens ','i386','aalib','1.4p5-38','pool/main/a/aalib/libaa-bin_1.4p5-38_i386.deb','10070','sample programs using aalib','http://aa-project.sourceforge.net/aalib/'),(204,'libaa1-dbg','extra','debug','276','Bart Martens ','i386','aalib','1.4p5-38','pool/main/a/aalib/libaa1-dbg_1.4p5-38_i386.deb','69292','ascii art library, debugging symbols','http://aa-project.sourceforge.net/aalib/'),(205,'libaa1-dev','optional','libdevel','556','Bart Martens ','i386','aalib','1.4p5-38','pool/main/a/aalib/libaa1-dev_1.4p5-38_i386.deb','139610','ascii art library, development kit','http://aa-project.sourceforge.net/aalib/'),(206,'libaa1','optional','libs','180','Bart Martens ','i386','aalib','1.4p5-38','pool/main/a/aalib/libaa1_1.4p5-38_i386.deb','58432','ascii art library','http://aa-project.sourceforge.net/aalib/'),(207,'aap-doc','optional','doc','1844','Debian QA Group ','all','aap','1.091-1','pool/main/a/aap/aap-doc_1.091-1_all.deb','676290','make-like \"expert system\" for building software (documentation)','http://www.a-a-p.org/'),(208,'aap','optional','devel','1068','Debian QA Group ','all','','1.091-1','pool/main/a/aap/aap_1.091-1_all.deb','217620','make-like \"expert system\" for building software','http://www.a-a-p.org/'),(209,'aatv','optional','video','112','Uwe Hermann ','i386','','0.3-5','pool/main/a/aatv/aatv_0.3-5_i386.deb','15892','A program to watch TV in a text-based console','http://aatv.sourceforge.net/'),(210,'abakus','optional','kde','728','Steffen Joeris ','i386','','0.91-1','pool/main/a/abakus/abakus_0.91-1_i386.deb','364282','calculator for KDE',''),(211,'abby','optional','video','316','Alejandro Garrido Mota ','i386','','0.4.4-1','pool/main/a/abby/abby_0.4.4-1_i386.deb','106806','front-end for cclive and clive','http://code.google.com/p/abby/'),(212,'abcde','optional','sound','268','Jesus Climent ','all','','2.4.0-1','pool/main/a/abcde/abcde_2.4.0-1_all.deb','115330','A Better CD Encoder','http://code.google.com/p/abcde/'),(213,'abcm2ps','optional','text','416','Anselm Lingnau ','i386','','5.9.5-1','pool/main/a/abcm2ps/abcm2ps_5.9.5-1_i386.deb','179858','Translates ABC music description files to PostScript',''),(214,'abcmidi-yaps','extra','sound','204','Anselm Lingnau ','i386','abcmidi','20070318-2','pool/main/a/abcmidi/abcmidi-yaps_20070318-2_i386.deb','74816','yet another ABC to PostScript converter',''),(215,'abcmidi','optional','sound','380','Anselm Lingnau ','i386','','20070318-2','pool/main/a/abcmidi/abcmidi_20070318-2_i386.deb','178934','converter from ABC to MIDI format and back',''),(216,'abe-data','optional','games','4136','Bart Martens ','all','abe','1.1-3','pool/main/a/abe/abe-data_1.1-3_all.deb','2950864','Side-scrolling game named \"Abe\'s Amazing Adventure\"','http://abe.sourceforge.net/'),(217,'abe','optional','games','120','Bart Martens ','i386','','1.1-3','pool/main/a/abe/abe_1.1-3_i386.deb','41766','Side-scrolling game named \"Abe\'s Amazing Adventure\"','http://abe.sourceforge.net/'),(218,'abi-compliance-checker','optional','devel','324','Ryan Niebur ','all','','1.6-1','pool/main/a/abi-compliance-checker/abi-compliance-checker_1.6-1_all.deb','41414','tool to compare ABI compatibility of shared C/C++ library versions','http://ispras.linux-foundation.org/index.php/ABI_compliance_checker'),(219,'abicheck','optional','devel','148','Angel Ramos ','all','','1.2-5','pool/main/a/abicheck/abicheck_1.2-5_all.deb','34316','binary compatibility checking tool',''),(220,'r-cran-abind','optional','gnu-r','136','Dirk Eddelbuettel ','all','abind','1.1.0-4','pool/main/a/abind/r-cran-abind_1.1.0-4_all.deb','19444','GNU R abind multi-dimensional array combination function',''),(221,'abinit-doc','extra','doc','25396','Debian Scientific Computing Team ','all','abinit','5.3.4.dfsg-3','pool/main/a/abinit/abinit-doc_5.3.4.dfsg-3_all.deb','17017858','A package for electronic structure calculations','http://www.abinit.org/'),(222,'abinit','extra','science','11996','Debian Scientific Computing Team ','i386','','5.3.4.dfsg-3','pool/main/a/abinit/abinit_5.3.4.dfsg-3_i386.deb','4697326','A package for electronic structure calculations','http://www.abinit.org/'),(223,'abiword-common','optional','editors','8628','Masayuki Hatta (mhatta) ','all','abiword','2.6.8-5','pool/main/a/abiword/abiword-common_2.6.8-5_all.deb','2005496','efficient, featureful word processor with collaboration -- common files','http://www.abisource.com/'),(224,'abiword-help','optional','doc','3136','Masayuki Hatta (mhatta) ','all','abiword','2.6.8-5','pool/main/a/abiword/abiword-help_2.6.8-5_all.deb','1256628','online help for AbiWord','http://www.abisource.com/'),(225,'abiword-plugin-goffice','optional','editors','168','Masayuki Hatta (mhatta) ','i386','abiword','2.6.8-5','pool/main/a/abiword/abiword-plugin-goffice_2.6.8-5_i386.deb','68874','GOffice interaction plugin for AbiWord','http://www.abisource.com/'),(226,'abiword-plugin-grammar','optional','editors','104','Masayuki Hatta (mhatta) ','i386','abiword','2.6.8-5','pool/main/a/abiword/abiword-plugin-grammar_2.6.8-5_i386.deb','45470','grammar checking plugin for AbiWord','http://www.abisource.com/'),(227,'abiword-plugin-mathview','optional','editors','344','Masayuki Hatta (mhatta) ','i386','abiword','2.6.8-5','pool/main/a/abiword/abiword-plugin-mathview_2.6.8-5_i386.deb','129904','equation editor plugin for AbiWord','http://www.abisource.com/'),(228,'abiword-plugins','optional','editors','68','Masayuki Hatta (mhatta) ','all','abiword','2.6.8-5','pool/main/a/abiword/abiword-plugins_2.6.8-5_all.deb','34998','transitional plugins package for AbiWord','http://www.abisource.com/'),(229,'abiword','optional','editors','7720','Masayuki Hatta (mhatta) ','i386','','2.6.8-5','pool/main/a/abiword/abiword_2.6.8-5_i386.deb','2982130','efficient, featureful word processor with collaboration','http://www.abisource.com/'),(230,'abntex','optional','tex','816','Otavio Salvador ','all','','0.9~beta2-2.1','pool/main/a/abntex/abntex_0.9~beta2-2.1_all.deb','325628','LaTeX class for writing documents in ABNT standard',''),(231,'abook','optional','mail','316','Gerfried Fuchs ','i386','','0.5.6-7','pool/main/a/abook/abook_0.5.6-7_i386.deb','80858','text-based ncurses address book application','http://abook.sourceforge.net/'),(232,'aboot-base','optional','admin','288','Steve Langasek ','all','aboot','1.0~pre20040408-3','pool/main/a/aboot/aboot-base_1.0~pre20040408-3_all.deb','76442','base files required for bootable media on Linux/Alpha',''),(233,'aboot-cross','optional','admin','64','Steve Langasek ','i386','aboot','1.0~pre20040408-3','pool/main/a/aboot/aboot-cross_1.0~pre20040408-3_i386.deb','28514','utility to create bootable ISO-Images for Linux/Alpha',''),(234,'abr2gbr','extra','graphics','60','Alice Ferrazzi ','i386','','1.0.2-1','pool/main/a/abr2gbr/abr2gbr_1.0.2-1_i386.deb','6514','Converts PhotoShop brushes to GIMP','http://www.sunnyspot.org/gimp/tools.html'),(235,'abuse-frabs','optional','games','13988','Debian Games Team ','all','','2.11-1','pool/main/a/abuse-frabs/abuse-frabs_2.11-1_all.deb','3312144','levels and graphics for Abuse',''),(236,'abuse-lib','extra','games','3844','Debian Games Team ','all','','2.00-18','pool/main/a/abuse-lib/abuse-lib_2.00-18_all.deb','834782','original levels for Abuse',''),(237,'abuse','optional','games','712','Debian Games Team ','i386','abuse-sdl','1:0.7.1-1','pool/main/a/abuse-sdl/abuse_0.7.1-1_i386.deb','316218','SDL port of the Abuse action game',''),(238,'accerciser','extra','gnome','4188','Debian Accessibility Team ','all','','1.8.0-1','pool/main/a/accerciser/accerciser_1.8.0-1_all.deb','1426622','an interactive Python accessibility explorer for the GNOME desktop',''),(239,'acct','optional','admin','356','Debian QA Group ','i386','','6.4~pre1-9','pool/main/a/acct/acct_6.4~pre1-9_i386.deb','107870','The GNU Accounting utilities for process and login accounting','http://www.gnu.org/software/acct/'),(240,'ace-of-penguins','optional','games','628','Jari Aalto ','i386','','1.2-9','pool/main/a/ace-of-penguins/ace-of-penguins_1.2-9_i386.deb','241956','graphical solitaire-games with penguin-look','http://freshmeat.net/projects/theaceofpenguins'),(241,'gperf-ace','optional','devel','224','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/gperf-ace_5.6.3-5_i386.deb','98372','ACE perfect hash function generator','http://www.cs.wustl.edu/~schmidt/ACE.html'),(242,'libace-5.6.3','optional','libs','1696','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-5.6.3_5.6.3-5_i386.deb','689618','C++ network programming framework','http://www.cs.wustl.edu/~schmidt/ACE.html'),(243,'libace-dev','optional','libdevel','8504','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-dev_5.6.3-5_i386.deb','1325252','C++ network programming framework development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(244,'libace-doc','optional','doc','46272','Debian ACE+TAO maintainers ','all','ace','5.6.3-5','pool/main/a/ace/libace-doc_5.6.3-5_all.deb','4743994','C++ network programming framework documentation','http://www.cs.wustl.edu/~schmidt/ACE.html'),(245,'libace-flreactor-5.6.3','optional','libs','204','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-flreactor-5.6.3_5.6.3-5_i386.deb','96200','ACE-GUI reactor integration for Fl','http://www.cs.wustl.edu/~schmidt/ACE.html'),(246,'libace-flreactor-dev','optional','libdevel','160','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-flreactor-dev_5.6.3-5_i386.deb','74276','ACE-GUI reactor integration for Fl development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(247,'libace-foxreactor-5.6.3','optional','libs','208','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-foxreactor-5.6.3_5.6.3-5_i386.deb','97248','ACE-GUI reactor integration for FOX','http://www.cs.wustl.edu/~schmidt/ACE.html'),(248,'libace-foxreactor-dev','optional','libdevel','160','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-foxreactor-dev_5.6.3-5_i386.deb','74230','ACE-GUI reactor integration for FOX development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(249,'libace-htbp-5.6.3','optional','libs','240','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-htbp-5.6.3_5.6.3-5_i386.deb','107744','ACE protocol over HTTP tunneling library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(250,'libace-htbp-dev','optional','libdevel','248','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-htbp-dev_5.6.3-5_i386.deb','87910','ACE protocol over HTTP tunneling library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(251,'libace-qtreactor-5.6.3','optional','libs','220','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-qtreactor-5.6.3_5.6.3-5_i386.deb','101716','ACE-GUI reactor integration for Qt','http://www.cs.wustl.edu/~schmidt/ACE.html'),(252,'libace-qtreactor-dev','optional','libdevel','164','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-qtreactor-dev_5.6.3-5_i386.deb','75672','ACE-GUI reactor integration for Qt development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(253,'libace-rmcast-5.6.3','optional','libs','272','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-rmcast-5.6.3_5.6.3-5_i386.deb','126266','ACE reliable multicast library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(254,'libace-rmcast-dev','optional','libdevel','228','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-rmcast-dev_5.6.3-5_i386.deb','82472','ACE reliable multicast library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(255,'libace-ssl-5.6.3','optional','libs','228','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-ssl-5.6.3_5.6.3-5_i386.deb','101120','ACE secure socket layer library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(256,'libace-ssl-dev','optional','libdevel','260','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-ssl-dev_5.6.3-5_i386.deb','88334','ACE secure socket layer library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(257,'libace-tkreactor-5.6.3','optional','libs','204','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-tkreactor-5.6.3_5.6.3-5_i386.deb','96608','ACE-GUI reactor integration for Tk','http://www.cs.wustl.edu/~schmidt/ACE.html'),(258,'libace-tkreactor-dev','optional','libdevel','160','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-tkreactor-dev_5.6.3-5_i386.deb','74300','ACE-GUI reactor integration for Tk development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(259,'libace-tmcast-5.6.3','optional','libs','180','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-tmcast-5.6.3_5.6.3-5_i386.deb','88258','ACE transactional multicast library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(260,'libace-tmcast-dev','optional','libdevel','200','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-tmcast-dev_5.6.3-5_i386.deb','81234','ACE transactional multicast library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(261,'libace-xtreactor-5.6.3','optional','libs','208','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-xtreactor-5.6.3_5.6.3-5_i386.deb','96794','ACE-GUI reactor integration for Xt','http://www.cs.wustl.edu/~schmidt/ACE.html'),(262,'libace-xtreactor-dev','optional','libdevel','164','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libace-xtreactor-dev_5.6.3-5_i386.deb','74376','ACE-GUI reactor integration for Xt development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(263,'libacexml-5.6.3','optional','libs','376','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libacexml-5.6.3_5.6.3-5_i386.deb','157640','ACE SAX based XML parsing library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(264,'libacexml-dev','optional','libdevel','560','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libacexml-dev_5.6.3-5_i386.deb','127808','ACE SAX based XML parsing library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(265,'libkokyu-5.6.3','optional','libs','196','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libkokyu-5.6.3_5.6.3-5_i386.deb','91536','ACE scheduling and dispatching library','http://www.cs.wustl.edu/~schmidt/ACE.html'),(266,'libkokyu-dev','optional','libdevel','652','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libkokyu-dev_5.6.3-5_i386.deb','305204','ACE scheduling and dispatching library development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(267,'libtao-1.6.3','optional','libs','8316','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-1.6.3_5.6.3-5_i386.deb','2661244','ACE based CORBA ORB core libraries','http://www.cs.wustl.edu/~schmidt/ACE.html'),(268,'libtao-dev','optional','libdevel','9748','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-dev_5.6.3-5_i386.deb','943018','ACE based CORBA ORB core libraries development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(269,'libtao-doc','optional','doc','107388','Debian ACE+TAO maintainers ','all','ace','5.6.3-5','pool/main/a/ace/libtao-doc_5.6.3-5_all.deb','10201852','ACE based CORBA ORB core libraries documentation','http://www.cs.wustl.edu/~schmidt/ACE.html'),(270,'libtao-flresource-1.6.3','optional','libs','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-flresource-1.6.3_5.6.3-5_i386.deb','75528','TAO-GUI reactor integration for Fl','http://www.cs.wustl.edu/~schmidt/ACE.html'),(271,'libtao-flresource-dev','optional','libdevel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-flresource-dev_5.6.3-5_i386.deb','73800','TAO-GUI reactor integration for Fl development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(272,'libtao-foxresource-1.6.3','optional','libs','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-foxresource-1.6.3_5.6.3-5_i386.deb','75204','TAO-GUI reactor integration for FOX','http://www.cs.wustl.edu/~schmidt/ACE.html'),(273,'libtao-foxresource-dev','optional','libdevel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-foxresource-dev_5.6.3-5_i386.deb','73826','TAO-GUI reactor integration for FOX development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(274,'libtao-orbsvcs-1.6.3','optional','libs','21556','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-orbsvcs-1.6.3_5.6.3-5_i386.deb','6254302','TAO CORBA services libraries','http://www.cs.wustl.edu/~schmidt/ACE.html'),(275,'libtao-orbsvcs-dev','optional','libdevel','11792','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-orbsvcs-dev_5.6.3-5_i386.deb','1043016','TAO CORBA services development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(276,'libtao-qtresource-1.6.3','optional','libs','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-qtresource-1.6.3_5.6.3-5_i386.deb','75754','TAO-GUI reactor integration for Qt','http://www.cs.wustl.edu/~schmidt/ACE.html'),(277,'libtao-qtresource-dev','optional','libdevel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-qtresource-dev_5.6.3-5_i386.deb','73860','TAO-GUI reactor integration for Qt development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(278,'libtao-tkresource-1.6.3','optional','libs','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-tkresource-1.6.3_5.6.3-5_i386.deb','75550','TAO-GUI reactor integration for Tk development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(279,'libtao-tkresource-dev','optional','libdevel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-tkresource-dev_5.6.3-5_i386.deb','73822','TAO-GUI reactor integration for Tk development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(280,'libtao-xtresource-1.6.3','optional','libs','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-xtresource-1.6.3_5.6.3-5_i386.deb','75830','TAO-GUI reactor integration for Xt','http://www.cs.wustl.edu/~schmidt/ACE.html'),(281,'libtao-xtresource-dev','optional','libdevel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/libtao-xtresource-dev_5.6.3-5_i386.deb','73842','TAO-GUI reactor integration for Xt development files','http://www.cs.wustl.edu/~schmidt/ACE.html'),(282,'mpc-ace','optional','devel','2168','Debian ACE+TAO maintainers ','all','ace','5.6.3-5','pool/main/a/ace/mpc-ace_5.6.3-5_all.deb','320292','makefile, project and workspace creator','http://www.cs.wustl.edu/~schmidt/ACE.html'),(283,'tao-concurrency','optional','devel','156','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-concurrency_5.6.3-5_i386.deb','81642','TAO concurrency service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(284,'tao-event','optional','devel','144','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-event_5.6.3-5_i386.deb','76556','TAO event service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(285,'tao-ft','optional','devel','356','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-ft_5.6.3-5_i386.deb','155760','TAO fault tolerant services','http://www.cs.wustl.edu/~schmidt/ACE.html'),(286,'tao-ftrtevent','optional','devel','204','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-ftrtevent_5.6.3-5_i386.deb','99664','TAO fault-tolerant real-time event service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(287,'tao-idl','optional','devel','2556','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-idl_5.6.3-5_i386.deb','841982','TAO IDL to C++ compiler','http://www.cs.wustl.edu/~schmidt/ACE.html'),(288,'tao-ifr','optional','devel','868','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-ifr_5.6.3-5_i386.deb','338566','TAO interface repository','http://www.cs.wustl.edu/~schmidt/ACE.html'),(289,'tao-imr','optional','devel','560','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-imr_5.6.3-5_i386.deb','245860','TAO implementation repository','http://www.cs.wustl.edu/~schmidt/ACE.html'),(290,'tao-lifecycle','optional','devel','176','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-lifecycle_5.6.3-5_i386.deb','89392','TAO lifecycle service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(291,'tao-load','optional','devel','192','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-load_5.6.3-5_i386.deb','95090','TAO load balancing service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(292,'tao-log','optional','devel','256','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-log_5.6.3-5_i386.deb','101034','TAO telecom log services','http://www.cs.wustl.edu/~schmidt/ACE.html'),(293,'tao-naming','optional','devel','152','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-naming_5.6.3-5_i386.deb','82560','TAO naming service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(294,'tao-notify','optional','devel','164','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-notify_5.6.3-5_i386.deb','87412','TAO notification service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(295,'tao-rtevent','optional','devel','164','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-rtevent_5.6.3-5_i386.deb','84964','TAO real-time event service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(296,'tao-scheduling','optional','devel','236','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-scheduling_5.6.3-5_i386.deb','114600','TAO scheduling service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(297,'tao-time','optional','devel','184','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-time_5.6.3-5_i386.deb','91090','TAO time service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(298,'tao-trading','optional','devel','148','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-trading_5.6.3-5_i386.deb','77286','TAO trading service','http://www.cs.wustl.edu/~schmidt/ACE.html'),(299,'tao-utils','optional','devel','248','Debian ACE+TAO maintainers ','i386','ace','5.6.3-5','pool/main/a/ace/tao-utils_5.6.3-5_i386.deb','113794','TAO naming service and IOR utilities','http://www.cs.wustl.edu/~schmidt/ACE.html'),(300,'r-cran-acepack','optional','gnu-r','128','Dirk Eddelbuettel ','i386','acepack (1.3.2.2-2)','1.3.2.2-2+b1','pool/main/a/acepack/r-cran-acepack_1.3.2.2-2+b1_i386.deb','29504','GNU R package for regression transformations',''),(301,'acerhk-source','optional','kernel','80','Adam Cécile (Le_Vert) ','all','acerhk','0.5.35-8','pool/main/a/acerhk/acerhk-source_0.5.35-8_all.deb','39444','Source for the acerhk driver','http://www.cakey.de/acerhk/'),(302,'acfax','extra','hamradio','136','Debian Hamradio Maintainers ','i386','','981011-14.1','pool/main/a/acfax/acfax_981011-14.1_i386.deb','35800','Receive faxes using your radio and sound card',''),(303,'acheck-rules-fr','optional','text','80','Nicolas Bertolissio ','all','','0.6','pool/main/a/acheck-rules-fr/acheck-rules-fr_0.6_all.deb','7314','French rules for acheck',''),(304,'acheck-rules','optional','text','104','Nicolas Bertolissio ','all','','0.3.1','pool/main/a/acheck-rules/acheck-rules_0.3.1_all.deb','13618','Basic rules for acheck',''),(305,'acheck','optional','text','192','Nicolas Bertolissio ','all','','0.5.1','pool/main/a/acheck/acheck_0.5.1_all.deb','35790','Check common localisation mistakes',''),(306,'achilles','optional','science','160','Manfred Lichtenstern ','i386','','2-8','pool/main/a/achilles/achilles_2-8_i386.deb','38252','An artificial life and evolution simulator',''),(307,'ack-grep','optional','utils','216','Ryan Niebur ','all','','1.90-2','pool/main/a/ack-grep/ack-grep_1.90-2_all.deb','66982','grep-like program specifically for large source trees','http://search.cpan.org/dist/ack/'),(308,'ack','extra','text','92','Masayuki Hatta (mhatta) ','i386','','1.39-12','pool/main/a/ack/ack_1.39-12_i386.deb','17770','Kanji code converter',''),(309,'acl','optional','utils','268','Nathan Scott ','i386','','2.2.48-1','pool/main/a/acl/acl_2.2.48-1_i386.deb','60548','Access control list utilities','http://savannah.nongnu.org/projects/acl/'),(310,'libacl1-dev','extra','libdevel','296','Nathan Scott ','i386','acl','2.2.48-1','pool/main/a/acl/libacl1-dev_2.2.48-1_i386.deb','78788','Access control list static libraries and headers','http://savannah.nongnu.org/projects/acl/'),(311,'libacl1','required','libs','76','Nathan Scott ','i386','acl','2.2.48-1','pool/main/a/acl/libacl1_2.2.48-1_i386.deb','17724','Access control list shared library','http://savannah.nongnu.org/projects/acl/'),(312,'acl2-books-certs','optional','math','27724','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-books-certs_3.4-2_all.deb','1295318','A Computational Logic for Applicative Common Lisp: library certificates',''),(313,'acl2-books-source','optional','math','20560','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-books-source_3.4-2_all.deb','2973976','A Computational Logic for Applicative Common Lisp: library sources',''),(314,'acl2-books','optional','math','66960','Camm Maguire ','i386','acl2','3.4-2','pool/main/a/acl2/acl2-books_3.4-2_i386.deb','21475906','A Computational Logic for Applicative Common Lisp: compiled libraries',''),(315,'acl2-doc','optional','doc','9020','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-doc_3.4-2_all.deb','2400658','A Computational Logic for Applicative Common Lisp: documentation',''),(316,'acl2-emacs','optional','math','304','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-emacs_3.4-2_all.deb','56260','A Computational Logic for Applicative Common Lisp: emacs interface',''),(317,'acl2-infix-source','optional','math','376','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-infix-source_3.4-2_all.deb','88730','A Computational Logic for Applicative Common Lisp: infix source',''),(318,'acl2-infix','optional','math','1180','Camm Maguire ','i386','acl2','3.4-2','pool/main/a/acl2/acl2-infix_3.4-2_i386.deb','399634','A Computational Logic for Applicative Common Lisp: infix interface',''),(319,'acl2-source','optional','math','10160','Camm Maguire ','all','acl2','3.4-2','pool/main/a/acl2/acl2-source_3.4-2_all.deb','2610826','A Computational Logic for Applicative Common Lisp: source files',''),(320,'acl2','optional','math','64332','Camm Maguire ','i386','','3.4-2','pool/main/a/acl2/acl2_3.4-2_i386.deb','19379656','A Computational Logic for Applicative Common Lisp: main binary',''),(321,'aclock.app','optional','gnustep','224','Gürkan Sengün ','i386','aclock.app (0.2.3-3)','0.2.3-3+b2','pool/main/a/aclock.app/aclock.app_0.2.3-3+b2_i386.deb','28316','Analog dockapp clock for GNUstep',''),(322,'acm','optional','games','1368','Phil Brooke ','i386','','5.0-25','pool/main/a/acm/acm_5.0-25_i386.deb','752596','A multi-player aerial combat simulation',''),(323,'acm4','optional','games','3736','Phil Brooke ','i386','','4.7-19','pool/main/a/acm4/acm4_4.7-19_i386.deb','896084','multi-player aerial combat simulation',''),(324,'aconnectgui','optional','sound','88','Paul Brossier ','i386','','0.9.0rc2-1-9','pool/main/a/aconnectgui/aconnectgui_0.9.0rc2-1-9_i386.deb','26154','graphical ALSA sequencer connection manager',''),(325,'acorn-fdisk','optional','admin','108','Philip Blundell ','i386','','3.0.6-6.2','pool/main/a/acorn-fdisk/acorn-fdisk_3.0.6-6.2_i386.deb','28450','Partition editor for Acorn/RISC OS machines',''),(326,'acovea-results','optional','doc','272','Al Stone ','all','','20040329-1','pool/main/a/acovea-results/acovea-results_20040329-1_all.deb','203792','results captured by using acovea',''),(327,'acovea','optional','devel','264','Al Stone ','i386','','5.1.1-2','pool/main/a/acovea/acovea_5.1.1-2_i386.deb','104138','analysis of compiler options via evolutionary algorithms',''),(328,'libacovea-5.1-5','optional','libs','532','Al Stone ','i386','acovea','5.1.1-2','pool/main/a/acovea/libacovea-5.1-5_5.1.1-2_i386.deb','104286','library for analyzing compiler options via evolutionary algorithms',''),(329,'libacovea-dev','optional','devel','312','Al Stone ','i386','acovea','5.1.1-2','pool/main/a/acovea/libacovea-dev_5.1.1-2_i386.deb','78742','library for analyzing compiler options via evolutionary algorithms',''),(330,'acpi-support-base','optional','admin','80','Debian Acpi Team ','all','acpi-support','0.123-1','pool/main/a/acpi-support/acpi-support-base_0.123-1_all.deb','14752','scripts for handling base ACPI events such as the power button',''),(331,'acpi-support','optional','admin','836','Debian Acpi Team ','i386','','0.123-1','pool/main/a/acpi-support/acpi-support_0.123-1_i386.deb','49236','scripts for handling many ACPI events',''),(332,'acpi','optional','utils','88','Debian Acpi Team ','i386','','1.4-2','pool/main/a/acpi/acpi_1.4-2_i386.deb','15406','displays information on ACPI devices',''),(333,'iasl','optional','devel','676','Mattia Dongili ','i386','acpica-unix','20061109-0.1','pool/main/a/acpica-unix/iasl_20061109-0.1_i386.deb','367092','Intel ASL compiler/decompiler',''),(334,'acpid','optional','admin','196','Debian Acpi Team ','i386','','1.0.10-3','pool/main/a/acpid/acpid_1.0.10-3_i386.deb','45234','Advanced Configuration and Power Interface event daemon','http://acpid.sourceforge.net/'),(335,'acpidump','optional','admin','40','Mattia Dongili ','i386','','20071116-1','pool/main/a/acpidump/acpidump_20071116-1_i386.deb','14408','utilities to dump system\'s ACPI tables to an ASCII file',''),(336,'acpitail','optional','utils','64','Debian Acpi Team ','i386','','0.1-2','pool/main/a/acpitail/acpitail_0.1-2_i386.deb','7518','Show ACPI information in a tail-like style','http://www.vanheusden.com/acpitail/'),(337,'acpitool-dbg','extra','debug','408','Debian Acpi Team ','i386','acpitool','0.5-7','pool/main/a/acpitool/acpitool-dbg_0.5-7_i386.deb','141834','command line ACPI client (debug)','http://freeunix.dyndns.org:8088/site2/acpitool.shtml'),(338,'acpitool','optional','utils','168','Debian Acpi Team ','i386','','0.5-7','pool/main/a/acpitool/acpitool_0.5-7_i386.deb','47740','command line ACPI client','http://freeunix.dyndns.org:8088/site2/acpitool.shtml'),(339,'libacr38u','extra','libs','108','Laurent Bigonville ','i386','acr38','1.7.10-1','pool/main/a/acr38/libacr38u_1.7.10-1_i386.deb','18040','PC/SC driver for the ACR38U smart card reader','http://www.acs.com.hk/'),(340,'libacr38ucontrol-dev','extra','libdevel','72','Laurent Bigonville ','i386','acr38','1.7.10-1','pool/main/a/acr38/libacr38ucontrol-dev_1.7.10-1_i386.deb','6398','Library for operational mode for ACR38U smartcard reader dev files','http://www.acs.com.hk/'),(341,'libacr38ucontrol0','extra','libs','68','Laurent Bigonville ','i386','acr38','1.7.10-1','pool/main/a/acr38/libacr38ucontrol0_1.7.10-1_i386.deb','6288','Library for operational mode for ACR38U smartcard reader','http://www.acs.com.hk/'),(342,'libactiveldap-ruby-doc','optional','doc','42996','Marc Dequènes (Duck) ','all','activeldap','1.0.9-1','pool/main/a/activeldap/libactiveldap-ruby-doc_1.0.9-1_all.deb','34531542','an object-oriented interface to LDAP for Ruby','http://rubyforge.org/projects/ruby-activeldap'),(343,'libactiveldap-ruby1.8','optional','ruby','496','Marc Dequènes (Duck) ','all','activeldap','1.0.9-1','pool/main/a/activeldap/libactiveldap-ruby1.8_1.0.9-1_all.deb','84506','an object-oriented interface to LDAP for Ruby','http://rubyforge.org/projects/ruby-activeldap'),(344,'libactiveldap-ruby','optional','ruby','52','Marc Dequènes (Duck) ','all','activeldap','1.0.9-1','pool/main/a/activeldap/libactiveldap-ruby_1.0.9-1_all.deb','15822','an object-oriented interface to LDAP for Ruby','http://rubyforge.org/projects/ruby-activeldap'),(345,'ada-mode','optional','editors','604','Debian QA Group ','all','','3.6-3','pool/main/a/ada-mode/ada-mode_3.6-3_all.deb','128818','Ada mode for GNU Emacs and XEmacs','http://stephe-leake.org/emacs/ada-mode/emacs-ada-mode.html'),(346,'ada-reference-manual','optional','doc','16248','Florian Weimer ','all','','20021112web-3','pool/main/a/ada-reference-manual/ada-reference-manual_20021112web-3_all.deb','2735014','The standard describing the Ada 95 language',''),(347,'adacgi','optional','web','376','Phil Brooke ','i386','','1.6-11','pool/main/a/adacgi/adacgi_1.6-11_i386.deb','94806','Ada CGI interface',''),(348,'adacontrol','optional','devel','4660','Ludovic Brenta ','i386','','1.9r4-3','pool/main/a/adacontrol/adacontrol_1.9r4-3_i386.deb','1979216','An Ada rules controller',''),(349,'adanaxisgpl-data','optional','games','27448','Debian Games Team ','all','adanaxisgpl','1.2.5.dfsg.1-2','pool/main/a/adanaxisgpl/adanaxisgpl-data_1.2.5.dfsg.1-2_all.deb','18353778','Action game in four spatial dimensions','http://www.mushware.com/'),(350,'adanaxisgpl','optional','games','3408','Debian Games Team ','i386','','1.2.5.dfsg.1-2','pool/main/a/adanaxisgpl/adanaxisgpl_1.2.5.dfsg.1-2_i386.deb','1383178','Action game in four spatial dimensions','http://www.mushware.com/'),(351,'r-cran-adapt','optional','gnu-r','164','Dirk Eddelbuettel ','i386','adapt','1.0-4-3','pool/main/a/adapt/r-cran-adapt_1.0-4-3_i386.deb','18992','GNU R package providing multidimentional integration',''),(352,'libadasockets-dev','extra','libdevel','784','Phil Brooke ','i386','adasockets','1.8.6-2','pool/main/a/adasockets/libadasockets-dev_1.8.6-2_i386.deb','389928','bindings for socket services in Ada',''),(353,'libadasockets1','extra','libs','164','Phil Brooke ','i386','adasockets','1.8.6-2','pool/main/a/adasockets/libadasockets1_1.8.6-2_i386.deb','47224','bindings for socket services in Ada',''),(354,'adblock-plus','optional','web','60','Dmitry E. Oboukhov ','all','','1.1.1-2','pool/main/a/adblock-plus/adblock-plus_1.1.1-2_all.deb','13402','transitional dummy package','http://adblockplus.org/'),(355,'xul-ext-adblock-plus','optional','web','1420','Dmitry E. Oboukhov ','all','adblock-plus','1.1.1-2','pool/main/a/adblock-plus/xul-ext-adblock-plus_1.1.1-2_all.deb','310478','Advertisement blocking extension for web browsers','http://adblockplus.org/'),(356,'addresses-goodies-for-gnustep','optional','mail','160','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/addresses-goodies-for-gnustep_0.4.7-1+b2_i386.deb','32980','Personal Address Manager for GNUstep (Goodies)',''),(357,'addresses.framework','optional','gnustep','12','Eric Heintzmann ','all','addresses-for-gnustep','0.4.7-1','pool/main/a/addresses-for-gnustep/addresses.framework_0.4.7-1_all.deb','8378','Database API backend framework for GNUstep',''),(358,'addressmanager.app','optional','gnustep','564','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/addressmanager.app_0.4.7-1+b2_i386.deb','101602','Personal Address Manager for GNUstep',''),(359,'addressview.framework','optional','gnustep','12','Eric Heintzmann ','all','addresses-for-gnustep','0.4.7-1','pool/main/a/addresses-for-gnustep/addressview.framework_0.4.7-1_all.deb','8368','Address display/edit framework for GNUstep',''),(360,'libaddresses-dev','optional','libdevel','188','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/libaddresses-dev_0.4.7-1+b2_i386.deb','16730','Database API backend framework for GNUstep (development files)',''),(361,'libaddresses0','optional','libs','372','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/libaddresses0_0.4.7-1+b2_i386.deb','70108','Database API backend framework for GNUstep (library files)',''),(362,'libaddressview-dev','optional','libdevel','132','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/libaddressview-dev_0.4.7-1+b2_i386.deb','12686','Address display/edit framework for GNUstep (development files)',''),(363,'libaddressview0','optional','libs','424','Eric Heintzmann ','i386','addresses-for-gnustep (0.4.7-1)','0.4.7-1+b2','pool/main/a/addresses-for-gnustep/libaddressview0_0.4.7-1+b2_i386.deb','72816','Address display/edit framework for GNUstep (library files)',''),(364,'adduser','important','admin','880','Debian Adduser Developers ','all','','3.111','pool/main/a/adduser/adduser_3.111_all.deb','156872','add and remove users and groups','http://alioth.debian.org/projects/adduser/'),(365,'adept','optional','kde','1308','Petr Rockai ','i386','','3.0~beta7.2','pool/main/a/adept/adept_3.0~beta7.2_i386.deb','371506','package management suite for KDE',''),(366,'adesklets','optional','x11','620','Debian QA Group ','i386','','0.6.1-5','pool/main/a/adesklets/adesklets_0.6.1-5_i386.deb','221896','interactive Imlib2 console for the X Window System','http://adesklets.sourceforge.net'),(367,'adjtimex','optional','admin','168','James R. Van Zandt ','i386','','1.28-1','pool/main/a/adjtimex/adjtimex_1.28-1_i386.deb','55818','kernel time variables configuration utility',''),(368,'admesh','optional','math','112','Víctor Pérez Pereira ','i386','','0.95-7','pool/main/a/admesh/admesh_0.95-7_i386.deb','32534','a tool for processing triangulated solid meshes',''),(369,'adns-tools','optional','net','124','Robert S. Edmonds ','i386','adns','1.4-2','pool/main/a/adns/adns-tools_1.4-2_i386.deb','41252','Asynchronous-capable DNS client library and utilities','http://www.chiark.greenend.org.uk/~ian/adns/'),(370,'libadns1-dev','optional','libdevel','204','Robert S. Edmonds ','i386','adns','1.4-2','pool/main/a/adns/libadns1-dev_1.4-2_i386.deb','73584','Asynchronous-capable DNS client library and utilities','http://www.chiark.greenend.org.uk/~ian/adns/'),(371,'libadns1','optional','libs','156','Robert S. Edmonds ','i386','adns','1.4-2','pool/main/a/adns/libadns1_1.4-2_i386.deb','58400','Asynchronous-capable DNS client library and utilities','http://www.chiark.greenend.org.uk/~ian/adns/'),(372,'libadolc-dev','optional','libdevel','1536','Barak A. Pearlmutter ','i386','adolc','1.10.2-1','pool/main/a/adolc/libadolc-dev_1.10.2-1_i386.deb','826088','ADOLC development libs and headers',''),(373,'libadolc-examples','optional','doc','980','Barak A. Pearlmutter ','i386','adolc','1.10.2-1','pool/main/a/adolc/libadolc-examples_1.10.2-1_i386.deb','280866','ADOLC example program binaries',''),(374,'libadolc0','optional','libs','532','Barak A. Pearlmutter ','i386','adolc','1.10.2-1','pool/main/a/adolc/libadolc0_1.10.2-1_i386.deb','203546','ADOLC automatic differentiation system, runtime libs',''),(375,'adonthell-data','optional','games','11760','Debian Games Team ','all','','0.3.4.cvs.20080529-1','pool/main/a/adonthell-data/adonthell-data_0.3.4.cvs.20080529-1_all.deb','9989464','Data files needed by Adonthell','http://adonthell.linuxgames.com/'),(376,'adonthell','optional','games','1000','Debian Games Team ','i386','','0.3.5-2','pool/main/a/adonthell/adonthell_0.3.5-2_i386.deb','268974','A 2D graphical roleplaying game','http://adonthell.linuxgames.com/'),(377,'adplay','optional','sound','68','Gürkan Sengün ','i386','adplay (1.6-1)','1.6-1+b1','pool/main/a/adplay/adplay_1.6-1+b1_i386.deb','23782','console-based OPL2 audio player',''),(378,'adplug-utils','optional','utils','76','Debian QA Group ','i386','adplug','2.0.1.dfsg-1','pool/main/a/adplug/adplug-utils_2.0.1.dfsg-1_i386.deb','26078','free AdLib sound library (utils)','http://adplug.sourceforge.net/'),(379,'libadplug-dev','optional','libdevel','948','Debian QA Group ','i386','adplug','2.0.1.dfsg-1','pool/main/a/adplug/libadplug-dev_2.0.1.dfsg-1_i386.deb','233696','free AdLib sound library (development)','http://adplug.sourceforge.net/'),(380,'libadplug0c2a','optional','libs','448','Debian QA Group ','i386','adplug','2.0.1.dfsg-1','pool/main/a/adplug/libadplug0c2a_2.0.1.dfsg-1_i386.deb','181160','free AdLib sound library','http://adplug.sourceforge.net/'),(381,'adtool','optional','admin','96','Jonathan Wiltshire ','i386','','1.3.3-1','pool/main/a/adtool/adtool_1.3.3-1_i386.deb','15518','command line utility for Active Directory administration','http://www.gp2x.org/adtool/'),(382,'adun.app','optional','gnustep','6412','Debian-Med Packaging Team ','i386','adun.app (0.8.2-1)','0.8.2-1+b2','pool/main/a/adun.app/adun.app_0.8.2-1+b2_i386.deb','1262660','Molecular Simulator for GNUstep','http://diana.imim.es/Adun'),(383,'advancecomp','optional','utils','708','Piotr Ozarowski ','i386','','1.15-1','pool/main/a/advancecomp/advancecomp_1.15-1_i386.deb','325756','collection of recompression utilities',''),(384,'python-advas','optional','python','1504','Patrick Winnertz ','all','advas','0.2.3-2','pool/main/a/advas/python-advas_0.2.3-2_all.deb','104530','algorithms for high-level search and information retrieval',''),(385,'advi-examples','optional','tex','16780','Debian OCaml Maintainers ','all','advi','1.6.0-15','pool/main/a/advi/advi-examples_1.6.0-15_all.deb','3824516','example presentations for Active-DVI (advi)','http://pauillac.inria.fr/advi/'),(386,'advi','optional','tex','2536','Debian OCaml Maintainers ','i386','','1.6.0-15','pool/main/a/advi/advi_1.6.0-15_i386.deb','951102','an active DVI previewer and presenter','http://pauillac.inria.fr/advi/'),(387,'adzapper','optional','web','357','Ludovic Drolez ','all','','20090301-1','pool/main/a/adzapper/adzapper_20090301-1_all.deb','66140','proxy advertisement zapper add-on',''),(388,'aee','optional','editors','468','Mario Iseli ','i386','','2.2.15b-3.2','pool/main/a/aee/aee_2.2.15b-3.2_i386.deb','156204','An easy to use screen-based editor',''),(389,'aegir-provision','optional','admin','428','Antoine Beaupré ','all','','0.3-2','pool/main/a/aegir-provision/aegir-provision_0.3-2_all.deb','45658','backend of the Aegir hosting system','http://drupal.org/project/provision'),(390,'aegis-doc','optional','doc','2020','Christian Meder ','all','aegis','4.24-5.2','pool/main/a/aegis/aegis-doc_4.24-5.2_all.deb','1964284','documentation for aegis','http://aegis.sourceforge.net'),(391,'aegis-tk','optional','devel','444','Christian Meder ','all','aegis','4.24-5.2','pool/main/a/aegis/aegis-tk_4.24-5.2_all.deb','162936','aegis Tk user interface','http://aegis.sourceforge.net'),(392,'aegis-web','optional','devel','2568','Christian Meder ','i386','aegis','4.24-5.2','pool/main/a/aegis/aegis-web_4.24-5.2_i386.deb','983062','aegis web based user interface','http://aegis.sourceforge.net'),(393,'aegis','optional','vcs','46600','Christian Meder ','i386','','4.24-5.2','pool/main/a/aegis/aegis_4.24-5.2_i386.deb','16007050','transaction-based software configuration management','http://aegis.sourceforge.net'),(394,'aeolus','extra','sound','304','Debian Multimedia Team ','i386','','0.8.1-1','pool/main/a/aeolus/aeolus_0.8.1-1_i386.deb','112534','Synthesised pipe organ emulator',''),(395,'aes2501-wy','optional','graphics','32','FingerForce Team ','i386','','0.1-5','pool/main/a/aes2501-wy/aes2501-wy_0.1-5_i386.deb','12100','userspace software for usb aes2501 fingerprint scanner','http://gkall.hobby.nl/authentec.html'),(396,'aesfix','optional','utils','68','Debian Forensics ','i386','aesfix (1.0.1-1)','1.0.1-1+b1','pool/main/a/aesfix/aesfix_1.0.1-1+b1_i386.deb','11402','tool for correcting bit errors in an AES key schedule','http://citp.princeton.edu/memory/code/'),(397,'aeskeyfind','optional','utils','48','Debian Forensics ','i386','aeskeyfind (1.0.0-1)','1.0.0-1+b1','pool/main/a/aeskeyfind/aeskeyfind_1.0.0-1+b1_i386.deb','7928','tool for finding and repairing AES keys','http://citp.princeton.edu/memory/code/'),(398,'aeskulap','optional','science','1784','Debian-Med Packaging Team ','i386','','0.2.2b1-4','pool/main/a/aeskulap/aeskulap_0.2.2b1-4_i386.deb','499444','medical image viewer and DICOM network client','http://aeskulap.nongnu.org'),(399,'aespipe','optional','utils','128','Debian Loop-AES Team ','i386','','2.3e-2','pool/main/a/aespipe/aespipe_2.3e-2_i386.deb','41394','AES-encryption tool with loop-AES support',''),(400,'aewan','extra','text','272','Robert Lemmen ','i386','','1.0.01-3','pool/main/a/aewan/aewan_1.0.01-3_i386.deb','96736','ASCII-art Editor Without A Name',''),(401,'aewm++-goodies','optional','x11','344','Chris Boyle ','i386','','1.0-9','pool/main/a/aewm++-goodies/aewm++-goodies_1.0-9_i386.deb','69962','utilities to complement a minimal window manager',''),(402,'aewm++','optional','x11','152','Chris Boyle ','i386','','1.1.2-5','pool/main/a/aewm++/aewm++_1.1.2-5_i386.deb','38770','minimal window manager written in C++','http://code.google.com/p/aewmpp/'),(403,'aewm','optional','x11','148','Decklin Foster ','i386','','1.3.12-2','pool/main/a/aewm/aewm_1.3.12-2_i386.deb','52228','a minimalist window manager for X11',''),(404,'afbackup-client','optional','utils','1224','Debian QA Group ','i386','afbackup','3.5.3-2','pool/main/a/afbackup/afbackup-client_3.5.3-2_i386.deb','521386','Client-Server Backup System (Client side)','http://sourceforge.net/projects/afbackup/'),(405,'afbackup-common','optional','utils','800','Debian QA Group ','all','afbackup','3.5.3-2','pool/main/a/afbackup/afbackup-common_3.5.3-2_all.deb','319750','Client-Server Backup System (common files)','http://sourceforge.net/projects/afbackup/'),(406,'afbackup','optional','utils','1020','Debian QA Group ','i386','','3.5.3-2','pool/main/a/afbackup/afbackup_3.5.3-2_i386.deb','429214','Client-Server Backup System (Server side)','http://sourceforge.net/projects/afbackup/'),(407,'affiche.app','optional','gnustep','384','Hubert Chathi ','i386','affiche (0.6.0-7)','0.6.0-7+b2','pool/main/a/affiche/affiche.app_0.6.0-7+b2_i386.deb','55370','An application to \"stick\" little notes on the desktop',''),(408,'afio','optional','utils','240','Erik Schanze ','i386','','2.5-5','pool/main/a/afio/afio_2.5-5_i386.deb','80192','archive file manipulation program',''),(409,'afnix-doc','optional','doc','284','Paul Cager ','all','afnix','1.5.2-3.3','pool/main/a/afnix/afnix-doc_1.5.2-3.3_all.deb','192320','Compiler and run-time for the AFNIX programming language (documentation)','http://www.afnix.org/'),(410,'afnix','optional','interpreters','8776','Paul Cager ','i386','','1.5.2-3.3','pool/main/a/afnix/afnix_1.5.2-3.3_i386.deb','1878610','Compiler and run-time for the AFNIX programming language','http://www.afnix.org/'),(411,'aft','optional','text','340','Robert Lemmen ','all','','2:5.097-1','pool/main/a/aft/aft_5.097-1_all.deb','81832','\"free form\" document preparation system',''),(412,'afterstep','optional','x11','9496','Robert Luberda ','i386','','2.2.9-4','pool/main/a/afterstep/afterstep_2.2.9-4_i386.deb','3624130','window manager with the NEXTSTEP look and feel','http://www.afterstep.org/'),(413,'libafterimage-dev','optional','libdevel','2156','Robert Luberda ','i386','afterstep','2.2.9-4','pool/main/a/afterstep/libafterimage-dev_2.2.9-4_i386.deb','808748','imaging library designed for AfterStep - development files','http://www.afterstep.org/'),(414,'libafterimage0','optional','libs','632','Robert Luberda ','i386','afterstep','2.2.9-4','pool/main/a/afterstep/libafterimage0_2.2.9-4_i386.deb','311292','imaging library designed for AfterStep - runtime files','http://www.afterstep.org/'),(415,'libafterstep1','optional','libs','860','Robert Luberda ','i386','afterstep','2.2.9-4','pool/main/a/afterstep/libafterstep1_2.2.9-4_i386.deb','407118','shared libraries for the AfterStep window manager','http://www.afterstep.org/'),(416,'afuse','optional','utils','84','Varun Hiremath ','i386','','0.2-3','pool/main/a/afuse/afuse_0.2-3_i386.deb','16514','automounting file system implemented in user-space using FUSE','http://sourceforge.net/projects/afuse/'),(417,'agave','optional','gnome','1216','Varun Hiremath ','i386','','0.4.7-1','pool/main/a/agave/agave_0.4.7-1_i386.deb','423634','colorscheme designer for the GNOME desktop','http://home.gna.org/colorscheme/'),(418,'agda-bin','optional','haskell','8800','Iain Lane ','i386','','2.2.4-1','pool/main/a/agda-bin/agda-bin_2.2.4-1_i386.deb','2395958','Commandline interface to Agda','http://wiki.portal.chalmers.se/agda/'),(419,'agedu','optional','utils','80','Alexander Prinsier ','i386','','8642-1','pool/main/a/agedu/agedu_8642-1_i386.deb','41350','a Unix utility for tracking down wasted disk space','http://www.chiark.greenend.org.uk/~sgtatham/agedu/'),(420,'agenda.app','optional','gnustep','576','Debian GNUstep maintainers ','i386','agenda.app (0.36-1)','0.36-1+b1','pool/main/a/agenda.app/agenda.app_0.36-1+b1_i386.deb','135752','Calendar manager for GNUstep',''),(421,'libagg-dev','optional','libdevel','2932','Andrea Veri ','i386','agg','2.5+dfsg1-2','pool/main/a/agg/libagg-dev_2.5+dfsg1-2_i386.deb','516246','The AntiGrain Geometry graphical toolkit (development files)',''),(422,'aggregate','optional','net','64','Erik Wenzel ','i386','','1.6-5','pool/main/a/aggregate/aggregate_1.6-5_i386.deb','11344','ipv4 cidr prefix aggregator',''),(423,'agsync-dev','optional','libdevel','372','Debian QA Group ','i386','agsync','0.2-pre-11','pool/main/a/agsync/agsync-dev_0.2-pre-11_i386.deb','77144','Development files for AvantGo and Pocket PC synchronization',''),(424,'agsync','optional','libs','212','Debian QA Group ','i386','','0.2-pre-11','pool/main/a/agsync/agsync_0.2-pre-11_i386.deb','69190','Synchronization mediator for AvantGo and Pocket PC',''),(425,'agtl','extra','python','612','Heiko Stuebner ','all','','0.4.2-1','pool/main/a/agtl/agtl_0.4.2-1_all.deb','74446','Tool for paperless geocaching','http://wiki.openmoko.org/wiki/Advanced_Geocaching_Tool_for_Linux'),(426,'aiccu','optional','net','208','Debian QA Group ','i386','','20070115-10','pool/main/a/aiccu/aiccu_20070115-10_i386.deb','50180','SixXS Automatic IPv6 Connectivity Client Utility','http://www.sixxs.net/tools/aiccu/'),(427,'aide-common','optional','admin','724','Aide Maintainers ','all','aide','0.13.1-11','pool/main/a/aide/aide-common_0.13.1-11_all.deb','87724','Advanced Intrusion Detection Environment - Common files','http://sourceforge.net/projects/aide'),(428,'aide-dynamic','optional','admin','244','Aide Maintainers ','i386','aide','0.13.1-11','pool/main/a/aide/aide-dynamic_0.13.1-11_i386.deb','100318','Advanced Intrusion Detection Environment - dynamic binary','http://sourceforge.net/projects/aide'),(429,'aide-xen','optional','admin','1184','Aide Maintainers ','i386','aide','0.13.1-11','pool/main/a/aide/aide-xen_0.13.1-11_i386.deb','566450','Advanced Intrusion Detection Environment - static binary for XEN','http://sourceforge.net/projects/aide'),(430,'aide','optional','admin','1116','Aide Maintainers ','i386','','0.13.1-11','pool/main/a/aide/aide_0.13.1-11_i386.deb','534072','Advanced Intrusion Detection Environment - static binary','http://sourceforge.net/projects/aide'),(431,'aiksaurus','optional','text','72','Masayuki Hatta (mhatta) ','i386','','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/aiksaurus_1.2.1+dev-0.12-6_i386.deb','11818','an English-language thesaurus (utility)',''),(432,'gaiksaurus','optional','text','72','Masayuki Hatta (mhatta) ','i386','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/gaiksaurus_1.2.1+dev-0.12-6_i386.deb','9286','graphical interface to the Aiksaurus toolkit (GTK+ frontend)',''),(433,'libaiksaurus-1.2-0c2a','optional','libs','88','Masayuki Hatta (mhatta) ','i386','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/libaiksaurus-1.2-0c2a_1.2.1+dev-0.12-6_i386.deb','23488','an English-language thesaurus (development)',''),(434,'libaiksaurus-1.2-data','optional','libs','560','Masayuki Hatta (mhatta) ','all','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/libaiksaurus-1.2-data_1.2.1+dev-0.12-6_all.deb','317310','an English-language thesaurus (data)',''),(435,'libaiksaurus-1.2-dev','optional','libdevel','132','Masayuki Hatta (mhatta) ','i386','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/libaiksaurus-1.2-dev_1.2.1+dev-0.12-6_i386.deb','25060','an English-language thesaurus (development)',''),(436,'libaiksaurusgtk-1.2-0c2a','optional','libs','124','Masayuki Hatta (mhatta) ','i386','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/libaiksaurusgtk-1.2-0c2a_1.2.1+dev-0.12-6_i386.deb','33428','graphical interface to the Aiksaurus toolkit (library)',''),(437,'libaiksaurusgtk-1.2-dev','optional','libdevel','168','Masayuki Hatta (mhatta) ','i386','aiksaurus','1.2.1+dev-0.12-6','pool/main/a/aiksaurus/libaiksaurusgtk-1.2-dev_1.2.1+dev-0.12-6_i386.deb','32196','graphical interface to the Aiksaurus toolkit (development)',''),(438,'aircrack-ng','optional','net','2608','Adam Cécile (Le_Vert) ','i386','','1:1.0~rc3-2','pool/main/a/aircrack-ng/aircrack-ng_1.0~rc3-2_i386.deb','1541508','wireless WEP/WPA cracking utilities','http://www.aircrack-ng.org/'),(439,'airport-utils','optional','net','576','Julien BLACHE ','all','','1-8','pool/main/a/airport-utils/airport-utils_1-8_all.deb','396618','configuration and management utilities for Apple AirPort base stations',''),(440,'airstrike-common','optional','games','2412','Debian Games Team ','all','airstrike','0.99+1.0pre6a-4','pool/main/a/airstrike/airstrike-common_0.99+1.0pre6a-4_all.deb','1877222','2d dogfight game in the tradition of \'Biplanes\' and \'BIP\'','http://icculus.org/airstrike/'),(441,'airstrike','optional','games','192','Debian Games Team ','i386','','0.99+1.0pre6a-4','pool/main/a/airstrike/airstrike_0.99+1.0pre6a-4_i386.deb','45908','2d dogfight game in the tradition of \'Biplanes\' and \'BIP\'','http://icculus.org/airstrike/'),(442,'aish','optional','utils','116','Atsushi KAMOSHIDA ','i386','','1.13-5','pool/main/a/aish/aish_1.13-5_i386.deb','35848','ish/base64/uuencoded_file converter',''),(443,'ajaxterm','optional','web','248','Julien Valroff ','all','','0.10-4','pool/main/a/ajaxterm/ajaxterm_0.10-4_all.deb','40296','Web based terminal written in Python','http://antony.lesuisse.org/qweb/trac/wiki/AjaxTerm'),(444,'akonadi-kde-resource-googledata','extra','net','472','Debian Qt/KDE Maintainers ','i386','akonadi-googledata','1.0.1-1','pool/main/a/akonadi-googledata/akonadi-kde-resource-googledata_1.0.1-1_i386.deb','97322','Google calendar and contacts resource for Akonadi','http://code.google.com/p/libgcal/'),(445,'akonadi-dbg','extra','debug','16756','Debian Qt/KDE Maintainers ','i386','akonadi','1.2.1-1','pool/main/a/akonadi/akonadi-dbg_1.2.1-1_i386.deb','6679912','debugging symbols for the Akonadi PIM storage service','http://pim.kde.org/akonadi'),(446,'akonadi-server','extra','net','472','Debian Qt/KDE Maintainers ','i386','akonadi','1.2.1-1','pool/main/a/akonadi/akonadi-server_1.2.1-1_i386.deb','175984','Akonadi PIM storage service','http://pim.kde.org/akonadi'),(447,'libakonadi-dev','extra','libdevel','220','Debian Qt/KDE Maintainers ','i386','akonadi','1.2.1-1','pool/main/a/akonadi/libakonadi-dev_1.2.1-1_i386.deb','46146','development files for the Akonadi PIM storage service','http://pim.kde.org/akonadi'),(448,'libakonadiprivate1','extra','libs','1512','Debian Qt/KDE Maintainers ','i386','akonadi','1.2.1-1','pool/main/a/akonadi/libakonadiprivate1_1.2.1-1_i386.deb','576204','libraries for the Akonadi PIM storage service','http://pim.kde.org/akonadi'),(449,'alacarte','optional','utils','554','Debian GNOME Maintainers ','all','','0.12.4-1','pool/main/a/alacarte/alacarte_0.12.4-1_all.deb','102970','easy GNOME menu editing tool',''),(450,'alarm-clock-applet','optional','gnome','396','Chow Loong Jin ','i386','','0.2.6-1','pool/main/a/alarm-clock-applet/alarm-clock-applet_0.2.6-1_i386.deb','94038','Alarm Clock applet for the GNOME panel','http://alarm-clock.pseudoberries.com/'),(451,'alarm-clock','optional','utils','1800','Ryan Niebur ','i386','','1.2.4-1','pool/main/a/alarm-clock/alarm-clock_1.2.4-1_i386.deb','615318','Alarm Clock for GTK Environments','http://www.alarm-clock.pl/'),(452,'python-albatross-common','optional','web','160','Fabian Fagerholm ','all','albatross','1.36-5','pool/main/a/albatross/python-albatross-common_1.36-5_all.deb','52596','Toolkit for Stateful Web Applications (common files)','http://www.object-craft.com.au/projects/albatross/'),(453,'python-albatross-doc','optional','doc','604','Fabian Fagerholm ','all','albatross','1.36-5','pool/main/a/albatross/python-albatross-doc_1.36-5_all.deb','582732','documentation for the Albatross Web Toolkit','http://www.object-craft.com.au/projects/albatross/'),(454,'python-albatross','optional','web','320','Fabian Fagerholm ','all','albatross','1.36-5','pool/main/a/albatross/python-albatross_1.36-5_all.deb','85784','Toolkit for Stateful Web Applications','http://www.object-craft.com.au/projects/albatross/'),(455,'albumshaper','optional','graphics','7356','Jano Kupec ','i386','','2.1-5','pool/main/a/albumshaper/albumshaper_2.1-5_i386.deb','4400704','Photo album creator and photo manipulator','http://albumshaper.sourceforge.net/'),(456,'alcovebook-sgml-doc','optional','doc','6468','Yann Dirson ','all','alcovebook-sgml','0.1.2dfsg-8','pool/main/a/alcovebook-sgml/alcovebook-sgml-doc_0.1.2dfsg-8_all.deb','274786','Documentation for the AlcoveBook DTD',''),(457,'alcovebook-sgml','optional','text','328','Yann Dirson ','all','','0.1.2dfsg-8','pool/main/a/alcovebook-sgml/alcovebook-sgml_0.1.2dfsg-8_all.deb','34348','Alcove customisation of the DocBook DTD and stylesheets',''),(458,'aldo','optional','hamradio','220','Giuseppe Martino (denever) ','i386','','0.7.5-1','pool/main/a/aldo/aldo_0.7.5-1_i386.deb','71522','Morse code training program',''),(459,'ale','optional','graphics','760','Ruben Molina ','i386','','0.9.0.3-1','pool/main/a/ale/ale_0.9.0.3-1_i386.deb','323372','synthetic capture engine and renderer','http://auricle.dyndns.org/ALE/'),(460,'alevt','extra','x11','204','Andreas Rottmann ','i386','','1:1.6.1-10.2','pool/main/a/alevt/alevt_1.6.1-10.2_i386.deb','82662','X11 Teletext/Videotext browser',''),(461,'alex','optional','haskell','956','Ian Lynagh (wibble) ','i386','','2.2-0.2','pool/main/a/alex/alex_2.2-0.2_i386.deb','257292','lexical analyser generator for Haskell','http://www.haskell.org/alex/'),(462,'alex4-data','optional','games','632','Debian Games Team ','all','alex4','1.1-3','pool/main/a/alex4/alex4-data_1.1-3_all.deb','580564','Alex the Allegator 4 - game data','http://allegator.sourceforge.net/'),(463,'alex4','optional','games','192','Debian Games Team ','i386','','1.1-3','pool/main/a/alex4/alex4_1.1-3_i386.deb','55696','Alex the Allegator 4 - a retro platform game','http://allegator.sourceforge.net/'),(464,'alexandria','extra','gnome','2032','Dafydd Harries ','all','','0.6.1-1','pool/main/a/alexandria/alexandria_0.6.1-1_all.deb','911034','a GNOME application for managing book collections',''),(465,'alien-hunter','optional','science','164','Debian Med Packaging Team ','all','','1.7-1','pool/main/a/alien-hunter/alien-hunter_1.7-1_all.deb','30470','Interpolated Variable Order Motifs to identify horizontally acquired DNA','http://www.sanger.ac.uk/Software/analysis/alien_hunter/'),(466,'alien','optional','admin','276','Joey Hess ','all','','8.78','pool/main/a/alien/alien_8.78_all.deb','107256','convert and install rpm and other packages','http://kitenet.net/~joey/code/alien/'),(467,'alienblaster-data','extra','games','11720','Debian Games Team ','all','alienblaster','1.1.0-4','pool/main/a/alienblaster/alienblaster-data_1.1.0-4_all.deb','6469626','Game data for Alien Blaster','http://www.schwardtnet.de/alienblaster/'),(468,'alienblaster','extra','games','848','Debian Games Team ','i386','','1.1.0-4','pool/main/a/alienblaster/alienblaster_1.1.0-4_i386.deb','251398','Classic 2D shoot \'em up','http://www.schwardtnet.de/alienblaster/'),(469,'all-in-one-sidebar','optional','web','1996','Debian Mozilla Extension Maintainers ','all','','0.7.10-2','pool/main/a/all-in-one-sidebar/all-in-one-sidebar_0.7.10-2_all.deb','294448','A sidebar extension for Mozilla Firefox','http://firefox.exxile.net/aios/'),(470,'allegro-demo-data','optional','devel','432','Debian allegro packages maintainers ','all','','3.9.36-7','pool/main/a/allegro-demo-data/allegro-demo-data_3.9.36-7_all.deb','369166','graphics and audio data for allegro-demo',''),(471,'allegro-demo','optional','games','272','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/allegro-demo_4.2.2-2.1_i386.deb','123848','cool game, demonstrating power of the Allegro library',''),(472,'allegro-examples','optional','utils','928','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/allegro-examples_4.2.2-2.1_i386.deb','353342','example programs and demo tools for the Allegro library',''),(473,'liballegro-doc','optional','doc','6732','Debian allegro packages maintainers ','all','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro-doc_4.2.2-2.1_all.deb','1590930','documentation for the Allegro library',''),(474,'liballegro4.2-dev','optional','libdevel','2840','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2-dev_4.2.2-2.1_i386.deb','949706','development files for the Allegro library',''),(475,'liballegro4.2-plugin-arts','optional','libs','40','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2-plugin-arts_4.2.2-2.1_i386.deb','4508','aRts audio plugin for the Allegro library',''),(476,'liballegro4.2-plugin-esd','optional','libs','40','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2-plugin-esd_4.2.2-2.1_i386.deb','4822','esd audio plugin for the Allegro library',''),(477,'liballegro4.2-plugin-jack','optional','libs','44','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2-plugin-jack_4.2.2-2.1_i386.deb','5278','JACK audio plugin for the Allegro library',''),(478,'liballegro4.2-plugin-svgalib','optional','libs','44','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2-plugin-svgalib_4.2.2-2.1_i386.deb','6592','SVGAlib video plugin for the Allegro library',''),(479,'liballegro4.2','optional','libs','1260','Debian allegro packages maintainers ','i386','allegro4.2','2:4.2.2-2.1','pool/main/a/allegro4.2/liballegro4.2_4.2.2-2.1_i386.deb','539994','portable library for cross-platform game and multimedia development',''),(480,'alleyoop','optional','devel','980','Debian GNOME Maintainers ','i386','','0.9.5-1','pool/main/a/alleyoop/alleyoop_0.9.5-1_i386.deb','158396','Front-end to the Valgrind memory checker','http://alleyoop.sourceforge.net'),(481,'alltray','optional','x11','224','Carlos C Soto ','i386','','0.69-1','pool/main/a/alltray/alltray_0.69-1_i386.deb','59552','Dock any program into the system tray',''),(482,'almanah','extra','gnome','528','Angel Abad (Ikusnet SLL) ','i386','','0.6.1-2','pool/main/a/almanah/almanah_0.6.1-2_i386.deb','101278','application to ease management of a personal diary','http://tecnocode.co.uk/projects/almanah/'),(483,'libalogg-dev','optional','libdevel','184','Debian allegro packages maintainers ','i386','alogg','1.3.7-1.1','pool/main/a/alogg/libalogg-dev_1.3.7-1.1_i386.deb','41966','Ogg/Vorbis library for Allegro - development files',''),(484,'libalogg1','optional','libs','84','Debian allegro packages maintainers ','i386','alogg','1.3.7-1.1','pool/main/a/alogg/libalogg1_1.3.7-1.1_i386.deb','16850','Ogg/Vorbis library for Allegro - shared libraries',''),(485,'alqalam','optional','tex','1580','Debian TeX maintainers ','all','','0.2-3','pool/main/a/alqalam/alqalam_0.2-3_all.deb','876684','Qur\'an typesetting macros for TeX/LaTeX','http://tech.groups.yahoo.com/group/QuranTypesetting/'),(486,'alsa-base','optional','sound','480','Debian ALSA Maintainers ','all','alsa-driver','1.0.21+dfsg-2','pool/main/a/alsa-driver/alsa-base_1.0.21+dfsg-2_all.deb','283924','ALSA driver configuration files','http://www.alsa-project.org/'),(487,'alsa-source','optional','kernel','3572','Debian ALSA Maintainers ','all','alsa-driver','1.0.21+dfsg-2','pool/main/a/alsa-driver/alsa-source_1.0.21+dfsg-2_all.deb','3519460','ALSA driver sources','http://www.alsa-project.org/'),(488,'linux-sound-base','optional','sound','136','Debian ALSA Maintainers ','all','alsa-driver','1.0.21+dfsg-2','pool/main/a/alsa-driver/linux-sound-base_1.0.21+dfsg-2_all.deb','28272','base package for ALSA and OSS sound systems','http://www.alsa-project.org/'),(489,'lib64asound2-dev','optional','libdevel','1852','Debian ALSA Maintainers ','i386','alsa-lib','1.0.21a-1','pool/main/a/alsa-lib/lib64asound2-dev_1.0.21a-1_i386.deb','493034','shared library for ALSA applications -- development files (64 bit)','http://www.alsa-project.org/'),(490,'lib64asound2','optional','libs','968','Debian ALSA Maintainers ','i386','alsa-lib','1.0.21a-1','pool/main/a/alsa-lib/lib64asound2_1.0.21a-1_i386.deb','364802','shared library for ALSA applications (64 bit)','http://www.alsa-project.org/'),(491,'libasound2-dev','optional','libdevel','1816','Debian ALSA Maintainers ','i386','alsa-lib','1.0.21a-1','pool/main/a/alsa-lib/libasound2-dev_1.0.21a-1_i386.deb','508152','shared library for ALSA applications -- development files','http://www.alsa-project.org/'),(492,'libasound2-doc','optional','doc','13608','Debian ALSA Maintainers ','all','alsa-lib','1.0.21a-1','pool/main/a/alsa-lib/libasound2-doc_1.0.21a-1_all.deb','1438240','developer documentation for user-space ALSA application programming','http://www.alsa-project.org/'),(493,'libasound2','optional','libs','1236','Debian ALSA Maintainers ','i386','alsa-lib','1.0.21a-1','pool/main/a/alsa-lib/libasound2_1.0.21a-1_i386.deb','373474','shared library for ALSA applications','http://www.alsa-project.org/'),(494,'alsa-oss','optional','sound','144','Debian ALSA Maintainers ','i386','','1.0.17-3','pool/main/a/alsa-oss/alsa-oss_1.0.17-3_i386.deb','30998','ALSA wrapper for OSS applications','http://www.alsa-project.org/'),(495,'lib64asound2-plugins','optional','libs','156','Debian ALSA Maintainers ','i386','alsa-plugins','1.0.21-3','pool/main/a/alsa-plugins/lib64asound2-plugins_1.0.21-3_i386.deb','46612','ALSA library additional plugins (64 bit)','http://www.alsa-project.org/'),(496,'libasound2-plugins','optional','libs','288','Debian ALSA Maintainers ','i386','alsa-plugins','1.0.21-3','pool/main/a/alsa-plugins/libasound2-plugins_1.0.21-3_i386.deb','73350','ALSA library additional plugins','http://www.alsa-project.org/'),(497,'alsa-tools-gui','extra','sound','836','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/main/a/alsa-tools/alsa-tools-gui_1.0.21-1_i386.deb','261172','GUI based ALSA utilities for specific hardware','http://www.alsa-project.org/'),(498,'alsa-tools','extra','sound','304','Debian ALSA Maintainers ','i386','','1.0.21-1','pool/main/a/alsa-tools/alsa-tools_1.0.21-1_i386.deb','81936','Console based ALSA utilities for specific hardware','http://www.alsa-project.org/'),(499,'ld10k1','extra','sound','488','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/main/a/alsa-tools/ld10k1_1.0.21-1_i386.deb','106626','ALSA emu10k1/2 patch loader','http://www.alsa-project.org/'),(500,'liblo10k1-0','extra','libs','108','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/main/a/alsa-tools/liblo10k1-0_1.0.21-1_i386.deb','31252','ALSA emu10k1/2 patch-loader library','http://www.alsa-project.org/'),(501,'liblo10k1-dev','extra','devel','184','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/main/a/alsa-tools/liblo10k1-dev_1.0.21-1_i386.deb','37196','ALSA emu10k1/2 patch-loader library development files','http://www.alsa-project.org/'),(502,'qlo10k1','extra','sound','456','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/main/a/alsa-tools/qlo10k1_1.0.21-1_i386.deb','141602','ALSA ld10k1 utility','http://www.alsa-project.org/'),(503,'alsa-utils','optional','sound','1984','Debian ALSA Maintainers ','i386','','1.0.21-1','pool/main/a/alsa-utils/alsa-utils_1.0.21-1_i386.deb','1096902','ALSA utilities','http://www.alsa-project.org/'),(504,'alsamixergui','optional','sound','96','Paul Brossier ','i386','','0.9.0rc2-1-9','pool/main/a/alsamixergui/alsamixergui_0.9.0rc2-1-9_i386.deb','30530','graphical soundcard mixer for ALSA soundcard driver',''),(505,'alsaplayer-alsa','optional','sound','80','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-alsa_0.99.80-4_i386.deb','32660','PCM player designed for ALSA (ALSA output module)','http://www.alsaplayer.org/'),(506,'alsaplayer-common','optional','sound','424','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-common_0.99.80-4_i386.deb','166898','PCM player designed for ALSA (common files)','http://www.alsaplayer.org/'),(507,'alsaplayer-daemon','optional','sound','108','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-daemon_0.99.80-4_i386.deb','32968','PCM player designed for ALSA (non-interactive version)','http://www.alsaplayer.org/'),(508,'alsaplayer-esd','optional','sound','76','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-esd_0.99.80-4_i386.deb','30882','PCM player designed for ALSA (EsounD output module)','http://www.alsaplayer.org/'),(509,'alsaplayer-gtk','optional','sound','548','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-gtk_0.99.80-4_i386.deb','191464','PCM player designed for ALSA (GTK+ version)','http://www.alsaplayer.org/'),(510,'alsaplayer-jack','optional','sound','84','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-jack_0.99.80-4_i386.deb','34748','PCM player designed for ALSA (JACK output module)','http://www.alsaplayer.org/'),(511,'alsaplayer-nas','optional','sound','80','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-nas_0.99.80-4_i386.deb','32808','PCM player designed for ALSA (NAS output module)','http://www.alsaplayer.org/'),(512,'alsaplayer-oss','optional','sound','76','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-oss_0.99.80-4_i386.deb','31022','PCM player designed for ALSA (OSS output module)','http://www.alsaplayer.org/'),(513,'alsaplayer-text','optional','sound','100','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-text_0.99.80-4_i386.deb','33750','PCM player designed for ALSA (text version)','http://www.alsaplayer.org/'),(514,'alsaplayer-xosd','optional','sound','108','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/alsaplayer-xosd_0.99.80-4_i386.deb','33688','PCM player designed for ALSA (osd version)','http://www.alsaplayer.org/'),(515,'libalsaplayer-dev','optional','libdevel','536','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/libalsaplayer-dev_0.99.80-4_i386.deb','89270','PCM player designed for ALSA (interface library, development files)','http://www.alsaplayer.org/'),(516,'libalsaplayer0','optional','libs','92','Tony Palma ','i386','alsaplayer','0.99.80-4','pool/main/a/alsaplayer/libalsaplayer0_0.99.80-4_i386.deb','37068','PCM player designed for ALSA (interface library)','http://www.alsaplayer.org/'),(517,'alt-ergo','optional','math','1148','Debian OCaml Maintainers ','i386','alt-ergo (0.9-1)','0.9-1+b1','pool/main/a/alt-ergo/alt-ergo_0.9-1+b1_i386.deb','427948','Automatic theorem prover dedicated to program verification','http://alt-ergo.lri.fr'),(518,'altermime','optional','mail','192','Julien Valroff ','i386','','0.3.10-2','pool/main/a/altermime/altermime_0.3.10-2_i386.deb','55086','utility used to alter mime-encoded mailpacks','http://www.pldaniels.com/altermime/'),(519,'altree-examples','optional','science','1108','Debian-Med Packaging Team ','all','altree','1.0.1-3','pool/main/a/altree/altree-examples_1.0.1-3_all.deb','400662','example files for ALTree','http://claire.bardel.free.fr/'),(520,'altree','optional','science','584','Debian-Med Packaging Team ','i386','','1.0.1-3','pool/main/a/altree/altree_1.0.1-3_i386.deb','254424','program to perform phylogeny based analyses','http://claire.bardel.free.fr/'),(521,'alure-doc','optional','doc','232','Debian Games Team ','all','alure','1.0-2','pool/main/a/alure/alure-doc_1.0-2_all.deb','18744','AL Utilities REtooled (documentation)','http://kcat.strangesoft.net/alure.html'),(522,'libalure-dev','optional','libdevel','152','Debian Games Team ','i386','alure','1.0-2','pool/main/a/alure/libalure-dev_1.0-2_i386.deb','28398','AL Utilities REtooled (development files)','http://kcat.strangesoft.net/alure.html'),(523,'libalure1-dbg','extra','debug','228','Debian Games Team ','i386','alure','1.0-2','pool/main/a/alure/libalure1-dbg_1.0-2_i386.deb','72788','AL Utilities REtooled (debugging symbols)','http://kcat.strangesoft.net/alure.html'),(524,'libalure1','optional','libs','92','Debian Games Team ','i386','alure','1.0-2','pool/main/a/alure/libalure1_1.0-2_i386.deb','22000','AL Utilities REtooled (shared library)','http://kcat.strangesoft.net/alure.html'),(525,'am-utils-doc','extra','doc','1636','Tim Cutts ','all','am-utils','6.1.5-15','pool/main/a/am-utils/am-utils-doc_6.1.5-15_all.deb','700088','automounter utilities documentation','http://www.am-utils.org/'),(526,'am-utils','extra','net','740','Tim Cutts ','i386','','6.1.5-15','pool/main/a/am-utils/am-utils_6.1.5-15_i386.deb','396686','automounter utilities from 4.4BSD (includes amd)','http://www.am-utils.org/'),(527,'libamu-dev','extra','libdevel','176','Tim Cutts ','i386','am-utils','6.1.5-15','pool/main/a/am-utils/libamu-dev_6.1.5-15_i386.deb','45272','Support library for amd the 4.4BSD automounter (development)','http://www.am-utils.org/'),(528,'libamu4','extra','libs','204','Tim Cutts ','i386','am-utils','6.1.5-15','pool/main/a/am-utils/libamu4_6.1.5-15_i386.deb','164778','Support library for amd the 4.4BSD automounter (runtime)','http://www.am-utils.org/'),(529,'amanda-client','optional','utils','572','Bdale Garbee ','i386','amanda','1:2.6.1p1-2','pool/main/a/amanda/amanda-client_2.6.1p1-2_i386.deb','191836','Advanced Maryland Automatic Network Disk Archiver (Client)',''),(530,'amanda-common','optional','utils','4316','Bdale Garbee ','i386','amanda','1:2.6.1p1-2','pool/main/a/amanda/amanda-common_2.6.1p1-2_i386.deb','1505410','Advanced Maryland Automatic Network Disk Archiver (Libs)',''),(531,'amanda-server','optional','utils','1296','Bdale Garbee ','i386','amanda','1:2.6.1p1-2','pool/main/a/amanda/amanda-server_2.6.1p1-2_i386.deb','436580','Advanced Maryland Automatic Network Disk Archiver (Server)',''),(532,'amap-align','optional','science','256','Debian-Med Packaging Team ','i386','','2.2-1','pool/main/a/amap-align/amap-align_2.2-1_i386.deb','127424','Protein multiple alignment by sequence annealing','http://bio.math.berkeley.edu/amap/'),(533,'python-amara','extra','python','284','David Villa Alises ','all','amara','1.2a2-1','pool/main/a/amara/python-amara_1.2a2-1_all.deb','53270','Amara is a pythonic XML toolkit',''),(534,'amarok-common','optional','sound','9124','Modestas Vainius ','all','amarok','2.2.0-1','pool/main/a/amarok/amarok-common_2.2.0-1_all.deb','3305624','architecture independent files for Amarok','http://amarok.kde.org'),(535,'amarok-dbg','extra','debug','112816','Modestas Vainius ','i386','amarok','2.2.0-1','pool/main/a/amarok/amarok-dbg_2.2.0-1_i386.deb','43865924','debugging symbols for Amarok','http://amarok.kde.org'),(536,'amarok-utils','optional','utils','496','Modestas Vainius ','i386','amarok','2.2.0-1','pool/main/a/amarok/amarok-utils_2.2.0-1_i386.deb','247498','utilities for Amarok media player','http://amarok.kde.org'),(537,'amarok','optional','sound','18900','Modestas Vainius ','i386','','2.2.0-1','pool/main/a/amarok/amarok_2.2.0-1_i386.deb','7154388','easy to use media player based on the KDE 4 technology platform','http://amarok.kde.org'),(538,'amavisd-new-milter','extra','mail','128','Brian May ','i386','amavisd-new','1:2.6.4-1','pool/main/a/amavisd-new/amavisd-new-milter_2.6.4-1_i386.deb','34884','Interface between sendmail-milter and amavisd-new',''),(539,'amavisd-new','extra','mail','2364','Brian May ','all','','1:2.6.4-1','pool/main/a/amavisd-new/amavisd-new_2.6.4-1_all.deb','888192','Interface between MTA and virus scanner/content filters',''),(540,'amb-plugins','extra','sound','64','Debian Multimedia Team ','i386','','0.3.0-1','pool/main/a/amb-plugins/amb-plugins_0.3.0-1_i386.deb','17692','ambisonics LADPSA plugins',''),(541,'amd64-libs-dev','optional','libdevel','144','Daniel Jacobowitz ','i386','amd64-libs','1.4+nmu1','pool/main/a/amd64-libs/amd64-libs-dev_1.4+nmu1_i386.deb','31328','Amd64 development libraries and headers for use on i386/x86_64 systems',''),(542,'amd64-libs','optional','libs','140','Daniel Jacobowitz ','i386','','1.4+nmu1','pool/main/a/amd64-libs/amd64-libs_1.4+nmu1_i386.deb','33800','Amd64 shared libraries for use on i386/x86_64 systems',''),(543,'amide','optional','graphics','3884','Dominique Belhachemi ','i386','','0.9.1-5','pool/main/a/amide/amide_0.9.1-5_i386.deb','976242','software for Medical Imaging','http://amide.sourceforge.net/'),(544,'amideco','optional','utils','68','Uwe Hermann ','i386','','0.31e-3','pool/main/a/amideco/amideco_0.31e-3_i386.deb','11472','Decompress flashfiles equipped with an AMI BIOS','http://www.kaos.ru/biosgfx/'),(545,'amiga-fdisk-cross','extra','admin','84','Christian T. Steigies ','i386','amiga-fdisk','0.04-14','pool/main/a/amiga-fdisk/amiga-fdisk-cross_0.04-14_i386.deb','18590','Partition editor for Amiga partitions (cross version)','https://alioth.debian.org/projects/amiga-fdisk/'),(546,'amora-server','extra','x11','104','Axel Beckert ','i386','amora-server (1.1-1)','1.1-1+b1','pool/main/a/amora-server/amora-server_1.1-1+b1_i386.deb','15686','use a bluetooth enabled mobile phone as desktop remote control','http://amora.googlecode.com/'),(547,'ampache-themes','extra','web','7684','Charlie Smotherman ','all','','3.4.3-1','pool/main/a/ampache-themes/ampache-themes_3.4.3-1_all.deb','2965628','Themes for Ampache','http://www.ampache.org'),(548,'ampache','optional','web','8788','Charlie Smotherman ','all','','3.5.1-2','pool/main/a/ampache/ampache_3.5.1-2_all.deb','1781492','web-based audio file management system','http://www.ampache.org'),(549,'amphetamine-data','optional','games','1956','Debian Games Team ','all','','0.8.7-12','pool/main/a/amphetamine-data/amphetamine-data_0.8.7-12_all.deb','944964','data files for the game \"Amphetamine\"',''),(550,'amphetamine','optional','games','316','Debian Games Team ','i386','','0.8.10-14','pool/main/a/amphetamine/amphetamine_0.8.10-14_i386.deb','100562','jump\'n run game with unique visual effects','http://homepage.hispeed.ch/loehrer/amph/amph.html'),(551,'ample','optional','sound','184','Rene Mayorga ','i386','','0.5.7-6','pool/main/a/ample/ample_0.5.7-6_i386.deb','38890','A simple MP3 server easy to use','http://ample.sourceforge.net'),(552,'libamrita-ruby1.8','optional','ruby','1532','TANIGUCHI Takaki ','all','amrita','1.0.2-8','pool/main/a/amrita/libamrita-ruby1.8_1.0.2-8_all.deb','143748','HTML/XML template library for Ruby 1.8','http://amrita.sourceforge.jp/'),(553,'ams','optional','sound','1528','Debian Multimedia Team ','i386','','1.8.8~rc2-3.1','pool/main/a/ams/ams_1.8.8~rc2-3.1_i386.deb','384768','Realtime modular synthesizer for ALSA',''),(554,'amsn-data','optional','x11','10492','Muammar El Khatib ','all','amsn','0.97.2~debian-3','pool/main/a/amsn/amsn-data_0.97.2~debian-3_all.deb','3254124','Data files for aMSN','http://amsn.sourceforge.net/'),(555,'amsn','optional','x11','860','Muammar El Khatib ','i386','','0.97.2~debian-3','pool/main/a/amsn/amsn_0.97.2~debian-3_i386.deb','269736','An MSN messenger written in Tcl','http://amsn.sourceforge.net/'),(556,'amsynth','optional','sound','716','Debian Multimedia Team ','i386','','1.2.0-4','pool/main/a/amsynth/amsynth_1.2.0-4_i386.deb','266808','two oscillator software synthesizer',''),(557,'amtterm','extra','net','92','Reinhard Tartler ','i386','','1.1-1','pool/main/a/amtterm/amtterm_1.1-1_i386.deb','18134','Serial-over-lan (sol) client for Intel AMT, console version',''),(558,'gamt','extra','net','92','Reinhard Tartler ','i386','amtterm','1.1-1','pool/main/a/amtterm/gamt_1.1-1_i386.deb','20152','Serial-over-lan (sol) client for Intel AMT, gtk version',''),(559,'amule-emc','optional','utils','80','Sandro Tosi ','i386','','0.5.2-2','pool/main/a/amule-emc/amule-emc_0.5.2-2_i386.deb','16046','lists ed2k links inside emulecollection files','http://code.google.com/p/amule-emc/'),(560,'amule-common','optional','net','6456','Adeodato Simó ','all','amule','2.2.5-1.1','pool/main/a/amule/amule-common_2.2.5-1.1_all.deb','2425196','common files for the rest of aMule packages','http://www.amule.org'),(561,'amule-daemon','optional','net','2900','Adeodato Simó ','i386','amule','2.2.5-1.1','pool/main/a/amule/amule-daemon_2.2.5-1.1_i386.deb','1172070','non-graphic version of aMule, a client for the eD2k and Kad networks','http://www.amule.org'),(562,'amule-utils-gui','optional','net','3348','Adeodato Simó ','i386','amule','2.2.5-1.1','pool/main/a/amule/amule-utils-gui_2.2.5-1.1_i386.deb','1279660','graphic utilities for aMule','http://www.amule.org'),(563,'amule-utils','optional','net','880','Adeodato Simó ','i386','amule','2.2.5-1.1','pool/main/a/amule/amule-utils_2.2.5-1.1_i386.deb','453092','utilities for aMule (command-line version)','http://www.amule.org'),(564,'amule','optional','net','4460','Adeodato Simó ','i386','','2.2.5-1.1','pool/main/a/amule/amule_2.2.5-1.1_i386.deb','1837034','client for the eD2k and Kad networks, like eMule','http://www.amule.org'),(565,'an','optional','games','84','Paul Martin ','i386','','0.95-3.1','pool/main/a/an/an_0.95-3.1_i386.deb','13830','very fast anagram generator',''),(566,'anacron','optional','admin','212','Peter Eisentraut ','i386','','2.3-14','pool/main/a/anacron/anacron_2.3-14_i386.deb','30144','cron-like program that doesn\'t go by time',''),(567,'analog','optional','web','4572','Bradley Smith ','i386','','2:6.0-19','pool/main/a/analog/analog_6.0-19_i386.deb','1367292','web server log analyzer','http://www.analog.cx/'),(568,'anarchism','optional','doc','13524','Ed Boraas ','all','','11.7-1','pool/main/a/anarchism/anarchism_11.7-1_all.deb','6623686','An exhaustive exploration of Anarchist theory and practice',''),(569,'and','extra','misc','132','Jerome Warnier ','i386','','1.2.2-2.1','pool/main/a/and/and_1.2.2-2.1_i386.deb','25978','Auto Nice Daemon',''),(570,'angband-doc','optional','doc','3668','Manoj Srivastava ','all','','3.0.3.5','pool/main/a/angband-doc/angband-doc_3.0.3.5_all.deb','943562','Documentation for the roguelike game Angband.','ftp://clockwork.dementia.org/angband'),(571,'angband','optional','games','4224','Chris Carr ','i386','','1:3.1.1.1626-1','pool/main/a/angband/angband_3.1.1.1626-1_i386.deb','1756782','A single-player, text-based, dungeon simulation game.',''),(572,'angrydd','optional','games','5712','Daniel Watkins ','all','','1.0.1-8','pool/main/a/angrydd/angrydd_1.0.1-8_all.deb','4694208','Angry Drunken Dwarves - falling blocks puzzle game','http://www.sacredchao.net/~piman/angrydd/'),(573,'animals','optional','games','96','Jim Lynch ','i386','','20031130-2.4','pool/main/a/animals/animals_20031130-2.4_i386.deb','18526','Traditional AI animal guessing engine using a binary tree DB',''),(574,'anjuta-common','optional','devel','19340','Rob Bradford ','all','anjuta','2:2.26.2.2-2','pool/main/a/anjuta/anjuta-common_2.26.2.2-2_all.deb','6148318','A GNOME development IDE, for C/C++ - data files','http://www.anjuta.org'),(575,'anjuta-dbg','extra','debug','10920','Rob Bradford ','i386','anjuta','2:2.26.2.2-2','pool/main/a/anjuta/anjuta-dbg_2.26.2.2-2_i386.deb','4580682','A GNOME development IDE, for C/C++ - debug files','http://www.anjuta.org'),(576,'anjuta-dev','optional','devel','1032','Rob Bradford ','i386','anjuta','2:2.26.2.2-2','pool/main/a/anjuta/anjuta-dev_2.26.2.2-2_i386.deb','424110','A GNOME development IDE, for C/C++ - development files','http://www.anjuta.org'),(577,'anjuta','optional','gnome','5564','Rob Bradford ','i386','','2:2.26.2.2-2','pool/main/a/anjuta/anjuta_2.26.2.2-2_i386.deb','2465868','A GNOME development IDE, for C/C++','http://www.anjuta.org'),(578,'anki','optional','misc','3028','Andreas Bombe ','all','','0.9.9.7.8-1','pool/main/a/anki/anki_0.9.9.7.8-1_all.deb','956882','flashcard learning program with special support for Japanese','http://ichi2.net/anki'),(579,'ann-tools','optional','math','92','Debian Scientific Computing Team ','i386','ann','1.1.1+doc-2.1','pool/main/a/ann/ann-tools_1.1.1+doc-2.1_i386.deb','13898','Approximate Nearest Neighbor Searching library (tools)','http://www.cs.umd.edu/~mount/ANN/'),(580,'libann-dev','optional','libdevel','572','Debian Scientific Computing Team ','i386','ann','1.1.1+doc-2.1','pool/main/a/ann/libann-dev_1.1.1+doc-2.1_i386.deb','372234','Approximate Nearest Neighbor Searching library (development files)','http://www.cs.umd.edu/~mount/ANN/'),(581,'libann0','optional','libs','116','Debian Scientific Computing Team ','i386','ann','1.1.1+doc-2.1','pool/main/a/ann/libann0_1.1.1+doc-2.1_i386.deb','29252','Approximate Nearest Neighbor Searching library','http://www.cs.umd.edu/~mount/ANN/'),(582,'anon-proxy','optional','web','384','David Spreen ','i386','','00.05.38+20081230-1.1','pool/main/a/anon-proxy/anon-proxy_00.05.38+20081230-1.1_i386.deb','133376','Proxy to surf the web anonymously','http://anon.inf.tu-dresden.de/'),(583,'ant-contrib','extra','java','608','Debian Java Maintainers ','all','','1.0~b3+svn177-1','pool/main/a/ant-contrib/ant-contrib_1.0~b3+svn177-1_all.deb','265184','collection of tasks, types and other tools for Apache Ant','http://ant-contrib.sourceforge.net'),(584,'ant-phone','extra','net','512','Roland Stigge ','i386','','0.2.1-1','pool/main/a/ant-phone/ant-phone_0.2.1-1_i386.deb','115954','An interactive ISDN telephone application','http://www.antcom.de/'),(585,'ant-doc','optional','doc','35780','Debian Java Maintainers ','all','ant','1.7.1-4','pool/main/a/ant/ant-doc_1.7.1-4_all.deb','3269036','Java based build tool like make - API documentation and manual','http://ant.apache.org/'),(586,'ant-gcj','optional','java','3916','Debian Java Maintainers ','i386','ant','1.7.1-4','pool/main/a/ant/ant-gcj_1.7.1-4_i386.deb','1208244','Java based build tool like make','http://ant.apache.org/'),(587,'ant-optional-gcj','optional','java','2232','Debian Java Maintainers ','i386','ant','1.7.1-4','pool/main/a/ant/ant-optional-gcj_1.7.1-4_i386.deb','656772','Java based build tool like make - API documentation and manual','http://ant.apache.org/'),(588,'ant-optional','optional','java','1180','Debian Java Maintainers ','all','ant','1.7.1-4','pool/main/a/ant/ant-optional_1.7.1-4_all.deb','657230','Java based build tool like make - optional libraries','http://ant.apache.org/'),(589,'ant','optional','java','1548','Debian Java Maintainers ','all','','1.7.1-4','pool/main/a/ant/ant_1.7.1-4_all.deb','1297496','Java based build tool like make','http://ant.apache.org/'),(590,'anteater','optional','mail','304','Andrea Capriotti ','i386','','0.4.5-8','pool/main/a/anteater/anteater_0.4.5-8_i386.deb','113950','MTA log analyser written 100% in C++',''),(591,'antennavis','optional','hamradio','268','Debian QA Group ','i386','','0.3-6','pool/main/a/antennavis/antennavis_0.3-6_i386.deb','54346','antenna visualization software',''),(592,'anthy-el','optional','lisp','140','NOKUBI Takatsugu ','all','anthy','9100e-3.2','pool/main/a/anthy/anthy-el_9100e-3.2_all.deb','36204','input method for Japanese - elisp frontend',''),(593,'anthy','optional','utils','12876','NOKUBI Takatsugu ','i386','','9100e-3.2','pool/main/a/anthy/anthy_9100e-3.2_i386.deb','3372644','input method for Japanese - backend, dictionary and utility',''),(594,'libanthy-dev','optional','libdevel','548','NOKUBI Takatsugu ','i386','anthy','9100e-3.2','pool/main/a/anthy/libanthy-dev_9100e-3.2_i386.deb','197582','input method for Japanese - development files',''),(595,'libanthy0','optional','libs','392','NOKUBI Takatsugu ','i386','anthy','9100e-3.2','pool/main/a/anthy/libanthy0_9100e-3.2_i386.deb','166426','input method for Japanese - runtime library',''),(596,'antigravitaattori','optional','games','1896','Debian Games Team ','i386','antigrav (0.0.3-2)','0.0.3-2+b1','pool/main/a/antigrav/antigravitaattori_0.0.3-2+b1_i386.deb','1492934','Multiplayer flying saucer racing game','http://www.luolamies.org/software/antigrav/'),(597,'antiword','optional','text','772','Erik Schanze ','i386','','0.37-6','pool/main/a/antiword/antiword_0.37-6_i386.deb','150904','Converts MS Word files to text, PS and PDF','http://www.winfield.demon.nl/'),(598,'antlr-doc','optional','doc','3520','Debian Java Maintainers ','all','antlr','2.7.7-14','pool/main/a/antlr/antlr-doc_2.7.7-14_all.deb','891774','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(599,'antlr','optional','devel','68','Debian Java Maintainers ','all','','2.7.7-14','pool/main/a/antlr/antlr_2.7.7-14_all.deb','10932','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(600,'cantlr','optional','devel','60','Debian Java Maintainers ','i386','antlr','2.7.7-14','pool/main/a/antlr/cantlr_2.7.7-14_i386.deb','10412','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(601,'libantlr-dev','optional','libdevel','1388','Debian Java Maintainers ','i386','antlr','2.7.7-14','pool/main/a/antlr/libantlr-dev_2.7.7-14_i386.deb','316212','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(602,'libantlr-java-gcj','optional','devel','1996','Debian Java Maintainers ','i386','antlr','2.7.7-14','pool/main/a/antlr/libantlr-java-gcj_2.7.7-14_i386.deb','571250','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(603,'libantlr-java','optional','java','508','Debian Java Maintainers ','all','antlr','2.7.7-14','pool/main/a/antlr/libantlr-java_2.7.7-14_all.deb','430744','language tool for constructing recognizers, compilers etc (java library)','http://www.antlr2.org/'),(604,'libantlr2.7-cil','optional','cli-mono','188','Debian Java Maintainers ','all','antlr','2.7.7-14','pool/main/a/antlr/libantlr2.7-cil_2.7.7-14_all.deb','47948','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(605,'python-antlr','optional','python','144','Debian Java Maintainers ','all','antlr','2.7.7-14','pool/main/a/antlr/python-antlr_2.7.7-14_all.deb','23396','language tool for constructing recognizers, compilers etc','http://www.antlr2.org/'),(606,'antlr3-gcj','optional','devel','1696','Debian Java Maintainers ','i386','antlr3','3.0.1+dfsg-4','pool/main/a/antlr3/antlr3-gcj_3.0.1+dfsg-4_i386.deb','494584','language tool for constructing recognizers, compilers etc (native code)',''),(607,'antlr3','optional','devel','592','Debian Java Maintainers ','all','','3.0.1+dfsg-4','pool/main/a/antlr3/antlr3_3.0.1+dfsg-4_all.deb','532970','language tool for constructing recognizers, compilers etc',''),(608,'anubis','optional','net','916','Krzysztof Burghardt ','i386','','4.1.1+dfsg1-3','pool/main/a/anubis/anubis_4.1.1+dfsg1-3_i386.deb','244644','an SMTP message submission daemon','http://www.gnu.org/software/anubis/'),(609,'anypaper','extra','utils','148','Alejandro Garrido Mota ','i386','','1.4-1','pool/main/a/anypaper/anypaper_1.4-1_i386.deb','47172','front-end for wallpapersetter','http://anypaper.sourceforge.net'),(610,'anyremote-doc','extra','doc','2196','Juan Angulo Moreno ','all','anyremote','4.18.1-1','pool/main/a/anyremote/anyremote-doc_4.18.1-1_all.deb','1232546','Documentation for anyremote','http://anyremote.sourceforge.net'),(611,'anyremote','extra','utils','1172','Juan Angulo Moreno ','i386','anyremote (4.18.1-1)','4.18.1-1+b1','pool/main/a/anyremote/anyremote_4.18.1-1+b1_i386.deb','282294','Remote control daemon for applications using Bluetooth, IrDA or WiFi','http://anyremote.sourceforge.net'),(612,'anyremote2html','extra','web','748','Philipp Huebner ','all','','1.0-1','pool/main/a/anyremote2html/anyremote2html_1.0-1_all.deb','259536','web interface for anyRemote acting as HTTP server','http://anyremote.sourceforge.net/'),(613,'aoetools','optional','admin','196','David Martínez Moreno ','i386','','30-3','pool/main/a/aoetools/aoetools_30-3_i386.deb','34146','tools to assist in using ATA over Ethernet','http://aoetools.sf.net'),(614,'aoeui','optional','editors','172','Ryan Kavanagh ','i386','','1.4-1','pool/main/a/aoeui/aoeui_1.4-1_i386.deb','67572','lightweight, unobtrusive, Dvorak-optimized text editor','http://code.google.com/p/aoeui/'),(615,'aolserver4-nsimap','optional','httpd','64','Riccardo Setti ','i386','','3.2.3-4','pool/main/a/aolserver4-nsimap/aolserver4-nsimap_3.2.3-4_i386.deb','26380','This is AOLserver 4 module that implements IMAP4 interface','http://www.aolserver.com/'),(616,'aolserver4-nsldap','optional','httpd','48','Riccardo Setti ','i386','','0.8-4','pool/main/a/aolserver4-nsldap/aolserver4-nsldap_0.8-4_i386.deb','17122','AOLServer 4 module for LDAP','http://www.aolserver.com/'),(617,'aolserver4-nsmysql','optional','httpd','100','Francesco Paolo Lovergine ','i386','aolserver4-nsmysql (0.6-9)','0.6-9+b1','pool/main/a/aolserver4-nsmysql/aolserver4-nsmysql_0.6-9+b1_i386.deb','23122','AOLserver 4 module: module for accessing MySQL databases','http://www.aolserver.com/'),(618,'aolserver4-nsopenssl','optional','httpd','213','Francesco Paolo Lovergine ','i386','','3.0beta26-4','pool/main/a/aolserver4-nsopenssl/aolserver4-nsopenssl_3.0beta26-4_i386.deb','74456','AOLserver 4 module: module for SSL mode','http://www.aolserver.com/'),(619,'aolserver4-nspostgres','optional','httpd','60','Francesco Paolo Lovergine ','i386','','4.5-3','pool/main/a/aolserver4-nspostgres/aolserver4-nspostgres_4.5-3_i386.deb','23690','AOLserver 4 module: Postgres connector','http://www.aolserver.com/'),(620,'aolserver4-nssha1','optional','httpd','32','Francesco Paolo Lovergine ','i386','','0.1-3','pool/main/a/aolserver4-nssha1/aolserver4-nssha1_0.1-3_i386.deb','8394','AOLserver4 module: performs SHA1 hashes Provides a Tcl','http://www.aolserver.com/'),(621,'aolserver4-nssqlite3','optional','net','56','Francesco Paolo Lovergine ','i386','','0.9-2','pool/main/a/aolserver4-nssqlite3/aolserver4-nssqlite3_0.9-2_i386.deb','17192','AOLserver 4 module: module for accessing SQLite 3 databases','http://www.aolserver.com/'),(622,'aolserver4-nsxml','optional','httpd','24','Riccardo Setti ','i386','','1.5-2','pool/main/a/aolserver4-nsxml/aolserver4-nsxml_1.5-2_i386.deb','5178','Module for XML support in aolsever4',''),(623,'aolserver4-core-4.5.1','optional','web','676','Francesco Paolo Lovergine ','i386','aolserver4','4.5.1-8','pool/main/a/aolserver4/aolserver4-core-4.5.1_4.5.1-8_i386.deb','307160','AOL web server version 4 - core libraries','http://www.aolserver.com/'),(624,'aolserver4-core','optional','httpd','92','Francesco Paolo Lovergine ','all','aolserver4','4.5.1-8','pool/main/a/aolserver4/aolserver4-core_4.5.1-8_all.deb','70714','AOL Web Server 4 - transitional package','http://www.aolserver.com/'),(625,'aolserver4-daemon','optional','web','752','Francesco Paolo Lovergine ','i386','aolserver4','4.5.1-8','pool/main/a/aolserver4/aolserver4-daemon_4.5.1-8_i386.deb','172266','AOL web server version 4 - program files','http://www.aolserver.com/'),(626,'aolserver4-dev','optional','httpd','1956','Francesco Paolo Lovergine ','i386','aolserver4','4.5.1-8','pool/main/a/aolserver4/aolserver4-dev_4.5.1-8_i386.deb','956064','AOL web server version 4 - development files','http://www.aolserver.com/'),(627,'aolserver4-doc','optional','doc','8033','Francesco Paolo Lovergine ','all','aolserver4','4.5.1-8','pool/main/a/aolserver4/aolserver4-doc_4.5.1-8_all.deb','3324132','AOL web server version 4 - documentation','http://www.aolserver.com/'),(628,'ap-utils','optional','net','1016','Ben Hutchings ','i386','','1.5-2','pool/main/a/ap-utils/ap-utils_1.5-2_i386.deb','393730','Access Point SNMP Utils for Linux','http://ap-utils.polesye.net/'),(629,'libapache2-redirtoservname','optional','httpd','80','Simon Richter ','i386','apache2-redirtoservname','0.1.2-3','pool/main/a/apache2-redirtoservname/libapache2-redirtoservname_0.1.2-3_i386.deb','5204','Apache 2 module to redirect users to the canonical hostname',''),(630,'apache2-dbg','extra','debug','6808','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-dbg_2.2.14-2_i386.deb','2695358','Apache debugging symbols','http://httpd.apache.org/'),(631,'apache2-doc','optional','doc','12212','Debian Apache Maintainers ','all','apache2','2.2.14-2','pool/main/a/apache2/apache2-doc_2.2.14-2_all.deb','2281508','Apache HTTP Server documentation','http://httpd.apache.org/'),(632,'apache2-mpm-event','optional','httpd','72','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-mpm-event_2.2.14-2_i386.deb','2292','Apache HTTP Server - event driven model','http://httpd.apache.org/'),(633,'apache2-mpm-itk','extra','httpd','72','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-mpm-itk_2.2.14-2_i386.deb','2318','multiuser MPM for Apache 2.2','http://httpd.apache.org/'),(634,'apache2-mpm-prefork','optional','httpd','72','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-mpm-prefork_2.2.14-2_i386.deb','2318','Apache HTTP Server - traditional non-threaded model','http://httpd.apache.org/'),(635,'apache2-mpm-worker','optional','httpd','72','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-mpm-worker_2.2.14-2_i386.deb','2262','Apache HTTP Server - high speed threaded model','http://httpd.apache.org/'),(636,'apache2-prefork-dev','extra','httpd','692','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-prefork-dev_2.2.14-2_i386.deb','138034','Apache development headers - non-threaded MPM','http://httpd.apache.org/'),(637,'apache2-suexec-custom','extra','httpd','196','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-suexec-custom_2.2.14-2_i386.deb','93138','Configurable suexec program for Apache 2 mod_suexec','http://httpd.apache.org/'),(638,'apache2-suexec','optional','httpd','176','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-suexec_2.2.14-2_i386.deb','91560','Standard suexec program for Apache 2 mod_suexec','http://httpd.apache.org/'),(639,'apache2-threaded-dev','extra','httpd','700','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-threaded-dev_2.2.14-2_i386.deb','139228','Apache development headers - threaded MPM','http://httpd.apache.org/'),(640,'apache2-utils','optional','httpd','348','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2-utils_2.2.14-2_i386.deb','152992','utility programs for webservers','http://httpd.apache.org/'),(641,'apache2.2-bin','optional','httpd','3208','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2.2-bin_2.2.14-2_i386.deb','1291480','Apache HTTP Server common binary files','http://httpd.apache.org/'),(642,'apache2.2-common','optional','httpd','2092','Debian Apache Maintainers ','i386','apache2','2.2.14-2','pool/main/a/apache2/apache2.2-common_2.2.14-2_i386.deb','292588','Apache HTTP Server common files','http://httpd.apache.org/'),(643,'apache2','optional','httpd','36','Debian Apache Maintainers ','i386','','2.2.14-2','pool/main/a/apache2/apache2_2.2.14-2_i386.deb','1374','Apache HTTP Server metapackage','http://httpd.apache.org/'),(644,'apachetop','optional','admin','112','Debian QA Group ','i386','','0.12.6-12','pool/main/a/apachetop/apachetop_0.12.6-12_i386.deb','34574','Realtime Apache monitoring tool','http://www.webta.org/projects/apachetop/'),(645,'apbs','optional','science','968','Debichem Team ','i386','','1.1.0-1','pool/main/a/apbs/apbs_1.1.0-1_i386.deb','376404','Adaptive Poisson Boltzmann Solver','http://apbs.sourceforge.net'),(646,'apcalc-common','optional','math','4028','Martin Buck ','all','apcalc','2.12.3.3-1','pool/main/a/apcalc/apcalc-common_2.12.3.3-1_all.deb','936938','Arbitrary precision calculator (common files)','http://www.isthe.com/chongo/tech/comp/calc/'),(647,'apcalc-dev','optional','devel','1496','Martin Buck ','i386','apcalc','2.12.3.3-1','pool/main/a/apcalc/apcalc-dev_2.12.3.3-1_i386.deb','548366','Library for arbitrary precision arithmetic','http://www.isthe.com/chongo/tech/comp/calc/'),(648,'apcalc','optional','math','684','Martin Buck ','i386','','2.12.3.3-1','pool/main/a/apcalc/apcalc_2.12.3.3-1_i386.deb','304768','Arbitrary precision calculator (original name: calc)','http://www.isthe.com/chongo/tech/comp/calc/'),(649,'apcupsd-cgi','extra','web','164','Debian QA Group ','i386','apcupsd','3.14.6-3','pool/main/a/apcupsd/apcupsd-cgi_3.14.6-3_i386.deb','52244','APC UPS Power Management (web interface)','http://www.apcupsd.com/'),(650,'apcupsd-doc','extra','doc','34044','Debian QA Group ','all','apcupsd','3.14.6-3','pool/main/a/apcupsd/apcupsd-doc_3.14.6-3_all.deb','2600226','APC UPS Power Management (documentation/examples)','http://www.apcupsd.com/'),(651,'apcupsd','extra','admin','768','Debian QA Group ','i386','','3.14.6-3','pool/main/a/apcupsd/apcupsd_3.14.6-3_i386.deb','243706','APC UPS Power Management (daemon)','http://www.apcupsd.com/'),(652,'apel','optional','editors','684','Tatsuya Kinoshita ','all','','10.7-3','pool/main/a/apel/apel_10.7-3_all.deb','142722','portable library for emacsen','http://kanji.zinbun.kyoto-u.ac.jp/~tomo/elisp/APEL/'),(653,'apertium-dbus','extra','misc','124','Francis Tyers ','i386','','0.1-1.1','pool/main/a/apertium-dbus/apertium-dbus_0.1-1.1_i386.deb','9430','A D-Bus service for the Apertium machine translation system','http://www.apertium.org'),(654,'apertium-en-ca','extra','misc','7060','Francis Tyers ','i386','','0.8.9-1','pool/main/a/apertium-en-ca/apertium-en-ca_0.8.9-1_i386.deb','2852074','Apertium linguistic data to translate between English and Catalan','http://www.apertium.org'),(655,'apertium-en-es','extra','misc','4740','Francis Tyers ','i386','','0.6.0-1.1','pool/main/a/apertium-en-es/apertium-en-es_0.6.0-1.1_i386.deb','1555766','Apertium linguistic data to translate between English and Spanish','http://www.apertium.org'),(656,'apertium-eo-ca','extra','misc','2816','Francis Tyers ','i386','','0.9.0-1.1','pool/main/a/apertium-eo-ca/apertium-eo-ca_0.9.0-1.1_i386.deb','977266','Apertium linguistic data to translate between Esperanto and Catalan','http://www.apertium.org'),(657,'apertium-eo-es','extra','misc','2940','Francis Tyers ','i386','','0.9.0-1.1','pool/main/a/apertium-eo-es/apertium-eo-es_0.9.0-1.1_i386.deb','925118','Apertium linguistic data to translate between Esperanto and Spanish','http://www.apertium.org'),(658,'apertium-es-ca','extra','misc','12408','Francis Tyers ','i386','','1.1.0-1','pool/main/a/apertium-es-ca/apertium-es-ca_1.1.0-1_i386.deb','4236670','Apertium linguistic data to translate between Spanish and Catalan','http://www.apertium.org'),(659,'apertium-es-gl','extra','misc','1676','Francis Tyers ','i386','','1.0.7-1','pool/main/a/apertium-es-gl/apertium-es-gl_1.0.7-1_i386.deb','674500','Apertium linguistic data to translate between Spanish and Galician','http://www.apertium.org'),(660,'apertium-es-pt','optional','misc','2868','Francis Tyers ','i386','','1.0.3-2.1','pool/main/a/apertium-es-pt/apertium-es-pt_1.0.3-2.1_i386.deb','902996','Apertium linguistic data to translate between Spanish and Portuguese','http://www.apertium.org'),(661,'apertium-es-ro','extra','misc','2844','Francis Tyers ','i386','','0.7.1-2.1','pool/main/a/apertium-es-ro/apertium-es-ro_0.7.1-2.1_i386.deb','1139636','Apertium linguistic data to translate between Spanish and Romanian','http://www.apertium.org'),(662,'apertium-eu-es','extra','misc','5048','Francis Tyers ','i386','','0.3.1-1','pool/main/a/apertium-eu-es/apertium-eu-es_0.3.1-1_i386.deb','1603524','Apertium linguistic data to translate between Basque and Spanish','http://www.apertium.org'),(663,'apertium-fr-ca','optional','misc','2680','Francis Tyers ','i386','','1.0.2-1','pool/main/a/apertium-fr-ca/apertium-fr-ca_1.0.2-1_i386.deb','930554','Apertium linguistic data to translate between French and Catalan','http://www.apertium.org'),(664,'apertium-fr-es','extra','misc','7636','Francis Tyers ','i386','','0.9.0-1','pool/main/a/apertium-fr-es/apertium-fr-es_0.9.0-1_i386.deb','3762662','Apertium linguistic data to translate between French and Spanish','http://www.apertium.org'),(665,'apertium-oc-ca','extra','misc','6776','Francis Tyers ','i386','','1.0.5-1.1','pool/main/a/apertium-oc-ca/apertium-oc-ca_1.0.5-1.1_i386.deb','2657142','Apertium linguistic data to translate between Occitan and Catalan','http://www.apertium.org'),(666,'apertium-oc-es','extra','misc','8764','Francis Tyers ','i386','','1.0.5-1.1','pool/main/a/apertium-oc-es/apertium-oc-es_1.0.5-1.1_i386.deb','2550084','Apertium linguistic data to translate between Occitan and Spanish','http://www.apertium.org'),(667,'apertium-pt-ca','extra','misc','1844','Francis Tyers ','i386','','0.8.1-1','pool/main/a/apertium-pt-ca/apertium-pt-ca_0.8.1-1_i386.deb','559416','Apertium linguistic data to translate between Portuguese and Catalan','http://www.apertium.org'),(668,'apertium-pt-gl','extra','misc','5328','Francis Tyers ','i386','','0.9.1-1','pool/main/a/apertium-pt-gl/apertium-pt-gl_0.9.1-1_i386.deb','951234','Apertium linguistic data to translate between Portuguese and Galician','http://www.apertium.org'),(669,'apertium-tolk','extra','misc','596','Francis Tyers ','i386','','0.2-2.1','pool/main/a/apertium-tolk/apertium-tolk_0.2-2.1_i386.deb','29152','Graphical user interface for Apertium','http://www.apertium.org'),(670,'apertium','optional','misc','1288','Francis Tyers ','i386','','3.1.0-1.1','pool/main/a/apertium/apertium_3.1.0-1.1_i386.deb','349438','Shallow-transfer machine translation engine','http://www.apertium.org'),(671,'libapertium3-3.1-0-dev','optional','libdevel','1568','Francis Tyers ','i386','apertium','3.1.0-1.1','pool/main/a/apertium/libapertium3-3.1-0-dev_3.1.0-1.1_i386.deb','468520','Development library for Apertium','http://www.apertium.org'),(672,'libapertium3-3.1-0','optional','libs','872','Francis Tyers ','i386','apertium','3.1.0-1.1','pool/main/a/apertium/libapertium3-3.1-0_3.1.0-1.1_i386.deb','338538','Shared library for Apertium','http://www.apertium.org'),(673,'apf-firewall','optional','net','436','Giuseppe Iuculano ','all','','9.7+rev1-1','pool/main/a/apf-firewall/apf-firewall_9.7+rev1-1_all.deb','103934','easy iptables based firewall system','http://www.rfxn.com/projects/advanced-policy-firewall/'),(674,'apf-client','optional','net','204','Juan A. Diaz ','i386','apf','0.8.4-1','pool/main/a/apf/apf-client_0.8.4-1_i386.deb','73298','Client for Active Port Forwarding','http://www.gray-world.net/pr_af.shtml'),(675,'apf-server','optional','net','220','Juan A. Diaz ','i386','apf','0.8.4-1','pool/main/a/apf/apf-server_0.8.4-1_i386.deb','75946','Server for Active Port Forwarding','http://www.gray-world.net/pr_af.shtml'),(676,'apg','optional','admin','200','Marc Haber ','i386','','2.2.3.dfsg.1-2','pool/main/a/apg/apg_2.2.3.dfsg.1-2_i386.deb','52816','Automated Password Generator - Standalone version',''),(677,'apgdiff','extra','misc','128','Christoph Berg ','all','','1.3-3','pool/main/a/apgdiff/apgdiff_1.3-3_all.deb','60608','Another PostgreSQL Diff Tool','http://apgdiff.sourceforge.net/'),(678,'libapiextractor-dbg','extra','debug','6956','Didier Raboud ','i386','apiextractor','0.3.1-1','pool/main/a/apiextractor/libapiextractor-dbg_0.3.1-1_i386.deb','2533034','Debugging symbols for the library headers parser','http://www.pyside.org/home-binding/api-extractor/'),(679,'libapiextractor-dev','optional','libdevel','184','Didier Raboud ','i386','apiextractor','0.3.1-1','pool/main/a/apiextractor/libapiextractor-dev_0.3.1-1_i386.deb','26702','Development files for the library headers parser','http://www.pyside.org/home-binding/api-extractor/'),(680,'libapiextractor0','optional','libs','1148','Didier Raboud ','i386','apiextractor','0.3.1-1','pool/main/a/apiextractor/libapiextractor0_0.3.1-1_i386.deb','459612','Library headers parser that creates an API abstract representation','http://www.pyside.org/home-binding/api-extractor/'),(681,'apmd','optional','admin','248','Anibal Monsalve Salazar ','i386','','3.2.2-14','pool/main/a/apmd/apmd_3.2.2-14_i386.deb','54058','Utilities for Advanced Power Management (APM)','http://alumnit.ca/~apenwarr/apmd/'),(682,'libapm-dev','optional','libdevel','76','Anibal Monsalve Salazar ','i386','apmd','3.2.2-14','pool/main/a/apmd/libapm-dev_3.2.2-14_i386.deb','26964','Library for interacting with APM driver in kernel','http://alumnit.ca/~apenwarr/apmd/'),(683,'libapm1','optional','libs','80','Anibal Monsalve Salazar ','i386','apmd','3.2.2-14','pool/main/a/apmd/libapm1_3.2.2-14_i386.deb','26502','Library for interacting with APM driver in kernel','http://alumnit.ca/~apenwarr/apmd/'),(684,'xapm','optional','x11','80','Anibal Monsalve Salazar ','i386','apmd','3.2.2-14','pool/main/a/apmd/xapm_3.2.2-14_i386.deb','28426','X program to monitor APM battery status','http://alumnit.ca/~apenwarr/apmd/'),(685,'apoo','optional','misc','185','Rogerio Reis ','all','','2.2-2','pool/main/a/apoo/apoo_2.2-2_all.deb','136702','An Assembly course aid',''),(686,'app-install-data','optional','x11','20864','Julian Andres Klode ','all','','2009.06.06','pool/main/a/app-install-data/app-install-data_2009.06.06_all.deb','6903896','Application Installer Data Files',''),(687,'apparix','extra','utils','172','Armin Berres ','i386','','07-261-1','pool/main/a/apparix/apparix_07-261-1_i386.deb','93336','console-based bookmark tool for fast file system navigation','http://micans.org/apparix/'),(688,'libappconfig-perl','optional','perl','256','Stefan Hornburg (Racke) ','all','appconfig','1.56-2','pool/main/a/appconfig/libappconfig-perl_1.56-2_all.deb','88586','Perl module for configuration file and command line handling',''),(689,'approx','optional','admin','2728','Eric Cooper ','i386','','4.1-1','pool/main/a/approx/approx_4.1-1_i386.deb','1072074','caching proxy server for Debian archive files','http://git.debian.org/?p=pkg-ocaml-maint/packages/approx.git'),(690,'libapq-postgresql-dbg','extra','debug','108','Adrian-Ken Rueegsegger ','i386','apq-postgresql','3.0~b1-1','pool/main/a/apq-postgresql/libapq-postgresql-dbg_3.0~b1-1_i386.deb','21988','APQ Ada 95 Postgresql Binding Plugin (debug)','http://www.adaworks.net/adaworks/'),(691,'libapq-postgresql-dev','optional','libdevel','416','Adrian-Ken Rueegsegger ','i386','apq-postgresql','3.0~b1-1','pool/main/a/apq-postgresql/libapq-postgresql-dev_3.0~b1-1_i386.deb','95104','APQ Ada 95 Postgresql Binding Plugin (development)','http://www.adaworks.net/adaworks/'),(692,'libapq3-postgresql','optional','libs','196','Adrian-Ken Rueegsegger ','i386','apq-postgresql','3.0~b1-1','pool/main/a/apq-postgresql/libapq3-postgresql_3.0~b1-1_i386.deb','50702','APQ Ada 95 Postgresql Binding Plugin (library)','http://www.adaworks.net/adaworks/'),(693,'libapq-common-dbg','extra','debug','72','Adrian-Ken Rueegsegger ','i386','apq','3.0~b1-3','pool/main/a/apq/libapq-common-dbg_3.0~b1-3_i386.deb','10172','A pluggable Ada 95 Binding to various database systems (debug)','http://www.adaworks.net/adaworks/'),(694,'libapq-common-dev','optional','libdevel','920','Adrian-Ken Rueegsegger ','i386','apq','3.0~b1-3','pool/main/a/apq/libapq-common-dev_3.0~b1-3_i386.deb','595702','A pluggable Ada 95 Binding to various database systems (development)','http://www.adaworks.net/adaworks/'),(695,'libapq3-common','optional','libs','172','Adrian-Ken Rueegsegger ','i386','apq','3.0~b1-3','pool/main/a/apq/libapq3-common_3.0~b1-3_i386.deb','53588','A pluggable Ada 95 Binding to various database systems (library)','http://www.adaworks.net/adaworks/'),(696,'libaprutil1-dbd-freetds','optional','libs','80','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbd-freetds_1.3.9+dfsg-3_i386.deb','27480','The Apache Portable Runtime Utility Library - FreeTDS Driver','http://apr.apache.org/'),(697,'libaprutil1-dbd-mysql','optional','libs','84','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbd-mysql_1.3.9+dfsg-3_i386.deb','29418','The Apache Portable Runtime Utility Library - MySQL Driver','http://apr.apache.org/'),(698,'libaprutil1-dbd-odbc','optional','libs','92','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbd-odbc_1.3.9+dfsg-3_i386.deb','32880','The Apache Portable Runtime Utility Library - ODBC Driver','http://apr.apache.org/'),(699,'libaprutil1-dbd-pgsql','optional','libs','84','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbd-pgsql_1.3.9+dfsg-3_i386.deb','28954','The Apache Portable Runtime Utility Library - PostgreSQL Driver','http://apr.apache.org/'),(700,'libaprutil1-dbd-sqlite3','optional','libs','80','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbd-sqlite3_1.3.9+dfsg-3_i386.deb','27078','The Apache Portable Runtime Utility Library - SQLite3 Driver','http://apr.apache.org/'),(701,'libaprutil1-dbg','extra','debug','608','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dbg_1.3.9+dfsg-3_i386.deb','229344','The Apache Portable Runtime Utility Library - Debugging Symbols','http://apr.apache.org/'),(702,'libaprutil1-dev','optional','libdevel','4676','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-dev_1.3.9+dfsg-3_i386.deb','572396','The Apache Portable Runtime Utility Library - Development Headers','http://apr.apache.org/'),(703,'libaprutil1-ldap','optional','libs','76','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1-ldap_1.3.9+dfsg-3_i386.deb','25070','The Apache Portable Runtime Utility Library - LDAP Driver','http://apr.apache.org/'),(704,'libaprutil1','optional','libs','232','Debian Apache Maintainers ','i386','apr-util','1.3.9+dfsg-3','pool/main/a/apr-util/libaprutil1_1.3.9+dfsg-3_i386.deb','85074','The Apache Portable Runtime Utility Library','http://apr.apache.org/'),(705,'libapr1-dbg','extra','debug','128','Debian Apache Maintainers ','i386','apr','1.3.8-1','pool/main/a/apr/libapr1-dbg_1.3.8-1_i386.deb','57738','The Apache Portable Runtime Library - Debugging Symbols','http://apr.apache.org/'),(706,'libapr1-dev','optional','libdevel','5544','Debian Apache Maintainers ','i386','apr','1.3.8-1','pool/main/a/apr/libapr1-dev_1.3.8-1_i386.deb','871396','The Apache Portable Runtime Library - Development Headers','http://apr.apache.org/'),(707,'libapr1','optional','libs','300','Debian Apache Maintainers ','i386','apr','1.3.8-1','pool/main/a/apr/libapr1_1.3.8-1_i386.deb','117770','The Apache Portable Runtime Library','http://apr.apache.org/'),(708,'aprsd','optional','hamradio','460','Debian Hamradio Maintainers ','i386','','1:2.2.5-13-5.1','pool/main/a/aprsd/aprsd_2.2.5-13-5.1_i386.deb','146856','Internet Gateway for the Automatic Position Reporting System','http://sourceforge.net/projects/aprsd/'),(709,'aprsdigi','optional','hamradio','140','Debian Hamradio Maintainers ','i386','','2.4.4-3.1','pool/main/a/aprsdigi/aprsdigi_2.4.4-3.1_i386.deb','42740','digipeater for APRS','http://aprsdigi.sourceforge.net/'),(710,'apsfilter','extra','text','2484','Pawel Wiecek ','all','','7.2.6-1.3','pool/main/a/apsfilter/apsfilter_7.2.6-1.3_all.deb','438510','Magic print filter with automatic file type recognition',''),(711,'apt-build','optional','devel','128','Julien Danjou ','i386','','0.12.37','pool/main/a/apt-build/apt-build_0.12.37_i386.deb','36316','frontend to apt to build, optimize and install packages',''),(712,'apt-cacher-ng','optional','net','740','Eduard Bloch ','i386','','0.4-1','pool/main/a/apt-cacher-ng/apt-cacher-ng_0.4-1_i386.deb','278574','Caching proxy for distribution of software packages',''),(713,'apt-cacher','optional','net','308','Mark Hindley ','all','','1.6.9','pool/main/a/apt-cacher/apt-cacher_1.6.9_all.deb','78792','Caching proxy for Debian package and source files',''),(714,'apt-cross','extra','utils','116','Neil Williams ','all','','0.13.1','pool/main/a/apt-cross/apt-cross_0.13.1_all.deb','24220','retrieve, build and install libraries for cross-compiling','http://www.emdebian.org/'),(715,'libcache-apt-perl','extra','perl','140','Neil Williams ','all','apt-cross','0.13.1','pool/main/a/apt-cross/libcache-apt-perl_0.13.1_all.deb','32968','object oriented apt cache perl binding','http://www.emdebian.org/'),(716,'apt-dater-dbg','extra','debug','200','Patrick Matthäi ','i386','apt-dater','0.8.0-3','pool/main/a/apt-dater/apt-dater-dbg_0.8.0-3_i386.deb','68014','terminal-based remote package update manager (dbg symbols)','http://www.ibh.de/apt-dater'),(717,'apt-dater-host','optional','admin','72','Patrick Matthäi ','all','apt-dater','0.8.0-3','pool/main/a/apt-dater/apt-dater-host_0.8.0-3_all.deb','8832','host helper application for apt-dater','http://www.ibh.de/apt-dater'),(718,'apt-dater','optional','admin','240','Patrick Matthäi ','i386','','0.8.0-3','pool/main/a/apt-dater/apt-dater_0.8.0-3_i386.deb','58210','terminal-based remote package update manager','http://www.ibh.de/apt-dater'),(719,'apt-dpkg-ref','optional','doc','152','Vanessa Gutiérrez ','all','','5.3+nmu1','pool/main/a/apt-dpkg-ref/apt-dpkg-ref_5.3+nmu1_all.deb','96466','APT, Dpkg Quick Reference sheet',''),(720,'apt-file','optional','admin','184','Stefan Fritsch ','all','','2.3.0','pool/main/a/apt-file/apt-file_2.3.0_all.deb','29228','search for files within Debian packages (command-line interface)',''),(721,'apt-forktracer','optional','admin','180','Marcin Owsiany ','all','','0.2','pool/main/a/apt-forktracer/apt-forktracer_0.2_all.deb','23308','a utility for tracking non-official package versions',''),(722,'apt-listbugs','optional','admin','516','Ryan Niebur ','all','','0.1.1','pool/main/a/apt-listbugs/apt-listbugs_0.1.1_all.deb','99550','tool which lists critical bugs before each apt installation',''),(723,'apt-listchanges','standard','utils','504','Pierre Habouzit ','all','','2.83+nmu1','pool/main/a/apt-listchanges/apt-listchanges_2.83+nmu1_all.deb','80254','package change history notification tool',''),(724,'apt-mirror','optional','net','120','Brandon Holtsclaw ','all','','0.4.5-1','pool/main/a/apt-mirror/apt-mirror_0.4.5-1_all.deb','11866','APT sources mirroring tool','http://apt-mirror.sourceforge.net/'),(725,'apt-move','optional','admin','220','Chuan-kai Lin ','i386','apt-move (4.2.27-1)','4.2.27-1+b7','pool/main/a/apt-move/apt-move_4.2.27-1+b7_i386.deb','51334','Maintain Debian packages in a package pool',''),(726,'apt-offline','optional','admin','316','Ritesh Raj Sarraf ','all','','0.9.5','pool/main/a/apt-offline/apt-offline_0.9.5_all.deb','52758','offline apt package manager','http://apt-offline.alioth.debian.org'),(727,'apt-p2p','optional','net','529','Cameron Dale ','all','','0.1.5','pool/main/a/apt-p2p/apt-p2p_0.1.5_all.deb','108498','apt helper for peer-to-peer downloads of Debian packages','http://www.camrdale.org/apt-p2p.html'),(728,'apt-rdepends','optional','utils','92','Simon Law ','all','','1.3.0-1.1','pool/main/a/apt-rdepends/apt-rdepends_1.3.0-1.1_all.deb','14396','Recursively lists package dependencies',''),(729,'apt-show-source','optional','admin','116','OHURA Makoto ','all','','0.10','pool/main/a/apt-show-source/apt-show-source_0.10_all.deb','17968','Shows source-package information',''),(730,'apt-show-versions','optional','admin','184','Christoph Martin ','all','','0.16','pool/main/a/apt-show-versions/apt-show-versions_0.16_all.deb','33644','lists available package versions with distribution',''),(731,'apt-spy','optional','admin','196','Stefano Canepa ','i386','','3.1-19','pool/main/a/apt-spy/apt-spy_3.1-19_i386.deb','31650','writes a sources.list file based on bandwidth tests',''),(732,'apt-src','optional','admin','76','Laszlo Boszormenyi (GCS) ','all','','0.25.1-0.1','pool/main/a/apt-src/apt-src_0.25.1-0.1_all.deb','36352','manage Debian source packages',''),(733,'apt-transport-debtorrent','optional','admin','120','Cameron Dale ','i386','apt-transport-debtorrent (0.2.1)','0.2.1+b2','pool/main/a/apt-transport-debtorrent/apt-transport-debtorrent_0.2.1+b2_i386.deb','25660','an APT transport for communicating with DebTorrent','http://debtorrent.alioth.debian.org/'),(734,'apt-watch-backend','optional','admin','184','John Lightsey ','i386','apt-watch','0.3.2-14','pool/main/a/apt-watch/apt-watch-backend_0.3.2-14_i386.deb','39282','Applet that monitors apt sources for upgrades (backend slave)',''),(735,'apt-watch-gnome','optional','admin','200','John Lightsey ','i386','apt-watch','0.3.2-14','pool/main/a/apt-watch/apt-watch-gnome_0.3.2-14_i386.deb','36736','Applet that monitors apt sources for upgrades (GNOME applet)',''),(736,'apt-watch','optional','admin','36','John Lightsey ','all','','0.3.2-14','pool/main/a/apt-watch/apt-watch_0.3.2-14_all.deb','3958','Applet that monitors apt sources for upgrades (transitional package)',''),(737,'apt-xapian-index','optional','admin','208','Enrico Zini ','all','','0.22','pool/main/a/apt-xapian-index/apt-xapian-index_0.22_all.deb','35730','maintenance tools for a Xapian index of Debian packages',''),(738,'apt-zip','extra','admin','128','Giacomo Catenazzi ','all','','0.18','pool/main/a/apt-zip/apt-zip_0.18_all.deb','20598','Update a non-networked computer using apt and removable media','http://alioth.debian.org/projects/apt-zip'),(739,'apt-doc','optional','doc','276','APT Development Team ','all','apt','0.7.23.1','pool/main/a/apt/apt-doc_0.7.23.1_all.deb','103962','Documentation for APT',''),(740,'apt-transport-https','optional','admin','124','APT Development Team ','i386','apt','0.7.23.1','pool/main/a/apt/apt-transport-https_0.7.23.1_i386.deb','62846','APT https transport',''),(741,'apt-utils','important','admin','440','APT Development Team ','i386','apt','0.7.23.1','pool/main/a/apt/apt-utils_0.7.23.1_i386.deb','193054','APT utility programs',''),(742,'apt','important','admin','5092','APT Development Team ','i386','','0.7.23.1','pool/main/a/apt/apt_0.7.23.1_i386.deb','1641588','Advanced front-end for dpkg',''),(743,'libapt-pkg-dev','optional','libdevel','444','APT Development Team ','i386','apt','0.7.23.1','pool/main/a/apt/libapt-pkg-dev_0.7.23.1_i386.deb','115234','Development files for APT\'s libapt-pkg and libapt-inst',''),(744,'libapt-pkg-doc','optional','doc','368','APT Development Team ','all','apt','0.7.23.1','pool/main/a/apt/libapt-pkg-doc_0.7.23.1_all.deb','128344','Documentation for APT development',''),(745,'aptfs','extra','utils','40','Chris Lamb ','all','','0.7-1','pool/main/a/aptfs/aptfs_0.7-1_all.deb','8322','FUSE filesystem for APT source repositories','http://chris-lamb.co.uk/projects/aptfs/'),(746,'apticron','extra','admin','112','Tiago Bortoletto Vaz ','all','','1.1.37','pool/main/a/apticron/apticron_1.1.37_all.deb','17046','simple tool to mail about pending package updates',''),(747,'aptitude-dbg','extra','debug','16900','Daniel Burrows ','i386','aptitude (0.4.11.11-1)','0.4.11.11-1+b2','pool/main/a/aptitude/aptitude-dbg_0.4.11.11-1+b2_i386.deb','5912136','Debug symbols for the aptitude package manager',''),(748,'aptitude-doc-cs','optional','doc','1300','Daniel Burrows ','all','aptitude','0.4.11.11-1','pool/main/a/aptitude/aptitude-doc-cs_0.4.11.11-1_all.deb','379426','Czech manual for aptitude, a terminal-based package manager',''),(749,'aptitude-doc-en','optional','doc','1304','Daniel Burrows ','all','aptitude','0.4.11.11-1','pool/main/a/aptitude/aptitude-doc-en_0.4.11.11-1_all.deb','364786','English manual for aptitude, a terminal-based package manager',''),(750,'aptitude-doc-fi','optional','doc','932','Daniel Burrows ','all','aptitude','0.4.11.11-1','pool/main/a/aptitude/aptitude-doc-fi_0.4.11.11-1_all.deb','271986','Finnish manual for aptitude, a terminal-based package manager',''),(751,'aptitude-doc-fr','optional','doc','1224','Daniel Burrows ','all','aptitude','0.4.11.11-1','pool/main/a/aptitude/aptitude-doc-fr_0.4.11.11-1_all.deb','312104','French manual for aptitude, a terminal-based package manager',''),(752,'aptitude-doc-ja','optional','doc','1340','Daniel Burrows ','all','aptitude','0.4.11.11-1','pool/main/a/aptitude/aptitude-doc-ja_0.4.11.11-1_all.deb','374740','Japanese manual for aptitude, a terminal-based package manager',''),(753,'aptitude','important','admin','9652','Daniel Burrows ','i386','aptitude (0.4.11.11-1)','0.4.11.11-1+b2','pool/main/a/aptitude/aptitude_0.4.11.11-1+b2_i386.deb','3034330','terminal-based package manager',''),(754,'aptlinex','optional','utils','124','José L. Redrejo Rodríguez ','all','','0.91-1','pool/main/a/aptlinex/aptlinex_0.91-1_all.deb','17902','Web browser addon to install Debian packages with a click',''),(755,'aptoncd','extra','admin','1960','Fabrice Coutadeur ','all','','0.1.98+bzr112-1','pool/main/a/aptoncd/aptoncd_0.1.98+bzr112-1_all.deb','268724','Installation disc creator for packages downloaded via APT','http://aptoncd.sourceforge.net'),(756,'aptsh','optional','admin','220','Marcin Wrochniak ','i386','aptsh (0.0.7+nmu1)','0.0.7+nmu1+b2','pool/main/a/aptsh/aptsh_0.0.7+nmu1+b2_i386.deb','61702','apt interactive shell',''),(757,'apvlv','extra','text','328','Stefan Ritter ','i386','','0.0.7.2-1','pool/main/a/apvlv/apvlv_0.0.7.2-1_i386.deb','113304','PDF viewer with Vim-like behaviour','http://code.google.com/p/apvlv/'),(758,'apwal','optional','gnome','244','Sam Hocevar (Debian packages) ','i386','','0.4.5-1','pool/main/a/apwal/apwal_0.4.5-1_i386.deb','63526','icon-based floating application launcher with transparency',''),(759,'aqemu','optional','x11','3488','Ignace Mouzannar ','i386','','0.7.3-1','pool/main/a/aqemu/aqemu_0.7.3-1_i386.deb','1327580','Qt4 front-end for QEMU and KVM','http://aqemu.sourceforge.net/'),(760,'aqsis-libs-dev','optional','libdevel','172','David Martínez Moreno ','i386','aqsis','1.2.0-2.1','pool/main/a/aqsis/aqsis-libs-dev_1.2.0-2.1_i386.deb','30742','suite of applications implementing the RenderMan Interface - development files',''),(761,'aqsis-libsc2a','optional','libs','4560','David Martínez Moreno ','i386','aqsis','1.2.0-2.1','pool/main/a/aqsis/aqsis-libsc2a_1.2.0-2.1_i386.deb','1535952','suite of applications implementing the RenderMan Interface - libraries',''),(762,'aqsis','optional','graphics','1140','David Martínez Moreno ','i386','','1.2.0-2.1','pool/main/a/aqsis/aqsis_1.2.0-2.1_i386.deb','335492','suite of applications implementing the RenderMan Interface',''),(763,'aqualung','extra','sound','2192','Adam Cécile (Le_Vert) ','i386','','0.9~beta10-2','pool/main/a/aqualung/aqualung_0.9~beta10-2_i386.deb','861368','Gapless Gtk-based audio player','http://aqualung.sourceforge.net/'),(764,'ara','optional','utils','744','George Danchev ','i386','','1.0.27','pool/main/a/ara/ara_1.0.27_i386.deb','293464','Command line utility for searching the Debian package database','http://ara.alioth.debian.org/'),(765,'xara-gtk','optional','utils','1764','George Danchev ','i386','ara','1.0.27','pool/main/a/ara/xara-gtk_1.0.27_i386.deb','630916','GTK+ utility for searching the Debian package database','http://ara.alioth.debian.org/'),(766,'arandr','optional','x11','200','Christian M. Amsüss ','all','','0.1.2-1','pool/main/a/arandr/arandr_0.1.2-1_all.deb','31038','Simple visual front end for XRandR 1.2','http://christian.amsuess.com/tools/arandr/'),(767,'aranym','extra','otherosfs','5308','Antonin Kral ','i386','','0.9.9-1','pool/main/a/aranym/aranym_0.9.9-1_i386.deb','1712610','Atari Running on Any Machine','http://www.aranym.org'),(768,'arc-brave','optional','gnome','572','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-brave_2.7-1_all.deb','412746','blue variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(769,'arc-colors','optional','gnome','64','GNOME-Colors Packagers ','all','','2.7-1','pool/main/a/arc-colors/arc-colors_2.7-1_all.deb','11472','set of wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(770,'arc-dust','optional','gnome','560','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-dust_2.7-1_all.deb','396076','chocolate variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(771,'arc-human','optional','gnome','556','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-human_2.7-1_all.deb','393178','orange variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(772,'arc-illustrious','optional','gnome','544','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-illustrious_2.7-1_all.deb','383736','pink variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(773,'arc-noble','optional','gnome','564','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-noble_2.7-1_all.deb','406046','purple variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(774,'arc-wine','optional','gnome','516','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-wine_2.7-1_all.deb','353836','red variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(775,'arc-wise','optional','gnome','568','GNOME-Colors Packagers ','all','arc-colors','2.7-1','pool/main/a/arc-colors/arc-wise_2.7-1_all.deb','408718','green variation of the Arc-Colors wallpapers and GDM themes','http://code.google.com/p/gnome-colors/'),(776,'arc','optional','utils','136','Klaus Reimer ','i386','','5.21o-2','pool/main/a/arc/arc_5.21o-2_i386.deb','56466','Archive utility based on the MSDOS ARC program',''),(777,'arch-buildpackage','optional','vcs','64','Debian QA Group ','all','','0.1-5','pool/main/a/arch-buildpackage/arch-buildpackage_0.1-5_all.deb','9770','tools for maintaining Debian packages using arch',''),(778,'libarch-perl','optional','perl','492','Debian QA Group ','all','arch-perl','0.5.1+patch-180-3','pool/main/a/arch-perl/libarch-perl_0.5.1+patch-180-3_all.deb','161792','Perl library for GNU Arch',''),(779,'arch2darcs','optional','vcs','836','John Goerzen ','i386','','1.0.13','pool/main/a/arch2darcs/arch2darcs_1.0.13_i386.deb','276492','Convert Arch/tla repositories to Darcs',''),(780,'archfs','optional','utils','100','Jon Dowland ','i386','','0.5.4-1','pool/main/a/archfs/archfs_0.5.4-1_i386.deb','23322','rdiff-backup virtual filesystem','http://code.google.com/p/archfs/'),(781,'archivemail','optional','mail','172','Serafeim Zanikolas ','all','','0.7.2-7','pool/main/a/archivemail/archivemail_0.7.2-7_all.deb','37604','archive and compress or delete your old email','http://archivemail.sourceforge.net/'),(782,'archmage','optional','utils','380','Mikhail Gusarov ','all','','1:0.2.4-1','pool/main/a/archmage/archmage_0.2.4-1_all.deb','28980','CHM(Compiled HTML) Decompressor','http://archmage.sf.net'),(783,'archmbox','optional','mail','128','Debian QA Group ','all','','4.10.0-1','pool/main/a/archmbox/archmbox_4.10.0-1_all.deb','37032','a simple email archiver written in perl','http://adc-archmbox.sourceforge.net/'),(784,'archway','optional','vcs','640','Debian QA Group ','all','','0.2.1+patch-85-1','pool/main/a/archway/archway_0.2.1+patch-85-1_all.deb','302342','GUI for GNU Arch',''),(785,'archzoom','optional','vcs','816','Debian QA Group ','all','','0.5.1-4','pool/main/a/archzoom/archzoom_0.5.1-4_all.deb','116252','web-based Arch repository browser',''),(786,'ardour-i686','optional','sound','12512','Debian Multimedia Team ','i386','ardour','1:2.8-1','pool/main/a/ardour/ardour-i686_2.8-1_i386.deb','4545294','digital audio workstation (graphical gtk2 interface) [i686]','http://www.ardour.org/'),(787,'ardour','optional','sound','12448','Debian Multimedia Team ','i386','','1:2.8-1','pool/main/a/ardour/ardour_2.8-1_i386.deb','4505602','digital audio workstation (graphical gtk2 interface)','http://www.ardour.org/'),(788,'arename','optional','sound','184','Maximilian Gass ','all','','3.0-1','pool/main/a/arename/arename_3.0-1_all.deb','57244','automatic audio file renaming','http://ft.bewatermyfriend.org/comp/arename.html'),(789,'python-argparse-doc','optional','doc','416','Ritesh Raj Sarraf ','all','argparse','1.0.1-1','pool/main/a/argparse/python-argparse-doc_1.0.1-1_all.deb','55208','optparse-inspired command-line parsing library - doc','http://code.google.com/p/argparse/'),(790,'python-argparse','optional','python','304','Ritesh Raj Sarraf ','all','argparse','1.0.1-1','pool/main/a/argparse/python-argparse_1.0.1-1_all.deb','41448','optparse-inspired command-line parsing library','http://code.google.com/p/argparse/'),(791,'libargtable2-0','optional','libs','68','Shachar Shemesh ','i386','argtable2','9-1','pool/main/a/argtable2/libargtable2-0_9-1_i386.deb','13240','A library for parsing GNU style command line arguments',''),(792,'libargtable2-dev','optional','libdevel','120','Shachar Shemesh ','i386','argtable2','9-1','pool/main/a/argtable2/libargtable2-dev_9-1_i386.deb','39330','A library for parsing GNU style command line arguments',''),(793,'libargtable2-docs','optional','doc','3080','Shachar Shemesh ','all','argtable2','9-1','pool/main/a/argtable2/libargtable2-docs_9-1_all.deb','2963174','A library for parsing GNU style command line arguments',''),(794,'argus-client','optional','net','3785','Andrew Pollock ','i386','','2.0.6.fixes.1-3','pool/main/a/argus-client/argus-client_2.0.6.fixes.1-3_i386.deb','1832450','IP network transaction auditing tool',''),(795,'argus-server','optional','net','464','Andrew Pollock ','i386','argus','1:2.0.6.fixes.1-16','pool/main/a/argus/argus-server_2.0.6.fixes.1-16_i386.deb','136840','IP network transaction auditing tool',''),(796,'python-argvalidate','optional','python','268','Debian Python Modules Team ','all','argvalidate','0.9.0-1','pool/main/a/argvalidate/python-argvalidate_0.9.0-1_all.deb','29416','simple argument validator library','http://code.sp-its.at/projects/argvalidate'),(797,'argyll','optional','graphics','8640','Roland Mas ','i386','','1.0.4-1','pool/main/a/argyll/argyll_1.0.4-1_i386.deb','3842422','Color Management System, calibrator and profiler','http://www.argyllcms.com/'),(798,'aria2','optional','net','4248','Patrick Ruckstuhl ','i386','','1.6.2-3','pool/main/a/aria2/aria2_1.6.2-3_i386.deb','1564914','High speed download utility','http://aria2.sourceforge.net/'),(799,'aribas','optional','math','404','Ralf Treinen ','i386','','1.63-3','pool/main/a/aribas/aribas_1.63-3_i386.deb','195626','interpreter for arithmetic','http://www.mathematik.uni-muenchen.de/~forster/sw/aribas.html'),(800,'ario-common','optional','sound','1436','Marc Pavot ','all','ario','1.3-1','pool/main/a/ario/ario-common_1.3-1_all.deb','308240','GTK+ client for the Music Player Daemon (MPD) (Common files)','http://ario-player.sourceforge.net/'),(801,'ario','optional','sound','620','Marc Pavot ','i386','','1.3-1','pool/main/a/ario/ario_1.3-1_i386.deb','196178','GTK+ client for the Music Player Daemon (MPD)','http://ario-player.sourceforge.net/'),(802,'arista','optional','video','1568','Alessio Treglia ','all','','0.9.3-2','pool/main/a/arista/arista_0.9.3-2_all.deb','196594','multimedia transcoder for the GNOME Desktop','http://programmer-art.org/projects/arista-transcoder'),(803,'arj','optional','utils','480','Guillem Jover ','i386','','3.10.22-7','pool/main/a/arj/arj_3.10.22-7_i386.deb','218886','archiver for .arj files','http://sf.net/projects/arj/'),(804,'libarmadillo-dev','optional','libdevel','1224','Debian Science Maintainers ','i386','armadillo','0.6.12-2','pool/main/a/armadillo/libarmadillo-dev_0.6.12-2_i386.deb','115596','streamlined C++ linear algebra library - Headers','http://arma.sourceforge.net/'),(805,'libarmadillo-doc','optional','doc','16200','Debian Science Maintainers ','all','armadillo','0.6.12-2','pool/main/a/armadillo/libarmadillo-doc_0.6.12-2_all.deb','1662932','streamlined C++ linear algebra library - Documentation','http://arma.sourceforge.net/'),(806,'libarmadillo0','optional','libs','56','Debian Science Maintainers ','i386','armadillo','0.6.12-2','pool/main/a/armadillo/libarmadillo0_0.6.12-2_i386.deb','7594','streamlined C++ linear algebra library','http://arma.sourceforge.net/'),(807,'armagetronad-common','optional','games','1676','Christine Spang ','all','armagetronad','0.2.8.3~rc3-1','pool/main/a/armagetronad/armagetronad-common_0.2.8.3~rc3-1_all.deb','552728','Common files for the Armagetron Advanced packages','http://armagetronad.sourceforge.net/'),(808,'armagetronad-dedicated','optional','games','1728','Christine Spang ','i386','armagetronad','0.2.8.3~rc3-1','pool/main/a/armagetronad/armagetronad-dedicated_0.2.8.3~rc3-1_i386.deb','811432','dedicated game server for Armagetron Advanced','http://armagetronad.sourceforge.net/'),(809,'armagetronad','optional','games','2488','Christine Spang ','i386','','0.2.8.3~rc3-1','pool/main/a/armagetronad/armagetronad_0.2.8.3~rc3-1_i386.deb','1358740','3D Tron-like high speed game','http://armagetronad.sourceforge.net/'),(810,'arno-iptables-firewall','optional','net','824','Michael Hanke ','all','','1.9.2.d-1','pool/main/a/arno-iptables-firewall/arno-iptables-firewall_1.9.2.d-1_all.deb','123450','single- and multi-homed firewall script with DSL/ADSL support','http://rocky.eld.leidenuniv.nl/'),(811,'arora','extra','web','3912','Sune Vuorela ','i386','','0.10.1-1','pool/main/a/arora/arora_0.10.1-1_i386.deb','1462620','simple cross platform web browser',''),(812,'arp-scan','extra','admin','472','Tim Brown ','i386','','1.6-2','pool/main/a/arp-scan/arp-scan_1.6-2_i386.deb','181664','arp scanning and fingerprinting tool',''),(813,'libarpack++2-dev','optional','libdevel','2108','Debian Scientific Computing Team ','i386','arpack++','2.3-1','pool/main/a/arpack++/libarpack++2-dev_2.3-1_i386.deb','464752','Object-oriented version of the ARPACK package (development)','http://ljk.imag.fr/membres/Christophe.Prudhomme/software.php'),(814,'libarpack++2c2a','optional','libs','72','Debian Scientific Computing Team ','i386','arpack++','2.3-1','pool/main/a/arpack++/libarpack++2c2a_2.3-1_i386.deb','11234','Object-oriented version of the ARPACK package (runtime)','http://ljk.imag.fr/membres/Christophe.Prudhomme/software.php'),(815,'libarpack2-dbg','extra','debug','100','Debian Scientific Computing Team ','i386','arpack (2.1+parpack96.dfsg-2)','2.1+parpack96.dfsg-2+b1','pool/main/a/arpack/libarpack2-dbg_2.1+parpack96.dfsg-2+b1_i386.deb','21126','Fortran77 subroutines to solve large scale eigenvalue problems (debug)',''),(816,'libarpack2-dev','extra','libdevel','1520','Debian Scientific Computing Team ','i386','arpack (2.1+parpack96.dfsg-2)','2.1+parpack96.dfsg-2+b1','pool/main/a/arpack/libarpack2-dev_2.1+parpack96.dfsg-2+b1_i386.deb','664704','Fortran77 subroutines to solve large scale eigenvalue problems (development)',''),(817,'libarpack2','optional','libs','640','Debian Scientific Computing Team ','i386','arpack (2.1+parpack96.dfsg-2)','2.1+parpack96.dfsg-2+b1','pool/main/a/arpack/libarpack2_2.1+parpack96.dfsg-2+b1_i386.deb','240638','Fortran77 subroutines to solve large scale eigenvalue problems',''),(818,'arpalert','optional','net','1816','Jan Wagner ','i386','','2.0.11-3','pool/main/a/arpalert/arpalert_2.0.11-3_i386.deb','512538','Monitor ARP changes in ethernet networks','http://www.arpalert.org/'),(819,'arping','optional','net','60','Giuseppe Iuculano ','i386','','2.08-1','pool/main/a/arping/arping_2.08-1_i386.deb','23368','sends IP and/or ARP pings (to the MAC address)','http://www.habets.pp.se/synscan/programs.php?prog=arping'),(820,'arpon','optional','net','340','Giuseppe Iuculano ','i386','','1.90-1','pool/main/a/arpon/arpon_1.90-1_i386.deb','255652','versatile anti ARP poisoning daemon','http://arpon.sourceforge.net'),(821,'arptables','optional','net','112','Jochen Friedrich ','i386','','0.0.3.3-3','pool/main/a/arptables/arptables_0.0.3.3-3_i386.deb','32302','ARP table administration','http://ebtables.sourceforge.net'),(822,'arpwatch','optional','admin','624','KELEMEN Péter ','i386','','2.1a15-1','pool/main/a/arpwatch/arpwatch_2.1a15-1_i386.deb','184644','Ethernet/FDDI station activity monitor','http://ee.lbl.gov/'),(823,'array-info','optional','admin','108','Raphael Pinson ','i386','','0.15-1','pool/main/a/array-info/array-info_0.15-1_i386.deb','18040','command line tool reporting RAID status for several RAID types',''),(824,'arrayprobe','extra','admin','40','Matt Taggart ','i386','','2.0-3','pool/main/a/arrayprobe/arrayprobe_2.0-3_i386.deb','9362','command line HP (Compaq) SmartArray status checker',''),(825,'artha','optional','utils','224','Debian Science Team ','i386','','0.9.1-1','pool/main/a/artha/artha_0.9.1-1_i386.deb','62580','A handy off-line thesaurus based on WordNet','http://artha.sourceforge.net/'),(826,'artist','optional','utils','248','Fredrik Hallenberg ','all','','1.2.6-6','pool/main/a/artist/artist_1.2.6-6_all.deb','50518','Emacs Lisp drawing package',''),(827,'arts-dbg','extra','debug','10124','Debian Qt/KDE Maintainers ','i386','arts (1.5.9-3)','1.5.9-3+b1','pool/main/a/arts/arts-dbg_1.5.9-3+b1_i386.deb','3142826','debugging symbols for arts',''),(828,'arts','optional','sound','40','Debian Qt/KDE Maintainers ','all','','1.5.9-3','pool/main/a/arts/arts_1.5.9-3_all.deb','6438','sound system from the official KDE release',''),(829,'libarts1-dev','optional','libdevel','5976','Debian Qt/KDE Maintainers ','i386','arts (1.5.9-3)','1.5.9-3+b1','pool/main/a/arts/libarts1-dev_1.5.9-3+b1_i386.deb','1141326','development files for the aRts sound system core components',''),(830,'libarts1c2a','optional','libs','4116','Debian Qt/KDE Maintainers ','i386','arts (1.5.9-3)','1.5.9-3+b1','pool/main/a/arts/libarts1c2a_1.5.9-3+b1_i386.deb','1088354','aRts sound system core components',''),(831,'libartsc0-dev','optional','libdevel','120','Debian Qt/KDE Maintainers ','i386','arts (1.5.9-3)','1.5.9-3+b1','pool/main/a/arts/libartsc0-dev_1.5.9-3+b1_i386.deb','21766','development files for the aRts sound system C support library',''),(832,'libartsc0','optional','libs','72','Debian Qt/KDE Maintainers ','i386','arts (1.5.9-3)','1.5.9-3+b1','pool/main/a/arts/libartsc0_1.5.9-3+b1_i386.deb','15826','aRts sound system C support library',''),(833,'as31','optional','devel','100','Bdale Garbee ','i386','','2.3.1-2','pool/main/a/as31/as31_2.3.1-2_i386.deb','24556','Intel 8031/8051 assembler',''),(834,'asc-music','optional','games','10380','Debian Games Team ','all','','1.3-1','pool/main/a/asc-music/asc-music_1.3-1_all.deb','10396276','music pack for ASC',''),(835,'asc-data','optional','games','14980','Debian Games Team ','all','asc','2.1.0.0-2','pool/main/a/asc/asc-data_2.1.0.0-2_all.deb','14349590','data files for the Advanced Strategic Command game','http://www.asc-hq.org'),(836,'asc','optional','games','8208','Debian Games Team ','i386','asc (2.1.0.0-2)','2.1.0.0-2+b1','pool/main/a/asc/asc_2.1.0.0-2+b1_i386.deb','3371690','turn-based strategy game','http://www.asc-hq.org'),(837,'ascd','optional','sound','461','Fredrik Hallenberg ','i386','','0.13.2-5','pool/main/a/ascd/ascd_0.13.2-5_i386.deb','188170','CD player and mixer',''),(838,'ascdc','optional','sound','56','Fredrik Hallenberg ','i386','','0.3-14','pool/main/a/ascdc/ascdc_0.3-14_i386.deb','20208','AfterStep CD changer',''),(839,'ascii','optional','utils','72','Florian Ernst ','i386','','3.8-4','pool/main/a/ascii/ascii_3.8-4_i386.deb','16064','interactive ASCII name and synonym chart','http://www.catb.org/~esr/ascii/'),(840,'ascii2binary','optional','misc','92','Mohammed Sameer ','i386','','2.13-1','pool/main/a/ascii2binary/ascii2binary_2.13-1_i386.deb','19616','Convert between ASCII, hexadecimal and binary representations',''),(841,'asciidoc','optional','text','4568','Fredrik Steen ','all','','8.5.1-1','pool/main/a/asciidoc/asciidoc_8.5.1-1_all.deb','1610058','Highly configurable text format for writing documentation',''),(842,'asciijump','optional','games','356','Mario Iseli ','i386','','0.0.6-4','pool/main/a/asciijump/asciijump_0.0.6-4_i386.deb','27576','Small and funny ASCII-art game about ski jumping',''),(843,'asclock-themes','optional','x11','2304','Helge Kreutzmann ','all','asclock','2.0.12-14','pool/main/a/asclock/asclock-themes_2.0.12-14_all.deb','248338','Theme files for ASclock, a clock applet',''),(844,'asclock','optional','x11','136','Helge Kreutzmann ','i386','','2.0.12-14','pool/main/a/asclock/asclock_2.0.12-14_i386.deb','29692','A clock designed with the NeXTStep look',''),(845,'libasedrive-serial','optional','libs','108','Ludovic Rousseau ','i386','asedriveiiie','3.5-3','pool/main/a/asedriveiiie/libasedrive-serial_3.5-3_i386.deb','29088','PC/SC driver for the Athena ASEDrive IIIe serial smart card reader','http://www.athena-scs.com/'),(846,'libasedrive-usb','optional','libs','112','Ludovic Rousseau ','i386','asedriveiiie','3.5-3','pool/main/a/asedriveiiie/libasedrive-usb_3.5-3_i386.deb','27594','PC/SC driver for the Athena ASEDrive IIIe USB smart card reader','http://www.athena-scs.com/'),(847,'libasio-dev','optional','libdevel','1984','Simon Richter ','all','asio','1.4.1-3','pool/main/a/asio/libasio-dev_1.4.1-3_all.deb','222968','cross-platform C++ library for network programming',''),(848,'libasio-doc','optional','doc','15476','Simon Richter ','all','asio','1.4.1-3','pool/main/a/asio/libasio-doc_1.4.1-3_all.deb','909876','cross-platform C++ library for network programming',''),(849,'asis-programs','optional','devel','1968','Ludovic Brenta ','i386','asis','2007-5','pool/main/a/asis/asis-programs_2007-5_i386.deb','770774','Ada Semantic Interface Specification (ASIS) example programs',''),(850,'libasis-dev','optional','libdevel','14296','Ludovic Brenta ','i386','asis','2007-5','pool/main/a/asis/libasis-dev_2007-5_i386.deb','3988118','Ada Semantic Interface Specification (ASIS) headers and libraries',''),(851,'libasis2007.1-dbg','extra','debug','2908','Ludovic Brenta ','i386','asis','2007-5','pool/main/a/asis/libasis2007.1-dbg_2007-5_i386.deb','1146748','Ada Semantic Interface Specification (ASIS) runtime library - debugging symbols',''),(852,'libasis2007.1','optional','libs','1752','Ludovic Brenta ','i386','asis','2007-5','pool/main/a/asis/libasis2007.1_2007-5_i386.deb','633676','Ada Semantic Interface Specification (ASIS) runtime library',''),(853,'libasm-java-doc','optional','doc','3660','Debian Java Maintainers ','all','asm','1.5.3-6','pool/main/a/asm/libasm-java-doc_1.5.3-6_all.deb','267530','Documentation for ASM, the Java(TM) bytecode manipulation framework','http://asm.objectweb.org/'),(854,'libasm-java','optional','java','224','Debian Java Maintainers ','all','asm','1.5.3-6','pool/main/a/asm/libasm-java_1.5.3-6_all.deb','159448','Java bytecode manipulation framework','http://asm.objectweb.org/'),(855,'libasm2-java-doc','optional','doc','4360','Debian Java Maintainers ','all','asm2','2.2.3-4','pool/main/a/asm2/libasm2-java-doc_2.2.3-4_all.deb','343426','Documentation for ASM, the Java(TM) bytecode manipulation framework','http://asm.objectweb.org/'),(856,'libasm2-java','optional','java','388','Debian Java Maintainers ','all','asm2','2.2.3-4','pool/main/a/asm2/libasm2-java_2.2.3-4_all.deb','163256','Java bytecode manipulation framework','http://asm.objectweb.org/'),(857,'libasm3-java-doc','optional','doc','6948','Debian Java Maintainers ','all','asm3','3.2-2','pool/main/a/asm3/libasm3-java-doc_3.2-2_all.deb','610038','Documentation for ASM, the Java(TM) bytecode manipulation framework','http://asm.objectweb.org/'),(858,'libasm3-java','optional','java','408','Debian Java Maintainers ','all','asm3','3.2-2','pool/main/a/asm3/libasm3-java_3.2-2_all.deb','195756','Java bytecode manipulation framework','http://asm.objectweb.org/'),(859,'asmail','optional','mail','622','Fredrik Hallenberg ','i386','','2.1-3','pool/main/a/asmail/asmail_2.1-3_i386.deb','219720','AfterStep mail monitor',''),(860,'asmix','optional','x11','88','Varun Hiremath ','i386','','1.5-4','pool/main/a/asmix/asmix_1.5-4_i386.deb','17100','display a volume knob','http://www.tigr.net/afterstep/view.php?applet=asmix/data'),(861,'asmixer','optional','sound','32','Fredrik Hallenberg ','i386','','0.5-14','pool/main/a/asmixer/asmixer_0.5-14_i386.deb','11974','AfterStep audio mixer',''),(862,'asmon','optional','x11','96','Eric Evans ','i386','','0.71-4','pool/main/a/asmon/asmon_0.71-4_i386.deb','16212','system resource monitor dockapp for Afterstep and WindowMaker','http://rio.vg/asmon/'),(863,'asn1-mode','optional','editors','448','W. Martin Borgert ','all','','2.7-6','pool/main/a/asn1-mode/asn1-mode_2.7-6_all.deb','94148','Emacs mode for editing ASN.1 specification files','http://asn1.elibel.tm.fr/en/tools/emacs/'),(864,'asn1c','optional','devel','1372','W. Martin Borgert ','i386','','0.9.21.dfsg-4','pool/main/a/asn1c/asn1c_0.9.21.dfsg-4_i386.deb','471722','ASN.1 compiler for C','http://asn1c.sourceforge.net/'),(865,'asp','extra','net','100','Roland Stigge ','i386','','1.8-6','pool/main/a/asp/asp_1.8-6_i386.deb','18096','Discovers present ip-address of dynamically connected hosts',''),(866,'aspectc++','optional','devel','1940','Reinhard Tartler ','i386','','1.0pre4~svn.20090918-1','pool/main/a/aspectc++/aspectc++_1.0pre4~svn.20090918-1_i386.deb','655562','aspect-oriented programming extension for C++','http://www.aspectc.org'),(867,'libpuma-dev','optional','libdevel','11736','Reinhard Tartler ','i386','aspectc++','1.0pre4~svn.20090918-1','pool/main/a/aspectc++/libpuma-dev_1.0pre4~svn.20090918-1_i386.deb','1423600','C/C++/AspectC++ Scanner and Parsers, development packages','http://www.aspectc.org'),(868,'libpuma-doc','optional','doc','19024','Reinhard Tartler ','all','aspectc++','1.0pre4~svn.20090918-1','pool/main/a/aspectc++/libpuma-doc_1.0pre4~svn.20090918-1_all.deb','2014940','documentation for the PUMA Scanner and Parsers','http://www.aspectc.org'),(869,'aspectj-doc','optional','doc','4324','Debian Java maintainers ','all','aspectj','1.6.6+dfsg-1','pool/main/a/aspectj/aspectj-doc_1.6.6+dfsg-1_all.deb','648950','aspect-oriented extension for Java - documentation','http://www.eclipse.org/aspectj'),(870,'aspectj','optional','java','11324','Debian Java maintainers ','all','','1.6.6+dfsg-1','pool/main/a/aspectj/aspectj_1.6.6+dfsg-1_all.deb','10754940','A seamless aspect-oriented extension for Java','http://www.eclipse.org/aspectj'),(871,'libaspectwerkz2-java','optional','java','752','Debian Java Maintainers ','all','aspectwerkz2','2.0.dfsg.2-1','pool/main/a/aspectwerkz2/libaspectwerkz2-java_2.0.dfsg.2-1_all.deb','645464','AOP framework for Java',''),(872,'aspell-am','optional','text','176','Lior Kaplan ','all','','0.03-1-3','pool/main/a/aspell-am/aspell-am_0.03-1-3_all.deb','46948','Amharic dictionary for aspell','ftp://ftp.gnu.org/gnu/aspell/dict/am/'),(873,'aspell-ar-large','optional','text','2332','Debian Arabic Packaging Team ','all','','1.2-0-1','pool/main/a/aspell-ar-large/aspell-ar-large_1.2-0-1_all.deb','2225022','Large Arabic dictionary for aspell',''),(874,'aspell-ar','optional','text','200','Debian Arabic Packaging Team ','all','','0.0.20060329-3','pool/main/a/aspell-ar/aspell-ar_0.0.20060329-3_all.deb','107196','Arabic dictionary for aspell',''),(875,'aspell-bn','optional','text','272','Debian-IN Team ','all','','0.60.0.01.1.1-8','pool/main/a/aspell-bn/aspell-bn_0.60.0.01.1.1-8_all.deb','149640','Bengali (bn) dictionary for GNU aspell','http://www.bengalinux.org/'),(876,'aspell-br','optional','text','180','Brian Nelson ','all','','0.50-2-6','pool/main/a/aspell-br/aspell-br_0.50-2-6_all.deb','66216','Breton dictionary for GNU Aspell',''),(877,'aspell-cs','optional','text','696','Miroslav Kure ','all','','0.0.20040614.1-2','pool/main/a/aspell-cs/aspell-cs_0.0.20040614.1-2_all.deb','560960','Czech dictionary for GNU Aspell',''),(878,'aspell-cy','optional','text','252','Brian Nelson ','all','','0.50-3-6','pool/main/a/aspell-cy/aspell-cy_0.50-3-6_all.deb','157024','Welsh dictionary for GNU Aspell',''),(879,'aspell-el','optional','text','532','Brian Nelson ','all','','0.50-3-6','pool/main/a/aspell-el/aspell-el_0.50-3-6_all.deb','434228','Greek dictionary for GNU Aspell',''),(880,'aspell-en','optional','text','548','Brian Nelson ','all','','6.0-0-5.1','pool/main/a/aspell-en/aspell-en_6.0-0-5.1_all.deb','249438','English dictionary for GNU Aspell',''),(881,'aspell-fa','optional','text','380','Debian Arabic Packaging Team ','all','','0.11-0-1','pool/main/a/aspell-fa/aspell-fa_0.11-0-1_all.deb','199008','Persian dictionary for GNU Aspell',''),(882,'aspell-fr','optional','text','644','Remi Vanicat ','all','','0.50-3-6','pool/main/a/aspell-fr/aspell-fr_0.50-3-6_all.deb','376504','French dictionary for aspell',''),(883,'aspell-ga','optional','text','428','Brian Nelson ','all','','0.50-4-4','pool/main/a/aspell-ga/aspell-ga_0.50-4-4_all.deb','322040','Irish (Gaeilge) dictionary for GNU Aspell',''),(884,'aspell-gu','optional','text','316','Debian-IN Team ','all','','0.03-0-4','pool/main/a/aspell-gu/aspell-gu_0.03-0-4_all.deb','204932','Gujarati (gu) dictionary for GNU aspell','http://sourceforge.net/projects/aspell-gu'),(885,'aspell-he','optional','text','364','Debian Hebrew Packaging Team ','all','','1.0-0-3','pool/main/a/aspell-he/aspell-he_1.0-0-3_all.deb','189670','Hebrew dictionary for aspell','ftp://ftp.gnu.org/gnu/aspell/dict/he/'),(886,'aspell-hi','optional','text','316','Debian-IN Team ','all','','0.02-2','pool/main/a/aspell-hi/aspell-hi_0.02-2_all.deb','215236','Hindi (hi) dictionary for GNU aspell','http://code.indlinux.net/projects/aspell-hindi/'),(887,'aspell-hr','optional','text','376','Vedran FuraĠ','all','','0.51-4','pool/main/a/aspell-hr/aspell-hr_0.51-4_all.deb','282274','The Croatian dictionary for GNU Aspell',''),(888,'aspell-hu','optional','text','1144','Balint Kozman ','all','','0.99.4.2-0-3','pool/main/a/aspell-hu/aspell-hu_0.99.4.2-0-3_all.deb','530214','Hungarian dictionary for aspell',''),(889,'aspell-hy','optional','text','288','Alan Baghumian ','all','','0.10.0-0-1','pool/main/a/aspell-hy/aspell-hy_0.10.0-0-1_all.deb','252028','Armenian dictionary for GNU Aspell',''),(890,'aspell-is','optional','text','500','Brian Nelson ','all','','0.51-0-4','pool/main/a/aspell-is/aspell-is_0.51-0-4_all.deb','404330','Icelandic dictionary for GNU Aspell',''),(891,'aspell-it','optional','text','2528','Giuseppe Iuculano ','all','','2.4-20070901-0-2','pool/main/a/aspell-it/aspell-it_2.4-20070901-0-2_all.deb','1053960','The Italian dictionary for GNU Aspell','http://linguistico.sourceforge.net'),(892,'aspell-ku','optional','text','116','Debian Arabic Packaging Team ','all','','0.20-0-4','pool/main/a/aspell-ku/aspell-ku_0.20-0-4_all.deb','18800','Kurdish dictionary for aspell','https://sourceforge.net/projects/myspellkurdish/'),(893,'aspell-ml','optional','text','684','Debian-IN Team ','all','','0.04-1-2','pool/main/a/aspell-ml/aspell-ml_0.04-1-2_all.deb','588132','Malayalam (ml) dictionary for GNU aspell','http://fci.wikia.com/wiki/SMC/Aspell_Malayalam'),(894,'aspell-mr','optional','text','280','Debian-IN Team ','all','','0.10-5','pool/main/a/aspell-mr/aspell-mr_0.10-5_all.deb','188512','Marathi (mr) dictionary for GNU aspell',''),(895,'aspell-or','optional','text','136','Debian-IN Team ','all','','0.03-1-1','pool/main/a/aspell-or/aspell-or_0.03-1-1_all.deb','16000','Oriya (or) dictionary for GNU aspell','http://oriya.sarovar.org/dictionary.html'),(896,'aspell-pa','optional','text','132','Debian-IN Team ','all','','0.01-1-1','pool/main/a/aspell-pa/aspell-pa_0.01-1-1_all.deb','18922','Punjabi (pa) dictionary for GNU aspell','http://sourceforge.net/projects/punlinux/'),(897,'aspell-pl','optional','text','1004','Krzysztof Krzyżaniak (eloy) ','all','','20090804-1','pool/main/a/aspell-pl/aspell-pl_20090804-1_all.deb','703062','Polish dictionary for aspell',''),(898,'aspell-pt','optional','text','36','Agustin Martin Domingo ','all','','1.5','pool/main/a/aspell-pt/aspell-pt_1.5_all.deb','3592','Portuguese dictionaries for GNU Aspell (old package)',''),(899,'aspell-ro','optional','text','592','Eddy Petrișor ','all','','3.1-1','pool/main/a/aspell-ro/aspell-ro_3.1-1_all.deb','508972','The Romanian dictionary for GNU aspell','http://ftp.gnu.org/gnu/aspell/dict/ro/'),(900,'aspell-sk','optional','text','640','Brian Nelson ','all','','0.52-0-4','pool/main/a/aspell-sk/aspell-sk_0.52-0-4_all.deb','525190','Slovak dictionary for GNU Aspell',''),(901,'aspell-sl','optional','text','652','Jure Cuhalev ','all','','0.60-3','pool/main/a/aspell-sl/aspell-sl_0.60-3_all.deb','563426','The Slovenian dictionary for GNU Aspell',''),(902,'aspell-sv','optional','text','220','Magnus Holmgren ','all','','0.51-0-1','pool/main/a/aspell-sv/aspell-sv_0.51-0-1_all.deb','110910','The Swedish dictionary for GNU aspell',''),(903,'aspell-ta','optional','text','160','Debian-IN Team ','all','','0.01-4','pool/main/a/aspell-ta/aspell-ta_0.01-4_all.deb','48824','Tamil (ta) dictionary for GNU aspell','http://developer.thamizha.com/spellchecker'),(904,'aspell-te','optional','text','516','Debian-IN Team ','all','','0.01-2-1','pool/main/a/aspell-te/aspell-te_0.01-2-1_all.deb','407114','Telugu (te) dictionary for GNU aspell','http://www.swecha.org/wiki/Wordlist_and_Dictionaries'),(905,'aspell-tl','optional','text','140','Agustin Martin Domingo ','all','','0.4-0-5','pool/main/a/aspell-tl/aspell-tl_0.4-0-5_all.deb','48494','The Tagalog dictionary for GNU Aspell','http://code.google.com/p/tagalog-wordlist/'),(906,'myspell-tl','optional','text','260','Agustin Martin Domingo ','all','aspell-tl','0.4-0-5','pool/main/a/aspell-tl/myspell-tl_0.4-0-5_all.deb','61134','The Tagalog dictionary for myspell/hunspell','http://code.google.com/p/tagalog-wordlist/'),(907,'aspell-uz','optional','text','248','Mashrab Kuvatov ','all','','0.6.0-1','pool/main/a/aspell-uz/aspell-uz_0.6.0-1_all.deb','119626','The Uzbek dictionary for GNU Aspell',''),(908,'aspell-doc','optional','doc','1096','Brian Nelson ','all','aspell','0.60.6-2','pool/main/a/aspell/aspell-doc_0.60.6-2_all.deb','304546','Documentation for GNU Aspell spell-checker','http://aspell.net/'),(909,'aspell','optional','text','1156','Brian Nelson ','i386','','0.60.6-2','pool/main/a/aspell/aspell_0.60.6-2_i386.deb','289892','GNU Aspell spell-checker','http://aspell.net/'),(910,'libaspell-dev','optional','libdevel','124','Brian Nelson ','i386','aspell','0.60.6-2','pool/main/a/aspell/libaspell-dev_0.60.6-2_i386.deb','50066','Development files for applications with GNU Aspell support','http://aspell.net/'),(911,'libaspell15','optional','libs','2356','Brian Nelson ','i386','aspell','0.60.6-2','pool/main/a/aspell/libaspell15_0.60.6-2_i386.deb','607500','GNU Aspell spell-checker runtime library','http://aspell.net/'),(912,'libpspell-dev','optional','libdevel','128','Brian Nelson ','i386','aspell','0.60.6-2','pool/main/a/aspell/libpspell-dev_0.60.6-2_i386.deb','46544','Development files for applications with pspell support','http://aspell.net/'),(913,'aspell-pt-pt','optional','text','268','Agustin Martin Domingo ','all','aspell6.pt','20090309.0-2','pool/main/a/aspell6.pt/aspell-pt-pt_20090309.0-2_all.deb','118728','European Portuguese dictionary for GNU Aspell','http://natura.di.uminho.pt/wiki/index.cgi?Aspell'),(914,'asql','optional','admin','88','Steve Kemp ','all','','1.4-1','pool/main/a/asql/asql_1.4-1_all.deb','16550','Run SQL queries against apache logs','http://www.steve.org.uk/Software/asql/'),(915,'asr-manpages','optional','doc','120','Pawel Wiecek ','all','','1.3-6','pool/main/a/asr-manpages/asr-manpages_1.3-6_all.deb','21866','alt.sysadmin.recovery manual pages',''),(916,'assogiate','optional','utils','560','Vincent Legout ','i386','','0.2.1-1','pool/main/a/assogiate/assogiate_0.2.1-1_i386.deb','202710','editor of the MIME file types database','http://www.kdau.com/projects/assogiate/'),(917,'asterisk-chan-capi','optional','comm','332','Debian VoIP Team ','i386','','1.1.4-1','pool/main/a/asterisk-chan-capi/asterisk-chan-capi_1.1.4-1_i386.deb','118966','Common ISDN API 2.0 implementation for Asterisk','http://www.chan-capi.org/'),(918,'asterisk-prompt-de','extra','comm','2324','Mario Joussen ','all','','2.0-1','pool/main/a/asterisk-prompt-de/asterisk-prompt-de_2.0-1_all.deb','1448930','German voice prompts for the Asterisk PBX',''),(919,'asterisk-prompt-es-co','extra','comm','1692','Diego Andrés Asenjo González ','all','','0.20070403-1','pool/main/a/asterisk-prompt-es-co/asterisk-prompt-es-co_0.20070403-1_all.deb','1002364','Colombian Spanish voice prompts for Asterisk',''),(920,'asterisk-prompt-fr-armelle','extra','comm','2220','Debian VoIP team ','all','','20070613-2','pool/main/a/asterisk-prompt-fr-armelle/asterisk-prompt-fr-armelle_20070613-2_all.deb','1505024','French voice prompts for Asterisk by Armelle Desjardins',''),(921,'asterisk-prompt-fr-proformatique','extra','comm','14956','Debian VoIP team ','all','','20070706-1.4-2','pool/main/a/asterisk-prompt-fr-proformatique/asterisk-prompt-fr-proformatique_20070706-1.4-2_all.deb','11886550','French voice prompts for Asterisk',''),(922,'asterisk-prompt-it','extra','comm','2968','Debian VoIP Team ','all','','20060510-3','pool/main/a/asterisk-prompt-it/asterisk-prompt-it_20060510-3_all.deb','1889428','Italian voice prompts for the Asterisk PBX',''),(923,'asterisk-prompt-se','extra','comm','7348','Simon Richter ','all','','1.045-1','pool/main/a/asterisk-prompt-se/asterisk-prompt-se_1.045-1_all.deb','4195926','Swedish voice prompts for Asterisk',''),(924,'asterisk-sounds-extra','optional','comm','6408','Debian VoIP Team ','all','','1.4.9-1','pool/main/a/asterisk-sounds-extra/asterisk-sounds-extra_1.4.9-1_all.deb','3419310','Additional sound files for the Asterisk PBX','http://www.asterisk.org/'),(925,'asterisk-config','optional','comm','1400','Debian VoIP Team ','all','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-config_1.6.2.0~dfsg~rc1-1_all.deb','601162','Configuration files for Asterisk','http://www.asterisk.org/'),(926,'asterisk-dbg','extra','debug','63884','Debian VoIP Team ','i386','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-dbg_1.6.2.0~dfsg~rc1-1_i386.deb','21247064','Debugging symbols for Asterisk','http://www.asterisk.org/'),(927,'asterisk-dev','extra','devel','1592','Debian VoIP Team ','all','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-dev_1.6.2.0~dfsg~rc1-1_all.deb','532718','Development files for Asterisk','http://www.asterisk.org/'),(928,'asterisk-doc','extra','doc','3716','Debian VoIP Team ','all','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-doc_1.6.2.0~dfsg~rc1-1_all.deb','1619684','Source code documentation for Asterisk','http://www.asterisk.org/'),(929,'asterisk-h323','optional','comm','748','Debian VoIP Team ','i386','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-h323_1.6.2.0~dfsg~rc1-1_i386.deb','427472','H.323 protocol support for Asterisk','http://www.asterisk.org/'),(930,'asterisk-sounds-main','optional','comm','3216','Debian VoIP Team ','all','asterisk','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk-sounds-main_1.6.2.0~dfsg~rc1-1_all.deb','2042140','Core Sound files for Asterisk (English)','http://www.asterisk.org/'),(931,'asterisk','optional','comm','8880','Debian VoIP Team ','i386','','1:1.6.2.0~dfsg~rc1-1','pool/main/a/asterisk/asterisk_1.6.2.0~dfsg~rc1-1_i386.deb','3364074','Open Source Private Branch Exchange (PBX)','http://www.asterisk.org/'),(932,'astronomical-almanac','optional','science','532','James R. Van Zandt ','i386','','5.6-3','pool/main/a/astronomical-almanac/astronomical-almanac_5.6-3_i386.deb','258578','astronomical almanac - calculate planet and star positions','http://www.moshier.net/'),(933,'astyle','optional','devel','444','Margarita Manterola ','i386','','1.23-1','pool/main/a/astyle/astyle_1.23-1_i386.deb','129620','Source code indenter for C++/C/Java/C# source code','http://astyle.sourceforge.net/'),(934,'asunder','optional','sound','592','Jens Peter Secher ','i386','','1.6.2-5','pool/main/a/asunder/asunder_1.6.2-5_i386.deb','92232','graphical audio CD ripper and encoder','http://www.littlesvr.ca/asunder/'),(935,'asused','optional','utils','352','Jan Wagner ','all','','3.72-7','pool/main/a/asused/asused_3.72-7_all.deb','84176','To run a check on the usage of your registry\'s allocations','http://www.ripe.net/tools/'),(936,'aswiki','optional','web','264','TANIGUCHI Takaki ','all','','1.0.4-10','pool/main/a/aswiki/aswiki_1.0.4-10_all.deb','34028','WikiWikiWeb clone (Wiki Engine) written in Ruby','http://aswiki.sourceforge.net/'),(937,'asylum-data','optional','games','744','Debian Games Team ','all','asylum','0.3.2-1','pool/main/a/asylum/asylum-data_0.3.2-1_all.deb','318852','surreal platform shooting game - data files','http://sdl-asylum.sourceforge.net/'),(938,'asylum','optional','games','212','Debian Games Team ','i386','','0.3.2-1','pool/main/a/asylum/asylum_0.3.2-1_i386.deb','57614','surreal platform shooting game','http://sdl-asylum.sourceforge.net/'),(939,'asymptote-doc','optional','doc','6976','Hubert Chathi ','all','asymptote','1.88-2','pool/main/a/asymptote/asymptote-doc_1.88-2_all.deb','4522868','documentation and examples for asymptote','http://asymptote.sourceforge.net/'),(940,'asymptote','optional','tex','5508','Hubert Chathi ','i386','','1.88-2','pool/main/a/asymptote/asymptote_1.88-2_i386.deb','1808440','script-based vector graphics language inspired by MetaPost','http://asymptote.sourceforge.net/'),(941,'at-spi-doc','optional','doc','958','Debian GNOME Maintainers ','all','at-spi','1.28.1-2','pool/main/a/at-spi/at-spi-doc_1.28.1-2_all.deb','182410','Documentation files of at-spi for GNOME Accessibility',''),(942,'at-spi','optional','gnome','1664','Debian GNOME Maintainers ','i386','','1.28.1-2','pool/main/a/at-spi/at-spi_1.28.1-2_i386.deb','233422','Assistive Technology Service Provider Interface',''),(943,'libatspi-dbg','extra','debug','1416','Debian GNOME Maintainers ','i386','at-spi','1.28.1-2','pool/main/a/at-spi/libatspi-dbg_1.28.1-2_i386.deb','529604','at-spi libraries and debugging symbols',''),(944,'libatspi-dev','optional','libdevel','840','Debian GNOME Maintainers ','i386','at-spi','1.28.1-2','pool/main/a/at-spi/libatspi-dev_1.28.1-2_i386.deb','163060','Development files of at-spi for GNOME Accessibility',''),(945,'libatspi1.0-0','optional','libs','576','Debian GNOME Maintainers ','i386','at-spi','1.28.1-2','pool/main/a/at-spi/libatspi1.0-0_1.28.1-2_i386.deb','223150','C binding libraries of at-spi for GNOME Accessibility',''),(946,'python-pyatspi','optional','python','224','Debian GNOME Maintainers ','all','at-spi','1.28.1-2','pool/main/a/at-spi/python-pyatspi_1.28.1-2_all.deb','123786','Assistive Technology Service Provider Interface - Python bindings',''),(947,'at','standard','admin','208','Ansgar Burchardt ','i386','','3.1.11-1','pool/main/a/at/at_3.1.11-1_i386.deb','44382','Delayed job execution and batch processing',''),(948,'atanks-data','optional','games','1648','Mark Purcell ','all','atanks','3.6-1','pool/main/a/atanks/atanks-data_3.6-1_all.deb','1284390','data files for Atomic tanks','http://atanks.sourceforge.net/'),(949,'atanks','optional','games','416','Mark Purcell ','i386','','3.6-1','pool/main/a/atanks/atanks_3.6-1_i386.deb','169006','tank-battling game','http://atanks.sourceforge.net/'),(950,'aterm-ml','optional','x11','608','Debian QA Group ','i386','aterm','1.0.1-7','pool/main/a/aterm/aterm-ml_1.0.1-7_i386.deb','265372','Afterstep XVT - a VT102 emulator for the X window system','http://aterm.sf.net'),(951,'aterm','optional','x11','228','Debian QA Group ','i386','','1.0.1-7','pool/main/a/aterm/aterm_1.0.1-7_i386.deb','84760','Afterstep XVT - a VT102 emulator for the X window system','http://aterm.sf.net'),(952,'atftp','extra','net','80','Ludovic Drolez ','i386','','0.7.dfsg-8','pool/main/a/atftp/atftp_0.7.dfsg-8_i386.deb','28842','advanced TFTP client',''),(953,'atftpd','extra','net','176','Ludovic Drolez ','i386','atftp','0.7.dfsg-8','pool/main/a/atftp/atftpd_0.7.dfsg-8_i386.deb','59160','advanced TFTP server',''),(954,'athcool','extra','misc','104','Nicolas Boullis ','i386','','0.3.12-3','pool/main/a/athcool/athcool_0.3.12-3_i386.deb','16120','tool to enable powersaving mode for Athlon/Duron processors',''),(955,'atheist','optional','devel','424','Cleto Martin Angelina ','all','','0.20090921-1','pool/main/a/atheist/atheist_0.20090921-1_all.deb','158566','A general purpose command-line testing tool','http://crysol.org/es/node/1218'),(956,'atheme-services','optional','net','2908','Debian IRC Team ','i386','','3.0.4-1','pool/main/a/atheme-services/atheme-services_3.0.4-1_i386.deb','617076','modular IRC services daemon','http://www.atheme.net'),(957,'athena-jot','optional','utils','28','Francesco Paolo Lovergine ','i386','','9.0-5','pool/main/a/athena-jot/athena-jot_9.0-5_i386.deb','9876','print out increasing, decreasing, random, or redundant data, one per line',''),(958,'atitvout','optional','misc','88','Philippe Coval ','i386','','0.4-13','pool/main/a/atitvout/atitvout_0.4-13_i386.deb','20794','ATI TV Out Support Program','http://0pointer.de/lennart/projects/atitvout/'),(959,'libatk1.0-0','optional','libs','208','Debian GNOME Maintainers ','i386','atk1.0','1.28.0-1','pool/main/a/atk1.0/libatk1.0-0_1.28.0-1_i386.deb','81452','The ATK accessibility toolkit','http://www.gtk.org/'),(960,'libatk1.0-data','optional','misc','1724','Debian GNOME Maintainers ','all','atk1.0','1.28.0-1','pool/main/a/atk1.0/libatk1.0-data_1.28.0-1_all.deb','208678','Common files for the ATK accessibility toolkit','http://www.gtk.org/'),(961,'libatk1.0-dbg','extra','debug','368','Debian GNOME Maintainers ','i386','atk1.0','1.28.0-1','pool/main/a/atk1.0/libatk1.0-dbg_1.28.0-1_i386.deb','142430','The ATK libraries and debugging symbols','http://www.gtk.org/'),(962,'libatk1.0-dev','optional','libdevel','480','Debian GNOME Maintainers ','i386','atk1.0','1.28.0-1','pool/main/a/atk1.0/libatk1.0-dev_1.28.0-1_i386.deb','117526','Development files for the ATK accessibility toolkit','http://www.gtk.org/'),(963,'libatk1.0-doc','optional','doc','1008','Debian GNOME Maintainers ','all','atk1.0','1.28.0-1','pool/main/a/atk1.0/libatk1.0-doc_1.28.0-1_all.deb','142006','Documentation files for the ATK toolkit','http://www.gtk.org/'),(964,'libatlas-cpp-0.6-1-dbg','extra','debug','3324','Michael Koch ','i386','atlas-cpp','0.6.1-4','pool/main/a/atlas-cpp/libatlas-cpp-0.6-1-dbg_0.6.1-4_i386.deb','1093064','The protocol library of the World Forge project - debugging libs','http://www.worldforge.org/'),(965,'libatlas-cpp-0.6-1','optional','libs','600','Michael Koch ','i386','atlas-cpp','0.6.1-4','pool/main/a/atlas-cpp/libatlas-cpp-0.6-1_0.6.1-4_i386.deb','198094','The protocol library of the World Forge project - runtime libs','http://www.worldforge.org/'),(966,'libatlas-cpp-0.6-dev','optional','libdevel','392','Michael Koch ','i386','atlas-cpp','0.6.1-4','pool/main/a/atlas-cpp/libatlas-cpp-0.6-dev_0.6.1-4_i386.deb','53676','The protocol library of the World Forge project - header files','http://www.worldforge.org/'),(967,'libatlas-cpp-doc','optional','doc','9764','Michael Koch ','all','atlas-cpp','0.6.1-4','pool/main/a/atlas-cpp/libatlas-cpp-doc_0.6.1-4_all.deb','1363782','The protocol library of the World Forge project - documentation','http://www.worldforge.org/'),(968,'libatlas-3dnow-dev','optional','devel','28164','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas-3dnow-dev_3.6.0-24_i386.deb','6224982','Automatically Tuned Linear Algebra Software,3dnow static','http://math-atlas.sourceforge.net/'),(969,'libatlas-base-dev','optional','devel','22200','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas-base-dev_3.6.0-24_i386.deb','5754786','Automatically Tuned Linear Algebra Software,generic static','http://math-atlas.sourceforge.net/'),(970,'libatlas-doc','optional','doc','756','Debian Scientific Computing Team ','all','atlas','3.6.0-24','pool/main/a/atlas/libatlas-doc_3.6.0-24_all.deb','683292','Automatically Tuned Linear Algebra Software,documentation','http://math-atlas.sourceforge.net/'),(971,'libatlas-headers','optional','devel','112','Debian Scientific Computing Team ','all','atlas','3.6.0-24','pool/main/a/atlas/libatlas-headers_3.6.0-24_all.deb','21590','Automatically Tuned Linear Algebra Software,C header files','http://math-atlas.sourceforge.net/'),(972,'libatlas-sse-dev','optional','devel','23076','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas-sse-dev_3.6.0-24_i386.deb','5849124','Automatically Tuned Linear Algebra Software,SSE1 static','http://math-atlas.sourceforge.net/'),(973,'libatlas-sse2-dev','optional','devel','27628','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas-sse2-dev_3.6.0-24_i386.deb','6509440','Automatically Tuned Linear Algebra Software,SSE2 static','http://math-atlas.sourceforge.net/'),(974,'libatlas-test','extra','devel','2048','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas-test_3.6.0-24_i386.deb','572188','Automatically Tuned Linear Algebra Software,test programs','http://math-atlas.sourceforge.net/'),(975,'libatlas3gf-3dnow','optional','libs','18804','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas3gf-3dnow_3.6.0-24_i386.deb','5487668','Automatically Tuned Linear Algebra Software,3dnow shared','http://math-atlas.sourceforge.net/'),(976,'libatlas3gf-base','optional','libs','14084','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas3gf-base_3.6.0-24_i386.deb','5159058','Automatically Tuned Linear Algebra Software,generic shared','http://math-atlas.sourceforge.net/'),(977,'libatlas3gf-sse2','optional','libs','18704','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas3gf-sse2_3.6.0-24_i386.deb','5712514','Automatically Tuned Linear Algebra Software,SSE2 shared','http://math-atlas.sourceforge.net/'),(978,'libatlas3gf-sse','optional','libs','14496','Debian Scientific Computing Team ','i386','atlas','3.6.0-24','pool/main/a/atlas/libatlas3gf-sse_3.6.0-24_i386.deb','5098246','Automatically Tuned Linear Algebra Software,SSE1 shared','http://math-atlas.sourceforge.net/'),(979,'atlc-examples','optional','electronics','130224','Bdale Garbee ','all','atlc','4.6.0-1','pool/main/a/atlc/atlc-examples_4.6.0-1_all.deb','1059782','Examples for Arbitrary Transmission Line Calculator',''),(980,'atlc','optional','electronics','2548','Bdale Garbee ','i386','','4.6.0-1','pool/main/a/atlc/atlc_4.6.0-1_i386.deb','1253480','Arbitrary Transmission Line Calculator',''),(981,'atom4','optional','games','336','Hwei Sheng Teoh ','i386','','4.1-4','pool/main/a/atom4/atom4_4.1-4_i386.deb','48456','An original two-player color puzzle game',''),(982,'atomicparsley','optional','video','288','Jonas Smedegaard ','i386','','0.9.2~svn110-2','pool/main/a/atomicparsley/atomicparsley_0.9.2~svn110-2_i386.deb','110918','read, parse and set metadata of MPEG-4 and 3gp files','http://atomicparsley.sourceforge.net/'),(983,'atomix-data','optional','games','596','Guilherme de S. Pastore ','all','atomix','2.14.0-1','pool/main/a/atomix/atomix-data_2.14.0-1_all.deb','109554','architecture independent files for atomix',''),(984,'atomix','optional','games','120','Guilherme de S. Pastore ','i386','','2.14.0-1','pool/main/a/atomix/atomix_2.14.0-1_i386.deb','51042','puzzle game for building molecules out of isolated atoms',''),(985,'atool','optional','utils','196','Francois Marier ','all','','0.37.0-2','pool/main/a/atool/atool_0.37.0-2_all.deb','44266','A tool for managing file archives of various types','http://www.nongnu.org/atool/'),(986,'atop','optional','admin','260','Edelhard Becker ','i386','','1.23-1','pool/main/a/atop/atop_1.23-1_i386.deb','78122','Monitor for system resources and process activity','http://www.atconsultancy.nl/atop/home.html'),(987,'kernel-patch-atopacct','optional','kernel','116','Edelhard Becker ','all','atoppatch','1:1.23-1','pool/main/a/atoppatch/kernel-patch-atopacct_1.23-1_all.deb','18206','save additional statistical counters for atop in the record','http://www.atconsultancy.nl/atop/kernpatch.html'),(988,'kernel-patch-atopcnt','optional','kernel','132','Edelhard Becker ','all','atoppatch','1:1.23-1','pool/main/a/atoppatch/kernel-patch-atopcnt_1.23-1_all.deb','22784','additional statistical counters for atop','http://www.atconsultancy.nl/atop/kernpatch.html'),(989,'atp','optional','text','96','Hamish Moffatt ','i386','','1.2-11','pool/main/a/atp/atp_1.2-11_i386.deb','25674','text to PostScript converter with some C syntax highlighting',''),(990,'atris','optional','games','960','Pascal Giard ','i386','','1.0.7.dfsg.1-7.1','pool/main/a/atris/atris_1.0.7.dfsg.1-7.1_i386.deb','319278','tetris-like game with a twist for Unix',''),(991,'atsar','optional','admin','108','Michael Stone ','i386','','1.7-2','pool/main/a/atsar/atsar_1.7-2_i386.deb','40964','system activity reporter',''),(992,'attal-themes-medieval','optional','games','39224','Debian Games Team ','all','attal-themes','1.0~rc2.dfsg1-1','pool/main/a/attal-themes/attal-themes-medieval_1.0~rc2.dfsg1-1_all.deb','34768600','medieval theme for attal','http://www.attal-thegame.org/'),(993,'attal','optional','games','3332','Debian Games Team ','i386','','1.0~rc2-2','pool/main/a/attal/attal_1.0~rc2-2_i386.deb','1113180','turn-based strategy game','http://www.attal-thegame.org/'),(994,'attr','optional','utils','248','Nathan Scott ','i386','','1:2.4.44-1','pool/main/a/attr/attr_2.4.44-1_i386.deb','45072','Utilities for manipulating filesystem extended attributes','http://savannah.nongnu.org/projects/attr/'),(995,'libattr1-dev','extra','libdevel','140','Nathan Scott ','i386','attr','1:2.4.44-1','pool/main/a/attr/libattr1-dev_2.4.44-1_i386.deb','34454','Extended attribute static libraries and headers','http://savannah.nongnu.org/projects/attr/'),(996,'libattr1','required','libs','64','Nathan Scott ','i386','attr','1:2.4.44-1','pool/main/a/attr/libattr1_2.4.44-1_i386.deb','11846','Extended attribute shared library','http://savannah.nongnu.org/projects/attr/'),(997,'aub','optional','news','196','Debian QA Group ','all','','2.2.2','pool/main/a/aub/aub_2.2.2_all.deb','60308','Assembles binary files from USENET',''),(998,'aubio-tools','optional','sound','148','Paul Brossier ','i386','aubio','0.3.2-4','pool/main/a/aubio/aubio-tools_0.3.2-4_i386.deb','30600','a library for audio segmentation -- utilities',''),(999,'libaubio-dev','optional','libdevel','364','Paul Brossier ','i386','aubio','0.3.2-4','pool/main/a/aubio/libaubio-dev_0.3.2-4_i386.deb','68364','a library for audio segmentation',''),(1000,'libaubio-doc','optional','doc','1828','Paul Brossier ','all','aubio','0.3.2-4','pool/main/a/aubio/libaubio-doc_0.3.2-4_all.deb','286504','a library for audio segmentation -- documentation','');
+/*!40000 ALTER TABLE `packages_plain` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `packages_small`
+--
+
+DROP TABLE IF EXISTS `packages_small`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `packages_small` (
+ `Id` int(11) NOT NULL AUTO_INCREMENT,
+ `Package` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Priority` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Section` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Installed-Size` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Maintainer` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Architecture` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Source` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Version` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Filename` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Size` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Description` varchar(250) COLLATE utf8_bin NOT NULL,
+ `Homepage` varchar(250) COLLATE utf8_bin NOT NULL,
+ PRIMARY KEY (`Id`)
+) ENGINE=MyISAM AUTO_INCREMENT=26611 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `packages_small`
+--
+
+LOCK TABLES `packages_small` WRITE;
+/*!40000 ALTER TABLE `packages_small` DISABLE KEYS */;
+INSERT INTO `packages_small` VALUES (1,'acx100-source','extra','contrib/kernel','296','Stefano Canepa ','all','acx100','20080210-1.1','pool/contrib/a/acx100/acx100-source_20080210-1.1_all.deb','229468','ACX100/ACX111 wireless network drivers source','http://acx100.sourceforge.net/'),(2,'alien-arena-browser','extra','contrib/games','160','Debian Games Team ','all','alien-arena','7.0-1','pool/contrib/a/alien-arena/alien-arena-browser_7.0-1_all.deb','37128','stand alone server browser for Alien Arena','http://red.planetarena.org'),(3,'alien-arena-server','extra','contrib/games','260','Debian Games Team ','i386','alien-arena','7.0-1','pool/contrib/a/alien-arena/alien-arena-server_7.0-1_i386.deb','130272','Dedicated server for Alien Arena','http://red.planetarena.org'),(4,'alien-arena','extra','contrib/games','1204','Debian Games Team ','i386','','7.0-1','pool/contrib/a/alien-arena/alien-arena_7.0-1_i386.deb','579978','Standalone 3D first person online deathmatch shooter','http://red.planetarena.org'),(5,'alsa-firmware-loaders','extra','contrib/sound','228','Debian ALSA Maintainers ','i386','alsa-tools','1.0.21-1','pool/contrib/a/alsa-tools/alsa-firmware-loaders_1.0.21-1_i386.deb','32758','ALSA software loaders for specific hardware','http://www.alsa-project.org/'),(6,'amoeba','optional','contrib/x11','276','Steinar H. Gunderson ','i386','','1.1-20','pool/contrib/a/amoeba/amoeba_1.1-20_i386.deb','94052','fast-paced, polished OpenGL demonstration by Excess',''),(7,'atari800','optional','contrib/otherosfs','1848','Antonin Kral ','i386','','2.1.0-1','pool/contrib/a/atari800/atari800_2.1.0-1_i386.deb','763238','Atari emulator for X/curses/SDL',''),(8,'avifile-divx-plugin','optional','contrib/video','28','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-divx-plugin_0.7.48~20090503.ds-1_i386.deb','950','Divx4Linux video de/encoding plugin for libavifile','http://avifile.sf.net'),(9,'avifile-win32-plugin','optional','contrib/video','268','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-win32-plugin_0.7.48~20090503.ds-1_i386.deb','97404','Win32 audio/video plugin for libavifile','http://avifile.sf.net'),(10,'avifile-xvid-plugin','optional','contrib/video','28','Debian QA Group ','i386','avifile','1:0.7.48~20090503.ds-1','pool/contrib/a/avifile/avifile-xvid-plugin_0.7.48~20090503.ds-1_i386.deb','928','XviD video encoding plugin for libavifile','http://avifile.sf.net');
+/*!40000 ALTER TABLE `packages_small` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `phones`
+--
+
+DROP TABLE IF EXISTS `phones`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `phones` (
+ `phone_id` int(11) NOT NULL AUTO_INCREMENT,
+ `phone` varchar(255) NOT NULL,
+ `phone_developer` int(11) NOT NULL,
+ `phone_type` varchar(255) NOT NULL,
+ PRIMARY KEY (`phone_id`)
+) ENGINE=MyISAM AUTO_INCREMENT=47 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `phones`
+--
+
+LOCK TABLES `phones` WRITE;
+/*!40000 ALTER TABLE `phones` DISABLE KEYS */;
+INSERT INTO `phones` VALUES (1,'123-45-01',1,'working'),(2,'123-45-02',2,'home'),(6,'123-45-06',6,'fax'),(7,'123-45-07',7,'working'),(8,'123-45-08',8,'home'),(9,'123-45-09',9,'fax'),(10,'123-45-10',10,'working'),(11,'123-45-11',11,'home'),(12,'123-45-12',12,'fax'),(13,'123-45-13',13,'working'),(14,'123-45-14',14,'home'),(15,'123-45-15',15,'fax'),(16,'123-45-16',16,'working'),(17,'123-45-17',17,'home'),(18,'123-45-18',18,'fax'),(19,'123-45-19',19,'working'),(20,'123-45-20',20,'home'),(21,'123-45-21',21,'fax'),(22,'123-45-22',22,'working'),(23,'123-45-23',23,'home'),(24,'123-45-24',24,'fax'),(25,'123-45-25',25,'working'),(26,'123-45-26',26,'home'),(27,'123-45-27',27,'fax'),(28,'123-45-28',28,'working'),(29,'123-45-29',29,'home'),(30,'123-45-30',30,'fax'),(31,'123-45-31',1,'working'),(32,'123-45-32',2,'home'),(33,'123-45-33',3,'fax'),(34,'123-45-34',4,'working'),(35,'123-45-35asdf',5,'home'),(36,'123-45-36',6,'fax'),(37,'123-45-37',7,'working'),(38,'123-45-38',8,'home'),(39,'123-45-39',9,'fax'),(40,'123-45-40',10,'working'),(41,'123-45-41',11,'home'),(42,'123-45-42',12,'fax'),(43,'123-45-43',13,'working'),(44,'123-45-44',14,'home'),(45,'123-45-45',15,'fax'),(5,'123-45-05',5,'home'),(3,'123-45-03',3,'fax'),(4,'123-45-04',4,'working');
+/*!40000 ALTER TABLE `phones` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `products`
+--
+
+DROP TABLE IF EXISTS `products`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `products` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `product_name` varchar(255) NOT NULL,
+ `category` varchar(255) NOT NULL,
+ `scales` int(11) NOT NULL,
+ `colour` varchar(255) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `products`
+--
+
+LOCK TABLES `products` WRITE;
+/*!40000 ALTER TABLE `products` DISABLE KEYS */;
+INSERT INTO `products` VALUES (1,'Nokia 5230','mobile phone',250,'black'),(2,'Samsung GT-S5230','mobile phone',170,'gray'),(3,'LG KP500 Cookie','mobile phone',150,'rose'),(4,'Apple iPhone 3G (8Gb)','mobile phone',700,'black'),(5,'ASUS Eee PC 1005PE-BLK065S','notebook',450,'black'),(6,'HP Compaq 615 (VC289EA)','notebook',600,'gray'),(7,'Toshiba Satellite A505-S6960','notebook',900,'black'),(8,'ASUS Eee PC 1000H (160Gb)','notebook',400,'white'),(9,'Canon PowerShot SX120 IS','photo',250,'gray'),(10,'Sony CyberShot DSC-H20','photo',320,'white'),(11,'Nikon D3000','photo',600,'black'),(12,'Nikon D90','photo',1100,'black'),(13,'Microlab M-880','audio',65,'white'),(14,'Microlab Solo-7C','audio',200,'gray'),(15,'F&D D80','audio',210,'black'),(16,'Microlab Pro 3','audio',180,'black'),(17,'BenQ MP515','projector',630,'white'),(18,'Epson EH-TW450','projector',1400,'rose'),(19,'NEC NP215','projector',870,'black'),(20,'Epson EB- S72','projector',700,'gray'),(21,'D-Link DIR-300','network',55,'gray'),(22,'Zyxel P-660HTW2 EE','network',120,'black'),(23,'Acorp Sprinter@ADSL W422G','network',70,'black'),(24,'D-Link DIR-300/NRU','network',65,'black');
+/*!40000 ALTER TABLE `products` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `project_team`
+--
+
+DROP TABLE IF EXISTS `project_team`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `project_team` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `project_id` int(11) NOT NULL,
+ `team_id` int(11) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `project_team`
+--
+
+LOCK TABLES `project_team` WRITE;
+/*!40000 ALTER TABLE `project_team` DISABLE KEYS */;
+INSERT INTO `project_team` VALUES (1,1,1),(2,1,2),(3,2,3),(4,2,4),(5,3,5),(6,3,6),(7,4,7),(8,4,8),(9,1,9),(10,2,9),(11,3,10),(12,4,10);
+/*!40000 ALTER TABLE `project_team` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `projects`
+--
+
+DROP TABLE IF EXISTS `projects`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `projects` (
+ `project_id` int(11) NOT NULL AUTO_INCREMENT,
+ `project_name` varchar(255) NOT NULL,
+ `project_dsc` text NOT NULL,
+ PRIMARY KEY (`project_id`)
+) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `projects`
+--
+
+LOCK TABLES `projects` WRITE;
+/*!40000 ALTER TABLE `projects` DISABLE KEYS */;
+INSERT INTO `projects` VALUES (1,'Project 1','The first project for testing Treegrid multitable dhtmlxConnector'),(2,'Project 2','The second project for testing Treegrid multitable dhtmlxConnector'),(3,'Project 3','The third project for testing Treegrid multitable dhtmlxConnector'),(4,'Project 4','The fourth project for testing Treegrid multitable dhtmlxConnector');
+/*!40000 ALTER TABLE `projects` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `tasks`
+--
+
+DROP TABLE IF EXISTS `tasks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `tasks` (
+ `taskId` int(11) NOT NULL AUTO_INCREMENT,
+ `parentId` int(11) DEFAULT '0',
+ `taskName` varchar(250) DEFAULT NULL,
+ `duration` float(9,1) DEFAULT '0.0',
+ `work` float(9,1) DEFAULT '0.0',
+ `start` date DEFAULT NULL,
+ `finish` date DEFAULT NULL,
+ `complete` int(11) DEFAULT '0',
+ `predecessors` varchar(100) DEFAULT NULL,
+ `resource` varchar(100) DEFAULT NULL,
+ PRIMARY KEY (`taskId`)
+) ENGINE=InnoDB AUTO_INCREMENT=8412 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `tasks`
+--
+
+LOCK TABLES `tasks` WRITE;
+/*!40000 ALTER TABLE `tasks` DISABLE KEYS */;
+INSERT INTO `tasks` VALUES (1000,0,'dhtmlXGrid',22.0,11.0,'2007-02-14','2007-02-17',50,'','BX'),(1001,1000,'Version 1.1',21.0,1.0,'2007-02-07','2007-02-24',4,'','CW'),(1002,1001,'Task 682400',30.0,1.0,'2007-02-07','2007-02-17',3,'','CW'),(1003,1001,'Task 532497',27.0,13.0,'2007-02-09','2007-02-22',48,'','BX'),(1004,1001,'Task 581814',3.0,1.0,'2007-02-06','2007-02-25',33,'','CW'),(1005,1001,'Task 125488',30.0,12.0,'2007-02-08','2007-02-25',40,'','CW'),(1006,1001,'Task 541992',4.0,2.0,'2007-02-11','2007-02-19',50,'','CW'),(1007,1001,'Task 182020',16.0,8.0,'2007-02-11','2007-02-21',50,'','CW'),(1008,1001,'Task 812934',30.0,16.0,'2007-02-13','2007-02-20',53,'','AZ'),(1009,1001,'Task 729871',6.0,2.0,'2007-02-09','2007-02-19',33,'','CW'),(1010,1001,'Task 311306',3.0,2.0,'2007-02-06','2007-02-18',66,'','BX'),(1011,1001,'Task 463487',4.0,4.0,'2007-02-11','2007-02-18',100,'','BX'),(1101,1000,'Version 1.2',12.0,5.0,'2007-02-10','2007-02-18',41,'','AZ'),(1102,1101,'Task 228651',3.0,3.0,'2007-02-07','2007-02-23',100,'','CW'),(1103,1101,'Task 319851',7.0,1.0,'2007-02-09','2007-02-21',14,'','BX'),(1104,1101,'Task 903672',4.0,4.0,'2007-02-13','2007-02-25',100,'','CW'),(1105,1101,'Task 705810',21.0,11.0,'2007-02-13','2007-02-17',52,'','AZ'),(1106,1101,'Task 646402',19.0,10.0,'2007-02-11','2007-02-22',52,'','CW'),(1107,1101,'Task 506700',25.0,17.0,'2007-02-11','2007-02-23',68,'','AZ'),(1108,1101,'Task 929063',13.0,1.0,'2007-02-06','2007-02-18',7,'','BX'),(1109,1101,'Task 972520',5.0,3.0,'2007-02-11','2007-02-19',60,'','AZ'),(1110,1101,'Task 112765',22.0,3.0,'2007-02-09','2007-02-20',13,'','CW'),(1111,1101,'Task 242160',23.0,18.0,'2007-02-07','2007-02-21',78,'','AZ'),(1201,1000,'Version 1.3',11.0,11.0,'2007-02-05','2007-02-22',100,'','BX'),(1202,1201,'Task 513075',16.0,1.0,'2007-02-10','2007-02-24',6,'','CW'),(1203,1201,'Task 495551',12.0,7.0,'2007-02-13','2007-02-24',58,'','AZ'),(1204,1201,'Task 507107',18.0,5.0,'2007-02-06','2007-02-19',27,'','CW'),(1205,1201,'Task 315104',18.0,3.0,'2007-02-07','2007-02-23',16,'','CW'),(1206,1201,'Task 659125',27.0,21.0,'2007-02-11','2007-02-18',77,'','CW'),(1207,1201,'Task 806532',6.0,3.0,'2007-02-06','2007-02-20',50,'','BX'),(1208,1201,'Task 552463',18.0,12.0,'2007-02-12','2007-02-17',66,'','CW'),(1209,1201,'Task 442057',1.0,0.0,'2007-02-09','2007-02-19',0,'','CW'),(1210,1201,'Task 214897',11.0,4.0,'2007-02-12','2007-02-20',36,'','BX'),(1211,1201,'Task 805012',18.0,11.0,'2007-02-11','2007-02-20',61,'','CW'),(1301,1000,'Version 1.4',9.0,0.0,'2007-02-08','2007-02-21',0,'','AZ'),(1302,1301,'Task 174994',1.0,1.0,'2007-02-13','2007-02-18',100,'','BX'),(1303,1301,'Task 806559',9.0,0.0,'2007-02-14','2007-02-18',0,'','AZ'),(1304,1301,'Task 274495',7.0,6.0,'2007-02-12','2007-02-23',85,'','AZ'),(1305,1301,'Task 776719',21.0,19.0,'2007-02-11','2007-02-19',90,'','CW'),(1306,1301,'Task 261148',7.0,7.0,'2007-02-12','2007-02-24',100,'','BX'),(1307,1301,'Task 647922',7.0,3.0,'2007-02-06','2007-02-22',42,'','BX'),(1308,1301,'Task 940511',4.0,1.0,'2007-02-06','2007-02-19',25,'','CW'),(1309,1301,'Task 114610',22.0,15.0,'2007-02-12','2007-02-21',68,'','AZ'),(1310,1301,'Task 895914',13.0,11.0,'2007-02-12','2007-02-25',84,'','BX'),(1311,1301,'Task 204562',14.0,7.0,'2007-02-12','2007-02-23',50,'','BX'),(1401,1000,'Version 1.5',4.0,4.0,'2007-02-13','2007-02-20',100,'','AZ'),(1402,1401,'Task 567274',28.0,4.0,'2007-02-10','2007-02-18',14,'','CW'),(1403,1401,'Task 671712',17.0,14.0,'2007-02-09','2007-02-20',82,'','CW'),(1404,1401,'Task 718424',14.0,2.0,'2007-02-10','2007-02-19',14,'','BX'),(1405,1401,'Task 280327',17.0,8.0,'2007-02-06','2007-02-17',47,'','BX'),(1406,1401,'Task 569227',13.0,3.0,'2007-02-08','2007-02-22',23,'','CW'),(1407,1401,'Task 213595',21.0,14.0,'2007-02-14','2007-02-17',66,'','CW'),(1408,1401,'Task 814127',5.0,4.0,'2007-02-08','2007-02-19',80,'','AZ'),(1409,1401,'Task 943739',5.0,2.0,'2007-02-12','2007-02-18',40,'','BX'),(1410,1401,'Task 814236',20.0,5.0,'2007-02-11','2007-02-22',25,'','CW'),(1411,1401,'Task 720757',18.0,4.0,'2007-02-13','2007-02-20',22,'','BX'),(2000,0,'dhtmlXTreeGrid',7.0,1.0,'2007-02-11','2007-02-22',14,'','AZ'),(2001,2000,'Version 1.1',9.0,1.0,'2007-02-06','2007-02-18',11,'','AZ'),(2002,2001,'Task 607476',17.0,16.0,'2007-02-11','2007-02-22',94,'','CW'),(2003,2001,'Task 279188',18.0,11.0,'2007-02-07','2007-02-24',61,'','BX'),(2004,2001,'Task 688313',21.0,13.0,'2007-02-14','2007-02-25',61,'','CW'),(2005,2001,'Task 379991',14.0,6.0,'2007-02-14','2007-02-22',42,'','CW'),(2006,2001,'Task 649359',15.0,4.0,'2007-02-06','2007-02-17',26,'','AZ'),(2007,2001,'Task 430446',18.0,3.0,'2007-02-10','2007-02-18',16,'','CW'),(2008,2001,'Task 962836',3.0,0.0,'2007-02-11','2007-02-24',0,'','BX'),(2009,2001,'Task 680555',30.0,15.0,'2007-02-12','2007-02-16',50,'','BX'),(2010,2001,'Task 767632',7.0,3.0,'2007-02-13','2007-02-18',42,'','AZ'),(2011,2001,'Task 935872',30.0,23.0,'2007-02-08','2007-02-24',76,'','CW'),(2101,2000,'Version 1.2',29.0,12.0,'2007-02-10','2007-02-16',41,'','AZ'),(2102,2101,'Task 298041',15.0,8.0,'2007-02-11','2007-02-25',53,'','CW'),(2103,2101,'Task 389675',16.0,16.0,'2007-02-05','2007-02-18',100,'','BX'),(2104,2101,'Task 970458',7.0,7.0,'2007-02-11','2007-02-22',100,'','BX'),(2105,2101,'Task 793863',5.0,2.0,'2007-02-13','2007-02-21',40,'','CW'),(2106,2101,'Task 585584',14.0,4.0,'2007-02-08','2007-02-21',28,'','AZ'),(2107,2101,'Task 599093',5.0,0.0,'2007-02-08','2007-02-20',0,'','CW'),(2108,2101,'Task 837863',8.0,7.0,'2007-02-14','2007-02-20',87,'','AZ'),(2109,2101,'Task 388698',8.0,8.0,'2007-02-07','2007-02-25',100,'','BX'),(2110,2101,'Task 310628',5.0,3.0,'2007-02-09','2007-02-19',60,'','BX'),(2111,2101,'Task 301567',24.0,18.0,'2007-02-09','2007-02-17',75,'','BX'),(2201,2000,'Version 1.3',5.0,4.0,'2007-02-14','2007-02-21',80,'','AZ'),(2202,2201,'Task 923828',20.0,11.0,'2007-02-06','2007-02-19',55,'','BX'),(2203,2201,'Task 398057',28.0,23.0,'2007-02-08','2007-02-20',82,'','BX'),(2204,2201,'Task 411783',16.0,12.0,'2007-02-13','2007-02-25',75,'','AZ'),(2205,2201,'Task 204589',17.0,2.0,'2007-02-11','2007-02-21',11,'','AZ'),(2206,2201,'Task 654947',23.0,4.0,'2007-02-13','2007-02-25',17,'','BX'),(2207,2201,'Task 946885',25.0,17.0,'2007-02-05','2007-02-21',68,'','BX'),(2208,2201,'Task 569986',22.0,4.0,'2007-02-10','2007-02-17',18,'','CW'),(2209,2201,'Task 430501',26.0,11.0,'2007-02-06','2007-02-24',42,'','AZ'),(2210,2201,'Task 406900',10.0,5.0,'2007-02-11','2007-02-25',50,'','BX'),(2211,2201,'Task 460991',9.0,9.0,'2007-02-08','2007-02-25',100,'','CW'),(2301,2000,'Version 1.4',30.0,12.0,'2007-02-13','2007-02-19',40,'','BX'),(2302,2301,'Task 405408',26.0,7.0,'2007-02-05','2007-02-23',26,'','BX'),(2303,2301,'Task 638102',18.0,12.0,'2007-02-13','2007-02-24',66,'','CW'),(2304,2301,'Task 231472',10.0,5.0,'2007-02-09','2007-02-16',50,'','AZ'),(2305,2301,'Task 744547',28.0,19.0,'2007-02-06','2007-02-18',67,'','BX'),(2306,2301,'Task 153021',18.0,3.0,'2007-02-06','2007-02-21',16,'','AZ'),(2307,2301,'Task 182589',1.0,1.0,'2007-02-05','2007-02-17',100,'','AZ'),(2308,2301,'Task 308946',26.0,23.0,'2007-02-14','2007-02-18',88,'','AZ'),(2309,2301,'Task 646674',25.0,24.0,'2007-02-14','2007-02-17',96,'','AZ'),(2310,2301,'Task 393690',29.0,22.0,'2007-02-12','2007-02-19',75,'','CW'),(2311,2301,'Task 720133',27.0,14.0,'2007-02-12','2007-02-17',51,'','CW'),(2401,2000,'Version 1.5',5.0,2.0,'2007-02-10','2007-02-22',40,'','AZ'),(2402,2401,'Task 863009',15.0,4.0,'2007-02-12','2007-02-18',26,'','AZ'),(2403,2401,'Task 490451',8.0,1.0,'2007-02-14','2007-02-17',12,'','AZ'),(2404,2401,'Task 320583',12.0,6.0,'2007-02-12','2007-02-18',50,'','BX'),(2405,2401,'Task 509657',20.0,9.0,'2007-02-06','2007-02-18',45,'','BX'),(2406,2401,'Task 852810',6.0,3.0,'2007-02-14','2007-02-23',50,'','BX'),(2407,2401,'Task 117404',26.0,17.0,'2007-02-07','2007-02-25',65,'','CW'),(2408,2401,'Task 709689',16.0,0.0,'2007-02-09','2007-02-17',0,'','BX'),(2409,2401,'Task 897026',8.0,0.0,'2007-02-12','2007-02-19',0,'','BX'),(2410,2401,'Task 363443',17.0,17.0,'2007-02-06','2007-02-24',100,'','CW'),(2411,2401,'Task 431857',22.0,10.0,'2007-02-11','2007-02-24',45,'','AZ'),(3000,0,'dhtmlXTree',29.0,24.0,'2007-02-05','2007-02-18',82,'','AZ'),(3001,3000,'Version 1.1',21.0,15.0,'2007-02-08','2007-02-22',71,'','AZ'),(3002,3001,'Task 134548',10.0,2.0,'2007-02-08','2007-02-18',20,'','CW'),(3003,3001,'Task 145236',23.0,10.0,'2007-02-06','2007-02-23',43,'','AZ'),(3004,3001,'Task 848198',5.0,4.0,'2007-02-14','2007-02-17',80,'','CW'),(3005,3001,'Task 260796',21.0,12.0,'2007-02-14','2007-02-16',57,'','AZ'),(3006,3001,'Task 705946',8.0,6.0,'2007-02-05','2007-02-19',75,'','BX'),(3007,3001,'Task 145453',21.0,12.0,'2007-02-11','2007-02-21',57,'','AZ'),(3008,3001,'Task 402235',2.0,1.0,'2007-02-05','2007-02-22',50,'','CW'),(3009,3001,'Task 271430',27.0,14.0,'2007-02-06','2007-02-24',51,'','AZ'),(3010,3001,'Task 187065',14.0,8.0,'2007-02-13','2007-02-21',57,'','AZ'),(3011,3001,'Task 666503',29.0,26.0,'2007-02-07','2007-02-20',89,'','AZ'),(3101,3000,'Version 1.2',25.0,14.0,'2007-02-06','2007-02-24',56,'','BX'),(3102,3101,'Task 651719',22.0,0.0,'2007-02-07','2007-02-17',0,'','CW'),(3103,3101,'Task 247260',28.0,3.0,'2007-02-06','2007-02-19',10,'','AZ'),(3104,3101,'Task 745144',16.0,12.0,'2007-02-09','2007-02-22',75,'','CW'),(3105,3101,'Task 259955',2.0,2.0,'2007-02-07','2007-02-16',100,'','BX'),(3106,3101,'Task 434054',9.0,3.0,'2007-02-12','2007-02-24',33,'','BX'),(3107,3101,'Task 437581',18.0,10.0,'2007-02-11','2007-02-24',55,'','BX'),(3108,3101,'Task 746229',8.0,3.0,'2007-02-10','2007-02-18',37,'','AZ'),(3109,3101,'Task 696804',17.0,17.0,'2007-02-10','2007-02-21',100,'','BX'),(3110,3101,'Task 487223',7.0,0.0,'2007-02-07','2007-02-19',0,'','BX'),(3111,3101,'Task 509846',15.0,14.0,'2007-02-13','2007-02-17',93,'','AZ'),(3201,3000,'Version 1.3',15.0,0.0,'2007-02-14','2007-02-23',0,'','BX'),(3202,3201,'Task 877549',20.0,8.0,'2007-02-08','2007-02-25',40,'','CW'),(3203,3201,'Task 833116',20.0,16.0,'2007-02-13','2007-02-22',80,'','BX'),(3204,3201,'Task 144151',2.0,2.0,'2007-02-13','2007-02-18',100,'','BX'),(3205,3201,'Task 411349',20.0,10.0,'2007-02-11','2007-02-21',50,'','CW'),(3206,3201,'Task 207627',23.0,19.0,'2007-02-10','2007-02-21',82,'','BX'),(3207,3201,'Task 633680',12.0,3.0,'2007-02-12','2007-02-18',25,'','CW'),(3208,3201,'Task 206868',14.0,13.0,'2007-02-08','2007-02-16',92,'','CW'),(3209,3201,'Task 416775',7.0,4.0,'2007-02-10','2007-02-19',57,'','BX'),(3210,3201,'Task 614095',9.0,0.0,'2007-02-14','2007-02-20',0,'','BX'),(3211,3201,'Task 899522',3.0,3.0,'2007-02-05','2007-02-21',100,'','AZ'),(3301,3000,'Version 1.4',28.0,27.0,'2007-02-12','2007-02-23',96,'','BX'),(3302,3301,'Task 708306',16.0,6.0,'2007-02-07','2007-02-19',37,'','CW'),(3303,3301,'Task 851155',30.0,16.0,'2007-02-08','2007-02-21',53,'','BX'),(3304,3301,'Task 184543',15.0,0.0,'2007-02-12','2007-02-21',0,'','CW'),(3305,3301,'Task 739718',29.0,21.0,'2007-02-10','2007-02-24',72,'','AZ'),(3306,3301,'Task 742377',16.0,7.0,'2007-02-12','2007-02-17',43,'','BX'),(3307,3301,'Task 168212',17.0,11.0,'2007-02-10','2007-02-20',64,'','AZ'),(3308,3301,'Task 965142',4.0,2.0,'2007-02-06','2007-02-17',50,'','BX'),(3309,3301,'Task 164415',2.0,0.0,'2007-02-09','2007-02-25',0,'','CW'),(3310,3301,'Task 769504',11.0,7.0,'2007-02-06','2007-02-17',63,'','AZ'),(3311,3301,'Task 422770',8.0,8.0,'2007-02-12','2007-02-23',100,'','BX'),(3401,3000,'Version 1.5',22.0,15.0,'2007-02-10','2007-02-17',68,'','AZ'),(3402,3401,'Task 726019',14.0,6.0,'2007-02-12','2007-02-18',42,'','AZ'),(3403,3401,'Task 671603',3.0,0.0,'2007-02-06','2007-02-17',0,'','AZ'),(3404,3401,'Task 941406',1.0,0.0,'2007-02-09','2007-02-16',0,'','CW'),(3405,3401,'Task 719455',29.0,15.0,'2007-02-05','2007-02-17',51,'','CW'),(3406,3401,'Task 384223',25.0,8.0,'2007-02-08','2007-02-21',32,'','BX'),(3407,3401,'Task 841959',2.0,1.0,'2007-02-07','2007-02-18',50,'','AZ'),(3408,3401,'Task 193359',24.0,2.0,'2007-02-08','2007-02-18',8,'','AZ'),(3409,3401,'Task 178005',3.0,3.0,'2007-02-13','2007-02-19',100,'','AZ'),(3410,3401,'Task 174370',9.0,9.0,'2007-02-12','2007-02-24',100,'','CW'),(3411,3401,'Task 977593',6.0,2.0,'2007-02-12','2007-02-18',33,'','AZ'),(4000,0,'dhtmlxMenu',9.0,7.0,'2007-02-12','2007-02-16',77,'','BX'),(4001,4000,'Version 1.1',16.0,0.0,'2007-02-12','2007-02-24',0,'','CW'),(4002,4001,'Task 357367',6.0,3.0,'2007-02-08','2007-02-24',50,'','AZ'),(4003,4001,'Task 474392',15.0,3.0,'2007-02-14','2007-02-20',20,'','CW'),(4004,4001,'Task 432996',21.0,7.0,'2007-02-09','2007-02-17',33,'','CW'),(4005,4001,'Task 611653',21.0,10.0,'2007-02-08','2007-02-24',47,'','AZ'),(4006,4001,'Task 138834',29.0,10.0,'2007-02-08','2007-02-23',34,'','BX'),(4007,4001,'Task 670789',17.0,0.0,'2007-02-07','2007-02-25',0,'','AZ'),(4008,4001,'Task 391547',19.0,3.0,'2007-02-07','2007-02-17',15,'','BX'),(4009,4001,'Task 457356',15.0,3.0,'2007-02-07','2007-02-21',20,'','BX'),(4010,4001,'Task 774468',27.0,21.0,'2007-02-13','2007-02-22',77,'','CW'),(4011,4001,'Task 221354',12.0,9.0,'2007-02-06','2007-02-17',75,'','AZ'),(4101,4000,'Version 1.2',12.0,9.0,'2007-02-09','2007-02-23',75,'','CW'),(4102,4101,'Task 508436',11.0,7.0,'2007-02-12','2007-02-20',63,'','CW'),(4103,4101,'Task 916910',19.0,5.0,'2007-02-11','2007-02-20',26,'','CW'),(4104,4101,'Task 168701',21.0,4.0,'2007-02-09','2007-02-21',19,'','BX'),(4105,4101,'Task 406168',5.0,1.0,'2007-02-07','2007-02-19',20,'','AZ'),(4106,4101,'Task 855007',22.0,9.0,'2007-02-06','2007-02-23',40,'','CW'),(4107,4101,'Task 713134',15.0,5.0,'2007-02-12','2007-02-22',33,'','AZ'),(4108,4101,'Task 261800',2.0,0.0,'2007-02-11','2007-02-17',0,'','CW'),(4109,4101,'Task 198920',28.0,9.0,'2007-02-08','2007-02-18',32,'','CW'),(4110,4101,'Task 972412',21.0,1.0,'2007-02-09','2007-02-16',4,'','BX'),(4111,4101,'Task 335747',8.0,3.0,'2007-02-08','2007-02-18',37,'','CW'),(4201,4000,'Version 1.3',5.0,4.0,'2007-02-07','2007-02-22',80,'','CW'),(4202,4201,'Task 551323',20.0,15.0,'2007-02-13','2007-02-24',75,'','AZ'),(4203,4201,'Task 561143',9.0,4.0,'2007-02-06','2007-02-22',44,'','CW'),(4204,4201,'Task 381293',3.0,0.0,'2007-02-12','2007-02-24',0,'','BX'),(4205,4201,'Task 640245',27.0,6.0,'2007-02-09','2007-02-18',22,'','AZ'),(4206,4201,'Task 494249',22.0,19.0,'2007-02-06','2007-02-22',86,'','BX'),(4207,4201,'Task 516221',6.0,2.0,'2007-02-12','2007-02-18',33,'','CW'),(4208,4201,'Task 251301',14.0,7.0,'2007-02-11','2007-02-19',50,'','AZ'),(4209,4201,'Task 216851',25.0,12.0,'2007-02-09','2007-02-23',48,'','BX'),(4210,4201,'Task 346896',21.0,9.0,'2007-02-07','2007-02-17',42,'','AZ'),(4211,4201,'Task 214355',30.0,18.0,'2007-02-07','2007-02-22',60,'','CW'),(4301,4000,'Version 1.4',10.0,5.0,'2007-02-10','2007-02-17',50,'','BX'),(4302,4301,'Task 830213',2.0,0.0,'2007-02-06','2007-02-24',0,'','AZ'),(4303,4301,'Task 553358',15.0,12.0,'2007-02-06','2007-02-24',80,'','CW'),(4304,4301,'Task 158013',8.0,8.0,'2007-02-11','2007-02-25',100,'','BX'),(4305,4301,'Task 592095',23.0,22.0,'2007-02-09','2007-02-25',95,'','AZ'),(4306,4301,'Task 553520',6.0,4.0,'2007-02-06','2007-02-24',66,'','BX'),(4307,4301,'Task 267984',28.0,5.0,'2007-02-12','2007-02-19',17,'','AZ'),(4308,4301,'Task 822292',19.0,7.0,'2007-02-14','2007-02-24',36,'','AZ'),(4309,4301,'Task 831027',18.0,9.0,'2007-02-14','2007-02-16',50,'','BX'),(4310,4301,'Task 214328',26.0,25.0,'2007-02-08','2007-02-23',96,'','AZ'),(4311,4301,'Task 420111',22.0,5.0,'2007-02-10','2007-02-21',22,'','CW'),(4401,4000,'Version 1.5',20.0,9.0,'2007-02-13','2007-02-23',45,'','CW'),(4402,4401,'Task 972276',4.0,4.0,'2007-02-07','2007-02-23',100,'','BX'),(4403,4401,'Task 836697',6.0,2.0,'2007-02-08','2007-02-20',33,'','BX'),(4404,4401,'Task 785753',28.0,2.0,'2007-02-13','2007-02-23',7,'','AZ'),(4405,4401,'Task 142361',8.0,5.0,'2007-02-07','2007-02-24',62,'','BX'),(4406,4401,'Task 979437',7.0,6.0,'2007-02-07','2007-02-19',85,'','CW'),(4407,4401,'Task 342122',29.0,23.0,'2007-02-07','2007-02-20',79,'','CW'),(4408,4401,'Task 247775',5.0,1.0,'2007-02-13','2007-02-19',20,'','AZ'),(4409,4401,'Task 797091',5.0,3.0,'2007-02-10','2007-02-20',60,'','CW'),(4410,4401,'Task 396321',12.0,10.0,'2007-02-07','2007-02-23',83,'','CW'),(4411,4401,'Task 423936',10.0,5.0,'2007-02-09','2007-02-24',50,'','CW'),(5000,0,'dhtmlXTollbar',2.0,1.0,'2007-02-13','2007-02-20',50,'','BX'),(5001,5000,'Version 1.1',1.0,0.0,'2007-02-11','2007-02-25',0,'','AZ'),(5002,5001,'Task 897460',4.0,1.0,'2007-02-14','2007-02-23',25,'','CW'),(5003,5001,'Task 360405',11.0,3.0,'2007-02-07','2007-02-24',27,'','BX'),(5004,5001,'Task 453124',4.0,1.0,'2007-02-12','2007-02-22',25,'','CW'),(5005,5001,'Task 581868',10.0,6.0,'2007-02-12','2007-02-22',60,'','CW'),(5006,5001,'Task 458441',6.0,5.0,'2007-02-08','2007-02-17',83,'','CW'),(5007,5001,'Task 322428',13.0,0.0,'2007-02-07','2007-02-18',0,'','CW'),(5008,5001,'Task 274522',10.0,5.0,'2007-02-10','2007-02-21',50,'','CW'),(5009,5001,'Task 498752',9.0,1.0,'2007-02-12','2007-02-24',11,'','BX'),(5010,5001,'Task 595811',27.0,17.0,'2007-02-05','2007-02-24',62,'','CW'),(5011,5001,'Task 694173',4.0,4.0,'2007-02-06','2007-02-18',100,'','BX'),(5101,5000,'Version 1.2',24.0,0.0,'2007-02-10','2007-02-21',0,'','BX'),(5102,5101,'Task 392496',23.0,13.0,'2007-02-08','2007-02-20',56,'','CW'),(5103,5101,'Task 506266',28.0,12.0,'2007-02-09','2007-02-19',42,'','CW'),(5104,5101,'Task 932101',18.0,14.0,'2007-02-05','2007-02-18',77,'','AZ'),(5105,5101,'Task 951253',24.0,18.0,'2007-02-10','2007-02-21',75,'','AZ'),(5106,5101,'Task 261637',11.0,4.0,'2007-02-11','2007-02-16',36,'','AZ'),(5107,5101,'Task 977837',8.0,0.0,'2007-02-07','2007-02-23',0,'','AZ'),(5108,5101,'Task 742214',24.0,15.0,'2007-02-12','2007-02-17',62,'','CW'),(5109,5101,'Task 947129',27.0,11.0,'2007-02-09','2007-02-17',40,'','AZ'),(5110,5101,'Task 734944',7.0,0.0,'2007-02-10','2007-02-18',0,'','CW'),(5111,5101,'Task 775797',21.0,2.0,'2007-02-10','2007-02-23',9,'','AZ'),(5201,5000,'Version 1.3',12.0,11.0,'2007-02-10','2007-02-23',91,'','BX'),(5202,5201,'Task 205566',25.0,4.0,'2007-02-09','2007-02-23',16,'','AZ'),(5203,5201,'Task 425889',25.0,15.0,'2007-02-07','2007-02-19',60,'','CW'),(5204,5201,'Task 550292',5.0,2.0,'2007-02-09','2007-02-16',40,'','CW'),(5205,5201,'Task 457248',1.0,1.0,'2007-02-13','2007-02-18',100,'','CW'),(5206,5201,'Task 997450',14.0,14.0,'2007-02-13','2007-02-20',100,'','AZ'),(5207,5201,'Task 660481',24.0,19.0,'2007-02-06','2007-02-17',79,'','CW'),(5208,5201,'Task 241482',25.0,19.0,'2007-02-09','2007-02-22',76,'','AZ'),(5209,5201,'Task 396701',1.0,1.0,'2007-02-13','2007-02-21',100,'','CW'),(5210,5201,'Task 976833',27.0,11.0,'2007-02-10','2007-02-23',40,'','BX'),(5211,5201,'Task 360351',4.0,4.0,'2007-02-10','2007-02-18',100,'','AZ'),(5301,5000,'Version 1.4',27.0,26.0,'2007-02-12','2007-02-21',96,'','CW'),(5302,5301,'Task 712103',1.0,0.0,'2007-02-08','2007-02-23',0,'','AZ'),(5303,5301,'Task 157904',24.0,10.0,'2007-02-08','2007-02-22',41,'','CW'),(5304,5301,'Task 815077',9.0,0.0,'2007-02-08','2007-02-22',0,'','BX'),(5305,5301,'Task 992648',18.0,11.0,'2007-02-06','2007-02-24',61,'','AZ'),(5306,5301,'Task 971869',11.0,3.0,'2007-02-12','2007-02-18',27,'','CW'),(5307,5301,'Task 561767',1.0,0.0,'2007-02-07','2007-02-24',0,'','BX'),(5308,5301,'Task 210259',6.0,6.0,'2007-02-14','2007-02-24',100,'','BX'),(5309,5301,'Task 337483',25.0,8.0,'2007-02-09','2007-02-24',32,'','CW'),(5310,5301,'Task 669135',12.0,12.0,'2007-02-11','2007-02-23',100,'','AZ'),(5311,5301,'Task 458685',8.0,5.0,'2007-02-12','2007-02-22',62,'','BX'),(5401,5000,'Version 1.5',28.0,25.0,'2007-02-07','2007-02-19',89,'','AZ'),(5402,5401,'Task 501085',13.0,2.0,'2007-02-05','2007-02-16',15,'','AZ'),(5403,5401,'Task 690592',18.0,6.0,'2007-02-11','2007-02-20',33,'','BX'),(5404,5401,'Task 141818',28.0,22.0,'2007-02-10','2007-02-17',78,'','CW'),(5405,5401,'Task 316568',29.0,22.0,'2007-02-05','2007-02-16',75,'','AZ'),(5406,5401,'Task 759982',30.0,28.0,'2007-02-05','2007-02-22',93,'','BX'),(5407,5401,'Task 211642',6.0,4.0,'2007-02-07','2007-02-22',66,'','CW'),(5408,5401,'Task 383354',2.0,2.0,'2007-02-12','2007-02-22',100,'','CW'),(5409,5401,'Task 848036',14.0,13.0,'2007-02-14','2007-02-17',92,'','AZ'),(5410,5401,'Task 150824',1.0,0.0,'2007-02-13','2007-02-22',0,'','BX'),(5411,5401,'Task 475748',12.0,3.0,'2007-02-09','2007-02-20',25,'','BX'),(6000,0,'dhtmlXTabbar',10.0,7.0,'2007-02-12','2007-02-19',70,'','BX'),(6001,6000,'Version 1.1',22.0,2.0,'2007-02-06','2007-02-21',9,'','BX'),(6002,6001,'Task 570800',8.0,3.0,'2007-02-08','2007-02-19',37,'','CW'),(6003,6001,'Task 980360',7.0,5.0,'2007-02-08','2007-02-24',71,'','BX'),(6004,6001,'Task 668999',24.0,19.0,'2007-02-10','2007-02-21',79,'','CW'),(6005,6001,'Task 959635',6.0,3.0,'2007-02-12','2007-02-24',50,'','AZ'),(6006,6001,'Task 591851',21.0,3.0,'2007-02-13','2007-02-20',14,'','BX'),(6007,6001,'Task 388563',21.0,16.0,'2007-02-05','2007-02-23',76,'','BX'),(6008,6001,'Task 811577',3.0,2.0,'2007-02-08','2007-02-20',66,'','AZ'),(6009,6001,'Task 406032',17.0,0.0,'2007-02-06','2007-02-17',0,'','AZ'),(6010,6001,'Task 467068',20.0,8.0,'2007-02-06','2007-02-24',40,'','BX'),(6011,6001,'Task 817599',8.0,5.0,'2007-02-09','2007-02-23',62,'','CW'),(6101,6000,'Version 1.2',18.0,15.0,'2007-02-12','2007-02-20',83,'','AZ'),(6102,6101,'Task 133761',28.0,18.0,'2007-02-08','2007-02-24',64,'','BX'),(6103,6101,'Task 206298',30.0,14.0,'2007-02-13','2007-02-20',46,'','AZ'),(6104,6101,'Task 920762',11.0,2.0,'2007-02-08','2007-02-21',18,'','BX'),(6105,6101,'Task 697292',21.0,10.0,'2007-02-09','2007-02-22',47,'','CW'),(6106,6101,'Task 817138',8.0,6.0,'2007-02-09','2007-02-20',75,'','CW'),(6107,6101,'Task 311550',5.0,1.0,'2007-02-11','2007-02-23',20,'','AZ'),(6108,6101,'Task 628445',19.0,14.0,'2007-02-11','2007-02-18',73,'','CW'),(6109,6101,'Task 521294',7.0,0.0,'2007-02-13','2007-02-17',0,'','AZ'),(6110,6101,'Task 715793',2.0,0.0,'2007-02-06','2007-02-24',0,'','CW'),(6111,6101,'Task 576524',4.0,2.0,'2007-02-08','2007-02-19',50,'','BX'),(6201,6000,'Version 1.3',15.0,2.0,'2007-02-13','2007-02-24',13,'','BX'),(6202,6201,'Task 850694',30.0,19.0,'2007-02-07','2007-02-19',63,'','BX'),(6203,6201,'Task 465548',3.0,2.0,'2007-02-11','2007-02-24',66,'','CW'),(6204,6201,'Task 383788',29.0,2.0,'2007-02-06','2007-02-17',6,'','AZ'),(6205,6201,'Task 844997',8.0,1.0,'2007-02-06','2007-02-17',12,'','CW'),(6206,6201,'Task 172091',13.0,2.0,'2007-02-06','2007-02-20',15,'','AZ'),(6207,6201,'Task 326877',22.0,0.0,'2007-02-07','2007-02-24',0,'','BX'),(6208,6201,'Task 910047',25.0,8.0,'2007-02-12','2007-02-17',32,'','CW'),(6209,6201,'Task 272298',20.0,20.0,'2007-02-10','2007-02-23',100,'','BX'),(6210,6201,'Task 180989',2.0,0.0,'2007-02-06','2007-02-22',0,'','BX'),(6211,6201,'Task 709038',21.0,14.0,'2007-02-10','2007-02-25',66,'','AZ'),(6301,6000,'Version 1.4',17.0,1.0,'2007-02-10','2007-02-24',5,'','AZ'),(6302,6301,'Task 267171',12.0,12.0,'2007-02-13','2007-02-18',100,'','AZ'),(6303,6301,'Task 272433',8.0,1.0,'2007-02-12','2007-02-25',12,'','CW'),(6304,6301,'Task 568928',4.0,1.0,'2007-02-06','2007-02-20',25,'','CW'),(6305,6301,'Task 604573',29.0,11.0,'2007-02-13','2007-02-24',37,'','BX'),(6306,6301,'Task 688395',1.0,1.0,'2007-02-09','2007-02-20',100,'','CW'),(6307,6301,'Task 434977',9.0,0.0,'2007-02-14','2007-02-19',0,'','AZ'),(6308,6301,'Task 764458',13.0,7.0,'2007-02-13','2007-02-17',53,'','BX'),(6309,6301,'Task 569200',9.0,6.0,'2007-02-09','2007-02-24',66,'','AZ'),(6310,6301,'Task 491563',2.0,1.0,'2007-02-14','2007-02-21',50,'','BX'),(6311,6301,'Task 479464',16.0,16.0,'2007-02-06','2007-02-19',100,'','CW'),(6401,6000,'Version 1.5',8.0,8.0,'2007-02-12','2007-02-22',100,'','BX'),(6402,6401,'Task 517306',27.0,27.0,'2007-02-14','2007-02-23',100,'','BX'),(6403,6401,'Task 688151',30.0,23.0,'2007-02-14','2007-02-24',76,'','AZ'),(6404,6401,'Task 270019',23.0,5.0,'2007-02-13','2007-02-19',21,'','AZ'),(6405,6401,'Task 419162',18.0,16.0,'2007-02-10','2007-02-18',88,'','BX'),(6406,6401,'Task 152940',7.0,2.0,'2007-02-11','2007-02-17',28,'','AZ'),(6407,6401,'Task 127604',5.0,2.0,'2007-02-05','2007-02-20',40,'','BX'),(6408,6401,'Task 193847',27.0,17.0,'2007-02-07','2007-02-19',62,'','CW'),(6409,6401,'Task 507920',4.0,2.0,'2007-02-05','2007-02-20',50,'','CW'),(6410,6401,'Task 864963',30.0,11.0,'2007-02-09','2007-02-22',36,'','CW'),(6411,6401,'Task 921223',11.0,0.0,'2007-02-09','2007-02-23',0,'','BX'),(7000,0,'dhtmlXCalendar',3.0,3.0,'2007-02-10','2007-02-19',100,'','AZ'),(7001,7000,'Version 1.1',11.0,3.0,'2007-02-06','2007-02-18',27,'','BX'),(7002,7001,'Task 721137',8.0,1.0,'2007-02-09','2007-02-18',12,'','BX'),(7003,7001,'Task 928005',25.0,2.0,'2007-02-12','2007-02-21',8,'','CW'),(7004,7001,'Task 257703',9.0,5.0,'2007-02-09','2007-02-19',55,'','BX'),(7005,7001,'Task 394259',13.0,2.0,'2007-02-07','2007-02-25',15,'','AZ'),(7006,7001,'Task 216145',23.0,20.0,'2007-02-13','2007-02-25',86,'','CW'),(7007,7001,'Task 462944',23.0,1.0,'2007-02-05','2007-02-20',4,'','CW'),(7008,7001,'Task 402018',4.0,1.0,'2007-02-08','2007-02-25',25,'','BX'),(7009,7001,'Task 717393',30.0,26.0,'2007-02-14','2007-02-20',86,'','BX'),(7010,7001,'Task 176432',8.0,5.0,'2007-02-12','2007-02-22',62,'','AZ'),(7011,7001,'Task 296495',23.0,0.0,'2007-02-08','2007-02-18',0,'','BX'),(7101,7000,'Version 1.2',18.0,4.0,'2007-02-11','2007-02-16',22,'','BX'),(7102,7101,'Task 423204',5.0,1.0,'2007-02-06','2007-02-18',20,'','BX'),(7103,7101,'Task 513536',16.0,16.0,'2007-02-11','2007-02-17',100,'','CW'),(7104,7101,'Task 214545',25.0,1.0,'2007-02-14','2007-02-20',4,'','AZ'),(7105,7101,'Task 863037',19.0,18.0,'2007-02-10','2007-02-17',94,'','CW'),(7106,7101,'Task 212483',26.0,11.0,'2007-02-14','2007-02-23',42,'','CW'),(7107,7101,'Task 655246',2.0,0.0,'2007-02-05','2007-02-18',0,'','CW'),(7108,7101,'Task 555908',17.0,16.0,'2007-02-06','2007-02-22',94,'','CW'),(7109,7101,'Task 695719',26.0,9.0,'2007-02-08','2007-02-16',34,'','CW'),(7110,7101,'Task 939263',22.0,17.0,'2007-02-14','2007-02-23',77,'','BX'),(7111,7101,'Task 456678',17.0,3.0,'2007-02-09','2007-02-21',17,'','BX'),(7201,7000,'Version 1.3',18.0,11.0,'2007-02-11','2007-02-21',61,'','AZ'),(7202,7201,'Task 469346',17.0,2.0,'2007-02-12','2007-02-20',11,'','AZ'),(7203,7201,'Task 579427',22.0,22.0,'2007-02-06','2007-02-17',100,'','BX'),(7204,7201,'Task 586642',2.0,0.0,'2007-02-11','2007-02-19',0,'','AZ'),(7205,7201,'Task 425021',1.0,0.0,'2007-02-11','2007-02-20',0,'','AZ'),(7206,7201,'Task 556369',17.0,14.0,'2007-02-07','2007-02-25',82,'','BX'),(7207,7201,'Task 414713',8.0,7.0,'2007-02-10','2007-02-22',87,'','AZ'),(7208,7201,'Task 406304',22.0,9.0,'2007-02-09','2007-02-21',40,'','BX'),(7209,7201,'Task 354058',24.0,11.0,'2007-02-06','2007-02-21',45,'','BX'),(7210,7201,'Task 608669',22.0,1.0,'2007-02-06','2007-02-21',4,'','CW'),(7211,7201,'Task 493055',17.0,12.0,'2007-02-10','2007-02-22',70,'','BX'),(7301,7000,'Version 1.4',7.0,2.0,'2007-02-09','2007-02-20',28,'','AZ'),(7302,7301,'Task 936387',7.0,7.0,'2007-02-06','2007-02-23',100,'','CW'),(7303,7301,'Task 587917',18.0,6.0,'2007-02-11','2007-02-23',33,'','AZ'),(7304,7301,'Task 693874',25.0,21.0,'2007-02-14','2007-02-25',84,'','BX'),(7305,7301,'Task 285508',2.0,2.0,'2007-02-09','2007-02-19',100,'','AZ'),(7306,7301,'Task 810736',14.0,10.0,'2007-02-11','2007-02-20',71,'','BX'),(7307,7301,'Task 134141',17.0,11.0,'2007-02-13','2007-02-22',64,'','AZ'),(7308,7301,'Task 759195',17.0,6.0,'2007-02-14','2007-02-19',35,'','CW'),(7309,7301,'Task 272704',13.0,8.0,'2007-02-05','2007-02-19',61,'','AZ'),(7310,7301,'Task 455918',8.0,2.0,'2007-02-07','2007-02-17',25,'','BX'),(7311,7301,'Task 395643',13.0,11.0,'2007-02-09','2007-02-23',84,'','CW'),(7401,7000,'Version 1.5',1.0,0.0,'2007-02-08','2007-02-23',0,'','CW'),(7402,7401,'Task 753580',6.0,5.0,'2007-02-08','2007-02-22',83,'','CW'),(7403,7401,'Task 923122',18.0,16.0,'2007-02-10','2007-02-21',88,'','AZ'),(7404,7401,'Task 514105',30.0,13.0,'2007-02-06','2007-02-23',43,'','AZ'),(7405,7401,'Task 599446',21.0,8.0,'2007-02-06','2007-02-19',38,'','AZ'),(7406,7401,'Task 779839',7.0,4.0,'2007-02-06','2007-02-23',57,'','AZ'),(7407,7401,'Task 294867',21.0,13.0,'2007-02-10','2007-02-23',61,'','AZ'),(7408,7401,'Task 911892',25.0,22.0,'2007-02-07','2007-02-18',88,'','AZ'),(7409,7401,'Task 926052',10.0,0.0,'2007-02-06','2007-02-17',0,'','CW'),(7410,7401,'Task 715820',5.0,4.0,'2007-02-13','2007-02-23',80,'','BX'),(7411,7401,'Task 298556',22.0,15.0,'2007-02-08','2007-02-24',68,'','CW'),(8000,0,'dhtmlXWindow',5.0,5.0,'2007-02-07','2007-02-24',100,'','BX'),(8001,8000,'Version 1.1',12.0,6.0,'2007-02-06','2007-02-19',50,'','AZ'),(8002,8001,'Task 553331',11.0,1.0,'2007-02-08','2007-02-16',9,'','AZ'),(8003,8001,'Task 435980',20.0,15.0,'2007-02-11','2007-02-20',75,'','CW'),(8004,8001,'Task 257432',3.0,0.0,'2007-02-06','2007-02-25',0,'','AZ'),(8005,8001,'Task 507269',9.0,1.0,'2007-02-06','2007-02-19',11,'','BX'),(8006,8001,'Task 425075',9.0,4.0,'2007-02-08','2007-02-17',44,'','BX'),(8007,8001,'Task 889322',24.0,5.0,'2007-02-07','2007-02-17',20,'','BX'),(8008,8001,'Task 195149',17.0,6.0,'2007-02-05','2007-02-21',35,'','AZ'),(8009,8001,'Task 498806',16.0,6.0,'2007-02-08','2007-02-21',37,'','BX'),(8010,8001,'Task 928765',4.0,0.0,'2007-02-05','2007-02-16',0,'','BX'),(8011,8001,'Task 474609',13.0,4.0,'2007-02-11','2007-02-18',30,'','CW'),(8101,8000,'Version 1.2',18.0,18.0,'2007-02-10','2007-02-22',100,'','BX'),(8102,8101,'Task 812906',26.0,23.0,'2007-02-05','2007-02-21',88,'','BX'),(8103,8101,'Task 118950',18.0,2.0,'2007-02-09','2007-02-23',11,'','AZ'),(8104,8101,'Task 865532',14.0,12.0,'2007-02-13','2007-02-19',85,'','BX'),(8105,8101,'Task 417236',7.0,3.0,'2007-02-11','2007-02-22',42,'','BX'),(8106,8101,'Task 333089',22.0,13.0,'2007-02-06','2007-02-25',59,'','BX'),(8107,8101,'Task 366563',4.0,2.0,'2007-02-09','2007-02-19',50,'','AZ'),(8108,8101,'Task 465576',6.0,1.0,'2007-02-09','2007-02-23',16,'','BX'),(8109,8101,'Task 994710',17.0,5.0,'2007-02-06','2007-02-22',29,'','BX'),(8110,8101,'Task 290771',27.0,26.0,'2007-02-08','2007-02-17',96,'','CW'),(8111,8101,'Task 218343',9.0,6.0,'2007-02-06','2007-02-25',66,'','BX'),(8201,8000,'Version 1.3',12.0,10.0,'2007-02-11','2007-02-17',83,'','AZ'),(8202,8201,'Task 905273',2.0,1.0,'2007-02-13','2007-02-20',50,'','BX'),(8203,8201,'Task 305718',25.0,17.0,'2007-02-08','2007-02-20',68,'','AZ'),(8204,8201,'Task 835937',27.0,10.0,'2007-02-06','2007-02-24',37,'','CW'),(8205,8201,'Task 568847',23.0,7.0,'2007-02-11','2007-02-24',30,'','CW'),(8206,8201,'Task 549587',4.0,3.0,'2007-02-13','2007-02-18',75,'','AZ'),(8207,8201,'Task 573296',3.0,1.0,'2007-02-11','2007-02-21',33,'','BX'),(8208,8201,'Task 296223',18.0,11.0,'2007-02-06','2007-02-23',61,'','CW'),(8209,8201,'Task 346842',14.0,2.0,'2007-02-10','2007-02-19',14,'','CW'),(8210,8201,'Task 770290',23.0,4.0,'2007-02-07','2007-02-20',17,'','CW'),(8211,8201,'Task 361707',1.0,1.0,'2007-02-05','2007-02-18',100,'','AZ'),(8301,8000,'Version 1.4',16.0,4.0,'2007-02-06','2007-02-23',25,'','BX'),(8302,8301,'Task 132948',12.0,5.0,'2007-02-09','2007-02-22',41,'','AZ'),(8303,8301,'Task 545328',19.0,5.0,'2007-02-11','2007-02-20',26,'','AZ'),(8304,8301,'Task 658664',27.0,24.0,'2007-02-10','2007-02-24',88,'','AZ'),(8305,8301,'Task 198648',23.0,22.0,'2007-02-05','2007-02-23',95,'','BX'),(8306,8301,'Task 196533',17.0,0.0,'2007-02-08','2007-02-19',0,'','CW'),(8307,8301,'Task 544677',24.0,22.0,'2007-02-12','2007-02-19',91,'','CW'),(8308,8301,'Task 218777',6.0,6.0,'2007-02-08','2007-02-19',100,'','BX'),(8309,8301,'Task 166747',6.0,0.0,'2007-02-12','2007-02-17',0,'','CW'),(8310,8301,'Task 864284',1.0,0.0,'2007-02-12','2007-02-22',0,'','AZ'),(8311,8301,'Task 759304',1.0,1.0,'2007-02-08','2007-02-22',100,'','BX'),(8401,8000,'Version 1.5',27.0,11.0,'2007-02-06','2007-02-21',40,'','AZ'),(8402,8401,'Task 136989',28.0,24.0,'2007-02-14','2007-02-23',85,'','AZ'),(8403,8401,'Task 905924',27.0,0.0,'2007-02-12','2007-02-21',0,'','CW'),(8404,8401,'Task 745605',16.0,10.0,'2007-02-09','2007-02-25',62,'','BX'),(8405,8401,'Task 867838',14.0,3.0,'2007-02-08','2007-02-21',21,'','BX'),(8406,8401,'Task 789984',9.0,9.0,'2007-02-07','2007-02-22',100,'','BX'),(8407,8401,'Task 334960',26.0,20.0,'2007-02-08','2007-02-24',76,'','BX'),(8408,8401,'Task 742350',12.0,10.0,'2007-02-14','2007-02-19',83,'','AZ'),(8409,8401,'Task 446180',29.0,13.0,'2007-02-10','2007-02-24',44,'','BX'),(8410,8401,'Task 630479',14.0,11.0,'2007-02-13','2007-02-18',78,'','BX'),(8411,8401,'Task 118163',5.0,3.0,'2007-02-09','2007-02-20',60,'','CW');
+/*!40000 ALTER TABLE `tasks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `teams`
+--
+
+DROP TABLE IF EXISTS `teams`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `teams` (
+ `team_id` int(11) NOT NULL AUTO_INCREMENT,
+ `team_name` varchar(255) NOT NULL,
+ PRIMARY KEY (`team_id`)
+) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `teams`
+--
+
+LOCK TABLES `teams` WRITE;
+/*!40000 ALTER TABLE `teams` DISABLE KEYS */;
+INSERT INTO `teams` VALUES (1,'Team 1'),(2,'Team 2'),(3,'Team 3'),(4,'Team 4'),(5,'Team 5'),(6,'Team 6'),(7,'Team 7'),(8,'Team 8'),(9,'Team 9'),(10,'Team 10');
+/*!40000 ALTER TABLE `teams` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `tevents`
+--
+
+DROP TABLE IF EXISTS `tevents`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `tevents` (
+ `event_id` int(11) NOT NULL AUTO_INCREMENT,
+ `event_name` varchar(127) NOT NULL,
+ `start_date` datetime NOT NULL,
+ `end_date` datetime NOT NULL,
+ `type` int(11) NOT NULL,
+ PRIMARY KEY (`event_id`)
+) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `tevents`
+--
+
+LOCK TABLES `tevents` WRITE;
+/*!40000 ALTER TABLE `tevents` DISABLE KEYS */;
+INSERT INTO `tevents` VALUES (1,'dblclick me!','2010-03-02 00:00:00','2010-03-04 00:00:00',1),(2,'and me!','2010-03-09 00:00:00','2010-03-11 00:00:00',2),(3,'and me too!','2010-03-16 00:00:00','2010-03-18 00:00:00',3),(4,'Type 2 event','2010-03-02 08:00:00','2010-03-02 14:10:00',2);
+/*!40000 ALTER TABLE `tevents` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `types`
+--
+
+DROP TABLE IF EXISTS `types`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `types` (
+ `typeid` int(11) NOT NULL AUTO_INCREMENT,
+ `name` varchar(255) NOT NULL,
+ PRIMARY KEY (`typeid`)
+) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `types`
+--
+
+LOCK TABLES `types` WRITE;
+/*!40000 ALTER TABLE `types` DISABLE KEYS */;
+INSERT INTO `types` VALUES (1,'Simple'),(2,'Complex'),(3,'Unknown');
+/*!40000 ALTER TABLE `types` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2010-09-28 19:16:55
diff --git a/samples/export/excel.php b/samples/export/excel.php
new file mode 100644
index 0000000..c9c9581
--- /dev/null
+++ b/samples/export/excel.php
@@ -0,0 +1,16 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+
+ require("../../codebase/grid_connector.php");
+ require("../../codebase/convert.php");
+
+ $convert = new ConvertService("http://dhtmlxgrid.appspot.com/export/excel");
+ $convert->excel();
+
+ $grid = new GridConnector($res);
+ $grid->set_config(new GridConfiguration());
+ $grid->render_table("grid50");
+?> \ No newline at end of file
diff --git a/samples/export/pdf.php b/samples/export/pdf.php
new file mode 100644
index 0000000..b5089b4
--- /dev/null
+++ b/samples/export/pdf.php
@@ -0,0 +1,15 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+
+ require("../../codebase/grid_connector.php");
+ require("../../codebase/convert.php");
+
+ $convert = new ConvertService("http://dhtmlxgrid.appspot.com/export/pdf");
+
+ $grid = new GridConnector($res);
+ $grid->set_config(new GridConfiguration());
+ $grid->render_table("grid50");
+?> \ No newline at end of file
diff --git a/samples/grid/01_basic.html b/samples/grid/01_basic.html
new file mode 100644
index 0000000..9aa1e5b
--- /dev/null
+++ b/samples/grid/01_basic.html
@@ -0,0 +1,48 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("01_basic_connector.php");
+ var dp = new dataProcessor("01_basic_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/01_basic_connector.php b/samples/grid/01_basic_connector.php
new file mode 100644
index 0000000..eff8ee7
--- /dev/null
+++ b/samples/grid/01_basic_connector.php
@@ -0,0 +1,11 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/grid_connector.php");
+ $grid = new GridConnector($res);
+
+ $grid->dynamic_loading(100);
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/01a_sql_basic.html b/samples/grid/01a_sql_basic.html
new file mode 100644
index 0000000..1b4187a
--- /dev/null
+++ b/samples/grid/01a_sql_basic.html
@@ -0,0 +1,38 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("01a_sql_basic_connector.php");
+ var dp = new dataProcessor("01a_sql_basic_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); <br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT&nbsp;grid50000.item_id&nbsp;as&nbsp;ID&nbsp;,&nbsp;grid50000.item_nm&nbsp;FROM&nbsp;grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id(ID)"</span><span style="color: #007700">,</span><span style="color: #DD0000">"grid50000.item_id(ID),item_nm"</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/01a_sql_basic_connector.php b/samples/grid/01a_sql_basic_connector.php
new file mode 100644
index 0000000..a02e614
--- /dev/null
+++ b/samples/grid/01a_sql_basic_connector.php
@@ -0,0 +1,13 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/grid_connector.php");
+
+
+$gridConn = new GridConnector($res);
+$sql = "SELECT * FROM grid50";
+$gridConn->render_sql($sql,"item_id","item_nm,item_cd");
+
+?> \ No newline at end of file
diff --git a/samples/grid/02_rendering.html b/samples/grid/02_rendering.html
new file mode 100644
index 0000000..f584607
--- /dev/null
+++ b/samples/grid/02_rendering.html
@@ -0,0 +1,52 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("02_rendering_connector.php");
+ var dp = new dataProcessor("02_rendering_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">color_rows</span><span style="color: #007700">(</span><span style="color: #0000BB">$row</span><span style="color: #007700">){
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$row</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_index</span><span style="color: #007700">()%</span><span style="color: #0000BB">2</span><span style="color: #007700">)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$row</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_row_style</span><span style="color: #007700">(</span><span style="color: #DD0000">"background-color: red"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;}
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeRender"</span><span style="color: #007700">,</span><span style="color: #DD0000">"color_rows"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/02_rendering_connector.php b/samples/grid/02_rendering_connector.php
new file mode 100644
index 0000000..e56d716
--- /dev/null
+++ b/samples/grid/02_rendering_connector.php
@@ -0,0 +1,17 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ function color_rows($row){
+ if ($row->get_index()%2) {
+ $row->set_row_style("background-color: red");
+ }
+ }
+ require("../../codebase/grid_connector.php");
+ $grid = new GridConnector($res);
+
+ $grid->dynamic_loading(100);
+ $grid->event->attach("beforeRender","color_rows");
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/03_validation.html b/samples/grid/03_validation.html
new file mode 100644
index 0000000..67ebd32
--- /dev/null
+++ b/samples/grid/03_validation.html
@@ -0,0 +1,53 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("03_validation_connector.php");
+ var dp = new dataProcessor("03_validation_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">check_data</span><span style="color: #007700">(</span><span style="color: #0000BB">$action</span><span style="color: #007700">){
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$action</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_cd"</span><span style="color: #007700">)==</span><span style="color: #DD0000">""&nbsp;</span><span style="color: #007700">||&nbsp;</span><span style="color: #0000BB">$action</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_nm"</span><span style="color: #007700">)==</span><span style="color: #DD0000">""</span><span style="color: #007700">)
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$action</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">invalid</span><span style="color: #007700">();
+<br />&nbsp;&nbsp;&nbsp;&nbsp;}
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeProcessing"</span><span style="color: #007700">,</span><span style="color: #0000BB">check_data</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/03_validation_connector.php b/samples/grid/03_validation_connector.php
new file mode 100644
index 0000000..a703c13
--- /dev/null
+++ b/samples/grid/03_validation_connector.php
@@ -0,0 +1,16 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ function check_data($action){
+ if ($action->get_value("item_cd")=="" || $action->get_value("item_nm")=="")
+ $action->invalid();
+ }
+ require("../../codebase/grid_connector.php");
+ $grid = new GridConnector($res);
+
+ $grid->dynamic_loading(100);
+ $grid->event->attach("beforeProcessing",check_data);
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/04_custom_sql.html b/samples/grid/04_custom_sql.html
new file mode 100644
index 0000000..c8d2d05
--- /dev/null
+++ b/samples/grid/04_custom_sql.html
@@ -0,0 +1,38 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("04_custom_sql_connector.php");
+ var dp = new dataProcessor("04_custom_sql_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); <br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">sql</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"delete"</span><span style="color: #007700">,</span><span style="color: #DD0000">"update&nbsp;grid50000&nbsp;set&nbsp;item_nm='deleted'&nbsp;where&nbsp;item_id='{item_id}'"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); <br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/04_custom_sql_connector.php b/samples/grid/04_custom_sql_connector.php
new file mode 100644
index 0000000..ceced6f
--- /dev/null
+++ b/samples/grid/04_custom_sql_connector.php
@@ -0,0 +1,15 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/grid_connector.php");
+ $grid = new GridConnector($res);
+
+
+ $grid->sql->attach("delete","update grid50000 set item_nm='deleted' where item_id='{item_id}'");
+
+ $grid->dynamic_loading(100);
+
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/05_select_filter.html b/samples/grid/05_select_filter.html
new file mode 100644
index 0000000..9315f06
--- /dev/null
+++ b/samples/grid/05_select_filter.html
@@ -0,0 +1,49 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_select_filter,#connector_select_filter")
+ mygrid.setInitWidths("200,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("05_select_filter_connector.php");
+ var dp = new dataProcessor("05_select_filter_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"countries"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/05_select_filter_connector.php b/samples/grid/05_select_filter_connector.php
new file mode 100644
index 0000000..7fb0de8
--- /dev/null
+++ b/samples/grid/05_select_filter_connector.php
@@ -0,0 +1,11 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/grid_connector.php");
+ $grid = new GridConnector($res);
+
+ $grid->dynamic_loading(100);
+ $grid->render_table("countries","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/05a_select_filter.html b/samples/grid/05a_select_filter.html
new file mode 100644
index 0000000..608cb2c
--- /dev/null
+++ b/samples/grid/05a_select_filter.html
@@ -0,0 +1,38 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_select_filter,#connector_select_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("05a_select_filter_connector.php");
+ var dp = new dataProcessor("05a_select_filter_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*$filter1&nbsp;=&nbsp;new&nbsp;OptionsConnector($res); <br />&nbsp;&nbsp;&nbsp;&nbsp;$filter1-&gt;render_table("countries","item_id","item_id(value),item_nm(label)"); <br />&nbsp;&nbsp;&nbsp;&nbsp;$grid-&gt;set_options("item_nm",$filter1);*/ <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$filter1&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">OptionsConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$filter1</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT&nbsp;&nbsp;DISTINCT&nbsp;SUBSTR(item_nm,1,2)&nbsp;as&nbsp;value&nbsp;from&nbsp;grid50"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm(value)"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_options</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_nm"</span><span style="color: #007700">,</span><span style="color: #0000BB">$filter1</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/05a_select_filter_connector.php b/samples/grid/05a_select_filter_connector.php
new file mode 100644
index 0000000..ef2c31b
--- /dev/null
+++ b/samples/grid/05a_select_filter_connector.php
@@ -0,0 +1,22 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+ require("../../codebase/grid_connector.php");
+
+
+
+ $grid = new GridConnector($res);
+
+ $grid->dynamic_loading(100);
+
+ /*$filter1 = new OptionsConnector($res);
+ $filter1->render_table("countries","item_id","item_id(value),item_nm(label)");
+ $grid->set_options("item_nm",$filter1);*/
+
+ $filter1 = new OptionsConnector($res);
+ $filter1->render_sql("SELECT DISTINCT SUBSTR(item_nm,1,2) as value from grid50000","item_id","item_nm(value)");
+ $grid->set_options("item_nm",$filter1);
+
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/06_combo.html b/samples/grid/06_combo.html
new file mode 100644
index 0000000..6786a16
--- /dev/null
+++ b/samples/grid/06_combo.html
@@ -0,0 +1,38 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("co,co");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("06_combo_connector.php");
+ var dp = new dataProcessor("06_combo_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*$filter1&nbsp;=&nbsp;new&nbsp;OptionsConnector($res); <br />&nbsp;&nbsp;&nbsp;&nbsp;$filter1-&gt;render_table("countries","item_id","item_id(value),item_nm(label)"); <br />&nbsp;&nbsp;&nbsp;&nbsp;$grid-&gt;set_options("item_nm",$filter1);*/ <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$filter1&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">OptionsConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$filter1</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"countries"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id(value),item_nm(label)"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_options</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_nm"</span><span style="color: #007700">,</span><span style="color: #0000BB">$filter1</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/06_combo_connector.php b/samples/grid/06_combo_connector.php
new file mode 100644
index 0000000..a5f9f19
--- /dev/null
+++ b/samples/grid/06_combo_connector.php
@@ -0,0 +1,23 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+ require("../../codebase/grid_connector.php");
+
+
+
+ $grid = new GridConnector($res);
+
+ $grid->dynamic_loading(100);
+
+ /*$filter1 = new OptionsConnector($res);
+ $filter1->render_table("countries","item_id","item_id(value),item_nm(label)");
+ $grid->set_options("item_nm",$filter1);*/
+
+ $filter1 = new OptionsConnector($res);
+ $filter1->render_table("countries","item_id","item_id(value),item_nm(label)");
+ $grid->set_options("item_nm",$filter1);
+
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+
+?> \ No newline at end of file
diff --git a/samples/grid/06a_combo.html b/samples/grid/06a_combo.html
new file mode 100644
index 0000000..6c20752
--- /dev/null
+++ b/samples/grid/06a_combo.html
@@ -0,0 +1,65 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("co,co");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("06a_combo_connector.php");
+ var dp = new dataProcessor("06a_combo_connector.php");
+ dp.setUpdateMode("off")
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<input type="button" name="update" value="update row" onclick="dp.sendData()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*$filter1&nbsp;=&nbsp;new&nbsp;OptionsConnector($res);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;$filter1-&gt;render_table("countries","item_id","item_id(value),item_nm(label)");
+<br />&nbsp;&nbsp;&nbsp;&nbsp;$grid-&gt;set_options("item_nm",$filter1);*/
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_options</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_nm"</span><span style="color: #007700">,array(</span><span style="color: #DD0000">"1"</span><span style="color: #007700">,</span><span style="color: #DD0000">"two"</span><span style="color: #007700">,</span><span style="color: #DD0000">"3"</span><span style="color: #007700">));
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_options</span><span style="color: #007700">(</span><span style="color: #DD0000">"item_cd"</span><span style="color: #007700">,array(</span><span style="color: #DD0000">"91"</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">"one"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"75"</span><span style="color: #007700">=&gt;</span><span style="color: #DD0000">"two"</span><span style="color: #007700">));
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">sql</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_transaction_mode</span><span style="color: #007700">(</span><span style="color: #DD0000">"record"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/09_server_side_configuration.html b/samples/grid/09_server_side_configuration.html
new file mode 100644
index 0000000..32f7508
--- /dev/null
+++ b/samples/grid/09_server_side_configuration.html
@@ -0,0 +1,32 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+
+ mygrid.loadXML("09_server_side_configuration.php");
+ var dp = new dataProcessor("09_server_side_configuration.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+
+</body>
+</html>
diff --git a/samples/grid/09_server_side_configuration.php b/samples/grid/09_server_side_configuration.php
new file mode 100644
index 0000000..7d78476
--- /dev/null
+++ b/samples/grid/09_server_side_configuration.php
@@ -0,0 +1,15 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/grid_connector.php");
+ $grid = new GridConnector($res);
+
+ $config = new GridConfiguration();
+ $config->setHeader("ID,First Name,Last Name,Title,Office,Extn,Mobile,Email");
+ $config->setColTypes("ro,ed,ed,ed,ed,ed,ed,ed");
+ $grid->set_config($config);
+
+ $grid->render_table("grid50");
+?> \ No newline at end of file
diff --git a/samples/grid/10_auto_config.html b/samples/grid/10_auto_config.html
new file mode 100644
index 0000000..ac19f96
--- /dev/null
+++ b/samples/grid/10_auto_config.html
@@ -0,0 +1,32 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+
+ mygrid.loadXML("10_auto_config.php");
+ var dp = new dataProcessor("10_auto_config.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+
+</body>
+</html>
diff --git a/samples/grid/10_auto_config.php b/samples/grid/10_auto_config.php
new file mode 100644
index 0000000..0d29788
--- /dev/null
+++ b/samples/grid/10_auto_config.php
@@ -0,0 +1,11 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/grid_connector.php");
+ $grid = new GridConnector($res);
+ $grid->set_config(false);
+ $grid->dynamic_loading(100);
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/11_auto_config_filters.html b/samples/grid/11_auto_config_filters.html
new file mode 100644
index 0000000..5965fba
--- /dev/null
+++ b/samples/grid/11_auto_config_filters.html
@@ -0,0 +1,32 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+
+ mygrid.loadXML("11_auto_config_filters.php");
+ var dp = new dataProcessor("11_auto_config_filters.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+
+</body>
+</html>
diff --git a/samples/grid/11_auto_config_filters.php b/samples/grid/11_auto_config_filters.php
new file mode 100644
index 0000000..af63604
--- /dev/null
+++ b/samples/grid/11_auto_config_filters.php
@@ -0,0 +1,12 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/grid_connector.php");
+ $grid = new GridConnector($res);
+
+ $grid->set_config(true);
+ $grid->dynamic_loading(100);
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/12_attach_header_server.html b/samples/grid/12_attach_header_server.html
new file mode 100644
index 0000000..305ede0
--- /dev/null
+++ b/samples/grid/12_attach_header_server.html
@@ -0,0 +1,57 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("12_attach_header_server.php");
+ var dp = new dataProcessor("12_attach_header_server.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConfiguration</span><span style="color: #007700">();
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setHeader</span><span style="color: #007700">(</span><span style="color: #DD0000">"Item,#cspan"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">attachHeader</span><span style="color: #007700">(</span><span style="color: #DD0000">"Item Name,Item CD"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setColIds</span><span style="color: #007700">(</span><span style="color: #DD0000">"col1,col2"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setInitWidths</span><span style="color: #007700">(</span><span style="color: #DD0000">"120,*"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setColSorting</span><span style="color: #007700">(</span><span style="color: #DD0000">"connector,connector"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setColColor</span><span style="color: #007700">(</span><span style="color: #DD0000">",#dddddd"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setColHidden</span><span style="color: #007700">(</span><span style="color: #DD0000">"false,false"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setColTypes</span><span style="color: #007700">(</span><span style="color: #DD0000">"ro,ed"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setColAlign</span><span style="color: #007700">(</span><span style="color: #DD0000">"center,center"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$config</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setColVAlign</span><span style="color: #007700">(</span><span style="color: #DD0000">"bottom,middle"</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_config</span><span style="color: #007700">(</span><span style="color: #0000BB">$config</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/12_attach_header_server.php b/samples/grid/12_attach_header_server.php
new file mode 100644
index 0000000..873144d
--- /dev/null
+++ b/samples/grid/12_attach_header_server.php
@@ -0,0 +1,27 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/grid_connector.php");
+ $grid = new GridConnector($res);
+
+
+ $config = new GridConfiguration();
+
+ $config->setHeader("Item,#cspan");
+ $config->attachHeader("Item Name,Item CD");
+ $config->setColIds("col1,col2");
+ $config->setInitWidths('120,*');
+ $config->setColSorting("connector,connector");
+ $config->setColColor(",#dddddd");
+ $config->setColHidden("false,false");
+ $config->setColTypes("ro,ed");
+ $config->setColAlign('center,center');
+ $config->setColVAlign('bottom,middle');
+
+ $grid->set_config($config);
+
+ $grid->dynamic_loading(100);
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/13_filesystem_grid_connector.html b/samples/grid/13_filesystem_grid_connector.html
new file mode 100644
index 0000000..41540cd
--- /dev/null
+++ b/samples/grid/13_filesystem_grid_connector.html
@@ -0,0 +1,40 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+
+<div id="gridbox" width="850px" height="350px" style="background-color:white;overflow:hidden"></div>
+
+<script>
+
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("File name,Full file name,Size,Name,Extention,Date,Is folder");
+ mygrid.setInitWidths("100,250,100,100,100,100,*");
+ mygrid.init();
+ mygrid.loadXML("13_filesystem_grid_connector.php");
+
+</script>
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../../codebase/db_filesystem.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #DD0000">"c:/"</span>, <span style="color: #DD0000">"FileSystem"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"../"</span><span style="color: #007700">,</span><span style="color: #DD0000">"safe_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">"filename,full_filename,size,name,extention,date,is_folder"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div>
+</body>
+</html>
diff --git a/samples/grid/13_filesystem_grid_connector.php b/samples/grid/13_filesystem_grid_connector.php
new file mode 100644
index 0000000..692f101
--- /dev/null
+++ b/samples/grid/13_filesystem_grid_connector.php
@@ -0,0 +1,7 @@
+<?php
+ require("../../codebase/db_filesystem.php");
+ require("../../codebase/grid_connector.php");
+
+ $grid = new GridConnector("c:/", "FileSystem");
+ $grid->render_table("../","safe_name","filename,full_filename,size,name,extention,date,is_folder");
+?> \ No newline at end of file
diff --git a/samples/grid/index.html b/samples/grid/index.html
new file mode 100644
index 0000000..b934842
--- /dev/null
+++ b/samples/grid/index.html
@@ -0,0 +1,35 @@
+<html>
+ <head></head>
+ <style type="text/css" media="screen">
+ *{
+ font-family:Tahoma;
+ }
+ div,li{
+ font-size:10pt;
+ }
+ div{
+ padding-bottom:20px;
+ }
+ li{
+ padding-left:50px;
+ padding-bottom:10px;
+ }
+ </style>
+ <body>
+ <h2>dhtmlxConnector for PHP :: Samples</h2>
+ <li><a href="01_basic.html">Basic init</a></li>
+ <li><a href="01a_sql_basic.html">Basic init by sql string</a></li>
+ <li><a href="02_rendering.html">Rendering customization</a></li>
+ <li><a href="03_validation.html">Validation</a></li>
+ <li><a href="04_custom_sql.html">Custom update logic</a></li>
+ <li><a href="05_select_filter.html">Select filter in grid</a></li>
+ <li><a href="05a_select_filter.html">Select filter in grid ( different init )</a></li>
+ <li><a href="06_combo.html">Combo in grid (sub connector)</a></li>
+ <li><a href="06a_combo.html">Combo in grid (predefined list)</a></li>
+ <li><a href="09_server_side_configuration.html">Configuration on server side</a></li>
+ <li><a href="10_auto_config.html">Auto configuration</a></li>
+ <li><a href="11_auto_config_filters.html">Auto configuration with filters</a></li>
+ <li><a href="12_attach_header_server.html">Attaching header on the server side</a></li>
+ <li><a href="13_filesystem_grid_connector.html">File system connector</a></li>
+ </body>
+</html> \ No newline at end of file
diff --git a/samples/grid/xx_sample_mssql.html b/samples/grid/xx_sample_mssql.html
new file mode 100644
index 0000000..8889d3f
--- /dev/null
+++ b/samples/grid/xx_sample_mssql.html
@@ -0,0 +1,38 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("xx_sample_mssql_connector.php");
+ var dp = new dataProcessor("xx_sample_mssql_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mssql_connect</span><span style="color: #007700">(</span><span style="color: #DD0000">'.\SQLEXPRESS'</span><span style="color: #007700">,</span><span style="color: #DD0000">"sa"</span><span style="color: #007700">,</span><span style="color: #DD0000">"1"</span><span style="color: #007700">,</span><span style="color: #0000BB">false</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mssql_select_db</span><span style="color: #007700">(</span><span style="color: #DD0000">"sampleDB"</span><span style="color: #007700">); <br /> <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/db_mssql.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">,</span><span style="color: #DD0000">"MsSQL"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/xx_sample_mssql_connector.php b/samples/grid/xx_sample_mssql_connector.php
new file mode 100644
index 0000000..57d7b78
--- /dev/null
+++ b/samples/grid/xx_sample_mssql_connector.php
@@ -0,0 +1,13 @@
+<?php
+ require_once("../config.php");
+ $res=mssql_connect('.\SQLEXPRESS',"sa","1",false);
+ mssql_select_db("sampleDB");
+
+ require("../../codebase/grid_connector.php");
+ require("../../codebase/db_mssql.php");
+
+ $grid = new GridConnector($res,"MsSQL");
+
+ $grid->dynamic_loading(100);
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/xx_sample_mysqli.html b/samples/grid/xx_sample_mysqli.html
new file mode 100644
index 0000000..1e7891e
--- /dev/null
+++ b/samples/grid/xx_sample_mysqli.html
@@ -0,0 +1,25 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>MySQLi connector with dhtmlxGrid - read-only version</title>
+ <script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+ <script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+ <link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+ <script>
+ function doOnLoad() {
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("./codebase/imgs/");
+ mygrid.setSkin('dhx_skyblue');
+ mygrid.setHeader("Event name, Details");
+ mygrid.setInitWidths("300,*")
+ mygrid.setColTypes("ro,ro");
+ mygrid.init();
+ mygrid.loadXML("xx_sample_mysqli_connector.php");
+ }
+ </script>
+</head>
+<body onload="doOnLoad();">
+ <div id="gridbox" style="width: 700px; height: 300px; background-color:white;overflow:hidden; border: 1px solid #dfdfdf;"></div>
+</body>
+</html>
diff --git a/samples/grid/xx_sample_mysqli_connector.php b/samples/grid/xx_sample_mysqli_connector.php
new file mode 100644
index 0000000..726bd61
--- /dev/null
+++ b/samples/grid/xx_sample_mysqli_connector.php
@@ -0,0 +1,16 @@
+<?php
+
+ require("../config.php");
+ require("../../codebase/db_mysqli.php");
+ require("../../codebase/grid_connector.php");
+
+ $mysqli = new mysqli($server, $user, $pass, $mysql_db);
+ if (mysqli_connect_errno()) {
+ printf("Ïîäêëþ÷åíèå ê ñåðâåðó MySQL íåâîçìîæíî. Êîä îøèáêè: %s\n", mysqli_connect_error());
+ exit;
+ }
+
+ $grid = new GridConnector($mysqli, "MySQLi");
+
+ $grid->render_table("events","event_id","event_name,details");
+?> \ No newline at end of file
diff --git a/samples/grid/xx_sample_oracle.html b/samples/grid/xx_sample_oracle.html
new file mode 100644
index 0000000..b2fa4b9
--- /dev/null
+++ b/samples/grid/xx_sample_oracle.html
@@ -0,0 +1,38 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("xx_sample_oracle_connector.php");
+ var dp = new dataProcessor("xx_sample_oracle_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">oci_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$oci_dbuser</span><span style="color: #007700">,</span><span style="color: #0000BB">$oci_dbpass</span><span style="color: #007700">,</span><span style="color: #0000BB">$oci_dbname</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/db_oracle.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">,</span><span style="color: #DD0000">"Oracle"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">50</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">sql</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">sequence</span><span style="color: #007700">(</span><span style="color: #DD0000">"EMPLOYEES_INC.nextVal"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"EMPLOYEES"</span><span style="color: #007700">,</span><span style="color: #DD0000">"EMPLOYEE_ID"</span><span style="color: #007700">,</span><span style="color: #DD0000">"FIRST_NAME,LAST_NAME"</span><span style="color: #007700">); <br /> <br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/xx_sample_oracle_connector.php b/samples/grid/xx_sample_oracle_connector.php
new file mode 100644
index 0000000..ef1ee04
--- /dev/null
+++ b/samples/grid/xx_sample_oracle_connector.php
@@ -0,0 +1,16 @@
+<?php
+ require_once("../config.php");
+ $res = oci_connect($oci_dbuser,$oci_dbpass,$oci_dbname);
+
+
+
+ require("../../codebase/grid_connector.php");
+ require("../../codebase/db_oracle.php");
+
+ $grid = new GridConnector($res,"Oracle");
+
+ $grid->dynamic_loading(50);
+ $grid->sql->sequence("EMPLOYEES_INC.nextVal");
+ $grid->render_table("EMPLOYEES","EMPLOYEE_ID","FIRST_NAME,LAST_NAME");
+
+?> \ No newline at end of file
diff --git a/samples/grid/xx_sample_pdo.html b/samples/grid/xx_sample_pdo.html
new file mode 100644
index 0000000..712100e
--- /dev/null
+++ b/samples/grid/xx_sample_pdo.html
@@ -0,0 +1,38 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("xx_sample_pdo_connector.php");
+ var dp = new dataProcessor("xx_sample_pdo_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$dbh&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #DD0000">'mysql:host='</span><span style="color: #007700">.</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">.</span><span style="color: #DD0000">';dbname='</span><span style="color: #007700">.</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/db_pdo.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbh</span><span style="color: #007700">,</span><span style="color: #DD0000">"PDO"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/xx_sample_pdo_connector.php b/samples/grid/xx_sample_pdo_connector.php
new file mode 100644
index 0000000..2b202ce
--- /dev/null
+++ b/samples/grid/xx_sample_pdo_connector.php
@@ -0,0 +1,12 @@
+<?php
+ require_once("../config.php");
+ $dbh = new PDO('mysql:host='.$mysql_server.';dbname='.$mysql_db, $mysql_user, $mysql_pass);
+
+ require("../../codebase/grid_connector.php");
+ require("../../codebase/db_pdo.php");
+
+ $grid = new GridConnector($dbh,"PDO");
+
+ $grid->dynamic_loading(100);
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/xx_sample_pdo_pg.html b/samples/grid/xx_sample_pdo_pg.html
new file mode 100644
index 0000000..ca2be1b
--- /dev/null
+++ b/samples/grid/xx_sample_pdo_pg.html
@@ -0,0 +1,38 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("xx_sample_pdo_pg_connector.php");
+ var dp = new dataProcessor("xx_sample_pdo_pg_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$dbh&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #DD0000">'pgsql:host=localhost;dbname='</span><span style="color: #007700">.</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">.</span><span style="color: #DD0000">";user=root;password=1234"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/db_pdo.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbh</span><span style="color: #007700">,</span><span style="color: #DD0000">"PDO"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/xx_sample_pdo_pg_connector.php b/samples/grid/xx_sample_pdo_pg_connector.php
new file mode 100644
index 0000000..674c6b0
--- /dev/null
+++ b/samples/grid/xx_sample_pdo_pg_connector.php
@@ -0,0 +1,12 @@
+<?php
+ require_once("../config.php");
+ $dbh = new PDO('pgsql:host=localhost;dbname='.$mysql_db.";user=root;password=1234");
+
+ require("../../codebase/grid_connector.php");
+ require("../../codebase/db_pdo.php");
+
+ $grid = new GridConnector($dbh,"PDO");
+
+ $grid->dynamic_loading(100);
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/grid/xx_sample_postgresql.html b/samples/grid/xx_sample_postgresql.html
new file mode 100644
index 0000000..737849f
--- /dev/null
+++ b/samples/grid/xx_sample_postgresql.html
@@ -0,0 +1,38 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="350px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Column A, Column B");
+ mygrid.attachHeader("#connector_text_filter,#connector_text_filter")
+ mygrid.setInitWidths("100,*")
+ mygrid.setColTypes("edtxt,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.enableSmartRendering(true)
+ mygrid.enableMultiselect(true)
+ mygrid.init();
+ mygrid.loadXML("xx_sample_postgresql_connector.php");
+ var dp = new dataProcessor("xx_sample_postgresql_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">pg_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$postrgre_connection</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/grid_connector.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/db_postgre.php"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">GridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">,</span><span style="color: #DD0000">"Postgre"</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">100</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$grid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"grid50000"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"item_nm,item_cd"</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/grid/xx_sample_postgresql_connector.php b/samples/grid/xx_sample_postgresql_connector.php
new file mode 100644
index 0000000..b2e1bad
--- /dev/null
+++ b/samples/grid/xx_sample_postgresql_connector.php
@@ -0,0 +1,13 @@
+<?php
+ require_once("../config.php");
+ $postrgre_connection = "host=192.168.1.251 port=5432 dbname=sampledb user=pguser password=pgpass";
+ $res=pg_connect($postrgre_connection);
+
+ require("../../codebase/grid_connector.php");
+ require("../../codebase/db_postgre.php");
+
+ $grid = new GridConnector($res,"Postgre");
+
+ $grid->dynamic_loading(100);
+ $grid->render_table("grid50000","item_id","item_nm,item_cd");
+?> \ No newline at end of file
diff --git a/samples/index.html b/samples/index.html
new file mode 100644
index 0000000..c329ac2
--- /dev/null
+++ b/samples/index.html
@@ -0,0 +1,32 @@
+<html>
+ <head></head>
+ <style type="text/css" media="screen">
+ *{
+ font-family:Tahoma;
+ }
+ div,li{
+ font-size:10pt;
+ }
+ div{
+ padding-bottom:20px;
+ }
+ li{
+ padding-left:50px;
+ padding-bottom:10px;
+ }
+ </style>
+ <body>
+ <h2>dhtmlxConnector for PHP :: Samples</h2>
+
+ <div>Be sure to create a test DB from "dump.sql" and adjust db settings in "config.php"</div>
+
+ <li><a href="./grid/index.html">Grid</a></li>
+ <li><a href="./tree/index.html">Tree</a></li>
+ <li><a href="./treegrid/index.html">TreeGrid</a></li>
+ <li><a href="./combo/index.html">Combo</a></li>
+ <li><a href="./dataview/index.html">DataView</a></li>
+ <li><a href="./scheduler/index.html">Scheduler</a></li>
+ <hr/>
+ <li><a href="./treegrid/index.html">Data Export</a></li>
+ </body>
+</html> \ No newline at end of file
diff --git a/samples/readme.txt b/samples/readme.txt
new file mode 100644
index 0000000..bb3ba9b
--- /dev/null
+++ b/samples/readme.txt
@@ -0,0 +1,8 @@
+Expected php.ini settings
+ magic_quotes off
+ error_level E_ALL & ~E_NOTICE
+
+
+Before running samples, make sure that db connection settings in config.php are set properly and database was filled from dump.sql file
+
+(c) dhtmlx ltd. \ No newline at end of file
diff --git a/samples/scheduler/01_basic_init.html b/samples/scheduler/01_basic_init.html
new file mode 100644
index 0000000..06fc578
--- /dev/null
+++ b/samples/scheduler/01_basic_init.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title></title>
+</head>
+ <script src="../dhtmlx/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script>
+ <link rel="stylesheet" href="../dhtmlx/dhtmlxscheduler.css" type="text/css" title="no title" charset="utf-8">
+<style type="text/css" media="screen">
+ html, body{
+ margin:0px;
+ padding:0px;
+ height:100%;
+ overflow:hidden;
+ }
+</style>
+<script type="text/javascript" charset="utf-8">
+ function init() {
+ scheduler.config.xml_date="%Y-%m-%d %H:%i";
+ scheduler.config.prevent_cache = true;
+ scheduler.config.lightbox.sections=[
+ {name:"description", height:130, map_to:"text", type:"textarea" , focus:true},
+ {name:"location", height:43, type:"textarea", map_to:"details" },
+ {name:"time", height:72, type:"time", map_to:"auto"}
+ ]
+ scheduler.config.first_hour=4;
+ scheduler.locale.labels.section_location="Location";
+ scheduler.config.details_on_create=true;
+ scheduler.config.details_on_dblclick=true;
+ scheduler.init('scheduler_here',new Date(2009,10,1),"month");
+ scheduler.load("01_basic_init_connector.php?uid="+scheduler.uid());
+ var dp = new dataProcessor("01_basic_init_connector.php");
+ dp.init(scheduler);
+ }
+</script>
+<body onload="init();">
+ <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'>
+ <div class="dhx_cal_navline">
+ <div class="dhx_cal_prev_button">&nbsp;</div>
+ <div class="dhx_cal_next_button">&nbsp;</div>
+ <div class="dhx_cal_today_button"></div>
+ <div class="dhx_cal_date"></div>
+ <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div>
+ <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div>
+ <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div>
+ </div>
+ <div class="dhx_cal_header">
+ </div>
+ <div class="dhx_cal_data">
+ </div>
+ </div>
+</body> \ No newline at end of file
diff --git a/samples/scheduler/01_basic_init_connector.php b/samples/scheduler/01_basic_init_connector.php
new file mode 100644
index 0000000..5707f93
--- /dev/null
+++ b/samples/scheduler/01_basic_init_connector.php
@@ -0,0 +1,12 @@
+<?php
+
+ include ('../config.php');
+ include ('../../codebase/scheduler_connector.php');
+
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ $scheduler = new schedulerConnector($res);
+ //$scheduler->enable_log("log.txt",true);
+ $scheduler->render_table("events","event_id","start_date,end_date,event_name,details");
+?> \ No newline at end of file
diff --git a/samples/scheduler/02_dynamic_loading.html b/samples/scheduler/02_dynamic_loading.html
new file mode 100644
index 0000000..aa043a2
--- /dev/null
+++ b/samples/scheduler/02_dynamic_loading.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title></title>
+</head>
+ <script src="../dhtmlx/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script>
+ <link rel="stylesheet" href="../dhtmlx/dhtmlxscheduler.css" type="text/css" title="no title" charset="utf-8">
+<style type="text/css" media="screen">
+ html, body{
+ margin:0px;
+ padding:0px;
+ height:100%;
+ overflow:hidden;
+ }
+</style>
+<script type="text/javascript" charset="utf-8">
+ function init() {
+ scheduler.config.xml_date="%Y-%m-%d %H:%i";
+ scheduler.config.prevent_cache = true;
+ scheduler.config.lightbox.sections=[
+ {name:"description", height:130, map_to:"text", type:"textarea" , focus:true},
+ {name:"location", height:43, type:"textarea", map_to:"details" },
+ {name:"time", height:72, type:"time", map_to:"auto"}
+ ]
+ scheduler.config.first_hour=4;
+ scheduler.locale.labels.section_location="Location";
+ scheduler.config.details_on_create=true;
+ scheduler.config.details_on_dblclick=true;
+
+ scheduler.init('scheduler_here',new Date(2009,10,1),"day");
+ scheduler.setLoadMode("day");
+ scheduler.load("02_dynamic_loading_connector.php?uid="+scheduler.uid());
+ var dp = new dataProcessor("02_dynamic_loading_connector.php");
+ dp.init(scheduler);
+ }
+</script>
+<body onload="init();">
+ <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'>
+ <div class="dhx_cal_navline">
+ <div class="dhx_cal_prev_button">&nbsp;</div>
+ <div class="dhx_cal_next_button">&nbsp;</div>
+ <div class="dhx_cal_today_button"></div>
+ <div class="dhx_cal_date"></div>
+ <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div>
+ <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div>
+ <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div>
+ </div>
+ <div class="dhx_cal_header">
+ </div>
+ <div class="dhx_cal_data">
+ </div>
+ </div>
+</body> \ No newline at end of file
diff --git a/samples/scheduler/02_dynamic_loading_connector.php b/samples/scheduler/02_dynamic_loading_connector.php
new file mode 100644
index 0000000..5707f93
--- /dev/null
+++ b/samples/scheduler/02_dynamic_loading_connector.php
@@ -0,0 +1,12 @@
+<?php
+
+ include ('../config.php');
+ include ('../../codebase/scheduler_connector.php');
+
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ $scheduler = new schedulerConnector($res);
+ //$scheduler->enable_log("log.txt",true);
+ $scheduler->render_table("events","event_id","start_date,end_date,event_name,details");
+?> \ No newline at end of file
diff --git a/samples/scheduler/03_connector_options.html b/samples/scheduler/03_connector_options.html
new file mode 100644
index 0000000..411551c
--- /dev/null
+++ b/samples/scheduler/03_connector_options.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title></title>
+</head>
+ <script src="../dhtmlx/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script>
+ <link rel="stylesheet" href="../dhtmlx/dhtmlxscheduler.css" type="text/css" title="no title" charset="utf-8">
+
+<style type="text/css" media="screen">
+ html, body{
+ margin:0px;
+ padding:0px;
+ height:100%;
+ overflow:hidden;
+ }
+</style>
+
+<script type="text/javascript" charset="utf-8">
+ function init() {
+ scheduler.config.multi_day = true;
+ scheduler.config.prevent_cache = true;
+ scheduler.config.xml_date="%Y-%m-%d %H:%i";
+ scheduler.init('scheduler_here',new Date(2010,2,1),"month");
+
+
+ scheduler.locale.labels.section_type = "Type";
+ scheduler.config.lightbox.sections = [
+ {name:"description", height:200, map_to:"text", type:"textarea" , focus:true},
+ {name:"type", height:21, map_to:"type", type:"select",
+ options:scheduler.serverList("type")},
+ {name:"time", height:72, type:"time", map_to:"auto"}
+ ];
+ scheduler.load("03_connector_options.php");
+
+ var dp = new dataProcessor("03_connector_options.php");
+ dp.init(scheduler);
+ }
+</script>
+
+<body onload="init();">
+ <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'>
+ <div class="dhx_cal_navline">
+ <div class="dhx_cal_prev_button">&nbsp;</div>
+ <div class="dhx_cal_next_button">&nbsp;</div>
+ <div class="dhx_cal_today_button"></div>
+ <div class="dhx_cal_date"></div>
+ <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div>
+ <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div>
+ <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div>
+ </div>
+ <div class="dhx_cal_header">
+ </div>
+ <div class="dhx_cal_data">
+ </div>
+ </div>
+</body> \ No newline at end of file
diff --git a/samples/scheduler/03_connector_options.php b/samples/scheduler/03_connector_options.php
new file mode 100644
index 0000000..ccaf904
--- /dev/null
+++ b/samples/scheduler/03_connector_options.php
@@ -0,0 +1,15 @@
+<?php
+ include ('../../codebase/scheduler_connector.php');
+ include ('../config.php');
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ $list = new OptionsConnector($res);
+ $list->render_table("types","typeid","typeid(value),name(label)");
+
+ $scheduler = new schedulerConnector($res);
+// $scheduler->enable_log("log.txt",true);
+
+ $scheduler->set_options("type", $list);
+ $scheduler->render_table("tevents","event_id","start_date,end_date,event_name,type");
+?> \ No newline at end of file
diff --git a/samples/scheduler/04_recurring_events.html b/samples/scheduler/04_recurring_events.html
new file mode 100644
index 0000000..bc000cb
--- /dev/null
+++ b/samples/scheduler/04_recurring_events.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <title></title>
+</head>
+ <script src="../dhtmlx/dhtmlxscheduler.js" type="text/javascript" charset="utf-8"></script>
+ <script src="../dhtmlx/dhtmlxscheduler_recurring.js" type="text/javascript" charset="utf-8"></script>
+ <link rel="stylesheet" href="../dhtmlx/dhtmlxscheduler.css" type="text/css" title="no title" charset="utf-8">
+<style type="text/css" media="screen">
+ html, body{
+ margin:0px;
+ padding:0px;
+ height:100%;
+ overflow:hidden;
+ }
+</style>
+<script type="text/javascript" charset="utf-8">
+ function init() {
+ scheduler.config.xml_date="%Y-%m-%d %H:%i";
+ scheduler.config.details_on_create=true;
+ scheduler.config.details_on_dblclick=true;
+ scheduler.init('scheduler_here',null,"month");
+ scheduler.load("04_recurring_events_connector.php?uid="+scheduler.uid());
+
+ var dp = new dataProcessor("04_recurring_events_connector.php");
+ dp.init(scheduler);
+ }
+</script>
+<body onload="init();">
+ <div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'>
+ <div class="dhx_cal_navline">
+ <div class="dhx_cal_prev_button">&nbsp;</div>
+ <div class="dhx_cal_next_button">&nbsp;</div>
+ <div class="dhx_cal_today_button"></div>
+ <div class="dhx_cal_date"></div>
+ <div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div>
+ <div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div>
+ <div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div>
+ </div>
+ <div class="dhx_cal_header">
+ </div>
+ <div class="dhx_cal_data">
+ </div>
+ </div>
+</body> \ No newline at end of file
diff --git a/samples/scheduler/04_recurring_events_connector.php b/samples/scheduler/04_recurring_events_connector.php
new file mode 100644
index 0000000..052ab94
--- /dev/null
+++ b/samples/scheduler/04_recurring_events_connector.php
@@ -0,0 +1,39 @@
+<?php
+ include ('../config.php');
+ include ('../../codebase/scheduler_connector.php');
+ include ('../../codebase/db_sqlsrv.php');
+
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+
+ function delete_related($action){
+ global $scheduler;
+
+ $status = $action->get_status();
+ $type =$action->get_value("rec_type");
+ $pid =$action->get_value("event_pid");
+ //when serie changed or deleted we need to remove all linked events
+ if (($status == "deleted" || $status == "updated") && $type!=""){
+ $scheduler->sql->query("DELETE FROM events_rec WHERE event_pid='".$scheduler->sql->escape($action->get_id())."'");
+ }
+ if ($status == "deleted" && $pid !=0){
+ $scheduler->sql->query("UPDATE events_rec SET rec_type='none' WHERE event_id='".$scheduler->sql->escape($action->get_id())."'");
+ $action->success();
+ }
+
+ }
+ function insert_related($action){
+ $status = $action->get_status();
+ $type =$action->get_value("rec_type");
+
+ if ($status == "inserted" && $type=="none")
+ $action->set_status("deleted");
+ }
+
+ $scheduler = new schedulerConnector($res);
+ //$scheduler->enable_log("log.txt",true);
+ $scheduler->event->attach("beforeProcessing","delete_related");
+ $scheduler->event->attach("afterProcessing","insert_related");
+ $scheduler->render_table("events_rec","event_id","start_date,end_date,text,rec_type,event_pid,event_length");
+?> \ No newline at end of file
diff --git a/samples/scheduler/index.html b/samples/scheduler/index.html
new file mode 100644
index 0000000..1b00d19
--- /dev/null
+++ b/samples/scheduler/index.html
@@ -0,0 +1,27 @@
+<html>
+ <head></head>
+ <style type="text/css" media="screen">
+ *{
+ font-family:Tahoma;
+ }
+ div,li{
+ font-size:10pt;
+ }
+ div{
+ padding-bottom:20px;
+ }
+ li{
+ padding-left:50px;
+ padding-bottom:10px;
+ }
+ </style>
+ <body>
+ <h2>dhtmlxConnector for PHP :: Samples</h2>
+
+ <li><a href="01_basic_init.html">Basic init</a></li>
+ <li><a href="02_dynamic_loading.html">Dynamic loading</a></li>
+ <li><a href="03_connector_options.html">Connector options</a></li>
+ <li><a href="04_recurring_events.html">Recurring events</a></li>
+ </body>
+</html>
+
diff --git a/samples/tree/01_basic.html b/samples/tree/01_basic.html
new file mode 100644
index 0000000..7732bf5
--- /dev/null
+++ b/samples/tree/01_basic.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title></title>
+ <script>
+ window.dhx_globalImgPath="../common/imgs/";
+ </script>
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div>
+<script type="text/javascript" charset="utf-8">
+ tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
+ tree.setImagePath("../dhtmlx/tree/");
+ //tree.enableSmartXMLParsing(true);
+ tree.loadXML("01_basic_connector.php");
+</script>
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/tree/01_basic_connector.php b/samples/tree/01_basic_connector.php
new file mode 100644
index 0000000..57af485
--- /dev/null
+++ b/samples/tree/01_basic_connector.php
@@ -0,0 +1,10 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/tree_connector.php");
+ $tree = new TreeConnector($res);
+//
+ $tree->render_table("tasks","taskId","taskName","","parentId");
+?> \ No newline at end of file
diff --git a/samples/tree/01p_basic.html b/samples/tree/01p_basic.html
new file mode 100644
index 0000000..8b587e0
--- /dev/null
+++ b/samples/tree/01p_basic.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title></title>
+ <script>
+ window.dhx_globalImgPath="../common/imgs/";
+ </script>
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ Server side code uses custom code to mark leafs|branches - data generated a lot faster ( about 5x ) than for default sample.
+<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div>
+<script type="text/javascript" charset="utf-8">
+ tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
+ tree.setImagePath("../dhtmlx/tree/");
+ //tree.enableSmartXMLParsing(true);
+ tree.loadXML("01p_basic_connector.php");
+</script>
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />function&nbsp;</span><span style="color: #0000BB">child_setter</span><span style="color: #007700">(</span><span style="color: #0000BB">$data</span><span style="color: #007700">){
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//the&nbsp;check&nbsp;is&nbsp;kind&nbsp;of&nbsp;lame,&nbsp;in&nbsp;real&nbsp;table&nbsp;you&nbsp;most&nbsp;probably&nbsp;may&nbsp;have&nbsp;some&nbsp;more&nbsp;stable&nbsp;way&nbsp;to&nbsp;detect&nbsp;is&nbsp;item&nbsp;have&nbsp;childs&nbsp;or&nbsp;not
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">$data</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">)%</span><span style="color: #0000BB">100</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$data</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_kids</span><span style="color: #007700">(</span><span style="color: #0000BB">false</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;else
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$data</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_kids</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />}
+<br />
+<br />&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeRender"</span><span style="color: #007700">,</span><span style="color: #DD0000">"child_setter"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/tree/01p_basic_connector.php b/samples/tree/01p_basic_connector.php
new file mode 100644
index 0000000..23739a1
--- /dev/null
+++ b/samples/tree/01p_basic_connector.php
@@ -0,0 +1,19 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+function child_setter($data){
+ //the check is kind of lame, in real table you most probably may have some more stable way to detect is item have childs or not
+ if ($data->get_value("taskId")%100>1)
+ $data->set_kids(false);
+ else
+ $data->set_kids(true);
+}
+
+ require("../../codebase/tree_connector.php");
+ $tree = new TreeConnector($res);
+//
+ $tree->event->attach("beforeRender","child_setter");
+ $tree->render_table("tasks","taskId","taskName","","parentId");
+?> \ No newline at end of file
diff --git a/samples/tree/02_dynamic_loading.html b/samples/tree/02_dynamic_loading.html
new file mode 100644
index 0000000..bf57ca8
--- /dev/null
+++ b/samples/tree/02_dynamic_loading.html
@@ -0,0 +1,38 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Filtering and Autocomplete mode</title>
+ <script>
+ window.dhx_globalImgPath="../common/imgs/";
+ </script>
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div>
+<script type="text/javascript" charset="utf-8">
+ tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
+ tree.setImagePath("../dhtmlx/tree/");
+ //tree.enableSmartXMLParsing(true);
+ tree.setXMLAutoLoading("02_dynamic_loading_connector.php")
+ tree.loadXML("02_dynamic_loading_connector.php");
+</script>
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/tree/02_dynamic_loading_connector.php b/samples/tree/02_dynamic_loading_connector.php
new file mode 100644
index 0000000..54812cd
--- /dev/null
+++ b/samples/tree/02_dynamic_loading_connector.php
@@ -0,0 +1,11 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/tree_connector.php");
+ $tree = new TreeConnector($res);
+//
+ $tree->dynamic_loading(true);
+ $tree->render_table("tasks","taskId","taskName","","parentId");
+?> \ No newline at end of file
diff --git a/samples/tree/03_sql_config.html b/samples/tree/03_sql_config.html
new file mode 100644
index 0000000..b70bd85
--- /dev/null
+++ b/samples/tree/03_sql_config.html
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Filtering and Autocomplete mode</title>
+ <script>
+ window.dhx_globalImgPath="../common/imgs/";
+ </script>
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div>
+<script type="text/javascript" charset="utf-8">
+ tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
+ tree.setImagePath("../dhtmlx/tree/");
+ //tree.enableSmartXMLParsing(true);
+ tree.loadXML("03_sql_config_connector.php");
+</script>
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT&nbsp;taskId,taskName&nbsp;from&nbsp;tasks&nbsp;WHERE&nbsp;complete&gt;49"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/tree/03_sql_config_connector.php b/samples/tree/03_sql_config_connector.php
new file mode 100644
index 0000000..453ae29
--- /dev/null
+++ b/samples/tree/03_sql_config_connector.php
@@ -0,0 +1,10 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/tree_connector.php");
+ $tree = new TreeConnector($res);
+//
+ $tree->render_sql("SELECT taskId,taskName from tasks WHERE complete>49","taskId","taskName","","parentId");
+?> \ No newline at end of file
diff --git a/samples/tree/04_custom_styles.html b/samples/tree/04_custom_styles.html
new file mode 100644
index 0000000..2aee7f1
--- /dev/null
+++ b/samples/tree/04_custom_styles.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Filtering and Autocomplete mode</title>
+ <script>
+ window.dhx_globalImgPath="../common/imgs/";
+ </script>
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div>
+<script type="text/javascript" charset="utf-8">
+ tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
+ tree.setImagePath("../dhtmlx/tree/");
+ //tree.enableSmartXMLParsing(true);
+ tree.enableCheckBoxes(true);
+ tree.loadXML("04_custom_styles_connector.php");
+</script>
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require_once(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">custom_format</span><span style="color: #007700">(</span><span style="color: #0000BB">$item</span><span style="color: #007700">){
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"duration"</span><span style="color: #007700">)&gt;</span><span style="color: #0000BB">10</span><span style="color: #007700">)
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_image</span><span style="color: #007700">(</span><span style="color: #DD0000">"lock.gif"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"complete"</span><span style="color: #007700">)&gt;</span><span style="color: #0000BB">75</span><span style="color: #007700">)&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_check_state</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;}
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeRender"</span><span style="color: #007700">,</span><span style="color: #0000BB">custom_format</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT&nbsp;taskId,taskName,duration,complete&nbsp;from&nbsp;tasks&nbsp;WHERE&nbsp;complete&gt;49"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/tree/04_custom_styles_connector.php b/samples/tree/04_custom_styles_connector.php
new file mode 100644
index 0000000..2ab621e
--- /dev/null
+++ b/samples/tree/04_custom_styles_connector.php
@@ -0,0 +1,17 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require_once("../../codebase/tree_connector.php");
+ $tree = new TreeConnector($res);
+//
+ function custom_format($item){
+ if ($item->get_value("duration")>10)
+ $item->set_image("lock.gif");
+ if ($item->get_value("complete")>75)
+ $item->set_check_state(1);
+ }
+ $tree->event->attach("beforeRender",custom_format);
+ $tree->render_sql("SELECT taskId,taskName,duration,complete from tasks WHERE complete>49","taskId","taskName","","parentId");
+?> \ No newline at end of file
diff --git a/samples/tree/05_save.html b/samples/tree/05_save.html
new file mode 100644
index 0000000..19420a5
--- /dev/null
+++ b/samples/tree/05_save.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Filtering and Autocomplete mode</title>
+ <script>
+ window.dhx_globalImgPath="../common/imgs/";
+ </script>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div>
+<script type="text/javascript" charset="utf-8">
+ tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
+ tree.setImagePath("../dhtmlx/tree/");
+ //tree.enableSmartXMLParsing(true);
+ tree.enableItemEditor(true);
+ tree.enableDragAndDrop(true)
+ tree.loadXML("05_save_connector.php");
+ var dp = new dataProcessor("05_save_connector.php");
+ dp.init(tree);
+</script>
+<input type="button" name="some_name" value="delete item" onclick="tree.deleteItem(tree.getSelectedItemId())">
+<input type="button" name="some_name" value="add item" onclick="tree.insertNewItem((tree.getSelectedItemId()||'0'),(new Date()).valueOf(),'item')">>
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/tree/05_save_connector.php b/samples/tree/05_save_connector.php
new file mode 100644
index 0000000..57af485
--- /dev/null
+++ b/samples/tree/05_save_connector.php
@@ -0,0 +1,10 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/tree_connector.php");
+ $tree = new TreeConnector($res);
+//
+ $tree->render_table("tasks","taskId","taskName","","parentId");
+?> \ No newline at end of file
diff --git a/samples/tree/06_validation.html b/samples/tree/06_validation.html
new file mode 100644
index 0000000..6951c00
--- /dev/null
+++ b/samples/tree/06_validation.html
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Filtering and Autocomplete mode</title>
+ <script>
+ window.dhx_globalImgPath="../common/imgs/";
+ </script>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../dhtmlx/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div>
+<script type="text/javascript" charset="utf-8">
+ tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
+ tree.setImagePath("../dhtmlx/tree/");
+ //tree.enableSmartXMLParsing(true);
+ tree.enableItemEditor(true);
+ tree.enableDragAndDrop(true)
+ tree.loadXML("06_validation_connector.php");
+ var dp = new dataProcessor("06_validation_connector.php");
+ dp.setUpdateMode("off");
+ dp.init(tree);
+</script>
+<input type="button" name="some_name" value="delete item" onclick="tree.deleteItem(tree.getSelectedItemId())">
+<input type="button" name="some_name" value="add item" onclick="tree.insertNewItem((tree.getSelectedItemId()||'0'),(new Date()).valueOf(),'item')">
+<input type="button" name="some_name" value="sync with server" onclick="dp.sendData();">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/tree_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">my_check</span><span style="color: #007700">(</span><span style="color: #0000BB">$action</span><span style="color: #007700">){
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$action</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">))&lt;</span><span style="color: #0000BB">5</span><span style="color: #007700">)
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$action</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">invalid</span><span style="color: #007700">();
+<br />&nbsp;&nbsp;&nbsp;}
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeProcessing"</span><span style="color: #007700">,</span><span style="color: #0000BB">my_check</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/tree/06_validation_connector.php b/samples/tree/06_validation_connector.php
new file mode 100644
index 0000000..baccdaf
--- /dev/null
+++ b/samples/tree/06_validation_connector.php
@@ -0,0 +1,15 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/tree_connector.php");
+ $tree = new TreeConnector($res);
+//
+ function my_check($action){
+ if (strlen($action->get_value("taskName"))<5)
+ $action->invalid();
+ }
+ $tree->event->attach("beforeProcessing",my_check);
+ $tree->render_table("tasks","taskId","taskName","","parentId");
+?> \ No newline at end of file
diff --git a/samples/tree/08_tree_group_connector.html b/samples/tree/08_tree_group_connector.html
new file mode 100644
index 0000000..ad1c478
--- /dev/null
+++ b/samples/tree/08_tree_group_connector.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Group connector</title>
+ <script>
+ window.dhx_globalImgPath="../common/imgs/";
+ </script>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+
+<body>
+<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div>
+
+<script type="text/javascript" charset="utf-8">
+ tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
+ tree.setImagePath("../dhtmlx/tree/");
+
+ tree.loadXML("08_tree_group_connector.php");
+</script>
+
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/treegroup_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeGroupConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"products"</span><span style="color: #007700">,</span><span style="color: #DD0000">"id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"product_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">""<span style="color: #007700">,</span>"category"<span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div>
+
+</body>
+</html>
diff --git a/samples/tree/08_tree_group_connector.php b/samples/tree/08_tree_group_connector.php
new file mode 100644
index 0000000..10de6e1
--- /dev/null
+++ b/samples/tree/08_tree_group_connector.php
@@ -0,0 +1,11 @@
+<?php
+
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/treegroup_connector.php");
+ $tree = new TreeGroupConnector($res);
+ $tree->render_table("products", "id", "product_name", "", "category");
+
+?> \ No newline at end of file
diff --git a/samples/tree/09_tree_multitable_connector.html b/samples/tree/09_tree_multitable_connector.html
new file mode 100644
index 0000000..7c010ec
--- /dev/null
+++ b/samples/tree/09_tree_multitable_connector.html
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Multitable connector</title>
+ <script>
+ window.dhx_globalImgPath="../common/imgs/";
+ </script>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+
+</head>
+
+<body>
+<div id="treeboxbox_tree" style="width:300; height:218;background-color:#f5f5f5;border :1px solid Silver; "></div>
+
+<script type="text/javascript" charset="utf-8">
+ tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
+ tree.setImagePath("../dhtmlx/tree/");
+
+ tree.setXMLAutoLoading("09_tree_multitable_connector.php");
+ tree.loadXML("09_tree_multitable_connector.php");
+</script>
+
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/treegridmultitable_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeMultitableConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setMaxLevel</span><span style="color: #007700">(</span><span style="color: #0000BB">3</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$level&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_level</span><span style="color: #007700">();
+<br />
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">switch&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">$level</span><span style="color: #007700">)&nbsp;{
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">case 0</span><span style="color: #007700">:
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"projects"</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">break</span><span style="color: #007700">;
+
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">case 1</span><span style="color: #007700">:
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_sql(</span><span style="color: #DD0000">"SELECT teams.team_id, teams.team_name, project_team.project_id FROM teams INNER JOIN project_team ON teams.team_id=project_team.team_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"team_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"team_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_id"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">break</span><span style="color: #007700">;
+
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">case 2</span><span style="color: #007700">:
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"developers"</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_team"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">break</span><span style="color: #007700">;
+
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">case 3</span><span style="color: #007700">:
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"phones"</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone_developer"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">break</span><span style="color: #007700">;
+
+<br />&nbsp;&nbsp;&nbsp;&nbsp;}
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div>
+
+</body>
+</html>
diff --git a/samples/tree/09_tree_multitable_connector.php b/samples/tree/09_tree_multitable_connector.php
new file mode 100644
index 0000000..48dd0e8
--- /dev/null
+++ b/samples/tree/09_tree_multitable_connector.php
@@ -0,0 +1,30 @@
+<?php
+
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/treemultitable_connector.php");
+
+
+ $tree = new TreeMultitableConnector($res);
+ //
+ $tree->setMaxLevel(3);
+ $level = $tree->get_level();
+
+ switch ($level) {
+ case 0:
+ $tree->render_table("projects","project_id","project_name","","");
+ break;
+ case 1:
+ $tree->render_sql("SELECT teams.team_id, teams.team_name, project_team.project_id FROM teams INNER JOIN project_team ON teams.team_id=project_team.team_id", "team_id", "team_name", "", "project_id");
+ break;
+ case 2:
+ $tree->render_table("developers", "developer_id", "developer_name", "", "developer_team");
+ break;
+ case 3:
+ $tree->render_table("phones", "phone_id", "phone", "", "phone_developer");
+ break;
+ }
+
+?> \ No newline at end of file
diff --git a/samples/tree/index.html b/samples/tree/index.html
new file mode 100644
index 0000000..7582ec0
--- /dev/null
+++ b/samples/tree/index.html
@@ -0,0 +1,33 @@
+<html>
+ <head></head>
+ <style type="text/css" media="screen">
+ *{
+ font-family:Tahoma;
+ }
+ div,li{
+ font-size:10pt;
+ }
+ div{
+ padding-bottom:20px;
+ }
+ li{
+ padding-left:50px;
+ padding-bottom:10px;
+ }
+ </style>
+ <body>
+ <h2>dhtmlxConnector for PHP :: Samples</h2>
+
+ <li><a href="01_basic.html">Basic init</a></li>
+ <li><a href="01p_basic.html">Basic init with server side child flag setting</a></li>
+ <li><a href="02_dynamic_loading.html">Dynamical loading</a></li>
+ <li><a href="03_sql_config.html">Basic init with SQL configuration</a></li>
+ <li><a href="04_custom_styles.html">Rendering customization</a></li>
+ <li><a href="05_save.html">DataProcessor usage</a></li>
+ <li><a href="06_validation.html">Validation</a></li>
+ <li><a href="08_tree_group_connector.html">Group connector</a></li>
+ <li><a href="09_tree_multitable_connector.html">Multitable connector</a></li>
+
+ </body>
+</html>
+
diff --git a/samples/treegrid/01_basic.html b/samples/treegrid/01_basic.html
new file mode 100644
index 0000000..6ec066f
--- /dev/null
+++ b/samples/treegrid/01_basic.html
@@ -0,0 +1,46 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+if (!window.eXcell_tree)
+ alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite.");
+
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Tree, Column A, Column B");
+ mygrid.setInitWidths("200,*,*")
+ mygrid.setColTypes("tree,ed,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.init();
+ mygrid.loadXML("01_basic_connector.php");
+ var dp = new dataProcessor("01_basic_connector.php");
+ dp.init(mygrid);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/treegrid_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeGridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName,duration,complete"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/treegrid/01_basic_connector.php b/samples/treegrid/01_basic_connector.php
new file mode 100644
index 0000000..c9c020f
--- /dev/null
+++ b/samples/treegrid/01_basic_connector.php
@@ -0,0 +1,10 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/treegrid_connector.php");
+ $tree = new TreeGridConnector($res);
+
+ $tree->render_table("tasks","taskId","taskName,duration,complete","","parentId");
+?> \ No newline at end of file
diff --git a/samples/treegrid/02_dynamic_loading.html b/samples/treegrid/02_dynamic_loading.html
new file mode 100644
index 0000000..eb3da2c
--- /dev/null
+++ b/samples/treegrid/02_dynamic_loading.html
@@ -0,0 +1,44 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+if (!window.eXcell_tree)
+ alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite.");
+
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Tree, Column A, Column B");
+ mygrid.setInitWidths("200,*,*")
+ mygrid.setColTypes("tree,ed,ed");
+ mygrid.init();
+ mygrid.kidsXmlFile="02_dynamic_loading_connector.php";
+ mygrid.loadXML("02_dynamic_loading_connector.php");
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/treegrid_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeGridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dynamic_loading</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName,duration,complete"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/treegrid/02_dynamic_loading_connector.php b/samples/treegrid/02_dynamic_loading_connector.php
new file mode 100644
index 0000000..9cecc77
--- /dev/null
+++ b/samples/treegrid/02_dynamic_loading_connector.php
@@ -0,0 +1,11 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/treegrid_connector.php");
+ $tree = new TreeGridConnector($res);
+
+ $tree->dynamic_loading(true);
+ $tree->render_table("tasks","taskId","taskName,duration,complete","","parentId");
+?> \ No newline at end of file
diff --git a/samples/treegrid/03_sql_config.html b/samples/treegrid/03_sql_config.html
new file mode 100644
index 0000000..c665b5f
--- /dev/null
+++ b/samples/treegrid/03_sql_config.html
@@ -0,0 +1,43 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+if (!window.eXcell_tree)
+ alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite.");
+
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Tree, Column A, Column B");
+ mygrid.setInitWidths("200,*,*")
+ mygrid.setColTypes("tree,ed,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.init();
+ mygrid.loadXML("03_sql_config_connector.php");
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/treegrid_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeGridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT&nbsp;*&nbsp;from&nbsp;tasks&nbsp;WHERE&nbsp;complete&gt;49"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName,duration,complete"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/treegrid/03_sql_config_connector.php b/samples/treegrid/03_sql_config_connector.php
new file mode 100644
index 0000000..bfab649
--- /dev/null
+++ b/samples/treegrid/03_sql_config_connector.php
@@ -0,0 +1,10 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/treegrid_connector.php");
+ $tree = new TreeGridConnector($res);
+
+ $tree->render_sql("SELECT * from tasks WHERE complete>49","taskId","taskName,duration,complete","","parentId");
+?> \ No newline at end of file
diff --git a/samples/treegrid/04_custom_styles.html b/samples/treegrid/04_custom_styles.html
new file mode 100644
index 0000000..51368ed
--- /dev/null
+++ b/samples/treegrid/04_custom_styles.html
@@ -0,0 +1,51 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+if (!window.eXcell_tree)
+ alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite.");
+
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Tree, Column A, Column B");
+ mygrid.setInitWidths("200,*,*")
+ mygrid.setColTypes("tree,ed,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.init();
+ mygrid.loadXML("04_custom_styles_connector.php");
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'',0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require_once(</span><span style="color: #DD0000">"../../codebase/treegrid_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeGridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">custom_format</span><span style="color: #007700">(</span><span style="color: #0000BB">$item</span><span style="color: #007700">){
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_row_color</span><span style="color: #007700">(</span><span style="color: #0000BB">$item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"complete"</span><span style="color: #007700">)&lt;</span><span style="color: #0000BB">75</span><span style="color: #007700">?</span><span style="color: #DD0000">"#AAFFFF"</span><span style="color: #007700">:</span><span style="color: #DD0000">"#FFAAFF"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_value</span><span style="color: #007700">(</span><span style="color: #DD0000">"duration"</span><span style="color: #007700">)&gt;</span><span style="color: #0000BB">10</span><span style="color: #007700">)
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_image</span><span style="color: #007700">(</span><span style="color: #DD0000">"true.gif"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$item</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_image</span><span style="color: #007700">(</span><span style="color: #DD0000">"false.gif"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;}
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">event</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">attach</span><span style="color: #007700">(</span><span style="color: #DD0000">"beforeRender"</span><span style="color: #007700">,</span><span style="color: #0000BB">custom_format</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_sql</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT&nbsp;*&nbsp;from&nbsp;tasks&nbsp;WHERE&nbsp;complete&gt;49"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName,duration,complete"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div></body>
+</html>
diff --git a/samples/treegrid/04_custom_styles_connector.php b/samples/treegrid/04_custom_styles_connector.php
new file mode 100644
index 0000000..b10f033
--- /dev/null
+++ b/samples/treegrid/04_custom_styles_connector.php
@@ -0,0 +1,18 @@
+<?php
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require_once("../../codebase/treegrid_connector.php");
+ $tree = new TreeGridConnector($res);
+
+ function custom_format($item){
+ $item->set_row_color($item->get_value("complete")<75?"#AAFFFF":"#FFAAFF");
+ if ($item->get_value("duration")>10)
+ $item->set_image("true.gif");
+ else
+ $item->set_image("false.gif");
+ }
+ $tree->event->attach("beforeRender",custom_format);
+ $tree->render_sql("SELECT * from tasks WHERE complete>49","taskId","taskName,duration,complete","","parentId");
+?> \ No newline at end of file
diff --git a/samples/treegrid/05_live_update.html b/samples/treegrid/05_live_update.html
new file mode 100644
index 0000000..93eeec3
--- /dev/null
+++ b/samples/treegrid/05_live_update.html
@@ -0,0 +1,54 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Live update mode</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+if (!window.eXcell_tree)
+ alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite.");
+
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Tree, Column A, Column B");
+ mygrid.setInitWidths("200,*,*")
+ mygrid.setColTypes("tree,ed,ed");
+ mygrid.setColSorting("connector,connector")
+ mygrid.init();
+ mygrid.loadXML("05_live_update_connector.php");
+
+ var dp = new dataProcessor("05_live_update_connector.php");
+ dp.init(mygrid);
+ dp.setUpdateMode("off");
+ dp.setAutoUpdate(2000);
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'', 0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/treegrid_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeGridConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_live_update</span><span style="color: #007700">(</span><span style="color: #0000BB">"actions_table"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"tasks"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskId"</span><span style="color: #007700">,</span><span style="color: #DD0000">"taskName,duration,complete"</span><span style="color: #007700"></span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700"></span><span style="color: #007700">,</span><span style="color: #DD0000">"parentId"</span><span style="color: #007700">);
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div>
+
+</body>
+</html>
diff --git a/samples/treegrid/06_treegrid_group_connector.html b/samples/treegrid/06_treegrid_group_connector.html
new file mode 100644
index 0000000..5c9c4ce
--- /dev/null
+++ b/samples/treegrid/06_treegrid_group_connector.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+ <div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+if (!window.eXcell_tree)
+ alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite.");
+
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Tree, Column A, Column B");
+ mygrid.setInitWidths("200,*,*")
+ mygrid.setColTypes("tree,ed,ed");
+ mygrid.init();
+ mygrid.loadXML("06_treegrid_group_connector.php");
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'', 0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/treegridgroup_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeGridGroupConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table</span><span style="color: #007700">(</span><span style="color: #DD0000">"products"</span><span style="color: #007700">,</span><span style="color: #DD0000">"id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"product_name,scales,colour"</span><span style="color: #007700">,</span><span style="color: #DD0000">""<span style="color: #007700">,</span><span style="color: #DD0000">"category"<span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div>
+
+</body>
+</html>
diff --git a/samples/treegrid/06_treegrid_group_connector.php b/samples/treegrid/06_treegrid_group_connector.php
new file mode 100644
index 0000000..5a70e3c
--- /dev/null
+++ b/samples/treegrid/06_treegrid_group_connector.php
@@ -0,0 +1,12 @@
+<?php
+
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require_once('../../codebase/treegridgroup_connector.php');
+ $treegrid = new TreeGridGroupConnector($res);
+
+ $treegrid->render_table("products", "id", "product_name,scales,colour", "", "category");
+
+?> \ No newline at end of file
diff --git a/samples/treegrid/07_treegrid_multitable_connector.html b/samples/treegrid/07_treegrid_multitable_connector.html
new file mode 100644
index 0000000..00371f0
--- /dev/null
+++ b/samples/treegrid/07_treegrid_multitable_connector.html
@@ -0,0 +1,68 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>For demo purpose only :: &1</title>
+
+
+
+
+<script src="../dhtmlx/dhtmlx.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/dhtmlxdataprocessor.js" type="text/javascript" charset="utf-8"></script>
+<script src="../../codebase/connector.js" type="text/javascript" charset="utf-8"></script>
+<link rel="stylesheet" href="../dhtmlx/dhtmlx.css" type="text/css" charset="utf-8">
+</head>
+<body>
+<div id="gridbox" width="450px" height="550px" style="background-color:white;overflow:hidden"></div>
+<script>
+if (!window.eXcell_tree)
+ alert("To check TreeGrid's samples you need to replace files in `dhtmlx` folder with ones from dhtmlx pro suite.");
+
+ mygrid = new dhtmlXGridObject('gridbox');
+ mygrid.setImagePath("../common/imgs/");
+ mygrid.setHeader("Tree, Column A, Column B");
+ mygrid.setInitWidths("200,*,*")
+ mygrid.setColTypes("tree,ed,ed");
+ mygrid.init();
+ mygrid.kidsXmlFile = "07_treegrid_multitable_connector.php";
+ mygrid.loadXML("07_treegrid_multitable_connector.php");
+</script>
+<input type="button" name="add" value="add row" onclick="var id=mygrid.uid(); mygrid.addRow(id,'', 0); mygrid.showRow(id);">
+<input type="button" name="delete" value="delete row" onclick="mygrid.deleteSelectedRows()">
+
+<div class='code'><code><span style="color: #000000">
+<span style="color: #0000BB">&lt;?php
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">require_once(</span><span style="color: #DD0000">"../config.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">=</span><span style="color: #0000BB">mysql_connect</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_server</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_user</span><span style="color: #007700">,</span><span style="color: #0000BB">$mysql_pass</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">mysql_select_db</span><span style="color: #007700">(</span><span style="color: #0000BB">$mysql_db</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;require(</span><span style="color: #DD0000">"../../codebase/treegridmultitable_connector.php"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">TreeGridMultitableConnector</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">enable_log</span><span style="color: #007700">(</span><span style="color: #DD0000">"temp.log"</span><span style="color: #007700">,</span><span style="color: #0000BB">true</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setMaxLevel</span><span style="color: #007700">(</span><span style="color: #0000BB">3</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$level&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$tree</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">get_level</span><span style="color: #007700">();
+<br />
+<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">switch&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">$level</span><span style="color: #007700">)&nbsp;{
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">case 0</span><span style="color: #007700">:
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"projects"</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_name, project_dsc"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">break</span><span style="color: #007700">;
+
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">case 1</span><span style="color: #007700">:
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_sql(</span><span style="color: #DD0000">"SELECT teams.team_id, teams.team_name, project_team.project_id FROM teams INNER JOIN project_team ON teams.team_id=project_team.team_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"team_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"team_name"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"project_id"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">break</span><span style="color: #007700">;
+
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">case 2</span><span style="color: #007700">:
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"developers"</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_name,developer_email"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"developer_team"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">break</span><span style="color: #007700">;
+
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">case 3</span><span style="color: #007700">:
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$treegrid</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">render_table(</span><span style="color: #DD0000">"phones"</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone_id"</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone,phone_type"</span><span style="color: #007700">,</span><span style="color: #DD0000">""</span><span style="color: #007700">,</span><span style="color: #DD0000">"phone_developer"</span><span style="color: #007700">);
+<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">break</span><span style="color: #007700">;
+
+<br />&nbsp;&nbsp;&nbsp;&nbsp;}
+<br /></span><span style="color: #0000BB">?&gt;</span>
+</span>
+</code></div>
+
+</body>
+</html>
diff --git a/samples/treegrid/07_treegrid_multitable_connector.php b/samples/treegrid/07_treegrid_multitable_connector.php
new file mode 100644
index 0000000..4ced2a2
--- /dev/null
+++ b/samples/treegrid/07_treegrid_multitable_connector.php
@@ -0,0 +1,29 @@
+<?php
+
+ require_once("../config.php");
+ $res=mysql_connect($mysql_server,$mysql_user,$mysql_pass);
+ mysql_select_db($mysql_db);
+
+ require("../../codebase/treegridmultitable_connector.php");
+
+ $treegrid = new TreeGridMultitableConnector($res);
+
+ $treegrid->setMaxLevel(3);
+ $level = $treegrid->get_level();
+
+ switch ($level) {
+ case 0:
+ $treegrid->render_table("projects", "project_id", "project_name, project_dsc", "", "");
+ break;
+ case 1:
+ $treegrid->render_sql("SELECT teams.team_id, teams.team_name, project_team.project_id FROM teams INNER JOIN project_team ON teams.team_id=project_team.team_id", "team_id", "team_name", "", "project_id");
+ break;
+ case 2:
+ $treegrid->render_table("developers", "developer_id", "developer_name,developer_email", "", "developer_team");
+ break;
+ case 3:
+ $treegrid->render_table("phones", "phone_id", "phone,phone_type", "", "phone_developer");
+ break;
+ }
+
+?> \ No newline at end of file
diff --git a/samples/treegrid/index.html b/samples/treegrid/index.html
new file mode 100644
index 0000000..d8f5d8e
--- /dev/null
+++ b/samples/treegrid/index.html
@@ -0,0 +1,32 @@
+<html>
+ <head></head>
+ <style type="text/css" media="screen">
+ *{
+ font-family:Tahoma;
+ }
+ div,li{
+ font-size:10pt;
+ }
+ div{
+ padding-bottom:20px;
+ }
+ li{
+ padding-left:50px;
+ padding-bottom:10px;
+ }
+ </style>
+ <body>
+ <h2>dhtmlxConnector for PHP :: Samples</h2>
+
+ <div>Samples are based on standard edition, so to have working TreeGrid samples you need to update files in common folder with ones from dhtmlxSuite pro</div>
+
+ <li><a href="01_basic.html">Basic init</a></li>
+ <li><a href="02_dynamic_loading.html">Dynamic loading</a></li>
+ <li><a href="03_sql_config.html">SQL config</a></li>
+ <li><a href="04_custom_styles.html">Custom styles</a></li>
+ <li><a href="06_treegrid_group_connector.html">Group connector</a></li>
+ <li><a href="07_treegrid_multitable_connector.html">Multitable connector</a></li>
+
+ </body>
+</html>
+